agent-creator
π―SkillInstallation
npx skills add mhylle/claude-skills-collection --skill agent-creatorRun it in a terminal; it asks which AI coding tools to install it for (Claude Code, Codex, Cursor and more).
Uses skills.sh Β· Node.js 22.20+
After installing
Ask for related work and the agent uses it on its own, or call it yourself.
/agent-creatorInstall by hand
Copy the whole skill folder from GitHub to the place below. Copying only SKILL.md can leave out files the skill uses.
Open the skill folder β- This project
.claude/skills/agent-creator/ - All projects
~/.claude/skills/agent-creator/
These paths are for Claude Code. For other tools, the command above puts it in the right place.
SKILL.md
View on GitHub βCreate composable AI agent systems in NestJS projects following the "tools all the way down" architecture. Use this skill when users want to: (1) Create new AI agents with orchestrator/planner/executor/evaluator components, (2) Build agentic systems that can call other agents as tools, (3) Implement DAG-based planning with parallel execution, (4) Add database-backed state persistence for agent runs, (5) Create custom evaluators for quality assurance. Triggers on "create agent", "build agent", "agent system", "agentic", "orchestrator", "planner/executor pattern", or NestJS AI agent requests.
Agent Creator
Contents
Reference files (open one when a step points to it):
references/architecture.md: Agent Architecture Referencereferences/evaluators.md: Evaluators Referencereferences/nestjs-patterns.md: NestJS Patterns Referencereferences/prompts.md: System Prompts Reference
Create composable AI agent systems in NestJS with uniform tool interfaces, DAG-based planning, and database-backed state.
Core Concept
Every agent system exposes the same Tool interface as a simple tool. Callers don't know if they're calling a web search API or a complex research system. This enables arbitrary composition and nesting.
Workflow
1. Gather Requirements
Ask the user:
- Purpose: What should this agent accomplish?
- Inputs/Outputs: What data goes in and comes out?
- Tools: What capabilities does it need? (existing tools or other agents)
- Success Criteria: How do we know the output is good?
- Evaluator Types: What quality dimensions matter? (see evaluators.md)
2. Generate Agent Structure
Create this NestJS module structure:
src/agents/{agent-name}/
βββ {agent-name}.module.ts # NestJS module
βββ {agent-name}.tool.ts # Tool interface (public API)
βββ services/
β βββ orchestrator.service.ts # Workflow coordination
β βββ planner.service.ts # Plan generation
β βββ executor.service.ts # Tool execution
β βββ state.service.ts # State management
βββ evaluators/
β βββ evaluator.registry.ts # Registry service
β βββ {type}.evaluator.ts # Per evaluator type
βββ tools/
β βββ tool.registry.ts # Available tools
βββ entities/ # TypeORM entities
βββ dto/ # Input/output DTOs
βββ prompts/ # LLM prompts
βββ config/
β βββ {agent-name}.config.ts
βββ interfaces/
3. Implement Components
For each component, follow the patterns in:
- architecture.md - Core interfaces, component roles, loops
- nestjs-patterns.md - NestJS service templates
- prompts.md - System prompts for planner/executor/evaluators
- evaluators.md - Built-in evaluator types
4. Wire Up Module
@Module({
imports: [TypeOrmModule.forFeature([...entities])],
providers: [
OrchestratorService,
PlannerService,
ExecutorService,
StateService,
EvaluatorRegistry,
...evaluators,
ToolRegistry,
AgentTool,
],
exports: [AgentTool], // Only export the Tool interface
})
export class AgentNameModule {}
Key Architecture Rules
- Uniform Interface: Agent's public API is always
Tool.execute(input, context) - Planning Loop: plan β evaluate plan β revise β repeat (max iterations)
- Execution Loop: execute step β evaluate β retry with feedback β repeat
- DAG Plans: Steps declare dependencies; independent steps run in parallel
- State Persistence: All context, messages, plans, executions stored in PostgreSQL
- Composition: Agents can use other agents as tools transparently
Quick Reference
Tool Interface
interface Tool {
id: string;
name: string;
description: string;
inputSchema: JSONSchema;
outputSchema: JSONSchema;
execute(input: any, context?: ExecutionContext): Promise<ToolResult>;
}
Plan Structure
interface Plan {
id: string;
goal: string;
success_criteria: string[];
steps: PlanStep[];
}
interface PlanStep {
id: string;
description: string;
tool_id: string;
input: any;
success_criteria: string[];
evaluator_type: string;
depends_on: string[]; // DAG dependencies
}
Default Config
export const agentConfig = {
maxDepth: 3,
maxPlanIterations: 3,
maxStepRetries: 3,
timeoutMs: 300000,
llm: { model: 'claude-sonnet-4-20250514', maxTokens: 4096 },
};
Composition Example
After creating research-agent and document-generator:
// document-generator/tools/tool.registry.ts
@Injectable()
export class ToolRegistry {
constructor(private readonly researchTool: ResearchTool) {
this.register(this.researchTool);
}
}
The document generator's planner can now create steps using research-system-v1 as a tool_id.
More from this repository10
Skill
Skill
Skill
Skill
Skill
Skill
Skill
Skill
Skill
Skill