agent-creator
Agent Creator
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 mhylle/claude-skills-collection
skill-visualizer
Generate interactive HTML visualizations of the skills collection, codebase structure, or dependency graphs. Uses D3.js for interactive visualization with collapsible nodes, color-coded categories, and hover details. Triggers on "visualize skills", "generate skill map", "codebase visualization", or "show skill dependencies".
9verification-loop
Comprehensive 6-check verification framework for validating implementation quality across build, types, lint, tests, security, and diff review. This skill ensures code meets all quality gates before phase completion. Triggers on "verify implementation", "run verification", "/verification-loop", or automatically as part of implement-phase Step 2.
8context-saver
Save session context to disk for seamless continuation in new chat sessions. This skill should be used when the user asks to save context, preserve work state, checkpoint progress, or prepare for session handoff. Triggers on "save context", "checkpoint", "save progress", "preserve state", or when explicitly asked to create a context file for later resumption. Optimizes for correctness, completeness, minimal size, and trajectory preservation.
8strategic-compact
Strategic compaction suggestion framework that monitors session complexity and suggests context compaction at optimal logical boundaries rather than arbitrary thresholds.
8implement-plan
Orchestrate the execution of complete implementation plans, delegating each phase to implement-phase skill. This skill manages the full plan lifecycle including phase sequencing, user confirmation between phases, and overall progress tracking. Triggers on "implement the plan", "execute the implementation plan", or when given a path to a plan file.
8create-plan
Create detailed implementation plans through interactive research and iteration. This skill should be used when creating new implementation plans, designing feature specifications, planning technical work, or when the user asks to plan an implementation. Triggers on requests like "create a plan", "plan the implementation", "design how to implement", or when given a feature/task that needs structured planning before implementation.
7