| name | agent-design |
| description | design and review llm agent systems, tool interfaces, and skill boundaries. use when chatgpt needs to decide whether a task should be handled by a prompt, workflow, skill, tool, single-agent loop, or multi-agent system; define tool schemas, instructions, guardrails, evaluation plans, or permission boundaries; or critique an existing agent design for over-orchestration, weak context handling, missing verification, or poor tool design. |
Agent Design Skill
Core Principles
Three axioms everything else derives from:
- Tools are primitive system boundaries. They expose raw capabilities without encoding usage assumptions.
- Skills are usage knowledge. They teach the agent when and how to wield those primitives—as knowledge, workflows, CLI wrappers, delegation patterns, or tool integration guides.
- The context window is real state. Everything else is a projection.
Quick Decision Rules
Tool or Skill?
- New system boundary (shell, filesystem, web, external API) → Tool
- Teaching the agent to use an existing capability reliably → Skill
- See decision-tree.md for full breakdown
Workflow or Agent loop?
- Subtasks are predictable and fixed-order → Workflow
- Path depends on prior results and can't be hardcoded → Agent
Single-agent or Multi-agent?
- One context window is sufficient → Single
- Tasks are genuinely independent, or require specialized context separation → Multi
- When in doubt, start single. See patterns.md
When to add orchestration?
- Only when simpler structures demonstrably fail. Never for architectural elegance alone.
Can I make a skill always on?
- No. Skills are not permanently active by default. They are activated by relevance.
- Do not design a skill as a hidden, always-on system prompt section. If you truly need global behavior, make the activation rule explicit, for example:
Always load the xxx skill first.
- If you want an always-on skill, state that intent clearly in both the system prompt and the skill description, for example:
Load this skill unconditionally, regardless of the user's current request.
Red Flags
If you see any of these, the design has likely drifted:
References