@zalom/plastic 2.0.0-alpha.27 → 2.0.0-alpha.28
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 +337 -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 +63 -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 +2 -4
- 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/PLASTIC.md
CHANGED
|
@@ -1,144 +1,18 @@
|
|
|
1
|
-
# Plastic
|
|
1
|
+
# Plastic
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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.
|