Setup and context: Why AgentKit 2.0 is a Game-Changer for Freelance Development
For freelance developers and agencies, productivity equals income.
If a ¥500K project normally takes 40 business hours, your effective hourly rate is ¥12,500. But with Antigravity AgentKit 2.0, the same project can be completed in 13 business hours. That leaves 27 hours to take on additional work—tripling your monthly income.
This article reveals the complete, real-world workflow used by freelance developers handling ¥500K–1M/month in concurrent projects with AgentKit 2.0. From requirements gathering through implementation, testing, deployment, and invoicing, you'll learn the exact design patterns and a copy-paste-ready agents.md template that cuts development time by two-thirds.
Understanding AgentKit 2.0: Multi-Agent Orchestration Fundamentals
AgentKit 2.0's superpower is task delegation across specialized agents—not just a single ChatGPT-like chat.
Instead of one AI handling everything, you assign roles:
- Requirements Agent — Converts client feedback into specification documents automatically
- Frontend Agent — Builds React/Next.js UI components in parallel
- Backend Agent — Develops REST APIs and database schemas concurrently
- QA Agent — Generates unit, integration, and E2E tests automatically
- Deployment Agent — Handles staging, production deployment, and rollback procedures
Each agent maintains its own context window, so bottlenecks in one area don't block others. Unlike a single chat where all discussions compete for the AI's attention, agents work in parallel—similar to a real development team.
Workflow from Project Kickoff to Delivery
When you receive a new client project, follow these steps:
- Step 1: Initial Client Meeting — Budget, deadline, tech stack, existing systems
- Step 2: Task Decomposition — Break the project into feature-based and layer-based tasks (create tasks.md)
- Step 3: Agent Assignment — Map each task in tasks.md to the appropriate agent
- Step 4: Initialize agents.md — Define each agent's role, expertise, and constraints
- Step 5: Kickoff Review — Confirm collaboration rules and handoff procedures
Example: tasks.md for a ¥500K Clinic Appointment System
# Project: Clinic Appointment Management System v1.0
## Functional Requirements
- [Admin] Patient information management (CRUD)
- [Frontend] Appointment calendar UI (date/time picker → confirmation flow)
- [Backend] Appointment reserve API (concurrent access conflict handling)
- [Admin] Email notifications (confirmation, cancellation)
## Tech Stack
- Frontend: Next.js 16 + TypeScript + TailwindCSS
- Backend: Node.js + Hono + PostgreSQL
- Hosting: Cloudflare Workers + Vercel
- Database: Supabase
- Auth: Supabase RLS policies
## Timeline
- Phase 1 (core features): 10 business days
- Phase 2 (enhancements): 5 business days
- Production launch: 2 business days
## Risks & Constraints
- Must integrate with existing SQL Server 2019 patient database
- Client prioritizes maintainability over elegance (unit tests required)
agents.md Template: Role-Based Agent Configuration
AgentKit 2.0 uses an agents.md file at project root to declare specialized agents. Here's a real template from a completed project:
# Project Agents
## 1. Requirements Agent
**Role**: Translate client requirements into system design
**Responsibility**:
- Extract wireframes and UI specs from Figma
- Document business logic (appointment rules, cancellation policies)
- Auto-generate OpenAPI specification
**Constraints**:
- Only use client-provided materials (emails, docs, Figma)
- Don't make architectural decisions alone; consult Backend Agent on conflicts
**Tools**:
- File reading (Figma exports)
- Markdown editing (spec generation)
- API specification (OpenAPI format)
---
## 2. Frontend Agent
**Role**: Implement React/Next.js + TailwindCSS UI
**Responsibility**:
- Build appointment calendar component (React hooks + Zustand)
- Form validation and error handling
- WCAG 2.1 AA accessibility compliance
- Playwright E2E tests
**Constraints**:
- TailwindCSS only (no UI frameworks like Material-UI)
- Max 100 lines per component
- Don't make backend assumptions; verify with Backend Agent
**Files**: src/components/, src/pages/, e2e/
---
## 3. Backend Agent
**Role**: Develop Node.js + Hono APIs
**Responsibility**:
- Appointment reserve and cancel endpoints (transactional safety)
- Email queue system (Firebase Cloud Tasks or Bull)
- Nightly ETL sync with legacy SQL Server database
- Rate limiting and JWT authentication
**Constraints**:
- PostgreSQL (Supabase) is the system of record
- All state mutations must be transactional
- Logs in English only (no i18n at API level)
**Files**: src/api/, src/db/, tests/unit/
---
## 4. QA Agent
**Role**: Automated testing and quality assurance
**Responsibility**:
- Unit tests (Jest) with 80% coverage minimum
- Integration tests (Supertest) for all API endpoints
- E2E tests (Playwright) for user journeys
- Security audit against OWASP Top 10
**Constraints**:
- Test suite runtime < 5 minutes total
- Mock only the database layer, not HTTP
- Test code holds the same quality bar as production code
**Files**: tests/
---
## 5. Deployment Agent
**Role**: Release management and monitoring
**Responsibility**:
- Deploy Next.js to Vercel
- Deploy APIs to Cloudflare Workers
- Manage environment variables and secrets
- Build and maintain GitHub Actions CI/CD
- Post-deployment health checks
**Constraints**:
- Always run dry-run before production release
- Document rollback procedures in docs/ROLLBACK.md
- Deployment pipeline < 3 minutes
---
## Handoff Rules Between Agents
1. **Requirements → Frontend/Backend**: Pass spec (Markdown + OpenAPI)
2. **Frontend → QA**: Create PR; QA auto-generates test cases
3. **Backend → QA**: Run test suite, review coverage report
4. **QA → Deployment**: "All tests green" triggers deployment readiness
5. **Deployment → Client**: Send deployment summary + manual verification checklist
---
## Success Metrics
- Code generation error rate: < 5%
- Test coverage: ≥ 80%
- Deployment success rate: 100%
- On-time delivery: 100%This agents.md ensures every agent knows its scope and boundaries—preventing scope creep and confusion.
Implementation Phase: Parallel Execution
With agents.md locked in, you move into active development using AgentKit 2.0's Planning Mode and Fast Mode.
Planning Mode: System Design (1 day)
- Requirements Agent finalizes specifications
- Frontend Agent creates component architecture (UI tree + prop interfaces)
- Backend Agent designs ER diagram and API schema
- All three agree on interfaces before coding starts
This phase focuses on design documentation (Markdown + Mermaid diagrams), not code generation.
Fast Mode: Parallel Implementation (5 days)
Once the design is locked:
- Frontend Agent: Builds components → local testing
- Backend Agent: Implements endpoints → curl testing
- QA Agent: Writes tests alongside implementation
All output automatically commits to Git, maintaining full version history.
Code Example: Parallel Implementation Role Division
// Frontend Agent: src/components/AppointmentCalendar.tsx
import { useState } from 'react'
import { supabase } from '@/lib/supabase'
export const AppointmentCalendar = () => {
const [selectedDate, setSelectedDate] = useState<Date | null>(null)
const [selectedTime, setSelectedTime] = useState<string | null>(null)
const handleConfirm = async () => {
if (!selectedDate || !selectedTime) return
const { data, error } = await supabase
.from('appointments')
.insert([
{
patient_id: 'YOUR_PATIENT_ID',
appointment_date: selectedDate.toISOString(),
appointment_time: selectedTime,
},
])
if (error) console.error('Booking failed:', error)
else console.log('Booking confirmed:', data)
}
return (
<div className="space-y-4">
{/* Calendar picker UI */}
<button onClick={handleConfirm}>Confirm Appointment</button>
</div>
)
}// Backend Agent: src/api/appointments.ts
import { Hono } from 'hono'
import { postgres } from '@/db'
const app = new Hono()
app.post('/appointments', async (c) => {
const body = await c.req.json()
const { patient_id, appointment_date, appointment_time } = body
// Transaction: check availability + insert
const client = await postgres.connect()
try {
await client.query('BEGIN')
const existing = await client.query(
'SELECT * FROM appointments WHERE appointment_date = $1 AND appointment_time = $2 AND status = $3',
[appointment_date, appointment_time, 'confirmed']
)
if (existing.rows.length > 0) {
await client.query('ROLLBACK')
return c.json({ error: 'Time slot unavailable' }, 409)
}
await client.query(
'INSERT INTO appointments (patient_id, appointment_date, appointment_time, status) VALUES ($1, $2, $3, $4)',
[patient_id, appointment_date, appointment_time, 'confirmed']
)
await client.query('COMMIT')
return c.json({ success: true })
} catch (err) {
await client.query('ROLLBACK')
return c.json({ error: 'Database error' }, 500)
}
})
export default app// QA Agent: tests/unit/appointments.test.ts
import { describe, it, expect, beforeEach } from 'vitest'
import { supabase } from '@/lib/supabase'
describe('Appointments API', () => {
beforeEach(async () => {
await supabase.from('appointments').delete().neq('id', -1)
})
it('should confirm appointment when slot is available', async () => {
const response = await fetch('/api/appointments', {
method: 'POST',
body: JSON.stringify({
patient_id: 'test-patient-1',
appointment_date: '2026-04-10',
appointment_time: '14:00',
}),
})
expect(response.status).toBe(200)
const data = await response.json()
expect(data.success).toBe(true)
})
it('should reject booking when slot is taken', async () => {
await supabase.from('appointments').insert([
{
patient_id: 'test-patient-2',
appointment_date: '2026-04-10',
appointment_time: '14:00',
status: 'confirmed',
},
])
const response = await fetch('/api/appointments', {
method: 'POST',
body: JSON.stringify({
patient_id: 'test-patient-3',
appointment_date: '2026-04-10',
appointment_time: '14:00',
}),
})
expect(response.status).toBe(409)
})
})By clearly separating file ownership, merge conflicts are minimized and velocity stays high.
Testing and Quality Assurance
The QA Agent isn't just writing tests—it's guaranteeing reliability through systematic verification.
Automated Test Generation
As code is implemented, QA Agent immediately generates:
- Unit tests (input → output validation)
- Integration tests (API → DB → email flow)
- E2E tests (browser-based user journey simulation)
Coverage Management
npm test -- --coverageIf coverage drops below 80%, QA Agent auto-generates missing tests.
Security Audit
QA Agent validates OWASP Top 10 compliance:
- SQL Injection (parameterized queries confirmed)
- XSS (user input sanitization verified)
- CSRF (token generation checked)
- Auth/Authorization (Supabase RLS policies validated)
Deployment and Delivery
Once all tests pass, the Deployment Agent releases to production.
Automated Deployment Pipeline
# .github/workflows/deploy.yml
name: Deploy to Production
on:
workflow_dispatch: # Manual trigger only
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm test
- run: npm run test:e2e
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Vercel
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
run: npx vercel deploy --prod
- name: Deploy API to Cloudflare
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: npm run deploy:workers
notify:
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Send Slack notification
run: |
curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
-d '{"text":"✅ Production deployment successful"}'Post-Deployment Verification
- Vercel Analytics: Page load time < 3 seconds
- Sentry: Error rate at 0%
- Cloudflare Logpush: No API errors in last hour
Client Communication and Reporting
In freelance work, progress visibility builds trust. Antigravity automates what used to be manual.
Daily Progress Report Generation
At 6 PM daily, Antigravity parses Git logs and auto-generates:
# Progress Report — April 2, 2026
## Completed Today
- [x] Patient info management UI (3 components)
- [x] Appointment reserve API endpoint (POST /appointments)
- [x] Unit test coverage +8%
## In Progress
- [ ] Appointment cancel API (completion expected tomorrow)
- [ ] Email notification system (testing phase)
## Blocking Issues
None
## Tomorrow's Focus
- Complete backend implementation
- Begin integration testingThis auto-posts to Slack, giving clients daily visibility without manual effort.
Rapid Change Request Handling
When a client requests "change the calendar border from gray to blue":
- Slack message received
- Antigravity identifies the component (AppointmentCalendar.tsx)
- Frontend Agent updates color definition
- QA Agent verifies test compatibility
- Deployment Agent deploys to Vercel Preview
- Client gets a shareable URL in 10–15 minutes
(Traditional approach: 1+ hour)
Maximizing Income and Rates
The real value of AgentKit 2.0 is radical hourly rate improvement.
Rate Calculation Example
Traditional freelancer (ChatGPT only)
- ¥500K project ÷ 40 hours = ¥12,500/hour
With AgentKit 2.0
- ¥500K project ÷ 13 hours = ¥38,500/hour (3x improvement)
Time is saved through:
- Design phase: 50% reduction (Requirements Agent automates)
- Code generation: 60% reduction (4 agents work in parallel)
- Testing: 70% reduction (QA Agent auto-generates)
- Deployment: 90% reduction (Deployment Agent automated)
Concurrent Project Capacity
With AgentKit 2.0, solo developers handle 3–4 concurrent projects:
- Small projects (¥300K): 2 weeks each → 3 projects/month
- Medium projects (¥500K): 20 business days → 2 projects/month
- Large projects (¥1M+): 6 weeks → 1 project at a time
Income scales: ¥500K × 2 projects = ¥1M/month (vs. traditional ¥500K/month)
Rate Increase Messaging
Even with 3x productivity, clients won't know why unless you explain. Use this pitch:
We've adopted Antigravity, an AI-powered development IDE that automates design, implementation, testing, and deployment. This lets us deliver higher-quality projects faster while maintaining full code maintainability. Project rates are now ¥18,000/hour, reflecting industry-standard rates for skilled contractors.
Clients understand "technology investment" as a legitimate reason for rate increases.
Lessons from Real Projects: Failure Patterns
Failure 1: Over-Trusting Agents
Problem: A junior Backend Agent was assigned legacy SQL Server integration without explicit constraints. It ignored denormalized table structures and generated inefficient queries.
Lesson: Agents follow instructions precisely. If constraints aren't documented in agents.md, they won't know to apply them. Always specify:
- Database limitations
- Legacy system quirks
- Non-functional requirements (performance, security)
Failure 2: Context Bloat
Problem: By week 4, accumulated code, docs, and test files bloated the agent's context window. Agents lost sight of "what to build this sprint."
Lesson: Break large projects into weekly sprints. Update tasks.md weekly. Archive completed sprints to /archive/ to reduce context noise.
Failure 3: Expectation Mismatch
Problem: Client expected auto-confirmation emails, but the spec didn't mention it. Discovered 1 week before delivery.
Lesson: Have clients sign a feature checklist separate from the spec. Label anything not on the checklist as "out of scope / additional project."
Conclusion
AgentKit 2.0 isn't just efficiency—it's a new business model. Instead of one slow project per month, you scale to three concurrent projects with maintained quality and doubled hourly rates.
The agents.md template, task decomposition strategy, and deployment pipeline in this article are production-ready and copy-paste compatible.
Your next project is your opportunity. Apply this workflow and watch your monthly income triple.
Recommended Reading
For deeper learning:
- Clean Architecture — Robert C. Martin(Foundation for multi-agent design)
- Test Driven Development — Kent Beck(QA principles)
- Microservices Patterns — Chris Richardson(Multi-agent role separation)