@zalom/plastic 2.0.0-alpha.27 → 2.0.0-alpha.29

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 (207) hide show
  1. package/PLASTIC.md +13 -139
  2. package/README.md +345 -133
  3. package/agents/plastic-enforcer.md +9 -10
  4. package/agents/plastic-executor.md +1 -1
  5. package/bin/crap +4 -0
  6. package/bin/lib/context_budget.rb +35 -1
  7. package/bin/lib/skill_census.rb +839 -0
  8. package/bin/plastic +6 -0
  9. package/bin/plastic-skill-census +114 -0
  10. package/bin/verify-change +345 -0
  11. package/deprecations.yml +1 -1
  12. package/{skills/agent-advisor/references → docs/help}/advisor-protocol.md +4 -7
  13. package/{skills/auto/references → docs/help}/agent-architecture.md +7 -7
  14. package/{skills/conventions/references → docs/help}/completion-and-done.md +1 -1
  15. package/{skills/auto/references → docs/help}/human-report-contract.md +17 -19
  16. package/{skills/conventions/references → docs/help}/roadmaps.md +2 -2
  17. package/{skills/tutorial/references → docs/help}/track-1-guided.md +8 -8
  18. package/{skills/tutorial/references → docs/help}/track-2-auto.md +5 -5
  19. package/{skills/tutorial/references → docs/help}/track-3-projects-and-roadmaps.md +24 -17
  20. package/package.json +3 -2
  21. package/scripts/append-ledger +2 -1
  22. package/scripts/dashboard.rb +10 -9
  23. package/scripts/day-summary +2 -1
  24. package/scripts/doctor.rb +48 -42
  25. package/scripts/end-intent +2 -8
  26. package/scripts/file-session-intent +2 -1
  27. package/scripts/hook-capture +4 -3
  28. package/scripts/hook-close +2 -1
  29. package/scripts/hook-record +3 -2
  30. package/scripts/hook-savepoint +3 -2
  31. package/scripts/hook-session-start +5 -4
  32. package/scripts/hook-stop +2 -1
  33. package/scripts/insight-append +1 -2
  34. package/scripts/install.rb +3 -1
  35. package/scripts/lib/active_delivery.rb +1 -1
  36. package/scripts/lib/arm.rb +2 -1
  37. package/scripts/lib/backup.rb +65 -0
  38. package/scripts/lib/cli/command.rb +85 -0
  39. package/scripts/lib/cli/commands/auto.rb +18 -0
  40. package/scripts/lib/cli/commands/auto_brief.rb +44 -0
  41. package/scripts/lib/cli/commands/auto_lock.rb +60 -0
  42. package/scripts/lib/cli/commands/auto_report.rb +50 -0
  43. package/scripts/lib/cli/commands/auto_take.rb +25 -0
  44. package/scripts/lib/cli/commands/backup.rb +43 -0
  45. package/scripts/lib/cli/commands/checkout.rb +25 -0
  46. package/scripts/lib/cli/commands/continue.rb +66 -0
  47. package/scripts/lib/cli/commands/doctor.rb +20 -0
  48. package/scripts/lib/cli/commands/feedback.rb +40 -0
  49. package/scripts/lib/cli/commands/help.rb +69 -0
  50. package/scripts/lib/cli/commands/hook.rb +32 -0
  51. package/scripts/lib/cli/commands/index.rb +23 -0
  52. package/scripts/lib/cli/commands/install.rb +21 -0
  53. package/scripts/lib/cli/commands/installer_verb.rb +37 -0
  54. package/scripts/lib/cli/commands/intent.rb +19 -0
  55. package/scripts/lib/cli/commands/intent_answer.rb +37 -0
  56. package/scripts/lib/cli/commands/intent_command.rb +53 -0
  57. package/scripts/lib/cli/commands/intent_end.rb +61 -0
  58. package/scripts/lib/cli/commands/intent_new.rb +62 -0
  59. package/scripts/lib/cli/commands/intent_note.rb +43 -0
  60. package/scripts/lib/cli/commands/intent_rule.rb +36 -0
  61. package/scripts/lib/cli/commands/intent_show.rb +25 -0
  62. package/scripts/lib/cli/commands/intent_spec.rb +44 -0
  63. package/scripts/lib/cli/commands/intent_step.rb +43 -0
  64. package/scripts/lib/cli/commands/intent_verify.rb +26 -0
  65. package/scripts/lib/cli/commands/migrate.rb +16 -0
  66. package/scripts/lib/cli/commands/migrate_stores.rb +31 -0
  67. package/scripts/lib/cli/commands/next.rb +49 -0
  68. package/scripts/lib/cli/commands/project.rb +19 -0
  69. package/scripts/lib/cli/commands/project_links.rb +42 -0
  70. package/scripts/lib/cli/commands/project_list.rb +20 -0
  71. package/scripts/lib/cli/commands/project_new.rb +72 -0
  72. package/scripts/lib/cli/commands/query.rb +31 -0
  73. package/scripts/lib/cli/commands/render.rb +25 -0
  74. package/scripts/lib/cli/commands/roadmap.rb +19 -0
  75. package/scripts/lib/cli/commands/roadmap_check.rb +44 -0
  76. package/scripts/lib/cli/commands/roadmap_log.rb +54 -0
  77. package/scripts/lib/cli/commands/roadmap_next.rb +34 -0
  78. package/scripts/lib/cli/commands/roadmap_show.rb +45 -0
  79. package/scripts/lib/cli/commands/rollback.rb +20 -0
  80. package/scripts/lib/cli/commands/search.rb +60 -0
  81. package/scripts/lib/cli/commands/session.rb +18 -0
  82. package/scripts/lib/cli/commands/session_commit.rb +42 -0
  83. package/scripts/lib/cli/commands/session_handoff.rb +34 -0
  84. package/scripts/lib/cli/commands/session_summary.rb +35 -0
  85. package/scripts/lib/cli/commands/status.rb +68 -0
  86. package/scripts/lib/cli/commands/subcommand_list.rb +36 -0
  87. package/scripts/lib/cli/commands/sync.rb +46 -0
  88. package/scripts/lib/cli/commands/uninstall.rb +20 -0
  89. package/scripts/lib/cli/commands/update.rb +20 -0
  90. package/scripts/lib/cli/commands/version.rb +53 -0
  91. package/scripts/lib/cli/frontier.rb +84 -0
  92. package/scripts/lib/cli/legacy.rb +50 -0
  93. package/scripts/lib/cli/output.rb +102 -0
  94. package/scripts/lib/cli/scope.rb +127 -0
  95. package/scripts/lib/cli/table.rb +64 -0
  96. package/scripts/lib/cli.rb +94 -0
  97. package/scripts/lib/compact_instructions.rb +8 -0
  98. package/scripts/lib/day_summary.rb +4 -3
  99. package/scripts/lib/doctor_core.rb +7 -32
  100. package/scripts/lib/doctor_session_ledger.rb +2 -1
  101. package/scripts/lib/feedback_report.rb +1 -1
  102. package/scripts/lib/graph_measure_models.rb +3 -1
  103. package/scripts/lib/index_entry.rb +9 -0
  104. package/scripts/lib/installer_core.rb +73 -19
  105. package/scripts/lib/intent_screen.rb +3 -3
  106. package/scripts/lib/lock.rb +2 -2
  107. package/scripts/lib/node_input.rb +3 -2
  108. package/scripts/lib/preflight.rb +4 -6
  109. package/scripts/lib/project_config.rb +2 -1
  110. package/scripts/lib/project_validator.rb +3 -2
  111. package/scripts/lib/qmd_sync.rb +8 -7
  112. package/scripts/lib/reference_archive.rb +45 -0
  113. package/scripts/lib/release_guard.rb +2 -0
  114. package/scripts/lib/report_screen.rb +4 -3
  115. package/scripts/lib/rlm/corpus.rb +13 -0
  116. package/scripts/lib/rlm/probe.rb +29 -0
  117. package/scripts/lib/rlm/query.rb +22 -0
  118. package/scripts/lib/roadmap_queue.rb +2 -2
  119. package/scripts/lib/roadmap_savepoint.rb +1 -1
  120. package/scripts/lib/runner_absorb.rb +3 -2
  121. package/scripts/lib/search_index.rb +55 -0
  122. package/scripts/lib/session_git.rb +4 -3
  123. package/scripts/lib/sqlite.rb +22 -0
  124. package/scripts/lib/store_discovery.rb +7 -6
  125. package/scripts/lib/store_layout.rb +54 -0
  126. package/scripts/lib/store_provisioning.rb +2 -1
  127. package/scripts/lib/store_sync.rb +85 -0
  128. package/scripts/lib/stores_move.rb +93 -0
  129. package/scripts/lib/verify_intent.rb +2 -7
  130. package/scripts/lib/version_number.rb +48 -0
  131. package/scripts/lib/work_graph.rb +59 -0
  132. package/scripts/lib/worktree.rb +3 -8
  133. package/scripts/lib/worktree_sweep.rb +3 -2
  134. package/scripts/link-suggest +2 -1
  135. package/scripts/migrate-to-global +1 -1
  136. package/scripts/new-intent +3 -12
  137. package/scripts/plastic-lock +3 -2
  138. package/scripts/promote-session-item +3 -2
  139. package/scripts/release-check +10 -5
  140. package/scripts/report-screen +1 -1
  141. package/scripts/session-commit +2 -1
  142. package/scripts/spawn-preamble +2 -2
  143. package/scripts/update.rb +25 -4
  144. package/scripts/write-handoff +2 -1
  145. package/templates/agents.md +6 -6
  146. package/templates/render.css +10 -0
  147. package/bin/plastic.js +0 -70
  148. package/skills/agent-advisor/SKILL.md +0 -84
  149. package/skills/auto/SKILL.md +0 -297
  150. package/skills/auto/evals/evals.json +0 -255
  151. package/skills/auto/references/end-tail.md +0 -64
  152. package/skills/conventions/SKILL.md +0 -29
  153. package/skills/dashboard/SKILL.md +0 -180
  154. package/skills/dashboard/evals/evals.json +0 -38
  155. package/skills/dashboard/references/classification.md +0 -22
  156. package/skills/dashboard/templates/dashboard-global.md +0 -20
  157. package/skills/dashboard/templates/dashboard-project.md +0 -19
  158. package/skills/direct/SKILL.md +0 -66
  159. package/skills/direct/references/request-signals.md +0 -59
  160. package/skills/doctor/SKILL.md +0 -305
  161. package/skills/doctor/report.md +0 -102
  162. package/skills/feedback/SKILL.md +0 -98
  163. package/skills/feedback/references/transport-and-privacy.md +0 -65
  164. package/skills/feedback/report.md +0 -36
  165. package/skills/install/SKILL.md +0 -215
  166. package/skills/intent-continuing/SKILL.md +0 -156
  167. package/skills/intent-continuing/references/board-fill.md +0 -52
  168. package/skills/intent-continuing/references/boarding-matrix.md +0 -35
  169. package/skills/intent-continuing/references/context-management.md +0 -28
  170. package/skills/intent-continuing/references/liveness-ranking.md +0 -57
  171. package/skills/intent-creating/SKILL.md +0 -89
  172. package/skills/intent-creating/evals/evals.json +0 -72
  173. package/skills/intent-creating/references/lifecycle.md +0 -81
  174. package/skills/intent-creating/references/wikilinks.md +0 -8
  175. package/skills/intent-ending/SKILL.md +0 -182
  176. package/skills/intent-ending/evals/evals.json +0 -74
  177. package/skills/intent-executing/SKILL.md +0 -87
  178. package/skills/intent-executing/evals/evals.json +0 -66
  179. package/skills/intent-executing/implementer-prompt.md +0 -47
  180. package/skills/intent-executing/spec-reviewer-prompt.md +0 -27
  181. package/skills/intent-speccing/SKILL.md +0 -136
  182. package/skills/intent-speccing/evals/evals.json +0 -126
  183. package/skills/intent-speccing/references/design-principles.md +0 -44
  184. package/skills/intent-speccing/references/per-section-fill-rules.md +0 -92
  185. package/skills/intent-speccing/references/self-verify-checklist.md +0 -37
  186. package/skills/project-creating/SKILL.md +0 -162
  187. package/skills/project-creating/references/hubs-projects.md +0 -55
  188. package/skills/project-creating/references/project-scaffolding.md +0 -97
  189. package/skills/releasing/SKILL.md +0 -376
  190. package/skills/releasing/references/deprecations.md +0 -60
  191. package/skills/releasing/references/promotion-and-tagging.md +0 -70
  192. package/skills/releasing/references/release-lines.md +0 -105
  193. package/skills/roadmap/SKILL.md +0 -90
  194. package/skills/roadmap/references/file-format.md +0 -134
  195. package/skills/roadmap/references/operations.md +0 -112
  196. package/skills/rollback/SKILL.md +0 -91
  197. package/skills/tutorial/SKILL.md +0 -66
  198. package/skills/tutorial/evals/evals.json +0 -186
  199. package/skills/uninstall/SKILL.md +0 -75
  200. package/skills/update/SKILL.md +0 -126
  201. /package/{skills/auto/references → docs/help}/agent-report-contract.md +0 -0
  202. /package/{skills/intent-executing → docs/help}/code-quality-reviewer-prompt.md +0 -0
  203. /package/{skills/conventions/references → docs/help}/knowledge-graph.md +0 -0
  204. /package/{skills/conventions/references → docs/help}/lifecycle-and-savepoints.md +0 -0
  205. /package/{skills/conventions/references → docs/help}/locks-and-worktrees.md +0 -0
  206. /package/{skills/conventions/references → docs/help}/maintenance-and-revisions.md +0 -0
  207. /package/{skills/intent-executing → docs/help}/plan-reviewer-prompt.md +0 -0
package/PLASTIC.md CHANGED
@@ -1,144 +1,18 @@
1
- # Plastic: Conventions
1
+ # Plastic
2
2
 
3
- > **This file is maintained by Plastic.** It is overwritten on update; do not edit it. Project
4
- > rules go in `AGENTS.md`. Deeper doctrine lives in the six `plastic-conventions` chapters
5
- > (`references/<chapter>.md`: knowledge-graph, lifecycle-and-savepoints, locks-and-worktrees,
6
- > completion-and-done, maintenance-and-revisions, roadmaps).
3
+ Plastic is one command, `plastic`. Run `plastic help` for the list of commands
4
+ and `plastic help <command>` for one command's options.
7
5
 
8
- ## Two Modes, Plus Auto
6
+ Open a session with `plastic status`, which shows the active work in every
7
+ store. Then run `plastic continue` for the project you are in: where it stands
8
+ and what runs next. `plastic next` prints that one action on its own.
9
9
 
10
- | Mode | "How to execute" comes from | Who runs it |
11
- |---|---|---|
12
- | **Direct** (default) | the prompt; at most one clarifying question | this session, inline; record after |
13
- | **Thinking** | a conversation: each ruling an insight, then the action files | this session, then as in direct |
14
- | **Auto** | a registered intent with a clear prompt | a background team under a lock and a worktree |
10
+ Every command ends with two lines. The `next:` line names the command to run
11
+ now, and you run it unless the person asks for something else. The `because:`
12
+ line gives the rule that chose it.
15
13
 
16
- There are no tiers: there is only work. The Coordinator loop (build, observe, repeat) wraps
17
- every intent: an intent's `## Insights` feed the observe phase.
14
+ Add `--json` to any command to get the same result as data.
18
15
 
19
- ## What is an Intent
20
-
21
- A directory in the store holding `{ID}--{slug}.md` and its record: a desire someone wants to
22
- accomplish, explore, or understand. The unit of work is always an intent, never a ticket. The
23
- day ledger is one too: the session intent, one per calendar day, that direct work records into.
24
-
25
- ```
26
- store/ID--three-to-five-words/
27
- {ID}--{slug}.md # required: Intent, Context, Outcome, Insights, Links sections
28
- checklist.md # while working: one item per executed request
29
- savepoint.md # while working: one line per milestone, append-only
30
- spec.md # backfilled at intent end: requests and decisions
31
- plan.md # backfilled: what was thought
32
- actions/ # backfilled: how it was done (at least one ACTION_N.md)
33
- outcome.md # backfilled: what changed; mandatory at Completed and Abandoned
34
- resources/ # {type}--{description}.md
35
- revisions.md # optional: append-only maintenance audit trail
36
- ```
37
-
38
- Frontmatter is identity and knowledge graph only, nothing operational: `id`, `intent`,
39
- `sources` (direct ascendants, loaded strongly), `chain` (what it spawned, traversed lightly),
40
- `created`, `author` (`human` or an agent name), `tags`. Only the day ledger adds `mode: direct`.
41
- IDs follow Luhmann's alternating convention (`1`, `1a`, `1a1`, `1a1a`); siblings increment
42
- (`1a`, `1b`).
43
-
44
- ## The Record: Stages as its Shape
45
-
46
- | Stage | Section | Skill |
47
- |---|---|---|
48
- | **What** | `## Intent` | `plastic-intent-creating` |
49
- | **Why** | `## Context` + Decisions | `plastic-intent-speccing` (optional) |
50
- | **How** | `graph.md` + `nodes/` | `plastic-intent-speccing` |
51
- | **Exec** | `## Outcome` | `plastic-intent-executing` drives the runner loop; `plastic-intent-ending` closes |
52
-
53
- Stages are the shape of the record, not checkpoints: nothing blocks a write. Work runs on
54
- `graph.md` and `nodes/`, driven by `runner step` (dispatch), `runner status` (read the
55
- ledger), and `runner answer` (close a `needs_decision` node). `spec.md` stays optional;
56
- `plan.md` and `checklist.md` exist only for a legacy intent with no `graph.md`.
57
-
58
- Invoke a skill for your harness: Claude Code uses the slash form (`/plastic-intent-creating`);
59
- Codex CLI uses a dollar prefix instead (`$plastic-intent-creating`), and may also select a skill implicitly by matching its description.
60
-
61
- `## Insights` is the append-only log of durable discoveries from every stage, newest at the
62
- bottom, never prepended, each entry prefixed `{utc-iso8601} · {stage} · {author}`. Write
63
- through `scripts/insight-append <intent_dir> <text> --stage S --author A`, which ships with
64
- every install and update, formats the prefix, validates it, and appends at the bottom.
65
-
66
- ## Agents and Skills
67
-
68
- An auto team is `plastic-enforcer` (the lead) plus `plastic-executor`; models live in
69
- `agents.models.<harness>.<agent>`.
70
-
71
- Twenty skills, each `plastic-<name>`, listed by your harness. `plastic-doctor` checks
72
- installation health (core, store, and full scopes). `plastic-feedback` turns a Plastic quirk,
73
- bug, or feature idea into a redacted local report and a prefilled GitHub issue URL; only the
74
- user submits it. If the user hits one, offer to invoke the plastic-feedback skill yourself.
75
- A release is a collection of intents; `plastic-releasing`
76
- runs the flow. A roadmap is an ordered, delivery-side collection; `plastic-roadmap` owns it.
77
-
78
- ## State System
79
-
80
- ```
81
- ~/.plastic/ # Global store (git, never pushed)
82
- INDEX.md # Structure note
83
- config.yml, projects.yml # Preferences; slug -> path
84
- store/ID--slug/ # Strategic intents
85
- store/.sessions/<YYYYMMDD>/ # Day ledger: <YYYYMMDD>.md, checklist.md, savepoint.md
86
- store/.tmp/<session>/ # heartbeat; git-ignored
87
- ~/.plastic/projects/{slug}/ # Project store: INDEX.md, AGENTS.md, roadmaps/, store/
88
- ```
89
-
90
- `<session>` is the first eight characters of the session id. Session start writes the heartbeat
91
- file, proof only that the session started. The delivery lock (`delivery.lock` in the intent
92
- directory) names the session delivering an intent, as its owner or a delegate; with no lock a
93
- session records into its day ledger. SessionStart matches the working directory against
94
- `projects.yml` to pick the project store.
95
-
96
- Naming: intents are `ID--three-to-five-words`, the file matching the directory
97
- (`1a1--slug/1a1--slug.md`); next id: `ruby ~/.plastic/scripts/folgezettel-id <parent_id>
98
- <store_path>`. Day ledgers are digits only (`20260828`), never hyphenated, never flattened to
99
- the store root, so the id allocator and every 1.x store walker skip them.
100
-
101
- `INDEX.md` is a Zettelkasten structure note, not a table of contents. Sections: `## Active`,
102
- `## Future`, `## Clusters`, `## Abandoned`, `## Completed`. One line per entry,
103
- `- [<id> <terse title>](<dir>) <tags>`, about 80 characters: a title, not a summary.
104
-
105
- ## Rules for Skills
106
-
107
- 1. Work records into an intent: the day ledger by default, a registered intent when the
108
- pointer names one. Researches are intents too; no separate folder.
109
- 2. Artifacts go in the intent directory, never in `docs/plans/` or `docs/specs/`: code goes in
110
- the project, everything else in the intent. Capture observations in `## Insights`; at the
111
- end write `outcome.md` and `## Outcome`, and update INDEX.md.
112
- 3. State is derived from what exists: `outcome.md` present means the intent is closed, so
113
- never write it before every node in `graph.md` reaches a terminal status (checklist.md
114
- fully checked, for a legacy intent). Status lives on graph nodes or checklist items,
115
- never on intents.
116
- 4. The global store is never pushed (`~/.plastic/` holds sensitive data); agent-created repos
117
- are private by default (`gh repo create --private`).
118
- 5. Intents are created only via `plastic-intent-creating`, never hand-authored. It
119
- self-verifies with `scripts/validate-intent`, so every intent is born complete; `--intent`
120
- text is escaped for double quotes and backslashes before it lands in frontmatter, and a
121
- reciprocal `chain:` append preserves the target intent's existing flow- or block-style
122
- entries.
123
-
124
- ## House Style (self-check)
125
-
126
- Answer or decision first; bullets over paragraphs; no preamble, no end-recap; one
127
- question-cluster at a time; reasoning stays in the thinking channel. Tables are the default
128
- for discovery deposits, research reports, and agent reports, and required for any listing of
129
- intents or multi-factor comparison.
130
-
131
- ## QMD, Enola, and Serena
132
-
133
- Recommendations, not obligations, and only when present. QMD: prefer `qmd search` /
134
- `qmd query` over the `plastic-*` collections to check for existing or related intents before
135
- treating work as new. Enola, or Serena when Enola is absent: prefer its symbol resolution (or
136
- `.enola/facts.jsonl`) for code navigation over grep.
137
-
138
- ## Auto Teams: the Lock and the Worktree
139
-
140
- Locks and worktrees exist only for auto teams. One team develops an intent at a time: a
141
- session-keyed `delivery.lock` in the intent directory, alive while its mtime lease is fresh.
142
- Code edits happen in the intent's worktree (`<repo>/.claude/worktrees/{id}--{slug}`, branch
143
- `plastic/{id}--{slug}`). A terminal intent is three signals that agree: INDEX
144
- `## Completed`/`## Abandoned`, `outcome.md`, and the terminal savepoint line; INDEX wins.
16
+ Exit codes: 0 succeeded, 1 failed, 2 called wrongly, 3 refused. Exit code 3
17
+ means the step belongs to the owner. Report what was refused and stop. Never
18
+ retry a refused command with a different flag.