@kood/claude-code 0.4.1 → 0.5.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.
Files changed (149) hide show
  1. package/dist/index.js +69 -12
  2. package/package.json +2 -1
  3. package/templates/.claude/PARALLEL_AGENTS.md +737 -0
  4. package/templates/.claude/agents/analyst.md +416 -0
  5. package/templates/.claude/agents/architect.md +569 -0
  6. package/templates/.claude/agents/code-reviewer.md +132 -133
  7. package/templates/.claude/agents/dependency-manager.md +93 -94
  8. package/templates/.claude/agents/deployment-validator.md +64 -65
  9. package/templates/.claude/agents/designer.md +655 -0
  10. package/templates/.claude/agents/document-writer.md +500 -0
  11. package/templates/.claude/agents/explore.md +499 -0
  12. package/templates/.claude/agents/git-operator.md +74 -75
  13. package/templates/.claude/agents/implementation-executor.md +138 -109
  14. package/templates/.claude/agents/ko-to-en-translator.md +18 -22
  15. package/templates/.claude/agents/lint-fixer.md +250 -93
  16. package/templates/.claude/agents/planner.md +356 -0
  17. package/templates/.claude/agents/refactor-advisor.md +135 -136
  18. package/templates/.claude/commands/bug-fix.md +296 -207
  19. package/templates/.claude/commands/git-all.md +199 -46
  20. package/templates/.claude/commands/git-session.md +113 -57
  21. package/templates/.claude/commands/lint-fix.md +219 -153
  22. package/templates/.claude/commands/lint-init.md +113 -76
  23. package/templates/.claude/commands/pre-deploy.md +190 -124
  24. package/templates/.claude/commands/refactor.md +407 -162
  25. package/templates/.claude/commands/version-update.md +138 -37
  26. package/templates/.claude/instructions/context-engineering/ANTHROPIC_CONTEXT_ENGINEERING.md +178 -0
  27. package/templates/.claude/instructions/context-engineering/references/claude-4x.md +215 -0
  28. package/templates/.claude/instructions/context-engineering/references/core-principles.md +137 -0
  29. package/templates/.claude/instructions/context-engineering/references/examples.md +351 -0
  30. package/templates/.claude/instructions/context-engineering/references/techniques.md +162 -0
  31. package/templates/.claude/instructions/parallel-agent-execution.md +874 -0
  32. package/templates/.claude/skills/docs-creator/AGENTS.md +238 -0
  33. package/templates/.claude/{commands/docs-creator.md → skills/docs-creator/SKILL.md} +61 -75
  34. package/templates/.claude/skills/docs-refactor/AGENTS.md +270 -0
  35. package/templates/.claude/{commands/docs-refactor.md → skills/docs-refactor/SKILL.md} +30 -44
  36. package/templates/.claude/skills/execute/SKILL.md +451 -0
  37. package/templates/.claude/skills/figma-to-code/AGENTS.md +287 -0
  38. package/templates/.claude/skills/figma-to-code/SKILL.md +225 -225
  39. package/templates/.claude/skills/figma-to-code/references/design-tokens.md +75 -73
  40. package/templates/.claude/skills/figma-to-code/references/figma-mcp-tools.md +73 -73
  41. package/templates/.claude/skills/figma-to-code/references/layout-mapping.md +104 -104
  42. package/templates/.claude/skills/figma-to-code/references/responsive-design.md +99 -99
  43. package/templates/.claude/skills/figma-to-code/references/verification.md +91 -91
  44. package/templates/.claude/skills/global-uiux-design/AGENTS.md +317 -0
  45. package/templates/.claude/skills/global-uiux-design/SKILL.md +738 -0
  46. package/templates/.claude/skills/global-uiux-design/references/accessibility.md +401 -0
  47. package/templates/.claude/skills/global-uiux-design/references/color-system.md +275 -0
  48. package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +206 -0
  49. package/templates/.claude/skills/global-uiux-design/references/design-systems.md +446 -0
  50. package/templates/.claude/skills/korea-uiux-design/AGENTS.md +307 -0
  51. package/templates/.claude/skills/korea-uiux-design/SKILL.md +170 -0
  52. package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +95 -116
  53. package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +134 -152
  54. package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-event-handler-refs.md +6 -6
  55. package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-use-latest.md +5 -5
  56. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-api-routes.md +5 -5
  57. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-defer-await.md +22 -22
  58. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-dependencies.md +5 -5
  59. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-parallel.md +4 -4
  60. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-suspense-boundaries.md +21 -21
  61. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-barrel-imports.md +18 -18
  62. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-conditional.md +4 -4
  63. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-defer-third-party.md +4 -4
  64. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-dynamic-imports.md +4 -4
  65. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-preload.md +5 -5
  66. package/templates/.claude/skills/nextjs-react-best-practices/rules/client-event-listeners.md +9 -9
  67. package/templates/.claude/skills/nextjs-react-best-practices/rules/client-swr-dedup.md +7 -7
  68. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-batch-dom-css.md +13 -13
  69. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-function-results.md +14 -14
  70. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-property-access.md +4 -4
  71. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-storage.md +10 -10
  72. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-combine-iterations.md +4 -4
  73. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-early-exit.md +7 -7
  74. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-hoist-regexp.md +6 -6
  75. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-index-maps.md +6 -6
  76. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-length-check-first.md +14 -14
  77. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-min-max-loop.md +16 -16
  78. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-set-map-lookups.md +4 -4
  79. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-tosorted-immutable.md +17 -17
  80. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-activity.md +4 -4
  81. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
  82. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-conditional-render.md +8 -8
  83. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-content-visibility.md +4 -4
  84. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
  85. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hydration-no-flicker.md +14 -14
  86. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-svg-precision.md +5 -5
  87. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-defer-reads.md +4 -4
  88. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-dependencies.md +7 -7
  89. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-derived-state.md +5 -5
  90. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-functional-setstate.md +34 -34
  91. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
  92. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-memo.md +5 -5
  93. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-transitions.md +4 -4
  94. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-after-nonblocking.md +24 -24
  95. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-lru.md +10 -10
  96. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-react.md +4 -4
  97. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-parallel-fetching.md +5 -5
  98. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-serialization.md +6 -6
  99. package/templates/.claude/skills/plan/SKILL.md +594 -0
  100. package/templates/.claude/skills/prd/SKILL.md +496 -0
  101. package/templates/.claude/skills/ralph/AGENTS.md +393 -0
  102. package/templates/.claude/skills/ralph/SKILL.md +1035 -0
  103. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +100 -121
  104. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +139 -157
  105. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +22 -22
  106. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +5 -5
  107. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +7 -7
  108. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +4 -4
  109. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +18 -18
  110. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +4 -4
  111. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +4 -4
  112. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +12 -12
  113. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +5 -5
  114. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +9 -9
  115. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +12 -12
  116. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +13 -13
  117. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +14 -14
  118. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +4 -4
  119. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +10 -10
  120. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +4 -4
  121. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +7 -7
  122. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +6 -6
  123. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +6 -6
  124. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +14 -14
  125. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +16 -16
  126. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +4 -4
  127. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +17 -17
  128. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
  129. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +8 -8
  130. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +4 -4
  131. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
  132. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +5 -5
  133. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +4 -4
  134. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +7 -7
  135. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +5 -5
  136. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +34 -34
  137. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
  138. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +5 -5
  139. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +4 -4
  140. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +12 -12
  141. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +14 -14
  142. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +9 -9
  143. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +6 -6
  144. package/templates/.claude/commands/agent-creator.md +0 -370
  145. package/templates/.claude/commands/command-creator.md +0 -524
  146. package/templates/.claude/commands/execute.md +0 -469
  147. package/templates/.claude/commands/git.md +0 -98
  148. package/templates/.claude/commands/plan.md +0 -526
  149. package/templates/.claude/commands/prd.md +0 -629
package/dist/index.js CHANGED
@@ -144,15 +144,24 @@ var listAvailableTemplates = async () => {
144
144
  }
145
145
  return templates;
146
146
  };
147
- var TEMPLATE_SKILLS_MAP = {
147
+ var FRAMEWORK_SPECIFIC_SKILLS_MAP = {
148
148
  nextjs: ["nextjs-react-best-practices", "korea-uiux-design", "figma-to-code"],
149
149
  "tanstack-start": [
150
150
  "tanstack-start-react-best-practices",
151
151
  "korea-uiux-design",
152
152
  "figma-to-code"
153
153
  ]
154
- // hono와 npx는 스킬 없음
154
+ // hono와 npx는 프레임워크별 스킬 없음
155
155
  };
156
+ var COMMON_SKILLS = [
157
+ "global-uiux-design",
158
+ "docs-creator",
159
+ "docs-refactor",
160
+ "plan",
161
+ "prd",
162
+ "ralph",
163
+ "execute"
164
+ ];
156
165
  var copySkills = async (templates, targetDir) => {
157
166
  const counter = { files: 0, directories: 0 };
158
167
  const targetSkillsDir = path.join(targetDir, ".claude", "skills");
@@ -162,8 +171,9 @@ var copySkills = async (templates, targetDir) => {
162
171
  }
163
172
  await fs.ensureDir(targetSkillsDir);
164
173
  const skillsToCopy = /* @__PURE__ */ new Set();
174
+ COMMON_SKILLS.forEach((skill) => skillsToCopy.add(skill));
165
175
  for (const template of templates) {
166
- const skills = TEMPLATE_SKILLS_MAP[template] || [];
176
+ const skills = FRAMEWORK_SPECIFIC_SKILLS_MAP[template] || [];
167
177
  skills.forEach((skill) => skillsToCopy.add(skill));
168
178
  }
169
179
  for (const skill of skillsToCopy) {
@@ -193,6 +203,7 @@ var checkExistingClaudeFiles = async (targetDir) => {
193
203
  const skillsDir = path.join(targetDir, ".claude", "skills");
194
204
  const commandsDir = path.join(targetDir, ".claude", "commands");
195
205
  const agentsDir = path.join(targetDir, ".claude", "agents");
206
+ const instructionsDir = path.join(targetDir, ".claude", "instructions");
196
207
  if (await fs.pathExists(skillsDir)) {
197
208
  existingFiles.push(".claude/skills/");
198
209
  }
@@ -202,6 +213,9 @@ var checkExistingClaudeFiles = async (targetDir) => {
202
213
  if (await fs.pathExists(agentsDir)) {
203
214
  existingFiles.push(".claude/agents/");
204
215
  }
216
+ if (await fs.pathExists(instructionsDir)) {
217
+ existingFiles.push(".claude/instructions/");
218
+ }
205
219
  return existingFiles;
206
220
  };
207
221
  var copyAgents = async (_templates, targetDir) => {
@@ -214,17 +228,34 @@ var copyAgents = async (_templates, targetDir) => {
214
228
  }
215
229
  return counter;
216
230
  };
231
+ var copyInstructions = async (_templates, targetDir) => {
232
+ const counter = { files: 0, directories: 0 };
233
+ const targetInstructionsDir = path.join(targetDir, ".claude", "instructions");
234
+ const instructionsSrc = path.join(
235
+ getTemplatesDir(),
236
+ ".claude",
237
+ "instructions"
238
+ );
239
+ if (await fs.pathExists(instructionsSrc)) {
240
+ await fs.ensureDir(targetInstructionsDir);
241
+ await copyRecursive(instructionsSrc, targetInstructionsDir, counter);
242
+ }
243
+ return counter;
244
+ };
217
245
  var checkAllExtrasExist = async (templates) => {
218
246
  const claudeDir = path.join(getTemplatesDir(), ".claude");
219
247
  const commandsSrc = path.join(claudeDir, "commands");
220
248
  const agentsSrc = path.join(claudeDir, "agents");
221
- const hasSkills = templates.some((template) => {
222
- const skills = TEMPLATE_SKILLS_MAP[template];
249
+ const instructionsSrc = path.join(claudeDir, "instructions");
250
+ const hasFrameworkSkills = templates.some((template) => {
251
+ const skills = FRAMEWORK_SPECIFIC_SKILLS_MAP[template];
223
252
  return skills && skills.length > 0;
224
253
  });
254
+ const hasSkills = COMMON_SKILLS.length > 0 || hasFrameworkSkills;
225
255
  const hasCommands = await hasFiles(commandsSrc);
226
256
  const hasAgents = await hasFiles(agentsSrc);
227
- return { hasSkills, hasCommands, hasAgents };
257
+ const hasInstructions = await hasFiles(instructionsSrc);
258
+ return { hasSkills, hasCommands, hasAgents, hasInstructions };
228
259
  };
229
260
 
230
261
  // src/commands/init.ts
@@ -317,12 +348,13 @@ var init = async (options) => {
317
348
  }
318
349
  logger.blank();
319
350
  logger.success(`Total: ${totalFiles} files, ${totalDirectories} directories`);
320
- const { hasSkills, hasCommands, hasAgents } = await checkAllExtrasExist(templates);
351
+ const { hasSkills, hasCommands, hasAgents, hasInstructions } = await checkAllExtrasExist(templates);
321
352
  let installSkills = options.skills ?? false;
322
353
  let installCommands = options.commands ?? false;
323
354
  let installAgents = options.agents ?? false;
324
- const noOptionsProvided = options.skills === void 0 && options.commands === void 0 && options.agents === void 0;
325
- if (noOptionsProvided && (hasSkills || hasCommands || hasAgents)) {
355
+ let installInstructions = options.instructions ?? false;
356
+ const noOptionsProvided = options.skills === void 0 && options.commands === void 0 && options.agents === void 0 && options.instructions === void 0;
357
+ if (noOptionsProvided && (hasSkills || hasCommands || hasAgents || hasInstructions)) {
326
358
  logger.blank();
327
359
  if (hasSkills) {
328
360
  const skillsResponse = await prompts({
@@ -351,8 +383,17 @@ var init = async (options) => {
351
383
  });
352
384
  installAgents = agentsResponse.install ?? false;
353
385
  }
386
+ if (hasInstructions) {
387
+ const instructionsResponse = await prompts({
388
+ type: "confirm",
389
+ name: "install",
390
+ message: "Install instructions to .claude/instructions/?",
391
+ initial: false
392
+ });
393
+ installInstructions = instructionsResponse.install ?? false;
394
+ }
354
395
  }
355
- if (installSkills || installCommands || installAgents) {
396
+ if (installSkills || installCommands || installAgents || installInstructions) {
356
397
  const existingClaudeFiles = await checkExistingClaudeFiles(targetDir);
357
398
  if (existingClaudeFiles.length > 0 && !options.force) {
358
399
  logger.warn("The following .claude files/folders already exist:");
@@ -369,6 +410,7 @@ var init = async (options) => {
369
410
  installSkills = false;
370
411
  installCommands = false;
371
412
  installAgents = false;
413
+ installInstructions = false;
372
414
  }
373
415
  }
374
416
  if (installSkills && hasSkills) {
@@ -407,13 +449,25 @@ var init = async (options) => {
407
449
  } else if (installAgents && !hasAgents) {
408
450
  logger.warn("No agents found in selected templates.");
409
451
  }
452
+ if (installInstructions && hasInstructions) {
453
+ logger.blank();
454
+ logger.info("Installing instructions...");
455
+ const instructionsResult = await copyInstructions(templates, targetDir);
456
+ totalFiles += instructionsResult.files;
457
+ totalDirectories += instructionsResult.directories;
458
+ logger.success(
459
+ `Instructions: ${instructionsResult.files} files, ${instructionsResult.directories} directories`
460
+ );
461
+ } else if (installInstructions && !hasInstructions) {
462
+ logger.warn("No instructions found in selected templates.");
463
+ }
410
464
  }
411
465
  logger.blank();
412
466
  logger.success("Claude Code documentation installed!");
413
467
  logger.blank();
414
468
  logger.info("Installed templates:");
415
469
  templates.forEach((t) => logger.step(t));
416
- if (installSkills && hasSkills || installCommands && hasCommands || installAgents && hasAgents) {
470
+ if (installSkills && hasSkills || installCommands && hasCommands || installAgents && hasAgents || installInstructions && hasInstructions) {
417
471
  logger.blank();
418
472
  logger.info("Installed extras:");
419
473
  if (installSkills && hasSkills) {
@@ -425,6 +479,9 @@ var init = async (options) => {
425
479
  if (installAgents && hasAgents) {
426
480
  logger.step("Agents \u2192 .claude/agents/");
427
481
  }
482
+ if (installInstructions && hasInstructions) {
483
+ logger.step("Instructions \u2192 .claude/instructions/");
484
+ }
428
485
  }
429
486
  logger.blank();
430
487
  logger.info("Next steps:");
@@ -435,7 +492,7 @@ var init = async (options) => {
435
492
 
436
493
  // src/index.ts
437
494
  var program = new Command();
438
- program.name("claude-code").description("Claude Code documentation installer for projects").version("0.4.1");
495
+ program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.1");
439
496
  program.option(
440
497
  "-t, --template <names>",
441
498
  "template names (comma-separated: tanstack-start,hono)"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kood/claude-code",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "description": "Claude Code documentation installer for projects",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -37,6 +37,7 @@
37
37
  "prompts": "^2.4.2"
38
38
  },
39
39
  "devDependencies": {
40
+ "@eslint/js": "^9.39.2",
40
41
  "@types/fs-extra": "^11.0.4",
41
42
  "@types/node": "^22.10.0",
42
43
  "@types/prompts": "^2.4.9",