@zalom/plastic 2.0.0-alpha.8 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PLASTIC.md +13 -136
- package/README.md +357 -133
- package/agents/plastic-enforcer.md +20 -15
- package/agents/plastic-executor.md +15 -4
- package/agents/plastic-node-research.md +30 -0
- package/agents/plastic-node-verify.md +28 -0
- package/agents/plastic-node-work.md +33 -0
- package/agents/{plastic-advisor.md → plastic-primary-advisor.md} +7 -9
- package/agents/{plastic-faux-advisor.md → plastic-secondary-advisor.md} +9 -12
- package/assets/plastic-logo.svg +1 -0
- package/bin/crap +4 -0
- package/bin/lib/context_budget.rb +43 -6
- package/bin/lib/skill_census.rb +839 -0
- package/bin/plastic +6 -0
- package/bin/plastic-skill-census +114 -0
- package/bin/test +24 -4
- package/bin/verify-change +345 -0
- package/config_asks.yml +4 -4
- package/deprecations.yml +1 -1
- package/{skills/agent-advisor/references → docs/help}/advisor-protocol.md +19 -24
- package/{skills/auto/references → docs/help}/agent-architecture.md +16 -14
- package/{skills/conventions/references → docs/help}/completion-and-done.md +15 -16
- package/docs/help/human-report-contract.md +152 -0
- package/{skills/conventions/references → docs/help}/knowledge-graph.md +9 -0
- package/{skills/conventions/references → docs/help}/locks-and-worktrees.md +23 -13
- package/{skills/conventions/references → docs/help}/maintenance-and-revisions.md +1 -1
- package/{skills/conventions/references → docs/help}/roadmaps.md +2 -2
- package/{skills/tutorial/references → docs/help}/track-1-guided.md +28 -47
- package/{skills/tutorial/references → docs/help}/track-2-auto.md +8 -8
- package/{skills/tutorial/references → docs/help}/track-3-projects-and-roadmaps.md +24 -17
- package/hooks/call-budget +4 -0
- package/hooks/hooks.json +24 -0
- package/hooks/message-display +62 -1
- package/hooks/session-start +5 -1
- package/hooks/statusline +32 -27
- package/hooks/stop +5 -0
- package/package.json +5 -3
- package/scripts/append-ledger +2 -1
- package/scripts/dashboard.rb +267 -16
- package/scripts/day-summary +2 -1
- package/scripts/doctor.rb +680 -39
- package/scripts/end-intent +238 -22
- package/scripts/exec-worktree +5 -5
- package/scripts/file-session-intent +2 -1
- package/scripts/graph-measure +249 -0
- package/scripts/hook-call-budget +222 -0
- package/scripts/hook-capture +24 -123
- package/scripts/hook-close +2 -1
- package/scripts/hook-message-display +19 -5
- package/scripts/hook-record +24 -16
- package/scripts/hook-savepoint +27 -3
- package/scripts/hook-session-start +359 -321
- package/scripts/hook-stop +58 -0
- package/scripts/index-projection +74 -0
- package/scripts/insight-append +17 -4
- package/scripts/install.rb +9 -7
- package/scripts/lib/action_graph_shim.rb +279 -0
- package/scripts/lib/active_delivery.rb +105 -0
- package/scripts/lib/agent_models.rb +63 -25
- package/scripts/lib/arm.rb +48 -83
- package/scripts/lib/atomic_write.rb +31 -0
- package/scripts/lib/backup.rb +65 -0
- package/scripts/lib/cli/command.rb +92 -0
- package/scripts/lib/cli/commands/auto.rb +18 -0
- package/scripts/lib/cli/commands/auto_brief.rb +44 -0
- package/scripts/lib/cli/commands/auto_lock.rb +99 -0
- package/scripts/lib/cli/commands/auto_report.rb +50 -0
- package/scripts/lib/cli/commands/auto_take.rb +31 -0
- package/scripts/lib/cli/commands/backup.rb +43 -0
- package/scripts/lib/cli/commands/checkout.rb +25 -0
- package/scripts/lib/cli/commands/continue.rb +66 -0
- package/scripts/lib/cli/commands/doctor.rb +81 -0
- package/scripts/lib/cli/commands/feedback.rb +40 -0
- package/scripts/lib/cli/commands/help.rb +69 -0
- package/scripts/lib/cli/commands/hook.rb +32 -0
- package/scripts/lib/cli/commands/index.rb +23 -0
- package/scripts/lib/cli/commands/install.rb +21 -0
- package/scripts/lib/cli/commands/installer_verb.rb +37 -0
- package/scripts/lib/cli/commands/intent.rb +19 -0
- package/scripts/lib/cli/commands/intent_answer.rb +37 -0
- package/scripts/lib/cli/commands/intent_command.rb +53 -0
- package/scripts/lib/cli/commands/intent_end.rb +62 -0
- package/scripts/lib/cli/commands/intent_new.rb +62 -0
- package/scripts/lib/cli/commands/intent_note.rb +43 -0
- package/scripts/lib/cli/commands/intent_rule.rb +36 -0
- package/scripts/lib/cli/commands/intent_show.rb +32 -0
- package/scripts/lib/cli/commands/intent_spec.rb +44 -0
- package/scripts/lib/cli/commands/intent_step.rb +71 -0
- package/scripts/lib/cli/commands/intent_verify.rb +26 -0
- package/scripts/lib/cli/commands/migrate.rb +16 -0
- package/scripts/lib/cli/commands/migrate_stores.rb +31 -0
- package/scripts/lib/cli/commands/next.rb +54 -0
- package/scripts/lib/cli/commands/project.rb +19 -0
- package/scripts/lib/cli/commands/project_links.rb +42 -0
- package/scripts/lib/cli/commands/project_list.rb +20 -0
- package/scripts/lib/cli/commands/project_new.rb +72 -0
- package/scripts/lib/cli/commands/query.rb +31 -0
- package/scripts/lib/cli/commands/render.rb +33 -0
- package/scripts/lib/cli/commands/roadmap.rb +19 -0
- package/scripts/lib/cli/commands/roadmap_check.rb +54 -0
- package/scripts/lib/cli/commands/roadmap_log.rb +54 -0
- package/scripts/lib/cli/commands/roadmap_migrate.rb +53 -0
- package/scripts/lib/cli/commands/roadmap_next.rb +70 -0
- package/scripts/lib/cli/commands/roadmap_show.rb +45 -0
- package/scripts/lib/cli/commands/rollback.rb +20 -0
- package/scripts/lib/cli/commands/search.rb +60 -0
- package/scripts/lib/cli/commands/session.rb +18 -0
- package/scripts/lib/cli/commands/session_commit.rb +42 -0
- package/scripts/lib/cli/commands/session_handoff.rb +34 -0
- package/scripts/lib/cli/commands/session_summary.rb +35 -0
- package/scripts/lib/cli/commands/status.rb +68 -0
- package/scripts/lib/cli/commands/subcommand_list.rb +36 -0
- package/scripts/lib/cli/commands/sync.rb +46 -0
- package/scripts/lib/cli/commands/uninstall.rb +20 -0
- package/scripts/lib/cli/commands/update.rb +20 -0
- package/scripts/lib/cli/commands/version.rb +53 -0
- package/scripts/lib/cli/frontier.rb +86 -0
- package/scripts/lib/cli/intent_progress.rb +36 -0
- package/scripts/lib/cli/legacy.rb +80 -0
- package/scripts/lib/cli/output.rb +137 -0
- package/scripts/lib/cli/scope.rb +134 -0
- package/scripts/lib/cli/table.rb +65 -0
- package/scripts/lib/cli.rb +94 -0
- package/scripts/lib/codex_adapter.rb +198 -0
- package/scripts/lib/compact_instructions.rb +13 -5
- package/scripts/lib/core_integrity.rb +71 -0
- package/scripts/lib/dashboard_screen.rb +40 -0
- package/scripts/lib/data_boundary.rb +132 -0
- package/scripts/lib/day_summary.rb +30 -16
- package/scripts/lib/doctor_core.rb +114 -38
- package/scripts/lib/doctor_session_ledger.rb +5 -53
- package/scripts/lib/engine_permissions.rb +88 -0
- package/scripts/lib/exec_worktree.rb +24 -21
- package/scripts/lib/feedback_report.rb +1 -1
- package/scripts/lib/graph_edges.rb +137 -0
- package/scripts/lib/graph_file.rb +246 -0
- package/scripts/lib/graph_measure.rb +645 -0
- package/scripts/lib/graph_measure_budget.rb +409 -0
- package/scripts/lib/graph_measure_cohorts.rb +487 -0
- package/scripts/lib/graph_measure_models.rb +413 -0
- package/scripts/lib/graph_measure_report.rb +532 -0
- package/scripts/lib/graph_tree.rb +98 -0
- package/scripts/lib/guarded_append.rb +155 -0
- package/scripts/lib/handoff.rb +40 -13
- package/scripts/lib/harness_adapter.rb +184 -0
- package/scripts/lib/hook_registry.rb +27 -3
- package/scripts/lib/hook_replay.rb +229 -0
- package/scripts/lib/index_entry.rb +62 -0
- package/scripts/lib/index_projection.rb +201 -0
- package/scripts/lib/insights.rb +1 -1
- package/scripts/lib/installer_core.rb +532 -71
- package/scripts/lib/intent_screen.rb +9 -6
- package/scripts/lib/intent_screen_ansi.rb +73 -12
- package/scripts/lib/intent_validator.rb +2 -2
- package/scripts/lib/lock.rb +10 -11
- package/scripts/lib/message_display.rb +377 -173
- package/scripts/lib/meter_watch.rb +185 -0
- package/scripts/lib/node_file.rb +234 -0
- package/scripts/lib/node_ids.rb +99 -0
- package/scripts/lib/node_input.rb +913 -0
- package/scripts/lib/node_input_compatibility.rb +62 -0
- package/scripts/lib/node_ledger.rb +386 -0
- package/scripts/lib/node_progress.rb +153 -0
- package/scripts/lib/node_return.rb +204 -0
- package/scripts/lib/node_worktree.rb +337 -0
- package/scripts/lib/outcome_report.rb +440 -0
- package/scripts/lib/preflight.rb +4 -6
- package/scripts/lib/project_config.rb +46 -0
- package/scripts/lib/project_validator.rb +3 -2
- package/scripts/lib/qmd_sync.rb +8 -7
- package/scripts/lib/ready_set.rb +462 -0
- package/scripts/lib/reference_archive.rb +45 -0
- package/scripts/lib/release_guard.rb +18 -0
- package/scripts/lib/report_screen.rb +1460 -74
- package/scripts/lib/rlm/corpus.rb +13 -0
- package/scripts/lib/rlm/probe.rb +29 -0
- package/scripts/lib/rlm/query.rb +22 -0
- package/scripts/lib/roadmap_graph.rb +210 -0
- package/scripts/lib/roadmap_migration.rb +95 -0
- package/scripts/lib/roadmap_queue.rb +158 -8
- package/scripts/lib/roadmap_render.rb +150 -0
- package/scripts/lib/roadmap_savepoint.rb +64 -14
- package/scripts/lib/runner_absorb.rb +703 -0
- package/scripts/lib/runner_answer.rb +206 -0
- package/scripts/lib/runner_core.rb +194 -0
- package/scripts/lib/runner_dispatch.rb +525 -0
- package/scripts/lib/runner_policy.rb +191 -0
- package/scripts/lib/runner_proposals.rb +275 -0
- package/scripts/lib/runner_rewind.rb +201 -0
- package/scripts/lib/runner_sweep.rb +231 -0
- package/scripts/lib/runner_until_empty.rb +252 -0
- package/scripts/lib/runner_watch.rb +389 -0
- package/scripts/lib/savepoint.rb +141 -19
- package/scripts/lib/scaffold_intent.rb +6 -3
- package/scripts/lib/screen_paint.rb +555 -0
- package/scripts/lib/screens/dashboard.rb +20 -0
- package/scripts/lib/screens/plan.rb +18 -0
- package/scripts/lib/screens/roadmap.rb +15 -0
- package/scripts/lib/search_index.rb +55 -0
- package/scripts/lib/session_close.rb +30 -28
- package/scripts/lib/session_git.rb +25 -18
- package/scripts/lib/session_ledger.rb +48 -4
- package/scripts/lib/session_usage.rb +190 -0
- package/scripts/lib/sqlite.rb +22 -0
- package/scripts/lib/stop_gate.rb +95 -0
- package/scripts/lib/store_discovery.rb +7 -6
- package/scripts/lib/store_layout.rb +54 -0
- package/scripts/lib/store_provisioning.rb +2 -1
- package/scripts/lib/store_sync.rb +85 -0
- package/scripts/lib/stores_move.rb +93 -0
- package/scripts/lib/verify_intent.rb +36 -8
- package/scripts/lib/version_number.rb +48 -0
- package/scripts/lib/work_graph.rb +59 -0
- package/scripts/lib/work_graph_validator.rb +201 -0
- package/scripts/lib/worktree.rb +27 -32
- package/scripts/lib/worktree_sweep.rb +6 -5
- package/scripts/link-suggest +2 -1
- package/scripts/meter-watch +57 -0
- package/scripts/migrate-to-global +1 -1
- package/scripts/new-intent +4 -13
- package/scripts/node-input +92 -0
- package/scripts/node-run +225 -0
- package/scripts/node-transition +291 -0
- package/scripts/outcome-report +74 -0
- package/scripts/plastic-lock +42 -33
- package/scripts/promote-session-item +3 -2
- package/scripts/read-config +53 -9
- package/scripts/ready-set +126 -0
- package/scripts/release-check +123 -0
- package/scripts/report-screen +192 -30
- package/scripts/roadmap-graph +119 -0
- package/scripts/roadmap-savepoint +7 -0
- package/scripts/runner +581 -0
- package/scripts/savepoint-note +11 -9
- package/scripts/session-commit +2 -1
- package/scripts/session-usage +56 -0
- package/scripts/skill-lint +115 -6
- package/scripts/spawn-preamble +2 -2
- package/scripts/update.rb +25 -4
- package/scripts/validate-work-graph +39 -0
- package/scripts/verify-intent +3 -2
- package/scripts/write-handoff +2 -1
- package/templates/agents.md +7 -7
- package/templates/config.yml +16 -9
- package/templates/dashboard-screen.md +22 -0
- package/templates/display-fixture.md +21 -0
- package/templates/graph.md +16 -0
- package/templates/index.md +1 -1
- package/templates/intent-screen.md +1 -1
- package/templates/node-decision.md +11 -0
- package/templates/node-research.md +13 -0
- package/templates/node-verify.md +13 -0
- package/templates/node-work.md +22 -0
- package/templates/outcome.md +15 -2
- package/templates/project.yml +1 -1
- package/templates/render.css +10 -0
- package/templates/report-plan.md +15 -0
- package/templates/report-roadmap-delivered.md +10 -0
- package/templates/report-roadmap-plan.md +9 -0
- package/templates/report-roadmap-state.md +9 -0
- package/templates/report-state.md +1 -1
- package/templates/roadmap.md +13 -0
- package/bin/plastic.js +0 -70
- package/scripts/lib/bridge.rb +0 -116
- package/skills/agent-advisor/SKILL.md +0 -92
- package/skills/auto/SKILL.md +0 -295
- package/skills/auto/evals/evals.json +0 -255
- package/skills/auto/references/end-tail.md +0 -66
- package/skills/auto/references/human-report-contract.md +0 -78
- package/skills/conventions/SKILL.md +0 -29
- package/skills/dashboard/SKILL.md +0 -169
- package/skills/dashboard/evals/evals.json +0 -38
- package/skills/dashboard/references/classification.md +0 -22
- package/skills/dashboard/templates/dashboard-global.md +0 -20
- package/skills/dashboard/templates/dashboard-project.md +0 -19
- package/skills/direct/SKILL.md +0 -66
- package/skills/direct/references/request-signals.md +0 -59
- package/skills/doctor/SKILL.md +0 -299
- package/skills/doctor/report.md +0 -102
- package/skills/feedback/SKILL.md +0 -98
- package/skills/feedback/references/transport-and-privacy.md +0 -65
- package/skills/feedback/report.md +0 -36
- package/skills/install/SKILL.md +0 -217
- package/skills/intent-continuing/SKILL.md +0 -154
- package/skills/intent-continuing/references/board-fill.md +0 -43
- package/skills/intent-continuing/references/boarding-matrix.md +0 -34
- package/skills/intent-continuing/references/context-management.md +0 -28
- package/skills/intent-continuing/references/liveness-ranking.md +0 -57
- package/skills/intent-creating/SKILL.md +0 -164
- package/skills/intent-creating/evals/evals.json +0 -72
- package/skills/intent-creating/references/lifecycle.md +0 -81
- package/skills/intent-creating/references/wikilinks.md +0 -8
- package/skills/intent-ending/SKILL.md +0 -173
- package/skills/intent-ending/evals/evals.json +0 -74
- package/skills/intent-executing/SKILL.md +0 -170
- package/skills/intent-executing/evals/evals.json +0 -66
- package/skills/intent-executing/implementer-prompt.md +0 -42
- package/skills/intent-executing/spec-reviewer-prompt.md +0 -27
- package/skills/intent-speccing/SKILL.md +0 -130
- package/skills/intent-speccing/evals/evals.json +0 -126
- package/skills/intent-speccing/references/design-principles.md +0 -44
- package/skills/intent-speccing/references/per-section-fill-rules.md +0 -92
- package/skills/intent-speccing/references/self-verify-checklist.md +0 -37
- package/skills/project-creating/SKILL.md +0 -162
- package/skills/project-creating/references/hubs-projects.md +0 -55
- package/skills/project-creating/references/project-scaffolding.md +0 -97
- package/skills/releasing/SKILL.md +0 -337
- package/skills/releasing/references/deprecations.md +0 -60
- package/skills/releasing/references/promotion-and-tagging.md +0 -66
- package/skills/releasing/references/release-lines.md +0 -105
- package/skills/roadmap/SKILL.md +0 -64
- package/skills/roadmap/references/file-format.md +0 -124
- package/skills/roadmap/references/operations.md +0 -112
- package/skills/rollback/SKILL.md +0 -91
- package/skills/tutorial/SKILL.md +0 -65
- package/skills/tutorial/evals/evals.json +0 -186
- package/skills/uninstall/SKILL.md +0 -75
- package/skills/update/SKILL.md +0 -126
- /package/{skills/auto/references → docs/help}/agent-report-contract.md +0 -0
- /package/{skills/intent-executing → docs/help}/code-quality-reviewer-prompt.md +0 -0
- /package/{skills/conventions/references → docs/help}/lifecycle-and-savepoints.md +0 -0
- /package/{skills/intent-executing → docs/help}/plan-reviewer-prompt.md +0 -0
package/README.md
CHANGED
|
@@ -1,204 +1,428 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/zalom/plastic/main/assets/plastic-logo.svg"
|
|
3
|
+
alt="Plastic" width="360">
|
|
4
|
+
</h1>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<strong>One command that turns an intent into a durable, linked record of decisions, plans, delivery and outcomes</strong>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/@zalom/plastic"><img src="https://img.shields.io/npm/v/@zalom/plastic" alt="npm version"></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@zalom/plastic"><img src="https://img.shields.io/npm/dm/@zalom/plastic" alt="npm downloads"></a>
|
|
13
|
+
<a href="https://github.com/zalom/plastic/actions/workflows/test.yml"><img src="https://github.com/zalom/plastic/actions/workflows/test.yml/badge.svg" alt="CI"></a>
|
|
14
|
+
<a href="https://github.com/zalom/plastic/releases"><img src="https://img.shields.io/github/v/release/zalom/plastic" alt="Release"></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/npm/l/@zalom/plastic" alt="License: MIT"></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="#installation">Install</a> •
|
|
20
|
+
<a href="#quick-start">Quick start</a> •
|
|
21
|
+
<a href="#commands">Commands</a> •
|
|
22
|
+
<a href="docs/guide/getting-started/troubleshooting.md">Troubleshooting</a> •
|
|
23
|
+
<a href="docs/contributing/ARCHITECTURE.md">Architecture</a> •
|
|
24
|
+
<a href="MANIFESTO.md">Manifesto</a>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Plastic is an intent-based system for AI-assisted work. You do not always start with a task.
|
|
30
|
+
You start with an intent, such as "I want users who are locked out to recover access safely."
|
|
31
|
+
Plastic carries that intent through four stages, What, Why, How and Exec, and leaves a
|
|
32
|
+
readable record of how the idea became real.
|
|
33
|
+
|
|
34
|
+
Plastic is named after neuroplasticity, the brain's ability to change as it learns.
|
|
35
|
+
|
|
36
|
+
## What Plastic does
|
|
37
|
+
|
|
38
|
+
Plastic keeps the shape of the work fixed and leaves the thinking to you and your agent.
|
|
39
|
+
|
|
40
|
+
| You want to | What Plastic does |
|
|
41
|
+
|-------------|-------------------|
|
|
42
|
+
| Start from a rough idea | Creates one intent directory with an id, a slug and a born-complete intent file |
|
|
43
|
+
| Keep the reasons | Records each ruling in the intent, then consolidates them into `spec.md` |
|
|
44
|
+
| Plan the work | Holds the plan as a graph of nodes, and names the next ready step |
|
|
45
|
+
| Resume tomorrow | Prints where a project stands and the next action in one line |
|
|
46
|
+
| Hand work to an agent team | Arms a delivery lock, briefs each role and reports the result |
|
|
47
|
+
| Close the work | Generates `outcome.md` from the record and moves the intent to Completed |
|
|
48
|
+
| Find an old decision | Searches every store, ranked, with one excerpt for each match |
|
|
49
|
+
| Run many projects | Keeps one store for each project, plus a global store, all in plain Markdown and Git |
|
|
50
|
+
| Steer a long delivery | Reads a roadmap as a graph and names the entry most worth continuing |
|
|
51
|
+
| Protect the record | Writes one archive of the three databases and the config |
|
|
52
|
+
|
|
53
|
+
Every result ends with a `next:` line and a `because:` line. The `--json` option prints the
|
|
54
|
+
same result as data with stable keys.
|
|
55
|
+
|
|
56
|
+
## How the record is built
|
|
57
|
+
|
|
58
|
+
Each intent is one directory. It carries the same small set of files at every stage.
|
|
59
|
+
|
|
60
|
+
| Stage | Question | File on disk |
|
|
61
|
+
|-------|----------|--------------|
|
|
62
|
+
| What | What is the intention? | `{id}--slug.md` |
|
|
63
|
+
| Why | What context, evidence and decisions shape it? | `spec.md` |
|
|
64
|
+
| How | What is the plan? | `plan.md`, `checklist.md`, `actions/` |
|
|
65
|
+
| Exec | What was delivered? | `outcome.md` |
|
|
66
|
+
|
|
67
|
+
The files are plain Markdown in a Git repository that you own. See
|
|
68
|
+
[the architecture](docs/architecture.md) for the full store layout.
|
|
69
|
+
|
|
70
|
+
## Installation
|
|
71
|
+
|
|
72
|
+
Plastic needs Ruby 4.0 or later. The npm path also needs Node.js 18 or later, because `npx`
|
|
73
|
+
fetches the package. After the install, the `plastic` command runs on Ruby alone.
|
|
74
|
+
|
|
75
|
+
### npm (recommended)
|
|
2
76
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[](https://github.com/zalom/plastic/actions/workflows/test.yml)
|
|
77
|
+
```bash
|
|
78
|
+
npx -y @zalom/plastic install --claude
|
|
79
|
+
```
|
|
7
80
|
|
|
8
|
-
|
|
81
|
+
Replace `--claude` with `--codex` for Codex CLI, or pass both flags.
|
|
9
82
|
|
|
10
|
-
|
|
83
|
+
The npm path puts the command at `~/.plastic/bin/plastic` and does not change your `PATH`.
|
|
84
|
+
Link the command into a directory that is on your `PATH`:
|
|
11
85
|
|
|
12
|
-
|
|
86
|
+
```bash
|
|
87
|
+
mkdir -p ~/.local/bin
|
|
88
|
+
ln -sf ~/.plastic/bin/plastic ~/.local/bin/plastic
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Alpha channel
|
|
92
|
+
|
|
93
|
+
Plastic 2.0 is on the alpha channel.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx -y @zalom/plastic@alpha install --claude
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Quick install without npm
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
curl -fsSL https://raw.githubusercontent.com/zalom/plastic/main/install.sh | sh
|
|
103
|
+
plastic install --claude
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`install.sh` takes the newest release on a channel that carries the archive. The default
|
|
107
|
+
channel is stable; `PLASTIC_CHANNEL` picks another:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
curl -fsSL https://raw.githubusercontent.com/zalom/plastic/main/install.sh | PLASTIC_CHANNEL=alpha sh
|
|
111
|
+
```
|
|
13
112
|
|
|
113
|
+
No stable 2.0 release carries the archive yet, so the default channel still installs the 1.x
|
|
114
|
+
line. Use the alpha channel for the `plastic` command, or npm. To move an installed Plastic
|
|
115
|
+
to another channel later, run `plastic update --beta` or `plastic update --alpha`.
|
|
14
116
|
|
|
15
|
-
|
|
117
|
+
### A clean Mac
|
|
16
118
|
|
|
17
|
-
|
|
119
|
+
macOS ships Ruby 2.6, which is too old. Install a newer Ruby first:
|
|
18
120
|
|
|
19
|
-
|
|
121
|
+
```bash
|
|
122
|
+
curl https://mise.run | sh
|
|
123
|
+
mise use --global ruby@4.0
|
|
124
|
+
```
|
|
20
125
|
|
|
21
|
-
|
|
126
|
+
### Verify the installation
|
|
22
127
|
|
|
23
|
-
|
|
128
|
+
```bash
|
|
129
|
+
plastic version # Prints the installed version and the file it came from
|
|
130
|
+
plastic doctor # Checks the install and the stores
|
|
131
|
+
```
|
|
24
132
|
|
|
25
|
-
|
|
133
|
+
## Quick start
|
|
26
134
|
|
|
27
|
-
|
|
135
|
+
```bash
|
|
136
|
+
# 1. Install for your agent
|
|
137
|
+
npx -y @zalom/plastic@alpha install --claude # Claude Code
|
|
138
|
+
npx -y @zalom/plastic@alpha install --codex # Codex CLI
|
|
139
|
+
npx -y @zalom/plastic@alpha install --all # Every supported agent
|
|
28
140
|
|
|
29
|
-
|
|
141
|
+
# 2. See what is open
|
|
142
|
+
plastic status
|
|
30
143
|
|
|
31
|
-
|
|
144
|
+
# 3. Start an intent
|
|
145
|
+
plastic intent new "Add a --version flag"
|
|
32
146
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- one place for context, decisions, plans, and outcomes
|
|
37
|
-
- links between the ideas that shaped the work and the ideas it creates
|
|
147
|
+
# 4. Ask what to do next, at any time
|
|
148
|
+
plastic next
|
|
149
|
+
```
|
|
38
150
|
|
|
39
|
-
|
|
151
|
+
Restart your agent after the install. For the full path, read
|
|
152
|
+
[your first intent in 10 minutes](docs/guides/your-first-intent-in-10-minutes.md).
|
|
40
153
|
|
|
41
|
-
|
|
154
|
+
## How it works
|
|
42
155
|
|
|
43
|
-
|
|
156
|
+
```
|
|
157
|
+
You or your agent plastic ~/.plastic
|
|
158
|
+
----------------- ------- ----------
|
|
159
|
+
plastic intent new "..." --> creates the intent --> store/12--slug/12--slug.md
|
|
160
|
+
plastic intent rule 12 --> records a ruling --> the intent file, then spec.md
|
|
161
|
+
plastic intent step 12 --> runs the next node --> graph.md, nodes/, savepoint.md
|
|
162
|
+
plastic intent end 12 --> generates the outcome --> outcome.md, INDEX.md
|
|
163
|
+
|
|
164
|
+
^ |
|
|
165
|
+
| next: one command because: one reason |
|
|
166
|
+
+--------------------------------------------------------------+
|
|
167
|
+
```
|
|
44
168
|
|
|
45
|
-
|
|
46
|
-
independent builder who works across multiple sessions, has ideas before
|
|
47
|
-
they have intents, and feels the cost of losing reasoning between agents,
|
|
48
|
-
contexts, and days.**
|
|
169
|
+
Plastic follows four rules:
|
|
49
170
|
|
|
50
|
-
|
|
171
|
+
1. **Commands print state and rules.** The judgment stays with you and the agent.
|
|
172
|
+
2. **The ledger is append-only.** `savepoint.md` holds one line for each event, so a new
|
|
173
|
+
session resumes from the last line.
|
|
174
|
+
3. **Status is derived.** Plastic reads what is ready from the graph and the ledger.
|
|
175
|
+
4. **Nothing leaves the machine.** Plastic makes no model call and sends none of your files anywhere.
|
|
51
176
|
|
|
52
|
-
|
|
177
|
+
## Commands
|
|
53
178
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
179
|
+
### Orientation
|
|
180
|
+
```bash
|
|
181
|
+
plastic status # Active work in every store
|
|
182
|
+
plastic continue # Where this project stands and what runs next
|
|
183
|
+
plastic continue --project blog # The same, for a named project
|
|
184
|
+
plastic next # The next action in one line
|
|
185
|
+
plastic next --why # The next action, with the reasoning
|
|
186
|
+
```
|
|
60
187
|
|
|
61
|
-
|
|
188
|
+
### Intents
|
|
189
|
+
```bash
|
|
190
|
+
plastic intent new "LINE" # Create an intent
|
|
191
|
+
plastic intent new "LINE" --parent 12 # Create a branch of intent 12
|
|
192
|
+
plastic intent show 12 # Print the state screen
|
|
193
|
+
plastic intent spec 12 # State screen, then the speccing rules
|
|
194
|
+
plastic intent rule 12 "TEXT" # Record a ruling in Insights
|
|
195
|
+
plastic intent note 12 "TEXT" # Append a savepoint note
|
|
196
|
+
plastic intent step 12 # Run the next ready step of the graph
|
|
197
|
+
plastic intent answer 12 --node n3 --decision "TEXT" # Answer a node that needs a decision
|
|
198
|
+
plastic intent verify 12 # Run the merge-gate checks
|
|
199
|
+
plastic intent end 12 --delivered --summary "TEXT" # Close as delivered
|
|
200
|
+
plastic intent end 12 --abandoned --summary "TEXT" # Close as abandoned
|
|
201
|
+
```
|
|
62
202
|
|
|
63
|
-
|
|
203
|
+
### Projects
|
|
204
|
+
```bash
|
|
205
|
+
plastic project list # Every store this machine holds
|
|
206
|
+
plastic project new blog --path ~/code/blog # Register and provision a project
|
|
207
|
+
plastic project links # Rebuild every Links section from frontmatter
|
|
208
|
+
```
|
|
64
209
|
|
|
210
|
+
### Roadmaps
|
|
65
211
|
```bash
|
|
66
|
-
|
|
212
|
+
plastic roadmap next # The roadmap most worth continuing
|
|
213
|
+
plastic roadmap show SLUG # The state screen of one roadmap
|
|
214
|
+
plastic roadmap check SLUG # Find cycles and dangling ids in the graph
|
|
215
|
+
plastic roadmap migrate SLUG # Write the graph section from the batches
|
|
216
|
+
plastic roadmap log SLUG EVENT "TEXT" # Append a line to the roadmap ledger
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Auto teams
|
|
220
|
+
```bash
|
|
221
|
+
plastic auto take 12 # Arm the delivery lock for this session
|
|
222
|
+
plastic auto brief 12 --role executor # Print the spawn preamble for one role
|
|
223
|
+
plastic auto report 12 # Completion report, then the review rules
|
|
224
|
+
plastic auto lock status 12 # Inspect the delivery lock
|
|
225
|
+
plastic auto lock fix 12 # Repair a broken lock
|
|
226
|
+
plastic auto lock release 12 # Release the lock
|
|
67
227
|
```
|
|
68
228
|
|
|
69
|
-
|
|
229
|
+
### Sessions
|
|
230
|
+
```bash
|
|
231
|
+
plastic session summary # Open items and recent activity in the day ledger
|
|
232
|
+
plastic session commit "SUMMARY" # Commit one verified checklist item
|
|
233
|
+
plastic session handoff # Write this session's hand-off
|
|
234
|
+
```
|
|
70
235
|
|
|
236
|
+
### Search
|
|
71
237
|
```bash
|
|
72
|
-
|
|
238
|
+
plastic index # Rebuild the search index from every Markdown file
|
|
239
|
+
plastic search recovery flow # Ranked matches, one excerpt each
|
|
240
|
+
plastic search recovery --project blog --limit 5
|
|
241
|
+
plastic search --ask "Why did we drop the queue?" # Search with a whole question
|
|
242
|
+
plastic query "SELECT path FROM doc LIMIT 5" # One read-only SQL statement
|
|
243
|
+
```
|
|
73
244
|
|
|
74
|
-
|
|
245
|
+
### Stores and databases
|
|
246
|
+
```bash
|
|
247
|
+
plastic sync # Bring the store files and the three databases level
|
|
248
|
+
plastic sync --dry-run # Show what would change
|
|
249
|
+
plastic checkout # Restore missing store files from the databases
|
|
250
|
+
plastic backup # One archive of the three databases and the config
|
|
251
|
+
plastic backup --list # Name, size and date of each archive
|
|
252
|
+
plastic migrate stores --dry-run # Preview the move of every store under stores/
|
|
253
|
+
plastic migrate stores # Move them, behind a full copy of the home
|
|
254
|
+
plastic render FILE # Print one Markdown file as an HTML page
|
|
75
255
|
```
|
|
76
256
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
257
|
+
### Product
|
|
258
|
+
```bash
|
|
259
|
+
plastic install --claude # Install into Claude Code
|
|
260
|
+
plastic install --reinstall --claude # Repair an install
|
|
261
|
+
plastic update # Next version on the current channel
|
|
262
|
+
plastic update --alpha # Move to the alpha channel
|
|
263
|
+
plastic rollback # List the versions this machine has run
|
|
264
|
+
plastic rollback --version 2.0.0-alpha.27
|
|
265
|
+
plastic uninstall --all # Remove Plastic from every agent. Your stores stay.
|
|
266
|
+
plastic doctor # Check the install and the stores
|
|
267
|
+
plastic doctor --core # The fast check that runs at session start
|
|
268
|
+
plastic doctor --json # The full report as data
|
|
269
|
+
plastic version # The installed version
|
|
270
|
+
```
|
|
80
271
|
|
|
81
|
-
|
|
272
|
+
### Help and feedback
|
|
273
|
+
```bash
|
|
274
|
+
plastic help # All commands and help topics
|
|
275
|
+
plastic help intent end # The usage line of one command
|
|
276
|
+
plastic help roadmaps # One help topic
|
|
277
|
+
plastic feedback "TITLE" < report.md # Save a problem report and print a link that files it
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Global options
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
--json # Print the result as data with stable keys
|
|
284
|
+
-h, --help # Print the usage line of the command
|
|
285
|
+
--project SLUG # On continue, next and search, name a project other than the current one
|
|
286
|
+
```
|
|
82
287
|
|
|
83
|
-
|
|
288
|
+
The installer commands do not take `--json`. `plastic doctor` does, and prints its full
|
|
289
|
+
report as the document.
|
|
84
290
|
|
|
85
|
-
|
|
86
|
-
something you want to accomplish, explore, or understand.
|
|
291
|
+
## Examples
|
|
87
292
|
|
|
88
|
-
|
|
89
|
-
|
|
293
|
+
**Active work in every store:**
|
|
294
|
+
```
|
|
295
|
+
$ plastic status
|
|
296
|
+
global 0 active
|
|
297
|
+
blog 1 active 14
|
|
298
|
+
shop 2 active 7, 9
|
|
90
299
|
|
|
91
|
-
|
|
300
|
+
next: plastic continue --project shop
|
|
301
|
+
because: the working directory is inside shop
|
|
302
|
+
```
|
|
92
303
|
|
|
93
|
-
|
|
304
|
+
**The next action:**
|
|
305
|
+
```
|
|
306
|
+
$ plastic next
|
|
307
|
+
next work 9 in Batch 2: checkout flow
|
|
94
308
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
| Why | What context, evidence, and decisions shape it? | Specification | spec.md |
|
|
99
|
-
| How | What is the plan? | Plan and checklist | plan.md, checklist.md, actions/ACTION_1.md ... ACTION_N.md |
|
|
100
|
-
| Exec | What was actually delivered? | Outcome | outcome.md |
|
|
309
|
+
next: read ~/.plastic/projects/shop/store/9--checkout-flow/plan.md
|
|
310
|
+
because: 9 is first on the frontier of the roadmap
|
|
311
|
+
```
|
|
101
312
|
|
|
102
|
-
|
|
313
|
+
**The installed version:**
|
|
314
|
+
```
|
|
315
|
+
$ plastic version
|
|
316
|
+
version 2.0.0-alpha.28
|
|
317
|
+
source ~/.local/share/plastic/package.json
|
|
103
318
|
|
|
104
|
-
|
|
105
|
-
|
|
319
|
+
next: plastic status
|
|
320
|
+
because: the command line works, so read the work next
|
|
321
|
+
```
|
|
106
322
|
|
|
107
|
-
|
|
323
|
+
The slugs and ids in these examples are samples.
|
|
108
324
|
|
|
109
|
-
|
|
110
|
-
| ---- | -------------- |
|
|
111
|
-
| `{id}--slug.md` | The intent itself: intent line, context, decisions |
|
|
112
|
-
| `spec.md` | The Why, consolidated into one contract for the plan |
|
|
113
|
-
| `plan.md`, `checklist.md`, `actions/` | The How: the plan and its execution registry |
|
|
114
|
-
| `outcome.md` | The Exec record: what actually shipped |
|
|
325
|
+
## Agent hooks
|
|
115
326
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
finished one fast.
|
|
327
|
+
The installer registers hooks in your agent. At session start a hook runs the fast doctor,
|
|
328
|
+
loads the conventions and prints the open items of the day. Each hook calls one launcher:
|
|
119
329
|
|
|
120
|
-
|
|
330
|
+
```bash
|
|
331
|
+
plastic hook EVENT # The agent calls this, not you
|
|
332
|
+
```
|
|
121
333
|
|
|
122
|
-
|
|
123
|
-
| ----- | ------------- |
|
|
124
|
-
| What | Describe the idea in plain words; Plastic scaffolds the intent |
|
|
125
|
-
| Why | Explore it, one ruling at a time, then consolidate into `spec.md` |
|
|
126
|
-
| How | Turn `spec.md` into `plan.md` and `checklist.md` |
|
|
127
|
-
| Exec | Build the change, verify it, tick the checklist |
|
|
128
|
-
| Done | `outcome.md` records what shipped; the index moves the intent to Completed |
|
|
334
|
+
Run `plastic install --reinstall --claude` when hooks do not fire.
|
|
129
335
|
|
|
130
|
-
|
|
131
|
-
[your first intent in 10 minutes](docs/guides/your-first-intent-in-10-minutes.md), or run
|
|
132
|
-
`plastic-tutorial` for an interactive, hands-on walkthrough of three different ways to work.
|
|
336
|
+
## Supported AI tools
|
|
133
337
|
|
|
134
|
-
|
|
338
|
+
| Tool | Install | State |
|
|
339
|
+
|------|---------|-------|
|
|
340
|
+
| **Claude Code** | `plastic install --claude` | Supported |
|
|
341
|
+
| **Codex CLI** | `plastic install --codex` | Supported |
|
|
342
|
+
| **Hermes** | none | A packaging target only |
|
|
135
343
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
| Mode | `plastic-tutorial`, `plastic-auto` |
|
|
139
|
-
| Intent | `plastic-intent-creating`, `plastic-intent-continuing`, `plastic-intent-speccing`, `plastic-intent-executing`, `plastic-intent-ending` |
|
|
140
|
-
| Project and delivery | `plastic-project-creating`, `plastic-roadmap`, `plastic-releasing` |
|
|
141
|
-
| Product | `plastic-install`, `plastic-update`, `plastic-uninstall`, `plastic-rollback`, `plastic-doctor` |
|
|
344
|
+
The `plastic` command itself needs no agent. It runs in any shell with Ruby. See
|
|
345
|
+
[harness support](docs/reference/harness-adapters.md) for the detail on each agent.
|
|
142
346
|
|
|
143
|
-
|
|
347
|
+
Seven agents ship with Plastic: an enforcer that leads an auto team, an executor, three node
|
|
348
|
+
agents for work, verification and research, and two advisors for hard decisions.
|
|
144
349
|
|
|
145
|
-
|
|
146
|
-
plan a machine can build from exactly. Read
|
|
147
|
-
[pick your mode](docs/guides/pick-your-mode.md) to decide how much of that to hand over.
|
|
350
|
+
## Configuration
|
|
148
351
|
|
|
149
|
-
|
|
352
|
+
`~/.plastic/config.yml`:
|
|
150
353
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
the frontier reasoning discipline inline, much cheaper; Fable 5 is the frontier model
|
|
161
|
-
itself. Choose the default at install, switch it any time.
|
|
354
|
+
```yaml
|
|
355
|
+
project_roots: ~/.plastic/projects # Where Plastic looks for projects
|
|
356
|
+
stale_threshold_days: 3 # Age at which a future intent is shown for triage
|
|
357
|
+
context_offer_tokens: 150000 # Context size at which the agent offers to compact
|
|
358
|
+
context_insist_tokens: 250000 # Context size at which the agent insists
|
|
359
|
+
agent:
|
|
360
|
+
type: claude-code # The agent that runs Plastic
|
|
361
|
+
parallel_mode: agent-teams # agent-teams or linear
|
|
362
|
+
```
|
|
162
363
|
|
|
163
|
-
|
|
164
|
-
have a new enough Ruby. macOS ships Ruby 2.6, which is too old, so a clean Mac needs
|
|
165
|
-
a newer one first:
|
|
364
|
+
Install-time choices:
|
|
166
365
|
|
|
366
|
+
```bash
|
|
367
|
+
plastic install --claude --advisor secondary # Set the default advisor
|
|
368
|
+
plastic install --claude --no-advisor # Install no advisor agent
|
|
369
|
+
plastic install --claude --statusline plastic # Use the Plastic status line
|
|
167
370
|
```
|
|
168
|
-
|
|
169
|
-
|
|
371
|
+
|
|
372
|
+
See the [configuration guide](docs/guide/getting-started/configuration.md) for every key and file.
|
|
373
|
+
|
|
374
|
+
### Uninstall
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
plastic uninstall --all # Remove hooks, agents and conventions from every agent
|
|
170
378
|
```
|
|
171
379
|
|
|
172
|
-
|
|
173
|
-
Ruby it finds is too old. Bun users can run `bunx` in place of `npx`; Bun is never
|
|
174
|
-
required.
|
|
380
|
+
Your stores under `~/.plastic` stay.
|
|
175
381
|
|
|
176
|
-
##
|
|
382
|
+
## What changed in 2.0
|
|
177
383
|
|
|
178
|
-
Plastic
|
|
384
|
+
Plastic 2.0 moves from prose skills to one command with direct results.
|
|
179
385
|
|
|
180
|
-
|
|
181
|
-
|
|
386
|
+
- **One `plastic` command.** More than 40 commands replace the skills. The package ships no skill directories.
|
|
387
|
+
- **Direct results.** Every command ends with `next:` and `because:`, and takes `--json`.
|
|
388
|
+
- **Plans are graphs.** An intent holds nodes and edges, and a ready set names what runs next.
|
|
389
|
+
- **A ledger with refusals.** Node transitions are appended to `savepoint.md`, and an invalid transition is refused.
|
|
390
|
+
- **Generated outcomes.** `outcome.md` is built from the graph, the nodes and the ledger at the close.
|
|
391
|
+
- **Roadmaps are graphs too.** `plastic roadmap check` finds cycles and dangling ids.
|
|
392
|
+
- **Search without a service.** One SQLite file holds a full-text index of every store.
|
|
393
|
+
- **Three databases.** `work_graph.db`, `knowledge_graph.db` and `references.db` hold the record, and the files are a checkout of it.
|
|
394
|
+
- **Backup and migrate.** One archive command, and a store move that runs behind a full copy of the home.
|
|
395
|
+
- **Two advisors, medium effort by default.** Summon the Primary Advisor or the Secondary Advisor on purpose.
|
|
396
|
+
- **Codex CLI as a second agent.** The same install, with OpenAI model ids for each role.
|
|
397
|
+
- **Publishing from branches.** A push to `alpha`, `beta` or `main` publishes to the matching npm channel with provenance.
|
|
182
398
|
|
|
183
|
-
[changelog](CHANGELOG.md).
|
|
399
|
+
The [changelog](CHANGELOG.md) holds one line for each release.
|
|
184
400
|
|
|
185
401
|
## Documentation
|
|
186
402
|
|
|
187
|
-
- [
|
|
188
|
-
|
|
189
|
-
- [
|
|
190
|
-
|
|
191
|
-
- [
|
|
192
|
-
|
|
403
|
+
- **[INSTALL.md](INSTALL.md)**: every install path.
|
|
404
|
+
- **[docs/guide/](docs/guide/index.md)**: getting started with the `plastic` command.
|
|
405
|
+
- **[docs/guides/](docs/guides/index.md)**: task guides, from your first intent to picking a mode.
|
|
406
|
+
- **[docs/usage/](docs/usage/FEATURES.md)**: features, the audit guide and tracking.
|
|
407
|
+
- **[docs/architecture.md](docs/architecture.md)**: the structure, the store layout and the stage table.
|
|
408
|
+
- **[docs/internals.md](docs/internals.md)**: how Plastic stays deterministic.
|
|
409
|
+
- **[docs/contributing/](docs/contributing/ARCHITECTURE.md)**: the command architecture, the coding practices and the gates.
|
|
410
|
+
|
|
411
|
+
## Privacy
|
|
412
|
+
|
|
413
|
+
Plastic runs on your machine. It makes no model call and sends none of your files anywhere.
|
|
414
|
+
Two things use the network: the update check hook and `plastic update`, which ask the npm
|
|
415
|
+
registry for the newest version. See [SECURITY.md](SECURITY.md) for every file the installer writes.
|
|
416
|
+
|
|
417
|
+
## Built with Plastic
|
|
418
|
+
|
|
419
|
+
Plastic is developed through Plastic. The roadmap, the intents, the plans, the decisions and
|
|
420
|
+
the outcomes behind each release are part of the record.
|
|
193
421
|
|
|
194
|
-
##
|
|
422
|
+
## Contributing
|
|
195
423
|
|
|
196
|
-
|
|
197
|
-
and overwritten on every update. Deeper doctrine lives in the `plastic-conventions` skill,
|
|
198
|
-
loaded on demand by the skills that need it. Project-specific rules live in `AGENTS.md`.
|
|
199
|
-
Run `plastic-doctor` to check installation health; it compares files against
|
|
200
|
-
the manifests, checks store state, and runs automatically after every update.
|
|
424
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
201
425
|
|
|
202
426
|
## License
|
|
203
427
|
|
|
204
|
-
MIT
|
|
428
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -5,6 +5,7 @@ description: |
|
|
|
5
5
|
record, has the plan reviewed before code, dispatches one executor, reviews
|
|
6
6
|
by risk, and closes.
|
|
7
7
|
model: opus
|
|
8
|
+
effort: medium
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
You are the Plastic Enforcer, the lead of an auto team. You ARE the orchestrating session,
|
|
@@ -14,8 +15,8 @@ spanning the whole What->Why->How->Exec cycle; you are not a separately dispatch
|
|
|
14
15
|
orchestrating main session on the best available thinking model (Fable, Opus, or whatever
|
|
15
16
|
supersedes them). This is advice only: it changes no behavior. Dispatched agents keep their
|
|
16
17
|
configured model and never resolve to Fable unless an explicit `agents.models.<name>` config
|
|
17
|
-
override names Fable for that role.
|
|
18
|
-
|
|
18
|
+
override names Fable for that role. Primary Advisor and Secondary Advisor are consultation roles
|
|
19
|
+
the user or the main session summons
|
|
19
20
|
deliberately; the auto pipeline never dispatches them.
|
|
20
21
|
|
|
21
22
|
## Your Responsibilities
|
|
@@ -26,15 +27,20 @@ deliberately; the auto pipeline never dispatches them.
|
|
|
26
27
|
2.0, intent 304): record the rulings, write `spec.md`, then `plan.md`, at least one real
|
|
27
28
|
`actions/ACTION_N.md` carrying a failure-mode matrix (one row per operation: the failure and
|
|
28
29
|
the test that catches it), and `checklist.md`. One consolidated `ACTION_1.md` by default,
|
|
29
|
-
never an empty `actions/`.
|
|
30
|
+
never an empty `actions/`. Every name given to a node, file, or field comes from the concept
|
|
31
|
+
family it lives under, graph engineering, the Plastic concepts coined on top of it, and the
|
|
32
|
+
software and AI engineering concepts those rest on; a gap is a design finding to raise, not
|
|
33
|
+
a word to coin.
|
|
30
34
|
3. **Have the plan reviewed before code** - dispatch one adversarial plan reviewer on
|
|
31
|
-
`plastic
|
|
32
|
-
|
|
35
|
+
`plastic help plan-reviewer-prompt`; merge every finding into the spec, the matrix, and
|
|
36
|
+
the tests.
|
|
33
37
|
4. **Dispatch one executor, tests first** - the executor commits the matrix's tests red, then
|
|
34
|
-
builds, then drives the full suite green; you verify
|
|
38
|
+
builds, then drives the full suite green; you verify tick-versus-diff at the
|
|
39
|
+
post-execution review and again before the merge. A mismatch is a review finding, not a
|
|
40
|
+
cleanup you perform silently.
|
|
35
41
|
5. **Review by risk** - dispatch the post-execution reviewer only when the auto skill's risk
|
|
36
42
|
rule fires; otherwise the green suite is the review.
|
|
37
|
-
6. **Close** - `outcome.md`, then `plastic
|
|
43
|
+
6. **Close** - `outcome.md`, then `plastic intent end`, which releases the worktree, clears
|
|
38
44
|
the lock, points the session back at the day ledger, and reindexes last.
|
|
39
45
|
|
|
40
46
|
**Dispatch-time model contract.** Each pinned agent carries its `model:` in frontmatter, and
|
|
@@ -48,8 +54,8 @@ dispatch call's model parameter, alongside the spawn-preamble live-state injecti
|
|
|
48
54
|
|
|
49
55
|
1. Take the intent; record the rulings in `## Context` + `### Decisions`; write `spec.md`.
|
|
50
56
|
2. Write `plan.md`, the action files with their matrix, and `checklist.md`; dispatch the plan
|
|
51
|
-
reviewer;
|
|
52
|
-
3. Dispatch the executor through `plastic
|
|
57
|
+
reviewer; merge the review findings.
|
|
58
|
+
3. Dispatch the executor through `plastic intent step` with the whole consolidated action
|
|
53
59
|
pasted in; require the red commit before the code and a green suite after it. Sequential,
|
|
54
60
|
one team per intent, on one branch when files are shared.
|
|
55
61
|
4. Apply the risk rule; when it fires, dispatch the reviewer and re-dispatch the executor for
|
|
@@ -60,11 +66,10 @@ dispatch call's model parameter, alongside the spawn-preamble live-state injecti
|
|
|
60
66
|
|
|
61
67
|
Once per delivery, at How with the plan and the matrix ready and before any code, brief the
|
|
62
68
|
human in EM-to-CTO voice: impact first, the one risk that matters, then the call. In auto mode
|
|
63
|
-
the briefing informs and does not wait. The shape lives in
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
the two never merge.
|
|
69
|
+
the briefing informs and does not wait. The shape lives in `plastic help
|
|
70
|
+
human-report-contract`. This is separate from the intent 74 report contract (`plastic help
|
|
71
|
+
agent-report-contract`), the internal structured handoff a dispatched agent sends back to you;
|
|
72
|
+
you consume that report to write the human briefing, and the two never merge.
|
|
68
73
|
|
|
69
74
|
## Constraints
|
|
70
75
|
|
|
@@ -73,5 +78,5 @@ the two never merge.
|
|
|
73
78
|
`savepoint.md`, the diff), never from a hook you assume fired.
|
|
74
79
|
- The plan reviewer and the post-execution reviewer are fresh agents, never you and never the
|
|
75
80
|
executor.
|
|
76
|
-
- Dispatch through `plastic
|
|
81
|
+
- Dispatch through `plastic intent step`, Plastic's own engine. On a harness with no agent
|
|
77
82
|
dispatch, walk the five steps yourself and say so in `## Insights`.
|