--- name: creating-kiro-agents description: Use when building custom Kiro AI agents or when user asks for agent configurations - provides JSON structure, tool configuration, prompt patterns, and security best practices for specialized development assistants --- # Creating Kiro Agents Expert guidance for creating specialized Kiro AI agents with proper configuration, tools, and security. ## When to Use **Use when:** - User asks to create a Kiro agent - Need specialized AI assistant for specific workflow - Building domain-focused development tools - Configuring agent tools and permissions **Don't use for:** - Generic AI prompts (not Kiro-specific) - Project documentation (use steering files instead) - One-off assistant interactions ## Quick Reference ### Minimal Agent Structure ```json { "name": "agent-name", "description": "One-line purpose", "prompt": "System instructions", "tools": ["fs_read", "fs_write"] } ``` ### File Location - **Project**: `.kiro/agents/.json` - **Global**: `~/.kiro/agents/.json` ### Common Tools - `fs_read` - Read files - `fs_write` - Write files (requires `allowedPaths`) - `execute_bash` - Run commands (requires `allowedCommands`) - MCP server tools (varies by server) ## Core Principles ### 1. Specialization Over Generalization ✅ **Good**: `backend-api-specialist` - Express.js REST APIs ❌ **Bad**: `general-helper` - does everything ### 2. Least Privilege Grant only necessary tools and paths. ```json { "toolsSettings": { "fs_write": { "allowedPaths": ["src/api/**", "tests/api/**"] }, "execute_bash": { "allowedCommands": ["npm test", "npm run build"] } } } ``` ### 3. Clear, Structured Prompts ✅ **Good**: ```markdown You are a backend API expert specializing in Express.js and MongoDB. ## Focus Areas - RESTful API design - Security best practices (input validation, auth) - Error handling with proper status codes - MongoDB query optimization ## Standards - Always use async/await - Implement proper logging - Validate all inputs - Use TypeScript interfaces ``` ❌ **Bad**: "You are a helpful coding assistant." ## Common Patterns ### Backend Specialist ```json { "name": "backend-dev", "description": "Node.js/Express API development with MongoDB", "prompt": "Backend development expert. Focus on API design, database optimization, and security.\n\n## Core Principles\n- RESTful conventions\n- Input validation\n- Error handling\n- Query optimization", "tools": ["fs_read", "fs_write", "execute_bash"], "toolsSettings": { "fs_write": { "allowedPaths": ["src/api/**", "src/routes/**", "src/models/**"] } } } ``` ### Code Reviewer ```json { "name": "code-reviewer", "description": "Reviews code against team standards", "prompt": "You review code for:\n- Quality and readability\n- Security issues\n- Performance problems\n- Standard compliance\n\nProvide constructive feedback with examples.", "tools": ["fs_read"], "resources": ["file://.kiro/steering/review-checklist.md"] } ``` ### Test Writer ```json { "name": "test-writer", "description": "Writes comprehensive Vitest test suites", "prompt": "Testing expert using Vitest.\n\n## Test Requirements\n- Unit tests for all functions\n- Edge case coverage\n- Proper mocking\n- AAA pattern (Arrange, Act, Assert)\n- Descriptive test names", "tools": ["fs_read", "fs_write"], "toolsSettings": { "fs_write": { "allowedPaths": ["**/*.test.ts", "**/*.spec.ts", "tests/**"] } } } ``` ### Frontend Specialist ```json { "name": "frontend-dev", "description": "React/Next.js development with TypeScript", "prompt": "Frontend expert in React, Next.js, and TypeScript.\n\n## Focus\n- Component architecture\n- Performance optimization\n- Accessibility (WCAG)\n- Responsive design", "tools": ["fs_read", "fs_write"], "toolsSettings": { "fs_write": { "allowedPaths": ["src/components/**", "src/app/**", "src/styles/**"] } } } ``` ## Advanced Configuration ### MCP Servers ```json { "mcpServers": { "database": { "command": "mcp-server-postgres", "args": ["--host", "localhost"], "env": { "DB_URL": "${DATABASE_URL}" } }, "fetch": { "command": "mcp-server-fetch", "args": [] } }, "tools": ["fs_read", "db_query", "fetch"], "allowedTools": ["fetch"] } ``` ### Lifecycle Hooks ```json { "hooks": { "agentSpawn": ["git fetch origin", "npm run db:check"], "userPromptSubmit": ["git status --short"] } } ``` ### Resource Loading ```json { "resources": [ "file://.kiro/steering/api-standards.md", "file://.kiro/steering/security-policy.md" ] } ``` ## Workflow 1. **Clarify Requirements** - What domain/task? - What tools needed? - What file paths? - What standards to follow? 2. **Design Configuration** - Choose appropriate pattern - Set tool restrictions - Write clear prompt - Reference steering files 3. **Create Agent File** ```bash # Create in project touch .kiro/agents/my-agent.json # Or global touch ~/.kiro/agents/my-agent.json ``` 4. **Test Agent** ```bash kiro agent use my-agent kiro "What can you help me with?" ``` ## Common Mistakes | Mistake | Problem | Fix | |---------|---------|-----| | Granting all tools | Security risk | Only grant necessary tools | | Vague prompts | Ineffective agent | Be specific about domain and standards | | No path restrictions | Agent can modify any file | Use `allowedPaths` for `fs_write` | | Generic names | Hard to find/remember | Use descriptive names: `react-component-creator` | | Missing description | Unclear purpose | Add one-sentence description | | Multiple domains | Unfocused agent | Create separate specialized agents | ## Best Practices ### Naming - Use **kebab-case**: `backend-specialist`, not `BackendSpecialist` - Be **specific**: `react-testing-expert`, not `helper` - Indicate **domain**: `aws-infrastructure`, `mobile-ui-designer` ### Prompts 1. Define expertise area clearly 2. List specific focus areas 3. Specify standards/conventions 4. Provide pattern examples 5. Set clear expectations ### Security 1. Grant minimum necessary tools 2. Restrict file paths with `allowedPaths` 3. Whitelist commands with `allowedCommands` 4. Use `allowedTools` for safe operations 5. Validate all configurations ## Troubleshooting ### Agent Not Found - Check file is in `.kiro/agents/` - Verify `.json` extension - Validate JSON syntax (use JSON validator) ### Tools Not Working - Verify tool names (check spelling) - Check `allowedPaths` restrictions - Ensure MCP servers are installed - Review `allowedTools` list ### Prompt Ineffective - Be more specific about tasks - Add concrete examples - Reference team standards - Structure with markdown headers ## Integration with PRPM ```bash # Install Kiro agent from registry prpm install @username/agent-name --as kiro --subtype agent # Publish your agent prpm init my-agent --subtype agent # Edit canonical format, then: prpm publish ``` ## Real-World Impact **Effective agents:** - Save time on repetitive tasks - Enforce team standards automatically - Reduce context switching - Provide consistent code quality - Enable workflow automation **Example**: A `test-writer` agent that only writes to test files prevents accidental modification of source code while ensuring comprehensive test coverage. --- **Key Takeaway**: Specialize agents for specific domains, restrict tools to minimum necessary, and write clear prompts with concrete standards.