ultra-builder-pro-cli 0.8.1 → 0.10.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 (61) hide show
  1. package/CHANGELOG.md +79 -1
  2. package/README.md +45 -26
  3. package/adapters/_shared/codex-assets.cjs +38 -0
  4. package/adapters/_shared/handbook.cjs +10 -1
  5. package/adapters/_shared/path-rewrite.cjs +3 -0
  6. package/adapters/_shared/runtime-assets.cjs +3 -1
  7. package/adapters/_shared/tests/handbook.test.cjs +9 -1
  8. package/adapters/_shared/tests/path-rewrite.test.cjs +3 -1
  9. package/adapters/_shared/tests/runtime-assets.test.cjs +5 -1
  10. package/adapters/kimi.js +642 -0
  11. package/adapters/opencode.js +46 -17
  12. package/adapters/tests/claude.test.cjs +4 -1
  13. package/adapters/tests/codex.test.cjs +4 -3
  14. package/adapters/tests/kimi-hook.test.cjs +122 -0
  15. package/adapters/tests/kimi.test.cjs +259 -0
  16. package/adapters/tests/opencode.test.cjs +46 -3
  17. package/bin/handbook.js +2 -2
  18. package/bin/install.js +9 -4
  19. package/bin/orchestrator.js +1 -1
  20. package/docs/AGENT-CONTEXT.md +39 -15
  21. package/docs/ARCHITECTURE.md +35 -9
  22. package/docs/PLAN.zh-CN.md +5 -4
  23. package/docs/ROADMAP.md +8 -7
  24. package/docs/RUNTIME-COMPAT-MATRIX.md +110 -64
  25. package/docs/USER-HANDBOOK-CONTRACT.md +13 -3
  26. package/hooks/README.md +6 -4
  27. package/hooks/active_task_context.py +14 -0
  28. package/hooks/adapters/kimi.py +162 -0
  29. package/hooks/context_spine.py +218 -0
  30. package/hooks/health_check.py +1 -1
  31. package/hooks/workflow_context.py +16 -123
  32. package/hooks/workflow_resume.py +21 -0
  33. package/mcp-server/lib/change-workflow.cjs +89 -11
  34. package/mcp-server/lib/change-workflow.test.cjs +202 -7
  35. package/mcp-server/lib/context-spine.cjs +331 -0
  36. package/mcp-server/lib/context-spine.test.cjs +73 -0
  37. package/mcp-server/lib/spec-learning.cjs +191 -0
  38. package/mcp-server/lib/spec-learning.test.cjs +62 -0
  39. package/mcp-server/lib/state-db.cjs +149 -4
  40. package/mcp-server/lib/state-db.test.cjs +61 -0
  41. package/mcp-server/server.cjs +31 -1
  42. package/mcp-server/tests/db-ops.test.cjs +3 -3
  43. package/mcp-server/tests/init-project.test.cjs +2 -2
  44. package/mcp-server/tests/server-contract.test.cjs +74 -0
  45. package/mcp-server/tests/state-db.test.cjs +20 -3
  46. package/package.json +4 -2
  47. package/skills/learn/SKILL.md +1 -0
  48. package/skills/ultra-change/SKILL.md +91 -118
  49. package/skills/ultra-deliver/SKILL.md +93 -221
  50. package/skills/ultra-dev/SKILL.md +81 -310
  51. package/skills/ultra-doctor/SKILL.md +1 -0
  52. package/skills/ultra-init/SKILL.md +1 -0
  53. package/skills/ultra-plan/SKILL.md +72 -292
  54. package/skills/ultra-review/SKILL.md +79 -407
  55. package/skills/ultra-status/SKILL.md +55 -168
  56. package/skills/ultra-test/SKILL.md +64 -183
  57. package/skills/ultra-think/SKILL.md +1 -0
  58. package/spec/cli-protocol.md +3 -0
  59. package/spec/mcp-tools.yaml +136 -7
  60. package/spec/schemas/skill-manifest.schema.json +2 -2
  61. package/spec/schemas/state-db.sql +35 -2
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: ultra-dev
3
- description: "Agile development execution with TDD workflow. Writes state through live task MCP tools, reviews through native host subagents, and checkpoints through workflow-state plus lifecycle hooks."
3
+ description: "Execute one fresh-context vertical slice through a public seam with strict red-green evidence, bounded recovery, and specification learning."
4
+ user-invocable: true
4
5
  runtime: all
5
6
  mcp_tools_required:
6
7
  - task.update
@@ -8,342 +9,112 @@ mcp_tools_required:
8
9
  - task.list
9
10
  - change.get
10
11
  - change.context
12
+ - change.breadcrumb
13
+ - change.learning_propose
11
14
  ---
12
15
 
13
- # ultra-dev — Phase 3.4
16
+ # ultra-dev — One Slice, One Feedback Loop
14
17
 
15
- Drive one task from `pending → completed` using a strict TDD loop, gated by
16
- `/ultra-review`. **state.db is the authority**: status transitions go through
17
- MCP `task.update`; the projector regenerates `tasks.json` and context-md
18
- frontmatter. For a task linked by `change_id`, requirement discoveries go to
19
- the active change delta first; baseline reconciliation happens in
20
- `/ultra-deliver`.
18
+ Drive one task from `pending` to `completed`. Task status lives in
19
+ `.ultra/state.db`; generated task JSON and context frontmatter are read-only.
21
20
 
22
- ## Authority failure boundary
21
+ ## Authority and recovery
23
22
 
24
- All task selection and transitions require the live MCP state tools. If they
25
- are unavailable or return an authority error, stop. For
26
- `LEGACY_STATE_MIGRATION_REQUIRED`, instruct:
23
+ If `task.list`, `task.get`, or `task.update` fails, stop. Never write raw SQLite,
24
+ `.ultra/tasks/tasks.json`, or projected status fields. On
25
+ `LEGACY_STATE_MIGRATION_REQUIRED`, use the documented migration command before work.
27
26
 
28
- ```bash
29
- ultra-tools migrate --from=4.4 --to=4.5 --source-dir <project-root>
30
- ```
27
+ At entry, read `change.breadcrumb` when a change is active. A blocked or stale
28
+ breadcrumb is an implementation blocker, not an advisory warning.
31
29
 
32
- Never fall back to `.ultra/tasks/tasks.json`, direct SQLite writes, or a task
33
- CLI. The JSON file is only a projector-owned view.
30
+ `.ultra/workflow-state.json` is a compact recovery checkpoint only. Record command,
31
+ task, branch, current step, status, and timestamp; do not copy prompts, codebase
32
+ summaries, or provider memory into it.
34
33
 
35
- ## Design decisions vs pre-Phase-3
34
+ ## 1. Select and compile the slice
36
35
 
37
- - **Single-write status**: Step 1.5 / Step 5 stop touching `contexts/task-{id}.md`
38
- frontmatter or the "`> **Status**: xxx`" line. Only MCP `task.update` fires;
39
- projector rewrites frontmatter; humans read body for history.
40
- - **Native review path**: `/ultra-review all` delegates bounded review work to
41
- the current Host's installed review agents. Review is not an MCP service.
42
- - **No `/compact` dependency**: Step 4.4 writes `.ultra/workflow-state.json`;
43
- trusted lifecycle hooks preserve and restore it around compaction when the
44
- Host exposes those events.
36
+ 1. Select the requested task, otherwise the first dependency-ready pending task.
37
+ 2. Call `task.get`; verify dependencies, ownership, acceptance, public seam, and exact
38
+ verification command.
39
+ 3. If linked to a change, call `change.get`, then compile `change.context` with:
40
+ `role=implement`, `gate=implementation`, the smallest required references, and the
41
+ task's execution contract.
42
+ 4. Stop on missing/stale references, budget overflow, unknown documentation impact,
43
+ or a HEAD mismatch. Do not compensate by loading the whole repository.
44
+ 5. Mark the task `in_progress` with `task.update` and checkpoint the step.
45
45
 
46
- ## Prerequisites
46
+ The default slice is a `tracer_bullet`. An `expand_contract` must already be approved;
47
+ implementation does not widen its own contract silently.
47
48
 
48
- - `task.list` succeeds against state.db and returns at least one `pending` task
49
+ ## 2. Establish red
49
50
 
50
- ## Arguments
51
+ Before production logic changes:
51
52
 
52
- - `$1`: task id (optional; default = first `pending` task in topological order)
53
+ 1. Reproduce the smallest observable symptom at the declared public seam.
54
+ 2. Add or identify the regression/contract test.
55
+ 3. Run the exact command and record:
56
+ - command;
57
+ - expected failure;
58
+ - observed red result;
59
+ - deterministic/non-deterministic classification;
60
+ - duration when useful.
53
61
 
54
- ## Workflow
62
+ For a new feature, red means an assertion expressing missing behavior. For a refactor,
63
+ establish a green characterization baseline first. Documentation/config-only tasks may
64
+ use a structural validator instead of a failing test, but must state why.
55
65
 
56
- ### Step 0 — Workflow Resume Check
66
+ If red cannot be observed, stop and correct the task contract; do not implement against
67
+ an unproven hypothesis.
57
68
 
58
- Read `.ultra/workflow-state.json` if present.
59
- - If `branch` matches current `git branch --show-current` → resume from the
60
- step after `status`
61
- - If `review_session` is set → skip re-running review
62
- - Otherwise → proceed to Step 0.5
69
+ ## 3. Implement the minimum complete path
63
70
 
64
- ### Step 0.5 — Design Approval Gate (first run only)
71
+ - Trace entry point → domain rule → side effect → public seam.
72
+ - Search for existing utilities and dependencies before adding helpers.
73
+ - Keep IO at boundaries and domain behavior testable.
74
+ - Include required validation, errors, observability, recovery, and documentation.
75
+ - Preserve unrelated dirty worktree changes and stay within allowed paths.
76
+ - Verify each meaningful increment through the same feedback loop.
65
77
 
66
- Fires when `.ultra/workflow-state.json` does NOT exist.
78
+ If implementation reveals a stable invariant or public behavior absent from the
79
+ baseline, call `change.learning_propose` with its evidence and target document. Do not
80
+ edit the baseline silently and do not store the discovery as Ultra memory.
67
81
 
68
- 1. `task.list` → confirm plan present; if empty, instruct `/ultra-plan` and **EXIT**
69
- 2. If ANY task has `status` in (`in_progress`, `completed`) → plan was already
70
- approved → skip this gate
71
- 3. Present plan overview (totals, P0/P1/P2, Walking-Skeleton position)
72
- 4. Ask through the current Host's native user-interaction surface:
73
- - A: "Confirm, start implementation" → continue to Step 1
74
- - B: "Revise plan first" → suggest `/ultra-plan` → **EXIT**
75
- 5. On approval, write workflow-state:
76
- ```jsonc
77
- {"command":"ultra-dev","task_id":0,"branch":"","step":"0.5","status":"design_approved","ts":"<ISO8601>"}
78
- ```
82
+ ## 4. Establish green and inspect reachability
79
83
 
80
- ### Step 1 — Task Selection
84
+ Run, in order:
81
85
 
82
- ```jsonc
83
- // MCP: task.list (or runtime args supply id)
84
- { "status": "pending" }
85
- ```
86
+ 1. the exact red command until the observed failure becomes green;
87
+ 2. adjacent focused tests;
88
+ 3. type check/lint/build proportionate to the change;
89
+ 4. the live public-seam acceptance path;
90
+ 5. final diff and worktree scope inspection.
86
91
 
87
- Pick the first result (dependency-resolved) or the one matching `$1`.
88
- Read `.ultra/tasks/contexts/task-{id}.md` body for the Implementation /
89
- Acceptance sections. Use the Acceptance list as the initial todo set.
92
+ Record exact commands and zero-failure results. “Compiled” or “unit tests pass” is not
93
+ enough when the new module is not connected to a consumer.
90
94
 
91
- If the task has `change_id`, call `change.get` and inspect its
92
- `context-manifest.json`. The task id, git head, allowed paths, spec refs, and
93
- external provider metadata must match the current slice. Call `change.context`
94
- before editing whenever they are stale. Provider content remains external.
95
+ ## 5. Review gate
95
96
 
96
- ### Step 1.5 — Status → in_progress (single-write)
97
+ Checkpoint `status=pre_review`, then invoke `/ultra-review all`. The review must produce
98
+ independent `spec_fidelity` and `engineering_standards` verdicts. Fix all P0/P1 issues,
99
+ rerun affected tests, and recheck until both axes pass. The primary host owns final
100
+ verification; review workers never mutate durable Ultra state.
97
101
 
98
- ```jsonc
99
- // MCP: task.update (R: do NOT touch context-md frontmatter or "> **Status**" line)
100
- { "id": "<id>", "patch": { "status": "in_progress" } }
101
- ```
102
+ ## 6. Complete the task
102
103
 
103
- Projector runs after the write → `tasks.json` + `contexts/task-{id}.md`
104
- frontmatter re-generated with `status: in_progress`. **Do not hand-edit either.**
104
+ First call `task.update` with `status=completed` and completion commit/evidence
105
+ supported by the task contract. Then, for a linked change, recompile
106
+ `change.context` at the final HEAD with:
105
107
 
106
- ### Step 2 — Environment Setup
108
+ - `role=implement`, `gate=verification`;
109
+ - exact required references and current digests;
110
+ - the public seam and verification command;
111
+ - a single next action, normally `Run ultra-test for this change`.
107
112
 
108
- **Unmerged-completed recovery**: `git branch --list 'feat/task-*'`; for each,
109
- extract task id, look up status via `task.get`. If any completed task has an
110
- unmerged branch → ask the user:
111
- - "Merge task-{id} to main first" (recommended)
112
- - "Delete branch (abandoned)"
113
- - "Skip, continue with new task"
113
+ This ordering ensures the snapshot records the completed task state. Clear the active
114
+ workflow checkpoint, call `change.breadcrumb`, and report exactly one next action.
114
115
 
115
- **Branch setup**:
116
+ ## Completion evidence
116
117
 
117
- | Current branch | Action |
118
- |----------------|--------|
119
- | `main` / `master` | `git pull origin main && git checkout -b feat/task-{id}-{slug}` |
120
- | `feat/task-{id}-*` (same task) | continue (resume checkpoint) |
121
- | other | ask the user: switch to main + new branch / continue current |
122
-
123
- **Dependencies**: soft-warn only; parallel work is allowed.
124
-
125
- ### Step 3 — TDD Cycle
126
-
127
- **Subagent isolation (complexity ≥ 7)**: optional — delegate a bounded TDD
128
- cycle through the current Host's native subagent surface; the subagent returns
129
- a summary and the primary agent owns verification.
130
-
131
- **Mid-TDD checkpoint (complexity ≥ 6)**: after GREEN phase, write a
132
- checkpoint. See Step 4.4 for the preferred MCP route.
133
-
134
- **RED** — write failing tests:
135
- - Mine Acceptance list for test specs
136
- - Cover 5 dimensions: functional / boundary / exception / security / integration
137
- - At least one integration test per boundary-crossing module
138
- - Run; confirm failure
139
-
140
- **GREEN** — minimum code to pass:
141
- - Production-ready (no TODO / placeholder)
142
- - Run; confirm pass
143
-
144
- **REFACTOR** — SOLID / DRY / KISS / YAGNI; tests stay green.
145
-
146
- **Checkpoint after Step 3.3**:
147
- ```jsonc
148
- {"command":"ultra-dev","task_id":<id>,"branch":"<branch>","step":"3.3","status":"tdd_complete","ts":"<iso>"}
149
- ```
150
- → `.ultra/workflow-state.json`
151
-
152
- ### Step 4 — Quality Gates
153
-
154
- | Gate | Requirement |
155
- |------|-------------|
156
- | Tests green | 0 failures |
157
- | Coverage | ≥80% overall; 100% functional-core; critical paths for shell |
158
- | Mock policy | Core logic: no mocks; external: testcontainers/stub OK |
159
- | No degradation | Zero fallback or demo code |
160
- | Integration test | Boundary-crossing code has ≥1 real integration test |
161
- | Entry-point reachable | New modules trace to a handler/listener/cron |
162
- | Spec compliance | Each Acceptance criterion implemented AND tested |
163
-
164
- Checkpoint `step="4"`, `status="gates_passed"`.
165
-
166
- ### Step 4.4 — Pre-Review Checkpoint
167
-
168
- 1. Write `.ultra/workflow-state.json` with `step=4.5, status=pre_review`.
169
- 2. Let trusted Host lifecycle hooks preserve and restore that state when
170
- compaction events exist.
171
- 3. On Hosts without compaction hooks, resume directly from the same file.
172
-
173
- **Gate**: the skill MUST NOT require `/compact`; it MUST work when the
174
- runtime cannot compact.
175
-
176
- ### Step 4.5 — Ultra Review (MANDATORY)
177
-
178
- Invoke `/ultra-review all`. The workflow uses the current Host's installed
179
- review agents and writes the unified review artifact. The primary agent owns
180
- the final verdict and re-runs relevant tests after fixes.
181
-
182
- **MAX_REVIEW_ITERATIONS = 2**
183
-
184
- | Verdict | Iter | Action |
185
- |---------|------|--------|
186
- | APPROVE | any | → Step 5 |
187
- | COMMENT | any | review P1s, fix if warranted, → Step 5 |
188
- | REQUEST_CHANGES | 1 | fix ALL P0, re-run tests, `/ultra-review recheck` |
189
- | REQUEST_CHANGES | 2 | stall check → escalate or fix |
190
-
191
- **Stall detection before iter 2**: if `curr_count >= prev_count` (P0+P1 not
192
- shrinking) → write `UNRESOLVED.md`, WARN user, proceed to Step 5.
193
-
194
- **Verification gate before Step 5**:
195
- - SUMMARY.json verdict ≠ `REQUEST_CHANGES`
196
- - All P0 resolved
197
- - Tests still green
198
-
199
- Checkpoint `step="4.5", status="review_done", review_session=<id>, review_iteration=<N>`.
200
-
201
- ### Step 5 — Status → completed (single-write)
202
-
203
- **Prerequisites**: Step 4 + Step 4.5 green.
204
-
205
- ```jsonc
206
- // MCP: task.update
207
- {
208
- "id": "<id>",
209
- "patch": {
210
- "status": "completed"
211
- }
212
- }
213
- ```
214
-
215
- Projector regenerates frontmatter. **Then** write the context-md **body**
216
- Completion section (skill responsibility, not projector):
217
-
218
- ```markdown
219
- ## Completion
220
- - **Completed**: <YYYY-MM-DD>
221
- - **Commit**: _pending_ # filled in Step 6
222
- - **Summary**: <one-line delivery summary>
223
- ```
224
-
225
- **Do not** hand-edit `> **Status**` anywhere in the body — frontmatter owns it.
226
-
227
- ### Step 5.5 — Pre-Commit Checklist (BLOCKING)
228
-
229
- Before `git commit`, verify every item:
230
-
231
- - [ ] `task.get` confirms `status="completed"`
232
- - [ ] context-md body has updated Completion section
233
- - [ ] All tests pass
234
- - [ ] Ultra Review verdict ≠ `REQUEST_CHANGES`
235
- - [ ] New modules reach a live entry point (no orphan)
236
- - [ ] Boundary-crossing code has integration test
237
-
238
- Any unchecked → fix; do NOT commit.
239
-
240
- ### Step 6 — Commit + Merge
241
-
242
- 1. `git status` → show diff
243
- 2. Ask through the current Host's native user-interaction surface:
244
- - A: "Commit + Merge to main" (recommended)
245
- - B: "Commit only, create PR later"
246
- - C: "Review diff first" → `git diff --stat` → re-ask
247
-
248
- 3. On approval:
249
- ```bash
250
- git add -A
251
- git commit -m "feat(scope): description"
252
- ```
253
-
254
- 4. Record commit hash via MCP:
255
- ```jsonc
256
- { "id": "<id>", "patch": { "completion_commit": "<sha>" } }
257
- ```
258
- Update context-md body Completion line to the real hash; amend:
259
- ```bash
260
- git add .ultra/tasks/contexts/task-<id>.md
261
- git commit --amend --no-edit
262
- ```
263
- (The amend is OK here — the first commit is a local, not-yet-pushed commit
264
- in the feature branch. Never amend pushed commits.)
265
-
266
- 5. `git fetch origin && git rebase origin/main`; resolve any conflicts.
267
-
268
- 6. Re-run tests after rebase. Fail → fix → amend → repeat 5-6.
269
-
270
- 7. If Option A chosen:
271
- ```bash
272
- git checkout main && git pull origin main
273
- git merge --no-ff feat/task-<id>-<slug>
274
- git push origin main && git branch -d feat/task-<id>-<slug>
275
- ```
276
-
277
- 8. For a task with `change_id`, call `change.context` after the final commit,
278
- rebase, and verification so the manifest records the actual HEAD and task
279
- set used for convergence.
280
-
281
- Checkpoint `step="6", status="committed", commit=<sha>`.
282
-
283
- ### Step 7 — Report
284
-
285
- - Commit hash
286
- - Project progress (`task.list` → `completed/total`)
287
- - Next task suggestion (first remaining `pending` in topological order)
288
-
289
- ## Delta-First Specification Mode
290
-
291
- Triggered when implementation reveals specification gaps or requirement changes.
292
-
293
- **Classification (mandatory before updating specs)**:
294
-
295
- | Kind | Meaning | Action |
296
- |------|---------|--------|
297
- | **EXPANSION** | new requirement surfaced | update active change delta + Change Log |
298
- | **CORRECTION** | spec error/ambiguity | update active change delta + Change Log |
299
- | **REDUCTION** | removing/weakening scope | **STOP** → ask the user for approval |
300
-
301
- **REDUCTION gate** — options:
302
- - A: "Approve reduction, update spec"
303
- - B: "Keep original scope, find alternative implementation"
304
- - C: "Split into separate task, defer to next cycle"
305
-
306
- For a task with `change_id`, update
307
- `.ultra/changes/active/<change-id>/delta/` immediately, then recompile
308
- `change.context`. Do not silently rewrite the baseline while parallel tasks are
309
- still executing. `/ultra-deliver` must reconcile the approved delta into the
310
- declared baseline files before archive.
311
-
312
- For an initial-baseline task with no `change_id`, update `.ultra/specs/`
313
- directly because no continuous-change packet exists yet. In both cases log the
314
- decision in the context-md body Change Log:
315
-
316
- ```markdown
317
- | <date> | <KIND> | <change desc> | specs/<file>#<section> | <reason> |
318
- ```
319
-
320
- **Principle**: the baseline specs describe accepted product truth; the active
321
- delta describes proposed change; task contexts record implementation history.
322
- No layer may silently shrink scope without the REDUCTION gate.
323
-
324
- ## MCP failure matrix
325
-
326
- | Purpose | MCP tool (phase) | Failure behavior |
327
- |---------|------------------|------------------|
328
- | Select pending task | `task.list` (2) / `task.get` (2) | stop and surface the MCP error |
329
- | Status → in_progress | `task.update` (2) | stop; do not edit a projection |
330
- | Pre-review checkpoint | none | write `.ultra/workflow-state.json`; lifecycle hooks restore it |
331
- | Run review | none | `/ultra-review all` + Host-native review agents |
332
- | Status → completed | `task.update` (2) | stop; do not claim completion |
333
- | Refresh linked context | `change.context` (9) | stop; do not claim the change packet is current |
334
- | Ask user | none | current Host's native user-interaction surface |
335
-
336
- ## What this skill DOES NOT do
337
-
338
- - Does NOT write `tasks.json` directly (projector owns it)
339
- - Does NOT edit context-md frontmatter (projector owns it)
340
- - Does NOT require the runtime to support `/compact`
341
- - Does NOT advertise review or checkpoint operations as MCP tools
342
-
343
- ## Integration
344
-
345
- | | |
346
- |---|---|
347
- | **Input** | state.db via MCP, plus the `context_file` body returned for the selected task |
348
- | **Writes** | state.db (via `task.update`/`change.context`), active delta or baseline spec as classified, context-md body, workflow-state checkpoints |
349
- | **Next** | `/ultra-dev <next-id>` or `/ultra-test` when all Walking Skeleton + critical-path tasks complete |
118
+ Report task/change id, changed paths, red signal, green commands, public-seam result,
119
+ review session, spec-learning candidates, and remaining blockers. If any item is
120
+ missing, leave the task in progress or blocked rather than claiming completion.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: ultra-doctor
3
3
  description: "Inspect Ultra state, projection, session, incident, and active-change health; optionally run explicit backup-first mechanical recovery."
4
+ user-invocable: true
4
5
  runtime: all
5
6
  mcp_tools_required:
6
7
  - system.doctor
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: ultra-init
3
3
  description: "Initialize Ultra Builder Pro project: detect context, confirm with user, scaffold .ultra/ via task.init_project, set up git."
4
+ user-invocable: true
4
5
  runtime: all
5
6
  mcp_tools_required:
6
7
  - task.init_project