@zalom/plastic 1.14.1 → 2.0.0-alpha.10
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/PLASTIC.md +101 -294
- package/README.md +5 -6
- package/agents/plastic-advisor.md +18 -17
- package/agents/plastic-enforcer.md +57 -69
- package/agents/plastic-executor.md +34 -20
- package/agents/plastic-faux-advisor.md +18 -18
- package/bin/lib/context_budget.rb +453 -0
- package/bin/plastic-bench +78 -0
- package/config_asks.yml +38 -0
- package/hooks/capture +4 -0
- package/hooks/close +5 -0
- package/hooks/hooks.json +14 -42
- package/hooks/message-display +81 -0
- package/hooks/record +4 -0
- package/hooks/savepoint +5 -5
- package/package.json +3 -2
- package/scripts/agent-report +15 -10
- package/scripts/append-ledger +208 -0
- package/scripts/codex-hook +78 -90
- package/scripts/dashboard.rb +43 -14
- package/scripts/day-summary +53 -0
- package/scripts/doctor.rb +269 -43
- package/scripts/end-intent +170 -76
- package/scripts/exec-worktree +11 -20
- package/scripts/file-session-intent +61 -0
- package/scripts/hook-capture +255 -0
- package/scripts/hook-close +36 -0
- package/scripts/hook-message-display +74 -0
- package/scripts/hook-record +157 -0
- package/scripts/hook-savepoint +45 -0
- package/scripts/hook-session-start +128 -12
- package/scripts/install.rb +8 -6
- package/scripts/intent-screen +77 -0
- package/scripts/lib/agent_models.rb +1 -7
- package/scripts/lib/arm.rb +308 -0
- package/scripts/lib/backfill_intent.rb +316 -0
- package/scripts/lib/bridge.rb +24 -1597
- package/scripts/lib/compact_instructions.rb +56 -0
- package/scripts/lib/day_summary.rb +211 -0
- package/scripts/lib/doctor_core.rb +66 -88
- package/scripts/lib/doctor_session_ledger.rb +158 -0
- package/scripts/lib/exec_worktree.rb +14 -60
- package/scripts/lib/handoff.rb +184 -0
- package/scripts/lib/harness_text.rb +5 -4
- package/scripts/lib/hook_registry.rb +57 -106
- package/scripts/lib/insights.rb +3 -4
- package/scripts/lib/installer_core.rb +136 -41
- package/scripts/lib/intent_screen.rb +309 -0
- package/scripts/lib/intent_screen_ansi.rb +262 -0
- package/scripts/lib/lock.rb +6 -26
- package/scripts/lib/message_display.rb +290 -0
- package/scripts/lib/outcome_guard.rb +7 -5
- package/scripts/lib/project_validator.rb +30 -1
- package/scripts/lib/report_screen.rb +648 -0
- package/scripts/lib/roadmap_queue.rb +3 -3
- package/scripts/lib/roadmap_savepoint.rb +1 -1
- package/scripts/lib/rule_catalog.rb +6 -3
- package/scripts/lib/savepoint.rb +334 -0
- package/scripts/lib/scaffold_intent.rb +13 -179
- package/scripts/lib/screen_paint.rb +276 -0
- package/scripts/lib/session_backfill.rb +184 -0
- package/scripts/lib/session_close.rb +104 -0
- package/scripts/lib/session_git.rb +500 -0
- package/scripts/lib/session_ledger.rb +621 -0
- package/scripts/lib/store_discovery.rb +1 -1
- package/scripts/lib/store_provisioning.rb +1 -1
- package/scripts/maintenance-run +7 -7
- package/scripts/new-intent +63 -4
- package/scripts/plastic-lock +101 -41
- package/scripts/promote-session-item +150 -0
- package/scripts/read-config +3 -0
- package/scripts/rebuild-graph +1 -1
- package/scripts/report-screen +120 -0
- package/scripts/roadmap-next +2 -2
- package/scripts/rollback.rb +48 -3
- package/scripts/savepoint-note +67 -0
- package/scripts/scaffold-intent +37 -63
- package/scripts/session-commit +116 -0
- package/scripts/spawn-preamble +14 -7
- package/scripts/update.rb +7 -3
- package/scripts/write-handoff +60 -0
- package/skills/agent-advisor/SKILL.md +3 -3
- package/skills/agent-advisor/references/advisor-protocol.md +20 -20
- package/skills/auto/SKILL.md +223 -317
- package/skills/auto/evals/evals.json +10 -10
- package/skills/auto/references/agent-architecture.md +102 -90
- package/skills/auto/references/agent-report-contract.md +4 -21
- package/skills/auto/references/end-tail.md +47 -53
- package/skills/auto/references/human-report-contract.md +62 -56
- package/skills/conventions/SKILL.md +1 -3
- package/skills/conventions/references/lifecycle-and-savepoints.md +35 -1
- package/skills/conventions/references/locks-and-worktrees.md +62 -58
- package/skills/conventions/references/maintenance-and-revisions.md +12 -12
- package/skills/dashboard/SKILL.md +1 -1
- package/skills/direct/SKILL.md +66 -0
- package/skills/direct/references/request-signals.md +59 -0
- package/skills/doctor/SKILL.md +58 -11
- package/skills/doctor/report.md +3 -1
- package/skills/install/SKILL.md +11 -9
- package/skills/intent-continuing/SKILL.md +142 -91
- package/skills/intent-continuing/references/boarding-matrix.md +34 -0
- package/skills/intent-continuing/references/context-management.md +3 -3
- package/skills/intent-creating/SKILL.md +2 -2
- package/skills/intent-creating/references/lifecycle.md +1 -1
- package/skills/intent-ending/SKILL.md +34 -37
- package/skills/intent-ending/evals/evals.json +4 -4
- package/skills/intent-executing/SKILL.md +15 -46
- package/skills/intent-executing/plan-reviewer-prompt.md +39 -0
- package/skills/intent-speccing/SKILL.md +108 -51
- package/skills/intent-speccing/evals/evals.json +5 -5
- package/skills/intent-speccing/references/per-section-fill-rules.md +4 -4
- package/skills/intent-speccing/references/self-verify-checklist.md +1 -2
- package/skills/project-creating/SKILL.md +1 -1
- package/skills/releasing/SKILL.md +7 -8
- package/skills/tutorial/SKILL.md +2 -2
- package/skills/tutorial/references/track-1-guided.md +16 -18
- package/skills/tutorial/references/track-2-auto.md +12 -13
- package/skills/tutorial/references/track-3-projects-and-roadmaps.md +2 -2
- package/templates/agents.md +4 -7
- package/templates/config.yml +5 -0
- package/templates/intent-screen.md +17 -0
- package/templates/outcome.md +14 -1
- package/templates/project.yml +7 -0
- package/templates/report-state.md +11 -0
- package/templates/roadmap.md +1 -1
- package/templates/savepoint.md +2 -2
- package/templates/session-intent.md +29 -0
- package/agents/plastic-brainstorming.md +0 -48
- package/agents/plastic-future-intent-researcher.md +0 -35
- package/agents/plastic-intent-curator.md +0 -47
- package/agents/plastic-intent-discovery.md +0 -43
- package/agents/plastic-planner.md +0 -56
- package/agents/plastic-spec-specialist.md +0 -53
- package/hooks/auto-arm +0 -5
- package/hooks/bash-gate +0 -3
- package/hooks/continue +0 -31
- package/hooks/edit-gates +0 -3
- package/hooks/future-intent-check +0 -25
- package/hooks/gate-check +0 -12
- package/hooks/power-tools +0 -8
- package/scripts/hook-auto-arm +0 -51
- package/scripts/hook-bash-gate +0 -78
- package/scripts/hook-code-gate +0 -38
- package/scripts/hook-continue +0 -48
- package/scripts/hook-create-gate +0 -51
- package/scripts/hook-edit-gates +0 -58
- package/scripts/hook-future-intent-check +0 -90
- package/scripts/hook-gate-check +0 -169
- package/scripts/hook-links-gate +0 -54
- package/scripts/hook-lock-gate +0 -47
- package/scripts/hook-power-tools +0 -38
- package/scripts/hook-savepoint-pre +0 -32
- package/scripts/lib/codex_edit_gates.rb +0 -138
- package/scripts/lib/edit_gates.rb +0 -398
- package/scripts/lib/links_gate.rb +0 -140
- package/scripts/lib/qmd_hook.rb +0 -41
- package/scripts/lib/spec_header.rb +0 -83
- package/scripts/lib/start_intent.rb +0 -296
- package/scripts/start-intent +0 -89
- package/skills/_active-intent-gate.md +0 -26
- package/skills/auto/references/tiers.md +0 -100
- package/skills/continuing/SKILL.md +0 -34
- package/skills/continuing/evals/evals.json +0 -91
- package/skills/conventions/references/gates-and-enforcement.md +0 -53
- package/skills/conventions/references/tiers-and-dispatch.md +0 -135
- package/skills/doctor/references/gates-stuck-detection.md +0 -43
- package/skills/intent-brainstorming/SKILL.md +0 -118
- package/skills/intent-brainstorming/evals/evals.json +0 -67
- package/skills/intent-continuing/evals/evals.json +0 -145
- package/skills/intent-discovering/SKILL.md +0 -56
- package/skills/intent-grilling/SKILL.md +0 -108
- package/skills/intent-linking/SKILL.md +0 -128
- package/skills/intent-linking/evals/evals.json +0 -22
- package/skills/intent-linking/references/zettelkasten.md +0 -45
- package/skills/intent-locking/SKILL.md +0 -64
- package/skills/intent-planning/SKILL.md +0 -145
- package/skills/intent-planning/evals/evals.json +0 -81
- package/skills/intent-planning/references/plan-format.md +0 -130
- package/skills/intent-researching/SKILL.md +0 -123
- package/skills/intent-researching/evals/evals.json +0 -22
- package/skills/intent-savepoint/SKILL.md +0 -83
- package/skills/intent-savepoint/references/context-management.md +0 -32
- package/skills/intent-starting/SKILL.md +0 -151
- package/skills/intent-starting/evals/evals.json +0 -117
- package/skills/intent-starting/references/boarding-matrix.md +0 -35
- package/skills/project-continuing/SKILL.md +0 -119
- package/skills/project-continuing/evals/evals.json +0 -100
- package/skills/roadmap-continuing/SKILL.md +0 -89
- package/skills/roadmap-continuing/evals/evals.json +0 -82
- package/skills/skill-creating/SKILL.md +0 -75
- package/skills/skill-creating/evals/evals.json +0 -108
- package/skills/skill-creating/references/agents.md +0 -168
- package/skills/skill-creating/references/defaults-first.md +0 -23
- package/skills/skill-creating/references/evals.md +0 -41
- package/skills/skill-creating/references/hooks.md +0 -251
- package/skills/skill-creating/references/progressive-disclosure.md +0 -176
- package/skills/skill-creating/references/scripts.md +0 -166
- package/skills/skill-creating/references/skills.md +0 -169
- package/skills/skill-creating/scripts/scaffold.rb +0 -313
- package/skills/skill-evaluating/SKILL.md +0 -141
- package/skills/skill-evaluating/assets/eval-template.json +0 -12
- package/skills/skill-evaluating/evals/evals.json +0 -75
- package/skills/skill-evaluating/references/convention-checks.md +0 -76
- package/skills/skill-evaluating/references/eval-methodology.md +0 -154
- package/skills/store-curating/SKILL.md +0 -64
- package/skills/store-curating/evals/evals.json +0 -38
- package/skills/store-indexing/SKILL.md +0 -93
- package/skills/store-indexing/evals/evals.json +0 -22
- package/skills/store-indexing/references/zettelkasten-linking.md +0 -32
- package/skills/store-provisioning/SKILL.md +0 -55
- /package/skills/{project-continuing → intent-continuing}/references/board-fill.md +0 -0
- /package/skills/{roadmap-continuing → intent-continuing}/references/liveness-ranking.md +0 -0
- /package/skills/{intent-brainstorming → intent-speccing}/references/design-principles.md +0 -0
|
@@ -24,7 +24,7 @@ installed directory.
|
|
|
24
24
|
| # | Step | Who does it |
|
|
25
25
|
|---|---|---|
|
|
26
26
|
| 0 | Precondition check | You, before touching outcome.md |
|
|
27
|
-
| 1 | outcome
|
|
27
|
+
| 1 | backfill spec/plan/action/outcome from the record, self-check, intent-file `## Outcome` summary | `scripts/end-intent` |
|
|
28
28
|
| 2 | INDEX.md terminal move (Active -> Completed/Abandoned) | `scripts/end-intent` |
|
|
29
29
|
| 3 | savepoint `Done` bookend | `scripts/end-intent` |
|
|
30
30
|
| 4 | store auto-commit | `scripts/end-intent` |
|
|
@@ -39,45 +39,42 @@ deliveries; separately, one session delivered four intents back to back and
|
|
|
39
39
|
never ran the old step-5 one-liner at all, intent 188). Never restate
|
|
40
40
|
outcome/INDEX/savepoint/disarm prose inline again; call `scripts/end-intent`.
|
|
41
41
|
|
|
42
|
-
### Step 0. Precondition (the
|
|
42
|
+
### Step 0. Precondition (the record is what gets backfilled)
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
every section, with no awareness of which section a box lives in. ANY
|
|
48
|
-
unchecked box anywhere blocks the outcome.md write; there is no exemption
|
|
49
|
-
for orchestrator-owned or completion-tracking items.
|
|
44
|
+
Nothing refuses the close any more (the 1.x write-time gate and `end-intent`'s
|
|
45
|
+
exit-6 structure gate were retired in 2.0, intents 302 and 308). What you leave
|
|
46
|
+
on disk is what the record becomes, so before the call:
|
|
50
47
|
|
|
51
48
|
1. Read checklist.md. Tick every item as it is actually performed, including
|
|
52
49
|
an item that describes the close itself: running this very procedure IS
|
|
53
|
-
what that item describes
|
|
54
|
-
|
|
55
|
-
checklist.md must read 100 percent checked; there is no other way past
|
|
56
|
-
the gate.
|
|
50
|
+
what that item describes. An unchecked box is not a refusal, it is a
|
|
51
|
+
reported gap that lands verbatim in the backfilled `## Follow-ups`.
|
|
57
52
|
2. Confirm every acceptance criterion in spec.md is verifiable (tests pass,
|
|
58
53
|
or the manual check described in its HOW line was actually run).
|
|
59
|
-
3.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
`##
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
`ruby ~/.plastic/scripts/maintenance-run --tool project-links --intent <id> --apply`.
|
|
67
|
-
- a savepoint issue - advisory only (WARN, never blocks): run
|
|
68
|
-
`plastic-intent-savepoint` to rebuild via `Bridge.rebuild_savepoint` if
|
|
69
|
-
you want it clean, but it never refuses the close on its own.
|
|
70
|
-
Then re-run `scripts/end-intent`.
|
|
54
|
+
3. Decide what you have to say. A spec.md, plan.md, action file, or outcome.md
|
|
55
|
+
left as the scaffold placeholder is written from the record by
|
|
56
|
+
`scripts/end-intent` (the intent file's `## Intent`, `### Decisions`, and
|
|
57
|
+
`## Insights`, the checklist, the diff on the intent's own worktree). A
|
|
58
|
+
file you wrote, even under a still-present sentinel, is never touched.
|
|
59
|
+
Write outcome.md yourself when the summary deserves more than the
|
|
60
|
+
`--outcome-summary` line; otherwise let the backfill carry it.
|
|
71
61
|
|
|
72
62
|
### Step 1-5. Run `scripts/end-intent`
|
|
73
63
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
64
|
+
Author outcome.md yourself when it deserves prose: copy `templates/outcome.md`,
|
|
65
|
+
set the frontmatter to `disposition: delivered` or `disposition: abandoned`, and
|
|
66
|
+
fill `## Summary`, `## Delivered`, `## Verification`, `## Follow-ups`. `## Delivered` is a
|
|
67
|
+
`| Row | What |` table: one row per thing delivered, in plain wording a reader
|
|
68
|
+
recognizes, not a method name or an implementation summary (that detail
|
|
69
|
+
belongs in `## Summary`). Each row's label must appear as a standalone token
|
|
70
|
+
in an action-file heading (`### S1 - ...` proves row S1); that heading's
|
|
71
|
+
matrix rows become the row's Proven-by cell on `report-screen delivered`'s
|
|
72
|
+
post-delivery screen. `## Needs you` is the literal None or a
|
|
73
|
+
`| N | What | Why |` table. On abandon, `## Summary` states the abandonment reason and the trail (see Pivot
|
|
74
|
+
below). A placeholder outcome.md is backfilled from the record instead, with the
|
|
75
|
+
close's disposition and the `--outcome-summary` line as its summary. Also author
|
|
79
76
|
the rich INDEX entry note now (a short line in the store's existing
|
|
80
|
-
Completed/Abandoned convention: mode
|
|
77
|
+
Completed/Abandoned convention: mode, what shipped or why it was
|
|
81
78
|
abandoned, suite result, merge/spawn notes); content authoring stays with
|
|
82
79
|
you, `--index-note` only appends what you write.
|
|
83
80
|
|
|
@@ -91,9 +88,11 @@ ruby ~/.plastic/scripts/end-intent \
|
|
|
91
88
|
--index-note "<rich Completed/Abandoned entry description>"
|
|
92
89
|
```
|
|
93
90
|
|
|
94
|
-
This does all of steps 1-5 in order:
|
|
95
|
-
|
|
96
|
-
|
|
91
|
+
This does all of steps 1-5 in order: backfills every missing or placeholder
|
|
92
|
+
spec.md, plan.md, action file, and outcome.md from the record (never a file
|
|
93
|
+
you wrote), runs doctor's per-intent structure check and the outcome guard as
|
|
94
|
+
a self-check that reports on stderr and proceeds (an unchecked box, a
|
|
95
|
+
malformed intent file, a wrong-disposition outcome.md you wrote), stamps the
|
|
97
96
|
intent file's `## Outcome` section, moves the INDEX.md
|
|
98
97
|
line from `## Active` to `## Completed` or `## Abandoned` (dated today,
|
|
99
98
|
idempotent, accepting either a real em dash or a plain hyphen as the id/
|
|
@@ -127,8 +126,7 @@ correctly, for the first time on that path (D7).
|
|
|
127
126
|
|
|
128
127
|
Exit codes: 0 success (the intent is closed AND its delivery lock is gone);
|
|
129
128
|
1 a usage or resolution failure, OR an INDEX id that resolves to neither
|
|
130
|
-
`## Active` nor the terminal section;
|
|
131
|
-
outcome.md and re-run, nothing was written); 3 steps 1-4 already committed
|
|
129
|
+
`## Active` nor the terminal section; 3 steps 1-4 already committed
|
|
132
130
|
but disarm could not verify the lock is gone afterward (run `/plastic-doctor
|
|
133
131
|
check the lock status`); 4 a live foreign session holds the lock (back off);
|
|
134
132
|
5 the code worktree is dirty (commit/stash first, or pass
|
|
@@ -171,8 +169,7 @@ historical record of what was planned.
|
|
|
171
169
|
|
|
172
170
|
## Routing
|
|
173
171
|
|
|
174
|
-
`plastic-releasing`, `plastic-auto`, `plastic-intent-executing
|
|
175
|
-
agent, `store-curating`, and `store-indexing` all delegate their mechanical
|
|
172
|
+
`plastic-releasing`, `plastic-auto`, and `plastic-intent-executing` all delegate their mechanical
|
|
176
173
|
close to this skill (or call `scripts/end-intent` directly for steps 1-5).
|
|
177
174
|
None of them restate the outcome/INDEX/savepoint/disarm prose inline any
|
|
178
175
|
more; if you find one that does, that surface has drifted and should route
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
"scope": "behavior",
|
|
8
8
|
"set": "train",
|
|
9
9
|
"prompt": "checklist.md has one unchecked non-completion item. Try to complete the intent.",
|
|
10
|
-
"expected_output": "
|
|
10
|
+
"expected_output": "Ticks or finishes the item before calling scripts/end-intent, because an unchecked box is reported by the structure self-check and lands verbatim in the backfilled Follow-ups; never a refusal (the write-time gate was removed in 2.0, intents 302 and 308).",
|
|
11
11
|
"files": [],
|
|
12
12
|
"assertions": [
|
|
13
|
-
{ "type": "human", "check": "SKILL.md Step 0 states the
|
|
14
|
-
{ "type": "code", "check": "
|
|
13
|
+
{ "type": "human", "check": "SKILL.md Step 0 states that nothing refuses the close, that an unchecked box is a reported gap landing in Follow-ups, and instructs finishing the checklist before the call", "result": "expect-pass" },
|
|
14
|
+
{ "type": "code", "check": "scripts/end-intent exits 0 on an unchecked '- [ ]' item and prints 'structure check: intent_checklist_complete' (test/end_intent_test.rb)", "result": "pass" }
|
|
15
15
|
]
|
|
16
16
|
},
|
|
17
17
|
{
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"scope": "triggering",
|
|
54
54
|
"set": "validation",
|
|
55
55
|
"prompt": "Start work on intent 87.",
|
|
56
|
-
"expected_output": "Does NOT activate plastic-intent-ending; this is a
|
|
56
|
+
"expected_output": "Does NOT activate plastic-intent-ending; this is a resume request (plastic-intent-continuing), the opposite end of the lifecycle from a close.",
|
|
57
57
|
"files": [],
|
|
58
58
|
"assertions": [
|
|
59
59
|
{ "type": "code", "check": "router CHOICE != plastic-intent-ending", "result": "expect-pass" }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-intent-executing
|
|
3
|
-
description: Use when you have a written implementation plan to execute. Default mode is subagent-driven (
|
|
3
|
+
description: Use when you have a written implementation plan to execute. Default mode is subagent-driven (one executor dispatch for the whole consolidated action, tests first, reviewed by risk). Fallback mode is inline execution for environments without subagent support. If superpowers:subagent-driven-development or superpowers:executing-plans are available, delegates to them.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ user-invocable: true
|
|
|
8
8
|
|
|
9
9
|
## Overview
|
|
10
10
|
|
|
11
|
-
Load plan from the active intent's `plan.md`, execute all tasks, review
|
|
11
|
+
Load plan from the active intent's `plan.md`, execute all tasks, review as below, report when complete.
|
|
12
12
|
|
|
13
13
|
## Step 0: Sync Worktree First
|
|
14
14
|
|
|
@@ -40,12 +40,9 @@ If `superpowers:subagent-driven-development` is available as a skill, delegate t
|
|
|
40
40
|
- Superpowers skills respect "user preferences for plan/spec location"; Plastic IS that preference
|
|
41
41
|
|
|
42
42
|
### Subagent-Driven (Default)
|
|
43
|
-
Dispatches subagents to do the work. The controller never implements. It dispatches, reviews, and tracks progress.
|
|
43
|
+
Dispatches subagents to do the work. The controller never implements. It dispatches, reviews, and tracks progress. One executor dispatch implements the whole consolidated action from `plan.md`, the action file's failure-mode matrix, and `checklist.md` in one pass, tests first: the matrix's tests are committed red before the code. Several independent action files are handed to the same executor in order; they are not a reason for a per-task review loop (removed in 2.0, intent 307).
|
|
44
44
|
|
|
45
|
-
-
|
|
46
|
-
- **L:** a fresh subagent per task, and a two-stage review after each task: spec compliance first, then code quality.
|
|
47
|
-
|
|
48
|
-
The final independent review in Step 3 runs at every tier. It is a separate agent with fresh context, and it is never the maker.
|
|
45
|
+
The post-execution review in Step 3 runs by risk (the rule lives in the auto skill). When it runs, the reviewer is a separate agent with fresh context, never the maker. The plan itself is reviewed before code by the adversarial plan reviewer (`plan-reviewer-prompt.md`), dispatched by the lead at How.
|
|
49
46
|
|
|
50
47
|
### Inline (Fallback)
|
|
51
48
|
Executes tasks sequentially in the current session. Use when subagents aren't available or user explicitly requests inline mode.
|
|
@@ -62,46 +59,21 @@ Run Step 0 (Sync Worktree First) before this step.
|
|
|
62
59
|
|
|
63
60
|
### Step 2: Execute Each Task
|
|
64
61
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
#### At S or M: one executor dispatch
|
|
62
|
+
Dispatch ONE executor subagent and give it the whole delivery: every task's full text from `plan.md` (pasted in, never a file reference), every action file with its failure-mode matrix, the checklist items it must tick, the project context from CLAUDE.md, the active intent context from `{ID}--{slug}.md`, and the worktree path. In auto mode this is the `plastic-executor` agent; elsewhere use the `implementer-prompt.md` template. The executor writes the matrix's tests and commits them red, implements the consolidated action in order, ticks each item as it lands (see `## Tick-as-you-land`), and drives the test suite green.
|
|
68
63
|
|
|
69
|
-
|
|
64
|
+
After each commit lands (the red commit and every commit after it), append a `Commit` line to the savepoint ledger: `ruby ~/.plastic/scripts/savepoint-note <intent_dir> --kind Commit --text "<sha> <what it proves>"` (intent 317, D17). This is what feeds `report-screen delay`; a commit with no line is a gap the delay report cannot explain.
|
|
70
65
|
|
|
71
66
|
Read its response by code:
|
|
72
|
-
- DONE or DONE_WITH_CONCERNS → proceed to Step 3.
|
|
67
|
+
- DONE or DONE_WITH_CONCERNS → proceed to Step 3.
|
|
73
68
|
- NEEDS_CONTEXT → provide the missing context, re-dispatch the executor.
|
|
74
69
|
- BLOCKED → stop, report to the user, wait for resolution.
|
|
75
70
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
For each task sequentially (never parallel: conflict risk):
|
|
79
|
-
|
|
80
|
-
**a. Dispatch implementer subagent**
|
|
81
|
-
Use the Agent tool with the implementer prompt template. Include:
|
|
82
|
-
- Full task text (pasted in, not file reference)
|
|
83
|
-
- Project context from CLAUDE.md
|
|
84
|
-
- Active intent context from `{ID}--{slug}.md`
|
|
71
|
+
### Step 3: Review by Risk
|
|
72
|
+
Apply the auto skill's risk rule to the executor's return and the diff: a matrix row no test could prove, a diff touching a hook, the lock, the worktree code, the installer, or a release file, a DONE_WITH_CONCERNS or a deviation from the matrix, or an owner-facing surface no test pins. When a rule fires, dispatch the post-execution reviewer with `code-quality-reviewer-prompt.md` (a separate agent with fresh context, never the maker); if it returns changes, re-dispatch the executor to fix them, then run the suite once more. When no rule fires, the green suite is the review.
|
|
85
73
|
|
|
86
|
-
|
|
87
|
-
- DONE → proceed to spec review
|
|
88
|
-
- DONE_WITH_CONCERNS → note concerns, proceed to spec review
|
|
89
|
-
- NEEDS_CONTEXT → provide missing context, re-dispatch
|
|
90
|
-
- BLOCKED → stop, report to user, wait for resolution
|
|
74
|
+
Whenever a review verdict returns - the plan review before code, or the post-execution review above - the lead appends a `Review` line: `ruby ~/.plastic/scripts/savepoint-note <intent_dir> --kind Review --text "<verdict, what changed>"` (intent 317, D17). This is the other half of what `report-screen delay` reads.
|
|
91
75
|
|
|
92
|
-
**
|
|
93
|
-
Use the Agent tool with spec-reviewer prompt. The reviewer reads actual code and compares against the task requirements. Pass/fail.
|
|
94
|
-
- If fail: implementer fixes, spec reviewer re-reviews (loop until pass)
|
|
95
|
-
|
|
96
|
-
**d. Dispatch code quality reviewer**
|
|
97
|
-
Only after spec compliance passes. Reviews clean code, testing, architecture. Pass/fail.
|
|
98
|
-
- If fail: implementer fixes, quality reviewer re-reviews (loop until pass)
|
|
99
|
-
|
|
100
|
-
**e. Tick as it lands, then move to next**
|
|
101
|
-
Follow `## Tick-as-you-land` below: move the task's checklist item to `## Completed` and add a `## Session Log` row in the same edit.
|
|
102
|
-
|
|
103
|
-
### Step 3: Final Review
|
|
104
|
-
After all tasks complete, dispatch a final reviewer for the entire implementation. This runs at every tier, S, M, and L. The reviewer is a separate agent with fresh context and is never the maker. At S and M this is the only review the work gets, so if it returns changes, re-dispatch the executor to fix them, then re-review.
|
|
76
|
+
**The D19 heading convention.** An action file's `## Delivered` row (in `outcome.md`) is proven by whichever `actions/ACTION_N.md` heading carries that row's label as a standalone token - `### Row A -` proves row A, `### S1 -` proves row S1. Write action-file section headings so the label they prove is unambiguous (never a substring another label could also match, like `A` inside `AB`); `report-screen delivered`'s Proven-by column renders `not recorded` when no heading matches.
|
|
105
77
|
|
|
106
78
|
### Step 4: Update Intent and Complete
|
|
107
79
|
Capture observations in `## Insights`. When ALL checklist items are checked:
|
|
@@ -142,22 +114,19 @@ row (Date, Items Completed, Notes). Do not batch several tasks' worth of
|
|
|
142
114
|
checklist updates into one later edit; tick the moment the task is verified,
|
|
143
115
|
before moving to the next task.
|
|
144
116
|
|
|
145
|
-
## Verify before every owner
|
|
117
|
+
## Verify before every owner review
|
|
146
118
|
|
|
147
119
|
Hard rule: before presenting any completed work to the owner, independently
|
|
148
120
|
verify it. Grep or run the artifact the work just produced (the test suite,
|
|
149
121
|
the changed file, the installed output) rather than restating the intended
|
|
150
122
|
change. Never present an unverified claim to the owner. If verification
|
|
151
|
-
fails, fix it before the
|
|
152
|
-
|
|
153
|
-
Read `../plastic-conventions/references/gates-and-enforcement.md` for the transition-gate
|
|
154
|
-
mechanics, the audited escape, and gate logging behind every owner gate named here.
|
|
123
|
+
fails, fix it before the review, not after.
|
|
155
124
|
|
|
156
125
|
## Methods report (audits and sweeps)
|
|
157
126
|
|
|
158
127
|
When the work is an audit or a sweep (checking many files or many instances of
|
|
159
128
|
something rather than building one artifact), deposit a methods report to
|
|
160
|
-
`{intent_dir}/resources/` before the
|
|
129
|
+
`{intent_dir}/resources/` before the review: what was checked, how it was
|
|
161
130
|
checked, and what was found. This lets the owner review the method, not just
|
|
162
131
|
the conclusion.
|
|
163
132
|
|
|
@@ -175,7 +144,7 @@ When presenting a batch of Exec decisions for the owner to rule, read
|
|
|
175
144
|
`~/.plastic/_decision-tables.md` and follow the numbered-table procedure,
|
|
176
145
|
persisting each ruling with `--stage Exec`.
|
|
177
146
|
|
|
178
|
-
##
|
|
147
|
+
## Position in the cycle
|
|
179
148
|
|
|
180
149
|
- **Before:** `plan.md` and `checklist.md` exist; the worktree is armed.
|
|
181
150
|
- **Produces:** code changes, a ticked checklist, and (for audits or sweeps) a methods report in `resources/`.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Adversarial Plan Reviewer Prompt
|
|
2
|
+
|
|
3
|
+
You review a plan before any code exists. The lead of this intent wrote `spec.md`, `plan.md`,
|
|
4
|
+
and at least one `actions/ACTION_N.md` that carries a failure-mode matrix: one row per
|
|
5
|
+
operation, naming a failure mode and the test that would catch it. Your job is to find what
|
|
6
|
+
that matrix misses and what it claims but cannot deliver, so the executor builds against a
|
|
7
|
+
plan that has already been attacked.
|
|
8
|
+
|
|
9
|
+
## Intent
|
|
10
|
+
|
|
11
|
+
{{INTENT_DIR}} (read `spec.md`, `plan.md`, every `actions/ACTION_N.md`, and anything under
|
|
12
|
+
`resources/` the spec cites). Target tree: {{WORKTREE}}.
|
|
13
|
+
|
|
14
|
+
## Instructions
|
|
15
|
+
|
|
16
|
+
1. Read the spec's decisions and the matrix first, then the tree. Check every claim by
|
|
17
|
+
opening the named file at the named line; never accept a line number from the spec on
|
|
18
|
+
trust.
|
|
19
|
+
2. For every operation in the spec, name a failure mode the matrix does not cover, or a
|
|
20
|
+
covered failure mode whose named test cannot actually detect it (the test reads a
|
|
21
|
+
different file, the regex cannot match, the assertion is a tautology, the fixture never
|
|
22
|
+
produces the case).
|
|
23
|
+
3. Grep the tree for every name the plan deletes, renames, or re-points, and list each
|
|
24
|
+
caller, test, doc, or template the plan does not name.
|
|
25
|
+
4. Where the plan touches a test the suite pins by exact string, quote the pinned string and
|
|
26
|
+
say what the change must keep verbatim.
|
|
27
|
+
5. Run any probe that settles a claim cheaply (a single test file, a measurement); report the
|
|
28
|
+
numbers.
|
|
29
|
+
6. Write no code and edit no repository file. Your output is the review.
|
|
30
|
+
|
|
31
|
+
## Report Format
|
|
32
|
+
|
|
33
|
+
One line first, the verdict: **REVISE** or **PROCEED**, with the biggest risk in the same
|
|
34
|
+
sentence.
|
|
35
|
+
|
|
36
|
+
Then numbered findings under `## A. Matrix gaps`, `## B. Missed files and pins`, and
|
|
37
|
+
`## C. Probes`. Each finding names the file and line you read and states what the spec or
|
|
38
|
+
the matrix must add, change, or drop. Be concrete and adversarial; do not pad; do not restate
|
|
39
|
+
the plan.
|
|
@@ -1,73 +1,130 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-intent-speccing
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
skill).
|
|
3
|
+
description: >-
|
|
4
|
+
Thinking mode for an intent: the conversation that turns an idea into rulings, the
|
|
5
|
+
research that backs them, and the action files that say how the work runs. Use when the
|
|
6
|
+
user wants to think a request through before building it, says "let's design this",
|
|
7
|
+
"brainstorm", "grill me", "research this first", "spec this intent", "write the spec",
|
|
8
|
+
or when a prompt is too vague to run directly and the direct skill routes here. Also
|
|
9
|
+
fires on an indirect ask that never names a spec, such as "turn what we just discussed
|
|
10
|
+
into the contract the work runs from." Absorbs what the former intent-brainstorming,
|
|
11
|
+
intent-grilling, and intent-researching skills used to do (intent 304).
|
|
13
12
|
user-invocable: true
|
|
14
13
|
---
|
|
15
14
|
|
|
16
|
-
# Intent Speccing
|
|
15
|
+
# Intent Speccing: thinking mode
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
One skill for the whole thinking conversation on an intent. It asks one question at a time,
|
|
18
|
+
records every owner ruling the moment it lands, grills when asked, deposits research in
|
|
19
|
+
`resources/`, and ends by writing the action files the work runs from and consolidating the
|
|
20
|
+
rulings into `spec.md`. There is no separate brainstorm, grill, or research skill; those are
|
|
21
|
+
the modes below.
|
|
21
22
|
|
|
22
|
-
##
|
|
23
|
+
## Active intent
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
Resolve the active intent before anything else: read `~/.plastic/projects.yml`, match the
|
|
26
|
+
working directory against registered project paths (a match means the project store at
|
|
27
|
+
`~/.plastic/projects/{slug}/store/`, no match means `~/.plastic/store/`), then read that
|
|
28
|
+
store's `INDEX.md` under `## Active`. Exactly one active intent is the one to work; several
|
|
29
|
+
means ask which; none means stop and say so ("No active intent. Create one first with
|
|
30
|
+
/plastic-intent-creating"). Every artifact goes into `{store}/{id}--{slug}/`; never write
|
|
31
|
+
outside it.
|
|
28
32
|
|
|
29
|
-
## The
|
|
33
|
+
## The conversation
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
QMD-first: before scanning the store by hand for prior decisions, specs, or research, run
|
|
36
|
+
`ruby ~/.plastic/scripts/qmd-sync search "<terms>"` and open the authoritative intent file for
|
|
37
|
+
any hit you act on. The command is a no-op when QMD is absent.
|
|
38
|
+
|
|
39
|
+
1. **Context first.** Check the project state (files, docs, recent commits) and the intent's
|
|
40
|
+
`## Context` and `## Insights`. Assess scope: a request that describes several independent
|
|
41
|
+
subsystems is decomposed first, one thinking conversation per piece, before any detail
|
|
42
|
+
question is spent.
|
|
43
|
+
2. **One question per message, in prose.** No multiple-choice chips; a short menu of named
|
|
44
|
+
options is fine when the choice is genuinely enumerable, phrased as a sentence. Focus on
|
|
45
|
+
purpose, constraints, and success criteria. Before asking how something works, look:
|
|
46
|
+
in a codebase the answer is usually on disk.
|
|
47
|
+
3. **Propose two or three approaches** with trade-offs, leading with the recommendation and
|
|
48
|
+
the reason for it. YAGNI: strip what the design does not need.
|
|
49
|
+
4. **Present the design in sections** scaled to their complexity (a few sentences when
|
|
50
|
+
straightforward, up to 300 words when nuanced): architecture, components, data flow,
|
|
51
|
+
error handling, testing. Get a ruling after each section. Read
|
|
52
|
+
`references/design-principles.md` before proposing a design for the unit-boundary and
|
|
53
|
+
existing-codebase guidance (follow established patterns, no unrelated refactoring).
|
|
54
|
+
5. **Record every ruling as it lands.** The moment the owner rules, before the next question:
|
|
55
|
+
```
|
|
56
|
+
ruby ~/.plastic/scripts/insight-append {intent_dir} "<ruling text>" --stage Why --author human
|
|
57
|
+
```
|
|
58
|
+
Never batch. A later ruling that conflicts with an earlier one gets a new insight naming
|
|
59
|
+
the superseded one; both stay on record and the later wins. When presenting a batch of
|
|
60
|
+
options for the owner to pick from, read `~/.plastic/_decision-tables.md` and follow the
|
|
61
|
+
numbered-table procedure.
|
|
62
|
+
|
|
63
|
+
No implementation starts until a design has been presented and ruled on. That holds for a
|
|
64
|
+
config change and a one-function utility as much as for a subsystem; the design can be three
|
|
65
|
+
sentences, but it is presented.
|
|
66
|
+
|
|
67
|
+
### Grill mode
|
|
41
68
|
|
|
42
|
-
|
|
69
|
+
When the owner says "grill me" or asks to stress-test a plan or design, the same conversation
|
|
70
|
+
turns relentless. Identify the root in one sentence and restate it. Walk the decision tree
|
|
71
|
+
branch by branch: state the branch, ask a specific question, lead with your own recommended
|
|
72
|
+
answer, resolve before moving on, name dependencies between decisions and resolve the
|
|
73
|
+
upstream one first. Do not accept "it depends" without "on what?"; do not skip edge cases; do
|
|
74
|
+
not assume when you can verify; challenge assumptions ("why not the alternative?"). Every
|
|
75
|
+
three or four questions, summarize what is decided. At natural checkpoints, about every ten
|
|
76
|
+
questions, offer to continue or to pause and capture what is decided; a pause records every
|
|
77
|
+
ruling so far and stops. When all branches are resolved, list the decisions and the deferred
|
|
78
|
+
items, then offer the hand-off below.
|
|
43
79
|
|
|
44
|
-
|
|
45
|
-
`spec.md` exists (this is the gates-by-name framing: gate-check enforces spec.md before plan.md,
|
|
46
|
-
not the Transition Gates table row). Writing `plan.md` is what opens the code gate for Exec, and
|
|
47
|
-
writing `plan.md` is not this skill's job, that is `plastic-intent-planning`. State this to the user
|
|
48
|
-
at step 6 so the handoff at step 8 is expected, not a surprise.
|
|
80
|
+
### Research mode
|
|
49
81
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
82
|
+
When a question needs evidence rather than a ruling, research it and deposit the report in
|
|
83
|
+
`{intent_dir}/resources/{type}--{topic}.md`, with `{type}` one of `deep-research`,
|
|
84
|
+
`competitive-analysis`, `technical-spike`, `reference`, `landscape-survey` and `{topic}` in
|
|
85
|
+
kebab-case. Choose the depth and say why: shallow (one or two searches plus a look at the
|
|
86
|
+
code, minutes) for a narrow factual question; deep (several sources, cross-checked, a
|
|
87
|
+
landscape or an architectural decision, or when a wrong answer would cause an architectural
|
|
88
|
+
mistake) through the harness's deep-research capability when it has one, else a manual
|
|
89
|
+
fan-out of searches. The report carries a summary, findings with citations, sources, and a
|
|
90
|
+
"Relevance to intent" section; tables for findings and comparisons. Log one line in the
|
|
91
|
+
intent's `## Insights` naming the file and the key finding. Research does not chain to
|
|
92
|
+
another step; the conversation decides what to do with it.
|
|
53
93
|
|
|
54
|
-
##
|
|
94
|
+
## Closing the conversation
|
|
55
95
|
|
|
56
|
-
|
|
57
|
-
is convention-only: the orchestrator and the planner read it, no gate and no doctor check
|
|
58
|
-
validates it.
|
|
96
|
+
When the rulings are enough to build from:
|
|
59
97
|
|
|
60
|
-
|
|
98
|
+
1. **Write the action files.** Every ruling that says how the work runs lands in
|
|
99
|
+
`actions/ACTION_N.md` (at least one real file, no placeholder): the files to touch, the
|
|
100
|
+
order, the tests that prove each step, the rules. The action files are what direct mode or
|
|
101
|
+
an auto team executes; they exist before the work runs.
|
|
102
|
+
2. **Consolidate `spec.md`** from the rulings, section by section in template order. Read
|
|
103
|
+
`references/per-section-fill-rules.md` when filling the template. Build the ruling ledger
|
|
104
|
+
in fixed order first: `## Context` and `### Decisions`, then `## Insights` newest-last so a
|
|
105
|
+
later ruling supersedes an earlier one, then `resources/discovery--<slug>.md`, then any
|
|
106
|
+
other `resources/*.md`. Encode every ruling into its section; a collapsed single-line
|
|
107
|
+
section is complete when it names everything. If a section cannot be filled from the
|
|
108
|
+
ledger, stop and ask for the missing ruling; never invent scope. A spec.md left as the
|
|
109
|
+
placeholder is backfilled from the record at close (`## Problem`, `## Decisions`,
|
|
110
|
+
`## Acceptance Criteria`; the rest stays stub text), so consolidate only when the
|
|
111
|
+
rulings say more than the record already does.
|
|
112
|
+
3. **Self-verify.** Read `references/self-verify-checklist.md` before presenting; fix any
|
|
113
|
+
failing check and re-verify from the top.
|
|
114
|
+
4. **Present and hand off.** Present `spec.md` and the action files. Then offer the routes:
|
|
115
|
+
run it now inline when the work is small enough for direct mode; hand to `plastic-auto`
|
|
116
|
+
when the owner says auto and the checklist above passes (all decisions resolved, scope
|
|
117
|
+
bounded, dependencies named, success criteria defined); or keep thinking.
|
|
61
118
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
instead: which section, what is missing, and the question put to the user.
|
|
119
|
+
Report, in this order: which files were written (`spec.md` new or rewritten, the action
|
|
120
|
+
files), the count of acceptance criteria, which `## Insights` rulings superseded an earlier
|
|
121
|
+
decision and where each landed, and the route chosen. If step 2 stopped for a missing
|
|
122
|
+
ruling, report that instead: which section, what is missing, the question put to the owner.
|
|
67
123
|
|
|
68
124
|
## References
|
|
69
125
|
|
|
70
126
|
| Trigger | Read |
|
|
71
127
|
|---|---|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
128
|
+
| Before proposing a design (unit boundaries, existing codebases) | `references/design-principles.md` |
|
|
129
|
+
| Filling the spec template (closing step 2) | `references/per-section-fill-rules.md` |
|
|
130
|
+
| Self-verifying before presenting (closing step 3) | `references/self-verify-checklist.md` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"skill_name": "plastic-intent-speccing",
|
|
3
|
-
"notes": "Intent 163. Scopes: description triggering (1-4) and behavior (5-8: all-8-sections output, mandatory superseding-ruling case, STOP-and-ask gap rule, tabular alternatives with no em-dash). No dedicated Ruby test file backs this skill yet (natural-language guided command), so all assertions are result: expect-pass pending a real observed run, per the
|
|
3
|
+
"notes": "Intent 163. Scopes: description triggering (1-4) and behavior (5-8: all-8-sections output, mandatory superseding-ruling case, STOP-and-ask gap rule, tabular alternatives with no em-dash). No dedicated Ruby test file backs this skill yet (natural-language guided command), so all assertions are result: expect-pass pending a real observed run, per the evals.json convention.",
|
|
4
4
|
"evals": [
|
|
5
5
|
{
|
|
6
6
|
"id": 1,
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"scope": "triggering",
|
|
38
38
|
"set": "validation",
|
|
39
39
|
"prompt": "Brainstorm this intent.",
|
|
40
|
-
"expected_output": "
|
|
40
|
+
"expected_output": "Activates plastic-intent-speccing (brainstorming is a mode of the thinking conversation since intent 304).",
|
|
41
41
|
"files": [],
|
|
42
42
|
"assertions": [
|
|
43
43
|
{
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"scope": "triggering",
|
|
53
53
|
"set": "validation",
|
|
54
54
|
"prompt": "Write the plan.",
|
|
55
|
-
"expected_output": "Does NOT activate plastic-intent-speccing;
|
|
55
|
+
"expected_output": "Does NOT activate plastic-intent-speccing; a plan is written from the action files by the executing skill.",
|
|
56
56
|
"files": [],
|
|
57
57
|
"assertions": [
|
|
58
58
|
{
|
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
"scope": "behavior",
|
|
68
68
|
"set": "train",
|
|
69
69
|
"prompt": "Intent Y is at Why: Context describes the problem and goal, and 5 Decisions are recorded resolving scope, approach, and one rejected alternative. Consolidate into spec.md.",
|
|
70
|
-
"expected_output": "Produces spec.md
|
|
70
|
+
"expected_output": "Produces spec.md starting at the Spec heading; all 8 template sections present once, in template order (Problem, Goals, Non-Goals, Approach, Alternatives Considered, Decisions, Acceptance Criteria, Open Questions); no template placeholder text remains; every recorded Decision is encoded into its matching section.",
|
|
71
71
|
"files": [],
|
|
72
72
|
"assertions": [
|
|
73
73
|
{
|
|
74
74
|
"type": "human",
|
|
75
|
-
"check": "
|
|
75
|
+
"check": "The file starts at the Spec heading; all 8 sections appear once each, in template order; no placeholder text; every Decision traces to a section",
|
|
76
76
|
"result": "expect-pass"
|
|
77
77
|
}
|
|
78
78
|
]
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Per-Section Fill Rules
|
|
2
2
|
|
|
3
|
-
The single shared method for turning the
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
The single shared method for turning the rulings into `spec.md`. `plastic-intent-speccing`
|
|
4
|
+
(the thinking conversation) and the auto orchestrator both point here; neither restates these
|
|
5
|
+
rules. One fill rule per template section, in template order.
|
|
6
6
|
|
|
7
7
|
Read the ruling ledger first (built in step 2 of the SKILL.md sequence): `## Context` plus
|
|
8
8
|
`### Decisions`, then `## Insights` newest-last (a later ruling supersedes an earlier
|
|
@@ -24,7 +24,7 @@ delivering a specific outcome.
|
|
|
24
24
|
|
|
25
25
|
One bullet per goal, each a concrete, observable outcome the delivery must reach. Encode every
|
|
26
26
|
Decision that commits to an outcome as its own bullet, do not compress two Decisions into one
|
|
27
|
-
vague goal. A single-line collapsed Goals section
|
|
27
|
+
vague goal. A single-line collapsed Goals section is complete if it names every
|
|
28
28
|
outcome; do not pad it with restated Problem text.
|
|
29
29
|
|
|
30
30
|
## 3. Non-Goals
|
|
@@ -22,8 +22,7 @@ these.
|
|
|
22
22
|
5. **No template placeholder text remains.** No literal `<intent name>`, `<alternative>`, `...`,
|
|
23
23
|
sample bracket text, or other template filler from `templates/spec.md` survives anywhere in
|
|
24
24
|
the artifact.
|
|
25
|
-
6. **
|
|
26
|
-
`# Spec:` heading, not folded into a section body.
|
|
25
|
+
6. **No header line.** The file starts at the `# Spec:` heading; there is no `Tier:` line (removed in 2.0, intent 304).
|
|
27
26
|
7. **All 8 sections present, in template order.** Problem, Goals, Non-Goals, Approach,
|
|
28
27
|
Alternatives Considered, Decisions, Acceptance Criteria, Open Questions, each present once, in
|
|
29
28
|
that order, none merged into another.
|
|
@@ -77,7 +77,7 @@ writes `INDEX.md` and `project.yml` only if missing. It is idempotent, so it is
|
|
|
77
77
|
safe even when the tactical mirror in step 5 already created the store directory.
|
|
78
78
|
Do not create the store with an inline `mkdir`; the provisioner is the only place
|
|
79
79
|
a store is made. For a project that is already registered but store-less, use the
|
|
80
|
-
`plastic-
|
|
80
|
+
`plastic-doctor` skill's provisioning section instead.
|
|
81
81
|
|
|
82
82
|
### 8. Mark Global Intent(s) Completed
|
|
83
83
|
|