ultra-builder-pro-cli 0.26.1 → 0.26.2
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/north-star.md +20 -31
- package/.ultra-template/project-brief.md +28 -0
- package/.ultra-template/specs/product.md +4 -0
- package/.ultra-template/specs/research-distillate.md +8 -0
- package/.ultra-template/test-report.json +1 -0
- package/CHANGELOG.md +64 -0
- package/README.md +60 -28
- package/docs/ARCHITECTURE.md +32 -9
- package/docs/ARTIFACT-AUTHORITY.md +42 -13
- package/docs/DECISIONS.md +20 -3
- package/docs/PHILOSOPHY.md +9 -7
- package/docs/SKILL-AUTHORING.md +10 -6
- package/docs/WORKFLOW-LIFECYCLE.md +99 -39
- package/hooks/README.md +7 -2
- package/hooks/_common.py +54 -5
- package/hooks/session_context.py +34 -8
- package/package.json +1 -1
- package/skills/ultra-change/SKILL.md +52 -63
- package/skills/ultra-change/references/change-contract.md +37 -5
- package/skills/ultra-delegate/SKILL.md +14 -3
- package/skills/ultra-deliver/SKILL.md +48 -43
- package/skills/ultra-deliver/references/baseline-reconciliation.md +5 -3
- package/skills/ultra-dev/SKILL.md +8 -8
- package/skills/ultra-grilling/SKILL.md +9 -9
- package/skills/ultra-init/SKILL.md +62 -87
- package/skills/ultra-init/references/brownfield-adoption.md +23 -40
- package/skills/ultra-plan/SKILL.md +29 -18
- package/skills/ultra-research/SKILL.md +91 -68
- package/skills/ultra-research/references/{03-competitive-landscape.md → 03-alternatives.md} +6 -6
- package/skills/ultra-research/references/22-success-metrics.md +8 -4
- package/skills/ultra-research/references/99-synthesis.md +8 -1
- package/skills/ultra-research/references/wayfinding.md +42 -0
- package/skills/ultra-review/SKILL.md +4 -1
- package/skills/ultra-status/SKILL.md +62 -32
- package/skills/ultra-tdd/SKILL.md +5 -2
- package/skills/ultra-test/SKILL.md +26 -12
- package/skills/ultra-test/scripts/worktree_digest.cjs +42 -8
- package/skills/ultra-think/SKILL.md +5 -10
- package/skills/ultra-think/references/interaction-boundary.md +2 -1
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
Create one contract before planning. Keep every field specific enough to verify and
|
|
4
4
|
stable enough to survive a fresh session.
|
|
5
5
|
|
|
6
|
+
The directory id is globally unique across active, archive, and abandoned Changes and
|
|
7
|
+
matches `[A-Za-z0-9][A-Za-z0-9._-]*`. It is the stable `change_id`; moving the directory
|
|
8
|
+
never changes it.
|
|
9
|
+
|
|
6
10
|
## Exact `intent.md` structure
|
|
7
11
|
|
|
8
12
|
```markdown
|
|
@@ -10,6 +14,8 @@ stable enough to survive a fresh session.
|
|
|
10
14
|
|
|
11
15
|
> **Status**: draft | accepted
|
|
12
16
|
> **Profile**: quick | standard | major | incident
|
|
17
|
+
> **Profile rationale**: <why the smallest selected profile covers the blast radius>
|
|
18
|
+
> **Risk flags**: <applicable flags, or none>
|
|
13
19
|
|
|
14
20
|
## Outcome
|
|
15
21
|
<one externally observable result>
|
|
@@ -29,6 +35,14 @@ stable enough to survive a fresh session.
|
|
|
29
35
|
### Built and Unpromised
|
|
30
36
|
### Contradictory
|
|
31
37
|
|
|
38
|
+
## Research Disposition
|
|
39
|
+
- Disposition: none | bounded | required
|
|
40
|
+
- Question: <the exact load-bearing unknown, or none>
|
|
41
|
+
- Selected lenses: <reference ids, or none>
|
|
42
|
+
- Existing evidence: <repository-relative paths and claims>
|
|
43
|
+
- Required exit evidence: <what must exist or be resolved before planning>
|
|
44
|
+
- Rationale: <why this is sufficient for this Change boundary>
|
|
45
|
+
|
|
32
46
|
## Planning Posture
|
|
33
47
|
<EXPAND | SELECTIVE | HOLD | REDUCE, rationale, and owner confirmation>
|
|
34
48
|
<!-- Scope for this Change only. Not the commitment classification: REDUCE here
|
|
@@ -93,9 +107,27 @@ acceptance set undecidable.
|
|
|
93
107
|
Record a profile rationale and every applicable risk flag. Select the smallest profile
|
|
94
108
|
whose guarantees cover the real blast radius; never use profile labels as estimates.
|
|
95
109
|
|
|
96
|
-
## Research
|
|
110
|
+
## Research Disposition
|
|
111
|
+
|
|
112
|
+
The `Disposition` value is exactly `none | bounded | required`. Use `none` with a
|
|
113
|
+
rationale when accepted evidence is sufficient. Use `bounded` for one already-framed
|
|
114
|
+
question whose smallest sufficient lenses are known; it skips Wayfinding. Use `required`
|
|
115
|
+
when several load-bearing claims or the evidence path itself remain unclear, so Research
|
|
116
|
+
may Wayfind before selecting lenses. Both name the exact question, selected or candidate
|
|
117
|
+
Research lenses, existing evidence, and required exit evidence.
|
|
118
|
+
The host model evaluates whether the named evidence exists and supports the claim; do
|
|
119
|
+
not add a `research_complete` bit, score, or workflow state. Planning waits while the
|
|
120
|
+
recorded exit evidence is unsatisfied.
|
|
121
|
+
|
|
122
|
+
## Exact abandonment closure
|
|
97
123
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
124
|
+
Before moving an owner-abandoned Change, append this exact structure to `intent.md`:
|
|
125
|
+
|
|
126
|
+
```markdown
|
|
127
|
+
## Abandonment
|
|
128
|
+
- Date:
|
|
129
|
+
- Owner decision:
|
|
130
|
+
- Reason:
|
|
131
|
+
- Reusable evidence:
|
|
132
|
+
- Recovery or successor:
|
|
133
|
+
```
|
|
@@ -10,7 +10,16 @@ semantic synthesis and remains the only writer of `.ultra/tasks.json`.
|
|
|
10
10
|
|
|
11
11
|
## Before you start
|
|
12
12
|
|
|
13
|
-
1.
|
|
13
|
+
1. Resolve exactly one active `change_id`, then select one scope and name it in
|
|
14
|
+
`instruction.md`:
|
|
15
|
+
- **task execution or continuation** — select one matching task and read its full
|
|
16
|
+
`context_file` and `## Resume Note`;
|
|
17
|
+
- **scoped Research evidence** — read the active intent's Research Disposition,
|
|
18
|
+
named question, sources, and required exit evidence;
|
|
19
|
+
- **aggregate Change review or verification** — read the exact matching task ids,
|
|
20
|
+
relevant contexts, current report or review summary, and Change diff.
|
|
21
|
+
Research and aggregate read-only scopes do not require a task. An archived or
|
|
22
|
+
abandoned task cannot be delegated as current work.
|
|
14
23
|
2. Read `CONTEXT.md`, relevant `.ultra/decisions/`, acceptance and current evidence.
|
|
15
24
|
3. Define one bounded instruction, permission set, clean Git worktree and result.
|
|
16
25
|
4. Read `references/delegation-contract.md` before writing either JSON artifact.
|
|
@@ -24,13 +33,15 @@ semantic synthesis and remains the only writer of `.ultra/tasks.json`.
|
|
|
24
33
|
- No `writable_roots` entry is `.ultra/` or sits under it, and the actual diff touches
|
|
25
34
|
nothing there.
|
|
26
35
|
- Timeout and cancellation reach a terminal failed result and release `run.lock`.
|
|
27
|
-
- The primary host verifies the result against the
|
|
36
|
+
- The primary host verifies the result against the selected scope's task acceptance,
|
|
37
|
+
Research exit evidence, or aggregate review/verification question.
|
|
28
38
|
|
|
29
39
|
## Prepare and run
|
|
30
40
|
|
|
31
41
|
Write under `.ultra/.runtime/delegations/<id>/`:
|
|
32
42
|
|
|
33
|
-
- `instruction.md`:
|
|
43
|
+
- `instruction.md`: scope type, stable `change_id`, optional task id, bounded goal,
|
|
44
|
+
sources, acceptance or exit evidence, and forbidden effects;
|
|
34
45
|
- `permission.json`: the exact file-local boundary in the contract reference;
|
|
35
46
|
- `result.json`: launcher-published terminal artifact only.
|
|
36
47
|
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra-deliver
|
|
3
|
-
description: Reconcile one
|
|
3
|
+
description: Reconcile one Change whose matching tasks are complete, run aggregate review and refactoring, refresh release documentation, and archive the local workflow record. Use when the owner wants a delivery handoff or separately authorized release effects for the active Change.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Turn current evidence into a recoverable delivery handoff
|
|
7
7
|
|
|
8
|
-
Delivery closes the local Change
|
|
9
|
-
separate effects; local readiness grants none of them automatically.
|
|
8
|
+
Delivery closes the local Change; readiness grants no commit, push, tag, publish, or deploy authority.
|
|
10
9
|
|
|
11
10
|
## Before you start
|
|
12
11
|
|
|
13
|
-
1. Read `.ultra/tasks.json
|
|
14
|
-
closing
|
|
12
|
+
1. Resolve exactly one active `change_id`. Read `.ultra/tasks.json`; every matching task
|
|
13
|
+
must be complete. Read each `context_file`'s Completion and closing Resume Note.
|
|
15
14
|
2. Read `CONTEXT.md`, relevant `.ultra/decisions/`, active Change intent and evidence.
|
|
16
|
-
3. Read `.ultra/test-report.json
|
|
17
|
-
|
|
15
|
+
3. Read `.ultra/test-report.json`, then run the Test Skill's `worktree_digest.cjs` with
|
|
16
|
+
project root and `--change-id`. Require report `task_ids` for the current Change plus
|
|
17
|
+
matching `change_id`, `git_commit`, worktree digest, and intent digest; otherwise stop.
|
|
18
18
|
|
|
19
19
|
## Definition of done
|
|
20
20
|
|
|
21
|
-
-
|
|
22
|
-
with every documentation file checked against the actual diff rather than from memory.
|
|
21
|
+
- Outcome, specs, tests, aggregate review, and every document match the actual diff.
|
|
23
22
|
- Every changed export has a non-test consumer or a recorded owner disposition.
|
|
24
23
|
- Every omitted stage is explicitly recorded with its evidence-based rationale.
|
|
25
24
|
- Build and release checks have exact commands and real results.
|
|
@@ -27,32 +26,41 @@ separate effects; local readiness grants none of them automatically.
|
|
|
27
26
|
|
|
28
27
|
## Review and refactor
|
|
29
28
|
|
|
30
|
-
Follow `../ultra-review/SKILL.md` across the aggregate Change
|
|
31
|
-
|
|
32
|
-
deep-module boundaries. Rerun every check affected by a refactor and refresh the report
|
|
33
|
-
against the resulting HEAD.
|
|
29
|
+
Follow `../ultra-review/SKILL.md` across the aggregate Change; refactor only observed
|
|
30
|
+
duplication, coupling, or boundary defects. Rerun affected checks and refresh the report.
|
|
34
31
|
|
|
35
32
|
## Reconcile the handoff
|
|
36
33
|
|
|
37
34
|
1. Compare accepted intent and task traces with delivered behavior.
|
|
38
35
|
2. Apply justified specification corrections; route any REDUCTION to the owner.
|
|
39
|
-
3.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
36
|
+
3. List documentation, compare every file with the full Change diff, and repair stale
|
|
37
|
+
behavior, examples, flags, or fields. Record bounded debt only in active
|
|
38
|
+
`delivery.md` under `## Technical Debt`.
|
|
39
|
+
4. Defer build, non-publishing package inspection, version selection, and the canonical
|
|
40
|
+
`delivery.md` until the fresh-snapshot finalization pass below. Reconciliation that
|
|
41
|
+
changed files must return through Test first.
|
|
42
|
+
|
|
43
|
+
Entry reconciliation prevents inherited drift; this exit reconciliation prevents the
|
|
44
|
+
Change from leaving new document drift.
|
|
45
|
+
|
|
46
|
+
## Reconcile, then finalize on a fresh snapshot
|
|
47
|
+
|
|
48
|
+
Delivery has two observable passes, not a hidden state machine:
|
|
49
|
+
|
|
50
|
+
1. Reconcile and review. If this pass changes source, tests, task/context/evidence,
|
|
51
|
+
specifications, maintained documentation, or `intent.md`, stop after writing the
|
|
52
|
+
reconciled files. The existing report is stale; recommend `ultra-test` and make no
|
|
53
|
+
delivery or release claim.
|
|
54
|
+
2. After an unchanged pass or fresh Test, recheck Change/task/HEAD/product/intent
|
|
55
|
+
identities. Apply the gate, run build and non-publishing package inspection, determine
|
|
56
|
+
version impact, and use `references/baseline-reconciliation.md` for canonical
|
|
57
|
+
`delivery.md`. Archive the Change. Excluded delivery metadata and the directory move
|
|
58
|
+
cannot self-invalidate the product digest; intent stays independently bound.
|
|
59
|
+
|
|
60
|
+
Do not draft a success narrative around stale evidence. A current `passed: false`
|
|
61
|
+
report may still reach finalization only after every finding has an explicit owner
|
|
62
|
+
disposition and the one hard gate below is clear; `passed` is evidence summary, not a
|
|
63
|
+
second mechanical release gate.
|
|
56
64
|
|
|
57
65
|
## The one delivery gate
|
|
58
66
|
|
|
@@ -62,27 +70,24 @@ attach itself to ordinary repository packaging outside this workflow.
|
|
|
62
70
|
Everything else in this workflow reports and hands over. This is the exception, and it
|
|
63
71
|
is deliberately narrow:
|
|
64
72
|
|
|
65
|
-
**Do not package while an export this Change added or changed has no
|
|
66
|
-
and no recorded owner disposition.**
|
|
73
|
+
**Do not produce a release package while an export this Change added or changed has no
|
|
74
|
+
non-test consumer and no recorded owner disposition.**
|
|
67
75
|
|
|
68
76
|
| | |
|
|
69
77
|
|---|---|
|
|
70
78
|
| Invariant | Every changed export is either reachable from a non-test caller or explicitly declared internal |
|
|
71
|
-
| Fact source | The Wiring Verification
|
|
72
|
-
| Blocked effect |
|
|
73
|
-
| Repair | Wire the export to its caller, or record the owner's disposition in
|
|
79
|
+
| Fact source | The Wiring Verification finding and its owner disposition in `.ultra/test-report.json`, bound to the current Change id, task ids, intent, HEAD, and product-worktree digest — the audit already found these; this is not a fresh opinion |
|
|
80
|
+
| Blocked effect | Release-package creation and the separately authorized release effects after it. A non-publishing package inspection is diagnostic; local commit and archival are untouched |
|
|
81
|
+
| Repair | Wire the export to its caller, or record the owner's disposition on the finding in `.ultra/test-report.json`, then carry it into `delivery.md`. Either one clears the gate |
|
|
74
82
|
|
|
75
|
-
"Written but never connected"
|
|
76
|
-
|
|
77
|
-
ignored exactly when it matters, because everything else already reads as done. The gate
|
|
78
|
-
sits at the last step rather than at edit time on purpose — a gate early in the loop
|
|
79
|
-
gets escaped by damaging the work.
|
|
83
|
+
"Written but never connected" can leave tests and review green while the feature is
|
|
84
|
+
absent. Keep this gate at finalization, after the audit can distinguish unfinished work.
|
|
80
85
|
|
|
81
86
|
## Archive locally
|
|
82
87
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
After the fresh check, `git mv` active `<id>` to archive. The id stays stable in task
|
|
89
|
+
rows; never store a movable intent path or create a second delivery summary. Archived
|
|
90
|
+
delivery, test report, evidence, and Git history are the handoff.
|
|
86
91
|
|
|
87
92
|
For separately authorized effects, perform and verify each independently. Ask for
|
|
88
93
|
authority at the point of effect: commit, then push, then tag, package publication and
|
|
@@ -34,6 +34,8 @@ the Change is active and moves with the directory when archived.
|
|
|
34
34
|
|
|
35
35
|
Every semantic update cites a repository-relative `path#anchor`. A reduction requires
|
|
36
36
|
the owner decision before the affected specification changes. Exact command evidence
|
|
37
|
-
must match the
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
must match the stable Change id, exact current task ids, intent digest, HEAD, and
|
|
38
|
+
product-worktree digest identified by `.ultra/test-report.json`; stale results stay
|
|
39
|
+
visible and never become a pass. Reconcile before finalizing. If reconciliation changes
|
|
40
|
+
semantic or product files, obtain a fresh Test snapshot before writing final delivery
|
|
41
|
+
metadata or archiving. Do not create a second JSON or Markdown delivery summary.
|
|
@@ -5,13 +5,13 @@ description: Carry one planned task from a written implementation plan through r
|
|
|
5
5
|
|
|
6
6
|
# Take one task from plan to recorded evidence
|
|
7
7
|
|
|
8
|
-
The model owns
|
|
9
|
-
contract, the evidence, and everything needed to resume.
|
|
8
|
+
The model owns code reasoning and edits; repository files own the resumable contract.
|
|
10
9
|
|
|
11
10
|
## Before you start
|
|
12
11
|
|
|
13
|
-
1.
|
|
14
|
-
|
|
12
|
+
1. Resolve exactly one active `change_id`; more than one is a repository conflict. Read
|
|
13
|
+
`.ultra/tasks.json`, choose one matching `in_progress` or dependency-ready task, then read
|
|
14
|
+
its full `context_file`, especially `## Resume Note`.
|
|
15
15
|
2. Read `CONTEXT.md` for vocabulary, and the `.ultra/decisions/` entries the task
|
|
16
16
|
context names.
|
|
17
17
|
3. Read `.ultra/north-star.md` and the task's acceptance criteria. If you cannot
|
|
@@ -22,10 +22,9 @@ read `references/debugging.md` and establish the earliest incorrect state before
|
|
|
22
22
|
|
|
23
23
|
## Definition of done
|
|
24
24
|
|
|
25
|
-
- All six evidence dimensions
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
and then read back — a one-sided write breaks resume on another host.
|
|
25
|
+
- All six evidence dimensions answer the checkable rules below.
|
|
26
|
+
- `tasks.json` and context status agree after write/read-back.
|
|
27
|
+
- The task still names the active `change_id`; historical unfinished work stays out.
|
|
29
28
|
- The context file carries a Completion entry and a rewritten Resume Note.
|
|
30
29
|
- A task-level review has run and its blocking findings are resolved.
|
|
31
30
|
|
|
@@ -46,6 +45,7 @@ because what is worth restructuring only becomes visible after several slices.
|
|
|
46
45
|
|
|
47
46
|
Development ends when the task's acceptance commands pass, not when the code looks
|
|
48
47
|
finished. Resolve the context's **Change Acceptance IDs** against the active `intent.md`
|
|
48
|
+
for `<change_id>`
|
|
49
49
|
and use each named row's executable `Verification`. Commands under the context's
|
|
50
50
|
Acceptance Criteria may add task-local checks; they do not replace the Change mapping.
|
|
51
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra-grilling
|
|
3
|
-
description:
|
|
3
|
+
description: Turn caller-named missing owner decisions into confirmed answers, one question per turn and each carrying a recommendation. Use when Init needs a raw brief field, Research needs an owner decision, or Change and Plan need an explicit boundary or acceptance criterion.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Turn a vague ask into a decision list the owner has explicitly confirmed
|
|
@@ -12,8 +12,8 @@ finished work proves otherwise. It serves Goal 1, Intent Fidelity.
|
|
|
12
12
|
## Before you start
|
|
13
13
|
|
|
14
14
|
1. Reread what the owner said in the current request, verbatim.
|
|
15
|
-
2. Read `.ultra/north-star.md
|
|
16
|
-
|
|
15
|
+
2. Read `.ultra/project-brief.md`, `.ultra/north-star.md`, and `CONTEXT.md` where they
|
|
16
|
+
exist. Raw intake is reusable input; accepted wording must not be re-asked.
|
|
17
17
|
3. Look up every fact you can reach on your own: repository files, Git history,
|
|
18
18
|
installed dependencies, tool output.
|
|
19
19
|
|
|
@@ -29,8 +29,8 @@ have answered by reading the repository spends the one input only they can give.
|
|
|
29
29
|
never skipped because the original wording sounded clear.
|
|
30
30
|
- Each answer carries the owner's confirmation, rather than something that
|
|
31
31
|
sounded like agreement.
|
|
32
|
-
- The
|
|
33
|
-
decision, each with the options rejected and why.
|
|
32
|
+
- The caller owns the final artifact and receives a decision list it can write: one
|
|
33
|
+
line per decision, each with the options rejected and why.
|
|
34
34
|
|
|
35
35
|
## Extract, reframe, then ask
|
|
36
36
|
|
|
@@ -52,7 +52,7 @@ product. Offer the reframe, never assert it, and treat a correction as the bette
|
|
|
52
52
|
outcome — "no, it really is just the briefing" is a constraint you did not have a
|
|
53
53
|
minute ago. Read `references/reframing.md` for when it applies and how it fails.
|
|
54
54
|
|
|
55
|
-
**Then ask** only what the confirmed reframe leaves open.
|
|
55
|
+
**Then ask** only what the confirmed reframe leaves open; the caller sets the semantic depth, so Init stops at the raw outline and leaves baseline questions to Research.
|
|
56
56
|
|
|
57
57
|
## One question per turn
|
|
58
58
|
|
|
@@ -95,9 +95,9 @@ inferred consensus.
|
|
|
95
95
|
|
|
96
96
|
## How the loop ends
|
|
97
97
|
|
|
98
|
-
Every ending hands back the same
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
Every ending hands back the same result: decisions written one per line, each with
|
|
99
|
+
the options rejected and the reason they lost. The caller alone chooses the canonical
|
|
100
|
+
destination; Grilling never promotes an answer into project authority by itself.
|
|
101
101
|
|
|
102
102
|
- **Resolved** — every required field answered or explicitly deferred.
|
|
103
103
|
- **Stalled** — two consecutive turns add no newly confirmed decision. Hand back
|
|
@@ -1,119 +1,94 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra-init
|
|
3
|
-
description:
|
|
3
|
+
description: Create or recover Ultra's repository-local skeleton and raw Project Brief without performing product research. Use when `.ultra` is absent or partial in a new or existing codebase and later workflows need stable file paths, preserved authority, and Git.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Create the skeleton and capture only the initial project outline
|
|
7
7
|
|
|
8
|
-
Initialization
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
The dividing line against research is **authorization versus claim**. What the
|
|
13
|
-
owner authorizes comes out of their head and evidence cannot overturn it. What
|
|
14
|
-
research collects is a claim about the outside world, which evidence can confirm
|
|
15
|
-
or refute. A technology choice is a claim, so it is not initialization's business
|
|
16
|
-
— and a new project has no configuration files to read anyway.
|
|
8
|
+
Initialization establishes places for later authority and records raw owner intake. It
|
|
9
|
+
does not validate the problem, establish a North Star, build a product or architecture
|
|
10
|
+
baseline, settle domain language, choose a Change, or start another public workflow.
|
|
17
11
|
|
|
18
12
|
## Before you start
|
|
19
13
|
|
|
20
|
-
1.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
1. If `.ultra/changes/active/` exists, resolve at most one active `change_id`. Read
|
|
15
|
+
`.ultra/tasks.json` if it exists, plus the `context_file` and closing `## Resume Note`
|
|
16
|
+
of unfinished tasks matching that id. Historical unfinished rows do not turn a
|
|
17
|
+
partial skeleton into current work. A partial `.ultra/` is recovery work.
|
|
18
|
+
2. Read `.ultra/project-brief.md`, `.ultra/north-star.md`, `CONTEXT.md`, and relevant
|
|
19
|
+
`.ultra/decisions/` when they exist. Preserve accepted authority byte-for-byte.
|
|
20
|
+
3. Establish the repository root, Git state, and whether meaningful code or maintained
|
|
21
|
+
documentation exists from the filesystem. Do not ask the owner for those facts.
|
|
25
22
|
|
|
26
23
|
## Definition of done
|
|
27
24
|
|
|
28
|
-
- `.ultra/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
- `.git` exists. Any initial commit is a separately authorized delivery effect.
|
|
37
|
-
- Nothing is invented: what is unknown says `[NEEDS CLARIFICATION]`.
|
|
38
|
-
|
|
39
|
-
## Which route
|
|
25
|
+
- `.ultra/project-brief.md` contains raw owner intake: one line, a broad outline,
|
|
26
|
+
explicit inputs already supplied, and open questions handed to Research.
|
|
27
|
+
- For a new skeleton, an empty North Star and the three specification skeletons exist.
|
|
28
|
+
Recovery preserves any populated authority; Init does not fill semantic sections or
|
|
29
|
+
create `CONTEXT.md`.
|
|
30
|
+
- Every packaged path was read back after copying, while every pre-existing file stayed
|
|
31
|
+
byte-identical.
|
|
32
|
+
- `.git` exists. Commit, push, remote creation, and publication remain separate effects.
|
|
40
33
|
|
|
41
|
-
|
|
34
|
+
## Classify only for preservation
|
|
42
35
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
| Neither | Greenfield | Write everything |
|
|
36
|
+
Use `references/brownfield-adoption.md` when source, runtime configuration, tests, or
|
|
37
|
+
maintained product documentation already exist. Classification changes what must be
|
|
38
|
+
preserved and what Research should inspect; it never authorizes Init to write observed
|
|
39
|
+
product behavior into a specification.
|
|
48
40
|
|
|
49
|
-
|
|
50
|
-
are evidence or an explicitly retained authority; they never justify omitting the
|
|
51
|
-
canonical specification skeleton that downstream workflows require.
|
|
41
|
+
## Draw out the brief, then stop
|
|
52
42
|
|
|
53
|
-
|
|
43
|
+
Follow `../ultra-grilling/SKILL.md` with only these required fields:
|
|
54
44
|
|
|
55
|
-
|
|
56
|
-
the owner cannot state what they want up front. Start from what they already said
|
|
57
|
-
when invoking you, restate it for confirmation, and ask only about what is
|
|
58
|
-
genuinely missing. Five things come out of it:
|
|
59
|
-
|
|
60
|
-
| What you draw out | Where it lands |
|
|
45
|
+
| Raw intake | Project Brief section |
|
|
61
46
|
|---|---|
|
|
62
|
-
| What
|
|
63
|
-
| What
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
| **What you already know you are unsure about** | `discovery.md` — research's priority queue |
|
|
47
|
+
| What the owner wants to build, in one sentence and their words | `## One-line` |
|
|
48
|
+
| What it is, broadly for whom or what, intended result, broad boundary | `## Initial Outline` |
|
|
49
|
+
| Constraints, materials, and decisions the owner already volunteered | `## Explicit Inputs` |
|
|
50
|
+
| Questions already visible but requiring evidence or deeper decisions | `## Open Questions for Research` |
|
|
67
51
|
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
Ask only enough to distinguish materially different outlines. If an answer would define
|
|
53
|
+
a problem, actor evidence, desired outcome, success measure, product strategy, accepted
|
|
54
|
+
constraint, domain term, requirement, or architecture, record it as an input or open
|
|
55
|
+
question and stop drilling. Research owns that maturation and must not re-ask an answer
|
|
56
|
+
unless evidence conflicts with it.
|
|
70
57
|
|
|
71
|
-
##
|
|
58
|
+
## Write and recover the skeleton
|
|
72
59
|
|
|
73
60
|
Resolve this loaded Skill's directory, then run
|
|
74
|
-
`node <ultra-init-skill-dir>/scripts/init_project.cjs --project <repository-root>`.
|
|
75
|
-
only missing files from `assets/project-template`, preserves every
|
|
76
|
-
file
|
|
77
|
-
placeholders from verified facts and owner decisions.
|
|
61
|
+
`node <ultra-init-skill-dir>/scripts/init_project.cjs --project <repository-root>`.
|
|
62
|
+
The script copies only missing files from `assets/project-template`, preserves every
|
|
63
|
+
existing file, and reads the complete result back.
|
|
78
64
|
|
|
79
65
|
```text
|
|
80
|
-
.ultra/
|
|
81
|
-
.ultra/
|
|
82
|
-
.ultra/
|
|
83
|
-
.ultra/
|
|
84
|
-
.ultra/{
|
|
85
|
-
|
|
66
|
+
.ultra/project-brief.md raw intake and initial outline
|
|
67
|
+
.ultra/north-star.md empty Research-owned steering contract
|
|
68
|
+
.ultra/specs/{product,architecture,discovery}.md empty specification skeletons
|
|
69
|
+
.ultra/specs/research-distillate.md empty Research synthesis skeleton
|
|
70
|
+
.ultra/{tasks.json,test-report.json} empty or not-yet-run ledgers
|
|
71
|
+
.ultra/{contexts,decisions,evidence,research}/
|
|
72
|
+
.ultra/changes/{active,archive,abandoned}/
|
|
86
73
|
```
|
|
87
74
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
**what can be read out of repository files, you fill; what needs investigation,
|
|
93
|
-
research fills.**
|
|
75
|
+
For a legacy `north-star.md` containing `## One-line`, keep that file byte-identical.
|
|
76
|
+
When the new Project Brief is still unresolved, copy the legacy one-line verbatim into
|
|
77
|
+
it and list legacy hard constraints under Explicit Inputs without assigning new IDs.
|
|
78
|
+
Research later proposes the accepted North Star; it never rewrites history silently.
|
|
94
79
|
|
|
95
|
-
Git
|
|
96
|
-
|
|
97
|
-
If `.git` is absent, run `git init`. Report the uncommitted initialized files and ask
|
|
98
|
-
for commit authority only if the owner wants that separate effect now.
|
|
80
|
+
Git supplies revision identity, history, comparison, archive moves, and rollback. Run
|
|
81
|
+
`git init` only when `.git` is absent, then report the uncommitted scaffold.
|
|
99
82
|
|
|
100
83
|
## When the owner decides
|
|
101
84
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
Where the host cannot ask at all, leave the one-line goal empty and say plainly
|
|
107
|
-
that it is empty. Do not infer it from the directory name. An empty one-line goal
|
|
108
|
-
is a **blocking** state, not a note: goal injection, boundary read-back and a
|
|
109
|
-
Change's touched-constraints field all read from it, so planning and development
|
|
110
|
-
must not start until it is filled. Say that too, and recommend rerunning this
|
|
111
|
-
skill on a host that can ask.
|
|
85
|
+
The owner confirms the one-line outline and any replacement of healthy authority. Where
|
|
86
|
+
the host cannot ask, leave unresolved fields explicit and recommend resuming Init on a
|
|
87
|
+
host that can; do not infer intent from the directory name. Recommend Research after a
|
|
88
|
+
usable brief exists, but do not invoke it.
|
|
112
89
|
|
|
113
90
|
## References
|
|
114
91
|
|
|
115
|
-
- `../ultra-grilling/SKILL.md` —
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
- `../ultra-think/references/autonomy-boundary.md` — read before touching
|
|
119
|
-
authority that already exists.
|
|
92
|
+
- `../ultra-grilling/SKILL.md` — read before the first missing brief field.
|
|
93
|
+
- `references/brownfield-adoption.md` — read when maintained behavior already exists.
|
|
94
|
+
- `../ultra-think/references/autonomy-boundary.md` — read before replacing authority.
|