ultra-builder-pro-cli 0.9.0 → 0.11.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 (119) hide show
  1. package/CHANGELOG.md +92 -1
  2. package/README.md +11 -6
  3. package/adapters/_shared/codex-assets.cjs +23 -331
  4. package/adapters/_shared/handbook.cjs +2 -0
  5. package/adapters/_shared/runtime-assets.cjs +25 -0
  6. package/adapters/_shared/tests/handbook.test.cjs +3 -0
  7. package/adapters/_shared/tests/runtime-assets.test.cjs +12 -4
  8. package/adapters/claude.js +28 -5
  9. package/adapters/kimi.js +15 -138
  10. package/adapters/opencode.js +59 -63
  11. package/adapters/tests/claude.test.cjs +26 -9
  12. package/adapters/tests/codex.test.cjs +23 -9
  13. package/adapters/tests/kimi.test.cjs +15 -11
  14. package/adapters/tests/opencode.test.cjs +57 -10
  15. package/agents/code-reviewer.md +24 -85
  16. package/agents/debugger.md +30 -132
  17. package/agents/review-code.md +24 -104
  18. package/agents/review-comments.md +20 -83
  19. package/agents/review-coordinator.md +40 -137
  20. package/agents/review-design.md +21 -118
  21. package/agents/review-errors.md +22 -70
  22. package/agents/review-spec.md +36 -0
  23. package/agents/review-tests.md +20 -76
  24. package/agents/tdd-runner.md +26 -84
  25. package/commands/learn.md +5 -36
  26. package/commands/ultra-change.md +5 -43
  27. package/commands/ultra-deliver.md +4 -46
  28. package/commands/ultra-dev.md +4 -48
  29. package/commands/ultra-doctor.md +4 -30
  30. package/commands/ultra-init.md +5 -47
  31. package/commands/ultra-plan.md +5 -48
  32. package/commands/ultra-research.md +5 -54
  33. package/commands/ultra-status.md +5 -44
  34. package/commands/ultra-test.md +5 -45
  35. package/commands/ultra-think.md +5 -40
  36. package/docs/AGENT-CONTEXT.md +34 -12
  37. package/docs/ARCHITECTURE.md +31 -5
  38. package/docs/PLAN.zh-CN.md +3 -2
  39. package/docs/ROADMAP.md +5 -4
  40. package/docs/RUNTIME-COMPAT-MATRIX.md +7 -5
  41. package/docs/SKILL-AUTHORING.md +75 -0
  42. package/docs/USER-HANDBOOK-CONTRACT.md +9 -2
  43. package/hooks/README.md +6 -4
  44. package/hooks/active_task_context.py +14 -0
  45. package/hooks/context_spine.py +218 -0
  46. package/hooks/health_check.py +1 -1
  47. package/hooks/workflow_context.py +16 -123
  48. package/hooks/workflow_resume.py +21 -0
  49. package/mcp-server/lib/change-workflow.cjs +89 -11
  50. package/mcp-server/lib/change-workflow.test.cjs +202 -7
  51. package/mcp-server/lib/context-spine.cjs +331 -0
  52. package/mcp-server/lib/context-spine.test.cjs +73 -0
  53. package/mcp-server/lib/spec-learning.cjs +191 -0
  54. package/mcp-server/lib/spec-learning.test.cjs +62 -0
  55. package/mcp-server/lib/state-db.cjs +72 -10
  56. package/mcp-server/lib/state-db.test.cjs +7 -2
  57. package/mcp-server/server.cjs +31 -1
  58. package/mcp-server/tests/db-ops.test.cjs +3 -3
  59. package/mcp-server/tests/server-contract.test.cjs +74 -0
  60. package/mcp-server/tests/state-db.test.cjs +20 -3
  61. package/package.json +3 -2
  62. package/skills/cc-collab/SKILL.md +16 -18
  63. package/skills/code-review-expert/SKILL.md +39 -114
  64. package/skills/code-review-expert/references/correctness-reliability.md +30 -0
  65. package/skills/code-review-expert/references/design-boundaries.md +26 -0
  66. package/skills/code-review-expert/references/removal-plan.md +17 -45
  67. package/skills/codex-collab/SKILL.md +23 -28
  68. package/skills/codex-collab/evals/evals.json +18 -23
  69. package/skills/integration-rules/SKILL.md +28 -67
  70. package/skills/learn/SKILL.md +46 -105
  71. package/skills/security-rules/SKILL.md +34 -56
  72. package/skills/testing-rules/SKILL.md +28 -52
  73. package/skills/ultra-change/SKILL.md +61 -145
  74. package/skills/ultra-deliver/SKILL.md +63 -229
  75. package/skills/ultra-dev/SKILL.md +46 -338
  76. package/skills/ultra-doctor/SKILL.md +39 -71
  77. package/skills/ultra-init/SKILL.md +59 -139
  78. package/skills/ultra-plan/SKILL.md +50 -310
  79. package/skills/ultra-research/SKILL.md +59 -152
  80. package/skills/ultra-research/references/architecture.md +38 -0
  81. package/skills/ultra-research/references/problem-product.md +39 -0
  82. package/skills/ultra-research/references/quality-delivery.md +34 -0
  83. package/skills/ultra-research/references/synthesis.md +38 -0
  84. package/skills/ultra-research/references/users-scope.md +40 -0
  85. package/skills/ultra-review/SKILL.md +55 -427
  86. package/skills/ultra-review/references/unified-schema.md +76 -101
  87. package/skills/ultra-review/scripts/review_wait.py +242 -77
  88. package/skills/ultra-status/SKILL.md +38 -173
  89. package/skills/ultra-test/SKILL.md +41 -195
  90. package/skills/ultra-think/SKILL.md +43 -101
  91. package/skills/ultra-verify/SKILL.md +44 -84
  92. package/skills/ultra-verify/evals/evals.json +24 -27
  93. package/spec/cli-protocol.md +3 -0
  94. package/spec/mcp-tools.yaml +133 -4
  95. package/spec/schemas/command-manifest.schema.json +7 -25
  96. package/spec/schemas/skill-manifest.schema.json +9 -79
  97. package/spec/schemas/state-db.sql +31 -0
  98. package/skills/code-review-expert/references/code-quality-checklist.md +0 -112
  99. package/skills/code-review-expert/references/integration-checklist.md +0 -46
  100. package/skills/code-review-expert/references/security-checklist.md +0 -100
  101. package/skills/code-review-expert/references/solid-checklist.md +0 -65
  102. package/skills/ultra-research/steps/step-00-problem-validation.md +0 -154
  103. package/skills/ultra-research/steps/step-01-opportunity-discovery.md +0 -172
  104. package/skills/ultra-research/steps/step-02-market-assessment.md +0 -195
  105. package/skills/ultra-research/steps/step-03-competitive-landscape.md +0 -197
  106. package/skills/ultra-research/steps/step-04-product-strategy.md +0 -196
  107. package/skills/ultra-research/steps/step-05-assumptions-validation.md +0 -234
  108. package/skills/ultra-research/steps/step-10-user-personas.md +0 -169
  109. package/skills/ultra-research/steps/step-11-user-scenarios.md +0 -181
  110. package/skills/ultra-research/steps/step-20-user-stories.md +0 -156
  111. package/skills/ultra-research/steps/step-21-features-scope.md +0 -157
  112. package/skills/ultra-research/steps/step-22-success-metrics.md +0 -195
  113. package/skills/ultra-research/steps/step-30-architecture-context.md +0 -154
  114. package/skills/ultra-research/steps/step-31-solution-strategy.md +0 -172
  115. package/skills/ultra-research/steps/step-32-building-blocks.md +0 -188
  116. package/skills/ultra-research/steps/step-40-deployment.md +0 -123
  117. package/skills/ultra-research/steps/step-41-quality-risks.md +0 -135
  118. package/skills/ultra-research/steps/step-99-synthesis.md +0 -188
  119. package/skills/ultra-review/scripts/review_verdict_update.py +0 -99
@@ -1,239 +1,73 @@
1
1
  ---
2
2
  name: ultra-deliver
3
- description: "Converge and deliver a verified baseline or continuous change: reconcile specs, build/test, archive evidence, version, tag, and push."
4
- runtime: all
5
- mcp_tools_required:
6
- - change.list
7
- - change.get
8
- - change.context
9
- - change.converge
10
- - change.archive
11
- cli_fallback: "direct user interaction"
3
+ description: Converge verified implementation, specification learning, review evidence, and release artifacts into a recoverable baseline. Use when an initial baseline or active change has current passing evidence and is ready to archive or release.
12
4
  ---
13
5
 
14
- # ultra-deliver — Phase 3.5
6
+ # Converge and deliver
15
7
 
16
- Release the current working tree and close its continuous-change packet when
17
- one exists. `.ultra/test-report.json` is the test gate; `change.converge` is the
18
- deterministic closure gate; `.ultra/delivery-report.json` is the release report.
19
- Change lifecycle writes go through MCP only.
20
-
21
- ## Prerequisites (all validations are blocking)
8
+ Deliver one baseline or continuous change. Change lifecycle writes use MCP; test,
9
+ review, and delivery reports are evidence artifacts.
22
10
 
23
- ### Validation 0 — Resolve continuous change
11
+ ## Bind current evidence
24
12
 
25
- Call `change.list` for `active`, `blocked`, and `ready` work.
13
+ 1. Call `change.list` and bind exactly one relevant change, or a null change id for an
14
+ initial baseline.
15
+ 2. Call `change.breadcrumb`. Block on stale context, incomplete linked tasks, or
16
+ unresolved readiness.
17
+ 3. Require a passing test report for the current full HEAD and at least one declared
18
+ public seam.
19
+ 4. Require current independent `spec_fidelity` and `engineering_standards` review
20
+ verdicts. Evidence from another checkout, commit, task set, or change is invalid.
26
21
 
27
- - Exactly one relevant change → bind delivery to that id.
28
- - More than one → require an explicit id; never guess which change to archive.
29
- - None → allow initial-baseline delivery, but record `change_id: null`.
30
- - Active/blocked change → its linked tasks must all be completed and its
31
- `test-report.json.change_id` must match.
32
- - Ready change → do not rerun convergence blindly; verify its existing
33
- verification artifact still matches current HEAD before archive.
34
-
35
- ### Validation 1 — `/ultra-test` passed
36
-
37
- Read `.ultra/test-report.json`:
38
- - File must exist → else: "Run `/ultra-test` first" → **EXIT**
39
- - `passed === true` → else: show `blocking_issues`, **EXIT**
40
- - `git_commit === current HEAD` → else: "Code changed since last test;
41
- re-run `/ultra-test`" → **EXIT**
22
+ ## Reconcile the baseline
42
23
 
43
- ### Validation 2 — No uncommitted changes
44
-
45
- `git status --porcelain` must be empty. If dirty, ask through the current
46
- Host's native user-interaction surface:
47
- - A: "Auto-commit all changes" → `git add -A && git commit -m "chore: pre-delivery cleanup"`
48
- - B: "Review changes first" → `git diff --stat` → re-ask
49
- - C: "Block delivery" → **EXIT**
50
-
51
- Commit failure (conflicts, hook rejection) → surface error and **EXIT**.
52
-
53
- ## Workflow
24
+ Call `change.get` for authoritative learning candidates.
54
25
 
55
- ### Step 1 — Documentation Update (MANDATORY)
56
-
57
- **1.1 CHANGELOG.md** (required):
58
- 1. `git log --oneline <last-tag>..HEAD`
59
- 2. Categorize by Conventional Commit type: `feat:` → Added, `fix:` → Fixed,
60
- `chore:` → Maintenance, `refactor:` → Changed, `docs:` → Documentation,
61
- `test:` → Tests, `perf:` → Performance.
62
- 3. Insert a new version section at the top of CHANGELOG.md.
63
- 4. Verify: Read CHANGELOG.md; confirm new version section exists.
64
-
65
- **1.2 Technical debt report** (required):
66
- 1. Grep source for `TODO:` / `FIXME:` / `HACK:` / `XXX:`.
67
- 2. Generate / refresh `.ultra/docs/technical-debt.md`:
68
- ```markdown
69
- # Technical Debt (<date>, <commit>)
70
- | File | Line | Kind | Note |
71
- |------|------|------|------|
72
- | src/foo.ts | 42 | TODO | "remove after v1.3" |
73
- ```
74
- 3. Verify: file reflects current grep output.
75
-
76
- **1.3 README.md** (conditional — public API changed):
77
- 1. Diff exported API signatures since last release (`git diff <last-tag>..HEAD -- 'src/**'`)
78
- 2. If signatures changed, update README usage examples
79
- 3. Verify examples match the new API
80
-
81
- **1.4 Baseline specification reconciliation** (continuous change):
82
-
83
- 1. Read `intent.md`, `delta/`, and `docs_impact` from the bound change.
84
- 2. Merge accepted deltas into the declared baseline documents.
85
- 3. Record every updated project-relative path as `baseline_updates`.
86
- 4. If no baseline file changes, write a specific `no_baseline_change_reason`.
87
- 5. Verify no `[NEEDS CLARIFICATION]` or unresolved delta remains for delivered behavior.
88
-
89
- **Checklist**:
90
- - [ ] CHANGELOG.md updated
91
- - [ ] technical-debt.md refreshed
92
- - [ ] README.md reflects current API (if applicable)
93
- - [ ] active delta reconciled into baseline, or explicit no-change rationale exists
94
-
95
- Any unchecked → fix, then continue.
96
-
97
- ### Step 2 — Production Build
98
-
99
- Detect build command (priority order):
100
- 1. `package.json → scripts.build` → `npm run build` (or `pnpm build`/`yarn build`
101
- based on lockfile)
102
- 2. `Makefile` → `make build` or `make release`
103
- 3. `Cargo.toml` → `cargo build --release`
104
- 4. `go.mod` → `go build ./...`
105
- 5. Nothing detected → ask the user for the command
106
-
107
- Non-zero exit → block with stderr captured, then ask the user:
108
- - A: "Fix error and retry"
109
- - B: "Abort delivery"
110
-
111
- ### Step 3 — Version + convergence + release
112
-
113
- **3.1 Determine version bump**:
114
- - `git log <last-tag>..HEAD --oneline` → analyze commit types
115
- - `feat:` → minor, `BREAKING CHANGE:` / `!:` → major, else patch
116
- - Display `<old> → <new>`; allow an explicit user override.
117
-
118
- **3.2 Update version in project files**:
119
- - `package.json`, `Cargo.toml`, `pyproject.toml`, etc.
120
- - Verify: read the file; confirm new version.
121
-
122
- **3.2a Re-run release evidence after docs/version edits**:
123
-
124
- - Run the exact relevant test, type-check, build, and package commands again.
125
- - Capture command, exit code, and result. Any non-zero exit blocks delivery.
126
- - Do not reuse a test report whose `change_id` or pre-change HEAD belongs to a
127
- different change as final evidence.
128
-
129
- **3.3 Release commit**:
130
- ```bash
131
- git add -A
132
- git commit -m "chore(release): v<X.Y.Z>"
133
- ```
134
- Verify with `git log -1 --oneline`.
135
-
136
- **3.4 Recompile context and converge the change** (skip only for initial baseline):
137
-
138
- For `active` or `blocked`, call `change.context` after the release commit so its
139
- git head and task set are current. Then call `change.converge` with the exact
140
- evidence required by kind:
141
-
142
- - `quick`: diff, tests, spec;
143
- - `standard` / `major`: diff, tests, spec, docs, review;
144
- - `incident`: diagnosis, diff, tests. The diagnosis evidence must point to the
145
- completed `diagnosis.md`; convergence separately validates all five required
146
- debugging sections and cannot be satisfied by the evidence string alone.
147
-
148
- Evidence must name concrete commands, artifacts, or file paths. If blockers are
149
- returned, stop before tag/push and route to the owning workflow. Do not weaken
150
- the change kind or mark failed evidence `not_applicable` merely to pass.
151
-
152
- **3.5 Archive after baseline reconciliation**:
153
-
154
- Call `change.archive` with the summary and either `baseline_updates` or the
155
- explicit no-change reason. This moves the packet from `changes/active` to the
156
- dated archive and records closure in state.db. Archive failure blocks release.
157
-
158
- **3.6 Git tag**:
159
- ```bash
160
- git tag v<X.Y.Z>
161
- ```
162
- Verify with `git tag -l v<X.Y.Z>`.
163
-
164
- **3.7 Push to remote**:
165
- ```bash
166
- git push origin main # release commit
167
- git push origin v<X.Y.Z> # version tag
168
- ```
169
- Verify with `git ls-remote --tags origin | grep v<X.Y.Z>`.
170
-
171
- **Release checklist**:
172
- - [ ] Version determined and displayed
173
- - [ ] Version file updated and verified
174
- - [ ] Release commit created and verified
175
- - [ ] Change context current, convergence ready, baseline reconciled, archive complete
176
- - [ ] Git tag created and verified
177
- - [ ] Commit and tag pushed and verified on remote
178
-
179
- Any failure → stop immediately; do NOT continue; surface last-step error.
180
-
181
- ### Step 4 — Persist `.ultra/delivery-report.json`
182
-
183
- ```jsonc
184
- {
185
- "timestamp": "<ISO8601>",
186
- "version": "<X.Y.Z>",
187
- "git_tag": "v<X.Y.Z>",
188
- "git_commit": "<HEAD SHA>",
189
- "change_id": "<archived-change-id-or-null>",
190
- "change_archive_path": "<path-or-null>",
191
- "convergence_ready": true,
192
- "baseline_updates": ["<project-relative-path>"],
193
- "changelog_updated": true,
194
- "technical_debt_refreshed": true,
195
- "build_success": true,
196
- "pushed": true
197
- }
198
- ```
199
-
200
- ### Step 5 — Report
201
-
202
- Print a tight release summary: change id/archive, baseline files reconciled,
203
- tag, commit, exact verification commands, outstanding technical-debt count,
204
- and next suggested action. After release, daily work starts with `/ultra-change`.
205
-
206
- ## Deliverables Checklist (final)
207
-
208
- - [ ] `/ultra-test` passed (verified via test-report.json)
209
- - [ ] Uncommitted changes handled
210
- - [ ] CHANGELOG + technical-debt refreshed (README if API changed)
211
- - [ ] Production build exit 0
212
- - [ ] Continuous change converged and archived (when present)
213
- - [ ] Version bumped, tagged, pushed
214
- - [ ] delivery-report.json written
215
-
216
- ## MCP → CLI fallback matrix
217
-
218
- | Purpose | MCP tool | CLI fallback |
219
- |---------|----------|--------------|
220
- | Resolve dirty-tree action | none | current Host's native user-interaction surface |
221
- | Override version bump | none | current Host's native user-interaction surface |
222
- | Resolve/bind change | `change.list` / `change.get` | none; fail closed |
223
- | Refresh context | `change.context` | none; fail closed |
224
- | Deterministic closure | `change.converge` / `change.archive` | none; fail closed |
225
-
226
- ## What this skill DOES NOT do
227
-
228
- - Does NOT replace `/ultra-test`; it re-runs the exact release evidence after
229
- documentation and version changes so the shipped commit is verified
230
- - Does NOT publish to npm / crates.io / PyPI (Phase 9 handles distribution)
231
- - Does NOT directly mutate state.db or external provider state
232
-
233
- ## Integration
234
-
235
- | | |
236
- |---|---|
237
- | **Input** | bound change (if any), test/review artifacts, current repo |
238
- | **Output** | archived change, reconciled baseline, delivery report, git tag + remote push |
239
- | **Next** | deploy/announce; next daily change begins with `/ultra-change` |
26
+ - Resolve every proposed item as approved or rejected.
27
+ - Apply each approved item to its declared baseline target, verify the edit, then mark
28
+ it applied.
29
+ - Preserve rejection reasons as decision evidence.
30
+ - Confirm previously applied items remain represented in the target document.
31
+
32
+ Reconcile accepted delta content and documentation impact into baseline documents.
33
+ Record updated paths or a specific no-change reason. Unknown documentation impact,
34
+ unresolved placeholders, and behavior that exists only in the delta block convergence.
35
+
36
+ ## Verify the release candidate
37
+
38
+ Use a clean, reviewed release commit. Show any remaining diff and obtain explicit
39
+ authorization before staging or committing. Never stage unrelated user changes.
40
+
41
+ Run the exact repository commands needed for focused regression, relevant full tests,
42
+ static checks, production build, package/install/doctor smoke when distributed, the
43
+ public seam, and rollback or recovery sanity. Any post-verification edit invalidates
44
+ the affected evidence.
45
+
46
+ Compile final change context at the release commit with the convergence gate. It must
47
+ be ready before calling `change.converge`.
48
+
49
+ ## Converge and archive
50
+
51
+ Submit structured evidence for the reviewed diff and seam, test signals, baseline and
52
+ delta, documentation, both independent review axes, and incident diagnosis when
53
+ applicable. Do not collapse review axes or replace exact signal fields with prose.
54
+
55
+ Resolve named blockers, rerun invalidated gates, then call `change.archive` with the
56
+ summary and baseline updates.
57
+
58
+ ## Optional release
59
+
60
+ Only when release authorization is in scope:
61
+
62
+ 1. determine the semantic version from compatibility impact;
63
+ 2. update version and changelog;
64
+ 3. rerun checks invalidated by version changes;
65
+ 4. create a non-force commit and tag;
66
+ 5. push and publish through the repository's authenticated workflow;
67
+ 6. independently verify the remote commit, tag, release, and registry version.
68
+
69
+ Write the delivery report with the change id, archive status, commit, version, exact
70
+ commands, release identifiers, baseline updates, rollback notes, and timestamp.
71
+
72
+ Delivery is complete only when local and remote evidence agree and the worktree has no
73
+ unexplained scope. A local version bump is not publication evidence.