codymaster 4.6.0 → 5.2.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 (161) hide show
  1. package/CHANGELOG.md +74 -8
  2. package/README.md +192 -95
  3. package/dist/advisory-handoff.js +89 -0
  4. package/dist/advisory-report.js +105 -0
  5. package/dist/browse-server.js +251 -0
  6. package/dist/cli/command-registry.js +34 -0
  7. package/dist/cli/commands/agent.js +120 -0
  8. package/dist/cli/commands/bench.js +69 -0
  9. package/dist/cli/commands/brain.js +108 -0
  10. package/dist/cli/commands/dashboard.js +93 -0
  11. package/dist/cli/commands/design-studio.js +111 -0
  12. package/dist/cli/commands/distro.js +25 -0
  13. package/dist/cli/commands/engineering.js +596 -0
  14. package/dist/cli/commands/evolve.js +123 -0
  15. package/dist/cli/commands/mcp-serve.js +104 -0
  16. package/dist/cli/commands/project.js +324 -0
  17. package/dist/cli/commands/skill-chain.js +269 -0
  18. package/dist/cli/commands/system.js +89 -0
  19. package/dist/cli/commands/task.js +254 -0
  20. package/dist/cli/update-check.js +83 -0
  21. package/dist/cm-config.js +92 -0
  22. package/dist/cm-suggest.js +77 -0
  23. package/dist/codybench/judges/automated.js +31 -0
  24. package/dist/codybench/runners/claude-code.js +32 -0
  25. package/dist/codybench/suites/memory-retention.js +85 -0
  26. package/dist/codybench/suites/tdd-regression.js +35 -0
  27. package/dist/codybench/suites/token-efficiency.js +55 -0
  28. package/dist/codybench/types.js +2 -0
  29. package/dist/context-db.js +157 -0
  30. package/dist/continuity.js +2 -6
  31. package/dist/distro-validate.js +54 -0
  32. package/dist/execution-analyzer.js +138 -0
  33. package/dist/guardian-core.js +74 -0
  34. package/dist/index.js +36 -2759
  35. package/dist/indexer/skills-lib.js +533 -0
  36. package/dist/indexer/skills-map.js +1374 -0
  37. package/dist/indexer/skills.js +16 -0
  38. package/dist/learning-promoter.js +246 -0
  39. package/dist/mcp-context-server.js +289 -1
  40. package/dist/mcp-skills-tools.js +81 -0
  41. package/dist/retro-summary.js +70 -0
  42. package/dist/second-opinion-providers.js +79 -0
  43. package/dist/skill-chain.js +63 -1
  44. package/dist/skill-evolver.js +456 -0
  45. package/dist/skill-execution-cache.js +254 -0
  46. package/dist/smart-brain-router.js +184 -0
  47. package/dist/sprint-pipeline.js +228 -0
  48. package/dist/storage-backend.js +14 -67
  49. package/dist/token-budget.js +88 -0
  50. package/dist/utils/cli-utils.js +76 -0
  51. package/dist/utils/skill-utils.js +32 -0
  52. package/package.json +17 -7
  53. package/scripts/build-skills.mjs +51 -0
  54. package/scripts/gate-0-repo-hygiene.js +75 -0
  55. package/scripts/postinstall.js +34 -28
  56. package/scripts/security-scan.js +1 -1
  57. package/scripts/validate-skills.mjs +42 -0
  58. package/skills/CLAUDE.md +2 -7
  59. package/skills/_shared/helpers.md +2 -8
  60. package/skills/cm-ads-tracker/SKILL.md +3 -6
  61. package/skills/cm-browse/SKILL.md +34 -0
  62. package/skills/cm-conductor-worktrees/SKILL.md +28 -0
  63. package/skills/cm-content-factory/SKILL.md +1 -1
  64. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  65. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  66. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  67. package/skills/cm-content-factory/landing/docs/content/memory-system.md +38 -0
  68. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  69. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  70. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  71. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  72. package/skills/cm-content-factory/landing/index.html +100 -100
  73. package/skills/cm-content-factory/landing/script.js +42 -0
  74. package/skills/cm-content-factory/landing/translations.js +400 -400
  75. package/skills/cm-continuity/SKILL.md +32 -33
  76. package/skills/cm-design-studio/SKILL.md +34 -0
  77. package/skills/cm-ecosystem-roadmap/SKILL.md +15 -0
  78. package/skills/cm-engineering-meta/SKILL.md +73 -0
  79. package/skills/cm-growth-hacking/SKILL.md +1 -12
  80. package/skills/cm-guardian-runtime/SKILL.md +26 -0
  81. package/skills/cm-mcp-engineering/SKILL.md +22 -0
  82. package/skills/cm-notebooklm/SKILL.md +1 -17
  83. package/skills/cm-post-deploy-canary/SKILL.md +22 -0
  84. package/skills/cm-project-bootstrap/SKILL.md +11 -0
  85. package/skills/cm-qa-visual-cli/SKILL.md +22 -0
  86. package/skills/cm-retro-cli/SKILL.md +23 -0
  87. package/skills/cm-second-opinion-cli/SKILL.md +23 -0
  88. package/skills/cm-secret-shield/SKILL.md +2 -2
  89. package/skills/cm-security-gate/SKILL.md +1 -0
  90. package/skills/cm-skill-chain/SKILL.md +25 -4
  91. package/skills/cm-skill-evolution/SKILL.md +83 -0
  92. package/skills/cm-skill-health/SKILL.md +83 -0
  93. package/skills/cm-skill-index/SKILL.md +11 -3
  94. package/skills/cm-skill-search/SKILL.md +49 -0
  95. package/skills/cm-skill-share/SKILL.md +58 -0
  96. package/skills/cm-sprint-bus/SKILL.md +33 -0
  97. package/skills/cm-start/SKILL.md +0 -10
  98. package/skills/cm-tdd/SKILL.md +59 -72
  99. package/skills/profiles/README.md +21 -0
  100. package/skills/profiles/core.txt +23 -0
  101. package/skills/profiles/design.txt +6 -0
  102. package/skills/profiles/full.txt +62 -0
  103. package/skills/profiles/growth.txt +10 -0
  104. package/skills/profiles/knowledge.txt +7 -0
  105. package/install.sh +0 -901
  106. package/scripts/test-gemini.js +0 -13
  107. package/skills/cm-frappe-agent/SKILL.md +0 -134
  108. package/skills/cm-frappe-agent/agents/doctype-architect.md +0 -596
  109. package/skills/cm-frappe-agent/agents/erpnext-customizer.md +0 -643
  110. package/skills/cm-frappe-agent/agents/frappe-backend.md +0 -814
  111. package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +0 -557
  112. package/skills/cm-frappe-agent/agents/frappe-debugger.md +0 -625
  113. package/skills/cm-frappe-agent/agents/frappe-fixer.md +0 -275
  114. package/skills/cm-frappe-agent/agents/frappe-frontend.md +0 -660
  115. package/skills/cm-frappe-agent/agents/frappe-installer.md +0 -158
  116. package/skills/cm-frappe-agent/agents/frappe-performance.md +0 -307
  117. package/skills/cm-frappe-agent/agents/frappe-planner.md +0 -419
  118. package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +0 -153
  119. package/skills/cm-frappe-agent/agents/github-workflow.md +0 -286
  120. package/skills/cm-frappe-agent/commands/frappe-app.md +0 -351
  121. package/skills/cm-frappe-agent/commands/frappe-backend.md +0 -162
  122. package/skills/cm-frappe-agent/commands/frappe-bench.md +0 -254
  123. package/skills/cm-frappe-agent/commands/frappe-debug.md +0 -263
  124. package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +0 -272
  125. package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +0 -310
  126. package/skills/cm-frappe-agent/commands/frappe-erpnext.md +0 -210
  127. package/skills/cm-frappe-agent/commands/frappe-fix.md +0 -59
  128. package/skills/cm-frappe-agent/commands/frappe-frontend.md +0 -210
  129. package/skills/cm-frappe-agent/commands/frappe-fullstack.md +0 -243
  130. package/skills/cm-frappe-agent/commands/frappe-github.md +0 -57
  131. package/skills/cm-frappe-agent/commands/frappe-install.md +0 -52
  132. package/skills/cm-frappe-agent/commands/frappe-plan.md +0 -442
  133. package/skills/cm-frappe-agent/commands/frappe-remote.md +0 -58
  134. package/skills/cm-frappe-agent/commands/frappe-test.md +0 -356
  135. package/skills/cm-frappe-agent/docs/README.md +0 -51
  136. package/skills/cm-frappe-agent/docs/agents-catalog.md +0 -113
  137. package/skills/cm-frappe-agent/docs/architecture.md +0 -149
  138. package/skills/cm-frappe-agent/docs/commands-catalog.md +0 -82
  139. package/skills/cm-frappe-agent/docs/resources-catalog.md +0 -66
  140. package/skills/cm-frappe-agent/docs/sitemap-urls.txt +0 -52
  141. package/skills/cm-frappe-agent/docs/sitemap.md +0 -81
  142. package/skills/cm-frappe-agent/docs/sop/user-guide.md +0 -178
  143. package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +0 -122
  144. package/skills/cm-frappe-agent/resources/7-layer-architecture.md +0 -985
  145. package/skills/cm-frappe-agent/resources/bench_commands.md +0 -73
  146. package/skills/cm-frappe-agent/resources/code-patterns-guide.md +0 -948
  147. package/skills/cm-frappe-agent/resources/common_pitfalls.md +0 -266
  148. package/skills/cm-frappe-agent/resources/doctype-registry.md +0 -158
  149. package/skills/cm-frappe-agent/resources/installation-guide.md +0 -289
  150. package/skills/cm-frappe-agent/resources/rest-api-patterns.md +0 -182
  151. package/skills/cm-frappe-agent/resources/scaffold_checklist.md +0 -82
  152. package/skills/cm-frappe-agent/resources/upgrade_patterns.md +0 -113
  153. package/skills/cm-frappe-agent/resources/web-form-patterns.md +0 -252
  154. package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +0 -621
  155. package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +0 -642
  156. package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +0 -576
  157. package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +0 -740
  158. package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +0 -47
  159. package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +0 -608
  160. package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +0 -46
  161. package/skills/frappe-app-builder.zip +0 -0
@@ -98,6 +98,10 @@ Traditional approach: Load every SKILL.md to decide which skill to use.
98
98
  | `cm-execution` | execute, implement, plan, RARV, batch | Execute plans: batch mode, subagent-driven, parallel, or RARV |
99
99
  | `cm-continuity` | memory, context, CONTINUITY, learnings | Working memory protocol: read at start, update at end |
100
100
  | `cm-skill-mastery` | which skill, skill list, discover, help | Meta-skill: when to invoke skills, how to create new ones |
101
+ | `cm-skill-health` | skill broken, skill drift, missing skill, stale skill, health | Audit a skill using docs drift, retro notes, validation, and gates |
102
+ | `cm-skill-evolution` | repair skill, evolve skill, fix skill, derive skill | Recover a degraded skill with FIX, DERIVED, or CAPTURED mode |
103
+ | `cm-skill-search` | find skill, lookup skill, which skill, search skill | Find the right skill through indexes, suggestions, and repo search |
104
+ | `cm-skill-share` | export skill, import skill, share skill, move skill | Package and transfer skill folders safely across repos and machines |
101
105
  | `cm-safe-i18n` | translate, i18n, language, localize | Safe translation with multi-pass batching and audit gates |
102
106
  | `cm-skill-chain` | chain, pipeline, workflow, multi-step, full process | Compose skills into automated multi-step pipelines |
103
107
  | `cm-deep-search` | semantic search, find docs, large codebase, qmd | Optional power-up for semantic search across large projects |
@@ -127,8 +131,12 @@ Traditional approach: Load every SKILL.md to decide which skill to use.
127
131
 
128
132
  ### Community Skills Registry 🌐
129
133
 
130
- > **59 pre-indexed community skills** from skills.sh. Install on-demand: `npx skills add {source} --skill {name} -a antigravity`
131
- > If tech not listed here fall back to `npx skills find "{keyword}"`
134
+ > **STOP! Zero-Token Discovery Priority:**
135
+ > BEFORE using this registry, check if `.cm/project-skills.md` exists in the local project.
136
+ > It contains the pre-compiled, exact community skills needed for the project's tech stack.
137
+ > If it doesn't exist, run `npx cm index skills` first to build it.
138
+ >
139
+ > **Only use the registry below if tech is not listed** or if you need to search manually: `npx skills find "{keyword}"`
132
140
 
133
141
  #### 🖥️ Frontend Frameworks (10)
134
142
 
@@ -311,7 +319,7 @@ operations: [cm-safe-deploy, cm-identity-guard, cm-git-worktrees, cm-terminal, c
311
319
  security: [cm-secret-shield]
312
320
  product: [cm-brainstorm-idea, cm-planning, cm-ux-master, cm-ui-preview, cm-dockit, cm-project-bootstrap, cm-jtbd]
313
321
  growth: [cm-content-factory, cm-ads-tracker, cm-cro-methodology]
314
- orchestration: [cm-execution, cm-continuity, cm-skill-mastery, cm-skill-chain, cm-deep-search, cm-readit, cm-how-it-work]
322
+ orchestration: [cm-execution, cm-continuity, cm-skill-mastery, cm-skill-health, cm-skill-evolution, cm-skill-search, cm-skill-share, cm-skill-chain, cm-deep-search, cm-readit, cm-how-it-work]
315
323
  commands: [cm-start, cm-dashboard, cm-status]
316
324
  # planned (no SKILL.md yet): mom-test, release-it, medical-research, tailwind-mastery, pandasai-analytics, cm-google-form
317
325
  ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: cm-skill-search
3
+ description: "Find the best CodyMaster skill using the shipped indexes, profiles, docs, and contextual suggestions."
4
+ ---
5
+
6
+ # cm-skill-search
7
+
8
+ Use this skill when you need to find the right CodyMaster skill quickly and avoid loading the wrong `SKILL.md`.
9
+
10
+ ## Search order
11
+
12
+ 1. Fast path
13
+ - `cm suggest --project .`
14
+ 2. Library index
15
+ - `docs/skills/index.md`
16
+ - `docs/skills/*.md` category pages
17
+ 3. Progressive disclosure
18
+ - `skills/cm-skill-index/SKILL.md`
19
+ 4. Raw filesystem search
20
+ - `rg -n "<keyword>" skills docs README.md`
21
+ 5. Fallback
22
+ - if nothing matches, use `cm-skill-health` to check whether the missing skill is docs drift or a real gap
23
+
24
+ ## Query workflow
25
+
26
+ 1. Normalize the intent into 2-5 keywords.
27
+ 2. Search category pages before opening full skills.
28
+ 3. Open only the top 1-3 candidate `SKILL.md` files.
29
+ 4. Prefer the skill whose triggers, outputs, and lifecycle placement best match the task.
30
+ 5. If two skills overlap:
31
+ - choose the earlier lifecycle gate first
32
+ - example: `cm-brainstorm-idea` before `cm-planning`
33
+
34
+ ## Tie-breakers
35
+
36
+ - Need diagnosis before repair: choose `cm-skill-health`
37
+ - Need to repair a skill: choose `cm-skill-evolution`
38
+ - Need to distribute a skill pack: choose `cm-skill-share`
39
+ - Need the general index first: choose `cm-skill-index`
40
+
41
+ ## Output
42
+
43
+ ```md
44
+ ## Skill Search Result
45
+ - Task: ...
46
+ - Best match: cm-...
47
+ - Runner-up: cm-...
48
+ - Why: ...
49
+ ```
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: cm-skill-share
3
+ description: "Package, review, export, and import CodyMaster skill folders safely across machines or teams."
4
+ ---
5
+
6
+ # cm-skill-share
7
+
8
+ Use this skill when moving a CodyMaster skill between repos, machines, or teammates.
9
+
10
+ ## What to share
11
+
12
+ Always treat a skill as a folder, not just `SKILL.md`.
13
+
14
+ Check for:
15
+ - `SKILL.md`
16
+ - templates
17
+ - scripts
18
+ - references
19
+ - assets
20
+ - profile/index entries that must move with it
21
+
22
+ ## Export checklist
23
+
24
+ 1. Validate the source skill.
25
+ - `npm run validate:skills`
26
+ 2. Inspect companion files inside the skill folder.
27
+ 3. Note external dependencies the target repo must already have.
28
+ 4. Copy the entire folder.
29
+ 5. Update destination discovery surfaces if the skill becomes user-facing.
30
+
31
+ ## Import checklist
32
+
33
+ 1. Place the folder under `skills/cm-.../`
34
+ 2. Run:
35
+ - `npm run validate:skills`
36
+ - `npm run check:skills`
37
+ 3. Add it to:
38
+ - `skills/profiles/full.txt`
39
+ - docs skill index pages
40
+ - README only if the skill is part of the public catalog
41
+ 4. Verify referenced commands and files exist in the target repo.
42
+
43
+ ## Red flags
44
+
45
+ - Do not import only the markdown file if the skill depends on scripts or templates.
46
+ - Do not advertise the skill publicly before it is indexed and validated.
47
+ - Do not overwrite an existing skill without comparing behavior and references first.
48
+
49
+ ## Output
50
+
51
+ ```md
52
+ ## Skill Share
53
+ - Skill: cm-...
54
+ - Direction: export | import
55
+ - Companion files checked: yes | no
56
+ - Discovery surfaces updated: yes | no
57
+ - Validation: pass | fail
58
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: cm-sprint-bus
3
+ description: "Use to run the full sprint pipeline: brainstorm → plan → design → tdd → build → review → qa → security → ship → monitor → retro."
4
+ ---
5
+ # cm-sprint-bus — opinionated pipeline + artifacts
6
+
7
+ ## Pipeline
8
+
9
+ `brainstorm → plan → design → tdd → build → review → qa → security → ship → monitor → retro`
10
+
11
+ ## CLI
12
+
13
+ ```bash
14
+ cm sprint init --project .
15
+ cm sprint init --from plan --project . # jump in mid-pipeline
16
+ cm sprint status --project .
17
+ cm sprint complete plan -m "$(cat plan-notes.md)" --project .
18
+ cm sprint dry-run --project .
19
+ ```
20
+
21
+ ## Artifacts
22
+
23
+ - `.cm/sprint/state.json`
24
+ - `.cm/sprint/artifacts/<step>.md`
25
+ - `.cm/sprint/events.jsonl`
26
+
27
+ ## Skill mapping (hints)
28
+
29
+ Each step maps to existing CodyMaster skills (see `skillMappingForStep` in `src/sprint-pipeline.ts`). Use `cm sprint status` for the **next** recommended skill.
30
+
31
+ ## Context bus
32
+
33
+ This complements `.cm/context-bus.json` (skill-chain). Prefer **sprint files** for linear release trains; use **context bus** for ad-hoc chains.
@@ -13,16 +13,12 @@ When this workflow is called, the AI Assistant should execute the following acti
13
13
  Per `_shared/helpers.md#Load-Working-Memory` — **use Smart Spine order:**
14
14
  1. Check `.cm/context-bus.json` → any active pipeline? any prior skill output to reuse?
15
15
  2. Load L0 indexes: `learnings-index.md` (~100 tok) + `skeleton-index.md` (~500 tok)
16
- > **If OpenViking backend active:** Skip step 2 — engine auto-serves L0/L1 via `cm_resolve`.
17
16
  3. Scope-filter learnings via `cm_query` — only load what matches current objective
18
- > **If OpenViking:** `cm_query` uses vector semantic search — broader recall, fewer missed learnings.
19
17
  4. Read `CONTINUITY.md` → set Active Goal to the new objective
20
18
  5. Run token budget check: `cm continuity budget` → confirm no category is over soft limit
21
19
 
22
20
  > ⚡ Total context load: ~700 tokens. Full load used to be ~3,200.
23
21
  > Only escalate to L2 (full files) if L0 index explicitly flags a match.
24
- > With OpenViking: L0 is auto-maintained — no stale index risk.
25
-
26
22
  0.5. **Skill Coverage Check (Adaptive Discovery):**
27
23
  - Scan the objective for technologies, frameworks, or patterns mentioned
28
24
  - Cross-reference with `cm-skill-index` Layer 1 triggers
@@ -85,11 +81,5 @@ When this workflow is called, the AI Assistant should execute the following acti
85
81
  - Record any new learnings or decisions made during this workflow
86
82
  - If inside a skill chain: `cm continuity bus` → verify context bus reflects completed step
87
83
  - Refresh L0 indexes: `cm continuity index` (auto-runs on `addLearning`, manual refresh here)
88
- > **If OpenViking:** Skip manual index refresh — engine maintains L0/L1 automatically.
89
-
90
84
  > **Note for AI:** If this is a brand new project, suggest running `cm-project-bootstrap` first.
91
85
  > If the working environment has a risk of accidentally switching accounts/projects, remind about `cm-identity-guard` (Per `_shared/helpers.md#Identity-Check`).
92
- >
93
- > **OpenViking tip:** If the project uses many learnings/decisions (>100 entries) or needs semantic
94
- > search beyond keyword matching, suggest switching to the Viking backend:
95
- > `storage.backend: viking` in `.cm/config.yaml` + `pip install openviking && openviking start`
@@ -16,12 +16,14 @@ Write the test first. Watch it fail. Write minimal code to pass.
16
16
  ## When to Use
17
17
 
18
18
  **Always:**
19
+
19
20
  - New features
20
21
  - Bug fixes
21
22
  - Refactoring
22
23
  - Behavior changes
23
24
 
24
25
  **Exceptions (ask your human partner):**
26
+
25
27
  - Throwaway prototypes
26
28
  - Generated code
27
29
  - Configuration files
@@ -37,6 +39,7 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
37
39
  Write code before the test? Delete it. Start over.
38
40
 
39
41
  **No exceptions:**
42
+
40
43
  - Don't keep it as "reference"
41
44
  - Don't "adapt" it while writing tests
42
45
  - Don't look at it
@@ -83,21 +86,14 @@ Before writing ANY test, check `.cm/CONTINUITY.md`:
83
86
 
84
87
  Write one minimal test showing what should happen.
85
88
 
86
- <Good>
87
- ```typescript
88
- test('retries failed operations 3 times', async () => {
89
- let attempts = 0;
90
- const operation = () => {
91
- attempts++;
92
- if (attempts < 3) throw new Error('fail');
93
- return 'success';
94
- };
89
+ ```typescript test('retries failed operations 3 times', async () => { let attempts = 0; const operation = () => { attempts++; if (attempts < 3) throw new Error('fail'); return 'success'; };
95
90
 
96
91
  const result = await retryOperation(operation);
97
92
 
98
93
  expect(result).toBe('success');
99
94
  expect(attempts).toBe(3);
100
95
  });
96
+
101
97
  ```
102
98
  Clear name, tests real behavior, one thing
103
99
  </Good>
@@ -113,10 +109,12 @@ test('retry works', async () => {
113
109
  expect(mock).toHaveBeenCalledTimes(3);
114
110
  });
115
111
  ```
112
+
116
113
  Vague name, tests mock not code
117
- </Bad>
114
+
118
115
 
119
116
  **Requirements:**
117
+
120
118
  - One behavior
121
119
  - Clear name
122
120
  - Real code (no mocks unless unavoidable)
@@ -130,6 +128,7 @@ npm test path/to/test.test.ts
130
128
  ```
131
129
 
132
130
  Confirm:
131
+
133
132
  - Test fails (not errors)
134
133
  - Failure message is expected
135
134
  - Fails because feature missing (not typos)
@@ -142,37 +141,9 @@ Confirm:
142
141
 
143
142
  Write simplest code to pass the test.
144
143
 
145
- <Good>
146
- ```typescript
147
- async function retryOperation<T>(fn: () => Promise<T>): Promise<T> {
148
- for (let i = 0; i < 3; i++) {
149
- try {
150
- return await fn();
151
- } catch (e) {
152
- if (i === 2) throw e;
153
- }
154
- }
155
- throw new Error('unreachable');
156
- }
157
- ```
158
- Just enough to pass
159
- </Good>
144
+ ```typescript async function retryOperation(fn: () => Promise): Promise { for (let i = 0; i < 3; i++) { try { return await fn(); } catch (e) { if (i === 2) throw e; } } throw new Error('unreachable'); } ``` Just enough to pass
160
145
 
161
- <Bad>
162
- ```typescript
163
- async function retryOperation<T>(
164
- fn: () => Promise<T>,
165
- options?: {
166
- maxRetries?: number;
167
- backoff?: 'linear' | 'exponential';
168
- onRetry?: (attempt: number) => void;
169
- }
170
- ): Promise<T> {
171
- // YAGNI
172
- }
173
- ```
174
- Over-engineered
175
- </Bad>
146
+ ```typescript async function retryOperation( fn: () => Promise, options?: { maxRetries?: number; backoff?: 'linear' | 'exponential'; onRetry?: (attempt: number) => void; } ): Promise { // YAGNI } ``` Over-engineered
176
147
 
177
148
  Don't add features, refactor other code, or "improve" beyond the test.
178
149
 
@@ -185,6 +156,7 @@ npm test path/to/test.test.ts
185
156
  ```
186
157
 
187
158
  Confirm:
159
+
188
160
  - Test passes
189
161
  - Other tests still pass
190
162
  - Output pristine (no errors, warnings)
@@ -196,6 +168,7 @@ Confirm:
196
168
  ### REFACTOR - Clean Up
197
169
 
198
170
  After green only:
171
+
199
172
  - Remove duplication
200
173
  - Improve names
201
174
  - Extract helpers
@@ -208,17 +181,20 @@ Next failing test for next feature.
208
181
 
209
182
  ## Good Tests
210
183
 
211
- | Quality | Good | Bad |
212
- |---------|------|-----|
213
- | **Minimal** | One thing. "and" in name? Split it. | `test('validates email and domain and whitespace')` |
214
- | **Clear** | Name describes behavior | `test('test1')` |
215
- | **Shows intent** | Demonstrates desired API | Obscures what code should do |
184
+
185
+ | Quality | Good | Bad |
186
+ | ---------------- | ----------------------------------- | --------------------------------------------------- |
187
+ | **Minimal** | One thing. "and" in name? Split it. | `test('validates email and domain and whitespace')` |
188
+ | **Clear** | Name describes behavior | `test('test1')` |
189
+ | **Shows intent** | Demonstrates desired API | Obscures what code should do |
190
+
216
191
 
217
192
  ## Why Order Matters
218
193
 
219
194
  **"I'll write tests after to verify it works"**
220
195
 
221
196
  Tests written after code pass immediately. Passing immediately proves nothing:
197
+
222
198
  - Might test wrong thing
223
199
  - Might test implementation, not behavior
224
200
  - Might miss edge cases you forgot
@@ -229,6 +205,7 @@ Test-first forces you to see the test fail, proving it actually tests something.
229
205
  **"I already manually tested all the edge cases"**
230
206
 
231
207
  Manual testing is ad-hoc. You think you tested everything but:
208
+
232
209
  - No record of what you tested
233
210
  - Can't re-run when code changes
234
211
  - Easy to forget cases under pressure
@@ -239,6 +216,7 @@ Automated tests are systematic. They run the same way every time.
239
216
  **"Deleting X hours of work is wasteful"**
240
217
 
241
218
  Sunk cost fallacy. The time is already gone. Your choice now:
219
+
242
220
  - Delete and rewrite with TDD (X more hours, high confidence)
243
221
  - Keep it and add tests after (30 min, low confidence, likely bugs)
244
222
 
@@ -247,6 +225,7 @@ The "waste" is keeping code you can't trust. Working code without real tests is
247
225
  **"TDD is dogmatic, being pragmatic means adapting"**
248
226
 
249
227
  TDD IS pragmatic:
228
+
250
229
  - Finds bugs before commit (faster than debugging after)
251
230
  - Prevents regressions (tests catch breaks immediately)
252
231
  - Documents behavior (tests show how to use code)
@@ -266,19 +245,21 @@ Tests-first force edge case discovery before implementing. Tests-after verify yo
266
245
 
267
246
  ## Common Rationalizations
268
247
 
269
- | Excuse | Reality |
270
- |--------|---------|
271
- | "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
272
- | "I'll test after" | Tests passing immediately prove nothing. |
273
- | "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
274
- | "Already manually tested" | Ad-hoc systematic. No record, can't re-run. |
275
- | "Deleting X hours is wasteful" | Sunk cost fallacy. Keeping unverified code is technical debt. |
276
- | "Keep as reference, write tests first" | You'll adapt it. That's testing after. Delete means delete. |
277
- | "Need to explore first" | Fine. Throw away exploration, start with TDD. |
278
- | "Test hard = design unclear" | Listen to test. Hard to test = hard to use. |
279
- | "TDD will slow me down" | TDD faster than debugging. Pragmatic = test-first. |
280
- | "Manual test faster" | Manual doesn't prove edge cases. You'll re-test every change. |
281
- | "Existing code has no tests" | You're improving it. Add tests for existing code. |
248
+
249
+ | Excuse | Reality |
250
+ | -------------------------------------- | ----------------------------------------------------------------------- |
251
+ | "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
252
+ | "I'll test after" | Tests passing immediately prove nothing. |
253
+ | "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
254
+ | "Already manually tested" | Ad-hoc systematic. No record, can't re-run. |
255
+ | "Deleting X hours is wasteful" | Sunk cost fallacy. Keeping unverified code is technical debt. |
256
+ | "Keep as reference, write tests first" | You'll adapt it. That's testing after. Delete means delete. |
257
+ | "Need to explore first" | Fine. Throw away exploration, start with TDD. |
258
+ | "Test hard = design unclear" | Listen to test. Hard to test = hard to use. |
259
+ | "TDD will slow me down" | TDD faster than debugging. Pragmatic = test-first. |
260
+ | "Manual test faster" | Manual doesn't prove edge cases. You'll re-test every change. |
261
+ | "Existing code has no tests" | You're improving it. Add tests for existing code. |
262
+
282
263
 
283
264
  ## Red Flags - STOP and Start Over
284
265
 
@@ -303,6 +284,7 @@ Tests-first force edge case discovery before implementing. Tests-after verify yo
303
284
  **Bug:** Empty email accepted
304
285
 
305
286
  **RED**
287
+
306
288
  ```typescript
307
289
  test('rejects empty email', async () => {
308
290
  const result = await submitForm({ email: '' });
@@ -311,12 +293,14 @@ test('rejects empty email', async () => {
311
293
  ```
312
294
 
313
295
  **Verify RED**
296
+
314
297
  ```bash
315
298
  $ npm test
316
299
  FAIL: expected 'Email required', got undefined
317
300
  ```
318
301
 
319
302
  **GREEN**
303
+
320
304
  ```typescript
321
305
  function submitForm(data: FormData) {
322
306
  if (!data.email?.trim()) {
@@ -327,6 +311,7 @@ function submitForm(data: FormData) {
327
311
  ```
328
312
 
329
313
  **Verify GREEN**
314
+
330
315
  ```bash
331
316
  $ npm test
332
317
  PASS
@@ -339,25 +324,27 @@ Extract validation for multiple fields if needed.
339
324
 
340
325
  Before marking work complete:
341
326
 
342
- - [ ] Every new function/method has a test
343
- - [ ] Watched each test fail before implementing
344
- - [ ] Each test failed for expected reason (feature missing, not typo)
345
- - [ ] Wrote minimal code to pass each test
346
- - [ ] All tests pass
347
- - [ ] Output pristine (no errors, warnings)
348
- - [ ] Tests use real code (mocks only if unavoidable)
349
- - [ ] Edge cases and errors covered
327
+ - Every new function/method has a test
328
+ - Watched each test fail before implementing
329
+ - Each test failed for expected reason (feature missing, not typo)
330
+ - Wrote minimal code to pass each test
331
+ - All tests pass
332
+ - Output pristine (no errors, warnings)
333
+ - Tests use real code (mocks only if unavoidable)
334
+ - Edge cases and errors covered
350
335
 
351
336
  Can't check all boxes? You skipped TDD. Start over.
352
337
 
353
338
  ## When Stuck
354
339
 
355
- | Problem | Solution |
356
- |---------|----------|
340
+
341
+ | Problem | Solution |
342
+ | ---------------------- | -------------------------------------------------------------------- |
357
343
  | Don't know how to test | Write wished-for API. Write assertion first. Ask your human partner. |
358
- | Test too complicated | Design too complicated. Simplify interface. |
359
- | Must mock everything | Code too coupled. Use dependency injection. |
360
- | Test setup huge | Extract helpers. Still complex? Simplify design. |
344
+ | Test too complicated | Design too complicated. Simplify interface. |
345
+ | Must mock everything | Code too coupled. Use dependency injection. |
346
+ | Test setup huge | Extract helpers. Still complex? Simplify design. |
347
+
361
348
 
362
349
  ## Debugging Integration
363
350
 
@@ -372,4 +359,4 @@ Production code → test exists and failed first
372
359
  Otherwise → not TDD
373
360
  ```
374
361
 
375
- No exceptions without your human partner's permission.
362
+ No exceptions without your human partner's permission.
@@ -0,0 +1,21 @@
1
+ # Skill install profiles (Antigravity / Windsurf / token budget)
2
+
3
+ Use with `install.sh`:
4
+
5
+ ```bash
6
+ bash install.sh --gemini --profile core
7
+ bash install.sh --antigravity --profile core
8
+ bash install.sh --windsurf --profile core
9
+ ```
10
+
11
+ - **core** — Orchestration, TDD, debugging, quality gates, deploy, secrets, identity, terminal (~21 skills). Recommended for global `~/.gemini/antigravity/skills`.
12
+ - **growth** — Ads tracking, CRO, content factory, forms, dashboard, etc. Add on top of core (re-run install to the same target) or install only into a workspace project folder.
13
+ - **design** — UX Master, design system, UI preview, JTBD, brainstorm.
14
+ - **knowledge** — Dockit, NotebookLM skill, deep search, code intelligence, project bootstrap, reactor.
15
+ - **full** — All skills (default when `--profile` is omitted). Same set as [full.txt](full.txt).
16
+
17
+ **Global vs workspace:** Keep **core** in user global skills; add **growth** / **design** / **knowledge** under the project (e.g. `.gemini/antigravity/skills` in repo) so every session does not load the full catalog.
18
+
19
+ **MCP:** Disable unused MCP servers in the IDE to avoid retry loops when a server errors; heavy external tools belong in optional profiles, not core.
20
+
21
+ **Maintainers:** When adding a new `skills/cm-*` folder, update [full.txt](full.txt) and add the skill to the appropriate optional profile (`growth`, `design`, or `knowledge`) if it is not part of `core`.
@@ -0,0 +1,23 @@
1
+ # CodyMaster profile: core — Antigravity/Windsurf token budget (orchestration + quality + safety)
2
+ # Install: bash install.sh --gemini --profile core
3
+ cm-skill-index
4
+ cm-how-it-work
5
+ cm-start
6
+ cm-planning
7
+ cm-execution
8
+ cm-continuity
9
+ cm-status
10
+ cm-tdd
11
+ cm-debugging
12
+ cm-code-review
13
+ cm-clean-code
14
+ cm-quality-gate
15
+ cm-test-gate
16
+ cm-safe-deploy
17
+ cm-secret-shield
18
+ cm-identity-guard
19
+ cm-security-gate
20
+ cm-safe-i18n
21
+ cm-skill-chain
22
+ cm-git-worktrees
23
+ cm-terminal
@@ -0,0 +1,6 @@
1
+ # UX/UI and product discovery
2
+ cm-design-system
3
+ cm-ux-master
4
+ cm-ui-preview
5
+ cm-brainstorm-idea
6
+ cm-jtbd
@@ -0,0 +1,62 @@
1
+ # Complete CodyMaster skill set (same as default install when --profile full or omitted)
2
+ # Kept in sync with skills/cm-*/ — update when adding skills
3
+ cm-ads-tracker
4
+ cm-auto-publisher
5
+ cm-autopilot
6
+ cm-booking-calendar
7
+ cm-brainstorm-idea
8
+ cm-browse
9
+ cm-clean-code
10
+ cm-code-review
11
+ cm-codeintell
12
+ cm-conductor-worktrees
13
+ cm-content-factory
14
+ cm-continuity
15
+ cm-cro-methodology
16
+ cm-dashboard
17
+ cm-debugging
18
+ cm-deep-search
19
+ cm-design-studio
20
+ cm-design-system
21
+ cm-dockit
22
+ cm-ecosystem-roadmap
23
+ cm-engineering-meta
24
+ cm-example
25
+ cm-execution
26
+ cm-git-worktrees
27
+ cm-google-form
28
+ cm-growth-hacking
29
+ cm-guardian-runtime
30
+ cm-how-it-work
31
+ cm-identity-guard
32
+ cm-jtbd
33
+ cm-mcp-engineering
34
+ cm-notebooklm
35
+ cm-planning
36
+ cm-post-deploy-canary
37
+ cm-project-bootstrap
38
+ cm-qa-visual-cli
39
+ cm-quality-gate
40
+ cm-reactor
41
+ cm-readit
42
+ cm-retro-cli
43
+ cm-safe-deploy
44
+ cm-safe-i18n
45
+ cm-second-opinion-cli
46
+ cm-secret-shield
47
+ cm-security-gate
48
+ cm-skill-chain
49
+ cm-skill-evolution
50
+ cm-skill-health
51
+ cm-skill-index
52
+ cm-skill-mastery
53
+ cm-skill-search
54
+ cm-skill-share
55
+ cm-sprint-bus
56
+ cm-start
57
+ cm-status
58
+ cm-tdd
59
+ cm-terminal
60
+ cm-test-gate
61
+ cm-ui-preview
62
+ cm-ux-master
@@ -0,0 +1,10 @@
1
+ # Marketing, CRO, ads tracking, content — use with core or standalone
2
+ cm-ads-tracker
3
+ cm-cro-methodology
4
+ cm-growth-hacking
5
+ cm-booking-calendar
6
+ cm-content-factory
7
+ cm-auto-publisher
8
+ cm-google-form
9
+ cm-readit
10
+ cm-dashboard
@@ -0,0 +1,7 @@
1
+ # Docs, codebase intelligence, research (often larger skills / MCP-adjacent)
2
+ cm-notebooklm
3
+ cm-deep-search
4
+ cm-codeintell
5
+ cm-dockit
6
+ cm-project-bootstrap
7
+ cm-reactor