codymaster 4.1.0

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 (193) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +285 -0
  3. package/adapters/antigravity.js +15 -0
  4. package/adapters/claude-code.js +17 -0
  5. package/adapters/cursor.js +16 -0
  6. package/commands/bootstrap.md +49 -0
  7. package/commands/build.md +48 -0
  8. package/commands/content.md +48 -0
  9. package/commands/continuity.md +60 -0
  10. package/commands/debug.md +51 -0
  11. package/commands/demo.md +96 -0
  12. package/commands/deploy.md +51 -0
  13. package/commands/plan.md +42 -0
  14. package/commands/review.md +55 -0
  15. package/commands/track.md +46 -0
  16. package/commands/ux.md +46 -0
  17. package/dist/agent-dispatch.js +161 -0
  18. package/dist/chains/builtin.js +85 -0
  19. package/dist/continuity.js +385 -0
  20. package/dist/dashboard.js +926 -0
  21. package/dist/data.js +122 -0
  22. package/dist/index.js +2434 -0
  23. package/dist/judge.js +252 -0
  24. package/dist/parallel-dispatch.js +359 -0
  25. package/dist/parallel-quality.js +172 -0
  26. package/dist/skill-chain.js +258 -0
  27. package/install.sh +513 -0
  28. package/package.json +79 -0
  29. package/skills/.content-factory-state.json +132 -0
  30. package/skills/.git 2/logs/refs/heads/main +1 -0
  31. package/skills/.git 2/logs/refs/remotes/origin/main +1 -0
  32. package/skills/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  33. package/skills/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  34. package/skills/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  35. package/skills/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  36. package/skills/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  37. package/skills/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  38. package/skills/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  39. package/skills/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  40. package/skills/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  41. package/skills/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  42. package/skills/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  43. package/skills/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  44. package/skills/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  45. package/skills/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  46. package/skills/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  47. package/skills/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  48. package/skills/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  49. package/skills/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  50. package/skills/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  51. package/skills/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  52. package/skills/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  53. package/skills/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  54. package/skills/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  55. package/skills/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  56. package/skills/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  57. package/skills/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  58. package/skills/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  59. package/skills/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  60. package/skills/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  61. package/skills/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  62. package/skills/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  63. package/skills/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  64. package/skills/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  65. package/skills/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  66. package/skills/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  67. package/skills/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  68. package/skills/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  69. package/skills/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  70. package/skills/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  71. package/skills/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  72. package/skills/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  73. package/skills/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  74. package/skills/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  75. package/skills/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
  76. package/skills/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  77. package/skills/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  78. package/skills/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  79. package/skills/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  80. package/skills/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  81. package/skills/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  82. package/skills/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  83. package/skills/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  84. package/skills/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  85. package/skills/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  86. package/skills/.git 2/refs/heads/main +1 -0
  87. package/skills/.git 2/refs/remotes/origin/main +1 -0
  88. package/skills/.pytest_cache 2/v/cache/nodeids +76 -0
  89. package/skills/.pytest_cache 2/v/cache/stepwise +1 -0
  90. package/skills/_shared/helpers.md +123 -0
  91. package/skills/_shared/outputs-convention.md +24 -0
  92. package/skills/cm-ads-tracker/SKILL.md +109 -0
  93. package/skills/cm-ads-tracker/evals/evals.json +55 -0
  94. package/skills/cm-ads-tracker/references/gtm-architecture.md +321 -0
  95. package/skills/cm-ads-tracker/references/industry-events.md +294 -0
  96. package/skills/cm-ads-tracker/references/platforms-api.md +238 -0
  97. package/skills/cm-ads-tracker/templates/capi-payload.md +79 -0
  98. package/skills/cm-ads-tracker/templates/datalayer-push.js +104 -0
  99. package/skills/cm-ads-tracker/templates/gtm-variables.js +56 -0
  100. package/skills/cm-brainstorm-idea/SKILL.md +423 -0
  101. package/skills/cm-code-review/SKILL.md +151 -0
  102. package/skills/cm-content-factory/SKILL.md +416 -0
  103. package/skills/cm-continuity/SKILL.md +399 -0
  104. package/skills/cm-dashboard/SKILL.md +533 -0
  105. package/skills/cm-dashboard/ui/app.js +1270 -0
  106. package/skills/cm-dashboard/ui/index.html +206 -0
  107. package/skills/cm-dashboard/ui/style.css +440 -0
  108. package/skills/cm-debugging/SKILL.md +412 -0
  109. package/skills/cm-deep-search/SKILL.md +242 -0
  110. package/skills/cm-design-system/SKILL.md +97 -0
  111. package/skills/cm-design-system/resources/halo-modern.md +40 -0
  112. package/skills/cm-design-system/resources/lunaris-advanced.md +40 -0
  113. package/skills/cm-design-system/resources/nitro-enterprise.md +39 -0
  114. package/skills/cm-design-system/resources/shadcn-default.md +37 -0
  115. package/skills/cm-dockit/README.md +100 -0
  116. package/skills/cm-dockit/SKILL.md +302 -0
  117. package/skills/cm-dockit/index.html +443 -0
  118. package/skills/cm-dockit/package-lock.json +1850 -0
  119. package/skills/cm-dockit/package.json +14 -0
  120. package/skills/cm-dockit/prompts/analysis.md +34 -0
  121. package/skills/cm-dockit/prompts/api-reference.md +24 -0
  122. package/skills/cm-dockit/prompts/architecture.md +21 -0
  123. package/skills/cm-dockit/prompts/data-flow.md +20 -0
  124. package/skills/cm-dockit/prompts/database.md +21 -0
  125. package/skills/cm-dockit/prompts/deployment.md +22 -0
  126. package/skills/cm-dockit/prompts/flows.md +21 -0
  127. package/skills/cm-dockit/prompts/jtbd.md +20 -0
  128. package/skills/cm-dockit/prompts/personas.md +24 -0
  129. package/skills/cm-dockit/prompts/sop-modules.md +40 -0
  130. package/skills/cm-dockit/scripts/doc-gen.sh +121 -0
  131. package/skills/cm-dockit/scripts/dockit-dashboard.sh +142 -0
  132. package/skills/cm-dockit/scripts/dockit-runner.sh +607 -0
  133. package/skills/cm-dockit/scripts/dockit-task.sh +166 -0
  134. package/skills/cm-dockit/skills/analyze-codebase.md +174 -0
  135. package/skills/cm-dockit/skills/api-reference.md +237 -0
  136. package/skills/cm-dockit/skills/changelog-guide.md +195 -0
  137. package/skills/cm-dockit/skills/content-guidelines.md +190 -0
  138. package/skills/cm-dockit/skills/sop-guide.md +184 -0
  139. package/skills/cm-dockit/skills/tech-docs.md +287 -0
  140. package/skills/cm-dockit/templates/markdown/structure.md +60 -0
  141. package/skills/cm-dockit/templates/vitepress-premium/.vitepress/config.mts +110 -0
  142. package/skills/cm-dockit/templates/vitepress-premium/.vitepress/theme/custom.css +189 -0
  143. package/skills/cm-dockit/templates/vitepress-premium/.vitepress/theme/index.ts +4 -0
  144. package/skills/cm-dockit/templates/vitepress-premium/package.json +19 -0
  145. package/skills/cm-dockit/templates/vitepress-premium/tests/frontend.test.ts +45 -0
  146. package/skills/cm-dockit/tests/runner.test.ts +66 -0
  147. package/skills/cm-dockit/workflows/export-markdown.md +82 -0
  148. package/skills/cm-dockit/workflows/generate-docs.md +68 -0
  149. package/skills/cm-dockit/workflows/setup-vitepress.md +181 -0
  150. package/skills/cm-example/SKILL.md +26 -0
  151. package/skills/cm-execution/SKILL.md +268 -0
  152. package/skills/cm-git-worktrees/SKILL.md +164 -0
  153. package/skills/cm-how-it-work/SKILL.md +189 -0
  154. package/skills/cm-identity-guard/SKILL.md +412 -0
  155. package/skills/cm-jtbd/SKILL.md +98 -0
  156. package/skills/cm-planning/SKILL.md +130 -0
  157. package/skills/cm-project-bootstrap/SKILL.md +161 -0
  158. package/skills/cm-project-bootstrap/templates/AGENTS.md +42 -0
  159. package/skills/cm-project-bootstrap/templates/frontend-safety.test.js +51 -0
  160. package/skills/cm-project-bootstrap/templates/i18n-sync.test.js +38 -0
  161. package/skills/cm-project-bootstrap/templates/pr-template.md +12 -0
  162. package/skills/cm-project-bootstrap/templates/project-identity.json +29 -0
  163. package/skills/cm-project-bootstrap/templates/vitest.config.js +10 -0
  164. package/skills/cm-quality-gate/SKILL.md +218 -0
  165. package/skills/cm-readit/SKILL.md +289 -0
  166. package/skills/cm-readit/audio-player.md +206 -0
  167. package/skills/cm-readit/examples/blog-reader.js +352 -0
  168. package/skills/cm-readit/examples/voice-cro.js +390 -0
  169. package/skills/cm-readit/tts-engine.md +262 -0
  170. package/skills/cm-readit/ui-patterns.md +362 -0
  171. package/skills/cm-readit/voice-cro.md +223 -0
  172. package/skills/cm-safe-deploy/SKILL.md +120 -0
  173. package/skills/cm-safe-deploy/templates/deploy.sh +89 -0
  174. package/skills/cm-safe-i18n/SKILL.md +473 -0
  175. package/skills/cm-secret-shield/SKILL.md +580 -0
  176. package/skills/cm-skill-chain/SKILL.md +78 -0
  177. package/skills/cm-skill-index/SKILL.md +318 -0
  178. package/skills/cm-skill-mastery/SKILL.md +169 -0
  179. package/skills/cm-start/SKILL.md +65 -0
  180. package/skills/cm-status/SKILL.md +12 -0
  181. package/skills/cm-tdd/SKILL.md +370 -0
  182. package/skills/cm-terminal/SKILL.md +177 -0
  183. package/skills/cm-test-gate/SKILL.md +242 -0
  184. package/skills/cm-ui-preview/SKILL.md +291 -0
  185. package/skills/cm-ux-master/DESIGN_STANDARD_TEMPLATE.md +54 -0
  186. package/skills/cm-ux-master/SKILL.md +114 -0
  187. package/skills/cro-methodology/SKILL.md +98 -0
  188. package/skills/cro-methodology/references/COPYWRITING.md +178 -0
  189. package/skills/cro-methodology/references/OBJECTIONS.md +135 -0
  190. package/skills/cro-methodology/references/PERSUASION.md +158 -0
  191. package/skills/cro-methodology/references/RESEARCH.md +220 -0
  192. package/skills/cro-methodology/references/funnel-analysis.md +365 -0
  193. package/skills/cro-methodology/references/testing-methodology.md +330 -0
package/install.sh ADDED
@@ -0,0 +1,513 @@
1
+ #!/usr/bin/env bash
2
+ # ════════════════════════════════════════════════════════════════
3
+ # CodyMaster Skills Kit v3.4.0 — Universal Installer
4
+ # Inspired by: npx skills add (vercel-labs/skills)
5
+ #
6
+ # Usage:
7
+ # bash install.sh Interactive menu
8
+ # bash install.sh --claude Claude Code (non-interactive)
9
+ # bash install.sh --claude --global Claude Code, user scope
10
+ # bash install.sh --claude --project Claude Code, project scope
11
+ # bash install.sh --gemini Gemini CLI
12
+ # bash install.sh --aider Aider
13
+ # bash install.sh --continue Continue.dev
14
+ # bash install.sh --amazon-q Amazon Q CLI (q)
15
+ # bash install.sh --amp Amp
16
+ # bash install.sh --all All detected platforms
17
+ # ════════════════════════════════════════════════════════════════
18
+
19
+ set -e
20
+
21
+ # ── Colors ──────────────────────────────────────────────────────
22
+ G='\033[0;32m'; B='\033[0;34m'; P='\033[0;35m'; O='\033[0;33m'
23
+ C='\033[0;36m'; R='\033[0;31m'; W='\033[1;37m'; NC='\033[0m'; BOLD='\033[1m'
24
+
25
+ REPO_URL="https://github.com/tody-agent/codymaster"
26
+ RAW_URL="https://raw.githubusercontent.com/tody-agent/codymaster/main"
27
+ VERSION="3.4.0"
28
+ SCOPE="user" # default scope for Claude Code
29
+
30
+ # ── i18n ────────────────────────────────────────────────────────
31
+ detect_lang() {
32
+ local lang="${LANG:-en}"
33
+ case "$lang" in
34
+ vi*|VI*) echo "vi" ;;
35
+ zh*|ZH*) echo "zh" ;;
36
+ ko*|KO*) echo "ko" ;;
37
+ ru*|RU*) echo "ru" ;;
38
+ hi*|HI*) echo "hi" ;;
39
+ *) echo "en" ;;
40
+ esac
41
+ }
42
+
43
+ LANG_CODE=$(detect_lang)
44
+
45
+ msg() {
46
+ local key="$1"
47
+ case "$LANG_CODE:$key" in
48
+ vi:welcome) echo "Chào mừng bạn đến với CodyMaster v${VERSION}" ;;
49
+ vi:tagline) echo "34+ kỹ năng AI cho Claude Code và các AI agents khác" ;;
50
+ vi:detecting) echo "🔍 Đang phát hiện các AI agent đã cài..." ;;
51
+ vi:found) echo "✅ Đã tìm thấy" ;;
52
+ vi:not_found) echo "❌ Không tìm thấy" ;;
53
+ vi:select) echo "Chọn platform để cài (nhập số, cách nhau dấu phẩy):" ;;
54
+ vi:scope) echo "Phạm vi cài đặt cho Claude Code:" ;;
55
+ vi:scope_user) echo "User (tất cả projects)" ;;
56
+ vi:scope_project) echo "Project (chỉ project này)" ;;
57
+ vi:done) echo "✅ Hoàn tất!" ;;
58
+ vi:onboard) echo "🎯 Bắt đầu ngay trong Claude Code:" ;;
59
+ vi:docs) echo "📚 Tài liệu:" ;;
60
+
61
+ zh:welcome) echo "欢迎使用 CodyMaster v${VERSION}" ;;
62
+ zh:tagline) echo "Claude Code 的 34+ AI 技能" ;;
63
+ zh:detecting) echo "🔍 检测已安装的 AI Agent..." ;;
64
+ zh:found) echo "✅ 已找到" ;;
65
+ zh:not_found) echo "❌ 未找到" ;;
66
+ zh:select) echo "选择要安装的平台(输入数字,逗号分隔):" ;;
67
+ zh:scope) echo "Claude Code 安装范围:" ;;
68
+ zh:scope_user) echo "用户级(所有项目)" ;;
69
+ zh:scope_project) echo "项目级(仅此项目)" ;;
70
+ zh:done) echo "✅ 完成!" ;;
71
+ zh:onboard) echo "🎯 在 Claude Code 中立即开始:" ;;
72
+ zh:docs) echo "📚 文档:" ;;
73
+
74
+ ko:welcome) echo "CodyMaster v${VERSION}에 오신 것을 환영합니다" ;;
75
+ ko:tagline) echo "Claude Code용 34+ AI 스킬" ;;
76
+ ko:detecting) echo "🔍 설치된 AI Agent 감지 중..." ;;
77
+ ko:found) echo "✅ 발견됨" ;;
78
+ ko:not_found) echo "❌ 없음" ;;
79
+ ko:select) echo "설치할 플랫폼 선택 (숫자, 쉼표로 구분):" ;;
80
+ ko:scope) echo "Claude Code 설치 범위:" ;;
81
+ ko:scope_user) echo "사용자 (모든 프로젝트)" ;;
82
+ ko:scope_project) echo "프로젝트 (이 프로젝트만)" ;;
83
+ ko:done) echo "✅ 완료!" ;;
84
+ ko:onboard) echo "🎯 Claude Code에서 바로 시작:" ;;
85
+ ko:docs) echo "📚 문서:" ;;
86
+
87
+ *)
88
+ case "$key" in
89
+ welcome) echo "Welcome to CodyMaster v${VERSION}" ;;
90
+ tagline) echo "34+ AI skills for Claude Code and other AI agents" ;;
91
+ detecting) echo "🔍 Detecting installed AI agents..." ;;
92
+ found) echo "✅ Found" ;;
93
+ not_found) echo "❌ Not found" ;;
94
+ select) echo "Select platforms to install (numbers, comma-separated):" ;;
95
+ scope) echo "Installation scope for Claude Code:" ;;
96
+ scope_user) echo "User — available across all projects (recommended)" ;;
97
+ scope_project) echo "Project — this project only (committed to .claude/)" ;;
98
+ done) echo "✅ Done!" ;;
99
+ onboard) echo "🎯 Get started immediately in Claude Code:" ;;
100
+ docs) echo "📚 Documentation:" ;;
101
+ esac
102
+ ;;
103
+ esac
104
+ }
105
+
106
+ # ── Header ───────────────────────────────────────────────────────
107
+ print_header() {
108
+ echo ""
109
+ echo -e "${C}${BOLD}╔══════════════════════════════════════════════════╗${NC}"
110
+ echo -e "${C}${BOLD}║ 🧠 CodyMaster Skills Kit ║${NC}"
111
+ echo -e "${C}${BOLD}║ $(msg welcome | head -c 48 | awk '{printf "%-48s", $0}')║${NC}"
112
+ echo -e "${C}${BOLD}║ $(msg tagline | head -c 48 | awk '{printf "%-48s", $0}')║${NC}"
113
+ echo -e "${C}${BOLD}╚══════════════════════════════════════════════════╝${NC}"
114
+ echo ""
115
+ }
116
+
117
+ # ── Agent Detection ──────────────────────────────────────────────
118
+ detect_agents() {
119
+ echo -e "${W}$(msg detecting)${NC}"
120
+ echo ""
121
+
122
+ DETECTED=()
123
+
124
+ if command -v claude &>/dev/null; then
125
+ echo -e " ${P}${BOLD}1) 🟣 Claude Code${NC} $(msg found)"
126
+ DETECTED+=("claude")
127
+ else
128
+ echo -e " ${P}1) 🟣 Claude Code${NC} $(msg not_found)"
129
+ fi
130
+
131
+ if command -v gemini &>/dev/null; then
132
+ echo -e " ${C}${BOLD}2) 💎 Gemini CLI${NC} $(msg found)"
133
+ DETECTED+=("gemini")
134
+ else
135
+ echo -e " ${C}2) 💎 Gemini CLI${NC} $(msg not_found)"
136
+ fi
137
+
138
+ # Check for Cursor
139
+ if [ -d "$HOME/.cursor" ] || [ -d "/Applications/Cursor.app" ]; then
140
+ echo -e " ${B}${BOLD}3) 🔵 Cursor${NC} $(msg found)"
141
+ DETECTED+=("cursor")
142
+ else
143
+ echo -e " ${B}3) 🔵 Cursor${NC} $(msg not_found)"
144
+ fi
145
+
146
+ if command -v codex &>/dev/null; then
147
+ echo -e " ${O}${BOLD}4) 🟠 Codex${NC} $(msg found)"
148
+ DETECTED+=("codex")
149
+ else
150
+ echo -e " ${O}4) 🟠 Codex${NC} $(msg not_found)"
151
+ fi
152
+
153
+ if command -v opencode &>/dev/null; then
154
+ echo -e " ${G}${BOLD}5) 📦 OpenCode${NC} $(msg found)"
155
+ DETECTED+=("opencode")
156
+ else
157
+ echo -e " ${G}5) 📦 OpenCode${NC} $(msg not_found)"
158
+ fi
159
+
160
+ if command -v aider &>/dev/null; then
161
+ echo -e " ${O}${BOLD}6) 🤖 Aider${NC} $(msg found)"
162
+ DETECTED+=("aider")
163
+ else
164
+ echo -e " ${O}6) 🤖 Aider${NC} $(msg not_found)"
165
+ fi
166
+
167
+ if [ -d "$HOME/.continue" ]; then
168
+ echo -e " ${B}${BOLD}7) 🔗 Continue.dev${NC} $(msg found)"
169
+ DETECTED+=("continue")
170
+ else
171
+ echo -e " ${B}7) 🔗 Continue.dev${NC} $(msg not_found)"
172
+ fi
173
+
174
+ if command -v q &>/dev/null; then
175
+ echo -e " ${W}${BOLD}8) ☁️ Amazon Q CLI${NC} $(msg found)"
176
+ DETECTED+=("amazon-q")
177
+ else
178
+ echo -e " ${W}8) ☁️ Amazon Q CLI${NC} $(msg not_found)"
179
+ fi
180
+
181
+ if command -v amp &>/dev/null; then
182
+ echo -e " ${G}${BOLD}9) ⚡ Amp${NC} $(msg found)"
183
+ DETECTED+=("amp")
184
+ else
185
+ echo -e " ${G}9) ⚡ Amp${NC} $(msg not_found)"
186
+ fi
187
+
188
+ echo -e " ${W}10) 📋 Manual copy${NC} (any platform)"
189
+ echo ""
190
+ }
191
+
192
+ # ── Onboarding block ─────────────────────────────────────────────
193
+ print_onboarding() {
194
+ local scope="$1"
195
+ echo ""
196
+ echo -e "${G}${BOLD}╔══════════════════════════════════════════════════╗${NC}"
197
+ echo -e "${G}${BOLD}║ $(msg done | awk '{printf "%-48s", $0}')║${NC}"
198
+ echo -e "${G}${BOLD}╚══════════════════════════════════════════════════╝${NC}"
199
+ echo ""
200
+ echo -e "${W}${BOLD}$(msg onboard)${NC}"
201
+ echo ""
202
+ echo -e " ${C}/cm:demo${NC} ← Run this first! Interactive tour"
203
+ echo -e " ${C}/cm:plan${NC} ← Start a new feature"
204
+ echo -e " ${C}/cm:build${NC} ← Build with TDD"
205
+ echo -e " ${C}/cm:debug${NC} ← Fix a bug"
206
+ echo -e " ${C}/cm:review${NC} ← Code review"
207
+ echo -e " ${C}/cm:deploy${NC} ← Deploy safely"
208
+ echo ""
209
+ echo -e "${W}${BOLD}$(msg docs)${NC} ${C}https://cody.todyle.com/docs${NC}"
210
+ echo ""
211
+ }
212
+
213
+ # ── Claude Code installer ────────────────────────────────────────
214
+ install_claude() {
215
+ local scope="${1:-user}"
216
+ echo ""
217
+ echo -e "${P}${BOLD}Claude Code — Installing Cody Master${NC}"
218
+ echo ""
219
+
220
+ if command -v claude &>/dev/null; then
221
+ # Cleanup old marketplace if exists
222
+ claude plugin marketplace remove cody-master 2>/dev/null || true
223
+ echo -e " ${W}Adding marketplace...${NC}"
224
+ claude plugin marketplace add tody-agent/codymaster 2>/dev/null || true
225
+ echo -e " ${W}Installing plugin (scope: ${scope})...${NC}"
226
+ claude plugin install cm@codymaster --scope "$scope"
227
+ echo ""
228
+ echo -e " ${G}✅ cm installed — scope: ${scope}${NC}"
229
+ print_onboarding "$scope"
230
+ else
231
+ echo -e " ${R}Claude Code CLI not found. Install from: https://claude.ai/code${NC}"
232
+ echo ""
233
+ echo " Then run these commands in Claude Code:"
234
+ echo ""
235
+ echo -e " ${BOLD}1.${NC} ${C}claude plugin marketplace add tody-agent/codymaster${NC}"
236
+ echo -e " ${BOLD}2.${NC} ${C}claude plugin install cm@codymaster --scope ${scope}${NC}"
237
+ echo ""
238
+ echo -e " First thing after install: ${C}/cm:demo${NC}"
239
+ fi
240
+ }
241
+
242
+ # ── Gemini CLI installer ─────────────────────────────────────────
243
+ install_gemini() {
244
+ echo ""
245
+ echo -e "${C}${BOLD}Gemini CLI — Installing Cody Master${NC}"
246
+ echo ""
247
+ if command -v gemini &>/dev/null; then
248
+ echo -e " ${W}Trying gemini extensions install...${NC}"
249
+ if gemini extensions install "$REPO_URL" 2>/dev/null; then
250
+ echo -e " ${G}✅ Installed via Gemini extensions${NC}"
251
+ else
252
+ echo -e " ${W}Falling back to direct skills copy...${NC}"
253
+ install_antigravity "$HOME/.gemini/skills"
254
+ echo -e " ${G}✅ Skills copied to ~/.gemini/skills/${NC}"
255
+ echo -e " ${C}ℹ Add to your GEMINI.md: @~/.gemini/skills/*/SKILL.md${NC}"
256
+ fi
257
+ else
258
+ echo ""
259
+ echo -e " ${R}Gemini CLI not found. Install from:${NC}"
260
+ echo -e " ${C}https://github.com/google-gemini/gemini-cli${NC}"
261
+ echo ""
262
+ echo -e " Then run:"
263
+ echo -e " ${C}gemini extensions install ${REPO_URL}${NC}"
264
+ fi
265
+ }
266
+
267
+ # ── Aider installer ──────────────────────────────────────────────
268
+ install_aider() {
269
+ echo ""
270
+ echo -e "${O}${BOLD}Aider — Installing Cody Master${NC}"
271
+ echo ""
272
+ if command -v aider &>/dev/null; then
273
+ local target="$HOME/.aider/skills"
274
+ install_antigravity "$target"
275
+ # Create .aiderignore entry if not present
276
+ if [ ! -f ".aider.conf.yml" ] || ! grep -q "read:" .aider.conf.yml 2>/dev/null; then
277
+ echo -e " ${W}Tip: add skills context to .aider.conf.yml:${NC}"
278
+ echo -e " ${C}read: - ~/.aider/skills/cm-planning/SKILL.md${NC}"
279
+ fi
280
+ echo -e " ${G}✅ Skills installed to ${target}${NC}"
281
+ else
282
+ echo -e " ${R}Aider not found. Install: ${C}pip install aider-chat${NC}"
283
+ echo -e " Or: ${C}https://aider.chat${NC}"
284
+ fi
285
+ }
286
+
287
+ # ── Continue.dev installer ───────────────────────────────────────
288
+ install_continue() {
289
+ echo ""
290
+ echo -e "${B}${BOLD}Continue.dev — Installing Cody Master${NC}"
291
+ echo ""
292
+ local rules_dir="$HOME/.continue/rules"
293
+ mkdir -p "$rules_dir"
294
+ local count=0
295
+ for skill_dir in skills/*/; do
296
+ skill_name=$(basename "$skill_dir")
297
+ if [ -f "${skill_dir}SKILL.md" ]; then
298
+ cp "${skill_dir}SKILL.md" "${rules_dir}/${skill_name}.md"
299
+ count=$((count + 1))
300
+ fi
301
+ done
302
+ echo -e " ${G}✅ ${count} skill rules installed to ${rules_dir}${NC}"
303
+ echo -e " ${C}ℹ Rules are auto-loaded by Continue.dev from ~/.continue/rules/${NC}"
304
+ }
305
+
306
+ # ── Amazon Q CLI installer ───────────────────────────────────────
307
+ install_amazon_q() {
308
+ echo ""
309
+ echo -e "${W}${BOLD}Amazon Q CLI — Installing Cody Master${NC}"
310
+ echo ""
311
+ local target="$HOME/.aws/amazonq/skills"
312
+ install_antigravity "$target"
313
+ echo -e " ${G}✅ Skills installed to ${target}${NC}"
314
+ echo -e " ${W}To use in Q chat, reference skills:${NC}"
315
+ echo -e " ${C}q chat --context ~/.aws/amazonq/skills/cm-planning/SKILL.md${NC}"
316
+ }
317
+
318
+ # ── Amp installer ────────────────────────────────────────────────
319
+ install_amp() {
320
+ echo ""
321
+ echo -e "${G}${BOLD}Amp — Installing Cody Master${NC}"
322
+ echo ""
323
+ local target="$HOME/.amp/skills"
324
+ install_antigravity "$target"
325
+ echo -e " ${G}✅ Skills installed to ${target}${NC}"
326
+ echo -e " ${C}ℹ Reference skills in Amp via your AGENTS.md or system prompt${NC}"
327
+ }
328
+
329
+ # ── Gemini/Antigravity file copy ─────────────────────────────────
330
+ install_antigravity() {
331
+ local target="$1"
332
+ echo ""
333
+ echo -e "${G}${BOLD}Installing skills to: ${target}${NC}"
334
+ echo ""
335
+ if [ ! -d "skills" ]; then
336
+ echo -e "${R}Error: Run from the cody-master repo root.${NC}"
337
+ exit 1
338
+ fi
339
+ mkdir -p "$target"
340
+ local count=0
341
+ for skill_dir in skills/*/; do
342
+ skill_name=$(basename "$skill_dir")
343
+ if [ -f "${skill_dir}SKILL.md" ]; then
344
+ cp -r "$skill_dir" "${target}/${skill_name}"
345
+ echo -e " ${G}✅${NC} $skill_name"
346
+ count=$((count + 1))
347
+ fi
348
+ done
349
+ echo ""
350
+ echo -e "${G}${count} skills installed to ${target}${NC}"
351
+ }
352
+
353
+ # ── Scope selector for Claude ────────────────────────────────────
354
+ select_scope() {
355
+ echo ""
356
+ echo -e "${W}${BOLD}$(msg scope)${NC}"
357
+ echo ""
358
+ echo -e " ${BOLD}1)${NC} 🌐 $(msg scope_user)"
359
+ echo -e " ${BOLD}2)${NC} 📁 $(msg scope_project)"
360
+ echo ""
361
+ read -p " Choose (1-2, default=1): " scope_choice
362
+ case "${scope_choice:-1}" in
363
+ 2) SCOPE="project" ;;
364
+ *) SCOPE="user" ;;
365
+ esac
366
+ }
367
+
368
+ # ════════════════════════════════════════════════════════════════
369
+ # MAIN
370
+ # ════════════════════════════════════════════════════════════════
371
+
372
+ print_header
373
+
374
+ # ── Non-interactive flags ────────────────────────────────────────
375
+ for arg in "$@"; do
376
+ case "$arg" in
377
+ --global|--user) SCOPE="user" ;;
378
+ --project|--local) SCOPE="project" ;;
379
+ esac
380
+ done
381
+
382
+ if [[ "$1" == "--claude" ]]; then
383
+ install_claude "$SCOPE"
384
+ exit 0
385
+ fi
386
+
387
+ if [[ "$1" == "--gemini" ]]; then
388
+ install_gemini
389
+ exit 0
390
+ fi
391
+
392
+ if [[ "$1" == "--aider" ]]; then
393
+ install_aider
394
+ exit 0
395
+ fi
396
+
397
+ if [[ "$1" == "--continue" ]]; then
398
+ install_continue
399
+ exit 0
400
+ fi
401
+
402
+ if [[ "$1" == "--amazon-q" ]]; then
403
+ install_amazon_q
404
+ exit 0
405
+ fi
406
+
407
+ if [[ "$1" == "--amp" ]]; then
408
+ install_amp
409
+ exit 0
410
+ fi
411
+
412
+ if [[ "$1" == "--all" ]]; then
413
+ echo -e "${W}${BOLD}Installing to all detected platforms...${NC}"
414
+ echo ""
415
+ command -v claude &>/dev/null && install_claude "$SCOPE"
416
+ command -v gemini &>/dev/null && install_gemini
417
+ command -v aider &>/dev/null && install_aider
418
+ [ -d "$HOME/.continue" ] && install_continue
419
+ command -v q &>/dev/null && install_amazon_q
420
+ command -v amp &>/dev/null && install_amp
421
+ exit 0
422
+ fi
423
+
424
+ # ── Interactive mode ─────────────────────────────────────────────
425
+ detect_agents
426
+
427
+ echo -e "${W}${BOLD}$(msg select)${NC}"
428
+ echo -e " ${W}(or press Enter to install for all detected: ${#DETECTED[@]} found)${NC}"
429
+ echo ""
430
+ read -p " > " platform_input
431
+
432
+ # Default: all detected
433
+ if [ -z "$platform_input" ] && [ ${#DETECTED[@]} -gt 0 ]; then
434
+ platforms=("${DETECTED[@]}")
435
+ else
436
+ IFS=',' read -ra nums <<< "$platform_input"
437
+ platforms=()
438
+ for n in "${nums[@]}"; do
439
+ n=$(echo "$n" | tr -d ' ')
440
+ case "$n" in
441
+ 1) platforms+=("claude") ;;
442
+ 2) platforms+=("gemini") ;;
443
+ 3) platforms+=("cursor") ;;
444
+ 4) platforms+=("codex") ;;
445
+ 5) platforms+=("opencode") ;;
446
+ 6) platforms+=("aider") ;;
447
+ 7) platforms+=("continue") ;;
448
+ 8) platforms+=("amazon-q") ;;
449
+ 9) platforms+=("amp") ;;
450
+ 10) platforms+=("manual") ;;
451
+ esac
452
+ done
453
+ fi
454
+
455
+ # Install for each selected platform
456
+ for platform in "${platforms[@]}"; do
457
+ case "$platform" in
458
+ claude)
459
+ select_scope
460
+ install_claude "$SCOPE"
461
+ ;;
462
+ gemini)
463
+ install_gemini
464
+ ;;
465
+ cursor)
466
+ echo ""
467
+ echo -e "${B}${BOLD}Cursor — Plugin Install${NC}"
468
+ echo -e " In Cursor Agent chat, run: ${C}/add-plugin cm${NC}"
469
+ ;;
470
+ codex)
471
+ echo ""
472
+ echo -e "${O}${BOLD}Codex — Install${NC}"
473
+ echo -e " Tell Codex: ${C}Fetch and follow ${RAW_URL}/.codex/INSTALL.md${NC}"
474
+ ;;
475
+ opencode)
476
+ echo ""
477
+ echo -e "${G}${BOLD}OpenCode — Install${NC}"
478
+ echo -e " Tell OpenCode: ${C}Fetch and follow ${RAW_URL}/.opencode/INSTALL.md${NC}"
479
+ ;;
480
+ aider)
481
+ install_aider
482
+ ;;
483
+ continue)
484
+ install_continue
485
+ ;;
486
+ amazon-q)
487
+ install_amazon_q
488
+ ;;
489
+ amp)
490
+ install_amp
491
+ ;;
492
+ manual)
493
+ echo ""
494
+ echo -e "${W}${BOLD}Manual Copy — Any Platform${NC}"
495
+ echo ""
496
+ echo -e " ${C}# Gemini CLI${NC}"
497
+ echo -e " gemini extensions install ${REPO_URL}"
498
+ echo ""
499
+ echo -e " ${C}# Aider${NC}"
500
+ echo -e " bash install.sh --aider"
501
+ echo ""
502
+ echo -e " ${C}# Continue.dev${NC}"
503
+ echo -e " bash install.sh --continue"
504
+ echo ""
505
+ echo -e " ${C}# Any platform (copy)${NC}"
506
+ echo -e " cp -r skills/* ~/.gemini/skills/"
507
+ ;;
508
+ esac
509
+ done
510
+
511
+ echo ""
512
+ echo -e "${C}$(msg docs) https://cody.todyle.com/docs${NC}"
513
+ echo ""
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "codymaster",
3
+ "version": "4.1.0",
4
+ "description": "34 Skills. Ship 10x faster. AI-powered coding skill kit for Claude, Cursor, Gemini & more.",
5
+ "main": "dist/index.js",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/omisocial/codymaster.git"
9
+ },
10
+ "homepage": "https://codymaster.ai",
11
+ "bugs": {
12
+ "url": "https://github.com/omisocial/codymaster/issues"
13
+ },
14
+ "bin": {
15
+ "cody": "dist/index.js",
16
+ "cm": "dist/index.js",
17
+ "codymaster": "dist/index.js"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "prepare": "npm run build",
22
+ "start": "ts-node src/index.ts",
23
+ "test:gate": "vitest run --reporter=verbose",
24
+ "build:html": "node scripts/inject-header.js && node scripts/inject-footer.js && node scripts/inject-ga.js",
25
+ "docs:build": "cd docs && npx vitepress build && rm -rf ../public/docs && cp -r .vitepress/dist ../public/docs",
26
+ "docs:dev": "cd docs && npx vitepress dev",
27
+ "gate:secrets": "node scripts/gate-0-secrets.js",
28
+ "gate:syntax": "node scripts/gate-1-syntax.js",
29
+ "gate:dist": "node scripts/gate-5-dist-verify.js",
30
+ "gate:smoke": "node scripts/gate-6-smoke-test.js",
31
+ "gate:i18n": "node scripts/gate-3-i18n.js",
32
+ "deploy": "npm run gate:secrets && npm run gate:syntax && npm run test:gate && npm run gate:i18n && npm run build:html && npm run docs:build && npm run gate:dist && export $(grep -v '^#' .env | xargs) && wrangler pages deploy public && npm run gate:smoke",
33
+ "deploy:dry": "npm run gate:secrets && npm run gate:syntax && npm run test:gate && npm run gate:i18n && npm run build:html && npm run docs:build && npm run gate:dist && echo '✅ All gates passed. Ready to deploy.'"
34
+ },
35
+ "keywords": [
36
+ "ai",
37
+ "coding",
38
+ "skills",
39
+ "claude",
40
+ "cursor",
41
+ "gemini",
42
+ "vibe-coding",
43
+ "developer-tools",
44
+ "productivity",
45
+ "cli"
46
+ ],
47
+ "author": "todyagent <aitodyle@gmail.com>",
48
+ "license": "ISC",
49
+ "type": "commonjs",
50
+ "files": [
51
+ "dist/",
52
+ "skills/",
53
+ "adapters/",
54
+ "commands/",
55
+ "README.md",
56
+ "CHANGELOG.md",
57
+ "install.sh"
58
+ ],
59
+ "publishConfig": {
60
+ "access": "public"
61
+ },
62
+ "dependencies": {
63
+ "@clack/prompts": "^1.1.0",
64
+ "@types/node": "^25.5.0",
65
+ "chalk": "^5.6.2",
66
+ "commander": "^14.0.3",
67
+ "express": "^5.2.1",
68
+ "prompts": "^2.4.2",
69
+ "ts-node": "^10.9.2",
70
+ "typescript": "^5.9.3"
71
+ },
72
+ "devDependencies": {
73
+ "@types/express": "^5.0.6",
74
+ "@types/prompts": "^2.4.9",
75
+ "acorn": "^8.16.0",
76
+ "jsdom": "^29.0.1",
77
+ "vitest": "^4.1.0"
78
+ }
79
+ }