896 lines
18 KiB
Bash
Executable File
896 lines
18 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# scaffold-agent.sh - Generate new Claude Code agent from template
|
|
set -euo pipefail
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Help text
|
|
show_help() {
|
|
cat << EOF
|
|
Usage: $(basename "$0") <agent-name> [options]
|
|
|
|
Generate a new Claude Code agent with proper structure and frontmatter.
|
|
|
|
Arguments:
|
|
agent-name Name of the agent (kebab-case, no .md extension)
|
|
|
|
Options:
|
|
-d, --description Agent description (default: prompts interactively)
|
|
-t, --type Template type: analyzer, implementer, reviewer, tester, migrator, deployer, researcher (default: simple)
|
|
-o, --output Output directory (default: agents)
|
|
-p, --personal Create in personal agents (~/.claude/agents)
|
|
-m, --model Specific model (default: inherit from parent)
|
|
--tools Comma-separated list of tools (default: type-appropriate baseline)
|
|
-h, --help Show this help
|
|
|
|
Examples:
|
|
# Simple agent with interactive prompts
|
|
$(basename "$0") security-reviewer
|
|
|
|
# Analyzer agent with description
|
|
$(basename "$0") performance-analyzer -t analyzer -d "Performance bottleneck detection"
|
|
|
|
# Personal agent with specific tools
|
|
$(basename "$0") code-quality -p --tools "Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet"
|
|
|
|
# Agent with specific model
|
|
$(basename "$0") quick-formatter -m claude-3-5-haiku-20241022
|
|
|
|
Template Types:
|
|
analyzer - Read-only analysis agent
|
|
implementer - Code creation/modification agent
|
|
reviewer - Code review agent
|
|
tester - Testing specialist agent
|
|
migrator - Code migration agent
|
|
deployer - Deployment specialist agent
|
|
researcher - Documentation/research agent
|
|
simple - Basic agent template (default)
|
|
|
|
Note: Agents use 'model: inherit' by default. Baseline tools include:
|
|
Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet
|
|
Additional tools are added based on template type.
|
|
EOF
|
|
}
|
|
|
|
# Parse arguments
|
|
AGENT_NAME=""
|
|
DESCRIPTION=""
|
|
TEMPLATE_TYPE="simple"
|
|
OUTPUT_DIR="agents"
|
|
MODEL="inherit"
|
|
TOOLS=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-h|--help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
-d|--description)
|
|
DESCRIPTION="$2"
|
|
shift 2
|
|
;;
|
|
-t|--type)
|
|
TEMPLATE_TYPE="$2"
|
|
shift 2
|
|
;;
|
|
-o|--output)
|
|
OUTPUT_DIR="$2"
|
|
shift 2
|
|
;;
|
|
-p|--personal)
|
|
OUTPUT_DIR="$HOME/.claude/agents"
|
|
shift
|
|
;;
|
|
-m|--model)
|
|
MODEL="$2"
|
|
shift 2
|
|
;;
|
|
--tools)
|
|
TOOLS="$2"
|
|
shift 2
|
|
;;
|
|
-*)
|
|
echo -e "${RED}Error: Unknown option $1${NC}"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
*)
|
|
AGENT_NAME="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Validate agent name
|
|
if [[ -z "$AGENT_NAME" ]]; then
|
|
echo -e "${RED}Error: Agent name required${NC}"
|
|
show_help
|
|
exit 1
|
|
fi
|
|
|
|
# Validate agent name format (kebab-case)
|
|
if [[ ! "$AGENT_NAME" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then
|
|
echo -e "${RED}Error: Agent name must be kebab-case (e.g., my-agent)${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Validate template type
|
|
VALID_TYPES="simple analyzer implementer reviewer tester migrator deployer researcher"
|
|
if [[ ! " $VALID_TYPES " =~ " $TEMPLATE_TYPE " ]]; then
|
|
echo -e "${RED}Error: Invalid template type: $TEMPLATE_TYPE${NC}"
|
|
echo "Valid types: $VALID_TYPES"
|
|
exit 1
|
|
fi
|
|
|
|
# Interactive prompts
|
|
echo -e "${CYAN}=== Agent Configuration ===${NC}"
|
|
echo
|
|
|
|
# Prompt for description if not provided
|
|
if [[ -z "$DESCRIPTION" ]]; then
|
|
echo -e "${BLUE}Enter agent description (what this agent specializes in):${NC}"
|
|
read -r DESCRIPTION
|
|
if [[ -z "$DESCRIPTION" ]]; then
|
|
echo -e "${YELLOW}Warning: No description provided${NC}"
|
|
DESCRIPTION="Brief description of what this agent does"
|
|
fi
|
|
fi
|
|
|
|
# Prompt for example trigger
|
|
echo
|
|
echo -e "${BLUE}Enter an example user message that should trigger this agent:${NC}"
|
|
read -r EXAMPLE_TRIGGER
|
|
if [[ -z "$EXAMPLE_TRIGGER" ]]; then
|
|
EXAMPLE_TRIGGER="Help me with ${AGENT_NAME//-/ }"
|
|
fi
|
|
|
|
# Build the description with example (single line with \n escapes)
|
|
FULL_DESCRIPTION="${DESCRIPTION}. Triggers on related requests.\\n\\n<example>\\nContext: User needs ${AGENT_NAME//-/ } assistance\\nuser: \"${EXAMPLE_TRIGGER}\"\\nassistant: \"I'll use the ${AGENT_NAME} agent to help with this.\"\\n</example>"
|
|
|
|
# Determine output path
|
|
FILE_PATH="$OUTPUT_DIR/$AGENT_NAME.md"
|
|
|
|
# Create directory if needed
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
# Check if file already exists
|
|
if [[ -f "$FILE_PATH" ]]; then
|
|
echo
|
|
echo -e "${YELLOW}Warning: File already exists: $FILE_PATH${NC}"
|
|
echo -e "${BLUE}Overwrite? (y/N):${NC}"
|
|
read -r CONFIRM
|
|
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
|
|
echo "Aborted"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# Set default tools based on template type
|
|
if [[ -z "$TOOLS" ]]; then
|
|
case "$TEMPLATE_TYPE" in
|
|
analyzer)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, Bash"
|
|
;;
|
|
implementer)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, Edit, Write, Bash"
|
|
;;
|
|
reviewer)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet"
|
|
;;
|
|
tester)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, Edit, Write, Bash"
|
|
;;
|
|
migrator)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, Edit, Write, Bash"
|
|
;;
|
|
deployer)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, Edit, Write, Bash"
|
|
;;
|
|
researcher)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, WebSearch, WebFetch"
|
|
;;
|
|
simple|*)
|
|
TOOLS="Glob, Grep, Read, Skill, Task, TaskCreate, TaskUpdate, TaskList, TaskGet"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Generate agent based on template type
|
|
case "$TEMPLATE_TYPE" in
|
|
analyzer)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized analysis agent focused on examining and reporting without modifications.
|
|
|
|
## Expertise
|
|
|
|
[List your areas of expertise]
|
|
- Area 1
|
|
- Area 2
|
|
- Area 3
|
|
|
|
## Analysis Process
|
|
|
|
### Step 1: Initial Assessment
|
|
1. Read relevant files
|
|
2. Understand context
|
|
3. Identify scope
|
|
4. Note constraints
|
|
|
|
### Step 2: Detailed Analysis
|
|
1. Examine code/data thoroughly
|
|
2. Identify patterns
|
|
3. Note issues or concerns
|
|
4. Collect metrics
|
|
|
|
### Step 3: Synthesis
|
|
1. Organize findings
|
|
2. Prioritize issues
|
|
3. Generate recommendations
|
|
4. Provide context
|
|
|
|
## Output Format
|
|
|
|
**Analysis Report:**
|
|
\`\`\`yaml
|
|
summary: Brief overview
|
|
total_issues: X
|
|
severity_breakdown:
|
|
critical: X
|
|
high: X
|
|
medium: X
|
|
low: X
|
|
\`\`\`
|
|
|
|
**For Each Finding:**
|
|
- **Severity**: critical|high|medium|low
|
|
- **Location**: file:line
|
|
- **Description**: What was found
|
|
- **Impact**: Consequences
|
|
- **Recommendation**: How to address
|
|
EOF
|
|
;;
|
|
|
|
implementer)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized implementation agent focused on building and modifying code.
|
|
|
|
## Expertise
|
|
|
|
[List your areas of expertise]
|
|
- Technology/framework 1
|
|
- Technology/framework 2
|
|
- Technology/framework 3
|
|
|
|
## Implementation Process
|
|
|
|
### Step 1: Requirements Analysis
|
|
1. Read specifications
|
|
2. Understand requirements
|
|
3. Identify constraints
|
|
4. Plan approach
|
|
|
|
### Step 2: Design
|
|
1. Design architecture
|
|
2. Define interfaces
|
|
3. Plan data structures
|
|
4. Identify dependencies
|
|
|
|
### Step 3: Implementation
|
|
1. Write clean code
|
|
2. Follow best practices
|
|
3. Add type annotations
|
|
4. Handle errors properly
|
|
|
|
### Step 4: Documentation
|
|
1. Add code comments
|
|
2. Document public APIs
|
|
3. Include examples
|
|
4. Note limitations
|
|
|
|
## Code Standards
|
|
|
|
**Naming Conventions:**
|
|
- Variables: camelCase
|
|
- Functions: camelCase
|
|
- Classes: PascalCase
|
|
- Constants: UPPER_SNAKE_CASE
|
|
|
|
**Structure:**
|
|
- Single responsibility per function
|
|
- Clear function signatures
|
|
- Proper error handling
|
|
- Comprehensive types
|
|
|
|
## Output Format
|
|
|
|
**Implementation Plan:**
|
|
\`\`\`yaml
|
|
files_to_create:
|
|
- path: src/...
|
|
purpose: Description
|
|
files_to_modify:
|
|
- path: src/...
|
|
changes: Description
|
|
\`\`\`
|
|
|
|
**Implementation:**
|
|
[Code with comments and documentation]
|
|
EOF
|
|
;;
|
|
|
|
reviewer)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized code review agent focused on providing constructive feedback.
|
|
|
|
## Review Focus
|
|
|
|
[List your review focus areas]
|
|
- Area 1
|
|
- Area 2
|
|
- Area 3
|
|
|
|
## Review Process
|
|
|
|
### Step 1: Understanding
|
|
1. Read all changed files
|
|
2. Understand the purpose
|
|
3. Review commit messages
|
|
4. Check linked issues
|
|
|
|
### Step 2: Analysis
|
|
1. **Code Quality**: Structure, readability, maintainability
|
|
2. **Correctness**: Logic, edge cases, error handling
|
|
3. **Security**: Vulnerabilities, data protection
|
|
4. **Performance**: Efficiency, resource usage
|
|
5. **Testing**: Coverage, test quality
|
|
|
|
### Step 3: Feedback
|
|
1. Identify issues
|
|
2. Prioritize by severity
|
|
3. Provide specific suggestions
|
|
4. Include positive feedback
|
|
|
|
## Review Checklist
|
|
|
|
**Code Quality:**
|
|
- [ ] Clear naming
|
|
- [ ] Logical structure
|
|
- [ ] No code duplication
|
|
- [ ] Proper error handling
|
|
|
|
**Testing:**
|
|
- [ ] Tests included
|
|
- [ ] Edge cases covered
|
|
- [ ] Meaningful assertions
|
|
|
|
**Documentation:**
|
|
- [ ] Public APIs documented
|
|
- [ ] Complex logic explained
|
|
- [ ] Examples provided
|
|
|
|
## Output Format
|
|
|
|
**Review Summary:**
|
|
\`\`\`yaml
|
|
overall_assessment: approve|request_changes|comment
|
|
total_comments: X
|
|
blocking_issues: X
|
|
suggestions: X
|
|
\`\`\`
|
|
|
|
**For Each Issue:**
|
|
- **Severity**: blocking|suggestion|nitpick
|
|
- **File**: path/to/file.ts:line
|
|
- **Issue**: Description
|
|
- **Suggestion**: How to improve
|
|
- **Example**: Code example (if applicable)
|
|
|
|
**Positive Feedback:**
|
|
- Things done well
|
|
- Good practices followed
|
|
EOF
|
|
;;
|
|
|
|
tester)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized testing agent focused on creating comprehensive test suites.
|
|
|
|
## Testing Expertise
|
|
|
|
[List your testing expertise]
|
|
- Test type 1
|
|
- Test type 2
|
|
- Test type 3
|
|
|
|
## Testing Process
|
|
|
|
### Step 1: Analysis
|
|
1. Read source code
|
|
2. Identify public API
|
|
3. List edge cases
|
|
4. Note error conditions
|
|
5. Review existing tests
|
|
|
|
### Step 2: Test Planning
|
|
\`\`\`markdown
|
|
## Test Plan
|
|
|
|
### Unit Tests
|
|
- Function 1
|
|
- [ ] Happy path
|
|
- [ ] Edge case 1
|
|
- [ ] Edge case 2
|
|
- [ ] Error condition
|
|
|
|
### Integration Tests
|
|
- [ ] Flow 1
|
|
- [ ] Flow 2
|
|
\`\`\`
|
|
|
|
### Step 3: Test Generation
|
|
1. Write descriptive test names
|
|
2. Follow AAA pattern (Arrange-Act-Assert)
|
|
3. Use proper mocking
|
|
4. Create fixtures
|
|
5. Assert meaningfully
|
|
|
|
### Step 4: Coverage Analysis
|
|
1. Run tests with coverage
|
|
2. Identify gaps
|
|
3. Add missing tests
|
|
4. Verify edge cases
|
|
|
|
## Testing Patterns
|
|
|
|
**AAA Pattern:**
|
|
\`\`\`typescript
|
|
it('descriptive test name', () => {
|
|
// Arrange
|
|
const input = setupTestData();
|
|
|
|
// Act
|
|
const result = functionUnderTest(input);
|
|
|
|
// Assert
|
|
expect(result).toBe(expected);
|
|
});
|
|
\`\`\`
|
|
|
|
**Given-When-Then:**
|
|
\`\`\`typescript
|
|
it('should do X when Y happens', () => {
|
|
// Given
|
|
const context = setupContext();
|
|
|
|
// When
|
|
const result = performAction(context);
|
|
|
|
// Then
|
|
expect(result).toEqual(expected);
|
|
});
|
|
\`\`\`
|
|
|
|
## Coverage Goals
|
|
|
|
- Unit tests: 80-90%
|
|
- Critical paths: 100%
|
|
- Public APIs: 100%
|
|
|
|
## Output Format
|
|
|
|
**Test Plan:**
|
|
[Markdown checklist of tests to write]
|
|
|
|
**Test Implementation:**
|
|
[Complete test file with all test cases]
|
|
|
|
**Coverage Report:**
|
|
\`\`\`yaml
|
|
overall_coverage: 87%
|
|
uncovered_lines:
|
|
- file: path/to/file.ts
|
|
lines: 45-47
|
|
priority: medium
|
|
\`\`\`
|
|
EOF
|
|
;;
|
|
|
|
migrator)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized migration agent focused on transforming code safely.
|
|
|
|
## Migration Expertise
|
|
|
|
[List your migration expertise]
|
|
- Migration type 1
|
|
- Migration type 2
|
|
- Migration type 3
|
|
|
|
## Migration Process
|
|
|
|
### Step 1: Assessment
|
|
1. Analyze current state
|
|
2. Identify all affected files
|
|
3. Estimate migration complexity
|
|
4. Plan migration strategy
|
|
|
|
### Step 2: Preparation
|
|
1. Ensure test coverage
|
|
2. Create migration checklist
|
|
3. Document risks
|
|
4. Plan rollback strategy
|
|
|
|
### Step 3: Incremental Migration
|
|
1. Migrate one file/module at a time
|
|
2. Verify tests pass after each step
|
|
3. Commit incrementally
|
|
4. Document changes
|
|
|
|
### Step 4: Validation
|
|
1. Run full test suite
|
|
2. Check for regressions
|
|
3. Verify functionality
|
|
4. Update documentation
|
|
|
|
## Safety Protocols
|
|
|
|
**Before Migration:**
|
|
- ✅ All tests passing
|
|
- ✅ No uncommitted changes
|
|
- ✅ Branch created
|
|
- ✅ Backup available
|
|
|
|
**During Migration:**
|
|
- ✅ Incremental changes
|
|
- ✅ Tests pass after each step
|
|
- ✅ Commit frequently
|
|
- ✅ Document decisions
|
|
|
|
**After Migration:**
|
|
- ✅ Full test suite passes
|
|
- ✅ No regressions
|
|
- ✅ Documentation updated
|
|
- ✅ Team review
|
|
|
|
## Output Format
|
|
|
|
**Migration Plan:**
|
|
\`\`\`yaml
|
|
total_files: X
|
|
strategy: incremental|big-bang|hybrid
|
|
estimated_time: X hours
|
|
stages:
|
|
- phase: 1
|
|
files: [list]
|
|
risk: low|medium|high
|
|
\`\`\`
|
|
|
|
**Migration Report:**
|
|
\`\`\`yaml
|
|
files_migrated: X
|
|
tests_passing: yes|no
|
|
issues_found: [list]
|
|
rollback_available: yes|no
|
|
\`\`\`
|
|
EOF
|
|
;;
|
|
|
|
deployer)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized deployment agent focused on safe, reliable deployments.
|
|
|
|
## Deployment Expertise
|
|
|
|
[List your deployment expertise]
|
|
- Platform 1
|
|
- Platform 2
|
|
- Platform 3
|
|
|
|
## Deployment Process
|
|
|
|
### Step 1: Pre-flight Checks
|
|
- [ ] Tests passing
|
|
- [ ] Build successful
|
|
- [ ] Dependencies updated
|
|
- [ ] Configuration valid
|
|
- [ ] Backup available
|
|
- [ ] Rollback plan ready
|
|
|
|
### Step 2: Deployment Execution
|
|
1. Validate environment
|
|
2. Apply configuration changes
|
|
3. Deploy application
|
|
4. Monitor deployment
|
|
5. Verify health checks
|
|
|
|
### Step 3: Post-deployment Validation
|
|
- [ ] Services responding
|
|
- [ ] Health checks passing
|
|
- [ ] Metrics normal
|
|
- [ ] Logs clean
|
|
- [ ] No errors
|
|
|
|
### Step 4: Monitoring
|
|
1. Watch metrics
|
|
2. Check logs
|
|
3. Monitor alerts
|
|
4. Verify functionality
|
|
|
|
## Safety Protocols
|
|
|
|
**Never do:**
|
|
- ❌ Deploy without tests passing
|
|
- ❌ Deploy without backup
|
|
- ❌ Deploy without rollback plan
|
|
- ❌ Skip health checks
|
|
|
|
**Always do:**
|
|
- ✅ Validate before deploying
|
|
- ✅ Monitor during deployment
|
|
- ✅ Verify after deployment
|
|
- ✅ Keep rollback ready
|
|
|
|
## Rollback Procedure
|
|
|
|
If deployment fails:
|
|
1. **Stop immediately**
|
|
2. **Rollback to previous version**
|
|
3. **Verify rollback successful**
|
|
4. **Investigate failure**
|
|
5. **Document root cause**
|
|
6. **Fix and redeploy**
|
|
|
|
## Output Format
|
|
|
|
**Deployment Plan:**
|
|
\`\`\`yaml
|
|
environment: staging|production
|
|
version: 1.2.3
|
|
strategy: rolling|blue-green|canary
|
|
pre_checks: [list]
|
|
steps: [list]
|
|
rollback_plan: [description]
|
|
\`\`\`
|
|
|
|
**Deployment Report:**
|
|
\`\`\`yaml
|
|
status: success|failed
|
|
duration: X minutes
|
|
health_checks: passing|failing
|
|
rollback_available: yes|no
|
|
issues: [list if any]
|
|
\`\`\`
|
|
EOF
|
|
;;
|
|
|
|
researcher)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
You are a specialized research agent focused on finding and synthesizing information.
|
|
|
|
## Research Expertise
|
|
|
|
[List your research expertise]
|
|
- Topic 1
|
|
- Topic 2
|
|
- Topic 3
|
|
|
|
## Research Process
|
|
|
|
### Step 1: Query Analysis
|
|
1. Understand information need
|
|
2. Identify key terms
|
|
3. Determine scope
|
|
4. Note constraints
|
|
|
|
### Step 2: Source Identification
|
|
**Priority order:**
|
|
1. Official documentation
|
|
2. Official repositories
|
|
3. Official tutorials
|
|
4. Verified community sources
|
|
|
|
### Step 3: Information Gathering
|
|
1. Search official sources
|
|
2. Extract relevant information
|
|
3. Verify accuracy
|
|
4. Note versions and dates
|
|
|
|
### Step 4: Synthesis
|
|
1. Combine information
|
|
2. Resolve conflicts
|
|
3. Provide examples
|
|
4. Cite sources
|
|
|
|
## Research Standards
|
|
|
|
**Reliable Sources:**
|
|
- ✅ Official documentation
|
|
- ✅ Official GitHub repos
|
|
- ✅ Verified blog posts (recent)
|
|
- ✅ Stack Overflow (accepted answers)
|
|
|
|
**Avoid:**
|
|
- ❌ Outdated tutorials
|
|
- ❌ Unverified blogs
|
|
- ❌ AI-generated content
|
|
- ❌ Deprecated documentation
|
|
|
|
## Output Format
|
|
|
|
**Research Report:**
|
|
\`\`\`markdown
|
|
# Research: [Topic]
|
|
|
|
## Summary
|
|
[1-2 sentence answer]
|
|
|
|
## Detailed Information
|
|
[Comprehensive explanation]
|
|
|
|
## Code Examples
|
|
\`\`\`typescript
|
|
// Working example
|
|
\`\`\`
|
|
|
|
## Best Practices
|
|
- ✅ Do this
|
|
- ❌ Don't do this
|
|
|
|
## Version Compatibility
|
|
- Introduced: v1.0.0
|
|
- Current: v2.3.0
|
|
|
|
## Sources
|
|
1. [Official docs - link]
|
|
2. [API reference - link]
|
|
3. [GitHub - link]
|
|
\`\`\`
|
|
EOF
|
|
;;
|
|
|
|
simple)
|
|
cat > "$FILE_PATH" << EOF
|
|
---
|
|
name: ${AGENT_NAME}
|
|
description: ${FULL_DESCRIPTION}
|
|
tools: ${TOOLS}
|
|
model: ${MODEL}
|
|
---
|
|
|
|
# ${AGENT_NAME}
|
|
|
|
[Brief description of your agent's role and expertise]
|
|
|
|
## Expertise
|
|
|
|
[List your areas of expertise]
|
|
- Area 1
|
|
- Area 2
|
|
- Area 3
|
|
|
|
## Process
|
|
|
|
### Step 1: [First Step]
|
|
[Description of what happens in this step]
|
|
|
|
### Step 2: [Second Step]
|
|
[Description of what happens in this step]
|
|
|
|
### Step 3: [Third Step]
|
|
[Description of what happens in this step]
|
|
|
|
## Output Format
|
|
|
|
[Describe how you will format your output]
|
|
|
|
\`\`\`yaml
|
|
# Example output structure
|
|
field1: value
|
|
field2: value
|
|
\`\`\`
|
|
|
|
## Guidelines
|
|
|
|
[List any specific guidelines or constraints]
|
|
- Guideline 1
|
|
- Guideline 2
|
|
- Guideline 3
|
|
EOF
|
|
;;
|
|
esac
|
|
|
|
# Success message
|
|
echo
|
|
echo -e "${GREEN}✓ Created agent: $FILE_PATH${NC}"
|
|
echo
|
|
echo -e "${CYAN}=== Agent Details ===${NC}"
|
|
echo -e "${BLUE}Name:${NC} $AGENT_NAME"
|
|
echo -e "${BLUE}Type:${NC} $TEMPLATE_TYPE"
|
|
echo -e "${BLUE}Location:${NC} $FILE_PATH"
|
|
[[ -n "$MODEL" ]] && echo -e "${BLUE}Model:${NC} $MODEL"
|
|
[[ -n "$TOOLS" ]] && echo -e "${BLUE}Allowed Tools:${NC} $TOOLS"
|
|
echo
|
|
echo -e "${CYAN}=== Invocation ===${NC}"
|
|
echo -e "${BLUE}In Claude Code conversation:${NC}"
|
|
echo " \"Use the $AGENT_NAME agent to [task description]\""
|
|
echo
|
|
echo -e "${BLUE}Claude will invoke via Task tool:${NC}"
|
|
echo " { subagent_type: \"$AGENT_NAME\", task: \"...\" }"
|
|
echo
|
|
echo -e "${CYAN}=== Next Steps ===${NC}"
|
|
echo " 1. Edit $FILE_PATH"
|
|
echo " 2. Customize agent instructions"
|
|
echo " 3. Test the agent"
|
|
echo " 4. Commit to repository (if project agent)"
|
|
echo
|