@kood/claude-code 0.3.12 → 0.3.14

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 (92) hide show
  1. package/dist/index.js +30 -8
  2. package/package.json +4 -4
  3. package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +663 -0
  4. package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +269 -0
  5. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +751 -0
  6. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +431 -0
  7. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +80 -0
  8. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +36 -0
  9. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +44 -0
  10. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +28 -0
  11. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  12. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +31 -0
  13. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  14. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +67 -0
  15. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +50 -0
  16. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +74 -0
  17. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +77 -0
  18. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +82 -0
  19. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +80 -0
  20. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +28 -0
  21. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +70 -0
  22. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +32 -0
  23. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +50 -0
  24. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +45 -0
  25. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +37 -0
  26. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +49 -0
  27. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +82 -0
  28. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +24 -0
  29. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  30. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  31. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +40 -0
  32. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +38 -0
  33. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  34. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +28 -0
  35. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +39 -0
  36. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +45 -0
  37. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +29 -0
  38. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  39. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  40. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +44 -0
  41. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +40 -0
  42. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +41 -0
  43. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +67 -0
  44. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +60 -0
  45. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +38 -0
  46. package/templates/.claude/skills/vercel-react-best-practices/AGENTS.md +0 -2249
  47. package/templates/.claude/skills/vercel-react-best-practices/SKILL.md +0 -125
  48. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/advanced-event-handler-refs.md +0 -0
  49. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/advanced-use-latest.md +0 -0
  50. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/async-api-routes.md +0 -0
  51. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/async-defer-await.md +0 -0
  52. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/async-dependencies.md +0 -0
  53. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/async-parallel.md +0 -0
  54. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/async-suspense-boundaries.md +0 -0
  55. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/bundle-barrel-imports.md +0 -0
  56. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/bundle-conditional.md +0 -0
  57. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/bundle-defer-third-party.md +0 -0
  58. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/bundle-dynamic-imports.md +0 -0
  59. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/bundle-preload.md +0 -0
  60. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/client-event-listeners.md +0 -0
  61. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/client-swr-dedup.md +0 -0
  62. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-batch-dom-css.md +0 -0
  63. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-cache-function-results.md +0 -0
  64. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-cache-property-access.md +0 -0
  65. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-cache-storage.md +0 -0
  66. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-combine-iterations.md +0 -0
  67. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-early-exit.md +0 -0
  68. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-hoist-regexp.md +0 -0
  69. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-index-maps.md +0 -0
  70. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-length-check-first.md +0 -0
  71. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-min-max-loop.md +0 -0
  72. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-set-map-lookups.md +0 -0
  73. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/js-tosorted-immutable.md +0 -0
  74. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-activity.md +0 -0
  75. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
  76. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-conditional-render.md +0 -0
  77. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-content-visibility.md +0 -0
  78. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-hoist-jsx.md +0 -0
  79. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
  80. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rendering-svg-precision.md +0 -0
  81. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-defer-reads.md +0 -0
  82. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-dependencies.md +0 -0
  83. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-derived-state.md +0 -0
  84. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-functional-setstate.md +0 -0
  85. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-lazy-state-init.md +0 -0
  86. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-memo.md +0 -0
  87. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/rerender-transitions.md +0 -0
  88. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/server-after-nonblocking.md +0 -0
  89. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/server-cache-lru.md +0 -0
  90. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/server-cache-react.md +0 -0
  91. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/server-parallel-fetching.md +0 -0
  92. /package/templates/.claude/skills/{vercel-react-best-practices → nextjs-react-best-practices}/rules/server-serialization.md +0 -0
package/dist/index.js CHANGED
@@ -144,13 +144,33 @@ var listAvailableTemplates = async () => {
144
144
  }
145
145
  return templates;
146
146
  };
147
- var copySkills = async (_templates, targetDir) => {
147
+ var TEMPLATE_SKILLS_MAP = {
148
+ nextjs: ["nextjs-react-best-practices", "vs-design-diverge"],
149
+ "tanstack-start": [
150
+ "tanstack-start-react-best-practices",
151
+ "vs-design-diverge"
152
+ ]
153
+ // hono와 npx는 스킬 없음
154
+ };
155
+ var copySkills = async (templates, targetDir) => {
148
156
  const counter = { files: 0, directories: 0 };
149
157
  const targetSkillsDir = path.join(targetDir, ".claude", "skills");
150
158
  const skillsSrc = path.join(getTemplatesDir(), ".claude", "skills");
151
- if (await fs.pathExists(skillsSrc)) {
152
- await fs.ensureDir(targetSkillsDir);
153
- await copyRecursive(skillsSrc, targetSkillsDir, counter);
159
+ if (!await fs.pathExists(skillsSrc)) {
160
+ return counter;
161
+ }
162
+ await fs.ensureDir(targetSkillsDir);
163
+ const skillsToCopy = /* @__PURE__ */ new Set();
164
+ for (const template of templates) {
165
+ const skills = TEMPLATE_SKILLS_MAP[template] || [];
166
+ skills.forEach((skill) => skillsToCopy.add(skill));
167
+ }
168
+ for (const skill of skillsToCopy) {
169
+ const skillSrc = path.join(skillsSrc, skill);
170
+ const skillDest = path.join(targetSkillsDir, skill);
171
+ if (await fs.pathExists(skillSrc)) {
172
+ await copyRecursive(skillSrc, skillDest, counter);
173
+ }
154
174
  }
155
175
  return counter;
156
176
  };
@@ -190,12 +210,14 @@ var copyAgents = async (_templates, targetDir) => {
190
210
  }
191
211
  return counter;
192
212
  };
193
- var checkAllExtrasExist = async (_templates) => {
213
+ var checkAllExtrasExist = async (templates) => {
194
214
  const claudeDir = path.join(getTemplatesDir(), ".claude");
195
- const skillsSrc = path.join(claudeDir, "skills");
196
215
  const commandsSrc = path.join(claudeDir, "commands");
197
216
  const agentsSrc = path.join(claudeDir, "agents");
198
- const hasSkills = await hasFiles(skillsSrc);
217
+ const hasSkills = templates.some((template) => {
218
+ const skills = TEMPLATE_SKILLS_MAP[template];
219
+ return skills && skills.length > 0;
220
+ });
199
221
  const hasCommands = await hasFiles(commandsSrc);
200
222
  const hasAgents = await hasFiles(agentsSrc);
201
223
  return { hasSkills, hasCommands, hasAgents };
@@ -409,7 +431,7 @@ var init = async (options) => {
409
431
 
410
432
  // src/index.ts
411
433
  var program = new Command();
412
- program.name("claude-code").description("Claude Code documentation installer for projects").version("0.3.12");
434
+ program.name("claude-code").description("Claude Code documentation installer for projects").version("0.3.14");
413
435
  program.option(
414
436
  "-t, --template <names>",
415
437
  "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.3.12",
3
+ "version": "0.3.14",
4
4
  "description": "Claude Code documentation installer for projects",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -10,11 +10,11 @@
10
10
  ],
11
11
  "scripts": {
12
12
  "copy-templates": "node scripts/copy-templates.js",
13
- "build": "tsup && npm run copy-templates",
14
- "dev": "npm run build && node dist/index.js",
13
+ "build": "yarn tsup && yarn run copy-templates",
14
+ "dev": "yarn run build && node dist/index.js",
15
15
  "lint": "eslint src/",
16
16
  "lint:fix": "eslint src/ --fix",
17
- "prepublishOnly": "npm run build"
17
+ "prepublishOnly": "yarn run build"
18
18
  },
19
19
  "keywords": [
20
20
  "claude",