ultra-builder-pro-cli 0.25.0 → 0.26.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/.ultra-template/contexts/TEMPLATE.md +87 -0
- package/.ultra-template/decisions/.gitkeep +1 -0
- package/.ultra-template/evidence/.gitkeep +1 -0
- package/.ultra-template/north-star.md +46 -0
- package/.ultra-template/research/.gitkeep +1 -0
- package/.ultra-template/specs/discovery.md +2 -2
- package/.ultra-template/tasks.json +3 -0
- package/.ultra-template/test-report.json +27 -0
- package/CHANGELOG.md +49 -0
- package/README.md +217 -579
- package/adapters/_shared/delegate-profiles/kimi-read-only.md +15 -0
- package/adapters/_shared/delegate-profiles/kimi-write.md +17 -0
- package/adapters/_shared/file-ops.cjs +76 -2
- package/adapters/_shared/host-profile.cjs +97 -0
- package/adapters/_shared/plugin-core.cjs +204 -0
- package/adapters/_shared/runtime-assets.cjs +31 -96
- package/adapters/claude.js +92 -291
- package/adapters/codex.js +309 -842
- package/adapters/grok.js +143 -1469
- package/adapters/kimi.js +124 -1053
- package/adapters/opencode.js +230 -742
- package/bin/delegate-worker.cjs +323 -0
- package/bin/delegate.cjs +456 -0
- package/bin/install.js +38 -11
- package/docs/ARCHITECTURE.md +122 -216
- package/docs/ARTIFACT-AUTHORITY.md +90 -268
- package/docs/DECISIONS.md +75 -87
- package/docs/PHILOSOPHY.md +177 -0
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +62 -39
- package/docs/RUNTIME-COMPAT-MATRIX.md +99 -156
- package/docs/SKILL-AUTHORING.md +94 -73
- package/docs/WORKFLOW-LIFECYCLE.md +93 -189
- package/hooks/README.md +17 -37
- package/hooks/_common.py +113 -0
- package/hooks/adapters/codex.py +9 -16
- package/hooks/adapters/grok.py +5 -5
- package/hooks/adapters/kimi.py +8 -14
- package/hooks/block_dangerous_commands.py +95 -0
- package/hooks/compact_context.py +65 -0
- package/hooks/mid_workflow_recall.py +25 -0
- package/hooks/post_edit_guard.py +105 -0
- package/hooks/session_context.py +30 -0
- package/package.json +17 -52
- package/skills/ultra-change/SKILL.md +97 -50
- package/skills/ultra-change/references/change-contract.md +40 -1
- package/skills/ultra-delegate/SKILL.md +82 -0
- package/skills/ultra-delegate/references/delegation-contract.md +51 -0
- package/skills/ultra-delegate/scripts/delegate_wait.py +86 -0
- package/skills/ultra-deliver/SKILL.md +61 -42
- package/skills/ultra-deliver/references/baseline-reconciliation.md +39 -20
- package/skills/ultra-dev/SKILL.md +96 -62
- package/skills/ultra-dev/references/debugging.md +22 -0
- package/skills/ultra-domain-modeling/SKILL.md +79 -0
- package/skills/ultra-grilling/SKILL.md +79 -0
- package/skills/ultra-init/SKILL.md +94 -37
- package/skills/ultra-init/references/brownfield-adoption.md +33 -83
- package/skills/ultra-init/scripts/init_project.cjs +84 -0
- package/skills/ultra-plan/SKILL.md +88 -68
- package/skills/ultra-research/SKILL.md +62 -48
- package/skills/ultra-research/references/00-problem-validation.md +5 -5
- package/skills/ultra-research/references/01-opportunity-discovery.md +3 -3
- package/skills/ultra-research/references/02-market-assessment.md +5 -4
- package/skills/ultra-research/references/03-competitive-landscape.md +3 -3
- package/skills/ultra-research/references/04-product-strategy.md +3 -3
- package/skills/ultra-research/references/05-assumptions-validation.md +5 -5
- package/skills/ultra-research/references/10-user-personas.md +3 -2
- package/skills/ultra-research/references/11-user-scenarios.md +3 -3
- package/skills/ultra-research/references/20-user-stories.md +4 -3
- package/skills/ultra-research/references/21-features-scope.md +3 -2
- package/skills/ultra-research/references/22-success-metrics.md +3 -3
- package/skills/ultra-research/references/30-architecture-context.md +3 -3
- package/skills/ultra-research/references/31-solution-strategy.md +3 -3
- package/skills/ultra-research/references/32-building-blocks.md +3 -3
- package/skills/ultra-research/references/40-deployment.md +3 -3
- package/skills/ultra-research/references/41-quality-risks.md +3 -3
- package/skills/ultra-research/references/99-synthesis.md +7 -7
- package/skills/ultra-review/SKILL.md +59 -32
- package/skills/ultra-review/references/code.md +17 -0
- package/skills/ultra-review/references/comments.md +12 -0
- package/skills/ultra-review/references/design.md +12 -0
- package/skills/ultra-review/references/errors.md +13 -0
- package/skills/ultra-review/references/spec.md +13 -0
- package/skills/ultra-review/references/tests.md +12 -0
- package/skills/ultra-review/references/worker-packet.md +40 -0
- package/skills/ultra-review/scripts/review_wait.py +26 -15
- package/skills/ultra-status/SKILL.md +61 -36
- package/skills/ultra-tdd/SKILL.md +81 -0
- package/skills/ultra-tdd/references/templates/README.md +20 -0
- package/skills/ultra-tdd/references/templates/feature-flag-default-audit.sh +79 -0
- package/skills/ultra-tdd/references/templates/persistence-real.ts +78 -0
- package/skills/ultra-tdd/references/templates/testcontainer-postgres.py +78 -0
- package/skills/ultra-tdd/references/templates/testcontainer-postgres.ts +73 -0
- package/skills/ultra-tdd/references/templates/vertical-slice.ts +66 -0
- package/skills/ultra-tdd/references/test-execution.md +18 -0
- package/skills/ultra-test/SKILL.md +70 -30
- package/skills/ultra-test/references/export-syntax.md +18 -0
- package/skills/ultra-test/scripts/worktree_digest.cjs +54 -0
- package/skills/ultra-think/SKILL.md +49 -27
- package/skills/ultra-think/references/autonomy-boundary.md +48 -0
- package/skills/ultra-think/references/interaction-boundary.md +18 -33
- package/.ultra-template/docs/research/README.md +0 -55
- package/.ultra-template/reports/templates/delivery-report.json +0 -17
- package/.ultra-template/reports/templates/test-report.json +0 -18
- package/.ultra-template/tasks/tasks.json +0 -15
- package/.ultra-template/templates/task-context.md +0 -19
- package/adapters/_shared/codex-assets.cjs +0 -725
- package/adapters/_shared/codex-ultra-tools-entry.cjs +0 -11
- package/adapters/_shared/interaction-contract.cjs +0 -129
- package/adapters/_shared/path-rewrite.cjs +0 -79
- package/adapters/_shared/runtime-native.cjs +0 -132
- package/adapters/_shared/settings-merge.cjs +0 -76
- package/agents/code-reviewer.md +0 -42
- package/agents/debugger.md +0 -40
- package/agents/review-code.md +0 -49
- package/agents/review-comments.md +0 -38
- package/agents/review-coordinator.md +0 -56
- package/agents/review-design.md +0 -40
- package/agents/review-errors.md +0 -43
- package/agents/review-spec.md +0 -39
- package/agents/review-tests.md +0 -40
- package/agents/tdd-runner.md +0 -38
- package/bin/orchestrator.js +0 -383
- package/commands/ultra-change.md +0 -10
- package/commands/ultra-deliver.md +0 -10
- package/commands/ultra-dev.md +0 -10
- package/commands/ultra-doctor.md +0 -10
- package/commands/ultra-init.md +0 -10
- package/commands/ultra-plan.md +0 -10
- package/commands/ultra-research.md +0 -10
- package/commands/ultra-review.md +0 -10
- package/commands/ultra-status.md +0 -10
- package/commands/ultra-test.md +0 -10
- package/commands/ultra-think.md +0 -10
- package/docs/AGENT-CONTEXT.md +0 -191
- package/docs/COMMIT-HASH-BACKFILL.md +0 -51
- package/docs/LEGACY-CLI-CROSSWALK.md +0 -175
- package/docs/ROADMAP.md +0 -101
- package/docs/STATE-DB-ACCESS-POLICY.md +0 -161
- package/hooks/active_task_context.py +0 -152
- package/hooks/context_envelope.py +0 -100
- package/hooks/health_check.py +0 -196
- package/hooks/pre_stop_check.py +0 -66
- package/hooks/runtime_paths.py +0 -396
- package/hooks/subagent_tracker.py +0 -88
- package/hooks/workflow_checkpoint.py +0 -76
- package/hooks/workflow_context.py +0 -48
- package/hooks/workflow_resume.py +0 -84
- package/mcp-server/hook-context.cjs +0 -38
- package/mcp-server/hook-event.cjs +0 -34
- package/mcp-server/lib/archive-journal.cjs +0 -1119
- package/mcp-server/lib/archive-mutation-worker.py +0 -365
- package/mcp-server/lib/artifact-registry.cjs +0 -1232
- package/mcp-server/lib/baseline-workflow.cjs +0 -1193
- package/mcp-server/lib/canonical-json.cjs +0 -19
- package/mcp-server/lib/change-authority.cjs +0 -26
- package/mcp-server/lib/change-packet.cjs +0 -790
- package/mcp-server/lib/change-workflow.cjs +0 -65
- package/mcp-server/lib/context-envelope.cjs +0 -581
- package/mcp-server/lib/context-paths.cjs +0 -142
- package/mcp-server/lib/decision-records.cjs +0 -423
- package/mcp-server/lib/delivery-transaction.cjs +0 -471
- package/mcp-server/lib/doctor-backup-worker.cjs +0 -328
- package/mcp-server/lib/doctor.cjs +0 -627
- package/mcp-server/lib/git-bootstrap.cjs +0 -651
- package/mcp-server/lib/init-project.cjs +0 -1021
- package/mcp-server/lib/kernel-change-workflow.cjs +0 -2029
- package/mcp-server/lib/legacy-change-workflow.cjs +0 -3032
- package/mcp-server/lib/managed-file-write.cjs +0 -172
- package/mcp-server/lib/plan-checkpoint.cjs +0 -177
- package/mcp-server/lib/plan-publication-worker.cjs +0 -830
- package/mcp-server/lib/plan-store.cjs +0 -794
- package/mcp-server/lib/prd-parser.cjs +0 -83
- package/mcp-server/lib/pricing.cjs +0 -44
- package/mcp-server/lib/project-context.cjs +0 -178
- package/mcp-server/lib/projector.cjs +0 -386
- package/mcp-server/lib/provider-refs.cjs +0 -42
- package/mcp-server/lib/runtime-paths.cjs +0 -1687
- package/mcp-server/lib/runtime-state.cjs +0 -222
- package/mcp-server/lib/safe-project-file.cjs +0 -385
- package/mcp-server/lib/stage-checkpoints.cjs +0 -463
- package/mcp-server/lib/state-authority.cjs +0 -95
- package/mcp-server/lib/state-db.cjs +0 -1580
- package/mcp-server/lib/state-ops.cjs +0 -1428
- package/mcp-server/lib/task-contract.cjs +0 -404
- package/mcp-server/lib/task-expander.cjs +0 -105
- package/mcp-server/lib/task-ledger.cjs +0 -1964
- package/mcp-server/lib/telemetry.cjs +0 -85
- package/mcp-server/lib/topo.cjs +0 -131
- package/mcp-server/lib/ultra-facade.cjs +0 -2684
- package/mcp-server/lib/worker-packet.cjs +0 -358
- package/mcp-server/server.cjs +0 -437
- package/orchestrator/auto-merge.cjs +0 -128
- package/orchestrator/daemon.cjs +0 -264
- package/orchestrator/dispatch-rules.cjs +0 -78
- package/orchestrator/parallel-orchestrator.cjs +0 -903
- package/orchestrator/planner/plan-builder.cjs +0 -125
- package/orchestrator/recovery.cjs +0 -188
- package/orchestrator/session-close-journal-worker.cjs +0 -5
- package/orchestrator/session-close-journal.cjs +0 -1014
- package/orchestrator/session-runner.cjs +0 -1153
- package/orchestrator/worktree-manager.cjs +0 -282
- package/settings.json +0 -7
- package/skills/cc-collab/SKILL.md +0 -42
- package/skills/code-review-expert/SKILL.md +0 -43
- package/skills/code-review-expert/references/correctness-reliability.md +0 -30
- package/skills/code-review-expert/references/design-boundaries.md +0 -26
- package/skills/code-review-expert/references/removal-plan.md +0 -24
- package/skills/codex-collab/SKILL.md +0 -49
- package/skills/codex-collab/evals/evals.json +0 -35
- package/skills/integration-rules/SKILL.md +0 -32
- package/skills/security-rules/SKILL.md +0 -38
- package/skills/testing-rules/SKILL.md +0 -32
- package/skills/ultra-doctor/SKILL.md +0 -41
- package/skills/ultra-plan/references/semantic-preflight.md +0 -20
- package/skills/ultra-verify/SKILL.md +0 -46
- package/skills/ultra-verify/evals/evals.json +0 -46
- package/skills/ultra-verify/references/cross-verify-modes.md +0 -28
- package/skills/ultra-verify/references/evidence-status.md +0 -21
- package/skills/ultra-verify/scripts/verify_wait.py +0 -94
- package/spec/cli-protocol.md +0 -102
- package/spec/mcp-tools.yaml +0 -312
- package/spec/schemas/baseline-reconciliation.v1.schema.json +0 -73
- package/spec/schemas/change-delta.v1.schema.json +0 -153
- package/spec/schemas/command-manifest.schema.json +0 -29
- package/spec/schemas/context-file.v4.5.schema.json +0 -54
- package/spec/schemas/delivery-report.v1.schema.json +0 -66
- package/spec/schemas/documentation-reconciliation.v1.schema.json +0 -106
- package/spec/schemas/mcp-tools.schema.json +0 -136
- package/spec/schemas/skill-manifest.schema.json +0 -24
- package/spec/schemas/state-db.sql +0 -641
- package/spec/schemas/task-ledger.v2.schema.json +0 -296
- package/spec/schemas/tasks.v4.5.schema.json +0 -96
- package/spec/schemas/test-report.v1.schema.json +0 -225
- package/ultra-tools/cli.cjs +0 -129
- package/ultra-tools/commands/db.cjs +0 -226
- package/ultra-tools/commands/legacy-memory.cjs +0 -159
- package/ultra-tools/commands/migrate.cjs +0 -1386
- package/ultra-tools/commands/session.cjs +0 -213
- package/ultra-tools/commands/status.cjs +0 -559
- package/ultra-tools/commands/system.cjs +0 -498
- package/ultra-tools/commands/task.cjs +0 -105
package/docs/SKILL-AUTHORING.md
CHANGED
|
@@ -1,75 +1,96 @@
|
|
|
1
1
|
# Skill authoring contract
|
|
2
2
|
|
|
3
|
-
Ultra
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
3
|
+
Ultra Skills are portable model-facing methods. They describe outcomes, evidence, and
|
|
4
|
+
owner boundaries; host-specific discovery and invocation policy belong in adapters.
|
|
5
|
+
|
|
6
|
+
## Role selection
|
|
7
|
+
|
|
8
|
+
Choose exactly one role before writing:
|
|
9
|
+
|
|
10
|
+
- **user-invoked**: a complete owner-selected workflow with a durable outcome;
|
|
11
|
+
- **model-invoked**: a reusable discipline used by at least two canonical workflows;
|
|
12
|
+
- **router**: read-only diagnosis that recommends the smallest next public route.
|
|
13
|
+
|
|
14
|
+
A user workflow may recommend but must not invoke another user workflow. A discipline
|
|
15
|
+
with only one real caller should be inlined.
|
|
16
|
+
|
|
17
|
+
## Portable frontmatter
|
|
18
|
+
|
|
19
|
+
Source `SKILL.md` frontmatter contains only:
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
---
|
|
23
|
+
name: lower-case-hyphen-name
|
|
24
|
+
description: What this produces and the concrete situations that trigger it.
|
|
25
|
+
---
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Adapters generate Claude/Grok/Kimi invocation flags and Codex `agents/openai.yaml`.
|
|
29
|
+
Do not put host paths, dependency declarations, plugin policy, or release history in
|
|
30
|
+
source frontmatter.
|
|
31
|
+
|
|
32
|
+
## Required shape
|
|
33
|
+
|
|
34
|
+
Every Skill has one outcome-led title and these semantic sections:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
## Before you start
|
|
38
|
+
## Definition of done
|
|
39
|
+
## <workflow-specific process>
|
|
40
|
+
## When the owner decides
|
|
41
|
+
## References
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
User workflows begin by reading `.ultra/tasks.json`, the unfinished task's
|
|
45
|
+
`context_file` and Resume Note, `CONTEXT.md`, and relevant decisions. They name the
|
|
46
|
+
files they write and read them back. Completion criteria must be observable without a
|
|
47
|
+
semantic validator.
|
|
48
|
+
|
|
49
|
+
Use positive leading words consistently: tracer bullet, seam, deep module, red,
|
|
50
|
+
frontier, and fog of war. Explain a branch by its checkable result, not the model's
|
|
51
|
+
reason for choosing it.
|
|
52
|
+
|
|
53
|
+
## Progressive disclosure
|
|
54
|
+
|
|
55
|
+
Keep resident `SKILL.md` short enough to load on every invocation. Move focused detail
|
|
56
|
+
into `references/` and deterministic validation or waiting into `scripts/`.
|
|
57
|
+
|
|
58
|
+
- Load one research step or review lens at a time.
|
|
59
|
+
- Keep one canonical copy of grilling, TDD, review, domain language, and autonomy rules.
|
|
60
|
+
- Cross-reference another model-invoked Skill by relative path.
|
|
61
|
+
- Do not hide the primary workflow in a script.
|
|
62
|
+
- A script may check paths, schemas, counts, hashes, process status, or other mechanical
|
|
63
|
+
facts; it may not decide semantic completeness.
|
|
64
|
+
|
|
65
|
+
Rule-side executable examples live with the consuming Skill. They are never copied
|
|
66
|
+
wholesale into project authority.
|
|
67
|
+
|
|
68
|
+
## Language and host neutrality
|
|
69
|
+
|
|
70
|
+
Model-facing Skills, references, scripts, comments, and identifiers are English.
|
|
71
|
+
Shared Skills never mention `.claude`, `.codex`, `.opencode`, `.kimi`, `.grok`, or a
|
|
72
|
+
host-only question surface. Use “host-native question surface” and put the translation
|
|
73
|
+
in the adapter.
|
|
74
|
+
|
|
75
|
+
## Safety boundary
|
|
76
|
+
|
|
77
|
+
The owner decides intent, acceptance, reductions, material risk, irreversible actions,
|
|
78
|
+
and external effects. The model owns investigation, design, decomposition, evidence
|
|
79
|
+
interpretation, reversible implementation detail, and final expression.
|
|
80
|
+
|
|
81
|
+
Semantic gaps are diagnostics. A Skill must not invent a hard gate based on counters,
|
|
82
|
+
regexes, similarity, context estimates, or workflow position. Every real hard effect
|
|
83
|
+
guard names its invariant, authoritative input, blocked effect, and reachable repair.
|
|
84
|
+
|
|
85
|
+
## Validation
|
|
86
|
+
|
|
87
|
+
For every changed Skill:
|
|
88
|
+
|
|
89
|
+
1. run the Skill Creator validator;
|
|
90
|
+
2. resolve every relative reference in the source and installed artifact;
|
|
91
|
+
3. verify its role metadata on all five hosts;
|
|
92
|
+
4. test the accepted workflow with representative valid and adversarial inputs;
|
|
93
|
+
5. confirm no retired runtime vocabulary or host-specific path entered portable text.
|
|
94
|
+
|
|
95
|
+
The repository's `tests/skill-authoring.test.cjs` and
|
|
96
|
+
`tests/v026-contract.test.cjs` mechanize the portable parts of this contract.
|
|
@@ -1,230 +1,134 @@
|
|
|
1
1
|
# Ultra Builder Pro workflow lifecycle
|
|
2
2
|
|
|
3
|
-
Ultra
|
|
4
|
-
|
|
5
|
-
starts that capability. Skills own semantic procedure; the seven-tool MCP kernel owns
|
|
6
|
-
persistence and mechanical safety across Claude Code, Codex, OpenCode, Kimi Code, and
|
|
7
|
-
Grok Build.
|
|
8
|
-
|
|
9
|
-
## Capability graph
|
|
10
|
-
|
|
11
|
-
```mermaid
|
|
12
|
-
flowchart TD
|
|
13
|
-
START["Project"] --> INIT["ultra-init"]
|
|
14
|
-
INIT --> RESEARCH["ultra-research"]
|
|
15
|
-
RESEARCH --> THINK["ultra-think when a material decision remains"]
|
|
16
|
-
THINK --> RESEARCH
|
|
17
|
-
RESEARCH --> CHANGE["ultra-change"]
|
|
18
|
-
CHANGE --> ROUTE{"What does this Change actually need?"}
|
|
19
|
-
ROUTE -->|"Evidence gap"| CR["bounded ultra-research"]
|
|
20
|
-
CR --> ROUTE
|
|
21
|
-
ROUTE -->|"Implementation"| PLAN["ultra-plan"]
|
|
22
|
-
PLAN --> DEV["ultra-dev for one owned Task"]
|
|
23
|
-
DEV --> MORE{"More executable Tasks?"}
|
|
24
|
-
MORE -->|"Yes"| DEV
|
|
25
|
-
MORE -->|"No"| ASSESS{"What evidence is still warranted?"}
|
|
26
|
-
ROUTE -->|"No implementation; current evidence is sufficient"| ASSESS
|
|
27
|
-
ASSESS -->|"Risk-selected verification"| TEST["ultra-test"]
|
|
28
|
-
ASSESS -->|"Independent review"| REVIEW["ultra-review"]
|
|
29
|
-
ASSESS -->|"Caller accepts current packet and explicit omissions"| DELIVER["ultra-deliver"]
|
|
30
|
-
TEST -->|"implementation gap"| DEV
|
|
31
|
-
TEST -->|"review warranted"| REVIEW
|
|
32
|
-
TEST -->|"caller accepts evidence"| DELIVER
|
|
33
|
-
REVIEW -->|"implementation issue"| DEV
|
|
34
|
-
REVIEW -->|"contract issue"| PLAN
|
|
35
|
-
REVIEW -->|"accepted"| DELIVER
|
|
36
|
-
DELIVER --> CHANGE
|
|
37
|
-
STATUS["ultra-status"] -.-> INIT
|
|
38
|
-
STATUS -.-> CHANGE
|
|
39
|
-
DOCTOR["ultra-doctor"] -.-> INIT
|
|
40
|
-
DOCTOR -.-> CHANGE
|
|
41
|
-
```
|
|
3
|
+
Ultra v0.26 has no fixed runtime state machine. Skills define checkable entry and exit
|
|
4
|
+
criteria; repository files record facts; the host model chooses the route.
|
|
42
5
|
|
|
43
|
-
|
|
44
|
-
needed by the actual Change route and records every deliberate omission in the delivery
|
|
45
|
-
handoff. When implementation occurs, its Plan, Task contract, and Context remain
|
|
46
|
-
mandatory execution authority; Research, Test, and Review are used according to the
|
|
47
|
-
actual evidence and risk rather than as universal archive gates. `ultra-status` is
|
|
48
|
-
read-only. `ultra-doctor` repairs mechanical authority only.
|
|
49
|
-
|
|
50
|
-
## Shared command contract
|
|
51
|
-
|
|
52
|
-
Every public Skill follows the same boundary:
|
|
53
|
-
|
|
54
|
-
1. read the current `ultra.context`;
|
|
55
|
-
2. inspect checkout/runtime facts directly;
|
|
56
|
-
3. identify the smallest unresolved semantic choice;
|
|
57
|
-
4. recommend a route and ask only when user intent is not already explicit;
|
|
58
|
-
5. persist normalized facts through typed `ultra.record`;
|
|
59
|
-
6. update the owning semantic/evidence files;
|
|
60
|
-
7. save or accept the stage through `ultra.checkpoint`;
|
|
61
|
-
8. read back current authority;
|
|
62
|
-
9. report diagnostics and recommend, but do not launch, the next Skill.
|
|
63
|
-
|
|
64
|
-
No command records ceremonial steps merely to satisfy SQLite.
|
|
65
|
-
|
|
66
|
-
## Capability ownership
|
|
67
|
-
|
|
68
|
-
| Skill | Semantic owner | Durable output |
|
|
69
|
-
|---|---|---|
|
|
70
|
-
| `ultra-init` | repository classification, scope, Git/runtime bootstrap | initialized local authority and empty/imported team checkpoint |
|
|
71
|
-
| `ultra-research` | adaptive evidence coverage and accepted baseline | baseline specs, research evidence, Decision Records, baseline checkpoint |
|
|
72
|
-
| `ultra-think` | one load-bearing owner decision or bounded diagnosis | normalized Decision Record and applied references |
|
|
73
|
-
| `ultra-change` | feature/fix/refactor/incident contract | active Change intent, classification, delta and decision scope |
|
|
74
|
-
| `ultra-plan` | Task contracts, topology, ownership, acceptance coverage | accepted Plan checkpoint, deterministic plan files, team checkpoint |
|
|
75
|
-
| `ultra-dev` | one owned vertical Task implementation | Worker Packet output, task outcome, implementation evidence checkpoint |
|
|
76
|
-
| `ultra-test` | risk-selected executable validation | test report and accepted test checkpoint |
|
|
77
|
-
| `ultra-review` | independent spec fidelity and engineering quality | specialist artifacts, coordinated summary, accepted review checkpoint |
|
|
78
|
-
| `ultra-deliver` | documentation/spec reconciliation and local archive | delivery evidence, converged baseline, immutable archive, team checkpoint |
|
|
79
|
-
| `ultra-status` | current Context rendering | no state mutation |
|
|
80
|
-
| `ultra-doctor` | mechanical health, migration, backup and repair | diagnostic/repair report; no product decision |
|
|
81
|
-
|
|
82
|
-
## Context and decisions
|
|
83
|
-
|
|
84
|
-
One canonical Context Envelope flows through Skill, Hook, Session, Agent, and compact
|
|
85
|
-
recovery. Accepted Decision Records are always visible, including when no workflow is
|
|
86
|
-
active. A new session therefore resumes from accepted intent rather than reconstructing
|
|
87
|
-
it from conversation.
|
|
88
|
-
|
|
89
|
-
Decision history is append-only through supersession:
|
|
6
|
+
## Capability flow
|
|
90
7
|
|
|
91
8
|
```text
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
9
|
+
ultra-init
|
|
10
|
+
├─ unresolved external claims ─► ultra-research
|
|
11
|
+
└─ bounded requested outcome ──► ultra-change
|
|
95
12
|
|
|
96
|
-
|
|
97
|
-
|
|
13
|
+
ultra-change ─► ultra-plan ─► ultra-dev (per task) ─► ultra-test ─► ultra-deliver
|
|
14
|
+
▲ │ │
|
|
15
|
+
└── replan ◄──────┘ └── findings return to owner/model
|
|
98
16
|
|
|
99
|
-
|
|
17
|
+
ultra-status read-only router at any point
|
|
18
|
+
ultra-delegate orthogonal bounded execution on another CLI
|
|
19
|
+
```
|
|
100
20
|
|
|
101
|
-
|
|
21
|
+
Arrows are recommendations, not automatic invocation. The owner explicitly selects
|
|
22
|
+
each public workflow.
|
|
102
23
|
|
|
103
|
-
|
|
104
|
-
draft revision N
|
|
105
|
-
-> accepted revision N
|
|
106
|
-
-> accepted revision N+1 supersedes N
|
|
107
|
-
```
|
|
24
|
+
## Common entry contract
|
|
108
25
|
|
|
109
|
-
|
|
110
|
-
checkpoint conclusion. A structural, digest, path, publication, or concurrency
|
|
111
|
-
conflict keeps the same draft mutable. Plan export is part of Plan checkpoint
|
|
112
|
-
publication, so changing a Task contract before acceptance cannot invalidate an
|
|
113
|
-
already-recorded “export step.” There is no locked intermediate run to cancel or
|
|
114
|
-
manually repair.
|
|
26
|
+
Every user-invoked Skill reads, in order:
|
|
115
27
|
|
|
116
|
-
|
|
117
|
-
|
|
28
|
+
1. `.ultra/tasks.json`;
|
|
29
|
+
2. the unfinished task's `context_file` and closing `## Resume Note`;
|
|
30
|
+
3. `CONTEXT.md` and relevant `.ultra/decisions/`;
|
|
31
|
+
4. the active Change, specifications, evidence, and Git state relevant to its scope.
|
|
118
32
|
|
|
119
|
-
|
|
33
|
+
Missing files produce a precise recovery or initialization recommendation. They do not
|
|
34
|
+
cause the Skill to invent a state transition.
|
|
120
35
|
|
|
121
|
-
|
|
36
|
+
## Initialization
|
|
122
37
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
```
|
|
38
|
+
`ultra-init` distinguishes owner authorization from claims requiring evidence. It
|
|
39
|
+
creates the file skeleton, preserves unknowns as `[NEEDS CLARIFICATION]`, initializes
|
|
40
|
+
Git when absent, and records only repository-observable brownfield facts. It does not
|
|
41
|
+
perform research or launch another workflow.
|
|
128
42
|
|
|
129
|
-
|
|
130
|
-
states. An active Change may be revised. The Deliver Skill inspects the relevant Task,
|
|
131
|
-
Context, test, review, documentation, and delivery evidence, decides semantic
|
|
132
|
-
sufficiency, and records deliberate omissions. Archive validates the explicit handoff,
|
|
133
|
-
current authority, reconciliation structure, and safe recoverable filesystem/DB
|
|
134
|
-
transaction without enforcing a fixed stage sequence. Archived bytes remain immutable.
|
|
43
|
+
## Research
|
|
135
44
|
|
|
136
|
-
|
|
137
|
-
|
|
45
|
+
`ultra-research` maps unresolved claims to the smallest useful subset of seventeen
|
|
46
|
+
focused references. Reports are written immediately. Three material checkpoints can
|
|
47
|
+
change later scope; the owner resolves those checkpoints. The final distillate records
|
|
48
|
+
Git blob hashes of the specifications it summarizes.
|
|
138
49
|
|
|
139
|
-
##
|
|
50
|
+
## Change reconciliation
|
|
140
51
|
|
|
141
|
-
|
|
52
|
+
`ultra-change` first compares requested behavior with product truth and current code.
|
|
53
|
+
It classifies changes by the resulting commitments:
|
|
142
54
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
| | |
|
|
146
|
-
| -> blocked -> in_progress (explicit reopen)
|
|
147
|
-
-> blocked
|
|
148
|
-
-> cancelled
|
|
149
|
-
```
|
|
55
|
+
- expansion and correction may proceed inside accepted intent;
|
|
56
|
+
- a reduction waits for explicit owner authority.
|
|
150
57
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
Reopening a completed Task clears the local completion/session fields, preserves the
|
|
154
|
-
prior completion commit in an append-only `task_reopened` event, and requires a new
|
|
155
|
-
durable outcome before it can be completed again.
|
|
58
|
+
The output is one active Change intent with observable outcome, acceptance, seams,
|
|
59
|
+
non-goals, and trace anchors.
|
|
156
60
|
|
|
157
|
-
|
|
61
|
+
## Planning
|
|
158
62
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
5. returns packet path/digest and exact execution boundary.
|
|
63
|
+
`ultra-plan` confirms the scope posture and public seams, then writes a task graph and
|
|
64
|
+
one context file per task. Feature tasks are tracer bullets. A contract task precedes
|
|
65
|
+
cross-process or cross-top-level-boundary implementations; integration checkpoints
|
|
66
|
+
appear after several slices. Cycles and broken trace paths are repaired before handoff.
|
|
164
67
|
|
|
165
|
-
|
|
166
|
-
digest, unsafe path, or concurrent authority conflict fails closed. Optional
|
|
167
|
-
orchestration can dispatch only a Change-owned Task with an accepted Plan checkpoint
|
|
168
|
-
and assigned Worker Packet.
|
|
68
|
+
## Task development
|
|
169
69
|
|
|
170
|
-
|
|
70
|
+
`ultra-dev` writes the implementation plan into the task context before code. It uses
|
|
71
|
+
`ultra-tdd` on confirmed seams, records six evidence dimensions, and keeps ledger and
|
|
72
|
+
context status synchronized. The closing Resume Note is rewritten even when work stops
|
|
73
|
+
early.
|
|
171
74
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
75
|
+
Task review uses six independent lenses. Findings move through stable JSON artifacts,
|
|
76
|
+
not intermediate worker chatter. Refactoring happens after the evidence makes real
|
|
77
|
+
duplication or coupling visible.
|
|
175
78
|
|
|
176
|
-
|
|
79
|
+
## Whole-system audit
|
|
177
80
|
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
- `publish`: reconcile incoming Git authority, then publish one new generation.
|
|
81
|
+
`ultra-test` runs once after the ledger is complete. It checks anti-patterns, coverage,
|
|
82
|
+
wiring, E2E behavior, performance, and security. It names the exact Git commit and
|
|
83
|
+
never turns an orphan, failed command, stub, or omission into permission to alter scope.
|
|
182
84
|
|
|
183
|
-
|
|
184
|
-
one intent. Imported accepted baseline authority requires checkout-local source/spec
|
|
185
|
-
revalidation before descendant publication.
|
|
85
|
+
## Delivery
|
|
186
86
|
|
|
187
|
-
|
|
188
|
-
|
|
87
|
+
`ultra-deliver` reconciles actual outcome, specifications, documentation, current test
|
|
88
|
+
report, aggregate review, build, version impact, omissions, and rollback. It archives
|
|
89
|
+
the Change with `git mv` after local reconciliation.
|
|
189
90
|
|
|
190
|
-
|
|
91
|
+
Commit, push, tag, publication, release, and deployment are independent external
|
|
92
|
+
effects. Readiness grants none automatically.
|
|
191
93
|
|
|
192
|
-
|
|
94
|
+
## Status routing
|
|
193
95
|
|
|
194
|
-
-
|
|
195
|
-
- protect the team checkpoint and generated projections from direct writes;
|
|
196
|
-
- save/restore minimal compact recovery state;
|
|
197
|
-
- record minimal lifecycle identifiers;
|
|
198
|
-
- return advisory Stop context.
|
|
96
|
+
`ultra-status` infers the smallest next route from observable files:
|
|
199
97
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
98
|
+
- no healthy skeleton → init;
|
|
99
|
+
- unresolved evidence-bearing claim → research;
|
|
100
|
+
- requested outcome without active Change → change;
|
|
101
|
+
- active Change without executable ledger → plan;
|
|
102
|
+
- pending or in-progress task → dev;
|
|
103
|
+
- completed ledger without current report → test;
|
|
104
|
+
- current report and unarchived Change → deliver.
|
|
203
105
|
|
|
204
|
-
|
|
106
|
+
It also checks installation provenance, stale reports, old in-progress work, and
|
|
107
|
+
unresolved markers. It does not mutate artifacts.
|
|
205
108
|
|
|
206
|
-
|
|
207
|
-
instead of blocking diagnosis. Use `ultra.sync migrate` for semantic conversion and
|
|
208
|
-
`ultra.doctor { repair: true }` for mechanical backup/recovery.
|
|
109
|
+
## Artifact closure
|
|
209
110
|
|
|
210
|
-
|
|
211
|
-
It is exact-byte backup-first, transactional, and fail-closed on conflict. Legacy
|
|
212
|
-
workflow/dialogue rows survive as history but do not authorize current work.
|
|
111
|
+
Every durable output has a later reader:
|
|
213
112
|
|
|
214
|
-
|
|
215
|
-
|
|
113
|
+
- init's north star and specification skeletons are read by all later workflows;
|
|
114
|
+
- research reports are traced into specifications, Change reconciliation, planning,
|
|
115
|
+
and delivery;
|
|
116
|
+
- Change intent is consumed through planning, development, audit, review, status, and
|
|
117
|
+
delivery;
|
|
118
|
+
- task ledger and contexts are the common resume input, while task evidence feeds
|
|
119
|
+
review, whole-system audit, and delivery;
|
|
120
|
+
- the current test report is consumed by status and delivery;
|
|
121
|
+
- delivery moves with the Change into archive and remains historical evidence.
|
|
216
122
|
|
|
217
|
-
|
|
123
|
+
`ultra-status` intentionally writes nothing. Review, Hook, compact, and delegation
|
|
124
|
+
files are derived observations with explicit rebuild or rerun paths. No route creates
|
|
125
|
+
an unowned drift log, Change plan, technical-debt report, or second delivery summary.
|
|
218
126
|
|
|
219
|
-
|
|
127
|
+
## Interruption and cross-host continuation
|
|
220
128
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- missing/incompatible native runtime;
|
|
225
|
-
- permission failure;
|
|
226
|
-
- archive/publish/deploy or another irreversible external-effect failure.
|
|
129
|
+
Before stopping, the active task context records current facts, exact verification,
|
|
130
|
+
open questions, Completion, and a closing Resume Note. The next session or host repeats
|
|
131
|
+
the common entry contract and compares the working tree with those claims.
|
|
227
132
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
for investigating, revising, accepting, or explicitly recording an omission.
|
|
133
|
+
This path remains valid when hooks and `ubp` are disabled. A compact snapshot may be
|
|
134
|
+
used as a hint, then checked against canonical files and Git.
|
package/hooks/README.md
CHANGED
|
@@ -1,42 +1,22 @@
|
|
|
1
|
-
# Ultra Builder Pro
|
|
1
|
+
# Ultra Builder Pro hooks
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Direct writes to the MCP-owned Git checkpoint and checkout-local projections remain
|
|
6
|
-
blocked; context, compact, stop, and agent lifecycle behavior is recovery-oriented and
|
|
7
|
-
does not turn semantic diagnostics into refusal gates.
|
|
3
|
+
Ultra ships five small file-first hooks. Every hook first looks for a `.ultra/`
|
|
4
|
+
directory and exits silently when the workflow is not active.
|
|
8
5
|
|
|
9
|
-
|
|
|
6
|
+
| Hook | Lifecycle | Purpose |
|
|
10
7
|
|---|---|---|
|
|
11
|
-
| Session start |
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
| After compact/resume | `workflow_resume.py` | Prefer the DB breadcrumb; restore the minimal file checkpoint only when no active change owns recovery |
|
|
17
|
-
| Stop | `pre_stop_check.py` | Report an incomplete workflow boundary and allow stop |
|
|
18
|
-
| Subagent lifecycle | `subagent_tracker.py` | Append minimal start/stop metadata to the authoritative DB event stream |
|
|
8
|
+
| `session_context.py` | Session start | Inject the one-line north star and current acceptance criteria |
|
|
9
|
+
| `mid_workflow_recall.py` | Before source reads or edits | Restate current acceptance only |
|
|
10
|
+
| `compact_context.py` | Before/after compaction | Save and restore a disposable snapshot derived from files and Git |
|
|
11
|
+
| `post_edit_guard.py` | After edits | Record mechanical evidence observations without deciding completion |
|
|
12
|
+
| `block_dangerous_commands.py` | Before shell execution | Block a narrow named external effect until the exact command is owner-authorized |
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
memory and graph content belongs to separately installed providers.
|
|
14
|
+
`_common.py` is a shared library, not a lifecycle registration. Compact snapshots and
|
|
15
|
+
progress observations live under ignored `.ultra/.runtime/` or `.ultra/progress/`; the
|
|
16
|
+
canonical semantic facts remain the owner-readable files and Git.
|
|
24
17
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
`context_envelope.py` is an imported library, not an additional lifecycle registration.
|
|
31
|
-
Registering it separately would duplicate hook execution. The checkpoint is a recovery artifact, not a second authority. A valid newer
|
|
32
|
-
live workflow wins; a newer valid checkpoint may restore a missing or older
|
|
33
|
-
live file; corrupt, non-object, or terminal checkpoints are ignored.
|
|
34
|
-
|
|
35
|
-
Runtime wiring:
|
|
36
|
-
|
|
37
|
-
- Claude Code: native `hooks/hooks.json` with `${CLAUDE_PLUGIN_ROOT}` paths.
|
|
38
|
-
- Codex: native `hooks/hooks.json` through `hooks/adapters/codex.py` for wire normalization.
|
|
39
|
-
- OpenCode: native JavaScript plugin events; the Python hook suite is not copied.
|
|
40
|
-
- Kimi Code: native lifecycle events through its wire adapter.
|
|
41
|
-
- Grok Build: camelCase lifecycle events; ignored stdout channels are used for
|
|
42
|
-
observation only, and every Skill rereads authoritative Context at entry.
|
|
18
|
+
Claude Code runs the hooks directly. Codex, Kimi Code, and Grok Build use the small
|
|
19
|
+
wire adapters under `hooks/adapters/`. OpenCode calls the same scripts from its native
|
|
20
|
+
JavaScript plugin. A hook failure is advisory except for the explicitly classified
|
|
21
|
+
external effects in `block_dangerous_commands.py`, whose denial includes a reachable
|
|
22
|
+
SHA-256-scoped authorization path.
|