oh-my-codex-cli 0.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.
- package/.agent/skills/agent-kb/HOW_TO_USE.md +428 -0
- package/.agent/skills/agent-kb/README.md +46 -0
- package/.agent/skills/agent-kb/SKILL.md +128 -0
- package/.agent/skills/agent-kb/references/intelligent-analysis-explained.md +333 -0
- package/.agent/skills/agent-kb/references/query-optimization.md +225 -0
- package/.agent/skills/aireview/SKILL.md +704 -0
- package/.agent/skills/analyze/SKILL.md +81 -0
- package/.agent/skills/architect-planner/HOW_TO_USE.md +238 -0
- package/.agent/skills/architect-planner/README.md +41 -0
- package/.agent/skills/architect-planner/SKILL.md +539 -0
- package/.agent/skills/auto-mbti/SKILL.md +291 -0
- package/.agent/skills/autopilot/SKILL.md +222 -0
- package/.agent/skills/backend-patterns/SKILL.md +602 -0
- package/.agent/skills/bdd-generator/README.md +78 -0
- package/.agent/skills/bdd-generator/SKILL.md +436 -0
- package/.agent/skills/brainstorming/HOW_TO_USE.md +289 -0
- package/.agent/skills/brainstorming/README.md +41 -0
- package/.agent/skills/brainstorming/SKILL.md +165 -0
- package/.agent/skills/build-fix/SKILL.md +190 -0
- package/.agent/skills/cancel/SKILL.md +658 -0
- package/.agent/skills/checkpoint/SKILL.md +94 -0
- package/.agent/skills/code-review/SKILL.md +273 -0
- package/.agent/skills/coding-standards/SKILL.md +535 -0
- package/.agent/skills/conductor/SKILL.md +128 -0
- package/.agent/skills/conductor/commands/conductor/implement.toml +358 -0
- package/.agent/skills/conductor/commands/conductor/newTrack.toml +142 -0
- package/.agent/skills/conductor/commands/conductor/revert.toml +123 -0
- package/.agent/skills/conductor/commands/conductor/setup.toml +429 -0
- package/.agent/skills/conductor/commands/conductor/status.toml +57 -0
- package/.agent/skills/conductor/scripts/install.sh +89 -0
- package/.agent/skills/conductor/templates/code_styleguides/csharp.md +115 -0
- package/.agent/skills/conductor/templates/code_styleguides/dart.md +238 -0
- package/.agent/skills/conductor/templates/code_styleguides/general.md +23 -0
- package/.agent/skills/conductor/templates/code_styleguides/go.md +48 -0
- package/.agent/skills/conductor/templates/code_styleguides/html-css.md +49 -0
- package/.agent/skills/conductor/templates/code_styleguides/javascript.md +51 -0
- package/.agent/skills/conductor/templates/code_styleguides/python.md +37 -0
- package/.agent/skills/conductor/templates/code_styleguides/typescript.md +43 -0
- package/.agent/skills/conductor/templates/rules/README.md +23 -0
- package/.agent/skills/conductor/templates/rules/agents.md +49 -0
- package/.agent/skills/conductor/templates/rules/coding-style.md +70 -0
- package/.agent/skills/conductor/templates/rules/dev.md +20 -0
- package/.agent/skills/conductor/templates/rules/git-workflow.md +45 -0
- package/.agent/skills/conductor/templates/rules/hooks.md +6 -0
- package/.agent/skills/conductor/templates/rules/patterns.md +55 -0
- package/.agent/skills/conductor/templates/rules/performance.md +47 -0
- package/.agent/skills/conductor/templates/rules/research.md +26 -0
- package/.agent/skills/conductor/templates/rules/review.md +22 -0
- package/.agent/skills/conductor/templates/rules/security.md +36 -0
- package/.agent/skills/conductor/templates/rules/testing.md +30 -0
- package/.agent/skills/conductor/templates/workflow.md +333 -0
- package/.agent/skills/consensus/HOW_TO_USE.md +191 -0
- package/.agent/skills/consensus/README.md +41 -0
- package/.agent/skills/consensus/SKILL.md +317 -0
- package/.agent/skills/content-research-writer/SKILL.md +537 -0
- package/.agent/skills/debug-analysis/SKILL.md +331 -0
- package/.agent/skills/deepinit/SKILL.md +347 -0
- package/.agent/skills/deepsearch/SKILL.md +56 -0
- package/.agent/skills/doctor/SKILL.md +158 -0
- package/.agent/skills/drawio/EXAMPLES.md +382 -0
- package/.agent/skills/drawio/QUICK_START.md +237 -0
- package/.agent/skills/drawio/README.md +315 -0
- package/.agent/skills/drawio/SETUP_GUIDE.md +254 -0
- package/.agent/skills/drawio/SKILL.md +1176 -0
- package/.agent/skills/e2e/SKILL.md +396 -0
- package/.agent/skills/ecomode/SKILL.md +160 -0
- package/.agent/skills/electron-driver/SKILL.md +144 -0
- package/.agent/skills/electron-driver/scripts/driver-template.js +71 -0
- package/.agent/skills/eval/SKILL.md +140 -0
- package/.agent/skills/eval-harness/SKILL.md +242 -0
- package/.agent/skills/evolve/SKILL.md +213 -0
- package/.agent/skills/frontend-design/SKILL.md +42 -0
- package/.agent/skills/frontend-patterns/SKILL.md +646 -0
- package/.agent/skills/frontend-ui-ux/SKILL.md +70 -0
- package/.agent/skills/git-master/SKILL.md +75 -0
- package/.agent/skills/help/SKILL.md +89 -0
- package/.agent/skills/iterative-retrieval/SKILL.md +217 -0
- package/.agent/skills/local-skills-setup/SKILL.md +483 -0
- package/.agent/skills/log-analyzer/SKILL.md +187 -0
- package/.agent/skills/mcp-setup/SKILL.md +226 -0
- package/.agent/skills/multi-model-research/HOW_TO_USE.md +614 -0
- package/.agent/skills/multi-model-research/README.md +233 -0
- package/.agent/skills/multi-model-research/SKILL.md +541 -0
- package/.agent/skills/multi-model-research/references/troubleshooting.md +415 -0
- package/.agent/skills/note/SKILL.md +80 -0
- package/.agent/skills/omc-setup/SKILL.md +219 -0
- package/.agent/skills/orchestrate/SKILL.md +620 -0
- package/.agent/skills/patent-workflow/IMPLEMENTATION_SUMMARY.md +500 -0
- package/.agent/skills/patent-workflow/README.md +455 -0
- package/.agent/skills/patent-workflow/SKILL.md +1036 -0
- package/.agent/skills/patent-workflow/tools/irr_checker.py +260 -0
- package/.agent/skills/patent-workflow/tools/sample_terminology.json +49 -0
- package/.agent/skills/patent-workflow/tools/term_checker.py +355 -0
- package/.agent/skills/pattern-recognition/SKILL.md +792 -0
- package/.agent/skills/pipeline/SKILL.md +448 -0
- package/.agent/skills/plan/SKILL.md +309 -0
- package/.agent/skills/planning-methodology/SKILL.md +370 -0
- package/.agent/skills/planning-with-files/SKILL.md +210 -0
- package/.agent/skills/planning-with-files/examples.md +202 -0
- package/.agent/skills/planning-with-files/reference.md +218 -0
- package/.agent/skills/planning-with-files/scripts/check-complete.ps1 +42 -0
- package/.agent/skills/planning-with-files/scripts/check-complete.sh +44 -0
- package/.agent/skills/planning-with-files/scripts/init-session.ps1 +120 -0
- package/.agent/skills/planning-with-files/scripts/init-session.sh +120 -0
- package/.agent/skills/planning-with-files/scripts/session-catchup.py +208 -0
- package/.agent/skills/planning-with-files/templates/findings.md +95 -0
- package/.agent/skills/planning-with-files/templates/progress.md +114 -0
- package/.agent/skills/planning-with-files/templates/task_plan.md +132 -0
- package/.agent/skills/project-analyze/CLAUDE.md +18 -0
- package/.agent/skills/project-analyze/HOW_TO_USE.md +145 -0
- package/.agent/skills/project-analyze/README.md +42 -0
- package/.agent/skills/project-analyze/SKILL.md +289 -0
- package/.agent/skills/project-analyze/SKILL.md.backup +287 -0
- package/.agent/skills/project-analyze/SKILL.md.backup_20260105_093646 +287 -0
- package/.agent/skills/project-analyze/assets/analysis-report-template.md +433 -0
- package/.agent/skills/project-analyze/references/analysis-patterns.md +422 -0
- package/.agent/skills/project-analyze/references/projectmind-explained.md +535 -0
- package/.agent/skills/project-session-manager/SKILL.md +428 -0
- package/.agent/skills/project-session-manager/lib/config.sh +86 -0
- package/.agent/skills/project-session-manager/lib/parse.sh +121 -0
- package/.agent/skills/project-session-manager/lib/session.sh +132 -0
- package/.agent/skills/project-session-manager/lib/tmux.sh +103 -0
- package/.agent/skills/project-session-manager/lib/worktree.sh +171 -0
- package/.agent/skills/project-session-manager/psm.sh +629 -0
- package/.agent/skills/project-session-manager/templates/feature.md +56 -0
- package/.agent/skills/project-session-manager/templates/issue-fix.md +57 -0
- package/.agent/skills/project-session-manager/templates/pr-review.md +65 -0
- package/.agent/skills/project-session-manager/templates/projects.json +19 -0
- package/.agent/skills/quality-check/HOW_TO_USE.md +171 -0
- package/.agent/skills/quality-check/README.md +50 -0
- package/.agent/skills/quality-check/SKILL.md +240 -0
- package/.agent/skills/quality-check/SKILL.md.backup +238 -0
- package/.agent/skills/quality-check/SKILL.md.backup_20260105_093646 +238 -0
- package/.agent/skills/quality-check/assets/quality-report-template.md +437 -0
- package/.agent/skills/quality-check/references/refactoring-patterns.md +550 -0
- package/.agent/skills/quality-check/references/scoring-criteria.md +454 -0
- package/.agent/skills/quality-validation/SKILL.md +519 -0
- package/.agent/skills/quality-validation/SKILL.md.backup +573 -0
- package/.agent/skills/quality-validation/SKILL.md.backup_20260105_093646 +573 -0
- package/.agent/skills/ralph/SKILL.md +236 -0
- package/.agent/skills/ralph-init/SKILL.md +78 -0
- package/.agent/skills/ralplan/SKILL.md +58 -0
- package/.agent/skills/refactor-clean/SKILL.md +49 -0
- package/.agent/skills/release/SKILL.md +84 -0
- package/.agent/skills/research/SKILL.md +526 -0
- package/.agent/skills/research-methodology/SKILL.md +268 -0
- package/.agent/skills/review/SKILL.md +53 -0
- package/.agent/skills/security-review/SKILL.md +509 -0
- package/.agent/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.agent/skills/setup-pm/SKILL.md +102 -0
- package/.agent/skills/skill/SKILL.md +424 -0
- package/.agent/skills/skill-create/SKILL.md +209 -0
- package/.agent/skills/skill-debugger/HOW_TO_USE.md +244 -0
- package/.agent/skills/skill-debugger/README.md +44 -0
- package/.agent/skills/skill-debugger/SKILL.md +326 -0
- package/.agent/skills/skill-debugger/diagnostic_checklist.md +115 -0
- package/.agent/skills/skill-development/SKILL.md +661 -0
- package/.agent/skills/skill-development/references/skill-creator-original.md +209 -0
- package/.agent/skills/skill-doc-generator/README.md +37 -0
- package/.agent/skills/skill-doc-generator/SKILL.md +331 -0
- package/.agent/skills/skill-quality-analyzer/HOW_TO_USE.md +243 -0
- package/.agent/skills/skill-quality-analyzer/README.md +61 -0
- package/.agent/skills/skill-quality-analyzer/SKILL.md +247 -0
- package/.agent/skills/skill-quality-analyzer/analyzer.py +209 -0
- package/.agent/skills/skill-quality-analyzer/expected_output.json +81 -0
- package/.agent/skills/skill-quality-analyzer/sample_input.json +9 -0
- package/.agent/skills/skill-tester/README.md +46 -0
- package/.agent/skills/skill-tester/SKILL.md +345 -0
- package/.agent/skills/start-dev/SKILL.md +701 -0
- package/.agent/skills/swarm/SKILL.md +691 -0
- package/.agent/skills/task-kb-lookup/SKILL.md +211 -0
- package/.agent/skills/task-kb-record/SKILL.md +417 -0
- package/.agent/skills/tdd/SKILL.md +446 -0
- package/.agent/skills/tdd-generator/DEMO.md +516 -0
- package/.agent/skills/tdd-generator/README.md +89 -0
- package/.agent/skills/tdd-generator/SKILL.md +278 -0
- package/.agent/skills/tdd-workflow/SKILL.md +424 -0
- package/.agent/skills/test-coverage/SKILL.md +48 -0
- package/.agent/skills/thinkdeep/HOW_TO_USE.md +183 -0
- package/.agent/skills/thinkdeep/README.md +41 -0
- package/.agent/skills/thinkdeep/SKILL.md +343 -0
- package/.agent/skills/ui-ux-pro-max/SKILL.md +228 -0
- package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/skills/ui-ux-pro-max/scripts/core.py +236 -0
- package/.agent/skills/ui-ux-pro-max/scripts/search.py +61 -0
- package/.agent/skills/ultrapilot/SKILL.md +647 -0
- package/.agent/skills/ultraqa/SKILL.md +152 -0
- package/.agent/skills/ultrawork/SKILL.md +123 -0
- package/.agent/skills/update-codemaps/SKILL.md +38 -0
- package/.agent/skills/update-docs/SKILL.md +52 -0
- package/.agent/skills/verification-loop/SKILL.md +140 -0
- package/.agent/skills/verify/SKILL.md +80 -0
- package/.agent/skills/writer-memory/SKILL.md +459 -0
- package/.agent/skills/writer-memory/lib/character-tracker.ts +338 -0
- package/.agent/skills/writer-memory/lib/memory-manager.ts +804 -0
- package/.agent/skills/writer-memory/lib/relationship-graph.ts +400 -0
- package/.agent/skills/writer-memory/lib/scene-organizer.ts +544 -0
- package/.agent/skills/writer-memory/lib/synopsis-builder.ts +339 -0
- package/.agent/skills/writer-memory/templates/synopsis-template.md +46 -0
- package/.governance/skill-lint.allowlist +4 -0
- package/.governance/skill-llm.allowlist +4 -0
- package/AGENTS.md +59 -0
- package/LICENSE +21 -0
- package/README.md +169 -0
- package/README.zh.md +145 -0
- package/bin/omcodex.js +8 -0
- package/commands/conductor/implement.toml +358 -0
- package/commands/conductor/newTrack.toml +142 -0
- package/commands/conductor/revert.toml +123 -0
- package/commands/conductor/setup.toml +429 -0
- package/commands/conductor/status.toml +57 -0
- package/docs/ALIGNMENT.md +40 -0
- package/docs/CODEX.md +133 -0
- package/docs/NOTIFY.md +81 -0
- package/docs/SKILL_GOVERNANCE.md +72 -0
- package/docs/SKILL_GOVERNANCE_FRAMEWORK.md +182 -0
- package/docs/SKILL_GOVERNANCE_FRAMEWORK.zh.md +170 -0
- package/package.json +50 -0
- package/prompts/architect.md +105 -0
- package/prompts/executor.md +134 -0
- package/prompts/planner.md +113 -0
- package/scripts/check-skill-governance.sh +84 -0
- package/scripts/check-skill-llm-governance.js +302 -0
- package/scripts/eval-skills.js +217 -0
- package/scripts/generate-catalog-docs.js +95 -0
- package/scripts/generate-codex-mcp-config.sh +22 -0
- package/scripts/install-codex-force.sh +5 -0
- package/scripts/install-codex-incremental.sh +5 -0
- package/scripts/install-codex.sh +79 -0
- package/scripts/notify-dispatch.js +15 -0
- package/scripts/setup-package-manager.js +137 -0
- package/src/catalog/generated/public-catalog.json +547 -0
- package/src/catalog/manifest.json +542 -0
- package/src/catalog/reader.js +43 -0
- package/src/catalog/schema.js +79 -0
- package/src/cli/doctor.js +62 -0
- package/src/cli/index.js +85 -0
- package/src/cli/notify.js +127 -0
- package/src/cli/route.js +43 -0
- package/src/cli/setup.js +155 -0
- package/src/cli/team.js +125 -0
- package/src/config/generator.js +119 -0
- package/src/mcp/memory-server.js +241 -0
- package/src/mcp/state-server.js +112 -0
- package/src/mcp/trace-server.js +168 -0
- package/src/notify/dispatch.js +74 -0
- package/src/notify/extensibility/dispatcher.js +113 -0
- package/src/notify/extensibility/events.js +15 -0
- package/src/notify/extensibility/loader.js +54 -0
- package/src/router/skill-router.js +90 -0
- package/src/team/auto-advance.js +72 -0
- package/src/team/orchestrator.js +82 -0
- package/src/team/state-store.js +33 -0
- package/src/utils/paths.js +33 -0
- package/templates/AGENTS.md +15 -0
- package/templates/catalog-manifest.json +542 -0
- package/templates/code_styleguides/csharp.md +115 -0
- package/templates/code_styleguides/dart.md +238 -0
- package/templates/code_styleguides/general.md +23 -0
- package/templates/code_styleguides/go.md +48 -0
- package/templates/code_styleguides/html-css.md +49 -0
- package/templates/code_styleguides/javascript.md +51 -0
- package/templates/code_styleguides/python.md +37 -0
- package/templates/code_styleguides/typescript.md +43 -0
- package/templates/rules/README.md +23 -0
- package/templates/rules/agents.md +49 -0
- package/templates/rules/coding-style.md +70 -0
- package/templates/rules/dev.md +20 -0
- package/templates/rules/git-workflow.md +45 -0
- package/templates/rules/notify.md +6 -0
- package/templates/rules/patterns.md +55 -0
- package/templates/rules/performance.md +47 -0
- package/templates/rules/research.md +26 -0
- package/templates/rules/review.md +22 -0
- package/templates/rules/security.md +36 -0
- package/templates/rules/testing.md +30 -0
- package/templates/workflow.md +333 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd
|
|
3
|
+
description: Test-Driven Development enforcement skill - write tests first, always
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TDD Mode
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## Native Subagent Protocol (Codex)
|
|
10
|
+
|
|
11
|
+
Codex supports native subagents. Delegate with `spawn_agent`, coordinate with `send_input`, collect via `wait`, and clean up with `close_agent`.
|
|
12
|
+
|
|
13
|
+
Execution preference:
|
|
14
|
+
1. Use native subagents first for independent workstreams (parallel when possible).
|
|
15
|
+
2. Merge results in main thread and run final verification.
|
|
16
|
+
3. Fallback only when delegation is blocked: use the `[ANALYST]`/`[ARCHITECT]`/`[EXECUTOR]`/`[REVIEWER]` structure in a single response.
|
|
17
|
+
|
|
18
|
+
Minimal orchestration pattern:
|
|
19
|
+
```text
|
|
20
|
+
spawn_agent -> send_input (optional) -> wait -> close_agent
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
> Codex invocation: use `$tdd ...` or `tdd: ...`
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
[TDD MODE ACTIVATED]
|
|
27
|
+
|
|
28
|
+
## The Iron Law
|
|
29
|
+
|
|
30
|
+
**NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST**
|
|
31
|
+
|
|
32
|
+
Write code before test? DELETE IT. Start over. No exceptions.
|
|
33
|
+
|
|
34
|
+
## Red-Green-Refactor Cycle
|
|
35
|
+
|
|
36
|
+
### 1. RED: Write Failing Test
|
|
37
|
+
- Write test for the NEXT piece of functionality
|
|
38
|
+
- Run test - MUST FAIL
|
|
39
|
+
- If it passes, your test is wrong
|
|
40
|
+
|
|
41
|
+
### 2. GREEN: Minimal Implementation
|
|
42
|
+
- Write ONLY enough code to pass the test
|
|
43
|
+
- No extras. No "while I'm here."
|
|
44
|
+
- Run test - MUST PASS
|
|
45
|
+
|
|
46
|
+
### 3. REFACTOR: Clean Up
|
|
47
|
+
- Improve code quality
|
|
48
|
+
- Run tests after EVERY change
|
|
49
|
+
- Must stay green
|
|
50
|
+
|
|
51
|
+
### 4. REPEAT
|
|
52
|
+
- Next failing test
|
|
53
|
+
- Continue cycle
|
|
54
|
+
|
|
55
|
+
## Enforcement Rules
|
|
56
|
+
|
|
57
|
+
| If You See | Action |
|
|
58
|
+
|------------|--------|
|
|
59
|
+
| Code written before test | STOP. Delete code. Write test first. |
|
|
60
|
+
| Test passes on first run | Test is wrong. Fix it to fail first. |
|
|
61
|
+
| Multiple features in one cycle | STOP. One test, one feature. |
|
|
62
|
+
| Skipping refactor | Go back. Clean up before next feature. |
|
|
63
|
+
|
|
64
|
+
## Commands
|
|
65
|
+
|
|
66
|
+
Before each implementation:
|
|
67
|
+
```bash
|
|
68
|
+
npm test # Should have ONE new failure
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
After implementation:
|
|
72
|
+
```bash
|
|
73
|
+
npm test # New test should pass, all others still pass
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Output Format
|
|
77
|
+
|
|
78
|
+
When guiding TDD:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
## TDD Cycle: [Feature Name]
|
|
82
|
+
|
|
83
|
+
### RED Phase
|
|
84
|
+
Test: [test code]
|
|
85
|
+
Expected failure: [what error you expect]
|
|
86
|
+
Actual: [run result showing failure]
|
|
87
|
+
|
|
88
|
+
### GREEN Phase
|
|
89
|
+
Implementation: [minimal code]
|
|
90
|
+
Result: [run result showing pass]
|
|
91
|
+
|
|
92
|
+
### REFACTOR Phase
|
|
93
|
+
Changes: [what was cleaned up]
|
|
94
|
+
Result: [tests still pass]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Remember:** The discipline IS the value. Shortcuts destroy the benefit.
|
|
98
|
+
|
|
99
|
+
## Imported from everything-codex
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
name: ecc-tdd
|
|
103
|
+
description: Imported from everything-codex command tdd
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
description: Enforce test-driven development workflow. Scaffold interfaces, generate tests FIRST, then implement minimal code to pass. Ensure 80%+ coverage.
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# TDD Command
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## Native Subagent Protocol (Codex)
|
|
114
|
+
|
|
115
|
+
Codex supports native subagents. Delegate with `spawn_agent`, coordinate with `send_input`, collect via `wait`, and clean up with `close_agent`.
|
|
116
|
+
|
|
117
|
+
Execution preference:
|
|
118
|
+
1. Use native subagents first for independent workstreams (parallel when possible).
|
|
119
|
+
2. Merge results in main thread and run final verification.
|
|
120
|
+
3. Fallback only when delegation is blocked: use the `[ANALYST]`/`[ARCHITECT]`/`[EXECUTOR]`/`[REVIEWER]` structure in a single response.
|
|
121
|
+
|
|
122
|
+
Minimal orchestration pattern:
|
|
123
|
+
```text
|
|
124
|
+
spawn_agent -> send_input (optional) -> wait -> close_agent
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
This command invokes the **tdd-guide** agent to enforce test-driven development methodology.
|
|
128
|
+
|
|
129
|
+
## What This Command Does
|
|
130
|
+
|
|
131
|
+
1. **Scaffold Interfaces** - Define types/interfaces first
|
|
132
|
+
2. **Generate Tests First** - Write failing tests (RED)
|
|
133
|
+
3. **Implement Minimal Code** - Write just enough to pass (GREEN)
|
|
134
|
+
4. **Refactor** - Improve code while keeping tests green (REFACTOR)
|
|
135
|
+
5. **Verify Coverage** - Ensure 80%+ test coverage
|
|
136
|
+
|
|
137
|
+
## When to Use
|
|
138
|
+
|
|
139
|
+
Use `$tdd` when:
|
|
140
|
+
- Implementing new features
|
|
141
|
+
- Adding new functions/components
|
|
142
|
+
- Fixing bugs (write test that reproduces bug first)
|
|
143
|
+
- Refactoring existing code
|
|
144
|
+
- Building critical business logic
|
|
145
|
+
|
|
146
|
+
## How It Works
|
|
147
|
+
|
|
148
|
+
The tdd-guide agent will:
|
|
149
|
+
|
|
150
|
+
1. **Define interfaces** for inputs/outputs
|
|
151
|
+
2. **Write tests that will FAIL** (because code doesn't exist yet)
|
|
152
|
+
3. **Run tests** and verify they fail for the right reason
|
|
153
|
+
4. **Write minimal implementation** to make tests pass
|
|
154
|
+
5. **Run tests** and verify they pass
|
|
155
|
+
6. **Refactor** code while keeping tests green
|
|
156
|
+
7. **Check coverage** and add more tests if below 80%
|
|
157
|
+
|
|
158
|
+
## TDD Cycle
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
RED → GREEN → REFACTOR → REPEAT
|
|
162
|
+
|
|
163
|
+
RED: Write a failing test
|
|
164
|
+
GREEN: Write minimal code to pass
|
|
165
|
+
REFACTOR: Improve code, keep tests passing
|
|
166
|
+
REPEAT: Next feature/scenario
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Example Usage
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
User: $tdd I need a function to calculate market liquidity score
|
|
173
|
+
|
|
174
|
+
Agent (tdd-guide):
|
|
175
|
+
# TDD Session: Market Liquidity Score Calculator
|
|
176
|
+
|
|
177
|
+
## Step 1: Define Interface (SCAFFOLD)
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
// lib/liquidity.ts
|
|
181
|
+
export interface MarketData {
|
|
182
|
+
totalVolume: number
|
|
183
|
+
bidAskSpread: number
|
|
184
|
+
activeTraders: number
|
|
185
|
+
lastTradeTime: Date
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export function calculateLiquidityScore(market: MarketData): number {
|
|
189
|
+
// TODO: Implementation
|
|
190
|
+
throw new Error('Not implemented')
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Step 2: Write Failing Test (RED)
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
// lib/liquidity.test.ts
|
|
198
|
+
import { calculateLiquidityScore } from './liquidity'
|
|
199
|
+
|
|
200
|
+
describe('calculateLiquidityScore', () => {
|
|
201
|
+
it('should return high score for liquid market', () => {
|
|
202
|
+
const market = {
|
|
203
|
+
totalVolume: 100000,
|
|
204
|
+
bidAskSpread: 0.01,
|
|
205
|
+
activeTraders: 500,
|
|
206
|
+
lastTradeTime: new Date()
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const score = calculateLiquidityScore(market)
|
|
210
|
+
|
|
211
|
+
expect(score).toBeGreaterThan(80)
|
|
212
|
+
expect(score).toBeLessThanOrEqual(100)
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
it('should return low score for illiquid market', () => {
|
|
216
|
+
const market = {
|
|
217
|
+
totalVolume: 100,
|
|
218
|
+
bidAskSpread: 0.5,
|
|
219
|
+
activeTraders: 2,
|
|
220
|
+
lastTradeTime: new Date(Date.now() - 86400000) // 1 day ago
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const score = calculateLiquidityScore(market)
|
|
224
|
+
|
|
225
|
+
expect(score).toBeLessThan(30)
|
|
226
|
+
expect(score).toBeGreaterThanOrEqual(0)
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
it('should handle edge case: zero volume', () => {
|
|
230
|
+
const market = {
|
|
231
|
+
totalVolume: 0,
|
|
232
|
+
bidAskSpread: 0,
|
|
233
|
+
activeTraders: 0,
|
|
234
|
+
lastTradeTime: new Date()
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const score = calculateLiquidityScore(market)
|
|
238
|
+
|
|
239
|
+
expect(score).toBe(0)
|
|
240
|
+
})
|
|
241
|
+
})
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Step 3: Run Tests - Verify FAIL
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
npm test lib/liquidity.test.ts
|
|
248
|
+
|
|
249
|
+
FAIL lib/liquidity.test.ts
|
|
250
|
+
✕ should return high score for liquid market (2 ms)
|
|
251
|
+
Error: Not implemented
|
|
252
|
+
|
|
253
|
+
1 test failed, 0 passed
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
✅ Tests fail as expected. Ready to implement.
|
|
257
|
+
|
|
258
|
+
## Step 4: Implement Minimal Code (GREEN)
|
|
259
|
+
|
|
260
|
+
```typescript
|
|
261
|
+
// lib/liquidity.ts
|
|
262
|
+
export function calculateLiquidityScore(market: MarketData): number {
|
|
263
|
+
// Handle zero volume edge case
|
|
264
|
+
if (market.totalVolume === 0) {
|
|
265
|
+
return 0
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// Calculate component scores (0-100 scale)
|
|
269
|
+
const volumeScore = Math.min(market.totalVolume / 1000, 100)
|
|
270
|
+
const spreadScore = Math.max(100 - (market.bidAskSpread * 1000), 0)
|
|
271
|
+
const traderScore = Math.min(market.activeTraders / 10, 100)
|
|
272
|
+
|
|
273
|
+
// Recent activity bonus
|
|
274
|
+
const hoursSinceLastTrade = (Date.now() - market.lastTradeTime.getTime()) / (1000 * 60 * 60)
|
|
275
|
+
const recencyScore = Math.max(100 - (hoursSinceLastTrade * 10), 0)
|
|
276
|
+
|
|
277
|
+
// Weighted average
|
|
278
|
+
const score = (
|
|
279
|
+
volumeScore * 0.4 +
|
|
280
|
+
spreadScore * 0.3 +
|
|
281
|
+
traderScore * 0.2 +
|
|
282
|
+
recencyScore * 0.1
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
return Math.min(Math.max(score, 0), 100) // Clamp to 0-100
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Step 5: Run Tests - Verify PASS
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
npm test lib/liquidity.test.ts
|
|
293
|
+
|
|
294
|
+
PASS lib/liquidity.test.ts
|
|
295
|
+
✓ should return high score for liquid market (3 ms)
|
|
296
|
+
✓ should return low score for illiquid market (2 ms)
|
|
297
|
+
✓ should handle edge case: zero volume (1 ms)
|
|
298
|
+
|
|
299
|
+
3 tests passed
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
✅ All tests passing!
|
|
303
|
+
|
|
304
|
+
## Step 6: Refactor (IMPROVE)
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
// lib/liquidity.ts - Refactored with constants and better readability
|
|
308
|
+
const WEIGHTS = {
|
|
309
|
+
VOLUME: 0.4,
|
|
310
|
+
SPREAD: 0.3,
|
|
311
|
+
TRADERS: 0.2,
|
|
312
|
+
RECENCY: 0.1,
|
|
313
|
+
} as const
|
|
314
|
+
|
|
315
|
+
const SCALE_FACTORS = {
|
|
316
|
+
VOLUME: 1000,
|
|
317
|
+
SPREAD: 1000,
|
|
318
|
+
TRADERS: 10,
|
|
319
|
+
RECENCY_PENALTY: 10,
|
|
320
|
+
} as const
|
|
321
|
+
|
|
322
|
+
function clamp(value: number, min: number, max: number): number {
|
|
323
|
+
return Math.min(Math.max(value, min), max)
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export function calculateLiquidityScore(market: MarketData): number {
|
|
327
|
+
if (market.totalVolume === 0) return 0
|
|
328
|
+
|
|
329
|
+
const volumeScore = Math.min(market.totalVolume / SCALE_FACTORS.VOLUME, 100)
|
|
330
|
+
const spreadScore = clamp(100 - (market.bidAskSpread * SCALE_FACTORS.SPREAD), 0, 100)
|
|
331
|
+
const traderScore = Math.min(market.activeTraders / SCALE_FACTORS.TRADERS, 100)
|
|
332
|
+
|
|
333
|
+
const hoursSinceLastTrade = (Date.now() - market.lastTradeTime.getTime()) / (1000 * 60 * 60)
|
|
334
|
+
const recencyScore = clamp(100 - (hoursSinceLastTrade * SCALE_FACTORS.RECENCY_PENALTY), 0, 100)
|
|
335
|
+
|
|
336
|
+
const weightedScore =
|
|
337
|
+
volumeScore * WEIGHTS.VOLUME +
|
|
338
|
+
spreadScore * WEIGHTS.SPREAD +
|
|
339
|
+
traderScore * WEIGHTS.TRADERS +
|
|
340
|
+
recencyScore * WEIGHTS.RECENCY
|
|
341
|
+
|
|
342
|
+
return clamp(weightedScore, 0, 100)
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Step 7: Verify Tests Still Pass
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
npm test lib/liquidity.test.ts
|
|
350
|
+
|
|
351
|
+
PASS lib/liquidity.test.ts
|
|
352
|
+
✓ should return high score for liquid market (3 ms)
|
|
353
|
+
✓ should return low score for illiquid market (2 ms)
|
|
354
|
+
✓ should handle edge case: zero volume (1 ms)
|
|
355
|
+
|
|
356
|
+
3 tests passed
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
✅ Refactoring complete, tests still passing!
|
|
360
|
+
|
|
361
|
+
## Step 8: Check Coverage
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
npm test -- --coverage lib/liquidity.test.ts
|
|
365
|
+
|
|
366
|
+
File | % Stmts | % Branch | % Funcs | % Lines
|
|
367
|
+
---------------|---------|----------|---------|--------
|
|
368
|
+
liquidity.ts | 100 | 100 | 100 | 100
|
|
369
|
+
|
|
370
|
+
Coverage: 100% ✅ (Target: 80%)
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
✅ TDD session complete!
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## TDD Best Practices
|
|
377
|
+
|
|
378
|
+
**DO:**
|
|
379
|
+
- ✅ Write the test FIRST, before any implementation
|
|
380
|
+
- ✅ Run tests and verify they FAIL before implementing
|
|
381
|
+
- ✅ Write minimal code to make tests pass
|
|
382
|
+
- ✅ Refactor only after tests are green
|
|
383
|
+
- ✅ Add edge cases and error scenarios
|
|
384
|
+
- ✅ Aim for 80%+ coverage (100% for critical code)
|
|
385
|
+
|
|
386
|
+
**DON'T:**
|
|
387
|
+
- ❌ Write implementation before tests
|
|
388
|
+
- ❌ Skip running tests after each change
|
|
389
|
+
- ❌ Write too much code at once
|
|
390
|
+
- ❌ Ignore failing tests
|
|
391
|
+
- ❌ Test implementation details (test behavior)
|
|
392
|
+
- ❌ Mock everything (prefer integration tests)
|
|
393
|
+
|
|
394
|
+
## Test Types to Include
|
|
395
|
+
|
|
396
|
+
**Unit Tests** (Function-level):
|
|
397
|
+
- Happy path scenarios
|
|
398
|
+
- Edge cases (empty, null, max values)
|
|
399
|
+
- Error conditions
|
|
400
|
+
- Boundary values
|
|
401
|
+
|
|
402
|
+
**Integration Tests** (Component-level):
|
|
403
|
+
- API endpoints
|
|
404
|
+
- Database operations
|
|
405
|
+
- External service calls
|
|
406
|
+
- React components with hooks
|
|
407
|
+
|
|
408
|
+
**E2E Tests** (use `$e2e` command):
|
|
409
|
+
- Critical user flows
|
|
410
|
+
- Multi-step processes
|
|
411
|
+
- Full stack integration
|
|
412
|
+
|
|
413
|
+
## Coverage Requirements
|
|
414
|
+
|
|
415
|
+
- **80% minimum** for all code
|
|
416
|
+
- **100% required** for:
|
|
417
|
+
- Financial calculations
|
|
418
|
+
- Authentication logic
|
|
419
|
+
- Security-critical code
|
|
420
|
+
- Core business logic
|
|
421
|
+
|
|
422
|
+
## Important Notes
|
|
423
|
+
|
|
424
|
+
**MANDATORY**: Tests must be written BEFORE implementation. The TDD cycle is:
|
|
425
|
+
|
|
426
|
+
1. **RED** - Write failing test
|
|
427
|
+
2. **GREEN** - Implement to pass
|
|
428
|
+
3. **REFACTOR** - Improve code
|
|
429
|
+
|
|
430
|
+
Never skip the RED phase. Never write code before tests.
|
|
431
|
+
|
|
432
|
+
## Integration with Other Commands
|
|
433
|
+
|
|
434
|
+
- Use `$plan` first to understand what to build
|
|
435
|
+
- Use `$tdd` to implement with tests
|
|
436
|
+
- Use `$build-and-fix` if build errors occur
|
|
437
|
+
- Use `$code-review` to review implementation
|
|
438
|
+
- Use `$test-coverage` to verify coverage
|
|
439
|
+
|
|
440
|
+
## Related Agents
|
|
441
|
+
|
|
442
|
+
This command invokes the `tdd-guide` agent located at:
|
|
443
|
+
`~/.codex/agents/tdd-guide.md` (if present)
|
|
444
|
+
|
|
445
|
+
And can reference the `tdd-workflow` skill at:
|
|
446
|
+
`~/.codex/skills/tdd-workflow/` (if present)
|