@zalom/plastic 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/PLASTIC-reference.md +11 -11
  2. package/PLASTIC.md +7 -7
  3. package/README.md +47 -0
  4. package/agents/plastic-enforcer.md +3 -3
  5. package/agents/plastic-intent-curator.md +9 -10
  6. package/agents/plastic-spec-specialist.md +9 -6
  7. package/bin/plastic.js +2 -2
  8. package/package.json +1 -1
  9. package/scripts/dashboard.rb +1 -1
  10. package/scripts/doctor.rb +52 -4
  11. package/scripts/end-intent +330 -0
  12. package/scripts/hook-code-gate +1 -1
  13. package/scripts/hook-continue +1 -1
  14. package/scripts/hook-create-gate +2 -2
  15. package/scripts/hook-session-start +1 -1
  16. package/scripts/lib/bridge.rb +35 -3
  17. package/scripts/lib/installer_core.rb +8 -6
  18. package/scripts/lib/store_provisioning.rb +1 -1
  19. package/scripts/new-intent +1 -1
  20. package/scripts/{versions.rb → rollback.rb} +33 -41
  21. package/scripts/update.rb +1 -1
  22. package/skills/_active-intent-gate.md +1 -1
  23. package/skills/_decision-tables.md +50 -0
  24. package/skills/auto/SKILL.md +47 -64
  25. package/skills/auto/evals/evals.json +4 -4
  26. package/skills/auto/references/agent-architecture.md +2 -2
  27. package/skills/dashboard/SKILL.md +2 -2
  28. package/skills/doctor/SKILL.md +3 -3
  29. package/skills/install/SKILL.md +1 -1
  30. package/skills/{brainstorming → intent-brainstorming}/SKILL.md +43 -45
  31. package/skills/intent-brainstorming/evals/evals.json +67 -0
  32. package/skills/{brainstorming → intent-brainstorming}/references/design-principles.md +12 -17
  33. package/skills/{continuing → intent-continuing}/SKILL.md +3 -3
  34. package/skills/{continuing → intent-continuing}/evals/evals.json +24 -24
  35. package/skills/{creating-intent → intent-creating}/SKILL.md +3 -3
  36. package/skills/{creating-intent → intent-creating}/evals/evals.json +1 -1
  37. package/skills/{intent-discovery → intent-discovering}/SKILL.md +1 -1
  38. package/skills/intent-ending/SKILL.md +151 -0
  39. package/skills/intent-ending/evals/evals.json +74 -0
  40. package/skills/{executing-plan → intent-executing}/SKILL.md +75 -15
  41. package/skills/intent-executing/evals/evals.json +66 -0
  42. package/skills/{brainstorming-grill-me → intent-grilling}/SKILL.md +4 -4
  43. package/skills/{linking-intents → intent-linking}/SKILL.md +1 -1
  44. package/skills/{linking-intents → intent-linking}/evals/evals.json +1 -1
  45. package/skills/{lock → intent-locking}/SKILL.md +1 -1
  46. package/skills/{writing-plans → intent-planning}/SKILL.md +48 -20
  47. package/skills/intent-planning/evals/evals.json +66 -0
  48. package/skills/{writing-plans → intent-planning}/references/plan-format.md +31 -7
  49. package/skills/{research → intent-researching}/SKILL.md +2 -2
  50. package/skills/{research → intent-researching}/evals/evals.json +1 -1
  51. package/skills/{savepoint → intent-savepoint}/SKILL.md +1 -1
  52. package/skills/intent-speccing/SKILL.md +69 -0
  53. package/skills/intent-speccing/evals/evals.json +126 -0
  54. package/skills/intent-speccing/references/per-section-fill-rules.md +92 -0
  55. package/skills/intent-speccing/references/self-verify-checklist.md +38 -0
  56. package/skills/intent-starting/SKILL.md +2 -2
  57. package/skills/intent-starting/evals/evals.json +2 -2
  58. package/skills/{creating-project → project-creating}/SKILL.md +2 -2
  59. package/skills/releasing/SKILL.md +18 -14
  60. package/skills/{versions → rollback}/SKILL.md +30 -20
  61. package/skills/{creating-skills → skill-creating}/SKILL.md +2 -2
  62. package/skills/{creating-skills → skill-creating}/evals/evals.json +5 -5
  63. package/skills/{creating-skills → skill-creating}/references/progressive-disclosure.md +2 -2
  64. package/skills/{evaluating-skills → skill-evaluating}/SKILL.md +1 -1
  65. package/skills/{evaluating-skills → skill-evaluating}/evals/evals.json +3 -3
  66. package/skills/{intent-curator → store-curating}/SKILL.md +6 -7
  67. package/skills/{intent-curator → store-curating}/evals/evals.json +1 -1
  68. package/skills/{managing-index → store-indexing}/SKILL.md +6 -7
  69. package/skills/{managing-index → store-indexing}/evals/evals.json +1 -1
  70. package/skills/{add-project-store → store-provisioning}/SKILL.md +2 -2
  71. package/skills/tutorial/SKILL.md +65 -0
  72. package/skills/tutorial/evals/evals.json +186 -0
  73. package/skills/tutorial/references/track-1-guided.md +123 -0
  74. package/skills/tutorial/references/track-2-auto.md +95 -0
  75. package/skills/tutorial/references/track-3-projects-and-roadmaps.md +110 -0
  76. package/skills/update/SKILL.md +1 -1
  77. package/templates/agents.md +7 -7
  78. package/skills/brainstorming/evals/evals.json +0 -22
  79. /package/skills/{continuing → intent-continuing}/references/context-management.md +0 -0
  80. /package/skills/{creating-intent → intent-creating}/references/lifecycle.md +0 -0
  81. /package/skills/{creating-intent → intent-creating}/references/wikilinks.md +0 -0
  82. /package/skills/{executing-plan → intent-executing}/code-quality-reviewer-prompt.md +0 -0
  83. /package/skills/{executing-plan → intent-executing}/implementer-prompt.md +0 -0
  84. /package/skills/{executing-plan → intent-executing}/spec-reviewer-prompt.md +0 -0
  85. /package/skills/{linking-intents → intent-linking}/references/zettelkasten.md +0 -0
  86. /package/skills/{savepoint → intent-savepoint}/references/context-management.md +0 -0
  87. /package/skills/{creating-project → project-creating}/references/hubs-projects.md +0 -0
  88. /package/skills/{creating-project → project-creating}/references/project-scaffolding.md +0 -0
  89. /package/skills/{creating-skills → skill-creating}/references/agents.md +0 -0
  90. /package/skills/{creating-skills → skill-creating}/references/evals.md +0 -0
  91. /package/skills/{creating-skills → skill-creating}/references/hooks.md +0 -0
  92. /package/skills/{creating-skills → skill-creating}/references/scripts.md +0 -0
  93. /package/skills/{creating-skills → skill-creating}/references/skills.md +0 -0
  94. /package/skills/{creating-skills → skill-creating}/scripts/scaffold.rb +0 -0
  95. /package/skills/{evaluating-skills → skill-evaluating}/assets/eval-template.json +0 -0
  96. /package/skills/{evaluating-skills → skill-evaluating}/references/convention-checks.md +0 -0
  97. /package/skills/{evaluating-skills → skill-evaluating}/references/eval-methodology.md +0 -0
  98. /package/skills/{managing-index → store-indexing}/references/zettelkasten-linking.md +0 -0
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: plastic-intent-curator
2
+ name: plastic-store-curating
3
3
  description: |
4
4
  Use when completing or reviewing intents, reorganizing the index,
5
5
  or when the intent store needs maintenance. Examples:
@@ -28,9 +28,9 @@ Dispatches to the `plastic-intent-curator` agent for intent store maintenance.
28
28
 
29
29
  Invoke the `plastic-intent-curator` agent via the Agent tool with `subagent_type: "plastic-intent-curator"`. Pass the user's request as the prompt, including:
30
30
 
31
- 1. **What to do** complete intent, reorganize, triage stale, etc.
32
- 2. **Which store** global (`~/.plastic/`) or project (`.plastic/store/`)
33
- 3. **Which intents** by ID or "all active"
31
+ 1. **What to do** - complete intent, reorganize, triage stale, etc.
32
+ 2. **Which store** - global (`~/.plastic/`) or project (`.plastic/store/`)
33
+ 3. **Which intents** - by ID or "all active"
34
34
 
35
35
  The agent handles:
36
36
  - Intent lifecycle management (status transitions, Outcome sections)
@@ -39,10 +39,9 @@ The agent handles:
39
39
  - Cluster management (create, merge, rename)
40
40
  - Orphan detection
41
41
 
42
- When an intent reaches a terminal state moved to Completed OR Abandoned do these things as the closing act of the transfer, in the canonical End-tail order (see PLASTIC.md `## Delivery Isolation and the Single-Owner Lock`):
42
+ When an intent reaches a terminal state, moved to Completed OR Abandoned, do these things:
43
43
 
44
44
  1. Author a real `outcome.md` in the intent directory from `~/.plastic/templates/outcome.md`, with the frontmatter `disposition: delivered` for a completed intent or `disposition: abandoned` for an abandoned one. `outcome.md` is MANDATORY at every terminal, delivered and abandoned alike: on abandon it records the abandonment reason and replaces the scaffolded placeholder sentinel (never leave `outcome.md` a placeholder at a terminal).
45
- 2. Stamp the terminal savepoint bookend (intent 81), so the ledger's last line records the disposition: `ruby -r ~/.plastic/scripts/lib/bridge -e 'Bridge.append_terminal_savepoint("<intent_dir>", "delivered")'` (use `"abandoned"` for an abandoned intent). Idempotent.
46
- 3. Refresh the QMD index for the affected store LAST, after the terminal move and savepoint (no-op when QMD absent), running in the background so it never blocks: `ruby ~/.plastic/scripts/qmd-sync reindex --store <store-root> --async`.
45
+ 2. Call `plastic-intent-ending` for the terminal-transition close (INDEX move, savepoint `Done` bookend, store commit, disarm, and the QMD reindex last): `ruby ~/.plastic/scripts/end-intent --store <store> --id <id> --disposition delivered|abandoned`, then follow that skill's own disarm and reindex steps. Never restate those one-liners here.
47
46
 
48
47
  After the agent completes, report what changed.
@@ -1,5 +1,5 @@
1
1
  {
2
- "skill_name": "plastic-intent-curator",
2
+ "skill_name": "plastic-store-curating",
3
3
  "notes": "Intent 66a. Spec for the QMD-first discovery step in agents/plastic-intent-curator.md (locate a specific intent before grep/find; distinct from the completion-time reindex step). Runner is intent 76; spec only.",
4
4
  "evals": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: plastic-managing-index
2
+ name: plastic-store-indexing
3
3
  description: Use after creating, completing, or abandoning intents, when the user says "index" or "organize", or when INDEX.md needs maintenance. Curates the INDEX.md structure note.
4
4
  user-invocable: false
5
5
  ---
@@ -7,14 +7,14 @@ user-invocable: false
7
7
  # Managing the Index
8
8
 
9
9
  ## When to Use
10
- - After creating a new intent (automatic part of creating-intent workflow)
10
+ - After creating a new intent (automatic - part of intent-creating workflow)
11
11
  - After completing or abandoning an intent
12
12
  - User says "index", "organize", or "clean up"
13
13
  - Periodic maintenance when the store grows
14
14
 
15
15
  ## INDEX.md Structure
16
16
 
17
- INDEX.md is a Zettelkasten main structure note the brain's entry point. It has four sections:
17
+ INDEX.md is a Zettelkasten main structure note - the brain's entry point. It has four sections:
18
18
 
19
19
  ### Active
20
20
  Intents currently being worked on. Max 1-2 for focus.
@@ -42,11 +42,10 @@ Topic-based groupings. Manually curated. Create a new cluster when 3+ intents sh
42
42
  ### Completed
43
43
  All completed intents with dates. Links preserved, never deleted.
44
44
 
45
- When you move an intent INTO Completed or Abandoned, run the closing acts of the transfer in the canonical End-tail order (see PLASTIC.md `## Delivery Isolation and the Single-Owner Lock`):
45
+ When you move an intent INTO Completed or Abandoned, do these things:
46
46
 
47
47
  1. Author a real `outcome.md` in the intent directory from `~/.plastic/templates/outcome.md`, with the frontmatter `disposition: delivered` for a completed intent or `disposition: abandoned` for an abandoned one. `outcome.md` is MANDATORY at every terminal, delivered and abandoned alike: on abandon it records the abandonment reason and replaces the scaffolded placeholder sentinel (never leave `outcome.md` a placeholder at a terminal).
48
- 2. Stamp the terminal savepoint bookend (intent 81), so the ledger's last line records the disposition: `ruby -r ~/.plastic/scripts/lib/bridge -e 'Bridge.append_terminal_savepoint("<intent_dir>", "delivered")'` (use `"abandoned"` for an abandoned intent). Idempotent.
49
- 3. Refresh the QMD index for that store LAST, after the terminal move and savepoint (no-op when QMD is absent), in the background so it never blocks: `ruby ~/.plastic/scripts/qmd-sync reindex --store <store-root> --async`.
48
+ 2. Call `plastic-intent-ending` for the terminal-transition close (INDEX move, savepoint `Done` bookend, store commit, disarm, and the QMD reindex last): `ruby ~/.plastic/scripts/end-intent --store <store> --id <id> --disposition delivered|abandoned`, then follow that skill's own disarm and reindex steps. Never restate those one-liners here.
50
49
 
51
50
  ## Workflow
52
51
 
@@ -76,7 +75,7 @@ When 3+ intents share tags but aren't in a cluster, suggest a new cluster headin
76
75
  ### Flag Orphans
77
76
  Intents with no links (empty `sources`, empty `chain`, no `## Links` entries, not in any cluster) should be flagged for curation.
78
77
 
79
- REQUIRED BACKGROUND: linking-intents (for understanding connection types and Zettelkasten theory)
78
+ REQUIRED BACKGROUND: intent-linking (for understanding connection types and Zettelkasten theory)
80
79
 
81
80
  ## References
82
81
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "skill_name": "plastic-managing-index",
2
+ "skill_name": "plastic-store-indexing",
3
3
  "notes": "Intent 66a. Spec for the QMD-first step when locating a specific intent to reclassify/flag/cluster before grep/Read. Runner is intent 76; spec only.",
4
4
  "evals": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: plastic-add-project-store
2
+ name: plastic-store-provisioning
3
3
  description: >-
4
4
  Add an intent store to a project that is already registered in projects.yml
5
5
  but has no store on disk. Use when a project is registered but has no store,
@@ -13,7 +13,7 @@ user-invocable: false
13
13
 
14
14
  Provision the intent store for a project that is already registered in
15
15
  `projects.yml` but whose `~/.plastic/projects/{slug}/store/` is missing. This is
16
- the standalone path; `plastic-creating-project` provisions the store for brand
16
+ the standalone path; `plastic-project-creating` provisions the store for brand
17
17
  new projects.
18
18
 
19
19
  The provisioner is the single source of truth for store creation. It is pure
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: plastic-tutorial
3
+ description: >-
4
+ Teach a new user how Plastic works through one of three hands-on tracks: deliver a first
5
+ intent stage by stage, hand delivery to the agent in auto mode, or grow a founding intent
6
+ into a small project with a roadmap. Use when the user says "tutorial", "teach me Plastic",
7
+ "walk me through Plastic", "how do I use Plastic", or asks what Plastic can actually do
8
+ before trying it on real work.
9
+ user-invocable: true
10
+ ---
11
+
12
+ # Plastic Tutorial
13
+
14
+ An interactive coach, not an automator. It walks one of three tracks, one step at a time, and
15
+ keeps no state of its own: the intent being used for the walkthrough is the progress bar.
16
+
17
+ ## The three tracks
18
+
19
+ This is the one menu in the whole skill. Offer it, then route into the picked track's
20
+ reference. Every checkpoint inside a track is prose, never another menu.
21
+
22
+ 1. **Guided**: deliver a first intent, stage by stage, approving each step yourself. Routes to
23
+ `references/track-1-guided.md`.
24
+ 2. **Auto**: hand delivery to the agent and watch the gates and reports as it works. Routes to
25
+ `references/track-2-auto.md`.
26
+ 3. **Projects and roadmaps**: grow a founding intent into a small real project, add more
27
+ intents, and plan a delivery batch with a roadmap. Routes to
28
+ `references/track-3-projects-and-roadmaps.md`.
29
+
30
+ If the user names what they want instead of picking a number ("show me auto mode", "I want a
31
+ roadmap", "walk me through my first intent"), route straight to the matching track without
32
+ showing the menu again.
33
+
34
+ ## The coach contract
35
+
36
+ Narrate one step at a time: say what the next station does, then hand control back so the
37
+ user types the real command themselves. After they run it, look at what appeared (a file, a
38
+ gate message, a report) and debrief in plain words before moving to the next station. Never
39
+ run a station's command on the user's behalf; the tutorial teaches the shape of the work, it
40
+ does not do the work.
41
+
42
+ Keep no new state. The intent's own lifecycle stage and savepoint are the only progress
43
+ record. This skill never writes a "tutorial progress" file of its own.
44
+
45
+ ## The resume rule
46
+
47
+ To pause, the user says "continue the tutorial." Read the walkthrough intent's current stage
48
+ and savepoint (for track 3, check which project-scaffolding steps are already on disk) and
49
+ resume at the matching station. Do not restart from station one, and do not ask the user to
50
+ remember where they left off.
51
+
52
+ ## Routing table
53
+
54
+ | Trigger | Reference |
55
+ |---|---|
56
+ | User picks "guided", or names their first intent, a first delivery, or learning the stages one at a time | `references/track-1-guided.md` |
57
+ | User picks "auto", or says "hand it to the agent", "run the whole thing", "show me auto mode" | `references/track-2-auto.md` |
58
+ | User picks "projects and roadmaps", or says "start a project", "I want a roadmap", "plan a batch of work" | `references/track-3-projects-and-roadmaps.md` |
59
+
60
+ ## Before any track
61
+
62
+ Every track opens with the same two checks: run `/plastic-update` first, so the walkthrough
63
+ matches what is actually installed, and work in a sandbox (a throwaway repo, or a global-store
64
+ intent) so nothing real is touched by mistake. Each reference restates this briefly; do not
65
+ skip it even if the user seems experienced.
@@ -0,0 +1,186 @@
1
+ {
2
+ "skill_name": "plastic-tutorial",
3
+ "notes": "Intent 166, Phase 1. Scopes: triggering (1-6, should and should-not with near-misses) and track routing (7-10, one case per track plus a direct-menu case). plastic-tutorial is a natural-language guided command with no backing Ruby test, so every assertion carries result: expect-pass pending a real observed run, per the intent-speccing evals.json convention. Phase 2 (post-164) can tighten these into observed pass/fail after a paired run.",
4
+ "evals": [
5
+ {
6
+ "id": 1,
7
+ "scope": "triggering",
8
+ "set": "train",
9
+ "prompt": "I want a tutorial on how Plastic works.",
10
+ "expected_output": "Activates plastic-tutorial and offers the three-track menu.",
11
+ "files": [],
12
+ "assertions": [
13
+ {
14
+ "type": "code",
15
+ "check": "router CHOICE == plastic-tutorial",
16
+ "result": "expect-pass"
17
+ }
18
+ ]
19
+ },
20
+ {
21
+ "id": 2,
22
+ "scope": "triggering",
23
+ "set": "train",
24
+ "prompt": "Teach me Plastic from scratch.",
25
+ "expected_output": "Activates plastic-tutorial and offers the three-track menu.",
26
+ "files": [],
27
+ "assertions": [
28
+ {
29
+ "type": "code",
30
+ "check": "router CHOICE == plastic-tutorial",
31
+ "result": "expect-pass"
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "id": 3,
37
+ "scope": "triggering",
38
+ "set": "train",
39
+ "prompt": "Walk me through Plastic before I try it on my real project.",
40
+ "expected_output": "Activates plastic-tutorial and offers the three-track menu.",
41
+ "files": [],
42
+ "assertions": [
43
+ {
44
+ "type": "code",
45
+ "check": "router CHOICE == plastic-tutorial",
46
+ "result": "expect-pass"
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "id": 4,
52
+ "scope": "triggering",
53
+ "set": "validation",
54
+ "prompt": "How do I use Plastic day to day?",
55
+ "expected_output": "Activates plastic-tutorial and offers the three-track menu.",
56
+ "files": [],
57
+ "assertions": [
58
+ {
59
+ "type": "code",
60
+ "check": "router CHOICE == plastic-tutorial",
61
+ "result": "expect-pass"
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ "id": 5,
67
+ "scope": "triggering",
68
+ "set": "validation",
69
+ "prompt": "I have never touched this tool before. What can it actually do for me before I commit real work to it?",
70
+ "expected_output": "Activates plastic-tutorial; an indirect trigger that names neither the skill nor the word tutorial.",
71
+ "files": [],
72
+ "assertions": [
73
+ {
74
+ "type": "code",
75
+ "check": "router CHOICE == plastic-tutorial",
76
+ "result": "expect-pass"
77
+ }
78
+ ]
79
+ },
80
+ {
81
+ "id": 6,
82
+ "scope": "triggering",
83
+ "set": "train",
84
+ "prompt": "Create an intent for adding a search feature.",
85
+ "expected_output": "Does NOT activate plastic-tutorial; activates plastic-intent-creating (a near-miss that shares the word intent but starts real work, not a walkthrough).",
86
+ "files": [],
87
+ "assertions": [
88
+ {
89
+ "type": "code",
90
+ "check": "router CHOICE != plastic-tutorial",
91
+ "result": "expect-pass"
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "id": 7,
97
+ "scope": "triggering",
98
+ "set": "validation",
99
+ "prompt": "Just run the whole thing for me, I do not want to steer any of it.",
100
+ "expected_output": "Does NOT activate plastic-tutorial; activates plastic-auto (a near-miss that describes autonomous delivery of real work, not a walkthrough of how auto works).",
101
+ "files": [],
102
+ "assertions": [
103
+ {
104
+ "type": "code",
105
+ "check": "router CHOICE != plastic-tutorial",
106
+ "result": "expect-pass"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "id": 8,
112
+ "scope": "track-routing",
113
+ "set": "train",
114
+ "prompt": "Inside the tutorial menu: show me auto mode.",
115
+ "expected_output": "Routes to track 2 (references/track-2-auto.md), the auto handover track.",
116
+ "files": [],
117
+ "assertions": [
118
+ {
119
+ "type": "code",
120
+ "check": "TRACK == track-2-auto",
121
+ "result": "expect-pass"
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ "id": 9,
127
+ "scope": "track-routing",
128
+ "set": "train",
129
+ "prompt": "Inside the tutorial menu: I want a roadmap.",
130
+ "expected_output": "Routes to track 3 (references/track-3-projects-and-roadmaps.md), the projects and roadmaps track.",
131
+ "files": [],
132
+ "assertions": [
133
+ {
134
+ "type": "code",
135
+ "check": "TRACK == track-3-projects-and-roadmaps",
136
+ "result": "expect-pass"
137
+ }
138
+ ]
139
+ },
140
+ {
141
+ "id": 10,
142
+ "scope": "track-routing",
143
+ "set": "validation",
144
+ "prompt": "Inside the tutorial menu: start a project.",
145
+ "expected_output": "Routes to track 3 (references/track-3-projects-and-roadmaps.md), the projects and roadmaps track.",
146
+ "files": [],
147
+ "assertions": [
148
+ {
149
+ "type": "code",
150
+ "check": "TRACK == track-3-projects-and-roadmaps",
151
+ "result": "expect-pass"
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "id": 11,
157
+ "scope": "track-routing",
158
+ "set": "validation",
159
+ "prompt": "Walk me through my first intent, one stage at a time.",
160
+ "expected_output": "Routes to track 1 (references/track-1-guided.md), the guided delivery track.",
161
+ "files": [],
162
+ "assertions": [
163
+ {
164
+ "type": "code",
165
+ "check": "TRACK == track-1-guided",
166
+ "result": "expect-pass"
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "id": 12,
172
+ "scope": "track-routing",
173
+ "set": "train",
174
+ "prompt": "Tutorial. (No further detail given.)",
175
+ "expected_output": "Activates plastic-tutorial and presents the three-track menu itself, since no track was named; this is the one case where the menu is the expected output rather than a routed track.",
176
+ "files": [],
177
+ "assertions": [
178
+ {
179
+ "type": "human",
180
+ "check": "the reply shows the three-track menu (guided, auto, projects and roadmaps) and does not jump into any one track uninvited",
181
+ "result": "expect-pass"
182
+ }
183
+ ]
184
+ }
185
+ ]
186
+ }
@@ -0,0 +1,123 @@
1
+ # Track 1: Guided, your first intent
2
+
3
+ ## Who it is for and what you will have done
4
+
5
+ For a new user who wants to feel the whole cycle once, one stage at a time, approving each
6
+ step before the next one starts. After this track, one small, real change will be delivered
7
+ end to end: a piece of work moved through What, Why, How, and Exec, with a finished
8
+ `outcome.md` to show for it.
9
+
10
+ ## Before you start
11
+
12
+ Run `/plastic-update` first, so the commands below match what is actually installed.
13
+
14
+ Work in a sandbox: this track always creates a global-store intent; the throwaway repo below
15
+ is never registered as a Plastic project. Pick a throwaway git repository if you have one
16
+ handy, since the worked example edits its README: station 6's deliverable is that file edit.
17
+ No repo handy? Station 6's deliverable becomes a short written note saved in the intent's own
18
+ directory instead (see station 6). Either way, nothing in this track touches a real project.
19
+
20
+ ## Stations
21
+
22
+ ### 1. Create the intent
23
+
24
+ Type `/plastic-intent-creating` and describe the work in plain words, for example "add a
25
+ short Usage section to this project's README."
26
+
27
+ Artifact: a new intent directory, `{id}--slug.md`, plus the sentinel placeholder lifecycle
28
+ files (`spec.md`, `plan.md`, `checklist.md`, `outcome.md`) and empty `actions/` and
29
+ `resources/` folders.
30
+
31
+ Checkpoint: open the new file. It already has a real id and a one-line description; nothing
32
+ was hand-typed into it directly. That is the point: intents are always scaffolded by the
33
+ tool, never written by hand.
34
+
35
+ ### 2. Board the intent
36
+
37
+ Type `/plastic-intent-starting`.
38
+
39
+ Artifact: a delivery lock (a `delivery.lock` file in the intent directory) naming this
40
+ session as the one owner, and a line in `savepoint.md` recording the stage. The agent then
41
+ asks exactly one question: "auto or guided?"
42
+
43
+ Checkpoint: answer "guided." Explain in one sentence why the lock matters: it stops two
44
+ sessions from editing the same intent at the same time.
45
+
46
+ ### 3. Why, rulings one at a time
47
+
48
+ Type `/plastic-intent-brainstorming` (or `/plastic-intent-grilling` for a harder,
49
+ interview-style pass over the same ground). It asks conversational prose questions, one at a
50
+ time, never a multiple-choice menu, and answers them one at a time in return.
51
+
52
+ Artifact: `## Context` and `### Decisions` in the intent file fill in as each answer lands, and
53
+ each ruling also lands as its own `## Insights` entry the moment it is made, never batched for
54
+ later. This station's product is the enriched Why; it hands off to `/plastic-intent-speccing`
55
+ next, it does not write `spec.md` itself.
56
+
57
+ Checkpoint: after two or three answers, look at the intent file. Every ruling given out loud
58
+ is already sitting in `### Decisions` and in `## Insights`, in writing.
59
+
60
+ ### 4. Consolidate the spec
61
+
62
+ Type `/plastic-intent-speccing`.
63
+
64
+ Artifact: `spec.md`, stamped with a tier (`S`, for this small worked example) and its eight
65
+ sections filled from the rulings recorded in station 3.
66
+
67
+ Checkpoint: name the stamped tier and point at one sentence in `spec.md` that traces back to
68
+ an answer given in station 3.
69
+
70
+ ### 5. Plan
71
+
72
+ Type `/plastic-intent-planning`.
73
+
74
+ Artifact: `plan.md` and `checklist.md`. At the S tier used here, `actions/` stays empty and
75
+ the task rationale lives inline in `plan.md` instead of separate action files; only the L
76
+ tier (many independent tasks, dispatched in parallel) gets one `actions/ACTION_N.md` file
77
+ per task. `checklist.md` follows a fixed form: tasks start under `## In Progress`, move to
78
+ `## Completed` as they land, and a `## Session Log` table records what happened each session.
79
+ A task that depends on an owner decision landing first (a destructive step, a structural
80
+ ruling) gets an `[ORCHESTRATOR]` prefix and blocks every other item until that decision is
81
+ made; this worked example has none.
82
+
83
+ Checkpoint: open `checklist.md`. Every task in `plan.md` has a matching checkbox under
84
+ `## In Progress`; that checklist, not `plan.md` itself, is what gets ticked off and moved to
85
+ `## Completed` during Exec.
86
+
87
+ ### 6. Exec, verify before the gate
88
+
89
+ Type `/plastic-intent-executing`.
90
+
91
+ Teach the order: first the agent syncs its working copy with the main line, so no edit lands
92
+ on a path a merged change upstream has already touched or removed. Then it makes the change,
93
+ runs whatever verifies it (a test suite, or a manual check for a docs change like this one),
94
+ and only then ticks the checklist box, moving the task from `## In Progress` to
95
+ `## Completed` and adding a `## Session Log` row, before moving to the next task. Verifying
96
+ always comes before checking a box, never after, and each task is ticked the moment it lands,
97
+ never batched for later.
98
+
99
+ Artifact: the actual change on disk (the new README Usage section, or, in the global-store
100
+ fallback, a short written note saved as the intent's deliverable) and a fully ticked
101
+ `checklist.md`.
102
+
103
+ Checkpoint: find the new Usage section in the README (or the written note) and confirm every
104
+ box in `checklist.md` is checked and moved to `## Completed`, with a `## Session Log` row for
105
+ this session, before moving to station 7.
106
+
107
+ ### 7. Done
108
+
109
+ Type `/plastic-intent-ending`.
110
+
111
+ Artifact: a real `outcome.md` (Summary, Delivered, Verification, Follow-ups), the intent
112
+ moved from `## Active` to `## Completed` in `INDEX.md`, and a closing `Done` line in
113
+ `savepoint.md`.
114
+
115
+ Checkpoint: open `outcome.md` and read its Summary. It should describe, in a sentence or
116
+ two, exactly the README section (or note) just delivered.
117
+
118
+ ## Wrap and where to go next
119
+
120
+ That is the full cycle once: create, board, decide, spec, plan, build, done. Read
121
+ `docs/guides/your-first-intent-in-10-minutes.md` for the same path condensed to a single
122
+ read, and `docs/guides/what-the-gates-are-telling-you.md` for what to do if a station denies
123
+ an action instead of completing it.
@@ -0,0 +1,95 @@
1
+ # Track 2: Auto, hand delivery to the agent
2
+
3
+ ## Who it is for and what you will have done
4
+
5
+ For someone who has seen the stages once (track 1) and now wants to hand the work to the
6
+ agent, watch it move through the gates and reports on its own, and learn how to check in on
7
+ it and step back in later. After this track, one small intent will have been delivered by the
8
+ agent end to end, and pausing and resuming that delivery will feel familiar.
9
+
10
+ ## Before you start
11
+
12
+ Run `/plastic-update` first, so the commands below match what is actually installed.
13
+
14
+ Work in a sandbox: a throwaway git repository, or a global-store intent. Nothing in this
15
+ track touches a real project.
16
+
17
+ ## Stations
18
+
19
+ ### 1. Board a small intent and choose auto
20
+
21
+ Start from an active intent (create one first with `/plastic-intent-creating` if none
22
+ exists, the same way as track 1 station 1). Type `/plastic-auto`.
23
+
24
+ Artifact: the delivery lock arms, and the agent announces it is taking over the intent for
25
+ autonomous delivery.
26
+
27
+ Checkpoint: name the one precondition auto needs before it will start: an active intent must
28
+ already exist for the intent you name. (Say "auto" with nothing named, and it can pick a
29
+ queued intent from the dashboard's queue itself.)
30
+
31
+ ### 2. What auto does, and what stays with the user
32
+
33
+ No new command at this station. Watch how the work splits.
34
+
35
+ Auto owns How (the plan, the checklist, the action files) and Exec (the code, the tests, the
36
+ mechanical close) from here on. Inside Exec it follows a few fixed habits: it syncs its
37
+ working copy with the main line before touching anything, ticks each task the moment it
38
+ lands rather than batching several into one later edit, and independently verifies its own
39
+ work (running the test suite, or checking the changed file) before presenting anything back
40
+ to you. For a task shaped like an audit or a sweep, checking many files rather than building
41
+ one artifact, it also drops a short methods report into `resources/` before the gate, so you
42
+ can review how it checked, not just what it found.
43
+
44
+ The user keeps two things: the rulings made along the way, and the review points, moments
45
+ auto is built to pause for, such as confirming a project path or stopping before a
46
+ destructive action with no safe way back. When auto tells you to run a command yourself
47
+ ("run /plastic-intent-speccing"), that is an instruction for you to type; it is a different
48
+ thing from the prompts auto hands to its own dispatched subagents, and the two are never
49
+ mixed up in what it tells you.
50
+
51
+ Checkpoint: name one thing auto will always stop and ask about, rather than decide alone.
52
+
53
+ ### 3. Walking the gates
54
+
55
+ No new command. Auto still honors every hard gate a guided session would hit: the delivery
56
+ lock (one owner at a time), the code gate (shut until `plan.md` and `checklist.md` exist),
57
+ and the create gate (intents only come from the tool that makes them, never hand-authored).
58
+ One gate, retrieval, is advisory only and never blocks anything; it just adds a note.
59
+
60
+ Checkpoint: read one gate message from the run so far and say whether it is one of the hard
61
+ gates or the one advisory note.
62
+
63
+ ### 4. Reading the per-stage reports
64
+
65
+ No new command. At each stage boundary (What, Why, How, Exec, Done) the agent briefs in a
66
+ fixed three-line shape: State (what happened and why it matters), Risk (the one thing that
67
+ could bite, or "nothing flagged"), and Call (the decision left to the user, or the call the
68
+ agent is taking on its own).
69
+
70
+ Checkpoint: in the most recent report, point at the State line, the Risk line, and the Call
71
+ line.
72
+
73
+ ### 5. Continue and where-was-I after time away
74
+
75
+ Type `/plastic-intent-continuing`.
76
+
77
+ Artifact: the current state, presented and then the session stops. If a specific intent is
78
+ named, the agent reads its stage and savepoint and resumes exactly there, rather than
79
+ starting over.
80
+
81
+ Checkpoint: after stepping away and running this command, name the stage the intent resumed
82
+ at and how that matched what was actually on disk.
83
+
84
+ ## Wrap and where to go next
85
+
86
+ Auto keeps the same stages and the same gates as guided; the only difference is who steers.
87
+ Read `docs/guides/pick-your-mode.md` for the honest trade-off between guided and auto, and
88
+ `docs/guides/using-plastic-with-claude-code.md` for how that choice feels day to day and how
89
+ it connects to roadmap-driven delivery. For denial messages met along the way, read
90
+ `docs/guides/what-the-gates-are-telling-you.md`.
91
+
92
+ Note on terms: "guided" means the user starts each stage with a command and the agent
93
+ narrows the thinking inside it, the same shape track 1 walked. "Manual", editing project
94
+ files outside the lifecycle entirely, is not a third mode; it is the anti-pattern both guided
95
+ and auto exist to avoid.