532 lines
12 KiB
Markdown
532 lines
12 KiB
Markdown
---
|
|
name: nav-skill-creator
|
|
description: Analyze codebase patterns and create custom skills for repetitive workflows. Use when project needs automation or pattern enforcement. Auto-invoke when user says "create a skill for...", "automate this workflow", or "we keep doing X manually".
|
|
allowed-tools: Read, Write, Edit, Grep, Glob, Bash, Task
|
|
version: 1.0.0
|
|
---
|
|
|
|
# Navigator Skill Creator
|
|
|
|
Create project-specific skills by analyzing codebase patterns and automating repetitive workflows.
|
|
|
|
## When to Invoke
|
|
|
|
Auto-invoke when user mentions:
|
|
- "Create a skill for [pattern]"
|
|
- "Automate this workflow"
|
|
- "We keep doing X manually"
|
|
- "Enforce this pattern"
|
|
- "Generate boilerplate for [feature type]"
|
|
- "We need consistency for [task type]"
|
|
|
|
## What This Does
|
|
|
|
1. Analyzes codebase to understand project patterns
|
|
2. Identifies best practices from existing code
|
|
3. Generates skill with:
|
|
- Auto-invocation triggers
|
|
- Predefined functions
|
|
- Templates
|
|
- Examples
|
|
4. Tests the generated skill
|
|
5. Documents the new skill
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1: Understand Skill Request
|
|
|
|
Ask clarifying questions:
|
|
- What pattern/workflow to automate?
|
|
- What triggers should invoke this skill?
|
|
- What output format is expected?
|
|
- Are there existing examples in the codebase?
|
|
|
|
**Example dialogue**:
|
|
```
|
|
User: "Create a skill for adding React components"
|
|
Assistant: "I'll analyze your codebase to understand React component patterns.
|
|
- What directory are components in?
|
|
- Do you use TypeScript or JavaScript?
|
|
- Do you want tests generated automatically?
|
|
- Are there style files (CSS/SCSS) per component?"
|
|
```
|
|
|
|
### Step 2: Analyze Codebase Patterns
|
|
|
|
**Use Task agent to explore** (saves 60-80% tokens):
|
|
```
|
|
Use Task agent with subagent_type=Explore:
|
|
"Find existing [pattern type] in codebase:
|
|
- Locate all [files matching pattern]
|
|
- Identify common structure
|
|
- Extract best practices
|
|
- Find configuration files
|
|
- Return summary of findings"
|
|
```
|
|
|
|
**What to look for**:
|
|
- File naming conventions (kebab-case, PascalCase, etc.)
|
|
- Directory structure patterns
|
|
- Import/export patterns
|
|
- Testing patterns
|
|
- Configuration patterns
|
|
- Documentation patterns
|
|
|
|
**Example for React components**:
|
|
```
|
|
Task agent finds:
|
|
- Components in src/components/
|
|
- PascalCase naming (UserProfile.tsx)
|
|
- Co-located tests (UserProfile.test.tsx)
|
|
- Props interfaces defined above component
|
|
- Export default at bottom
|
|
```
|
|
|
|
### Step 3: Design Skill Structure
|
|
|
|
**Determine skill metadata**:
|
|
```yaml
|
|
name: [project]-[pattern-type]
|
|
description: [When to auto-invoke + what it does]
|
|
allowed-tools: [Read, Write, Edit, Grep, Glob, Bash, Task]
|
|
version: 1.0.0
|
|
```
|
|
|
|
**Plan directory structure**:
|
|
```
|
|
skills/[skill-name]/
|
|
├── SKILL.md # Main instructions
|
|
├── functions/ # Python helper scripts
|
|
│ └── [generator].py
|
|
├── examples/ # Reference implementations
|
|
│ └── [example].[ext]
|
|
└── templates/ # Output format templates
|
|
└── [template].[ext]
|
|
```
|
|
|
|
**Design predefined functions**:
|
|
- What repetitive logic can be automated?
|
|
- What validation should be enforced?
|
|
- What formatting ensures consistency?
|
|
|
|
**Example functions for frontend-component skill**:
|
|
- `component_generator.py` - Generate component boilerplate
|
|
- `test_generator.py` - Generate test file
|
|
- `style_generator.py` - Generate style file
|
|
- `name_validator.py` - Validate component naming
|
|
|
|
### Step 4: Generate Skill Files
|
|
|
|
**4.1 Create SKILL.md**
|
|
|
|
```markdown
|
|
---
|
|
name: [skill-name]
|
|
description: [Auto-invocation triggers + purpose]
|
|
allowed-tools: [List of tools]
|
|
version: 1.0.0
|
|
---
|
|
|
|
# [Skill Title]
|
|
|
|
[Brief description of what this skill does]
|
|
|
|
## When to Invoke
|
|
|
|
Auto-invoke when user says:
|
|
- "[trigger phrase 1]"
|
|
- "[trigger phrase 2]"
|
|
- "[trigger phrase 3]"
|
|
|
|
## What This Does
|
|
|
|
1. [Step 1 overview]
|
|
2. [Step 2 overview]
|
|
3. [Step 3 overview]
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1: [Step Name]
|
|
|
|
[Detailed instructions for this step]
|
|
|
|
**Use predefined function**: `functions/[function-name].py`
|
|
```
|
|
|
|
**4.2 Create Predefined Functions**
|
|
|
|
```python
|
|
# functions/[generator].py
|
|
|
|
def generate_[output](name, config):
|
|
"""
|
|
Generate [output type] based on project patterns.
|
|
|
|
Args:
|
|
name: [Description]
|
|
config: [Description]
|
|
|
|
Returns:
|
|
[output]: [Description]
|
|
"""
|
|
# Implementation based on codebase analysis
|
|
pass
|
|
```
|
|
|
|
**4.3 Create Examples**
|
|
|
|
```
|
|
examples/
|
|
└── [reference-implementation].[ext]
|
|
- Real example from codebase (best practice)
|
|
- Shows expected structure
|
|
- Demonstrates conventions
|
|
```
|
|
|
|
**4.4 Create Templates**
|
|
|
|
```
|
|
templates/
|
|
└── [output-template].[ext]
|
|
- Skeleton structure with placeholders
|
|
- ${VAR_NAME} for substitution
|
|
- Comments explaining sections
|
|
```
|
|
|
|
### Step 5: Test Generated Skill
|
|
|
|
**5.1 Verify skill loads**:
|
|
```bash
|
|
# In project root
|
|
grep -r "name: [skill-name]" skills/
|
|
```
|
|
|
|
**5.2 Test auto-invocation**:
|
|
```
|
|
In Claude Code conversation:
|
|
"[Use one of the auto-invoke trigger phrases]"
|
|
|
|
Expected: Skill should be detected and loaded
|
|
```
|
|
|
|
**5.3 Test execution**:
|
|
- Run through skill steps
|
|
- Verify functions work correctly
|
|
- Check output matches template
|
|
- Validate generated code follows patterns
|
|
|
|
**5.4 Iterate if needed**:
|
|
- Fix function bugs
|
|
- Improve templates
|
|
- Add missing examples
|
|
- Clarify instructions
|
|
|
|
### Step 6: Document New Skill
|
|
|
|
**Update project documentation**:
|
|
|
|
1. **CLAUDE.md** - Add to skills section:
|
|
```markdown
|
|
#### [Skill Name]
|
|
**Auto-invoke**: "[trigger phrase]"
|
|
**Purpose**: [What it does]
|
|
**Generates**: [Output type]
|
|
```
|
|
|
|
2. **README.md** - Add to skills list:
|
|
```markdown
|
|
- **[skill-name]**: [Brief description]
|
|
```
|
|
|
|
3. **.agent/system/plugin-patterns.md** - Add to skill registry:
|
|
```markdown
|
|
### [Skill Name]
|
|
**Created**: [Date]
|
|
**Pattern**: [What pattern it enforces]
|
|
**Functions**: [List of predefined functions]
|
|
```
|
|
|
|
**Register in plugin.json** (if applicable):
|
|
```json
|
|
{
|
|
"skills": [
|
|
{
|
|
"name": "[skill-name]",
|
|
"path": "skills/[skill-name]/SKILL.md"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Example Workflows
|
|
|
|
### Example 1: Create Skill for Adding API Endpoints
|
|
|
|
**User**: "Create a skill for adding REST API endpoints"
|
|
|
|
**Execution**:
|
|
|
|
1. **Clarify**:
|
|
- Which framework? (Express, Fastify, etc.)
|
|
- Where are routes defined?
|
|
- Authentication required?
|
|
- Testing strategy?
|
|
|
|
2. **Analyze** (via Task agent):
|
|
```
|
|
Find existing API endpoints:
|
|
- Routes in api/routes/
|
|
- Controllers in api/controllers/
|
|
- Middleware in api/middleware/
|
|
- Tests in tests/api/
|
|
```
|
|
|
|
3. **Design**:
|
|
```yaml
|
|
name: backend-api-endpoint
|
|
description: Add new REST API endpoint following project conventions. Use when user says "add endpoint", "create API", or "new route".
|
|
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
|
|
```
|
|
|
|
4. **Generate**:
|
|
```
|
|
skills/backend-api-endpoint/
|
|
├── SKILL.md
|
|
├── functions/
|
|
│ ├── endpoint_generator.py
|
|
│ └── route_validator.py
|
|
├── examples/
|
|
│ └── user-endpoint.ts
|
|
└── templates/
|
|
├── route-template.ts
|
|
└── test-template.spec.ts
|
|
```
|
|
|
|
5. **Test**:
|
|
```
|
|
User: "Add a POST /posts endpoint"
|
|
Skill: Auto-invoked, generates route + controller + test
|
|
Verify: Files follow project conventions
|
|
```
|
|
|
|
6. **Document**: Update CLAUDE.md, README.md, plugin-patterns.md
|
|
|
|
### Example 2: Create Skill for React Components
|
|
|
|
**User**: "Automate creating new React components"
|
|
|
|
**Execution**:
|
|
|
|
1. **Clarify**:
|
|
- TypeScript or JavaScript?
|
|
- Functional or class components?
|
|
- Style approach? (CSS modules, styled-components, etc.)
|
|
- Test library? (Jest, React Testing Library, etc.)
|
|
|
|
2. **Analyze** (via Task agent):
|
|
```
|
|
Find React components:
|
|
- Components in src/components/
|
|
- PascalCase naming
|
|
- TypeScript (.tsx)
|
|
- CSS modules (.module.css)
|
|
- Tests with RTL
|
|
```
|
|
|
|
3. **Design**:
|
|
```yaml
|
|
name: frontend-component
|
|
description: Create new React component with TypeScript, styles, and tests. Use when user says "create component", "add component", or "new React component".
|
|
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
|
|
```
|
|
|
|
4. **Generate**:
|
|
```
|
|
skills/frontend-component/
|
|
├── SKILL.md
|
|
├── functions/
|
|
│ ├── component_generator.py
|
|
│ ├── test_generator.py
|
|
│ └── style_generator.py
|
|
├── examples/
|
|
│ ├── Button.tsx
|
|
│ └── Button.test.tsx
|
|
└── templates/
|
|
├── component-template.tsx
|
|
├── test-template.test.tsx
|
|
└── style-template.module.css
|
|
```
|
|
|
|
5. **Test**:
|
|
```
|
|
User: "Create a UserProfile component"
|
|
Skill: Auto-invoked, generates component + test + styles
|
|
Verify: Props interface, exports, naming correct
|
|
```
|
|
|
|
6. **Document**: Update project docs
|
|
|
|
---
|
|
|
|
## Output Format
|
|
|
|
**After generating skill, show summary**:
|
|
|
|
```
|
|
✅ Skill Created: [skill-name]
|
|
|
|
Structure:
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
📁 skills/[skill-name]/
|
|
├── SKILL.md
|
|
├── functions/
|
|
│ └── [N functions created]
|
|
├── examples/
|
|
│ └── [N examples added]
|
|
└── templates/
|
|
└── [N templates created]
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
Auto-Invocation Triggers:
|
|
- "[trigger 1]"
|
|
- "[trigger 2]"
|
|
- "[trigger 3]"
|
|
|
|
Next Steps:
|
|
1. Test the skill: "[example trigger phrase]"
|
|
2. Iterate if needed
|
|
3. Documentation updated
|
|
|
|
Try it now: "[example usage]"
|
|
```
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### Pattern Analysis
|
|
- Use Task agent for codebase exploration (saves 60-80% tokens)
|
|
- Look at 3-5 examples minimum (find patterns vs outliers)
|
|
- Identify conventions explicitly followed
|
|
- Note edge cases in comments
|
|
|
|
### Skill Design
|
|
- Keep skills focused (one pattern per skill)
|
|
- Clear auto-invocation triggers (3-5 phrases)
|
|
- Minimal tools needed (add only what's required)
|
|
- Progressive disclosure (details in functions, not main instructions)
|
|
|
|
### Function Creation
|
|
- One function = one responsibility
|
|
- Type hints and docstrings required
|
|
- Handle errors gracefully
|
|
- Return structured data (not print statements)
|
|
|
|
### Template Design
|
|
- Use clear placeholders (${VAR_NAME})
|
|
- Include comments explaining sections
|
|
- Follow project style guide
|
|
- Provide sensible defaults
|
|
|
|
### Testing
|
|
- Test with real project context
|
|
- Verify auto-invocation works
|
|
- Check output against best practices
|
|
- Iterate based on actual usage
|
|
|
|
---
|
|
|
|
## Common Patterns to Automate
|
|
|
|
### Backend Patterns
|
|
- REST API endpoints
|
|
- GraphQL resolvers
|
|
- Database migrations
|
|
- Background jobs
|
|
- Middleware functions
|
|
- Authentication guards
|
|
|
|
### Frontend Patterns
|
|
- React/Vue/Svelte components
|
|
- Redux/Vuex store modules
|
|
- API client functions
|
|
- Form validation schemas
|
|
- Route definitions
|
|
- Style component creation
|
|
|
|
### Infrastructure Patterns
|
|
- Docker service configs
|
|
- CI/CD pipeline steps
|
|
- Deployment scripts
|
|
- Environment configs
|
|
- Monitoring setup
|
|
|
|
### Documentation Patterns
|
|
- API documentation
|
|
- Component documentation
|
|
- Architecture decision records (ADRs)
|
|
- Runbook entries
|
|
- Changelog entries
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Skill Not Auto-Invoking
|
|
|
|
**Problem**: Skill created but doesn't trigger automatically
|
|
|
|
**Solutions**:
|
|
1. Check description has clear trigger phrases
|
|
2. Verify `plugin.json` includes skill registration
|
|
3. Reload Claude Code to refresh skill index
|
|
4. Test with exact trigger phrase from description
|
|
|
|
### Functions Not Executing
|
|
|
|
**Problem**: Predefined functions throw errors
|
|
|
|
**Solutions**:
|
|
1. Check Python syntax is valid
|
|
2. Verify function imports are correct
|
|
3. Test function independently first
|
|
4. Check error messages in execution logs
|
|
|
|
### Templates Not Matching Output
|
|
|
|
**Problem**: Generated code doesn't match project conventions
|
|
|
|
**Solutions**:
|
|
1. Re-analyze codebase for missed patterns
|
|
2. Update templates with correct structure
|
|
3. Add more examples showing variations
|
|
4. Validate against linter/formatter
|
|
|
|
### Skill Too Broad
|
|
|
|
**Problem**: Skill tries to do too much
|
|
|
|
**Solutions**:
|
|
1. Split into multiple focused skills
|
|
2. Remove optional features to separate skills
|
|
3. Keep core pattern simple
|
|
4. Add extensions as separate skills
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
**This skill succeeds when**:
|
|
- [ ] New skill auto-invokes correctly
|
|
- [ ] Generated output follows project conventions
|
|
- [ ] Functions execute without errors
|
|
- [ ] Templates produce valid code
|
|
- [ ] Examples are clear and relevant
|
|
- [ ] Documentation is updated
|
|
- [ ] Skill saves time vs manual work
|
|
|
|
---
|
|
|
|
**The skill-creator is Navigator's self-improving engine - it learns your patterns and automates them** 🔄 |