@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.
- package/PLASTIC-reference.md +11 -11
- package/PLASTIC.md +7 -7
- package/README.md +47 -0
- package/agents/plastic-enforcer.md +3 -3
- package/agents/plastic-intent-curator.md +9 -10
- package/agents/plastic-spec-specialist.md +9 -6
- package/bin/plastic.js +2 -2
- package/package.json +1 -1
- package/scripts/dashboard.rb +1 -1
- package/scripts/doctor.rb +52 -4
- package/scripts/end-intent +330 -0
- package/scripts/hook-code-gate +1 -1
- package/scripts/hook-continue +1 -1
- package/scripts/hook-create-gate +2 -2
- package/scripts/hook-session-start +1 -1
- package/scripts/lib/bridge.rb +35 -3
- package/scripts/lib/installer_core.rb +8 -6
- package/scripts/lib/store_provisioning.rb +1 -1
- package/scripts/new-intent +1 -1
- package/scripts/{versions.rb → rollback.rb} +33 -41
- package/scripts/update.rb +1 -1
- package/skills/_active-intent-gate.md +1 -1
- package/skills/_decision-tables.md +50 -0
- package/skills/auto/SKILL.md +47 -64
- package/skills/auto/evals/evals.json +4 -4
- package/skills/auto/references/agent-architecture.md +2 -2
- package/skills/dashboard/SKILL.md +2 -2
- package/skills/doctor/SKILL.md +3 -3
- package/skills/install/SKILL.md +1 -1
- package/skills/{brainstorming → intent-brainstorming}/SKILL.md +43 -45
- package/skills/intent-brainstorming/evals/evals.json +67 -0
- package/skills/{brainstorming → intent-brainstorming}/references/design-principles.md +12 -17
- package/skills/{continuing → intent-continuing}/SKILL.md +3 -3
- package/skills/{continuing → intent-continuing}/evals/evals.json +24 -24
- package/skills/{creating-intent → intent-creating}/SKILL.md +3 -3
- package/skills/{creating-intent → intent-creating}/evals/evals.json +1 -1
- package/skills/{intent-discovery → intent-discovering}/SKILL.md +1 -1
- package/skills/intent-ending/SKILL.md +151 -0
- package/skills/intent-ending/evals/evals.json +74 -0
- package/skills/{executing-plan → intent-executing}/SKILL.md +75 -15
- package/skills/intent-executing/evals/evals.json +66 -0
- package/skills/{brainstorming-grill-me → intent-grilling}/SKILL.md +4 -4
- package/skills/{linking-intents → intent-linking}/SKILL.md +1 -1
- package/skills/{linking-intents → intent-linking}/evals/evals.json +1 -1
- package/skills/{lock → intent-locking}/SKILL.md +1 -1
- package/skills/{writing-plans → intent-planning}/SKILL.md +48 -20
- package/skills/intent-planning/evals/evals.json +66 -0
- package/skills/{writing-plans → intent-planning}/references/plan-format.md +31 -7
- package/skills/{research → intent-researching}/SKILL.md +2 -2
- package/skills/{research → intent-researching}/evals/evals.json +1 -1
- package/skills/{savepoint → intent-savepoint}/SKILL.md +1 -1
- package/skills/intent-speccing/SKILL.md +69 -0
- package/skills/intent-speccing/evals/evals.json +126 -0
- package/skills/intent-speccing/references/per-section-fill-rules.md +92 -0
- package/skills/intent-speccing/references/self-verify-checklist.md +38 -0
- package/skills/intent-starting/SKILL.md +2 -2
- package/skills/intent-starting/evals/evals.json +2 -2
- package/skills/{creating-project → project-creating}/SKILL.md +2 -2
- package/skills/releasing/SKILL.md +18 -14
- package/skills/{versions → rollback}/SKILL.md +30 -20
- package/skills/{creating-skills → skill-creating}/SKILL.md +2 -2
- package/skills/{creating-skills → skill-creating}/evals/evals.json +5 -5
- package/skills/{creating-skills → skill-creating}/references/progressive-disclosure.md +2 -2
- package/skills/{evaluating-skills → skill-evaluating}/SKILL.md +1 -1
- package/skills/{evaluating-skills → skill-evaluating}/evals/evals.json +3 -3
- package/skills/{intent-curator → store-curating}/SKILL.md +6 -7
- package/skills/{intent-curator → store-curating}/evals/evals.json +1 -1
- package/skills/{managing-index → store-indexing}/SKILL.md +6 -7
- package/skills/{managing-index → store-indexing}/evals/evals.json +1 -1
- package/skills/{add-project-store → store-provisioning}/SKILL.md +2 -2
- package/skills/tutorial/SKILL.md +65 -0
- package/skills/tutorial/evals/evals.json +186 -0
- package/skills/tutorial/references/track-1-guided.md +123 -0
- package/skills/tutorial/references/track-2-auto.md +95 -0
- package/skills/tutorial/references/track-3-projects-and-roadmaps.md +110 -0
- package/skills/update/SKILL.md +1 -1
- package/templates/agents.md +7 -7
- package/skills/brainstorming/evals/evals.json +0 -22
- /package/skills/{continuing → intent-continuing}/references/context-management.md +0 -0
- /package/skills/{creating-intent → intent-creating}/references/lifecycle.md +0 -0
- /package/skills/{creating-intent → intent-creating}/references/wikilinks.md +0 -0
- /package/skills/{executing-plan → intent-executing}/code-quality-reviewer-prompt.md +0 -0
- /package/skills/{executing-plan → intent-executing}/implementer-prompt.md +0 -0
- /package/skills/{executing-plan → intent-executing}/spec-reviewer-prompt.md +0 -0
- /package/skills/{linking-intents → intent-linking}/references/zettelkasten.md +0 -0
- /package/skills/{savepoint → intent-savepoint}/references/context-management.md +0 -0
- /package/skills/{creating-project → project-creating}/references/hubs-projects.md +0 -0
- /package/skills/{creating-project → project-creating}/references/project-scaffolding.md +0 -0
- /package/skills/{creating-skills → skill-creating}/references/agents.md +0 -0
- /package/skills/{creating-skills → skill-creating}/references/evals.md +0 -0
- /package/skills/{creating-skills → skill-creating}/references/hooks.md +0 -0
- /package/skills/{creating-skills → skill-creating}/references/scripts.md +0 -0
- /package/skills/{creating-skills → skill-creating}/references/skills.md +0 -0
- /package/skills/{creating-skills → skill-creating}/scripts/scaffold.rb +0 -0
- /package/skills/{evaluating-skills → skill-evaluating}/assets/eval-template.json +0 -0
- /package/skills/{evaluating-skills → skill-evaluating}/references/convention-checks.md +0 -0
- /package/skills/{evaluating-skills → skill-evaluating}/references/eval-methodology.md +0 -0
- /package/skills/{managing-index → store-indexing}/references/zettelkasten-linking.md +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: plastic-
|
|
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**
|
|
32
|
-
2. **Which store**
|
|
33
|
-
3. **Which intents**
|
|
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
|
|
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.
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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,
|
|
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.
|
|
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
|
|
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
|
-
name: plastic-
|
|
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
|
|
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.
|