@kood/claude-code 0.5.0 → 0.5.3
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/dist/index.js +179 -33
- package/package.json +1 -1
- package/templates/.claude/agents/analyst.md +6 -14
- package/templates/.claude/agents/architect.md +6 -14
- package/templates/.claude/agents/code-reviewer.md +8 -14
- package/templates/.claude/agents/dependency-manager.md +8 -14
- package/templates/.claude/agents/deployment-validator.md +8 -14
- package/templates/.claude/agents/designer.md +8 -0
- package/templates/.claude/agents/document-writer.md +6 -14
- package/templates/.claude/agents/explore.md +8 -3
- package/templates/.claude/agents/git-operator.md +63 -17
- package/templates/.claude/agents/implementation-executor.md +14 -37
- package/templates/.claude/agents/ko-to-en-translator.md +8 -13
- package/templates/.claude/agents/lint-fixer.md +8 -172
- package/templates/.claude/agents/planner.md +6 -14
- package/templates/.claude/agents/refactor-advisor.md +8 -14
- package/templates/.claude/commands/git-all.md +3 -167
- package/templates/.claude/commands/git-session.md +3 -71
- package/templates/.claude/commands/lint-fix.md +119 -82
- package/templates/.claude/commands/lint-init.md +2 -54
- package/templates/.claude/commands/pre-deploy.md +143 -82
- package/templates/.claude/commands/version-update.md +171 -66
- package/templates/.claude/instructions/agent-patterns/agent-coordination.md +208 -0
- package/templates/.claude/instructions/agent-patterns/index.md +264 -0
- package/templates/.claude/instructions/agent-patterns/model-routing.md +167 -0
- package/templates/.claude/instructions/agent-patterns/parallel-execution.md +91 -0
- package/templates/.claude/instructions/agent-patterns/read-parallelization.md +106 -0
- package/templates/.claude/instructions/index.md +350 -0
- package/templates/.claude/instructions/multi-agent/agent-roster.md +811 -0
- package/templates/.claude/{PARALLEL_AGENTS.md → instructions/multi-agent/coordination-guide.md} +27 -336
- package/templates/.claude/instructions/{parallel-agent-execution.md → multi-agent/execution-patterns.md} +127 -438
- package/templates/.claude/instructions/multi-agent/index.md +282 -0
- package/templates/.claude/instructions/multi-agent/performance-optimization.md +456 -0
- package/templates/.claude/instructions/tech-stack/design-standards.md +282 -0
- package/templates/.claude/instructions/tech-stack/index.md +70 -0
- package/templates/.claude/instructions/tech-stack/prisma-patterns.md +352 -0
- package/templates/.claude/instructions/tech-stack/tanstack-patterns.md +275 -0
- package/templates/.claude/instructions/validation/forbidden-patterns.md +281 -0
- package/templates/.claude/instructions/validation/index.md +32 -0
- package/templates/.claude/instructions/validation/required-behaviors.md +331 -0
- package/templates/.claude/instructions/validation/verification-checklist.md +318 -0
- package/templates/.claude/instructions/workflow-patterns/index.md +18 -0
- package/templates/.claude/instructions/workflow-patterns/phase-based-workflow.md +250 -0
- package/templates/.claude/instructions/workflow-patterns/sequential-thinking.md +217 -0
- package/templates/.claude/instructions/workflow-patterns/todowrite-pattern.md +215 -0
- package/templates/.claude/skills/bug-fix/SKILL.md +972 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +4 -1
- package/templates/.claude/skills/docs-creator/SKILL.md +258 -0
- package/templates/.claude/skills/docs-refactor/AGENTS.md +4 -1
- package/templates/.claude/skills/docs-refactor/SKILL.md +145 -0
- package/templates/.claude/skills/execute/SKILL.md +15 -242
- package/templates/.claude/skills/figma-to-code/AGENTS.md +4 -1
- package/templates/.claude/skills/figma-to-code/SKILL.md +306 -0
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +4 -1
- package/templates/.claude/skills/global-uiux-design/SKILL.md +455 -125
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +4 -1
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +461 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +177 -0
- package/templates/.claude/skills/plan/SKILL.md +1102 -98
- package/templates/.claude/skills/prd/SKILL.md +367 -66
- package/templates/.claude/skills/ralph/AGENTS.md +4 -1
- package/templates/.claude/skills/ralph/SKILL.md +83 -0
- package/templates/.claude/skills/refactor/SKILL.md +1214 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +149 -0
- package/templates/.claude/commands/bug-fix.md +0 -510
- package/templates/.claude/commands/refactor.md +0 -788
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ var banner = () => {
|
|
|
23
23
|
|
|
24
24
|
// src/commands/init.ts
|
|
25
25
|
import prompts from "prompts";
|
|
26
|
+
import fs2 from "fs-extra";
|
|
26
27
|
|
|
27
28
|
// src/utils/copy.ts
|
|
28
29
|
import fs from "fs-extra";
|
|
@@ -33,12 +34,45 @@ var __dirname2 = path.dirname(__filename2);
|
|
|
33
34
|
var getTemplatesDir = () => {
|
|
34
35
|
return path.resolve(__dirname2, "../templates");
|
|
35
36
|
};
|
|
37
|
+
var validateTemplateName = (template) => {
|
|
38
|
+
const sanitized = path.basename(template);
|
|
39
|
+
if (sanitized !== template || template.includes("..")) {
|
|
40
|
+
throw new Error(`Invalid template name: "${template}"`);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
var validateTargetDir = (targetDir) => {
|
|
44
|
+
const resolved = path.resolve(targetDir);
|
|
45
|
+
const protectedPaths = [
|
|
46
|
+
"/",
|
|
47
|
+
"/usr",
|
|
48
|
+
"/etc",
|
|
49
|
+
"/bin",
|
|
50
|
+
"/sbin",
|
|
51
|
+
"/home",
|
|
52
|
+
"/var",
|
|
53
|
+
"/root"
|
|
54
|
+
];
|
|
55
|
+
if (process.platform === "win32") {
|
|
56
|
+
const winProtected = [
|
|
57
|
+
"C:\\Windows",
|
|
58
|
+
"C:\\Program Files",
|
|
59
|
+
"C:\\Program Files (x86)"
|
|
60
|
+
];
|
|
61
|
+
protectedPaths.push(...winProtected);
|
|
62
|
+
}
|
|
63
|
+
for (const protectedPath of protectedPaths) {
|
|
64
|
+
if (resolved === protectedPath || resolved.startsWith(protectedPath + path.sep)) {
|
|
65
|
+
throw new Error(`Cannot modify protected system path: ${resolved}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
36
69
|
var hasFiles = async (dir) => {
|
|
37
70
|
if (!await fs.pathExists(dir)) return false;
|
|
38
71
|
const items = await fs.readdir(dir);
|
|
39
72
|
return items.length > 0;
|
|
40
73
|
};
|
|
41
74
|
var getTemplatePath = (template) => {
|
|
75
|
+
validateTemplateName(template);
|
|
42
76
|
return path.join(getTemplatesDir(), template);
|
|
43
77
|
};
|
|
44
78
|
var copyRecursive = async (src, dest, counter) => {
|
|
@@ -56,6 +90,7 @@ var copyRecursive = async (src, dest, counter) => {
|
|
|
56
90
|
}
|
|
57
91
|
};
|
|
58
92
|
var copySingleTemplate = async (template, targetDir) => {
|
|
93
|
+
validateTargetDir(targetDir);
|
|
59
94
|
const templatePath = getTemplatePath(template);
|
|
60
95
|
if (!await fs.pathExists(templatePath)) {
|
|
61
96
|
throw new Error(`Template "${template}" not found at ${templatePath}`);
|
|
@@ -77,6 +112,7 @@ var copySingleTemplate = async (template, targetDir) => {
|
|
|
77
112
|
return counter;
|
|
78
113
|
};
|
|
79
114
|
var copyMultipleTemplates = async (templates, targetDir) => {
|
|
115
|
+
validateTargetDir(targetDir);
|
|
80
116
|
const counter = { files: 0, directories: 0 };
|
|
81
117
|
const docsDir = path.join(targetDir, "docs");
|
|
82
118
|
if (await fs.pathExists(docsDir)) {
|
|
@@ -99,18 +135,49 @@ var copyMultipleTemplates = async (templates, targetDir) => {
|
|
|
99
135
|
return counter;
|
|
100
136
|
};
|
|
101
137
|
var generateIndexClaudeMd = (templates) => {
|
|
102
|
-
const
|
|
138
|
+
const templateMetadata = {
|
|
139
|
+
"tanstack-start": {
|
|
140
|
+
name: "TanStack Start",
|
|
141
|
+
description: "React + TanStack Router SSR \uD480\uC2A4\uD0DD \uD504\uB85C\uC81D\uD2B8",
|
|
142
|
+
stack: "React, TanStack Router, Vite, TypeScript"
|
|
143
|
+
},
|
|
144
|
+
hono: {
|
|
145
|
+
name: "Hono",
|
|
146
|
+
description: "Edge Runtime \uBC31\uC5D4\uB4DC API \uD504\uB85C\uC81D\uD2B8",
|
|
147
|
+
stack: "Hono, TypeScript, Cloudflare Workers"
|
|
148
|
+
},
|
|
149
|
+
npx: {
|
|
150
|
+
name: "NPX CLI",
|
|
151
|
+
description: "NPX\uB85C \uC2E4\uD589 \uAC00\uB2A5\uD55C CLI \uB3C4\uAD6C \uD504\uB85C\uC81D\uD2B8",
|
|
152
|
+
stack: "Node.js, TypeScript, Commander.js"
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
const templateSections = templates.map((template) => {
|
|
156
|
+
const meta = templateMetadata[template] || {
|
|
157
|
+
name: template,
|
|
158
|
+
description: `${template} \uD504\uB85C\uC81D\uD2B8`,
|
|
159
|
+
stack: "TypeScript"
|
|
160
|
+
};
|
|
161
|
+
return `### ${meta.name}
|
|
162
|
+
- **\uC6A9\uB3C4:** ${meta.description}
|
|
163
|
+
- **\uC8FC\uC694 \uC2A4\uD0DD:** ${meta.stack}
|
|
164
|
+
- **\uAC00\uC774\uB4DC:** [docs/${template}/CLAUDE.md](docs/${template}/CLAUDE.md)`;
|
|
165
|
+
}).join("\n\n");
|
|
103
166
|
return `# CLAUDE.md
|
|
104
167
|
|
|
105
|
-
> \uC774 \uD504\uB85C\uC81D\uD2B8\uB294 \uC5EC\uB7EC \
|
|
168
|
+
> \uC774 \uD504\uB85C\uC81D\uD2B8\uB294 \uC5EC\uB7EC \uD504\uB808\uC784\uC6CC\uD06C\uC758 Claude Code \uAC00\uC774\uB4DC\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.
|
|
169
|
+
|
|
170
|
+
## \uC0AC\uC6A9 \uBC29\uBC95
|
|
171
|
+
|
|
172
|
+
\uC544\uB798 \uD15C\uD50C\uB9BF \uC911 **\uD604\uC7AC \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC0AC\uC6A9 \uC911\uC778 \uD504\uB808\uC784\uC6CC\uD06C**\uB97C \uC120\uD0DD\uD558\uC5EC \uD574\uB2F9 \uAC00\uC774\uB4DC\uB97C \uB530\uB974\uC138\uC694.
|
|
106
173
|
|
|
107
|
-
## \uD15C\uD50C\uB9BF \
|
|
174
|
+
## \uD15C\uD50C\uB9BF \uBAA9\uB85D
|
|
108
175
|
|
|
109
|
-
${
|
|
176
|
+
${templateSections}
|
|
110
177
|
|
|
111
|
-
|
|
178
|
+
---
|
|
112
179
|
|
|
113
|
-
\
|
|
180
|
+
**\uD604\uC7AC \uD504\uB85C\uC81D\uD2B8\uC5D0 \uB9DE\uB294 \uAC00\uC774\uB4DC\uB97C CLAUDE.md\uC758 \`@\` \uC778\uC2A4\uD2B8\uB7ED\uC158\uC5D0 \uCD94\uAC00\uD558\uC138\uC694.**
|
|
114
181
|
`;
|
|
115
182
|
};
|
|
116
183
|
var checkExistingFiles = async (targetDir) => {
|
|
@@ -144,15 +211,24 @@ var listAvailableTemplates = async () => {
|
|
|
144
211
|
}
|
|
145
212
|
return templates;
|
|
146
213
|
};
|
|
147
|
-
var
|
|
214
|
+
var FRAMEWORK_SPECIFIC_SKILLS_MAP = {
|
|
148
215
|
nextjs: ["nextjs-react-best-practices", "korea-uiux-design", "figma-to-code"],
|
|
149
216
|
"tanstack-start": [
|
|
150
217
|
"tanstack-start-react-best-practices",
|
|
151
218
|
"korea-uiux-design",
|
|
152
219
|
"figma-to-code"
|
|
153
220
|
]
|
|
154
|
-
// hono와 npx는 스킬 없음
|
|
221
|
+
// hono와 npx는 프레임워크별 스킬 없음
|
|
155
222
|
};
|
|
223
|
+
var COMMON_SKILLS = [
|
|
224
|
+
"global-uiux-design",
|
|
225
|
+
"docs-creator",
|
|
226
|
+
"docs-refactor",
|
|
227
|
+
"plan",
|
|
228
|
+
"prd",
|
|
229
|
+
"ralph",
|
|
230
|
+
"execute"
|
|
231
|
+
];
|
|
156
232
|
var copySkills = async (templates, targetDir) => {
|
|
157
233
|
const counter = { files: 0, directories: 0 };
|
|
158
234
|
const targetSkillsDir = path.join(targetDir, ".claude", "skills");
|
|
@@ -162,9 +238,17 @@ var copySkills = async (templates, targetDir) => {
|
|
|
162
238
|
}
|
|
163
239
|
await fs.ensureDir(targetSkillsDir);
|
|
164
240
|
const skillsToCopy = /* @__PURE__ */ new Set();
|
|
241
|
+
const skillTemplateMap = /* @__PURE__ */ new Map();
|
|
242
|
+
COMMON_SKILLS.forEach((skill) => skillsToCopy.add(skill));
|
|
165
243
|
for (const template of templates) {
|
|
166
|
-
const skills =
|
|
167
|
-
skills.forEach((skill) =>
|
|
244
|
+
const skills = FRAMEWORK_SPECIFIC_SKILLS_MAP[template] || [];
|
|
245
|
+
skills.forEach((skill) => {
|
|
246
|
+
skillsToCopy.add(skill);
|
|
247
|
+
if (!skillTemplateMap.has(skill)) {
|
|
248
|
+
skillTemplateMap.set(skill, /* @__PURE__ */ new Set());
|
|
249
|
+
}
|
|
250
|
+
skillTemplateMap.get(skill).add(template);
|
|
251
|
+
});
|
|
168
252
|
}
|
|
169
253
|
for (const skill of skillsToCopy) {
|
|
170
254
|
const skillSrc = path.join(skillsSrc, skill);
|
|
@@ -176,7 +260,19 @@ var copySkills = async (templates, targetDir) => {
|
|
|
176
260
|
await copyRecursive(skillSrc, skillDest, counter);
|
|
177
261
|
}
|
|
178
262
|
}
|
|
179
|
-
|
|
263
|
+
const duplicateSkills = [];
|
|
264
|
+
for (const [skill, templateSet] of skillTemplateMap.entries()) {
|
|
265
|
+
if (templateSet.size > 1) {
|
|
266
|
+
duplicateSkills.push({
|
|
267
|
+
skill,
|
|
268
|
+
templates: Array.from(templateSet).sort()
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
...counter,
|
|
274
|
+
...duplicateSkills.length > 0 && { duplicateSkills }
|
|
275
|
+
};
|
|
180
276
|
};
|
|
181
277
|
var copyCommands = async (_templates, targetDir) => {
|
|
182
278
|
const counter = { files: 0, directories: 0 };
|
|
@@ -237,10 +333,11 @@ var checkAllExtrasExist = async (templates) => {
|
|
|
237
333
|
const commandsSrc = path.join(claudeDir, "commands");
|
|
238
334
|
const agentsSrc = path.join(claudeDir, "agents");
|
|
239
335
|
const instructionsSrc = path.join(claudeDir, "instructions");
|
|
240
|
-
const
|
|
241
|
-
const skills =
|
|
336
|
+
const hasFrameworkSkills = templates.some((template) => {
|
|
337
|
+
const skills = FRAMEWORK_SPECIFIC_SKILLS_MAP[template];
|
|
242
338
|
return skills && skills.length > 0;
|
|
243
339
|
});
|
|
340
|
+
const hasSkills = COMMON_SKILLS.length > 0 || hasFrameworkSkills;
|
|
244
341
|
const hasCommands = await hasFiles(commandsSrc);
|
|
245
342
|
const hasAgents = await hasFiles(agentsSrc);
|
|
246
343
|
const hasInstructions = await hasFiles(instructionsSrc);
|
|
@@ -255,6 +352,26 @@ var TEMPLATE_DESCRIPTIONS = {
|
|
|
255
352
|
};
|
|
256
353
|
var init = async (options) => {
|
|
257
354
|
const targetDir = options.cwd || process.cwd();
|
|
355
|
+
try {
|
|
356
|
+
const stat = await fs2.stat(targetDir);
|
|
357
|
+
if (!stat.isDirectory()) {
|
|
358
|
+
logger.error(`Target is not a directory: ${targetDir}`);
|
|
359
|
+
process.exit(1);
|
|
360
|
+
}
|
|
361
|
+
} catch (error) {
|
|
362
|
+
if (error.code === "ENOENT") {
|
|
363
|
+
logger.error(`Target directory does not exist: ${targetDir}`);
|
|
364
|
+
} else {
|
|
365
|
+
logger.error(`Cannot access target directory: ${targetDir}`);
|
|
366
|
+
}
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
try {
|
|
370
|
+
await fs2.access(targetDir, fs2.constants.W_OK);
|
|
371
|
+
} catch {
|
|
372
|
+
logger.error(`No write permission for: ${targetDir}`);
|
|
373
|
+
process.exit(1);
|
|
374
|
+
}
|
|
258
375
|
const availableTemplates = await listAvailableTemplates();
|
|
259
376
|
if (availableTemplates.length === 0) {
|
|
260
377
|
logger.error("No templates found. Package may be corrupted.");
|
|
@@ -364,22 +481,10 @@ var init = async (options) => {
|
|
|
364
481
|
installCommands = commandsResponse.install ?? false;
|
|
365
482
|
}
|
|
366
483
|
if (hasAgents) {
|
|
367
|
-
|
|
368
|
-
type: "confirm",
|
|
369
|
-
name: "install",
|
|
370
|
-
message: "Install agents to .claude/agents/?",
|
|
371
|
-
initial: false
|
|
372
|
-
});
|
|
373
|
-
installAgents = agentsResponse.install ?? false;
|
|
484
|
+
installAgents = true;
|
|
374
485
|
}
|
|
375
486
|
if (hasInstructions) {
|
|
376
|
-
|
|
377
|
-
type: "confirm",
|
|
378
|
-
name: "install",
|
|
379
|
-
message: "Install instructions to .claude/instructions/?",
|
|
380
|
-
initial: false
|
|
381
|
-
});
|
|
382
|
-
installInstructions = instructionsResponse.install ?? false;
|
|
487
|
+
installInstructions = true;
|
|
383
488
|
}
|
|
384
489
|
}
|
|
385
490
|
if (installSkills || installCommands || installAgents || installInstructions) {
|
|
@@ -406,11 +511,52 @@ var init = async (options) => {
|
|
|
406
511
|
logger.blank();
|
|
407
512
|
logger.info("Installing skills...");
|
|
408
513
|
const skillsResult = await copySkills(templates, targetDir);
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
514
|
+
if (skillsResult.duplicateSkills && skillsResult.duplicateSkills.length > 0) {
|
|
515
|
+
logger.blank();
|
|
516
|
+
logger.warn("The following skills are included in multiple templates:");
|
|
517
|
+
skillsResult.duplicateSkills.forEach(
|
|
518
|
+
({ skill, templates: skillTemplates }) => {
|
|
519
|
+
logger.step(`${skill} (${skillTemplates.join(", ")})`);
|
|
520
|
+
}
|
|
521
|
+
);
|
|
522
|
+
logger.blank();
|
|
523
|
+
const response = await prompts({
|
|
524
|
+
type: "select",
|
|
525
|
+
name: "selectedTemplate",
|
|
526
|
+
message: "Which template's version should be used?",
|
|
527
|
+
choices: templates.map((t) => ({
|
|
528
|
+
title: t,
|
|
529
|
+
value: t
|
|
530
|
+
}))
|
|
531
|
+
});
|
|
532
|
+
if (response.selectedTemplate) {
|
|
533
|
+
logger.info(
|
|
534
|
+
`Reinstalling skills with ${response.selectedTemplate} template...`
|
|
535
|
+
);
|
|
536
|
+
const reinstallResult = await copySkills(
|
|
537
|
+
[response.selectedTemplate],
|
|
538
|
+
targetDir
|
|
539
|
+
);
|
|
540
|
+
totalFiles += reinstallResult.files;
|
|
541
|
+
totalDirectories += reinstallResult.directories;
|
|
542
|
+
logger.success(
|
|
543
|
+
`Skills: ${reinstallResult.files} files, ${reinstallResult.directories} directories`
|
|
544
|
+
);
|
|
545
|
+
} else {
|
|
546
|
+
logger.warn("No template selected. Using all templates.");
|
|
547
|
+
totalFiles += skillsResult.files;
|
|
548
|
+
totalDirectories += skillsResult.directories;
|
|
549
|
+
logger.success(
|
|
550
|
+
`Skills: ${skillsResult.files} files, ${skillsResult.directories} directories`
|
|
551
|
+
);
|
|
552
|
+
}
|
|
553
|
+
} else {
|
|
554
|
+
totalFiles += skillsResult.files;
|
|
555
|
+
totalDirectories += skillsResult.directories;
|
|
556
|
+
logger.success(
|
|
557
|
+
`Skills: ${skillsResult.files} files, ${skillsResult.directories} directories`
|
|
558
|
+
);
|
|
559
|
+
}
|
|
414
560
|
} else if (installSkills && !hasSkills) {
|
|
415
561
|
logger.warn("No skills found in selected templates.");
|
|
416
562
|
}
|
|
@@ -481,7 +627,7 @@ var init = async (options) => {
|
|
|
481
627
|
|
|
482
628
|
// src/index.ts
|
|
483
629
|
var program = new Command();
|
|
484
|
-
program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.
|
|
630
|
+
program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.3");
|
|
485
631
|
program.option(
|
|
486
632
|
"-t, --template <names>",
|
|
487
633
|
"template names (comma-separated: tanstack-start,hono)"
|
package/package.json
CHANGED
|
@@ -5,6 +5,12 @@ tools: Read, Grep, Glob
|
|
|
5
5
|
model: opus
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
9
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
10
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
11
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
12
|
+
@../../instructions/validation/required-behaviors.md
|
|
13
|
+
|
|
8
14
|
# Analyst Agent (Metis)
|
|
9
15
|
|
|
10
16
|
계획 수립 전 요구사항 심층 분석. "다른 사람이 놓친 것을 발견"하는 전략 컨설턴트.
|
|
@@ -29,20 +35,6 @@ model: opus
|
|
|
29
35
|
|
|
30
36
|
---
|
|
31
37
|
|
|
32
|
-
<parallel_execution>
|
|
33
|
-
|
|
34
|
-
## Agent Coordination
|
|
35
|
-
|
|
36
|
-
| 항목 | 설명 |
|
|
37
|
-
|------|------|
|
|
38
|
-
| **병렬 실행** | 불가 (전체 맥락 통합 분석 필요) |
|
|
39
|
-
| **연계 Agent** | architect (기술 분석), planner (계획 수립 전 분석), document-writer (문서화) |
|
|
40
|
-
| **권장 모델** | opus (심층 요구사항 분석) |
|
|
41
|
-
|
|
42
|
-
</parallel_execution>
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
38
|
<six_gaps>
|
|
47
39
|
|
|
48
40
|
## 6가지 핵심 갭
|
|
@@ -5,6 +5,12 @@ tools: Read, Grep, Glob
|
|
|
5
5
|
model: opus
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
9
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
10
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
11
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
12
|
+
@../../instructions/validation/required-behaviors.md
|
|
13
|
+
|
|
8
14
|
# Architect Agent (Oracle)
|
|
9
15
|
|
|
10
16
|
델파이 신탁처럼 전략적 조언을 제공하는 READ-ONLY 아키텍처 고문. 코드를 수정하지 않고 분석과 권장사항만 제공.
|
|
@@ -29,20 +35,6 @@ model: opus
|
|
|
29
35
|
|
|
30
36
|
---
|
|
31
37
|
|
|
32
|
-
<parallel_execution>
|
|
33
|
-
|
|
34
|
-
## Agent Coordination
|
|
35
|
-
|
|
36
|
-
| 항목 | 설명 |
|
|
37
|
-
|------|------|
|
|
38
|
-
| **병렬 실행** | 부분 가능 (독립 모듈 분석), 아키텍처 전체 분석은 단일 실행 |
|
|
39
|
-
| **연계 Agent** | analyst (요구사항 분석), refactor-advisor (리팩토링 실행), planner (계획 수립) |
|
|
40
|
-
| **권장 모델** | opus (복잡한 아키텍처 분석) |
|
|
41
|
-
|
|
42
|
-
</parallel_execution>
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
38
|
<forbidden>
|
|
47
39
|
|
|
48
40
|
## 절대 금지
|
|
@@ -6,6 +6,14 @@ model: sonnet
|
|
|
6
6
|
permissionMode: default
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
10
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
11
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
12
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
13
|
+
@../../instructions/validation/required-behaviors.md
|
|
14
|
+
|
|
15
|
+
# Code Reviewer
|
|
16
|
+
|
|
9
17
|
너는 시니어 코드 리뷰어다. 높은 기준을 유지하며 건설적인 피드백을 제공한다.
|
|
10
18
|
|
|
11
19
|
호출 시 수행할 작업:
|
|
@@ -17,20 +25,6 @@ permissionMode: default
|
|
|
17
25
|
|
|
18
26
|
---
|
|
19
27
|
|
|
20
|
-
<parallel_execution>
|
|
21
|
-
|
|
22
|
-
## Agent Coordination
|
|
23
|
-
|
|
24
|
-
| 항목 | 설명 |
|
|
25
|
-
|------|------|
|
|
26
|
-
| **병렬 실행** | 불가 (git diff 기반 순차 검토) |
|
|
27
|
-
| **연계 Agent** | git-operator (커밋 전 리뷰), deployment-validator (배포 전 검토) |
|
|
28
|
-
| **권장 모델** | sonnet (코드 품질 분석) |
|
|
29
|
-
|
|
30
|
-
</parallel_execution>
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
28
|
<review_checklist>
|
|
35
29
|
|
|
36
30
|
## 검토 체크리스트
|
|
@@ -6,6 +6,14 @@ model: sonnet
|
|
|
6
6
|
permissionMode: default
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
10
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
11
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
12
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
13
|
+
@../../instructions/validation/required-behaviors.md
|
|
14
|
+
|
|
15
|
+
# Dependency Manager
|
|
16
|
+
|
|
9
17
|
너는 의존성 관리 및 보안 전문가다.
|
|
10
18
|
|
|
11
19
|
호출 시 수행할 작업:
|
|
@@ -17,20 +25,6 @@ permissionMode: default
|
|
|
17
25
|
|
|
18
26
|
---
|
|
19
27
|
|
|
20
|
-
<parallel_execution>
|
|
21
|
-
|
|
22
|
-
## Agent Coordination
|
|
23
|
-
|
|
24
|
-
| 항목 | 설명 |
|
|
25
|
-
|------|------|
|
|
26
|
-
| **병렬 실행** | 부분 가능 (분석 단계), 업데이트는 순차 필수 |
|
|
27
|
-
| **연계 Agent** | deployment-validator (업데이트 후 검증), code-reviewer (breaking change 검토) |
|
|
28
|
-
| **권장 모델** | sonnet (보안 및 breaking change 분석) |
|
|
29
|
-
|
|
30
|
-
</parallel_execution>
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
28
|
<analysis_criteria>
|
|
35
29
|
|
|
36
30
|
## 분석 기준
|
|
@@ -6,6 +6,14 @@ model: sonnet
|
|
|
6
6
|
permissionMode: default
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
10
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
11
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
12
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
13
|
+
@../../instructions/validation/required-behaviors.md
|
|
14
|
+
|
|
15
|
+
# Deployment Validator
|
|
16
|
+
|
|
9
17
|
너는 배포 전 품질 보증 전문가다.
|
|
10
18
|
|
|
11
19
|
호출 시 수행할 작업:
|
|
@@ -18,20 +26,6 @@ permissionMode: default
|
|
|
18
26
|
|
|
19
27
|
---
|
|
20
28
|
|
|
21
|
-
<parallel_execution>
|
|
22
|
-
|
|
23
|
-
## Agent Coordination
|
|
24
|
-
|
|
25
|
-
| 항목 | 설명 |
|
|
26
|
-
|------|------|
|
|
27
|
-
| **병렬 실행** | 불가 (순차 수정 필수: typecheck → lint → build) |
|
|
28
|
-
| **연계 Agent** | lint-fixer (동일 패턴), git-operator (배포 전 커밋) |
|
|
29
|
-
| **권장 모델** | sonnet (오류 분석 및 수정) |
|
|
30
|
-
|
|
31
|
-
</parallel_execution>
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
29
|
<validation_checklist>
|
|
36
30
|
|
|
37
31
|
```text
|
|
@@ -6,6 +6,14 @@ model: sonnet
|
|
|
6
6
|
permissionMode: default
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
10
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
11
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
12
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
13
|
+
@../../instructions/validation/required-behaviors.md
|
|
14
|
+
|
|
15
|
+
# Designer
|
|
16
|
+
|
|
9
17
|
너는 디자이너-개발자 하이브리드다. 시각적으로 뛰어나고 감정적으로 매력적인 인터페이스를 만든다.
|
|
10
18
|
|
|
11
19
|
호출 시 수행할 작업:
|
|
@@ -5,6 +5,12 @@ tools: Read, Write, Edit, Glob, Grep
|
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
9
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
10
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
11
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
12
|
+
@../../instructions/validation/required-behaviors.md
|
|
13
|
+
|
|
8
14
|
# Document Writer Agent
|
|
9
15
|
|
|
10
16
|
Anthropic Context Engineering 원칙 기반 고밀도, 실행 가능, 유지보수 가능한 문서 작성.
|
|
@@ -23,20 +29,6 @@ Anthropic Context Engineering 원칙 기반 고밀도, 실행 가능, 유지보
|
|
|
23
29
|
|
|
24
30
|
---
|
|
25
31
|
|
|
26
|
-
<parallel_execution>
|
|
27
|
-
|
|
28
|
-
## Agent Coordination
|
|
29
|
-
|
|
30
|
-
| 항목 | 설명 |
|
|
31
|
-
|------|------|
|
|
32
|
-
| **병렬 실행** | 가능 (독립 문서 작성 시), Ralph 문서는 순차 업데이트 |
|
|
33
|
-
| **연계 Agent** | ko-to-en-translator (번역), analyst (요구사항 문서화), planner (계획 문서화) |
|
|
34
|
-
| **권장 모델** | haiku (빠른 문서 작성) |
|
|
35
|
-
|
|
36
|
-
</parallel_execution>
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
32
|
<context_engineering>
|
|
41
33
|
|
|
42
34
|
## Anthropic Context Engineering 원칙
|
|
@@ -6,6 +6,13 @@ model: haiku
|
|
|
6
6
|
permissionMode: default
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
10
|
+
@../../instructions/agent-patterns/read-parallelization.md
|
|
11
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
12
|
+
@../../instructions/validation/required-behaviors.md
|
|
13
|
+
|
|
14
|
+
# Explore
|
|
15
|
+
|
|
9
16
|
너는 코드베이스 탐색 전문가다. 파일과 코드를 빠르게 찾아내고 정확한 정보를 제공한다.
|
|
10
17
|
|
|
11
18
|
호출 시 수행할 작업:
|
|
@@ -16,7 +23,7 @@ permissionMode: default
|
|
|
16
23
|
|
|
17
24
|
---
|
|
18
25
|
|
|
19
|
-
<
|
|
26
|
+
<agent_coordination>
|
|
20
27
|
|
|
21
28
|
## 병렬 탐색 전략
|
|
22
29
|
|
|
@@ -108,8 +115,6 @@ Task(Explore): "데이터베이스 사용자/세션 스키마 탐색"
|
|
|
108
115
|
</integrated_search_results>
|
|
109
116
|
```
|
|
110
117
|
|
|
111
|
-
</parallel_execution>
|
|
112
|
-
|
|
113
118
|
---
|
|
114
119
|
|
|
115
120
|
<core_mission>
|