หยุดใช้ผู้ช่วย AI ตัวเดียวสำหรับทุกอย่าง — ตั้งค่า Agent ผู้เชี่ยวชาญ 5 ตัวเพื่อสร้าง API ที่สมบูรณ์: Backend Architect (สถาปนิกแบ็กเอนด์) ออกแบบระบบ, Database Optimizer (ผู้ปรับแต่งฐานข้อมูล) ตรวจสอบ Schema, Frontend Developer (นักพัฒนาส่วนหน้า) สร้างไคลเอนต์, Code Reviewer (ผู้ตรวจสอบโค้ด) ตรวจสอบความปลอดภัย, และ Reality Checker (ผู้ตรวจสอบความเป็นจริง) ตรวจสอบความถูกต้องก่อนนำส่ง
คุณต้องสร้าง API เร็ว แต่ถ้าใช้ AI ตัวเดียวทำทุกอย่างจะเจอปัญหา: ฐานข้อมูลขาด Index, Endpoint มีช่องโหว่, ส่วนหน้าละเลย error state, การทดสอบไม่ละเอียด เอเจนต์ผู้เชี่ยวชาญแก้ไขปัญหาเหล่านี้ — แต่ละตัวมีรายการตรวจสอบและผลลัพธ์เฉพาะด้าน เช่น Backend Architect คิดถึง Scale, Database Optimizer หา Index ที่ขาด, Code Reviewer หา Security flaws, Reality Checker ต้องการหลักฐาน
บทความนี้สอนตั้งค่า Agent 5 ตัวจาก The Agency เพื่อรันเวิร์กโฟลว์สร้าง API ที่ครบถ้วน พร้อมผสาน Apidog สำหรับทดสอบและสร้างเอกสาร OpenAPI ก่อนนำ API ไป deploy
Agent 5 ตัวที่คุณจะได้ใช้
| Agent | แผนก | ความรับผิดชอบ |
|---|---|---|
| Backend Architect | วิศวกรรม | การออกแบบ API, Schema ฐานข้อมูล, การตรวจสอบสิทธิ์ |
| Database Optimizer | วิศวกรรม | คำแนะนำ Index, การปรับแต่ง Query |
| Frontend Developer | วิศวกรรม | คอมโพเนนต์ React, ไคลเอนต์ API, การจัดการ State |
| Code Reviewer | วิศวกรรม | การตรวจสอบความปลอดภัย, Type Safety, การจัดการข้อผิดพลาด |
| Reality Checker | การทดสอบ | การตรวจสอบความถูกต้องโดยอาศัยหลักฐาน, หลักฐานภาพหน้าจอ |
ติดตั้ง Agent
# Clone The Agency repo
git clone https://github.com/msitarzewski/agency-agents.git
cd agency-agents
# Copy agents to Claude Code
cp engineering/engineering-backend-architect.md ~/.claude/agents/
cp engineering/engineering-database-optimizer.md ~/.claude/agents/
cp engineering/engineering-frontend-developer.md ~/.claude/agents/
cp engineering/engineering-code-reviewer.md ~/.claude/agents/
cp testing/testing-reality-checker.md ~/.claude/agents/
ขั้นตอนที่ 1: Backend Architect ออกแบบระบบ
เริ่ม session Claude Code ใหม่:
Activate Backend Architect mode.
Design a REST API for an e-commerce platform with:
- User authentication (JWT with refresh tokens)
- Product catalog with categories and filtering
- Shopping cart management
- Order processing with status tracking
- Payment webhook integration
Output:
1. OpenAPI 3.0 specification
2. PostgreSQL database schema with relationships
3. Project folder structure (Express.js + TypeScript)
4. Authentication flow diagram
ผลลัพธ์ตัวอย่าง
OpenAPI Spec (บางส่วน):
openapi: 3.0.0
info:
title: "E-commerce API"
version: 1.0.0
paths:
/auth/login:
post:
summary: User login
requestBody:
content:
application/json:
schema:
type: object
properties:
email: { type: string, format: email }
password: { type: string, minLength: 8 }
responses:
'200':
description: "JWT tokens"
content:
application/json:
schema:
type: object
properties:
accessToken: { type: string }
refreshToken: { type: string }
Schema ฐานข้อมูล:
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE products (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),
category_id UUID REFERENCES categories(id),
inventory_count INTEGER DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE orders (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
total_amount DECIMAL(10, 2) NOT NULL,
status VARCHAR(50) DEFAULT 'pending',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
โครงสร้างโฟลเดอร์:
src/
├── controllers/
│ ├── auth.controller.ts
│ ├── products.controller.ts
│ └── orders.controller.ts
├── middleware/
│ ├── auth.middleware.ts
│ └── validation.middleware.ts
├── routes/
│ ├── auth.routes.ts
│ ├── products.routes.ts
│ └── orders.routes.ts
├── services/
│ ├── auth.service.ts
│ ├── products.service.ts
│ └── orders.service.ts
├── models/
│ ├── User.ts
│ ├── Product.ts
│ └── Order.ts
└── index.ts
บันทึกผลลัพธ์เพื่อนำไปใช้ในขั้นถัดไป
ขั้นตอนที่ 2: Database Optimizer ตรวจสอบ Schema
เปิด session ใหม่:
Activate Database Optimizer mode.
Review this PostgreSQL schema for an e-commerce API:
[Paste the schema from Step 1]
Check for:
1. Missing indexes on foreign keys and frequently queried columns
2. Query performance on product search (name, category, price range)
3. Proper constraints for data integrity
4. Missing tables for common e-commerce features (reviews, wishlists)
5. Soft delete patterns for audit trails
Output specific ALTER TABLE statements and new table definitions.
ตัวอย่างผลลัพธ์
คำแนะนำ Index:
-- Add indexes on foreign keys
CREATE INDEX idx_products_category_id ON products(category_id);
CREATE INDEX idx_orders_user_id ON orders(user_id);
-- Add index for product search
CREATE INDEX idx_products_name_search ON products USING gin(to_tsvector('english', name));
CREATE INDEX idx_products_price ON products(price) WHERE inventory_count > 0;
-- Add composite index for category filtering
CREATE INDEX idx_products_category_price ON products(category_id, price);
ตารางที่ขาดหายไป:
CREATE TABLE reviews (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
product_id UUID REFERENCES products(id),
user_id UUID REFERENCES users(id),
rating INTEGER CHECK (rating >= 1 AND rating <= 5),
comment TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE(product_id, user_id)
);
CREATE TABLE cart_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
product_id UUID REFERENCES products(id),
quantity INTEGER DEFAULT 1 CHECK (quantity > 0),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE(user_id, product_id)
);
ข้อจำกัดที่ควรเพิ่ม:
-- Email format validation
ALTER TABLE users ADD CONSTRAINT chk_email_format
CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');
-- Soft delete column
ALTER TABLE products ADD COLUMN deleted_at TIMESTAMP WITH TIME ZONE NULL;
CREATE INDEX idx_products_deleted_at ON products(deleted_at) WHERE deleted_at IS NULL;
นำข้อเสนอเหล่านี้ไปเพิ่มใน Schema
ขั้นตอนที่ 3: Frontend Developer สร้างไคลเอนต์
เปิด session ใหม่:
Activate Frontend Developer mode.
Build a React dashboard for this e-commerce API:
[Paste OpenAPI spec from Step 1]
Requirements:
- TypeScript with strict mode
- React Query for server state management
- Product list with filters (category, price range, search)
- Shopping cart with real-time updates
- Order history with status tracking
- Proper error handling and loading states
- Responsive design (mobile, tablet, desktop)
Output:
1. Project setup (Vite + React + TypeScript)
2. API client with React Query hooks
3. Core components (ProductList, ProductCard, Cart, OrderHistory)
4. Error boundary and loading skeletons
ตัวอย่างโค้ดไคลเอนต์ API:
// src/lib/api-client.ts
import { QueryClient, useQuery, useMutation } from '@tanstack/react-query';
const API_BASE = 'http://localhost:3000/api';
async function fetcher<T>(endpoint: string, options?: RequestInit): Promise<T> {
const response = await fetch(`${API_BASE}${endpoint}`, {
...options,
headers: {
'Content-Type': 'application/json',
...options?.headers,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || 'Request failed');
}
return response.json();
}
export function useProducts(filters?: ProductFilters) {
const params = new URLSearchParams(filters as Record<string, string>);
return useQuery({
queryKey: ['products', filters],
queryFn: () => fetcher<Product[]>(`/products?${params}`),
});
}
export function useAddToCart() {
return useMutation({
mutationFn: (item: CartItem) =>
fetcher<CartItem>('/cart', {
method: 'POST',
body: JSON.stringify(item),
}),
});
}
คอมโพเนนต์รายการสินค้า:
// src/components/ProductList.tsx
import { useProducts } from '@/lib/api-client';
import { ProductCard } from './ProductCard';
import { FilterSidebar } from './FilterSidebar';
import { Skeleton } from './ui/skeleton';
export function ProductList() {
const [filters, setFilters] = useState<ProductFilters>({});
const { data: products, isLoading, error } = useProducts(filters);
if (error) {
return <Alert variant="destructive">{error.message}</Alert>;
}
return (
<div className="flex gap-4">
<FilterSidebar filters={filters} onFilterChange={setFilters} />
<div className="flex-1 grid grid-cols-1 md:grid-cols-3 gap-4">
{isLoading ? (
Array.from({ length: 6 }).map((_, i) => (
<Skeleton key={i} className="h-64" />
))
) : products?.length === 0 ? (
<EmptyState message="No products found" />
) : (
products?.map(product => (
<ProductCard key={product.id} product={product} />
))
)}
</div>
</div>
);
}
Error Boundary:
// src/components/ErrorBoundary.tsx
export class ErrorBoundary extends React.Component<
{ children: React.ReactNode },
{ hasError: boolean; error: Error | null }
> {
constructor(props: { children: React.ReactNode }) {
super(props);
this.state = { hasError: false, error: null };
}
static getDerivedStateFromError(error: Error) {
return { hasError: true, error };
}
render() {
if (this.state.hasError) {
return (
<div className="p-4 bg-red-50 border border-red-200 rounded">
<h2 className="text-lg font-semibold text-red-800">Something went wrong</h2>
<p className="text-red-600">{this.state.error?.message}</p>
<Button onClick={() => window.location.reload()} className="mt-2">
Reload
</Button>
</div>
);
}
return this.props.children;
}
}
ขั้นตอนที่ 4: Code Reviewer ตรวจสอบทุกอย่าง
เปิด session ใหม่:
Activate Code Reviewer mode.
Review this codebase for:
1. Security vulnerabilities:
- SQL injection risks
- XSS vulnerabilities
- CSRF protection
- Authentication bypass possibilities
2. TypeScript strict mode compliance:
- No implicit any
- Proper type definitions
- Null/undefined handling
3. Error handling gaps:
- Uncaught promise rejections
- Missing try/catch blocks
- Silent failures
[Paste the code from Steps 1-3]
Output a report with severity ratings (Critical, High, Medium, Low) and specific fixes.
ตัวอย่างรายงาน:
## ปัญหาสำคัญ (Critical Issues)
### 1. SQL Injection ในการค้นหาสินค้า
**ตำแหน่ง:** `src/controllers/products.controller.ts:24`
**ปัญหา:** ข้อมูลที่ผู้ใช้ป้อนถูกเชื่อมโดยตรงกับ SQL query
// VULNERABLE
const query = `SELECT * FROM products WHERE name LIKE '%${search}%'`;
วิธีแก้ไข: ใช้ Parameterized Queries
const query = 'SELECT * FROM products WHERE name LIKE $1';
await db.query(query, [`%${search}%`]);
2. การขาดการป้องกัน CSRF
ตำแหน่ง: src/index.ts
วิธีแก้ไข: เพิ่ม csurf Middleware
import csrf from 'csurf';
app.use(csrf({ cookie: true }));
3. Implicit Any ในการตอบกลับ API
ตำแหน่ง: src/lib/api-client.ts:8
วิธีแก้ไข: เพิ่ม Type Constraint
async function fetcher<T extends Record<string, unknown>>(
endpoint: string,
options?: RequestInit
): Promise<T> { ... }
รายงานความปลอดภัยของประเภท (Type Safety Report):
## การละเมิด TypeScript
1. `products.controller.ts:45` - ขาดการระบุประเภทการคืนค่า (Return Type Annotation)
2. `auth.middleware.ts:12` - Implicit any ในบล็อก catch
3. `orders.service.ts:78` - อ็อบเจกต์อาจเป็น Undefined
เรียกใช้ `tsc --noEmit` เพื่อดูรายการทั้งหมด แก้ไขก่อนการปรับใช้
**ดำเนินการแก้ไขก่อนต่อไป**
ขั้นตอนที่ 5: Reality Checker ตรวจสอบความถูกต้องก่อนนำส่ง
เปิด session ใหม่:
Activate Reality Checker mode.
This e-commerce API is ready for production validation.
Run your mandatory reality check process:
1. Verify files exist
2. Cross-reference claimed features with actual code
3. Require screenshot evidence from Playwright tests
4. Review test-results.json for performance metrics
Project URL: http://localhost:3000
Test results: ./public/qa-screenshots/test-results.json
Output: PASS or NEEDS WORK with specific blocking issues.
ตัวอย่างคำสั่งและผลลัพธ์
# 1. ตรวจสอบไฟล์
ls -la src/controllers/ src/services/ src/routes/
ls -la src/components/ src/lib/
# 2. เปรียบเทียบคุณสมบัติที่กล่าวอ้างกับโค้ดจริง
grep -r "jwt\|jsonwebtoken" . --include="*.ts" || echo "NO JWT FOUND"
grep -r "bcrypt\|argon2" . --include="*.ts" || echo "NO PASSWORD HASHING FOUND"
grep -r "rateLimit\|express-rate-limit" . --include="*.ts" || echo "NO RATE LIMITING FOUND"
# 3. เรียกใช้ Playwright เพื่อจับภาพหน้าจอ
npx playwright test --config=qa-playwright.config.ts --grep "@screenshot"
# 4. ตรวจสอบผลการทดสอบ
cat public/qa-screenshots/test-results.json
ตัวอย่างรายงาน
## ผลลัพธ์การตรวจสอบความเป็นจริง
### การตรวจสอบไฟล์: ผ่าน
- ไฟล์ Controller ทั้งหมดมีอยู่
- ไฟล์ Component ทั้งหมดมีอยู่
### การตรวจสอบคุณสมบัติ: ต้องแก้ไข
- การตรวจสอบสิทธิ์ JWT: พบ
- การแฮชรหัสผ่าน: พบ
- การจำกัดอัตรา (Rate limiting): ไม่พบ (ปัญหาที่ต้องแก้ไข)
### หลักฐานภาพหน้าจอ: ต้องแก้ไข
- รูปแบบเดสก์ท็อป: ผ่าน
- รูปแบบแท็บเล็ต: ผ่าน
- รูปแบบมือถือ: ไม่ผ่าน (ตารางสินค้าเสียที่ 375px)
### ตัวชี้วัดประสิทธิภาพ: ต้องแก้ไข
- เวลาโหลดเฉลี่ย: 2.3 วินาที (เป้าหมาย: <1 วินาที)
- ข้อผิดพลาดใน Console: 3 (เป้าหมาย: 0)
- คำขอเครือข่ายล้มเหลว: 1 (เป้าหมาย: 0)
## สถานะสุดท้าย: ต้องแก้ไข
### ปัญหาที่ต้องแก้ไข:
1. ไม่ได้ใช้ Rate limiting
2. รูปแบบมือถือในรายการสินค้าเสีย
3. มีข้อผิดพลาดใน Console 3 รายการที่ต้องแก้ไข
4. เวลาโหลดเกินเป้าหมาย 1 วินาที
### ปัญหาที่ไม่ต้องแก้ไขทันที:
- เพิ่ม Loading Skeleton ในประวัติการสั่งซื้อ
- ปรับปรุงข้อความแสดงข้อผิดพลาด
แก้ไขปัญหาและรัน Reality Checker อีกครั้ง
สรุปเวิร์กโฟลว์
┌─────────────────────────────────────────────────────────────────┐
│ Backend Architect │
│ → OpenAPI spec, Schema ฐานข้อมูล, โครงสร้างโฟลเดอร์ │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Database Optimizer │
│ → คำแนะนำ Index, ตารางที่ขาดหายไป, ข้อจำกัด │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Frontend Developer │
│ → คอมโพเนนต์ React, ไคลเอนต์ API, การจัดการข้อผิดพลาด │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Code Reviewer │
│ → การตรวจสอบความปลอดภัย, Type Safety, ช่องว่างในการจัดการข้อผิดพลาด │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Reality Checker │
│ → การตรวจสอบความถูกต้องโดยอาศัยหลักฐาน, หลักฐานภาพหน้าจอ, ผ่าน/ไม่ผ่าน │
└─────────────────────────────────────────────────────────────────┘
การดำเนินการ Agent แบบขนาน (ขั้นสูง)
รัน Agent หลายตัวแบบขนานเพื่อลดเวลา:
# เทอร์มินัล 1: Backend Architect
claude "เปิดใช้งาน Backend Architect ออกแบบ API e-commerce..."
# เทอร์มินัล 2: Database Optimizer (รอผลลัพธ์ Schema)
claude "เปิดใช้งาน Database Optimizer ตรวจสอบ Schema นี้..."
# เทอร์มินัล 3: Frontend Developer (รอ API Spec)
claude "เปิดใช้งาน Frontend Developer สร้างแดชบอร์ด React..."
# เทอร์มินัล 4: Code Reviewer (รอโค้ด)
claude "เปิดใช้งาน Code Reviewer ตรวจสอบ codebase นี้..."
# ทุกเทอร์มินัล: Reality Checker (การตรวจสอบขั้นสุดท้าย)
claude "เปิดใช้งาน Reality Checker ดำเนินการตรวจสอบที่จำเป็น..."
ทำงานแบบขนานให้เสร็จใน 2-4 ชั่วโมง แทน 6-8 ชั่วโมง
สิ่งที่คุณสร้าง
| ผลลัพธ์ | Agent | ผลลัพธ์ที่ได้ |
|---|---|---|
| การออกแบบ API | Backend Architect | OpenAPI spec, Schema ฐานข้อมูล, โครงสร้างโฟลเดอร์ |
| การปรับแต่ง Schema | Database Optimizer | คำแนะนำ Index, ตารางเพิ่มเติม, ข้อจำกัด |
| ส่วนหน้า | Frontend Developer | คอมโพเนนต์ React, ไคลเอนต์ API, ขอบเขตข้อผิดพลาด |
| การตรวจสอบความปลอดภัย | Code Reviewer | รายงานช่องโหว่, การแก้ไข Type Safety |
| การตรวจสอบขั้นสุดท้าย | Reality Checker | หลักฐานภาพหน้าจอ, การรับรองผ่าน/ไม่ผ่าน |
ขั้นตอนถัดไป
- ปรับใช้ API:
- ตั้งค่า PostgreSQL สำหรับ Production พร้อม Connection Pooling
- กำหนดค่าตัวแปรสภาพแวดล้อมสำหรับข้อมูลลับ
- เพิ่ม Endpoint สำหรับตรวจสอบสถานะ
ตั้งค่าการเฝ้าระวัง (Prometheus, Grafana)
ขยายเวิร์กโฟลว์:
เพิ่ม Agent Performance Benchmarker สำหรับ Load Testing
เพิ่ม Agent Technical Writer สำหรับเอกสารประกอบ
เพิ่ม Agent DevOps Automator สำหรับ CI/CD Pipeline
นำรูปแบบกลับมาใช้ใหม่:
บันทึก Prompt เป็น Template
สร้างสคริปต์ workflow เชื่อมโยงเซสชัน Agent
แชร์กับทีม
Agent ผู้เชี่ยวชาญห้าตัว API ที่สมบูรณ์แบบหนึ่งชุด ไม่มีคำแนะนำทั่วไป
พลังของการแบ่งความเชี่ยวชาญ — แต่ละ Agent มีโดเมน รายการตรวจสอบ และผลลัพธ์เฉพาะ
ตาคุณแล้ว: เลือกโปรเจกต์ เปิด Agent แล้วนำส่งงานได้เร็วขึ้น
ประเด็นสำคัญ
- Agent ผู้เชี่ยวชาญดีกว่าผู้ช่วยทั่วไป — Agent แต่ละตัวมีความเชี่ยวชาญ รายการตรวจสอบ และ output เฉพาะ
- เวิร์กโฟลว์แบบลำดับ = คุณภาพ — Backend Architect ออกแบบ, Database Optimizer ตรวจสอบ, Frontend Developer สร้าง, Code Reviewer ตรวจสอบ, Reality Checker ตรวจสอบความถูกต้อง
- การอนุมัติด้วยหลักฐานป้องกันข้อผิดพลาด — Reality Checker ต้องการภาพหน้าจอ, grep results, metric ก่อน Certified "ผ่าน"
- รันขนานลดเวลา — ใช้ 4 terminal พร้อมกัน เสร็จใน 2-4 ชม. แทน 6-8 ชม.
- บันทึก Prompt เป็น Template — ใช้ใหม่ได้สำหรับทุกโปรเจกต์
คำถามที่พบบ่อย
AI Agent สำหรับนักพัฒนาคืออะไร?
AI Agent คือผู้ช่วย AI ผู้เชี่ยวชาญแต่ละด้าน ไม่เหมือน Chatbot ทั่วไป เช่น Backend Architect หรือ Code Reviewer จะมี checklist และ output ที่สม่ำเสมอ
ติดตั้ง Agent จาก The Agency อย่างไร?
Clone repo ที่ github.com/msitarzewski/agency-agents แล้วคัดลอกไฟล์ .md ไปที่ ~/.claude/agents/ สำหรับ Claude Code หรือใช้สคริปต์ติดตั้งกับเครื่องมืออื่น
Reality Checker Agent คืออะไร?
Reality Checker คือ Agent QA ที่ต้องการหลักฐาน เช่น ภาพหน้าจอ, grep results, metric ก่อนจะรับรอง "ผ่าน"
รัน Agent หลายตัวขนานกันได้หรือไม่?
ได้ เปิดหลาย terminal แล้ว activate agent ที่ต่างกันในแต่ละหน้าต่าง ส่งผลลัพธ์ด้วยการคัดลอก output หรือใช้หน่วยความจำ MCP เพื่อส่งงานอัตโนมัติ
ส่ง Context ระหว่าง Agent อย่างไร?
คัดลอก output จาก Agent หนึ่งแล้ววางเป็น input ให้ตัวถัดไป หรือใช้หน่วยความจำ MCP เพื่อให้ Agent ถัดไปดึงข้อมูลเอง
ถ้า Agent แจ้งว่า 'ต้องแก้ไข'?
แก้ไขจุดที่ Agent บอก แล้วรัน Agent นั้นอีกครั้ง Reality Checker จะชี้ปัญหาที่ต้องแก้ไขก่อนรับรอง "ผ่าน"
จำเป็นต้องใช้ Agent ทั้ง 5 ตัวทุกโปรเจกต์ไหม?
ไม่จำเป็น สำหรับ API เล็กเริ่มที่ Backend Architect + Code Reviewer ถ้า Schema ซับซ้อนเพิ่ม Database Optimizer, งาน UI ให้ Frontend Developer, QA ก่อนส่งให้ Reality Checker
Top comments (0)