oh-my-customcode 0.1.4 → 0.2.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 (436) hide show
  1. package/README.md +80 -129
  2. package/dist/cli/index.js +273 -100
  3. package/dist/index.js +11 -53
  4. package/package.json +1 -1
  5. package/templates/{agents/sw-architect/documenter/AGENT.md → .claude/agents/arch-documenter.md} +7 -39
  6. package/templates/{agents/sw-architect/speckit-agent/AGENT.md → .claude/agents/arch-speckit-agent.md} +61 -63
  7. package/templates/.claude/agents/be-express-expert.md +71 -0
  8. package/templates/.claude/agents/be-fastapi-expert.md +33 -0
  9. package/templates/.claude/agents/be-go-backend-expert.md +33 -0
  10. package/templates/.claude/agents/be-nestjs-expert.md +51 -0
  11. package/templates/.claude/agents/be-springboot-expert.md +75 -0
  12. package/templates/.claude/agents/db-supabase-expert.md +63 -0
  13. package/templates/{agents/sw-engineer/frontend/svelte-agent/AGENT.md → .claude/agents/fe-svelte-agent.md} +16 -31
  14. package/templates/.claude/agents/fe-vercel-agent.md +57 -0
  15. package/templates/{agents/sw-engineer/frontend/vuejs-agent/AGENT.md → .claude/agents/fe-vuejs-agent.md} +16 -31
  16. package/templates/.claude/agents/infra-aws-expert.md +37 -0
  17. package/templates/.claude/agents/infra-docker-expert.md +37 -0
  18. package/templates/.claude/agents/lang-golang-expert.md +33 -0
  19. package/templates/.claude/agents/lang-java21-expert.md +56 -0
  20. package/templates/.claude/agents/lang-kotlin-expert.md +33 -0
  21. package/templates/.claude/agents/lang-python-expert.md +33 -0
  22. package/templates/.claude/agents/lang-rust-expert.md +33 -0
  23. package/templates/.claude/agents/lang-typescript-expert.md +33 -0
  24. package/templates/.claude/agents/mgr-creator.md +102 -0
  25. package/templates/{agents/manager/gitnerd/AGENT.md → .claude/agents/mgr-gitnerd.md} +8 -17
  26. package/templates/.claude/agents/mgr-sauron.md +139 -0
  27. package/templates/{agents/manager/supplier/AGENT.md → .claude/agents/mgr-supplier.md} +14 -46
  28. package/templates/.claude/agents/mgr-sync-checker.md +89 -0
  29. package/templates/{agents/manager/updater/AGENT.md → .claude/agents/mgr-updater.md} +21 -53
  30. package/templates/{agents/qa-team/qa-engineer/AGENT.md → .claude/agents/qa-engineer.md} +13 -24
  31. package/templates/{agents/qa-team/qa-planner/AGENT.md → .claude/agents/qa-planner.md} +10 -20
  32. package/templates/{agents/qa-team/qa-writer/AGENT.md → .claude/agents/qa-writer.md} +10 -20
  33. package/templates/.claude/agents/sys-memory-keeper.md +105 -0
  34. package/templates/.claude/agents/sys-naggy.md +81 -0
  35. package/templates/{agents/sw-engineer/tooling/bun-expert/AGENT.md → .claude/agents/tool-bun-expert.md} +28 -39
  36. package/templates/.claude/agents/tool-npm-expert.md +76 -0
  37. package/templates/.claude/agents/tool-optimizer.md +75 -0
  38. package/templates/{agents/tutor/go-tutor/AGENT.md → .claude/agents/tutor-go.md} +16 -27
  39. package/templates/.claude/contexts/ecomode.md +5 -5
  40. package/templates/.claude/rules/MUST-agent-design.md +60 -42
  41. package/templates/.claude/rules/MUST-agent-identification.md +11 -11
  42. package/templates/.claude/rules/MUST-continuous-improvement.md +2 -2
  43. package/templates/.claude/rules/MUST-intent-transparency.md +18 -18
  44. package/templates/.claude/rules/MUST-orchestrator-coordination.md +192 -113
  45. package/templates/.claude/rules/MUST-parallel-execution.md +28 -28
  46. package/templates/.claude/rules/MUST-sync-verification.md +52 -45
  47. package/templates/.claude/rules/MUST-tool-identification.md +12 -14
  48. package/templates/.claude/rules/SHOULD-ecomode.md +3 -3
  49. package/templates/.claude/rules/SHOULD-hud-statusline.md +4 -4
  50. package/templates/.claude/rules/SHOULD-memory-integration.md +4 -4
  51. package/templates/.claude/rules/SHOULD-pipeline-mode.md +1 -1
  52. package/templates/.claude/skills/audit-agents/SKILL.md +116 -0
  53. package/templates/{skills/infrastructure → .claude/skills}/aws-best-practices/SKILL.md +4 -4
  54. package/templates/.claude/skills/create-agent/SKILL.md +91 -0
  55. package/templates/.claude/skills/dev-lead-routing/SKILL.md +238 -0
  56. package/templates/{commands/dev/refactor.md → .claude/skills/dev-refactor/SKILL.md} +17 -20
  57. package/templates/{commands/dev/review.md → .claude/skills/dev-review/SKILL.md} +16 -17
  58. package/templates/{agents/manager/supplier/refs/skills/infrastructure → .claude/skills}/docker-best-practices/SKILL.md +4 -4
  59. package/templates/{agents/manager/supplier/refs/skills/backend → .claude/skills}/fastapi-best-practices/SKILL.md +4 -4
  60. package/templates/.claude/skills/fix-refs/SKILL.md +107 -0
  61. package/templates/{agents/manager/supplier/refs/skills/backend → .claude/skills}/go-backend-best-practices/SKILL.md +4 -4
  62. package/templates/{skills/development → .claude/skills}/go-best-practices/SKILL.md +4 -4
  63. package/templates/{commands/system/help.md → .claude/skills/help/SKILL.md} +34 -46
  64. package/templates/{skills/orchestration → .claude/skills}/intent-detection/SKILL.md +14 -14
  65. package/templates/{agents/manager/supplier/refs/skills/orchestration → .claude/skills}/intent-detection/patterns/agent-triggers.yaml +117 -110
  66. package/templates/{agents/sw-engineer/language/kotlin-expert/refs → .claude/skills}/kotlin-best-practices/SKILL.md +4 -4
  67. package/templates/{commands/system/lists.md → .claude/skills/lists/SKILL.md} +25 -33
  68. package/templates/{agents/manager/supplier/refs/skills/system → .claude/skills}/memory-management/SKILL.md +10 -10
  69. package/templates/{commands/memory/recall.md → .claude/skills/memory-recall/SKILL.md} +31 -43
  70. package/templates/{commands/memory/save.md → .claude/skills/memory-save/SKILL.md} +27 -29
  71. package/templates/.claude/skills/npm-audit/SKILL.md +72 -0
  72. package/templates/.claude/skills/npm-publish/SKILL.md +63 -0
  73. package/templates/.claude/skills/npm-version/SKILL.md +75 -0
  74. package/templates/.claude/skills/optimize-analyze/SKILL.md +55 -0
  75. package/templates/.claude/skills/optimize-bundle/SKILL.md +67 -0
  76. package/templates/.claude/skills/optimize-report/SKILL.md +74 -0
  77. package/templates/{skills/orchestration → .claude/skills}/pipeline-execution/SKILL.md +4 -4
  78. package/templates/{commands/pipeline/list.md → .claude/skills/pipeline-list/SKILL.md} +11 -18
  79. package/templates/{commands/pipeline/run.md → .claude/skills/pipeline-run/SKILL.md} +38 -22
  80. package/templates/{agents/sw-engineer/language/python-expert/refs → .claude/skills}/python-best-practices/SKILL.md +4 -4
  81. package/templates/.claude/skills/qa-lead-routing/SKILL.md +277 -0
  82. package/templates/{skills/development → .claude/skills}/react-best-practices/SKILL.md +4 -4
  83. package/templates/{skills/system → .claude/skills}/result-aggregation/SKILL.md +17 -17
  84. package/templates/{agents/sw-engineer/language/rust-expert/refs → .claude/skills}/rust-best-practices/SKILL.md +4 -4
  85. package/templates/.claude/skills/sauron-watch/SKILL.md +144 -0
  86. package/templates/.claude/skills/secretary-routing/SKILL.md +178 -0
  87. package/templates/{skills/backend → .claude/skills}/springboot-best-practices/SKILL.md +4 -4
  88. package/templates/{commands/system/status.md → .claude/skills/status/SKILL.md} +29 -39
  89. package/templates/.claude/skills/supabase-postgres-best-practices/SKILL.md +98 -0
  90. package/templates/{skills/development → .claude/skills}/typescript-best-practices/SKILL.md +4 -4
  91. package/templates/{commands/updater/docs.md → .claude/skills/update-docs/SKILL.md} +71 -96
  92. package/templates/{commands/updater/external.md → .claude/skills/update-external/SKILL.md} +34 -99
  93. package/templates/{agents/manager/supplier/refs/skills/development → .claude/skills}/vercel-deploy/SKILL.md +4 -4
  94. package/templates/{agents/manager/supplier/refs/skills/development → .claude/skills}/web-design-guidelines/SKILL.md +4 -4
  95. package/templates/CLAUDE.md.en +75 -100
  96. package/templates/CLAUDE.md.ko +74 -99
  97. package/templates/guides/aws/index.yaml +1 -1
  98. package/templates/guides/docker/index.yaml +1 -1
  99. package/templates/guides/fastapi/index.yaml +1 -1
  100. package/templates/guides/go-backend/index.yaml +1 -1
  101. package/templates/guides/golang/index.yaml +1 -1
  102. package/templates/guides/index.yaml +9 -0
  103. package/templates/guides/kotlin/index.yaml +1 -1
  104. package/templates/guides/python/index.yaml +1 -1
  105. package/templates/guides/rust/index.yaml +1 -1
  106. package/templates/guides/springboot/index.yaml +1 -1
  107. package/templates/guides/supabase-postgres/README.md +32 -0
  108. package/templates/guides/supabase-postgres/index.yaml +19 -0
  109. package/templates/guides/typescript/index.yaml +1 -1
  110. package/templates/manifest.json +9 -15
  111. package/templates/pipelines/examples/code-review.yaml +1 -1
  112. package/templates/agents/index.yaml +0 -243
  113. package/templates/agents/infra-engineer/aws-expert/AGENT.md +0 -47
  114. package/templates/agents/infra-engineer/aws-expert/index.yaml +0 -27
  115. package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +0 -169
  116. package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +0 -26
  117. package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +0 -143
  118. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +0 -279
  119. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +0 -27
  120. package/templates/agents/infra-engineer/docker-expert/AGENT.md +0 -47
  121. package/templates/agents/infra-engineer/docker-expert/index.yaml +0 -27
  122. package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +0 -284
  123. package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +0 -262
  124. package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +0 -26
  125. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +0 -274
  126. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +0 -26
  127. package/templates/agents/manager/creator/AGENT.md +0 -274
  128. package/templates/agents/manager/creator/index.yaml +0 -66
  129. package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +0 -93
  130. package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +0 -107
  131. package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +0 -108
  132. package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +0 -132
  133. package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +0 -199
  134. package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +0 -62
  135. package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +0 -334
  136. package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +0 -398
  137. package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +0 -84
  138. package/templates/agents/manager/creator/refs/rules/MUST-safety.md +0 -69
  139. package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +0 -219
  140. package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +0 -174
  141. package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +0 -145
  142. package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +0 -102
  143. package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +0 -96
  144. package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +0 -103
  145. package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +0 -114
  146. package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +0 -165
  147. package/templates/agents/manager/creator/refs/rules/index.yaml +0 -125
  148. package/templates/agents/manager/gitnerd/index.yaml +0 -55
  149. package/templates/agents/manager/sauron/AGENT.md +0 -153
  150. package/templates/agents/manager/sauron/index.yaml +0 -52
  151. package/templates/agents/manager/supplier/index.yaml +0 -31
  152. package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +0 -169
  153. package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +0 -26
  154. package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +0 -143
  155. package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +0 -42
  156. package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +0 -107
  157. package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +0 -90
  158. package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +0 -129
  159. package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +0 -165
  160. package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +0 -100
  161. package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +0 -58
  162. package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +0 -80
  163. package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +0 -89
  164. package/templates/agents/manager/supplier/refs/guides/claude-code/11-sub-agents.md +0 -159
  165. package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +0 -51
  166. package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +0 -284
  167. package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +0 -262
  168. package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +0 -26
  169. package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +0 -232
  170. package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +0 -21
  171. package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +0 -26
  172. package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +0 -243
  173. package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +0 -212
  174. package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +0 -282
  175. package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +0 -309
  176. package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +0 -250
  177. package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +0 -27
  178. package/templates/agents/manager/supplier/refs/guides/index.yaml +0 -101
  179. package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +0 -247
  180. package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +0 -234
  181. package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +0 -26
  182. package/templates/agents/manager/supplier/refs/guides/python/index.yaml +0 -26
  183. package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +0 -202
  184. package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +0 -79
  185. package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +0 -262
  186. package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +0 -26
  187. package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +0 -180
  188. package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +0 -361
  189. package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +0 -22
  190. package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +0 -225
  191. package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +0 -26
  192. package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +0 -219
  193. package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +0 -66
  194. package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +0 -20
  195. package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +0 -102
  196. package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +0 -93
  197. package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +0 -107
  198. package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +0 -108
  199. package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +0 -132
  200. package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +0 -199
  201. package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +0 -62
  202. package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +0 -334
  203. package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +0 -398
  204. package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +0 -84
  205. package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +0 -69
  206. package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +0 -219
  207. package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +0 -174
  208. package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +0 -145
  209. package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +0 -102
  210. package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +0 -96
  211. package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +0 -103
  212. package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +0 -114
  213. package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +0 -165
  214. package/templates/agents/manager/supplier/refs/rules/index.yaml +0 -125
  215. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +0 -25
  216. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +0 -26
  217. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +0 -356
  218. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +0 -27
  219. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +0 -202
  220. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +0 -25
  221. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +0 -255
  222. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +0 -27
  223. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +0 -221
  224. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +0 -25
  225. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +0 -100
  226. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +0 -39
  227. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +0 -266
  228. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +0 -26
  229. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +0 -320
  230. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +0 -28
  231. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +0 -30
  232. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +0 -34
  233. package/templates/agents/manager/supplier/refs/skills/index.yaml +0 -129
  234. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +0 -279
  235. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +0 -27
  236. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +0 -26
  237. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +0 -214
  238. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +0 -30
  239. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +0 -188
  240. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +0 -27
  241. package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +0 -30
  242. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +0 -163
  243. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +0 -36
  244. package/templates/agents/manager/sync-checker/AGENT.md +0 -34
  245. package/templates/agents/manager/sync-checker/index.yaml +0 -32
  246. package/templates/agents/manager/updater/index.yaml +0 -31
  247. package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +0 -93
  248. package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +0 -107
  249. package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +0 -108
  250. package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +0 -132
  251. package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +0 -199
  252. package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +0 -62
  253. package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +0 -334
  254. package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +0 -398
  255. package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +0 -84
  256. package/templates/agents/manager/updater/refs/rules/MUST-safety.md +0 -69
  257. package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +0 -219
  258. package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +0 -174
  259. package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +0 -145
  260. package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +0 -102
  261. package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +0 -96
  262. package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +0 -103
  263. package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +0 -114
  264. package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +0 -165
  265. package/templates/agents/manager/updater/refs/rules/index.yaml +0 -125
  266. package/templates/agents/orchestrator/dev-lead/AGENT.md +0 -163
  267. package/templates/agents/orchestrator/dev-lead/index.yaml +0 -73
  268. package/templates/agents/orchestrator/planner/AGENT.md +0 -102
  269. package/templates/agents/orchestrator/planner/index.yaml +0 -38
  270. package/templates/agents/orchestrator/qa-lead/AGENT.md +0 -92
  271. package/templates/agents/orchestrator/qa-lead/index.yaml +0 -40
  272. package/templates/agents/orchestrator/secretary/AGENT.md +0 -181
  273. package/templates/agents/orchestrator/secretary/index.yaml +0 -55
  274. package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +0 -93
  275. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +0 -107
  276. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +0 -108
  277. package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +0 -132
  278. package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +0 -199
  279. package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +0 -62
  280. package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +0 -334
  281. package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +0 -398
  282. package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +0 -84
  283. package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +0 -69
  284. package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +0 -219
  285. package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +0 -174
  286. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +0 -145
  287. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +0 -102
  288. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +0 -96
  289. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +0 -103
  290. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +0 -114
  291. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +0 -165
  292. package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +0 -125
  293. package/templates/agents/qa-team/qa-engineer/index.yaml +0 -59
  294. package/templates/agents/qa-team/qa-planner/index.yaml +0 -47
  295. package/templates/agents/qa-team/qa-writer/index.yaml +0 -44
  296. package/templates/agents/sw-architect/documenter/index.yaml +0 -39
  297. package/templates/agents/sw-architect/speckit-agent/index.yaml +0 -78
  298. package/templates/agents/sw-engineer/backend/express-expert/AGENT.md +0 -132
  299. package/templates/agents/sw-engineer/backend/express-expert/index.yaml +0 -36
  300. package/templates/agents/sw-engineer/backend/fastapi-expert/AGENT.md +0 -47
  301. package/templates/agents/sw-engineer/backend/fastapi-expert/index.yaml +0 -27
  302. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +0 -232
  303. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +0 -21
  304. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +0 -269
  305. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +0 -25
  306. package/templates/agents/sw-engineer/backend/go-backend-expert/AGENT.md +0 -47
  307. package/templates/agents/sw-engineer/backend/go-backend-expert/index.yaml +0 -27
  308. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +0 -26
  309. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +0 -243
  310. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +0 -212
  311. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +0 -337
  312. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +0 -26
  313. package/templates/agents/sw-engineer/backend/nestjs-expert/AGENT.md +0 -107
  314. package/templates/agents/sw-engineer/backend/nestjs-expert/index.yaml +0 -43
  315. package/templates/agents/sw-engineer/backend/springboot-expert/AGENT.md +0 -103
  316. package/templates/agents/sw-engineer/backend/springboot-expert/index.yaml +0 -69
  317. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +0 -361
  318. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +0 -22
  319. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +0 -356
  320. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +0 -27
  321. package/templates/agents/sw-engineer/frontend/svelte-agent/index.yaml +0 -41
  322. package/templates/agents/sw-engineer/frontend/vercel-agent/AGENT.md +0 -67
  323. package/templates/agents/sw-engineer/frontend/vercel-agent/index.yaml +0 -43
  324. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +0 -100
  325. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +0 -39
  326. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +0 -73
  327. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +0 -30
  328. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +0 -66
  329. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +0 -20
  330. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +0 -102
  331. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +0 -117
  332. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +0 -34
  333. package/templates/agents/sw-engineer/frontend/vuejs-agent/index.yaml +0 -48
  334. package/templates/agents/sw-engineer/language/golang-expert/AGENT.md +0 -47
  335. package/templates/agents/sw-engineer/language/golang-expert/index.yaml +0 -27
  336. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +0 -202
  337. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +0 -25
  338. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +0 -282
  339. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +0 -309
  340. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +0 -250
  341. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +0 -27
  342. package/templates/agents/sw-engineer/language/java21-expert/AGENT.md +0 -122
  343. package/templates/agents/sw-engineer/language/java21-expert/index.yaml +0 -51
  344. package/templates/agents/sw-engineer/language/kotlin-expert/AGENT.md +0 -47
  345. package/templates/agents/sw-engineer/language/kotlin-expert/index.yaml +0 -27
  346. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +0 -247
  347. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +0 -234
  348. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +0 -26
  349. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +0 -27
  350. package/templates/agents/sw-engineer/language/python-expert/AGENT.md +0 -47
  351. package/templates/agents/sw-engineer/language/python-expert/index.yaml +0 -27
  352. package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +0 -26
  353. package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +0 -202
  354. package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +0 -79
  355. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +0 -25
  356. package/templates/agents/sw-engineer/language/rust-expert/AGENT.md +0 -47
  357. package/templates/agents/sw-engineer/language/rust-expert/index.yaml +0 -27
  358. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +0 -262
  359. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +0 -26
  360. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +0 -180
  361. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +0 -26
  362. package/templates/agents/sw-engineer/language/typescript-expert/AGENT.md +0 -47
  363. package/templates/agents/sw-engineer/language/typescript-expert/index.yaml +0 -27
  364. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +0 -225
  365. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +0 -26
  366. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +0 -219
  367. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +0 -320
  368. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +0 -28
  369. package/templates/agents/sw-engineer/tooling/bun-expert/index.yaml +0 -46
  370. package/templates/agents/sw-engineer/tooling/npm-expert/AGENT.md +0 -160
  371. package/templates/agents/sw-engineer/tooling/npm-expert/index.yaml +0 -45
  372. package/templates/agents/sw-engineer/tooling/optimizer/AGENT.md +0 -170
  373. package/templates/agents/sw-engineer/tooling/optimizer/index.yaml +0 -45
  374. package/templates/agents/system/memory-keeper/AGENT.md +0 -126
  375. package/templates/agents/system/memory-keeper/index.yaml +0 -45
  376. package/templates/agents/system/naggy/AGENT.md +0 -72
  377. package/templates/agents/system/naggy/index.yaml +0 -35
  378. package/templates/agents/tutor/go-tutor/index.yaml +0 -48
  379. package/templates/commands/COMMANDS.md +0 -136
  380. package/templates/commands/creator/agent.md +0 -121
  381. package/templates/commands/git/branch.yaml +0 -8
  382. package/templates/commands/git/commit.yaml +0 -4
  383. package/templates/commands/git/pr.yaml +0 -4
  384. package/templates/commands/git/status.yaml +0 -4
  385. package/templates/commands/git/sync.yaml +0 -4
  386. package/templates/commands/index.yaml +0 -225
  387. package/templates/commands/intent/explain.md +0 -144
  388. package/templates/commands/naggy/add.yaml +0 -8
  389. package/templates/commands/naggy/done.yaml +0 -8
  390. package/templates/commands/naggy/list.yaml +0 -4
  391. package/templates/commands/naggy/priority.yaml +0 -11
  392. package/templates/commands/naggy/remind.yaml +0 -4
  393. package/templates/commands/npm/audit.yaml +0 -62
  394. package/templates/commands/npm/publish.yaml +0 -52
  395. package/templates/commands/npm/version.yaml +0 -62
  396. package/templates/commands/optimize/analyze.yaml +0 -34
  397. package/templates/commands/optimize/bundle.yaml +0 -50
  398. package/templates/commands/optimize/report.yaml +0 -56
  399. package/templates/commands/sauron/quick.yaml +0 -4
  400. package/templates/commands/sauron/report.yaml +0 -4
  401. package/templates/commands/sauron/watch.yaml +0 -4
  402. package/templates/commands/supplier/audit.md +0 -133
  403. package/templates/commands/supplier/fix.md +0 -121
  404. package/templates/commands/sync/agents.yaml +0 -4
  405. package/templates/commands/sync/check.yaml +0 -4
  406. package/templates/commands/sync/commands.yaml +0 -4
  407. package/templates/commands/sync/docs.yaml +0 -4
  408. package/templates/commands/sync/fix.yaml +0 -4
  409. package/templates/skills/backend/fastapi-best-practices/SKILL.md +0 -269
  410. package/templates/skills/backend/fastapi-best-practices/index.yaml +0 -25
  411. package/templates/skills/backend/go-backend-best-practices/SKILL.md +0 -337
  412. package/templates/skills/backend/go-backend-best-practices/index.yaml +0 -26
  413. package/templates/skills/backend/springboot-best-practices/index.yaml +0 -27
  414. package/templates/skills/development/go-best-practices/index.yaml +0 -25
  415. package/templates/skills/development/kotlin-best-practices/SKILL.md +0 -255
  416. package/templates/skills/development/kotlin-best-practices/index.yaml +0 -27
  417. package/templates/skills/development/python-best-practices/SKILL.md +0 -221
  418. package/templates/skills/development/python-best-practices/index.yaml +0 -25
  419. package/templates/skills/development/react-best-practices/index.yaml +0 -39
  420. package/templates/skills/development/rust-best-practices/SKILL.md +0 -266
  421. package/templates/skills/development/rust-best-practices/index.yaml +0 -26
  422. package/templates/skills/development/typescript-best-practices/index.yaml +0 -28
  423. package/templates/skills/development/vercel-deploy/SKILL.md +0 -73
  424. package/templates/skills/development/vercel-deploy/index.yaml +0 -30
  425. package/templates/skills/development/web-design-guidelines/SKILL.md +0 -117
  426. package/templates/skills/development/web-design-guidelines/index.yaml +0 -34
  427. package/templates/skills/index.yaml +0 -129
  428. package/templates/skills/infrastructure/aws-best-practices/index.yaml +0 -27
  429. package/templates/skills/infrastructure/docker-best-practices/SKILL.md +0 -274
  430. package/templates/skills/infrastructure/docker-best-practices/index.yaml +0 -26
  431. package/templates/skills/orchestration/intent-detection/index.yaml +0 -30
  432. package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +0 -342
  433. package/templates/skills/orchestration/pipeline-execution/index.yaml +0 -27
  434. package/templates/skills/system/memory-management/SKILL.md +0 -194
  435. package/templates/skills/system/memory-management/index.yaml +0 -30
  436. package/templates/skills/system/result-aggregation/index.yaml +0 -36
package/dist/cli/index.js CHANGED
@@ -12095,34 +12095,18 @@ async function countDirectories(dirPath) {
12095
12095
  const entries = await fs.readdir(dirPath, { withFileTypes: true });
12096
12096
  return entries.filter((e) => e.isDirectory()).length;
12097
12097
  }
12098
- async function countAgentsInTypeDir(typePath) {
12098
+ async function countAgents(agentsDir) {
12099
12099
  let count = 0;
12100
12100
  try {
12101
- const entries = await fs.readdir(typePath, { withFileTypes: true });
12101
+ const entries = await fs.readdir(agentsDir, { withFileTypes: true });
12102
12102
  for (const entry of entries) {
12103
- if (!entry.isDirectory())
12104
- continue;
12105
- const agentMdPath = path.join(typePath, entry.name, "AGENT.md");
12106
- if (await pathExists(agentMdPath)) {
12103
+ if (entry.isFile() && entry.name.endsWith(".md")) {
12107
12104
  count++;
12108
12105
  }
12109
12106
  }
12110
12107
  } catch {}
12111
12108
  return count;
12112
12109
  }
12113
- async function countAgents(agentsDir) {
12114
- let count = 0;
12115
- try {
12116
- const typeEntries = await fs.readdir(agentsDir, { withFileTypes: true });
12117
- for (const typeEntry of typeEntries) {
12118
- if (!typeEntry.isDirectory())
12119
- continue;
12120
- const typePath = path.join(agentsDir, typeEntry.name);
12121
- count += await countAgentsInTypeDir(typePath);
12122
- }
12123
- } catch {}
12124
- return count;
12125
- }
12126
12110
  async function checkClaudeMd(targetDir) {
12127
12111
  const claudeMdPath = path.join(targetDir, "CLAUDE.md");
12128
12112
  const exists2 = await pathExists(claudeMdPath);
@@ -12161,7 +12145,7 @@ async function checkRules(targetDir) {
12161
12145
  };
12162
12146
  }
12163
12147
  async function checkAgents(targetDir) {
12164
- const agentsDir = path.join(targetDir, "agents");
12148
+ const agentsDir = path.join(targetDir, ".claude", "agents");
12165
12149
  const exists2 = await isDirectory(agentsDir);
12166
12150
  if (!exists2) {
12167
12151
  return {
@@ -12188,17 +12172,8 @@ async function checkAgents(targetDir) {
12188
12172
  };
12189
12173
  }
12190
12174
  async function checkSymlinks(targetDir) {
12191
- const agentsDir = path.join(targetDir, "agents");
12192
- const skillsDir = path.join(targetDir, "skills");
12175
+ const skillsDir = path.join(targetDir, ".claude", "skills");
12193
12176
  const brokenSymlinks = [];
12194
- if (await isDirectory(agentsDir)) {
12195
- const agentSymlinks = await findRefsSymlinks(agentsDir);
12196
- for (const symlink of agentSymlinks) {
12197
- if (!await isValidSymlink(symlink)) {
12198
- brokenSymlinks.push(symlink);
12199
- }
12200
- }
12201
- }
12202
12177
  if (await isDirectory(skillsDir)) {
12203
12178
  const skillSymlinks = await findRefsSymlinks(skillsDir);
12204
12179
  for (const symlink of skillSymlinks) {
@@ -12259,7 +12234,7 @@ async function checkIndexFiles(targetDir) {
12259
12234
  };
12260
12235
  }
12261
12236
  async function checkSkills(targetDir) {
12262
- const skillsDir = path.join(targetDir, "skills");
12237
+ const skillsDir = path.join(targetDir, ".claude", "skills");
12263
12238
  const exists2 = await isDirectory(skillsDir);
12264
12239
  if (!exists2) {
12265
12240
  return {
@@ -12285,6 +12260,105 @@ async function checkSkills(targetDir) {
12285
12260
  fixable: false
12286
12261
  };
12287
12262
  }
12263
+ async function checkGuides(targetDir) {
12264
+ const guidesDir = path.join(targetDir, "guides");
12265
+ const exists2 = await isDirectory(guidesDir);
12266
+ if (!exists2) {
12267
+ return {
12268
+ name: "Guides",
12269
+ status: "fail",
12270
+ message: "guides/ directory not found",
12271
+ fixable: true
12272
+ };
12273
+ }
12274
+ const topicCount = await countDirectories(guidesDir);
12275
+ if (topicCount === 0) {
12276
+ return {
12277
+ name: "Guides",
12278
+ status: "warn",
12279
+ message: "guides/ directory is empty (0 topics found)",
12280
+ fixable: false
12281
+ };
12282
+ }
12283
+ return {
12284
+ name: "Guides",
12285
+ status: "pass",
12286
+ message: `Guides OK (${topicCount} topics)`,
12287
+ fixable: false
12288
+ };
12289
+ }
12290
+ async function checkHooks(targetDir) {
12291
+ const hooksDir = path.join(targetDir, ".claude", "hooks");
12292
+ const exists2 = await isDirectory(hooksDir);
12293
+ if (!exists2) {
12294
+ return {
12295
+ name: "Hooks",
12296
+ status: "fail",
12297
+ message: ".claude/hooks/ directory not found",
12298
+ fixable: true
12299
+ };
12300
+ }
12301
+ const hookFiles = await findFiles(hooksDir, /\.(sh|json|yaml)$/);
12302
+ if (hookFiles.length === 0) {
12303
+ return {
12304
+ name: "Hooks",
12305
+ status: "warn",
12306
+ message: ".claude/hooks/ directory is empty",
12307
+ fixable: false
12308
+ };
12309
+ }
12310
+ return {
12311
+ name: "Hooks",
12312
+ status: "pass",
12313
+ message: `Hooks OK (${hookFiles.length} files)`,
12314
+ fixable: false
12315
+ };
12316
+ }
12317
+ async function checkPipelines(targetDir) {
12318
+ const pipelinesDir = path.join(targetDir, "pipelines");
12319
+ const exists2 = await isDirectory(pipelinesDir);
12320
+ if (!exists2) {
12321
+ return {
12322
+ name: "Pipelines",
12323
+ status: "fail",
12324
+ message: "pipelines/ directory not found",
12325
+ fixable: true
12326
+ };
12327
+ }
12328
+ return {
12329
+ name: "Pipelines",
12330
+ status: "pass",
12331
+ message: "Pipelines OK",
12332
+ fixable: false
12333
+ };
12334
+ }
12335
+ async function checkContexts(targetDir) {
12336
+ const contextsDir = path.join(targetDir, ".claude", "contexts");
12337
+ const exists2 = await isDirectory(contextsDir);
12338
+ if (!exists2) {
12339
+ return {
12340
+ name: "Contexts",
12341
+ status: "fail",
12342
+ message: ".claude/contexts/ directory not found",
12343
+ fixable: true
12344
+ };
12345
+ }
12346
+ const contextFiles = await findFiles(contextsDir, /\.md$/);
12347
+ if (contextFiles.length === 0) {
12348
+ return {
12349
+ name: "Contexts",
12350
+ status: "warn",
12351
+ message: ".claude/contexts/ directory is empty",
12352
+ fixable: false
12353
+ };
12354
+ }
12355
+ return {
12356
+ name: "Contexts",
12357
+ status: "pass",
12358
+ message: `Contexts OK (${contextFiles.length} files)`,
12359
+ fixable: false
12360
+ };
12361
+ }
12288
12362
  async function fixBrokenSymlinks(_targetDir, brokenSymlinks) {
12289
12363
  let fixed = 0;
12290
12364
  for (const symlink of brokenSymlinks) {
@@ -12306,8 +12380,12 @@ async function createMissingDirectory(dirPath) {
12306
12380
  async function fixSingleIssue(check, targetDir) {
12307
12381
  const fixMap = {
12308
12382
  Rules: () => createMissingDirectory(path.join(targetDir, ".claude", "rules")),
12309
- Agents: () => createMissingDirectory(path.join(targetDir, "agents")),
12310
- Skills: () => createMissingDirectory(path.join(targetDir, "skills")),
12383
+ Agents: () => createMissingDirectory(path.join(targetDir, ".claude", "agents")),
12384
+ Skills: () => createMissingDirectory(path.join(targetDir, ".claude", "skills")),
12385
+ Guides: () => createMissingDirectory(path.join(targetDir, "guides")),
12386
+ Hooks: () => createMissingDirectory(path.join(targetDir, ".claude", "hooks")),
12387
+ Pipelines: () => createMissingDirectory(path.join(targetDir, "pipelines")),
12388
+ Contexts: () => createMissingDirectory(path.join(targetDir, ".claude", "contexts")),
12311
12389
  Symlinks: async () => {
12312
12390
  if (!check.details || check.details.length === 0)
12313
12391
  return false;
@@ -12360,7 +12438,11 @@ async function doctorCommand(options = {}) {
12360
12438
  checkAgents(targetDir),
12361
12439
  checkSkills(targetDir),
12362
12440
  checkSymlinks(targetDir),
12363
- checkIndexFiles(targetDir)
12441
+ checkIndexFiles(targetDir),
12442
+ checkGuides(targetDir),
12443
+ checkHooks(targetDir),
12444
+ checkPipelines(targetDir),
12445
+ checkContexts(targetDir)
12364
12446
  ]);
12365
12447
  if (options.fix) {
12366
12448
  const hasFixableIssues = checks.some((c) => c.status === "fail" && c.fixable);
@@ -12830,37 +12912,20 @@ var DIRECTORY_STRUCTURE = [
12830
12912
  ".claude/rules",
12831
12913
  ".claude/hooks",
12832
12914
  ".claude/contexts",
12833
- "agents",
12834
- "agents/master",
12835
- "agents/orchestrator",
12836
- "agents/manager",
12837
- "agents/system",
12838
- "agents/sw-engineer",
12839
- "agents/sw-architect",
12840
- "agents/backend-engineer",
12841
- "agents/infra-engineer",
12842
- "agents/qa-engineer",
12843
- "agents/tutor",
12844
- "skills",
12845
- "skills/development",
12846
- "skills/backend",
12847
- "skills/infrastructure",
12848
- "skills/system",
12849
- "skills/orchestration",
12915
+ ".claude/agents",
12916
+ ".claude/skills",
12850
12917
  "guides",
12851
12918
  "pipelines",
12852
12919
  "pipelines/templates",
12853
- "pipelines/examples",
12854
- "commands"
12920
+ "pipelines/examples"
12855
12921
  ];
12856
12922
  var COMPONENT_PATHS = {
12857
12923
  "claude-md": "",
12858
12924
  rules: ".claude/rules",
12859
- agents: "agents",
12860
- skills: "skills",
12925
+ agents: ".claude/agents",
12926
+ skills: ".claude/skills",
12861
12927
  guides: "guides",
12862
12928
  pipelines: "pipelines",
12863
- commands: "commands",
12864
12929
  hooks: ".claude/hooks",
12865
12930
  contexts: ".claude/contexts"
12866
12931
  };
@@ -12973,7 +13038,7 @@ async function createDirectoryStructure(targetDir) {
12973
13038
  }
12974
13039
  }
12975
13040
  function getAllComponents() {
12976
- return ["rules", "agents", "skills", "guides", "pipelines", "commands", "hooks", "contexts"];
13041
+ return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
12977
13042
  }
12978
13043
  async function installComponent(targetDir, component, options) {
12979
13044
  const templatePath = COMPONENT_PATHS[component];
@@ -13023,15 +13088,7 @@ async function backupExisting(sourcePath, backupDir) {
13023
13088
  return backupPath;
13024
13089
  }
13025
13090
  async function checkExistingPaths(targetDir) {
13026
- const pathsToCheck = [
13027
- "CLAUDE.md",
13028
- ".claude",
13029
- "agents",
13030
- "skills",
13031
- "guides",
13032
- "pipelines",
13033
- "commands"
13034
- ];
13091
+ const pathsToCheck = ["CLAUDE.md", ".claude", "guides", "pipelines"];
13035
13092
  const existingPaths = [];
13036
13093
  for (const relativePath of pathsToCheck) {
13037
13094
  const fullPath = join3(targetDir, relativePath);
@@ -13192,14 +13249,26 @@ function parseYamlMetadata(content) {
13192
13249
  }
13193
13250
  return result;
13194
13251
  }
13195
- function extractAgentTypeFromPath(agentPath, baseDir) {
13196
- const relativePath = relative(join5(baseDir, "agents"), agentPath);
13197
- const parts = relativePath.split("/").filter(Boolean);
13198
- parts.pop();
13199
- return parts.join("/") || "unknown";
13252
+ function extractAgentTypeFromFilename(filename) {
13253
+ const name = basename2(filename, ".md");
13254
+ const prefixMap = {
13255
+ lang: "language",
13256
+ be: "backend",
13257
+ fe: "frontend",
13258
+ tool: "tooling",
13259
+ db: "database",
13260
+ arch: "architect",
13261
+ infra: "infrastructure",
13262
+ qa: "qa",
13263
+ mgr: "manager",
13264
+ sys: "system",
13265
+ tutor: "tutor"
13266
+ };
13267
+ const prefix = name.split("-")[0];
13268
+ return prefixMap[prefix] || "unknown";
13200
13269
  }
13201
13270
  function extractSkillCategoryFromPath(skillPath, baseDir) {
13202
- const relativePath = relative(join5(baseDir, "skills"), skillPath);
13271
+ const relativePath = relative(join5(baseDir, ".claude", "skills"), skillPath);
13203
13272
  const parts = relativePath.split("/").filter(Boolean);
13204
13273
  return parts[0] || "unknown";
13205
13274
  }
@@ -13213,28 +13282,67 @@ function extractRulePriorityFromFilename(filename) {
13213
13282
  const parts = name.split("-");
13214
13283
  return parts[0] || "unknown";
13215
13284
  }
13285
+ function shouldSkipLine(trimmed, inFrontmatter) {
13286
+ if (inFrontmatter)
13287
+ return true;
13288
+ if (trimmed.startsWith("#"))
13289
+ return true;
13290
+ if (trimmed.startsWith("```"))
13291
+ return true;
13292
+ if (trimmed === "---")
13293
+ return true;
13294
+ return false;
13295
+ }
13296
+ function cleanMarkdownFormatting(text) {
13297
+ return text.replace(/\*\*/g, "").replace(/\*/g, "");
13298
+ }
13299
+ function truncateText(text, maxLength) {
13300
+ if (!maxLength || text.length <= maxLength)
13301
+ return text;
13302
+ return `${text.substring(0, maxLength)}...`;
13303
+ }
13304
+ function processDescription(text, options) {
13305
+ const cleaned = options.cleanFormatting ? cleanMarkdownFormatting(text) : text;
13306
+ return truncateText(cleaned, options.maxLength);
13307
+ }
13308
+ function extractFromBlockquote(trimmed, options) {
13309
+ const text = trimmed.replace(/^>\s*/, "").trim();
13310
+ return processDescription(text, options);
13311
+ }
13312
+ function* skipFrontmatter(lines) {
13313
+ let inFrontmatter = false;
13314
+ let lineIndex = 0;
13315
+ for (const line of lines) {
13316
+ const trimmed = line.trim();
13317
+ if (lineIndex === 0 && trimmed === "---") {
13318
+ inFrontmatter = true;
13319
+ lineIndex++;
13320
+ continue;
13321
+ }
13322
+ if (inFrontmatter && trimmed === "---") {
13323
+ inFrontmatter = false;
13324
+ lineIndex++;
13325
+ continue;
13326
+ }
13327
+ if (!inFrontmatter) {
13328
+ yield { trimmed, lineIndex };
13329
+ }
13330
+ lineIndex++;
13331
+ }
13332
+ }
13216
13333
  function extractDescriptionFromMarkdown(content, options = {}) {
13217
13334
  const { maxLength, cleanFormatting = false } = options;
13218
13335
  const lines = content.split(`
13219
13336
  `);
13220
- for (const line of lines) {
13221
- const trimmed = line.trim();
13222
- if (trimmed.startsWith("#") || trimmed.startsWith("```") || trimmed.startsWith("---")) {
13337
+ for (const { trimmed } of skipFrontmatter(lines)) {
13338
+ if (shouldSkipLine(trimmed, false)) {
13223
13339
  continue;
13224
13340
  }
13225
13341
  if (trimmed.startsWith(">")) {
13226
- let description = trimmed.replace(/^>\s*/, "").trim();
13227
- if (cleanFormatting) {
13228
- description = description.replace(/\*\*/g, "").replace(/\*/g, "");
13229
- }
13230
- return description;
13342
+ return extractFromBlockquote(trimmed, { cleanFormatting, maxLength });
13231
13343
  }
13232
13344
  if (trimmed) {
13233
- let description = trimmed;
13234
- if (maxLength && description.length > maxLength) {
13235
- description = `${description.substring(0, maxLength)}...`;
13236
- }
13237
- return description;
13345
+ return processDescription(trimmed, { cleanFormatting, maxLength });
13238
13346
  }
13239
13347
  }
13240
13348
  return;
@@ -13259,22 +13367,21 @@ async function tryExtractMarkdownDescription(mdPath, options = {}) {
13259
13367
  }
13260
13368
  }
13261
13369
  async function getAgents(targetDir) {
13262
- const agentsDir = join5(targetDir, "agents");
13370
+ const agentsDir = join5(targetDir, ".claude", "agents");
13263
13371
  if (!await fileExists(agentsDir))
13264
13372
  return [];
13265
13373
  try {
13266
- const agentMdFiles = await listFiles(agentsDir, { recursive: true, pattern: "AGENT.md" });
13374
+ const agentMdFiles = await listFiles(agentsDir, { recursive: false, pattern: "*.md" });
13267
13375
  const agents = await Promise.all(agentMdFiles.map(async (agentMdPath) => {
13268
- const agentDir = dirname2(agentMdPath);
13269
- const indexYamlPath = join5(agentDir, "index.yaml");
13270
- const { description: yamlDesc, version } = await tryReadIndexYamlMetadata(indexYamlPath);
13271
- const description = yamlDesc ?? await tryExtractMarkdownDescription(agentMdPath);
13376
+ const filename = basename2(agentMdPath);
13377
+ const name = basename2(filename, ".md");
13378
+ const description = await tryExtractMarkdownDescription(agentMdPath);
13272
13379
  return {
13273
- name: basename2(agentDir),
13274
- type: extractAgentTypeFromPath(agentDir, targetDir),
13275
- path: relative(targetDir, agentDir),
13380
+ name,
13381
+ type: extractAgentTypeFromFilename(filename),
13382
+ path: relative(targetDir, agentMdPath),
13276
13383
  description,
13277
- version
13384
+ version: undefined
13278
13385
  };
13279
13386
  }));
13280
13387
  return agents.sort((a, b) => a.name.localeCompare(b.name));
@@ -13283,7 +13390,7 @@ async function getAgents(targetDir) {
13283
13390
  }
13284
13391
  }
13285
13392
  async function getSkills(targetDir) {
13286
- const skillsDir = join5(targetDir, "skills");
13393
+ const skillsDir = join5(targetDir, ".claude", "skills");
13287
13394
  if (!await fileExists(skillsDir))
13288
13395
  return [];
13289
13396
  try {
@@ -13393,11 +13500,71 @@ ${type} (${components.length}):`);
13393
13500
  function formatAsJson(components) {
13394
13501
  console.log(JSON.stringify(components, null, 2));
13395
13502
  }
13503
+ async function getHooks(targetDir) {
13504
+ const hooksDir = join5(targetDir, ".claude", "hooks");
13505
+ if (!await fileExists(hooksDir))
13506
+ return [];
13507
+ try {
13508
+ const hookFiles = await listFiles(hooksDir, { recursive: true, pattern: "*.sh" });
13509
+ const hookConfigs = await listFiles(hooksDir, { recursive: true, pattern: "*.json" });
13510
+ const hookYamls = await listFiles(hooksDir, { recursive: true, pattern: "*.yaml" });
13511
+ const allFiles = [...hookFiles, ...hookConfigs, ...hookYamls];
13512
+ return allFiles.map((hookPath) => ({
13513
+ name: basename2(hookPath),
13514
+ type: "hook",
13515
+ path: relative(targetDir, hookPath)
13516
+ })).sort((a, b) => a.name.localeCompare(b.name));
13517
+ } catch {
13518
+ return [];
13519
+ }
13520
+ }
13521
+ async function getContexts(targetDir) {
13522
+ const contextsDir = join5(targetDir, ".claude", "contexts");
13523
+ if (!await fileExists(contextsDir))
13524
+ return [];
13525
+ try {
13526
+ const mdFiles = await listFiles(contextsDir, { recursive: false, pattern: "*.md" });
13527
+ const yamlFiles = await listFiles(contextsDir, { recursive: false, pattern: "*.yaml" });
13528
+ const allFiles = [...mdFiles, ...yamlFiles];
13529
+ const contexts = await Promise.all(allFiles.map(async (ctxPath) => {
13530
+ const ext = ctxPath.endsWith(".md") ? ".md" : ".yaml";
13531
+ const description = ext === ".md" ? await tryExtractMarkdownDescription(ctxPath, { maxLength: 100 }) : undefined;
13532
+ return {
13533
+ name: basename2(ctxPath, ext),
13534
+ type: "context",
13535
+ path: relative(targetDir, ctxPath),
13536
+ description
13537
+ };
13538
+ }));
13539
+ return contexts.sort((a, b) => a.name.localeCompare(b.name));
13540
+ } catch {
13541
+ return [];
13542
+ }
13543
+ }
13544
+ async function getPipelines(targetDir) {
13545
+ const pipelinesDir = join5(targetDir, "pipelines");
13546
+ if (!await fileExists(pipelinesDir))
13547
+ return [];
13548
+ try {
13549
+ const pipelineFiles = await listFiles(pipelinesDir, { recursive: true, pattern: "*.yaml" });
13550
+ return pipelineFiles.map((pipePath) => ({
13551
+ name: basename2(pipePath, ".yaml"),
13552
+ type: "pipeline",
13553
+ category: relative(join5(targetDir, "pipelines"), dirname2(pipePath)) || "root",
13554
+ path: relative(targetDir, pipePath)
13555
+ })).sort((a, b) => a.name.localeCompare(b.name));
13556
+ } catch {
13557
+ return [];
13558
+ }
13559
+ }
13396
13560
  var COMPONENT_GETTERS = {
13397
13561
  agents: getAgents,
13398
13562
  skills: getSkills,
13399
13563
  guides: getGuides,
13400
- rules: getRules
13564
+ rules: getRules,
13565
+ hooks: getHooks,
13566
+ contexts: getContexts,
13567
+ pipelines: getPipelines
13401
13568
  };
13402
13569
  function displayComponents(components, type, format) {
13403
13570
  if (format === "json") {
@@ -13409,19 +13576,25 @@ function displayComponents(components, type, format) {
13409
13576
  }
13410
13577
  }
13411
13578
  async function handleListAll(targetDir, format) {
13412
- const [agents, skills, guides, rules] = await Promise.all([
13579
+ const [agents, skills, guides, rules, hooks, contexts, pipelines] = await Promise.all([
13413
13580
  getAgents(targetDir),
13414
13581
  getSkills(targetDir),
13415
13582
  getGuides(targetDir),
13416
- getRules(targetDir)
13583
+ getRules(targetDir),
13584
+ getHooks(targetDir),
13585
+ getContexts(targetDir),
13586
+ getPipelines(targetDir)
13417
13587
  ]);
13418
13588
  if (format !== "json") {
13419
13589
  displayComponents(agents, "agents", format);
13420
13590
  displayComponents(skills, "skills", format);
13421
13591
  displayComponents(guides, "guides", format);
13422
13592
  displayComponents(rules, "rules", format);
13593
+ displayComponents(hooks, "hooks", format);
13594
+ displayComponents(contexts, "contexts", format);
13595
+ displayComponents(pipelines, "pipelines", format);
13423
13596
  }
13424
- return [...agents, ...skills, ...guides, ...rules];
13597
+ return [...agents, ...skills, ...guides, ...rules, ...hooks, ...contexts, ...pipelines];
13425
13598
  }
13426
13599
  async function listCommand(type = "all", options = {}) {
13427
13600
  const targetDir = process.cwd();
package/dist/index.js CHANGED
@@ -1,20 +1,4 @@
1
1
  import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
2
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
19
3
 
20
4
  // src/core/config.ts
@@ -422,37 +406,20 @@ var DIRECTORY_STRUCTURE = [
422
406
  ".claude/rules",
423
407
  ".claude/hooks",
424
408
  ".claude/contexts",
425
- "agents",
426
- "agents/master",
427
- "agents/orchestrator",
428
- "agents/manager",
429
- "agents/system",
430
- "agents/sw-engineer",
431
- "agents/sw-architect",
432
- "agents/backend-engineer",
433
- "agents/infra-engineer",
434
- "agents/qa-engineer",
435
- "agents/tutor",
436
- "skills",
437
- "skills/development",
438
- "skills/backend",
439
- "skills/infrastructure",
440
- "skills/system",
441
- "skills/orchestration",
409
+ ".claude/agents",
410
+ ".claude/skills",
442
411
  "guides",
443
412
  "pipelines",
444
413
  "pipelines/templates",
445
- "pipelines/examples",
446
- "commands"
414
+ "pipelines/examples"
447
415
  ];
448
416
  var COMPONENT_PATHS = {
449
417
  "claude-md": "",
450
418
  rules: ".claude/rules",
451
- agents: "agents",
452
- skills: "skills",
419
+ agents: ".claude/agents",
420
+ skills: ".claude/skills",
453
421
  guides: "guides",
454
422
  pipelines: "pipelines",
455
- commands: "commands",
456
423
  hooks: ".claude/hooks",
457
424
  contexts: ".claude/contexts"
458
425
  };
@@ -592,7 +559,7 @@ async function getTemplateManifest() {
592
559
  };
593
560
  }
594
561
  function getAllComponents() {
595
- return ["rules", "agents", "skills", "guides", "pipelines", "commands", "hooks", "contexts"];
562
+ return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
596
563
  }
597
564
  async function installComponent(targetDir, component, options) {
598
565
  const templatePath = COMPONENT_PATHS[component];
@@ -642,15 +609,7 @@ async function backupExisting(sourcePath, backupDir) {
642
609
  return backupPath;
643
610
  }
644
611
  async function checkExistingPaths(targetDir) {
645
- const pathsToCheck = [
646
- "CLAUDE.md",
647
- ".claude",
648
- "agents",
649
- "skills",
650
- "guides",
651
- "pipelines",
652
- "commands"
653
- ];
612
+ const pathsToCheck = ["CLAUDE.md", ".claude", "guides", "pipelines"];
654
613
  const existingPaths = [];
655
614
  for (const relativePath of pathsToCheck) {
656
615
  const fullPath = join3(targetDir, relativePath);
@@ -805,7 +764,7 @@ async function preserveCustomizations(targetDir, customizations) {
805
764
  return preserved;
806
765
  }
807
766
  function getAllUpdateComponents() {
808
- return ["rules", "agents", "skills", "guides", "pipelines", "commands", "hooks", "contexts"];
767
+ return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
809
768
  }
810
769
  async function getLatestVersion() {
811
770
  const manifestPath = resolveTemplatePath("manifest.json");
@@ -850,11 +809,10 @@ async function updateComponent(targetDir, component, customizations, options) {
850
809
  function getComponentPath(component) {
851
810
  const paths = {
852
811
  rules: ".claude/rules",
853
- agents: "agents",
854
- skills: "skills",
812
+ agents: ".claude/agents",
813
+ skills: ".claude/skills",
855
814
  guides: "guides",
856
815
  pipelines: "pipelines",
857
- commands: "commands",
858
816
  hooks: ".claude/hooks",
859
817
  contexts: ".claude/contexts"
860
818
  };
@@ -865,7 +823,7 @@ async function backupInstallation(targetDir) {
865
823
  const backupDir = join4(targetDir, `.omcustom-backup-${timestamp}`);
866
824
  const fs = await import("node:fs/promises");
867
825
  await ensureDirectory(backupDir);
868
- const dirsToBackup = [".claude", "agents", "skills", "guides", "pipelines", "commands"];
826
+ const dirsToBackup = [".claude", "guides", "pipelines"];
869
827
  for (const dir of dirsToBackup) {
870
828
  const srcPath = join4(targetDir, dir);
871
829
  if (await fileExists(srcPath)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-customcode",
3
- "version": "0.1.4",
3
+ "version": "0.2.1",
4
4
  "description": "Batteries-included agent harness for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {