@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.
- package/PLASTIC.md +13 -139
- package/README.md +345 -133
- package/agents/plastic-enforcer.md +9 -10
- package/agents/plastic-executor.md +1 -1
- package/bin/crap +4 -0
- package/bin/lib/context_budget.rb +35 -1
- package/bin/lib/skill_census.rb +839 -0
- package/bin/plastic +6 -0
- package/bin/plastic-skill-census +114 -0
- package/bin/verify-change +345 -0
- package/deprecations.yml +1 -1
- package/{skills/agent-advisor/references → docs/help}/advisor-protocol.md +4 -7
- package/{skills/auto/references → docs/help}/agent-architecture.md +7 -7
- package/{skills/conventions/references → docs/help}/completion-and-done.md +1 -1
- package/{skills/auto/references → docs/help}/human-report-contract.md +17 -19
- package/{skills/conventions/references → docs/help}/roadmaps.md +2 -2
- package/{skills/tutorial/references → docs/help}/track-1-guided.md +8 -8
- package/{skills/tutorial/references → docs/help}/track-2-auto.md +5 -5
- package/{skills/tutorial/references → docs/help}/track-3-projects-and-roadmaps.md +24 -17
- package/package.json +3 -2
- package/scripts/append-ledger +2 -1
- package/scripts/dashboard.rb +10 -9
- package/scripts/day-summary +2 -1
- package/scripts/doctor.rb +48 -42
- package/scripts/end-intent +2 -8
- package/scripts/file-session-intent +2 -1
- package/scripts/hook-capture +4 -3
- package/scripts/hook-close +2 -1
- package/scripts/hook-record +3 -2
- package/scripts/hook-savepoint +3 -2
- package/scripts/hook-session-start +5 -4
- package/scripts/hook-stop +2 -1
- package/scripts/insight-append +1 -2
- package/scripts/install.rb +3 -1
- package/scripts/lib/active_delivery.rb +1 -1
- package/scripts/lib/arm.rb +2 -1
- package/scripts/lib/backup.rb +65 -0
- package/scripts/lib/cli/command.rb +85 -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 +60 -0
- package/scripts/lib/cli/commands/auto_report.rb +50 -0
- package/scripts/lib/cli/commands/auto_take.rb +25 -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 +20 -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 +61 -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 +25 -0
- package/scripts/lib/cli/commands/intent_spec.rb +44 -0
- package/scripts/lib/cli/commands/intent_step.rb +43 -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 +49 -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 +25 -0
- package/scripts/lib/cli/commands/roadmap.rb +19 -0
- package/scripts/lib/cli/commands/roadmap_check.rb +44 -0
- package/scripts/lib/cli/commands/roadmap_log.rb +54 -0
- package/scripts/lib/cli/commands/roadmap_next.rb +34 -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 +84 -0
- package/scripts/lib/cli/legacy.rb +50 -0
- package/scripts/lib/cli/output.rb +102 -0
- package/scripts/lib/cli/scope.rb +127 -0
- package/scripts/lib/cli/table.rb +64 -0
- package/scripts/lib/cli.rb +94 -0
- package/scripts/lib/compact_instructions.rb +8 -0
- package/scripts/lib/day_summary.rb +4 -3
- package/scripts/lib/doctor_core.rb +7 -32
- package/scripts/lib/doctor_session_ledger.rb +2 -1
- package/scripts/lib/feedback_report.rb +1 -1
- package/scripts/lib/graph_measure_models.rb +3 -1
- package/scripts/lib/index_entry.rb +9 -0
- package/scripts/lib/installer_core.rb +73 -19
- package/scripts/lib/intent_screen.rb +3 -3
- package/scripts/lib/lock.rb +2 -2
- package/scripts/lib/node_input.rb +3 -2
- package/scripts/lib/preflight.rb +4 -6
- package/scripts/lib/project_config.rb +2 -1
- package/scripts/lib/project_validator.rb +3 -2
- package/scripts/lib/qmd_sync.rb +8 -7
- package/scripts/lib/reference_archive.rb +45 -0
- package/scripts/lib/release_guard.rb +2 -0
- package/scripts/lib/report_screen.rb +4 -3
- 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_queue.rb +2 -2
- package/scripts/lib/roadmap_savepoint.rb +1 -1
- package/scripts/lib/runner_absorb.rb +3 -2
- package/scripts/lib/search_index.rb +55 -0
- package/scripts/lib/session_git.rb +4 -3
- package/scripts/lib/sqlite.rb +22 -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 +2 -7
- package/scripts/lib/version_number.rb +48 -0
- package/scripts/lib/work_graph.rb +59 -0
- package/scripts/lib/worktree.rb +3 -8
- package/scripts/lib/worktree_sweep.rb +3 -2
- package/scripts/link-suggest +2 -1
- package/scripts/migrate-to-global +1 -1
- package/scripts/new-intent +3 -12
- package/scripts/plastic-lock +3 -2
- package/scripts/promote-session-item +3 -2
- package/scripts/release-check +10 -5
- package/scripts/report-screen +1 -1
- package/scripts/session-commit +2 -1
- package/scripts/spawn-preamble +2 -2
- package/scripts/update.rb +25 -4
- package/scripts/write-handoff +2 -1
- package/templates/agents.md +6 -6
- package/templates/render.css +10 -0
- package/bin/plastic.js +0 -70
- package/skills/agent-advisor/SKILL.md +0 -84
- package/skills/auto/SKILL.md +0 -297
- package/skills/auto/evals/evals.json +0 -255
- package/skills/auto/references/end-tail.md +0 -64
- package/skills/conventions/SKILL.md +0 -29
- package/skills/dashboard/SKILL.md +0 -180
- 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 -305
- 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 -215
- package/skills/intent-continuing/SKILL.md +0 -156
- package/skills/intent-continuing/references/board-fill.md +0 -52
- package/skills/intent-continuing/references/boarding-matrix.md +0 -35
- 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 -89
- 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 -182
- package/skills/intent-ending/evals/evals.json +0 -74
- package/skills/intent-executing/SKILL.md +0 -87
- package/skills/intent-executing/evals/evals.json +0 -66
- package/skills/intent-executing/implementer-prompt.md +0 -47
- package/skills/intent-executing/spec-reviewer-prompt.md +0 -27
- package/skills/intent-speccing/SKILL.md +0 -136
- 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 -376
- package/skills/releasing/references/deprecations.md +0 -60
- package/skills/releasing/references/promotion-and-tagging.md +0 -70
- package/skills/releasing/references/release-lines.md +0 -105
- package/skills/roadmap/SKILL.md +0 -90
- package/skills/roadmap/references/file-format.md +0 -134
- package/skills/roadmap/references/operations.md +0 -112
- package/skills/rollback/SKILL.md +0 -91
- package/skills/tutorial/SKILL.md +0 -66
- 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}/knowledge-graph.md +0 -0
- /package/{skills/conventions/references → docs/help}/lifecycle-and-savepoints.md +0 -0
- /package/{skills/conventions/references → docs/help}/locks-and-worktrees.md +0 -0
- /package/{skills/conventions/references → docs/help}/maintenance-and-revisions.md +0 -0
- /package/{skills/intent-executing → docs/help}/plan-reviewer-prompt.md +0 -0
package/README.md
CHANGED
|
@@ -1,204 +1,416 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">PLASTIC</h1>
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[](https://github.com/zalom/plastic/actions/workflows/test.yml)
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>One command that turns an intent into a durable, linked record of decisions, plans, delivery and outcomes</strong>
|
|
5
|
+
</p>
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@zalom/plastic"><img src="https://img.shields.io/npm/v/@zalom/plastic/alpha" alt="npm version"></a>
|
|
9
|
+
<a href="https://www.npmjs.com/package/@zalom/plastic"><img src="https://img.shields.io/npm/dm/@zalom/plastic" alt="npm downloads"></a>
|
|
10
|
+
<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>
|
|
11
|
+
<a href="https://github.com/zalom/plastic/releases"><img src="https://img.shields.io/github/v/release/zalom/plastic?include_prereleases" alt="Release"></a>
|
|
12
|
+
<a href="LICENSE"><img src="https://img.shields.io/npm/l/@zalom/plastic" alt="License: MIT"></a>
|
|
13
|
+
</p>
|
|
9
14
|
|
|
10
|
-
>
|
|
15
|
+
<p align="center">
|
|
16
|
+
<a href="#installation">Install</a> •
|
|
17
|
+
<a href="#quick-start">Quick start</a> •
|
|
18
|
+
<a href="#commands">Commands</a> •
|
|
19
|
+
<a href="docs/guide/getting-started/troubleshooting.md">Troubleshooting</a> •
|
|
20
|
+
<a href="docs/contributing/ARCHITECTURE.md">Architecture</a> •
|
|
21
|
+
<a href="MANIFESTO.md">Manifesto</a>
|
|
22
|
+
</p>
|
|
11
23
|
|
|
12
|
-
|
|
24
|
+
---
|
|
13
25
|
|
|
26
|
+
Plastic is an intent-based system for AI-assisted work. You do not always start with a task.
|
|
27
|
+
You start with an intent, such as "I want users who are locked out to recover access safely."
|
|
28
|
+
Plastic carries that intent through four stages, What, Why, How and Exec, and leaves a
|
|
29
|
+
readable record of how the idea became real.
|
|
14
30
|
|
|
15
|
-
|
|
31
|
+
Plastic is named after neuroplasticity, the brain's ability to change as it learns.
|
|
16
32
|
|
|
17
|
-
|
|
33
|
+
## What Plastic does
|
|
18
34
|
|
|
19
|
-
|
|
35
|
+
Plastic keeps the shape of the work fixed and leaves the thinking to you and your agent.
|
|
20
36
|
|
|
21
|
-
|
|
37
|
+
| You want to | What Plastic does |
|
|
38
|
+
|-------------|-------------------|
|
|
39
|
+
| Start from a rough idea | Creates one intent directory with an id, a slug and a born-complete intent file |
|
|
40
|
+
| Keep the reasons | Records each ruling in the intent, then consolidates them into `spec.md` |
|
|
41
|
+
| Plan the work | Holds the plan as a graph of nodes, and names the next ready step |
|
|
42
|
+
| Resume tomorrow | Prints where a project stands and the next action in one line |
|
|
43
|
+
| Hand work to an agent team | Arms a delivery lock, briefs each role and reports the result |
|
|
44
|
+
| Close the work | Generates `outcome.md` from the record and moves the intent to Completed |
|
|
45
|
+
| Find an old decision | Searches every store, ranked, with one excerpt for each match |
|
|
46
|
+
| Run many projects | Keeps one store for each project, plus a global store, all in plain Markdown and Git |
|
|
47
|
+
| Steer a long delivery | Reads a roadmap as a graph and names the entry most worth continuing |
|
|
48
|
+
| Protect the record | Writes one archive of the three databases and the config |
|
|
22
49
|
|
|
23
|
-
|
|
50
|
+
Every result ends with a `next:` line and a `because:` line. The `--json` option prints the
|
|
51
|
+
same result as data with stable keys.
|
|
24
52
|
|
|
25
|
-
|
|
53
|
+
## How the record is built
|
|
26
54
|
|
|
27
|
-
|
|
55
|
+
Each intent is one directory. It carries the same small set of files at every stage.
|
|
28
56
|
|
|
29
|
-
|
|
57
|
+
| Stage | Question | File on disk |
|
|
58
|
+
|-------|----------|--------------|
|
|
59
|
+
| What | What is the intention? | `{id}--slug.md` |
|
|
60
|
+
| Why | What context, evidence and decisions shape it? | `spec.md` |
|
|
61
|
+
| How | What is the plan? | `plan.md`, `checklist.md`, `actions/` |
|
|
62
|
+
| Exec | What was delivered? | `outcome.md` |
|
|
30
63
|
|
|
31
|
-
|
|
64
|
+
The files are plain Markdown in a Git repository that you own. See
|
|
65
|
+
[the architecture](docs/architecture.md) for the full store layout.
|
|
32
66
|
|
|
33
|
-
|
|
34
|
-
- one durable intent
|
|
35
|
-
- one visible lifecycle
|
|
36
|
-
- one place for context, decisions, plans, and outcomes
|
|
37
|
-
- links between the ideas that shaped the work and the ideas it creates
|
|
67
|
+
## Installation
|
|
38
68
|
|
|
39
|
-
Plastic
|
|
69
|
+
Plastic needs Ruby 4.0 or later. The npm path also needs Node.js 18 or later, because `npx`
|
|
70
|
+
fetches the package. After the install, the `plastic` command runs on Ruby alone.
|
|
40
71
|
|
|
41
|
-
|
|
72
|
+
### npm (recommended)
|
|
42
73
|
|
|
43
|
-
|
|
74
|
+
```bash
|
|
75
|
+
npx -y @zalom/plastic install --claude
|
|
76
|
+
```
|
|
44
77
|
|
|
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.**
|
|
78
|
+
Replace `--claude` with `--codex` for Codex CLI, or pass both flags.
|
|
49
79
|
|
|
50
|
-
|
|
80
|
+
The npm path puts the command at `~/.plastic/bin/plastic` and does not change your `PATH`.
|
|
81
|
+
Link the command into a directory that is on your `PATH`:
|
|
51
82
|
|
|
52
|
-
|
|
83
|
+
```bash
|
|
84
|
+
mkdir -p ~/.local/bin
|
|
85
|
+
ln -sf ~/.plastic/bin/plastic ~/.local/bin/plastic
|
|
86
|
+
```
|
|
53
87
|
|
|
54
|
-
|
|
55
|
-
- "I do not need another TODO list."
|
|
56
|
-
- "I do not want my work trapped inside a chat."
|
|
57
|
-
- "I want to explore without losing the decision trail."
|
|
58
|
-
- "I want a better model or new agent to inherit the work, not restart it."
|
|
59
|
-
- "I want my ideas to compound."
|
|
88
|
+
### Alpha channel
|
|
60
89
|
|
|
61
|
-
|
|
90
|
+
Plastic 2.0 is on the alpha channel.
|
|
62
91
|
|
|
63
|
-
|
|
92
|
+
```bash
|
|
93
|
+
npx -y @zalom/plastic@alpha install --claude
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Quick install without npm
|
|
64
97
|
|
|
65
98
|
```bash
|
|
66
|
-
|
|
99
|
+
curl -fsSL https://raw.githubusercontent.com/zalom/plastic/main/install.sh | sh
|
|
100
|
+
plastic install --claude
|
|
67
101
|
```
|
|
68
102
|
|
|
69
|
-
|
|
103
|
+
`install.sh` always installs the latest stable release. To move an installed Plastic to
|
|
104
|
+
another channel, run `plastic update --beta` or `plastic update --alpha`. No stable release
|
|
105
|
+
carries the archive yet. Until the first one does, the script reports that and exits, and
|
|
106
|
+
npm is the way to install.
|
|
107
|
+
|
|
108
|
+
### A clean Mac
|
|
109
|
+
|
|
110
|
+
macOS ships Ruby 2.6, which is too old. Install a newer Ruby first:
|
|
70
111
|
|
|
71
112
|
```bash
|
|
72
|
-
|
|
113
|
+
curl https://mise.run | sh
|
|
114
|
+
mise use --global ruby@4.0
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Verify the installation
|
|
73
118
|
|
|
74
|
-
|
|
119
|
+
```bash
|
|
120
|
+
plastic version # Prints the installed version and the file it came from
|
|
121
|
+
plastic doctor # Checks the install and the stores
|
|
75
122
|
```
|
|
76
123
|
|
|
77
|
-
|
|
78
|
-
scaffolds the intent and walks it through What, Why, How, and Exec. For the
|
|
79
|
-
full path, read [your first intent in 10 minutes](docs/guides/your-first-intent-in-10-minutes.md).
|
|
124
|
+
## Quick start
|
|
80
125
|
|
|
81
|
-
|
|
126
|
+
```bash
|
|
127
|
+
# 1. Install for your agent
|
|
128
|
+
npx -y @zalom/plastic@alpha install --claude # Claude Code
|
|
129
|
+
npx -y @zalom/plastic@alpha install --codex # Codex CLI
|
|
130
|
+
npx -y @zalom/plastic@alpha install --all # Every supported agent
|
|
82
131
|
|
|
83
|
-
|
|
132
|
+
# 2. See what is open
|
|
133
|
+
plastic status
|
|
84
134
|
|
|
85
|
-
|
|
86
|
-
|
|
135
|
+
# 3. Start an intent
|
|
136
|
+
plastic intent new "Add a --version flag"
|
|
87
137
|
|
|
88
|
-
|
|
89
|
-
|
|
138
|
+
# 4. Ask what to do next, at any time
|
|
139
|
+
plastic next
|
|
140
|
+
```
|
|
90
141
|
|
|
91
|
-
|
|
142
|
+
Restart your agent after the install. For the full path, read
|
|
143
|
+
[your first intent in 10 minutes](docs/guides/your-first-intent-in-10-minutes.md).
|
|
92
144
|
|
|
93
|
-
|
|
145
|
+
## How it works
|
|
94
146
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
147
|
+
```
|
|
148
|
+
You or your agent plastic ~/.plastic
|
|
149
|
+
----------------- ------- ----------
|
|
150
|
+
plastic intent new "..." --> creates the intent --> store/12--slug/12--slug.md
|
|
151
|
+
plastic intent rule 12 --> records a ruling --> the intent file, then spec.md
|
|
152
|
+
plastic intent step 12 --> runs the next node --> graph.md, nodes/, savepoint.md
|
|
153
|
+
plastic intent end 12 --> generates the outcome --> outcome.md, INDEX.md
|
|
154
|
+
|
|
155
|
+
^ |
|
|
156
|
+
| next: one command because: one reason |
|
|
157
|
+
+--------------------------------------------------------------+
|
|
158
|
+
```
|
|
101
159
|
|
|
102
|
-
|
|
160
|
+
Plastic follows four rules:
|
|
103
161
|
|
|
104
|
-
|
|
105
|
-
|
|
162
|
+
1. **Commands print state and rules.** The judgment stays with you and the agent.
|
|
163
|
+
2. **The ledger is append-only.** `savepoint.md` holds one line for each event, so a new
|
|
164
|
+
session resumes from the last line.
|
|
165
|
+
3. **Status is derived.** Plastic reads what is ready from the graph and the ledger.
|
|
166
|
+
4. **Nothing leaves the machine.** Plastic makes no model call and sends none of your files anywhere.
|
|
106
167
|
|
|
107
|
-
|
|
168
|
+
## Commands
|
|
108
169
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
170
|
+
### Orientation
|
|
171
|
+
```bash
|
|
172
|
+
plastic status # Active work in every store
|
|
173
|
+
plastic continue # Where this project stands and what runs next
|
|
174
|
+
plastic continue --project blog # The same, for a named project
|
|
175
|
+
plastic next # The next action in one line
|
|
176
|
+
plastic next --why # The next action, with the reasoning
|
|
177
|
+
```
|
|
115
178
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
179
|
+
### Intents
|
|
180
|
+
```bash
|
|
181
|
+
plastic intent new "LINE" # Create an intent
|
|
182
|
+
plastic intent new "LINE" --parent 12 # Create a branch of intent 12
|
|
183
|
+
plastic intent show 12 # Print the state screen
|
|
184
|
+
plastic intent spec 12 # State screen, then the speccing rules
|
|
185
|
+
plastic intent rule 12 "TEXT" # Record a ruling in Insights
|
|
186
|
+
plastic intent note 12 "TEXT" # Append a savepoint note
|
|
187
|
+
plastic intent step 12 # Run the next ready step of the graph
|
|
188
|
+
plastic intent answer 12 --node n3 --decision "TEXT" # Answer a node that needs a decision
|
|
189
|
+
plastic intent verify 12 # Run the merge-gate checks
|
|
190
|
+
plastic intent end 12 --delivered --summary "TEXT" # Close as delivered
|
|
191
|
+
plastic intent end 12 --abandoned --summary "TEXT" # Close as abandoned
|
|
192
|
+
```
|
|
119
193
|
|
|
120
|
-
|
|
194
|
+
### Projects
|
|
195
|
+
```bash
|
|
196
|
+
plastic project list # Every store this machine holds
|
|
197
|
+
plastic project new blog --path ~/code/blog # Register and provision a project
|
|
198
|
+
plastic project links # Rebuild every Links section from frontmatter
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Roadmaps
|
|
202
|
+
```bash
|
|
203
|
+
plastic roadmap next # The roadmap most worth continuing
|
|
204
|
+
plastic roadmap show SLUG # The state screen of one roadmap
|
|
205
|
+
plastic roadmap check SLUG # Find cycles and dangling ids in the graph
|
|
206
|
+
plastic roadmap log SLUG EVENT "TEXT" # Append a line to the roadmap ledger
|
|
207
|
+
```
|
|
121
208
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
209
|
+
### Auto teams
|
|
210
|
+
```bash
|
|
211
|
+
plastic auto take 12 # Arm the delivery lock for this session
|
|
212
|
+
plastic auto brief 12 --role executor # Print the spawn preamble for one role
|
|
213
|
+
plastic auto report 12 # Completion report, then the review rules
|
|
214
|
+
plastic auto lock status 12 # Inspect the delivery lock
|
|
215
|
+
plastic auto lock fix 12 # Repair a broken lock
|
|
216
|
+
plastic auto lock release 12 # Release the lock
|
|
217
|
+
```
|
|
129
218
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
219
|
+
### Sessions
|
|
220
|
+
```bash
|
|
221
|
+
plastic session summary # Open items and recent activity in the day ledger
|
|
222
|
+
plastic session commit "SUMMARY" # Commit one verified checklist item
|
|
223
|
+
plastic session handoff # Write this session's hand-off
|
|
224
|
+
```
|
|
133
225
|
|
|
134
|
-
|
|
226
|
+
### Search
|
|
227
|
+
```bash
|
|
228
|
+
plastic index # Rebuild the search index from every Markdown file
|
|
229
|
+
plastic search recovery flow # Ranked matches, one excerpt each
|
|
230
|
+
plastic search recovery --project blog --limit 5
|
|
231
|
+
plastic search --ask "Why did we drop the queue?" # Search with a whole question
|
|
232
|
+
plastic query "SELECT path FROM doc LIMIT 5" # One read-only SQL statement
|
|
233
|
+
```
|
|
135
234
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
235
|
+
### Stores and databases
|
|
236
|
+
```bash
|
|
237
|
+
plastic sync # Bring the store files and the three databases level
|
|
238
|
+
plastic sync --dry-run # Show what would change
|
|
239
|
+
plastic checkout # Restore missing store files from the databases
|
|
240
|
+
plastic backup # One archive of the three databases and the config
|
|
241
|
+
plastic backup --list # Name, size and date of each archive
|
|
242
|
+
plastic migrate stores --dry-run # Preview the move of every store under stores/
|
|
243
|
+
plastic migrate stores # Move them, behind a full copy of the home
|
|
244
|
+
plastic render FILE # Print one Markdown file as an HTML page
|
|
245
|
+
```
|
|
142
246
|
|
|
143
|
-
|
|
247
|
+
### Product
|
|
248
|
+
```bash
|
|
249
|
+
plastic install --claude # Install into Claude Code
|
|
250
|
+
plastic install --reinstall --claude # Repair an install
|
|
251
|
+
plastic update # Next version on the current channel
|
|
252
|
+
plastic update --alpha # Move to the alpha channel
|
|
253
|
+
plastic rollback # List the versions this machine has run
|
|
254
|
+
plastic rollback --version 2.0.0-alpha.27
|
|
255
|
+
plastic uninstall --all # Remove Plastic from every agent. Your stores stay.
|
|
256
|
+
plastic doctor # Check the install and the stores
|
|
257
|
+
plastic doctor --core # The fast check that runs at session start
|
|
258
|
+
plastic version # The installed version
|
|
259
|
+
```
|
|
144
260
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
261
|
+
### Help and feedback
|
|
262
|
+
```bash
|
|
263
|
+
plastic help # All commands and help topics
|
|
264
|
+
plastic help intent end # The usage line of one command
|
|
265
|
+
plastic help roadmaps # One help topic
|
|
266
|
+
plastic feedback "TITLE" < report.md # Save a problem report and print a link that files it
|
|
267
|
+
```
|
|
148
268
|
|
|
149
|
-
##
|
|
269
|
+
## Global options
|
|
150
270
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
or autonomous delivery by an agent team when you ask for it.
|
|
157
|
-
- Two advisor agents ship for the hard problems: one-way doors, plans, adversarial
|
|
158
|
-
review, deadlocks. Summon one deliberately, state the effort and the answer shape in the brief; nobody's
|
|
159
|
-
main session is ever touched. Primary Advisor uses Fable at medium effort for normal
|
|
160
|
-
consultation. Secondary Advisor uses Fable at high effort for explicit escalation.
|
|
161
|
-
Choose the default at install, and switch it any time.
|
|
271
|
+
```bash
|
|
272
|
+
--json # Print the result as data with stable keys
|
|
273
|
+
-h, --help # Print the usage line of the command
|
|
274
|
+
--project SLUG # On continue, next and search, name a project other than the current one
|
|
275
|
+
```
|
|
162
276
|
|
|
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:
|
|
277
|
+
The installer commands do not take `--json`.
|
|
166
278
|
|
|
279
|
+
## Examples
|
|
280
|
+
|
|
281
|
+
**Active work in every store:**
|
|
167
282
|
```
|
|
168
|
-
|
|
169
|
-
|
|
283
|
+
$ plastic status
|
|
284
|
+
global 0 active
|
|
285
|
+
blog 1 active 14
|
|
286
|
+
shop 2 active 7, 9
|
|
287
|
+
|
|
288
|
+
next: plastic continue --project shop
|
|
289
|
+
because: the working directory is inside shop
|
|
170
290
|
```
|
|
171
291
|
|
|
172
|
-
The
|
|
173
|
-
|
|
174
|
-
|
|
292
|
+
**The next action:**
|
|
293
|
+
```
|
|
294
|
+
$ plastic next
|
|
295
|
+
next work 9 in Batch 2: checkout flow
|
|
175
296
|
|
|
176
|
-
|
|
297
|
+
next: read ~/.plastic/projects/shop/store/9--checkout-flow/plan.md
|
|
298
|
+
because: 9 is first on the frontier of the roadmap
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**The installed version:**
|
|
302
|
+
```
|
|
303
|
+
$ plastic version
|
|
304
|
+
version 2.0.0-alpha.28
|
|
305
|
+
source ~/.local/share/plastic/package.json
|
|
306
|
+
|
|
307
|
+
next: plastic status
|
|
308
|
+
because: the command line works, so read the work next
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
The slugs and ids in these examples are samples.
|
|
312
|
+
|
|
313
|
+
## Agent hooks
|
|
314
|
+
|
|
315
|
+
The installer registers hooks in your agent. At session start a hook runs the fast doctor,
|
|
316
|
+
loads the conventions and prints the open items of the day. Each hook calls one launcher:
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
plastic hook EVENT # The agent calls this, not you
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Run `plastic install --reinstall --claude` when hooks do not fire.
|
|
323
|
+
|
|
324
|
+
## Supported AI tools
|
|
325
|
+
|
|
326
|
+
| Tool | Install | State |
|
|
327
|
+
|------|---------|-------|
|
|
328
|
+
| **Claude Code** | `plastic install --claude` | Supported |
|
|
329
|
+
| **Codex CLI** | `plastic install --codex` | Supported |
|
|
330
|
+
| **Hermes** | none | A packaging target only |
|
|
331
|
+
|
|
332
|
+
The `plastic` command itself needs no agent. It runs in any shell with Ruby. See
|
|
333
|
+
[harness support](docs/reference/harness-adapters.md) for the detail on each agent.
|
|
334
|
+
|
|
335
|
+
Seven agents ship with Plastic: an enforcer that leads an auto team, an executor, three node
|
|
336
|
+
agents for work, verification and research, and two advisors for hard decisions.
|
|
177
337
|
|
|
178
|
-
|
|
338
|
+
## Configuration
|
|
179
339
|
|
|
180
|
-
|
|
181
|
-
behind releases are part of the repository, not a hidden process.
|
|
340
|
+
`~/.plastic/config.yml`:
|
|
182
341
|
|
|
183
|
-
|
|
342
|
+
```yaml
|
|
343
|
+
project_roots: ~/.plastic/projects # Where Plastic looks for projects
|
|
344
|
+
stale_threshold_days: 3 # Age at which a future intent is shown for triage
|
|
345
|
+
context_offer_tokens: 150000 # Context size at which the agent offers to compact
|
|
346
|
+
context_insist_tokens: 250000 # Context size at which the agent insists
|
|
347
|
+
agent:
|
|
348
|
+
type: claude-code # The agent that runs Plastic
|
|
349
|
+
parallel_mode: agent-teams # agent-teams or linear
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
Install-time choices:
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
plastic install --claude --advisor secondary # Set the default advisor
|
|
356
|
+
plastic install --claude --no-advisor # Install no advisor agent
|
|
357
|
+
plastic install --claude --statusline plastic # Use the Plastic status line
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
See the [configuration guide](docs/guide/getting-started/configuration.md) for every key and file.
|
|
361
|
+
|
|
362
|
+
### Uninstall
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
plastic uninstall --all # Remove hooks, agents and conventions from every agent
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Your stores under `~/.plastic` stay.
|
|
369
|
+
|
|
370
|
+
## What changed in 2.0
|
|
371
|
+
|
|
372
|
+
Plastic 2.0 moves from prose skills to one command with direct results.
|
|
373
|
+
|
|
374
|
+
- **One `plastic` command.** More than 40 commands replace the skills. The package ships no skill directories.
|
|
375
|
+
- **Direct results.** Every command ends with `next:` and `because:`, and takes `--json`.
|
|
376
|
+
- **Plans are graphs.** An intent holds nodes and edges, and a ready set names what runs next.
|
|
377
|
+
- **A ledger with refusals.** Node transitions are appended to `savepoint.md`, and an invalid transition is refused.
|
|
378
|
+
- **Generated outcomes.** `outcome.md` is built from the graph, the nodes and the ledger at the close.
|
|
379
|
+
- **Roadmaps are graphs too.** `plastic roadmap check` finds cycles and dangling ids.
|
|
380
|
+
- **Search without a service.** One SQLite file holds a full-text index of every store.
|
|
381
|
+
- **Three databases.** `work_graph.db`, `knowledge_graph.db` and `references.db` hold the record, and the files are a checkout of it.
|
|
382
|
+
- **Backup and migrate.** One archive command, and a store move that runs behind a full copy of the home.
|
|
383
|
+
- **Two advisors, medium effort by default.** Summon the Primary Advisor or the Secondary Advisor on purpose.
|
|
384
|
+
- **Codex CLI as a second agent.** The same install, with OpenAI model ids for each role.
|
|
385
|
+
- **Publishing from branches.** A push to `alpha`, `beta` or `main` publishes to the matching npm channel with provenance.
|
|
386
|
+
|
|
387
|
+
The [changelog](CHANGELOG.md) holds one line for each release.
|
|
184
388
|
|
|
185
389
|
## Documentation
|
|
186
390
|
|
|
187
|
-
- [
|
|
188
|
-
|
|
189
|
-
- [
|
|
190
|
-
|
|
191
|
-
- [
|
|
192
|
-
|
|
391
|
+
- **[INSTALL.md](INSTALL.md)**: every install path.
|
|
392
|
+
- **[docs/guide/](docs/guide/index.md)**: getting started with the `plastic` command.
|
|
393
|
+
- **[docs/guides/](docs/guides/index.md)**: task guides, from your first intent to picking a mode.
|
|
394
|
+
- **[docs/usage/](docs/usage/FEATURES.md)**: features, the audit guide and tracking.
|
|
395
|
+
- **[docs/architecture.md](docs/architecture.md)**: the structure, the store layout and the stage table.
|
|
396
|
+
- **[docs/internals.md](docs/internals.md)**: how Plastic stays deterministic.
|
|
397
|
+
- **[docs/contributing/](docs/contributing/ARCHITECTURE.md)**: the command architecture, the coding practices and the gates.
|
|
398
|
+
|
|
399
|
+
## Privacy
|
|
400
|
+
|
|
401
|
+
Plastic runs on your machine. It makes no model call and sends none of your files anywhere.
|
|
402
|
+
Two things use the network: the update check hook and `plastic update`, which ask the npm
|
|
403
|
+
registry for the newest version. See [SECURITY.md](SECURITY.md) for every file the installer writes.
|
|
404
|
+
|
|
405
|
+
## Built with Plastic
|
|
406
|
+
|
|
407
|
+
Plastic is developed through Plastic. The roadmap, the intents, the plans, the decisions and
|
|
408
|
+
the outcomes behind each release are part of the record.
|
|
193
409
|
|
|
194
|
-
##
|
|
410
|
+
## Contributing
|
|
195
411
|
|
|
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.
|
|
412
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
201
413
|
|
|
202
414
|
## License
|
|
203
415
|
|
|
204
|
-
MIT
|
|
416
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -32,15 +32,15 @@ deliberately; the auto pipeline never dispatches them.
|
|
|
32
32
|
software and AI engineering concepts those rest on; a gap is a design finding to raise, not
|
|
33
33
|
a word to coin.
|
|
34
34
|
3. **Have the plan reviewed before code** - dispatch one adversarial plan reviewer on
|
|
35
|
-
`plastic
|
|
36
|
-
|
|
35
|
+
`plastic help plan-reviewer-prompt`; merge every finding into the spec, the matrix, and
|
|
36
|
+
the tests.
|
|
37
37
|
4. **Dispatch one executor, tests first** - the executor commits the matrix's tests red, then
|
|
38
38
|
builds, then drives the full suite green; you verify tick-versus-diff at the
|
|
39
39
|
post-execution review and again before the merge. A mismatch is a review finding, not a
|
|
40
40
|
cleanup you perform silently.
|
|
41
41
|
5. **Review by risk** - dispatch the post-execution reviewer only when the auto skill's risk
|
|
42
42
|
rule fires; otherwise the green suite is the review.
|
|
43
|
-
6. **Close** - `outcome.md`, then `plastic
|
|
43
|
+
6. **Close** - `outcome.md`, then `plastic intent end`, which releases the worktree, clears
|
|
44
44
|
the lock, points the session back at the day ledger, and reindexes last.
|
|
45
45
|
|
|
46
46
|
**Dispatch-time model contract.** Each pinned agent carries its `model:` in frontmatter, and
|
|
@@ -55,7 +55,7 @@ dispatch call's model parameter, alongside the spawn-preamble live-state injecti
|
|
|
55
55
|
1. Take the intent; record the rulings in `## Context` + `### Decisions`; write `spec.md`.
|
|
56
56
|
2. Write `plan.md`, the action files with their matrix, and `checklist.md`; dispatch the plan
|
|
57
57
|
reviewer; merge the review findings.
|
|
58
|
-
3. Dispatch the executor through `plastic
|
|
58
|
+
3. Dispatch the executor through `plastic intent step` with the whole consolidated action
|
|
59
59
|
pasted in; require the red commit before the code and a green suite after it. Sequential,
|
|
60
60
|
one team per intent, on one branch when files are shared.
|
|
61
61
|
4. Apply the risk rule; when it fires, dispatch the reviewer and re-dispatch the executor for
|
|
@@ -66,11 +66,10 @@ dispatch call's model parameter, alongside the spawn-preamble live-state injecti
|
|
|
66
66
|
|
|
67
67
|
Once per delivery, at How with the plan and the matrix ready and before any code, brief the
|
|
68
68
|
human in EM-to-CTO voice: impact first, the one risk that matters, then the call. In auto mode
|
|
69
|
-
the briefing informs and does not wait. The shape lives in
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
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.
|
|
74
73
|
|
|
75
74
|
## Constraints
|
|
76
75
|
|
|
@@ -79,5 +78,5 @@ the two never merge.
|
|
|
79
78
|
`savepoint.md`, the diff), never from a hook you assume fired.
|
|
80
79
|
- The plan reviewer and the post-execution reviewer are fresh agents, never you and never the
|
|
81
80
|
executor.
|
|
82
|
-
- Dispatch through `plastic
|
|
81
|
+
- Dispatch through `plastic intent step`, Plastic's own engine. On a harness with no agent
|
|
83
82
|
dispatch, walk the five steps yourself and say so in `## Insights`.
|
|
@@ -48,7 +48,7 @@ valid lifecycle artifacts. Honor it as your live state; do not re-derive or cont
|
|
|
48
48
|
## Completion Report
|
|
49
49
|
|
|
50
50
|
END your turn with a structured completion report as your final message, per the spawn
|
|
51
|
-
preamble's `REPORT_CONTRACT` and `
|
|
51
|
+
preamble's `REPORT_CONTRACT` and `plastic help agent-report-contract`. Do not
|
|
52
52
|
finish silently. Carry the common envelope (role, intent id, stage, status, artifacts written,
|
|
53
53
|
verification, checklist deltas, deviations, blockers, insights) plus the executor payload:
|
|
54
54
|
|
package/bin/crap
ADDED