Pattern 1: Single-purpose agent
The simplest pattern. One agent, one job.Pattern 2: Orchestrator + worker agents
A top-level orchestrator calls specialized sub-agents as skills.Pattern 3: Flow-first agent
Use SkillsFlow for the primary execution path; use the LLM loop for exception handling.Pattern 4: Memory-augmented assistant
An agent that learns from interactions and personalizes over time.Pattern 5: Plugin-extended runtime
Extend the runtime with a plugin rather than adding logic to skills.Pattern 6: Test-driven agents
Write tests for skills before implementing them. Run tests in CI on every push.Anti-patterns
Too many skills — More than ~15 skills degrades LLM routing accuracy. Group related actions into sub-agents or SkillsFlows. Skills with side effects in tests — Skills that send emails or write to databases should be mockable. Use dependency injection or themock-skills flag in gitagent test.
Secrets in agent.yaml — Never hardcode API keys. Always use ${ENV_VAR} references.
Giant system prompts — A 2,000-word system prompt usually means the agent is trying to do too much. Split into specialized agents.
Logic in hooks instead of skills — Hooks are for cross-cutting concerns (logging, auth, security). Business logic belongs in skills where it’s testable and explicit.