claude-cli-advanced-starter-pack 1.1.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/OVERVIEW.md +5 -1
- package/README.md +241 -132
- package/bin/gtask.js +53 -0
- package/package.json +1 -1
- package/src/cli/menu.js +27 -0
- package/src/commands/explore-mcp/mcp-registry.js +99 -0
- package/src/commands/init.js +339 -351
- package/src/commands/install-panel-hook.js +108 -0
- package/src/commands/install-scripts.js +232 -0
- package/src/commands/install-skill.js +220 -0
- package/src/commands/panel.js +297 -0
- package/src/commands/setup-wizard.js +4 -3
- package/src/commands/test-setup.js +4 -5
- package/src/data/releases.json +164 -0
- package/src/panel/queue.js +188 -0
- package/templates/commands/ask-claude.template.md +118 -0
- package/templates/commands/ccasp-panel.template.md +72 -0
- package/templates/commands/ccasp-setup.template.md +470 -79
- package/templates/commands/create-smoke-test.template.md +186 -0
- package/templates/commands/project-impl.template.md +9 -113
- package/templates/commands/refactor-check.template.md +112 -0
- package/templates/commands/refactor-cleanup.template.md +144 -0
- package/templates/commands/refactor-prep.template.md +192 -0
- package/templates/docs/AI_ARCHITECTURE_CONSTITUTION.template.md +198 -0
- package/templates/docs/DETAILED_GOTCHAS.template.md +347 -0
- package/templates/docs/PHASE-DEV-CHECKLIST.template.md +241 -0
- package/templates/docs/PROGRESS_JSON_TEMPLATE.json +117 -0
- package/templates/docs/background-agent.template.md +264 -0
- package/templates/hooks/autonomous-decision-logger.template.js +207 -0
- package/templates/hooks/branch-merge-checker.template.js +272 -0
- package/templates/hooks/git-commit-tracker.template.js +267 -0
- package/templates/hooks/issue-completion-detector.template.js +205 -0
- package/templates/hooks/panel-queue-reader.template.js +83 -0
- package/templates/hooks/phase-validation-gates.template.js +307 -0
- package/templates/hooks/session-id-generator.template.js +236 -0
- package/templates/hooks/token-usage-monitor.template.js +193 -0
- package/templates/patterns/README.md +129 -0
- package/templates/patterns/l1-l2-orchestration.md +189 -0
- package/templates/patterns/multi-phase-orchestration.md +258 -0
- package/templates/patterns/two-tier-query-pipeline.md +192 -0
- package/templates/scripts/README.md +109 -0
- package/templates/scripts/analyze-delegation-log.js +299 -0
- package/templates/scripts/autonomous-decision-logger.js +277 -0
- package/templates/scripts/git-history-analyzer.py +269 -0
- package/templates/scripts/phase-validation-gates.js +307 -0
- package/templates/scripts/poll-deployment-status.js +260 -0
- package/templates/scripts/roadmap-scanner.js +263 -0
- package/templates/scripts/validate-deployment.js +293 -0
- package/templates/skills/agent-creator/skill.json +18 -0
- package/templates/skills/agent-creator/skill.md +335 -0
- package/templates/skills/hook-creator/skill.json +18 -0
- package/templates/skills/hook-creator/skill.md +318 -0
- package/templates/skills/panel/skill.json +18 -0
- package/templates/skills/panel/skill.md +90 -0
- package/templates/skills/rag-agent-creator/skill.json +18 -0
- package/templates/skills/rag-agent-creator/skill.md +307 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Validate Deployment Environment
|
|
4
|
+
*
|
|
5
|
+
* Pre-deployment validation for Railway, Cloudflare, Vercel, and other platforms.
|
|
6
|
+
* Checks environment variables, build artifacts, and configuration.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node validate-deployment.js --platform railway
|
|
10
|
+
* node validate-deployment.js --platform cloudflare --project-name my-project
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { existsSync, readFileSync } from 'fs';
|
|
14
|
+
import { resolve } from 'path';
|
|
15
|
+
|
|
16
|
+
const PLATFORMS = {
|
|
17
|
+
railway: {
|
|
18
|
+
requiredEnv: ['RAILWAY_API_TOKEN'],
|
|
19
|
+
optionalEnv: ['RAILWAY_PROJECT_ID', 'RAILWAY_ENVIRONMENT_ID', 'RAILWAY_SERVICE_ID'],
|
|
20
|
+
buildArtifacts: ['package.json', 'Dockerfile', 'requirements.txt', 'go.mod'],
|
|
21
|
+
configFiles: ['railway.json', 'railway.toml'],
|
|
22
|
+
},
|
|
23
|
+
cloudflare: {
|
|
24
|
+
requiredEnv: ['CLOUDFLARE_API_TOKEN'],
|
|
25
|
+
optionalEnv: ['CLOUDFLARE_ACCOUNT_ID'],
|
|
26
|
+
buildArtifacts: ['dist/', 'build/', 'public/', '.next/'],
|
|
27
|
+
configFiles: ['wrangler.toml', 'wrangler.json'],
|
|
28
|
+
},
|
|
29
|
+
vercel: {
|
|
30
|
+
requiredEnv: ['VERCEL_TOKEN'],
|
|
31
|
+
optionalEnv: ['VERCEL_PROJECT_ID', 'VERCEL_ORG_ID'],
|
|
32
|
+
buildArtifacts: ['dist/', 'build/', '.next/', '.vercel/'],
|
|
33
|
+
configFiles: ['vercel.json'],
|
|
34
|
+
},
|
|
35
|
+
netlify: {
|
|
36
|
+
requiredEnv: ['NETLIFY_AUTH_TOKEN'],
|
|
37
|
+
optionalEnv: ['NETLIFY_SITE_ID'],
|
|
38
|
+
buildArtifacts: ['dist/', 'build/', 'public/'],
|
|
39
|
+
configFiles: ['netlify.toml'],
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
class DeploymentValidator {
|
|
44
|
+
constructor(platform, options = {}) {
|
|
45
|
+
this.platform = platform;
|
|
46
|
+
this.options = options;
|
|
47
|
+
this.config = PLATFORMS[platform];
|
|
48
|
+
this.errors = [];
|
|
49
|
+
this.warnings = [];
|
|
50
|
+
this.checks = [];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async validate() {
|
|
54
|
+
console.log(`\n🔍 Validating ${this.platform} deployment...\n`);
|
|
55
|
+
|
|
56
|
+
await this.checkEnvironmentVariables();
|
|
57
|
+
await this.checkBuildArtifacts();
|
|
58
|
+
await this.checkConfigFiles();
|
|
59
|
+
await this.checkGitStatus();
|
|
60
|
+
await this.platformSpecificChecks();
|
|
61
|
+
|
|
62
|
+
this.printReport();
|
|
63
|
+
return this.errors.length === 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async checkEnvironmentVariables() {
|
|
67
|
+
console.log('📋 Checking environment variables...');
|
|
68
|
+
|
|
69
|
+
for (const envVar of this.config.requiredEnv) {
|
|
70
|
+
if (process.env[envVar]) {
|
|
71
|
+
this.checks.push({ name: envVar, status: 'pass', message: 'Set' });
|
|
72
|
+
} else {
|
|
73
|
+
this.errors.push(`Missing required: ${envVar}`);
|
|
74
|
+
this.checks.push({ name: envVar, status: 'fail', message: 'Missing' });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
for (const envVar of this.config.optionalEnv) {
|
|
79
|
+
if (process.env[envVar]) {
|
|
80
|
+
this.checks.push({ name: envVar, status: 'pass', message: 'Set (optional)' });
|
|
81
|
+
} else {
|
|
82
|
+
this.warnings.push(`Optional not set: ${envVar}`);
|
|
83
|
+
this.checks.push({ name: envVar, status: 'warn', message: 'Not set (optional)' });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async checkBuildArtifacts() {
|
|
89
|
+
console.log('📦 Checking build artifacts...');
|
|
90
|
+
|
|
91
|
+
let foundArtifact = false;
|
|
92
|
+
for (const artifact of this.config.buildArtifacts) {
|
|
93
|
+
const path = resolve(process.cwd(), artifact);
|
|
94
|
+
if (existsSync(path)) {
|
|
95
|
+
foundArtifact = true;
|
|
96
|
+
this.checks.push({ name: artifact, status: 'pass', message: 'Found' });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (!foundArtifact) {
|
|
101
|
+
this.warnings.push('No build artifacts found. Run build command first.');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async checkConfigFiles() {
|
|
106
|
+
console.log('⚙️ Checking configuration files...');
|
|
107
|
+
|
|
108
|
+
let foundConfig = false;
|
|
109
|
+
for (const configFile of this.config.configFiles) {
|
|
110
|
+
const path = resolve(process.cwd(), configFile);
|
|
111
|
+
if (existsSync(path)) {
|
|
112
|
+
foundConfig = true;
|
|
113
|
+
this.checks.push({ name: configFile, status: 'pass', message: 'Found' });
|
|
114
|
+
|
|
115
|
+
// Validate config content
|
|
116
|
+
try {
|
|
117
|
+
const content = readFileSync(path, 'utf8');
|
|
118
|
+
if (configFile.endsWith('.json')) {
|
|
119
|
+
JSON.parse(content);
|
|
120
|
+
this.checks.push({ name: `${configFile} syntax`, status: 'pass', message: 'Valid JSON' });
|
|
121
|
+
}
|
|
122
|
+
} catch (e) {
|
|
123
|
+
this.errors.push(`Invalid ${configFile}: ${e.message}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (!foundConfig) {
|
|
129
|
+
this.warnings.push(`No ${this.platform} config file found. Using defaults.`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async checkGitStatus() {
|
|
134
|
+
console.log('🔀 Checking git status...');
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
const { execSync } = await import('child_process');
|
|
138
|
+
|
|
139
|
+
// Check for uncommitted changes
|
|
140
|
+
const status = execSync('git status --porcelain', { encoding: 'utf8' });
|
|
141
|
+
if (status.trim()) {
|
|
142
|
+
this.warnings.push('Uncommitted changes detected. Consider committing first.');
|
|
143
|
+
this.checks.push({ name: 'Git status', status: 'warn', message: 'Uncommitted changes' });
|
|
144
|
+
} else {
|
|
145
|
+
this.checks.push({ name: 'Git status', status: 'pass', message: 'Clean' });
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Check branch
|
|
149
|
+
const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();
|
|
150
|
+
this.checks.push({ name: 'Current branch', status: 'info', message: branch });
|
|
151
|
+
|
|
152
|
+
} catch (e) {
|
|
153
|
+
this.warnings.push('Not a git repository or git not available');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async platformSpecificChecks() {
|
|
158
|
+
switch (this.platform) {
|
|
159
|
+
case 'railway':
|
|
160
|
+
await this.checkRailway();
|
|
161
|
+
break;
|
|
162
|
+
case 'cloudflare':
|
|
163
|
+
await this.checkCloudflare();
|
|
164
|
+
break;
|
|
165
|
+
case 'vercel':
|
|
166
|
+
await this.checkVercel();
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async checkRailway() {
|
|
172
|
+
// Check for Dockerfile or supported runtime
|
|
173
|
+
const hasDockerfile = existsSync(resolve(process.cwd(), 'Dockerfile'));
|
|
174
|
+
const hasPackageJson = existsSync(resolve(process.cwd(), 'package.json'));
|
|
175
|
+
const hasRequirements = existsSync(resolve(process.cwd(), 'requirements.txt'));
|
|
176
|
+
|
|
177
|
+
if (!hasDockerfile && !hasPackageJson && !hasRequirements) {
|
|
178
|
+
this.errors.push('No supported runtime detected (Dockerfile, package.json, or requirements.txt)');
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Check for Railway-specific health check endpoint
|
|
182
|
+
if (hasPackageJson) {
|
|
183
|
+
try {
|
|
184
|
+
const pkg = JSON.parse(readFileSync('package.json', 'utf8'));
|
|
185
|
+
if (pkg.scripts?.start) {
|
|
186
|
+
this.checks.push({ name: 'Start script', status: 'pass', message: pkg.scripts.start });
|
|
187
|
+
} else {
|
|
188
|
+
this.warnings.push('No "start" script in package.json');
|
|
189
|
+
}
|
|
190
|
+
} catch (e) {
|
|
191
|
+
// Ignore
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
async checkCloudflare() {
|
|
197
|
+
const { projectName } = this.options;
|
|
198
|
+
|
|
199
|
+
// Check dist folder
|
|
200
|
+
const distPath = resolve(process.cwd(), 'dist');
|
|
201
|
+
if (!existsSync(distPath)) {
|
|
202
|
+
this.errors.push('dist/ folder not found. Run "npm run build" first.');
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Check for index.html in dist
|
|
206
|
+
const indexPath = resolve(distPath, 'index.html');
|
|
207
|
+
if (existsSync(distPath) && !existsSync(indexPath)) {
|
|
208
|
+
this.warnings.push('No index.html in dist/. Is this a static site?');
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Validate wrangler.toml if exists
|
|
212
|
+
const wranglerPath = resolve(process.cwd(), 'wrangler.toml');
|
|
213
|
+
if (existsSync(wranglerPath)) {
|
|
214
|
+
const content = readFileSync(wranglerPath, 'utf8');
|
|
215
|
+
if (projectName && !content.includes(projectName)) {
|
|
216
|
+
this.warnings.push(`Project name "${projectName}" not found in wrangler.toml`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
async checkVercel() {
|
|
222
|
+
// Check for .vercel folder
|
|
223
|
+
const vercelDir = resolve(process.cwd(), '.vercel');
|
|
224
|
+
if (!existsSync(vercelDir)) {
|
|
225
|
+
this.warnings.push('No .vercel folder. Run "vercel link" first.');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
printReport() {
|
|
230
|
+
console.log('\n' + '='.repeat(60));
|
|
231
|
+
console.log(`📊 Validation Report: ${this.platform.toUpperCase()}`);
|
|
232
|
+
console.log('='.repeat(60));
|
|
233
|
+
|
|
234
|
+
// Print checks
|
|
235
|
+
console.log('\nChecks:');
|
|
236
|
+
for (const check of this.checks) {
|
|
237
|
+
const icon = check.status === 'pass' ? '✅' :
|
|
238
|
+
check.status === 'fail' ? '❌' :
|
|
239
|
+
check.status === 'warn' ? '⚠️' : 'ℹ️';
|
|
240
|
+
console.log(` ${icon} ${check.name}: ${check.message}`);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Print errors
|
|
244
|
+
if (this.errors.length > 0) {
|
|
245
|
+
console.log('\n❌ Errors:');
|
|
246
|
+
for (const error of this.errors) {
|
|
247
|
+
console.log(` - ${error}`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Print warnings
|
|
252
|
+
if (this.warnings.length > 0) {
|
|
253
|
+
console.log('\n⚠️ Warnings:');
|
|
254
|
+
for (const warning of this.warnings) {
|
|
255
|
+
console.log(` - ${warning}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Summary
|
|
260
|
+
console.log('\n' + '-'.repeat(60));
|
|
261
|
+
if (this.errors.length === 0) {
|
|
262
|
+
console.log('✅ Validation PASSED - Ready to deploy');
|
|
263
|
+
} else {
|
|
264
|
+
console.log(`❌ Validation FAILED - ${this.errors.length} error(s) found`);
|
|
265
|
+
}
|
|
266
|
+
console.log('-'.repeat(60) + '\n');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// CLI entry point
|
|
271
|
+
async function main() {
|
|
272
|
+
const args = process.argv.slice(2);
|
|
273
|
+
const platformIndex = args.indexOf('--platform');
|
|
274
|
+
const platform = platformIndex >= 0 ? args[platformIndex + 1] : null;
|
|
275
|
+
|
|
276
|
+
if (!platform || !PLATFORMS[platform]) {
|
|
277
|
+
console.error('Usage: node validate-deployment.js --platform <railway|cloudflare|vercel|netlify>');
|
|
278
|
+
console.error('Available platforms:', Object.keys(PLATFORMS).join(', '));
|
|
279
|
+
process.exit(1);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const options = {};
|
|
283
|
+
const projectNameIndex = args.indexOf('--project-name');
|
|
284
|
+
if (projectNameIndex >= 0) {
|
|
285
|
+
options.projectName = args[projectNameIndex + 1];
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const validator = new DeploymentValidator(platform, options);
|
|
289
|
+
const success = await validator.validate();
|
|
290
|
+
process.exit(success ? 0 : 1);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
main().catch(console.error);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-creator",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Create Claude Code CLI agents (subagents) following best practices",
|
|
5
|
+
"category": "development",
|
|
6
|
+
"portability": 100,
|
|
7
|
+
"features": [
|
|
8
|
+
"Task tool configuration",
|
|
9
|
+
"Agent specialization patterns",
|
|
10
|
+
"Workflow integration",
|
|
11
|
+
"RAG-enhanced knowledge bases"
|
|
12
|
+
],
|
|
13
|
+
"entryPoint": "skill.md",
|
|
14
|
+
"context": [],
|
|
15
|
+
"workflows": [],
|
|
16
|
+
"requiredTools": ["Task", "Read", "Glob", "Grep"],
|
|
17
|
+
"suggestedModel": "sonnet"
|
|
18
|
+
}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-creator
|
|
3
|
+
description: Create Claude Code CLI agents (subagents) following best practices - proper Task tool configuration, agent specialization, workflow integration, and RAG-enhanced knowledge bases
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Creator Skill
|
|
7
|
+
|
|
8
|
+
Expert-level Claude Code agent creation following official Anthropic best practices.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
This skill is automatically invoked when:
|
|
13
|
+
|
|
14
|
+
- Creating new specialized agents/subagents
|
|
15
|
+
- Designing agent workflows
|
|
16
|
+
- Configuring agent tool access
|
|
17
|
+
- Setting up multi-agent coordination
|
|
18
|
+
|
|
19
|
+
## Agent Architecture Overview
|
|
20
|
+
|
|
21
|
+
### What are Claude Code Agents?
|
|
22
|
+
|
|
23
|
+
Agents (subagents) are specialized Claude instances launched via the `Task` tool to handle complex, multi-step tasks autonomously. They:
|
|
24
|
+
|
|
25
|
+
- Run in isolated contexts with specific tool access
|
|
26
|
+
- Execute tasks without interrupting main conversation
|
|
27
|
+
- Return results upon completion
|
|
28
|
+
- Can run in parallel for independent tasks
|
|
29
|
+
|
|
30
|
+
### Agent Types
|
|
31
|
+
|
|
32
|
+
| Agent Type | Description | Tools |
|
|
33
|
+
|------------|-------------|-------|
|
|
34
|
+
| `general-purpose` | Research, search, multi-step tasks | All tools |
|
|
35
|
+
| `Explore` | Fast codebase exploration | All except Edit, Write |
|
|
36
|
+
| `Plan` | Planning and discovery | All except Edit, Write |
|
|
37
|
+
| `Bash` | Command execution specialist | Bash only |
|
|
38
|
+
|
|
39
|
+
## Creating Custom Agents
|
|
40
|
+
|
|
41
|
+
### Skill-Based Agents
|
|
42
|
+
|
|
43
|
+
Agents defined as skills live in `.claude/skills/{skill-name}/`:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
.claude/skills/
|
|
47
|
+
my-agent/
|
|
48
|
+
skill.md # Main skill definition (YAML frontmatter)
|
|
49
|
+
context/ # Agent context files
|
|
50
|
+
README.md
|
|
51
|
+
patterns.md
|
|
52
|
+
examples.md
|
|
53
|
+
workflows/ # Sub-workflows
|
|
54
|
+
README.md
|
|
55
|
+
sub-task-1.md
|
|
56
|
+
sub-task-2.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### skill.md Format
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
---
|
|
63
|
+
name: my-agent
|
|
64
|
+
description: Brief description shown in skill list
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
# Agent Title
|
|
68
|
+
|
|
69
|
+
Detailed agent instructions, patterns, and capabilities.
|
|
70
|
+
|
|
71
|
+
## When to Use This Agent
|
|
72
|
+
|
|
73
|
+
List specific scenarios when this agent should be invoked.
|
|
74
|
+
|
|
75
|
+
## Capabilities
|
|
76
|
+
|
|
77
|
+
- What this agent can do
|
|
78
|
+
- Tools it has access to
|
|
79
|
+
- Patterns it follows
|
|
80
|
+
|
|
81
|
+
## Workflow
|
|
82
|
+
|
|
83
|
+
Step-by-step process the agent follows.
|
|
84
|
+
|
|
85
|
+
## Output Format
|
|
86
|
+
|
|
87
|
+
What the agent returns upon completion.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Agent Design Patterns
|
|
91
|
+
|
|
92
|
+
### Pattern 1: Discovery Agent
|
|
93
|
+
|
|
94
|
+
Purpose: Research and understand before implementation.
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
---
|
|
98
|
+
name: discovery-agent
|
|
99
|
+
description: Research codebase, find patterns, gather requirements
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
# Discovery Agent
|
|
103
|
+
|
|
104
|
+
## Purpose
|
|
105
|
+
|
|
106
|
+
Explore the codebase to understand:
|
|
107
|
+
- Existing patterns and conventions
|
|
108
|
+
- File organization and structure
|
|
109
|
+
- Dependencies and relationships
|
|
110
|
+
- Potential impact areas
|
|
111
|
+
|
|
112
|
+
## Workflow
|
|
113
|
+
|
|
114
|
+
1. **Initial Search** - Use Glob/Grep to find relevant files
|
|
115
|
+
2. **Deep Read** - Read key files to understand patterns
|
|
116
|
+
3. **Map Dependencies** - Trace imports and relationships
|
|
117
|
+
4. **Document Findings** - Summarize discoveries
|
|
118
|
+
|
|
119
|
+
## Output
|
|
120
|
+
|
|
121
|
+
Return a structured report:
|
|
122
|
+
- Files discovered
|
|
123
|
+
- Patterns identified
|
|
124
|
+
- Key dependencies
|
|
125
|
+
- Recommendations
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Pattern 2: Implementation Agent
|
|
129
|
+
|
|
130
|
+
Purpose: Execute code changes with proper patterns.
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
---
|
|
134
|
+
name: implementation-agent
|
|
135
|
+
description: Write code following project patterns and conventions
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
# Implementation Agent
|
|
139
|
+
|
|
140
|
+
## Purpose
|
|
141
|
+
|
|
142
|
+
Implement features following project standards:
|
|
143
|
+
- Use established patterns
|
|
144
|
+
- Maintain consistency
|
|
145
|
+
- Add appropriate tests
|
|
146
|
+
- Update documentation
|
|
147
|
+
|
|
148
|
+
## Prerequisites
|
|
149
|
+
|
|
150
|
+
- Discovery complete
|
|
151
|
+
- Plan approved
|
|
152
|
+
- Target files identified
|
|
153
|
+
|
|
154
|
+
## Workflow
|
|
155
|
+
|
|
156
|
+
1. **Read Target Files** - Understand current state
|
|
157
|
+
2. **Apply Patterns** - Use project conventions
|
|
158
|
+
3. **Implement Changes** - Write clean code
|
|
159
|
+
4. **Add Tests** - Cover new functionality
|
|
160
|
+
5. **Validate** - Ensure no regressions
|
|
161
|
+
|
|
162
|
+
## Output
|
|
163
|
+
|
|
164
|
+
Return implementation summary:
|
|
165
|
+
- Files modified
|
|
166
|
+
- Tests added
|
|
167
|
+
- Breaking changes (if any)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Pattern 3: QA Agent
|
|
171
|
+
|
|
172
|
+
Purpose: Validate changes and ensure quality.
|
|
173
|
+
|
|
174
|
+
```markdown
|
|
175
|
+
---
|
|
176
|
+
name: qa-agent
|
|
177
|
+
description: Validate changes, run tests, verify patterns
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
# QA Agent
|
|
181
|
+
|
|
182
|
+
## Purpose
|
|
183
|
+
|
|
184
|
+
Ensure quality through:
|
|
185
|
+
- Pattern compliance
|
|
186
|
+
- Test coverage
|
|
187
|
+
- Error handling
|
|
188
|
+
- Performance impact
|
|
189
|
+
|
|
190
|
+
## Workflow
|
|
191
|
+
|
|
192
|
+
1. **Review Changes** - Examine modified files
|
|
193
|
+
2. **Run Tests** - Execute relevant test suites
|
|
194
|
+
3. **Check Patterns** - Verify convention compliance
|
|
195
|
+
4. **Report Issues** - Document findings
|
|
196
|
+
|
|
197
|
+
## Output
|
|
198
|
+
|
|
199
|
+
Return QA report:
|
|
200
|
+
- Tests passed/failed
|
|
201
|
+
- Pattern violations
|
|
202
|
+
- Recommendations
|
|
203
|
+
- Sign-off status
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Pattern 4: Orchestrator Agent
|
|
207
|
+
|
|
208
|
+
Purpose: Coordinate multiple agents for complex tasks.
|
|
209
|
+
|
|
210
|
+
```markdown
|
|
211
|
+
---
|
|
212
|
+
name: orchestrator-agent
|
|
213
|
+
description: Coordinate multi-agent workflows for complex tasks
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
# Orchestrator Agent
|
|
217
|
+
|
|
218
|
+
## Purpose
|
|
219
|
+
|
|
220
|
+
Coordinate complex workflows:
|
|
221
|
+
- Decompose tasks
|
|
222
|
+
- Assign to specialized agents
|
|
223
|
+
- Aggregate results
|
|
224
|
+
- Handle dependencies
|
|
225
|
+
|
|
226
|
+
## Workflow
|
|
227
|
+
|
|
228
|
+
1. **Analyze Task** - Understand scope
|
|
229
|
+
2. **Create Plan** - Break into subtasks
|
|
230
|
+
3. **Dispatch Agents** - Launch specialized agents
|
|
231
|
+
4. **Monitor Progress** - Track completion
|
|
232
|
+
5. **Aggregate Results** - Combine outputs
|
|
233
|
+
|
|
234
|
+
## Agent Dispatch
|
|
235
|
+
|
|
236
|
+
Launch agents in parallel when independent:
|
|
237
|
+
- Discovery can run with initial planning
|
|
238
|
+
- Implementation waits for planning
|
|
239
|
+
- QA waits for implementation
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Task Tool Configuration
|
|
243
|
+
|
|
244
|
+
### Basic Agent Launch
|
|
245
|
+
|
|
246
|
+
To launch an agent, invoke the Task tool with these parameters:
|
|
247
|
+
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"description": "Research authentication patterns",
|
|
251
|
+
"prompt": "Search the codebase for authentication implementations...",
|
|
252
|
+
"subagent_type": "Explore"
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Agent Parameters
|
|
257
|
+
|
|
258
|
+
| Parameter | Required | Description |
|
|
259
|
+
|-----------|----------|-------------|
|
|
260
|
+
| `description` | Yes | Short (3-5 word) task description |
|
|
261
|
+
| `prompt` | Yes | Detailed task instructions |
|
|
262
|
+
| `subagent_type` | Yes | Agent type to use |
|
|
263
|
+
| `model` | No | Override model (sonnet, opus, haiku) |
|
|
264
|
+
| `resume` | No | Agent ID to resume from |
|
|
265
|
+
|
|
266
|
+
### Model Selection
|
|
267
|
+
|
|
268
|
+
| Model | Best For | Cost |
|
|
269
|
+
|-------|----------|------|
|
|
270
|
+
| `haiku` | Quick, straightforward tasks | Lowest |
|
|
271
|
+
| `sonnet` | Default, balanced | Medium |
|
|
272
|
+
| `opus` | Complex reasoning | Highest |
|
|
273
|
+
|
|
274
|
+
## Best Practices
|
|
275
|
+
|
|
276
|
+
### Agent Design
|
|
277
|
+
|
|
278
|
+
1. **Single Responsibility** - Each agent does one thing well
|
|
279
|
+
2. **Clear Boundaries** - Define what agent can/cannot do
|
|
280
|
+
3. **Explicit Output** - Specify return format
|
|
281
|
+
4. **Error Handling** - Define failure behavior
|
|
282
|
+
|
|
283
|
+
### Task Prompts
|
|
284
|
+
|
|
285
|
+
1. **Be Specific** - Include all necessary context
|
|
286
|
+
2. **Define Success** - What does "done" look like?
|
|
287
|
+
3. **Scope Limits** - What should agent NOT do?
|
|
288
|
+
4. **Output Format** - How to structure results?
|
|
289
|
+
|
|
290
|
+
### Parallel Execution
|
|
291
|
+
|
|
292
|
+
1. **Independence** - Only parallelize independent tasks
|
|
293
|
+
2. **Single Message** - Multiple Task calls in one message
|
|
294
|
+
3. **Dependencies** - Sequential tasks must wait
|
|
295
|
+
|
|
296
|
+
**Parallel Execution**: In a single message, invoke the Task tool multiple times.
|
|
297
|
+
|
|
298
|
+
**Sequential Execution**: For dependent tasks, wait for first agent to complete before invoking the next Task tool.
|
|
299
|
+
|
|
300
|
+
### Context Management
|
|
301
|
+
|
|
302
|
+
1. **Stateless** - Each agent invocation is fresh
|
|
303
|
+
2. **Self-Contained** - Include all needed context in prompt
|
|
304
|
+
3. **Explicit Return** - Specify what to report back
|
|
305
|
+
4. **No Follow-up** - Cannot send additional messages
|
|
306
|
+
|
|
307
|
+
## Creating a New Agent
|
|
308
|
+
|
|
309
|
+
### Step-by-Step Process
|
|
310
|
+
|
|
311
|
+
1. **Define Purpose** - What problem does this agent solve?
|
|
312
|
+
2. **Identify Tools** - What tools does it need?
|
|
313
|
+
3. **Design Workflow** - What steps does it follow?
|
|
314
|
+
4. **Specify Output** - What does it return?
|
|
315
|
+
5. **Create Skill** - Write skill.md with context
|
|
316
|
+
6. **Add RAG if Needed** - Include knowledge base for domain expertise
|
|
317
|
+
7. **Add to README** - Document in skills README
|
|
318
|
+
8. **Test Thoroughly** - Verify in real scenarios
|
|
319
|
+
|
|
320
|
+
### Checklist
|
|
321
|
+
|
|
322
|
+
- [ ] skill.md with YAML frontmatter
|
|
323
|
+
- [ ] Clear "When to Use" section
|
|
324
|
+
- [ ] Defined workflow steps
|
|
325
|
+
- [ ] Explicit output format
|
|
326
|
+
- [ ] Context files if needed
|
|
327
|
+
- [ ] Added to skills README
|
|
328
|
+
- [ ] Tested with sample tasks
|
|
329
|
+
|
|
330
|
+
## References
|
|
331
|
+
|
|
332
|
+
- Task Tool: System prompt documentation
|
|
333
|
+
- Skills: `.claude/skills/README.md`
|
|
334
|
+
- Agents: `.claude/agents/`
|
|
335
|
+
- Official Docs: https://docs.anthropic.com/en/docs/claude-code
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hook-creator",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Create Claude Code CLI hooks following best practices",
|
|
5
|
+
"category": "development",
|
|
6
|
+
"portability": 100,
|
|
7
|
+
"features": [
|
|
8
|
+
"JSON schema configuration",
|
|
9
|
+
"Event type handling",
|
|
10
|
+
"Matcher patterns",
|
|
11
|
+
"Error handling templates"
|
|
12
|
+
],
|
|
13
|
+
"entryPoint": "skill.md",
|
|
14
|
+
"context": [],
|
|
15
|
+
"workflows": [],
|
|
16
|
+
"requiredTools": ["Read", "Write", "Edit"],
|
|
17
|
+
"suggestedModel": "sonnet"
|
|
18
|
+
}
|