ultra-builder-pro-cli 0.25.1 → 0.26.1
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/changes/abandoned/.gitkeep +0 -0
- package/.ultra-template/contexts/TEMPLATE.md +94 -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 +107 -1
- 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 +328 -0
- package/bin/delegate.cjs +463 -0
- package/bin/install.js +38 -11
- package/docs/ARCHITECTURE.md +125 -216
- package/docs/ARTIFACT-AUTHORITY.md +90 -268
- package/docs/DECISIONS.md +77 -87
- package/docs/PHILOSOPHY.md +208 -0
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +65 -39
- package/docs/RUNTIME-COMPAT-MATRIX.md +140 -155
- package/docs/SKILL-AUTHORING.md +94 -73
- package/docs/WORKFLOW-LIFECYCLE.md +97 -189
- package/hooks/README.md +19 -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 +201 -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 +115 -50
- package/skills/ultra-change/references/change-contract.md +68 -3
- package/skills/ultra-delegate/SKILL.md +89 -0
- package/skills/ultra-delegate/references/delegation-contract.md +59 -0
- package/skills/ultra-delegate/scripts/delegate_wait.py +86 -0
- package/skills/ultra-deliver/SKILL.md +98 -42
- package/skills/ultra-deliver/references/baseline-reconciliation.md +39 -20
- package/skills/ultra-dev/SKILL.md +115 -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 +118 -0
- package/skills/ultra-grilling/references/reframing.md +72 -0
- package/skills/ultra-init/SKILL.md +102 -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 +101 -68
- package/skills/ultra-research/SKILL.md +68 -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 +84 -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 +75 -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 -1714
- 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
|
@@ -1,158 +1,143 @@
|
|
|
1
1
|
# Runtime compatibility matrix
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
3
|
+
Ultra Builder Pro adapts one fourteen-Skill, five-hook contract to five native hosts.
|
|
4
|
+
This document records the differences that belong in adapters rather than shared
|
|
5
|
+
Skills.
|
|
6
|
+
|
|
7
|
+
## Installed surface
|
|
8
|
+
|
|
9
|
+
| Host | Managed plugin or bundle | Skills | Hook bridge |
|
|
10
|
+
|---|---|---:|---|
|
|
11
|
+
| Claude Code | `<config>/skills/ultra-builder-pro` | nested `skills/<name>` | direct Python commands in `hooks/hooks.json` |
|
|
12
|
+
| Codex | `<home>/plugins/ultra-builder-pro` plus personal marketplace entry | nested `skills/<name>` with `agents/openai.yaml` | `hooks/adapters/codex.py` |
|
|
13
|
+
| OpenCode | `<config>/.ultra-builder-pro` plus `<config>/plugins/ultra-builder-pro.js` | managed `<config>/skills/<name>` | native JS events call shared Python scripts |
|
|
14
|
+
| Kimi Code | `<config>/plugins/managed/ultra-builder-pro` plus `installed.json` | nested `skills/<name>` | `hooks/adapters/kimi.py` |
|
|
15
|
+
| Grok Build | `<GROK_HOME>/.ubp/plugin-sources/ultra-builder-pro` | nested `skills/<name>` | `hooks/adapters/grok.py` |
|
|
16
|
+
|
|
17
|
+
Every host receives the same eight owner workflows, five model disciplines, and one
|
|
18
|
+
router. Codex alone needs generated `agents/openai.yaml` files to express display data
|
|
19
|
+
and implicit-invocation policy; those are host metadata, not custom agents.
|
|
20
|
+
|
|
21
|
+
## Scope resolution
|
|
22
|
+
|
|
23
|
+
| Host | Global default | Local default | Environment override |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| Claude Code | `~/.claude` | `<cwd>/.claude` | `CLAUDE_CONFIG_DIR` |
|
|
26
|
+
| Codex | `~/.codex` for config; `~/plugins` and `~/.agents` for sidecars | `<cwd>/.codex` plus home-scoped plugin surface | `CODEX_HOME` |
|
|
27
|
+
| OpenCode | `${XDG_CONFIG_HOME:-~/.config}/opencode` | `<cwd>/.opencode` | `OPENCODE_CONFIG_DIR` or `OPENCODE_CONFIG` |
|
|
28
|
+
| Kimi Code | `~/.kimi-code` | no project plugin scope | `KIMI_CODE_HOME` |
|
|
29
|
+
| Grok Build | `~/.grok` | no project plugin scope | `GROK_HOME` |
|
|
30
|
+
|
|
31
|
+
An explicit `--config-dir` wins over all defaults and becomes the home for any
|
|
32
|
+
host-owned sidecar as well. This rule makes isolated installation tests trustworthy.
|
|
33
|
+
With multiple selected runtimes, the CLI passes `<config-dir>/<runtime>` to each adapter
|
|
34
|
+
instead of merging incompatible host layouts.
|
|
35
|
+
Kimi and Grok currently expose user-scoped plugin installation only. `--local` rejects
|
|
36
|
+
them before mutating another host; an explicit `--config-dir` remains available for an
|
|
37
|
+
isolated user-scope installation test.
|
|
38
|
+
|
|
39
|
+
## Invocation policy
|
|
40
|
+
|
|
41
|
+
| Role | Owner can route directly | Model can select implicitly |
|
|
42
|
+
|---|---:|---:|
|
|
43
|
+
| eight user-invoked Skills | yes | no |
|
|
44
|
+
| five model-invoked Skills | no | yes |
|
|
45
|
+
| `ultra-status` router | yes | no |
|
|
46
|
+
|
|
47
|
+
Claude and Grok receive `user-invocable` / `disable-model-invocation` frontmatter.
|
|
48
|
+
Kimi receives its native equivalent. Codex receives
|
|
49
|
+
`policy.allow_implicit_invocation` in `agents/openai.yaml`. OpenCode uses portable
|
|
50
|
+
source frontmatter and native discovery, but its current Skill schema has no equivalent
|
|
51
|
+
owner/model routing bit: all fourteen Skills remain discoverable and their descriptions
|
|
52
|
+
guide model selection. Ultra does not add a semantic interception hook to imitate a
|
|
53
|
+
host feature OpenCode does not expose.
|
|
54
|
+
|
|
55
|
+
## Hook compatibility
|
|
56
|
+
|
|
57
|
+
| Hook | Claude | Codex | OpenCode | Kimi | Grok |
|
|
58
|
+
|---|---:|---:|---:|---:|---:|
|
|
59
|
+
| session context | yes | normalized | native bridge | normalized to message | executed; host stdout limits apply |
|
|
60
|
+
| mid-workflow recall | yes | handles `apply_patch` | native bridge | normalized | executed |
|
|
61
|
+
| compact context | pre/start | pre/post | native compact event | pre/post | pre-compact |
|
|
62
|
+
| post-edit observation | Write/Edit | Write/Edit/`apply_patch` | write/edit/patch | Write/Edit | Write/Edit/patch |
|
|
63
|
+
| dangerous command guard | Bash advisory/deny | Bash advisory/deny | bash advisory/deny | Bash advisory/deny | Bash allow/deny mapping |
|
|
64
|
+
|
|
65
|
+
All hooks share the same `.ultra/` idle guard. Wire adapters normalize payload and
|
|
66
|
+
output fields only; they do not change semantic policy. Codex installation health and
|
|
67
|
+
hook activation are distinct: Codex skips newly installed non-managed plugin hooks
|
|
68
|
+
until the user reviews and trusts the current definition, so Doctor reports
|
|
69
|
+
`hook_activation: user_review_required` without pretending the hook already ran.
|
|
70
|
+
|
|
71
|
+
## Delegation argv
|
|
72
|
+
|
|
73
|
+
`adapters/_shared/host-profile.cjs` records current non-interactive invocation for:
|
|
74
|
+
|
|
75
|
+
- Claude print mode with structured output and an explicit file-tool allowlist; read-only
|
|
76
|
+
uses `plan`, while bounded write uses `acceptEdits` without Bash or web tools;
|
|
77
|
+
- Codex ephemeral `exec` with user config ignored, project rules preserved, native
|
|
78
|
+
`read-only` or `workspace-write`, network disabled, and an output schema;
|
|
79
|
+
- OpenCode `run --auto` only after an inline config explicitly denies Bash, web,
|
|
80
|
+
subagents, external directories, Skills and undeclared edit roots;
|
|
81
|
+
- Kimi prompt mode with a launch-only read or write agent profile that exposes only
|
|
82
|
+
file tools and no Bash, web, MCP, Skills or subagents;
|
|
83
|
+
- Grok single-turn mode with `read-only` or `workspace` OS sandbox, structured output,
|
|
84
|
+
no memory, web search or subagents.
|
|
85
|
+
|
|
86
|
+
The launcher accepts no external-effect authority. It binds instruction, permission and
|
|
87
|
+
output-schema digests, a clean Git worktree, allowed write roots, actual changed paths,
|
|
88
|
+
strict result schema, timeout and cancellation. Empty roots select read-only mode. The
|
|
89
|
+
model returns structured output and never authors the receipt. Host-native permissions
|
|
90
|
+
are the execution boundary; the primary host still inspects and integrates the isolated
|
|
91
|
+
diff.
|
|
92
|
+
|
|
93
|
+
## Lifecycle verification
|
|
94
|
+
|
|
95
|
+
Each adapter must pass isolated install, doctor, reinstall, and uninstall tests. Real
|
|
96
|
+
global doctor additionally asks the native host where supported, but never repairs or
|
|
97
|
+
installs. Codex still performs native registration under `--config-dir`; its host process
|
|
98
|
+
inherits the same isolated `HOME` and `CODEX_HOME`. Grok native registration is skipped
|
|
99
|
+
only in explicit isolated test mode. Lifecycle tests also require the isolated config
|
|
100
|
+
and fake HOME to contain zero children after uninstall, while separate ownership tests
|
|
101
|
+
prove that pre-existing empty Codex and Kimi registries survive.
|
|
102
|
+
|
|
103
|
+
## Authenticated cross-host continuation evidence
|
|
104
|
+
|
|
105
|
+
On 2026-08-03, one deliberately narrow task was run in an isolated Git repository to
|
|
106
|
+
test the product's central recovery claim with real authenticated models. This was a
|
|
107
|
+
continuation drill, not a full project workflow or a delegation receipt test.
|
|
108
|
+
|
|
109
|
+
Both hosts used globally installed artifacts from the same clean source candidate:
|
|
110
|
+
|
|
111
|
+
- source commit: `c473a248bde2afce77591f2ba382246d420b5c72`;
|
|
112
|
+
- worktree digest: `e83bdcbe2905cf02cb06cb0219127f6ce0400484331a6e9fc95622bbe24b44bd`;
|
|
113
|
+
- Doctor: Claude healthy with 83 assets and zero issues; Codex healthy with 99 assets
|
|
114
|
+
and zero issues, with optional hooks still `user_review_required`.
|
|
115
|
+
|
|
116
|
+
The seed repository had one passing smoke test, one pending task, one mapped Change
|
|
117
|
+
acceptance ID, and seed HEAD `cf27d62aeeae353e0650413de6d9a118b89a0406`.
|
|
118
|
+
|
|
119
|
+
| Phase | Execution boundary | Observed result |
|
|
79
120
|
|---|---|---|
|
|
80
|
-
| Claude
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
| Capability | Claude Code | OpenCode | Codex | Kimi Code | Grok Build |
|
|
105
|
-
|---|---|---|---|---|---|
|
|
106
|
-
| Global flag | `--claude` | `--opencode` | `--codex` | `--kimi` | `--grok` |
|
|
107
|
-
| Staging + atomic swap | FULL | FULL | FULL | FULL | FULL |
|
|
108
|
-
| Exact-host preflight | FULL | FULL | FULL | FULL | FULL |
|
|
109
|
-
| Native registration truth | host manifest | host config | plugin manifest/cache | installed registry | `grok plugin list/details` |
|
|
110
|
-
| Active MCP truth | host MCP config | host MCP config | plugin cache | managed plugin config | `grok inspect` + `grok mcp doctor` |
|
|
111
|
-
| Managed uninstall guard | FULL | FULL | FULL | FULL | FULL |
|
|
112
|
-
| Preserve unrelated config | FULL | FULL | FULL | FULL | FULL |
|
|
113
|
-
| Read-only Doctor | FULL | FULL | FULL | FULL | FULL |
|
|
114
|
-
|
|
115
|
-
Preflight uses the final manifest command and verifies initialize, `tools/list == 7`,
|
|
116
|
-
public write/read, Doctor backup, close/reopen consistency, native provenance, and
|
|
117
|
-
lazy project initialization.
|
|
118
|
-
|
|
119
|
-
The Grok adapter probes the installed CLI's command and flag capabilities rather
|
|
120
|
-
than branching on a Grok version number. Global installation uses Grok's native
|
|
121
|
-
plugin registry, keeps a durable managed local source for native refresh, and
|
|
122
|
-
resolves the MCP launcher through `${GROK_PLUGIN_ROOT}` after Grok copies the plugin
|
|
123
|
-
under its dynamic `installed-plugins/<repo-key>` path. An older raw
|
|
124
|
-
`$GROK_HOME/plugins/ultra-builder-pro` installation is backed up and migrated; a
|
|
125
|
-
failed native install restores the prior source and registration.
|
|
126
|
-
|
|
127
|
-
`grok mcp list` is not the plugin-MCP inventory surface in current Grok releases;
|
|
128
|
-
it reports explicit user/project MCP configuration. Ultra therefore does not add a
|
|
129
|
-
second `[mcp_servers]` entry merely to make that command display the plugin. The
|
|
130
|
-
authoritative plugin consumer checks are the native plugin registry, merged
|
|
131
|
-
`grok inspect` MCP source, and the live `grok mcp doctor` handshake.
|
|
132
|
-
|
|
133
|
-
## Durable compatibility
|
|
134
|
-
|
|
135
|
-
| Capability | Contract |
|
|
136
|
-
|---|---|
|
|
137
|
-
| Current authority schema | `22.0` |
|
|
138
|
-
| Runtime values | `claude`, `opencode`, `codex`, `kimi`, `grok` |
|
|
139
|
-
| Legacy inputs | v4.4/v4.5 task projections, the legacy root-level state database, Task Contexts, v0.22/v0.23 DB and team ledger |
|
|
140
|
-
| Preservation | exact-byte backup, row/ID/event/migration-history preservation, verified semantic promotion |
|
|
141
|
-
| Failure | transactional rollback; no partial DB, ledger, native runtime, or host installation |
|
|
142
|
-
|
|
143
|
-
Old workflow/dialogue rows are retained as non-authoritative history. Current
|
|
144
|
-
Decisions, Stage Checkpoints, Context Envelopes, Worker Packets, and team checkpoint
|
|
145
|
-
are reconstructed only from verified authority.
|
|
146
|
-
|
|
147
|
-
## Verification sources
|
|
148
|
-
|
|
149
|
-
- `adapters/tests/*.test.cjs` validates every native builder and manifest.
|
|
150
|
-
- `tests/conformance/<runtime>/*.test.cjs` validates all five hosts.
|
|
151
|
-
- `adapters/_shared/tests/runtime-assets.test.cjs` keeps docs and asset allowlists
|
|
152
|
-
synchronized.
|
|
153
|
-
- `tests/install.test.cjs` verifies atomic install, rollback, Doctor, and instruction
|
|
154
|
-
preservation.
|
|
155
|
-
- `tests/package-smoke.test.cjs` installs the npm tarball and performs five real
|
|
156
|
-
launcher write/read/backup/reopen round trips.
|
|
157
|
-
- Grok acceptance runs capability probing, native install/list/details/enable,
|
|
158
|
-
merged inspect, MCP Doctor, migration rollback, and camelCase Hook fixtures.
|
|
121
|
+
| Claude | One print-mode call, `acceptEdits`, no persistent session, empty MCP config, explicit file and local-test tools, USD 1.00 cap | Exit 0 at USD 0.741367 with zero web requests. It changed only the task ledger/context, added `test/slug.test.cjs`, and allowed the hook to write disposable progress. `src/slug.cjs` and completion evidence remained untouched. The task test exited 1 with actual `hello,-world!` versus expected `hello-world`; both task surfaces read `in_progress`, and the Resume Note named the exact next action. |
|
|
122
|
+
| Codex | One ephemeral `workspace-write` call with sandbox network disabled and no conversation from Claude | Exit 0. It found and read the installed `ultra-dev` Skill, recovered the single task from Git and `.ultra/`, reproduced the same red, changed only the intended implementation, then passed the task test 1/1 and `npm test` 2/2. It wrote the three-command canonical evidence record and logs, completed both task status surfaces, and filled Completion and the final Resume Note. |
|
|
123
|
+
| Independent check | Local commands after both model calls | `node --test test/slug.test.cjs` passed 1/1, `npm test` passed 2/2, `git diff --check` passed, and a structural check confirmed one completed task, six evidence dimensions, three existing command-log references, and matching ledger/context state. |
|
|
124
|
+
|
|
125
|
+
The Codex process emitted non-blocking diagnostics for an older local model-cache
|
|
126
|
+
schema and an unauthenticated user-config MCP startup. No MCP result was consumed and
|
|
127
|
+
no external effect occurred; all task actions used local file and shell tools. This
|
|
128
|
+
means the drill proves file-backed Claude-to-Codex continuation even while Codex hooks
|
|
129
|
+
remain untrusted, but it does not claim that arbitrary user configuration starts
|
|
130
|
+
without unrelated host diagnostics.
|
|
131
|
+
|
|
132
|
+
The result establishes one real end-to-end example of cross-host resume without a
|
|
133
|
+
shared conversation, database, MCP authority, daemon, or generated prompt projection.
|
|
134
|
+
It does not establish output quality for every model, host, repository, or task shape.
|
|
135
|
+
Task-level `ultra-review` and commits were intentionally excluded from the drill so the
|
|
136
|
+
two host calls tested only the handoff boundary.
|
|
137
|
+
|
|
138
|
+
Two older `.ultra` evidence snapshots originally named the completed WIP by its former
|
|
139
|
+
path. The current-path artifact contract requires every reference to resolve in the
|
|
140
|
+
checkout, so those two references now point here while their 2026-08-01 status and
|
|
141
|
+
limitations remain explicitly historical. The original WIP is still recoverable from
|
|
142
|
+
their pinned source commit `3f99189bc68697262cd90444685ac2d4857139c4` with
|
|
143
|
+
`git show`; the live `docs/wip/` directory contains no unfinished document.
|
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.
|