@zalom/plastic 1.0.1 → 1.0.3
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 +44 -5
- package/agents/plastic-intent-discovery.md +1 -0
- package/package.json +1 -1
- package/scripts/dashboard.rb +1 -1
- package/scripts/doctor.rb +3 -3
- package/scripts/lib/bridge.rb +11 -10
- package/scripts/lib/dashboard_banner.rb +1 -1
- package/scripts/lib/lock.rb +3 -3
- package/skills/add-project-store/SKILL.md +1 -0
- package/skills/auto/SKILL.md +1 -0
- package/skills/auto/references/agent-report-contract.md +3 -0
- package/skills/brainstorming/SKILL.md +1 -0
- package/skills/brainstorming-grill-me/SKILL.md +1 -0
- package/skills/continuing/SKILL.md +1 -0
- package/skills/creating-intent/SKILL.md +1 -0
- package/skills/creating-project/SKILL.md +1 -0
- package/skills/creating-skills/SKILL.md +1 -0
- package/skills/creating-skills/references/skills.md +1 -0
- package/skills/dashboard/SKILL.md +1 -0
- package/skills/doctor/SKILL.md +1 -0
- package/skills/evaluating-skills/SKILL.md +1 -0
- package/skills/executing-plan/SKILL.md +1 -0
- package/skills/humanizer/SKILL.md +1 -0
- package/skills/install/SKILL.md +1 -0
- package/skills/intent-curator/SKILL.md +1 -0
- package/skills/intent-discovery/SKILL.md +2 -0
- package/skills/intent-starting/SKILL.md +1 -0
- package/skills/linking-intents/SKILL.md +1 -0
- package/skills/lock/SKILL.md +2 -1
- package/skills/managing-index/SKILL.md +1 -0
- package/skills/releasing/SKILL.md +1 -0
- package/skills/research/SKILL.md +3 -0
- package/skills/roadmap/SKILL.md +1 -0
- package/skills/savepoint/SKILL.md +1 -0
- package/skills/uninstall/SKILL.md +1 -0
- package/skills/update/SKILL.md +1 -0
- package/skills/versions/SKILL.md +1 -0
- package/skills/writing-plans/SKILL.md +1 -0
package/PLASTIC.md
CHANGED
|
@@ -113,9 +113,9 @@ entries stay append-only, newest at the bottom; the prefix only stamps each line
|
|
|
113
113
|
which stage, and who.
|
|
114
114
|
|
|
115
115
|
The blessed write path is the `insight-append` helper
|
|
116
|
-
(`scripts/insight-append <intent_dir> <text> --stage S --author A`), which
|
|
117
|
-
validates it, and appends at the bottom. Hand-editing
|
|
118
|
-
helper is the default so the format cannot drift.
|
|
116
|
+
(`scripts/insight-append <intent_dir> <text> --stage S --author A`), which ships with every
|
|
117
|
+
install and update, formats the prefix, validates it, and appends at the bottom. Hand-editing
|
|
118
|
+
`## Insights` is an escape hatch; the helper is the default so the format cannot drift.
|
|
119
119
|
|
|
120
120
|
Background sessions and dispatched sub-agents do not write the insight themselves. They carry
|
|
121
121
|
each nugget home in the completion report's `insights:` field, and the orchestrator (or any
|
|
@@ -191,6 +191,13 @@ adapter layer that maps Plastic's hooks and model aliases onto each supported ag
|
|
|
191
191
|
(Claude, Codex, Hermes) is the cross-harness portability layer; see
|
|
192
192
|
docs/reference/harness-adapters.md for the adapter contract.
|
|
193
193
|
|
|
194
|
+
**Spawn preamble (intent 152).** `scripts/spawn-preamble` emits a live-state block purely from
|
|
195
|
+
filesystem state: the active intent, stage, role/cycle-step, the honor instruction, and the
|
|
196
|
+
report contract. When the intent's code worktree is resolvable and exists on disk, it also
|
|
197
|
+
appends the worktree's absolute path plus a verbatim instruction to `cd` there directly, for
|
|
198
|
+
harnesses whose `EnterWorktree` cannot discover a nested repo from a non-repo launch directory.
|
|
199
|
+
Output is byte-identical when no worktree resolves.
|
|
200
|
+
|
|
194
201
|
**Orchestrator advisory.** At auto-mode start, the orchestrator recommends once that the user
|
|
195
202
|
run the main session on the best available thinking model (Fable, Opus, or whatever supersedes
|
|
196
203
|
them). This is advisory only: it changes no behavior and blocks nothing if ignored, and it
|
|
@@ -343,7 +350,7 @@ ALL work flows through intents.
|
|
|
343
350
|
3. On completion, capture observations in `## Insights`.
|
|
344
351
|
4. When done, write `outcome.md` + `## Outcome` summary. Update INDEX.md.
|
|
345
352
|
5. Researches are intents. No separate folder.
|
|
346
|
-
6. Intents are created only via `plastic-creating-intent`. Never hand-author an intent file. The skill self-verifies the written intent with `scripts/validate-intent` before announcing or committing, so every intent is born complete.
|
|
353
|
+
6. Intents are created only via `plastic-creating-intent`. Never hand-author an intent file. The skill self-verifies the written intent with `scripts/validate-intent` before announcing or committing, so every intent is born complete. `--intent` text is escaped for double quotes and backslashes before it lands in frontmatter, so free-form text is safe to pass as-is, and a reciprocal `chain:` append preserves the target intent's existing flow- or block-style entries.
|
|
347
354
|
|
|
348
355
|
## House Style (self-check)
|
|
349
356
|
|
|
@@ -363,6 +370,36 @@ cache) over re-reading them from disk, which only widens context. QMD is for OTH
|
|
|
363
370
|
intents, not for re-reading what you just wrote. Pairs with `/clear` plus savepoint-resume
|
|
364
371
|
hygiene after each intent. Advisory self-check, not hard-verifiable.
|
|
365
372
|
|
|
373
|
+
## Tabular-First Reporting (intent 160)
|
|
374
|
+
|
|
375
|
+
**Default.** Tabular layout is the default shape for three surfaces: What-stage discovery
|
|
376
|
+
deposits, all research reports, and all agent reporting or presentation surfaces.
|
|
377
|
+
|
|
378
|
+
**Calibration.** Tables are REQUIRED for any listing or discussion of intents, and for
|
|
379
|
+
explaining complex data, comparisons, or multi-factor reasoning. This is NOT a blanket
|
|
380
|
+
tables-everywhere rule: simple data stays prose, and tables must not be overused.
|
|
381
|
+
|
|
382
|
+
**Bullets-limit.** Use bullets only when a table genuinely does not fit the content, and
|
|
383
|
+
never more than 3-5 items.
|
|
384
|
+
|
|
385
|
+
**Why tables.**
|
|
386
|
+
|
|
387
|
+
| # | Reason |
|
|
388
|
+
|---|--------|
|
|
389
|
+
| 1 | Parallel structure makes comparison a row-vs-row scan, not a re-read. |
|
|
390
|
+
| 2 | Coverage is provable: N items means N rows, an empty cell exposes a gap while a missing bullet hides it. |
|
|
391
|
+
| 3 | Schema stated once in the headers, no repeated labels, higher density. |
|
|
392
|
+
| 4 | A column reads vertically to show every value at once. |
|
|
393
|
+
| 5 | Cells force terseness where bullets sprawl and nest. |
|
|
394
|
+
| 6 | A ruling or decision column turns the report into the decision worksheet. |
|
|
395
|
+
| 7 | Rows stay machine-readable for downstream tooling. |
|
|
396
|
+
| 8 | Uniform granularity: every item answers the same questions. |
|
|
397
|
+
| 9 | Line-scoped git diffs. |
|
|
398
|
+
|
|
399
|
+
**Exception.** The EM-to-CTO human briefing (`skills/auto/references/human-report-contract.md`)
|
|
400
|
+
keeps its deliberate prose shape (fixed State/Risk/Call, single item, nothing to tabulate) and
|
|
401
|
+
is exempt from this rule.
|
|
402
|
+
|
|
366
403
|
## Retrieval Gate
|
|
367
404
|
|
|
368
405
|
Advisory. Hard gates guard writes, locks, and structure, never reads or searches. Read,
|
|
@@ -407,7 +444,9 @@ Each gate guards one thing. All are hard except the retrieval gate:
|
|
|
407
444
|
`>` redirect, a `ruby -e` or `python -c` write), so the same rules apply whether an edit goes
|
|
408
445
|
through the Write tool or a shell. A trailing `# plastic-ok` comment is an auditable escape that
|
|
409
446
|
lets a deliberate command through, and every use is logged to
|
|
410
|
-
`~/.plastic/.cache/gate-escapes.log`.
|
|
447
|
+
`~/.plastic/.cache/gate-escapes.log`. The code gate (Write and Edit) carries the identical
|
|
448
|
+
audited `# plastic-ok` escape, logged to the same file. The escape does not extend to
|
|
449
|
+
`NotebookEdit` or MCP structural edits: they are still gated, just without an escape hatch.
|
|
411
450
|
- **retrieval-gate** is advisory only (see the Retrieval Gate section): it hints at QMD and never
|
|
412
451
|
blocks a read or search.
|
|
413
452
|
|
|
@@ -24,6 +24,7 @@ for the Why stage to consume.
|
|
|
24
24
|
the intent file, spec.md, or any lifecycle deliverable: the lock-owner-only
|
|
25
25
|
write rule stays intact, and the Why-stage `plastic-brainstorming` agent is
|
|
26
26
|
the one that reads your deposit and enriches `## Context`.
|
|
27
|
+
Shape the deposit tabular-first per `PLASTIC.md` (## Tabular-First Reporting, intent 160).
|
|
27
28
|
|
|
28
29
|
## Constraints
|
|
29
30
|
- Read-only with respect to the intent: your single output is
|
package/package.json
CHANGED
package/scripts/dashboard.rb
CHANGED
|
@@ -466,7 +466,7 @@ def render_continue(records)
|
|
|
466
466
|
out.concat(matrix(open, scope_tag: true))
|
|
467
467
|
out << ""
|
|
468
468
|
out << LEGEND
|
|
469
|
-
out << "
|
|
469
|
+
out << "ask for the <slug> project board · plastic-auto (works the dispatchable queue)"
|
|
470
470
|
out.join("\n") + "\n"
|
|
471
471
|
end
|
|
472
472
|
|
package/scripts/doctor.rb
CHANGED
|
@@ -676,9 +676,9 @@ class Doctor
|
|
|
676
676
|
message: "#{stalled.size} stalled completion#{stalled.size == 1 ? "" : "s"} " \
|
|
677
677
|
"(terminal in INDEX but the End tail did not finish)",
|
|
678
678
|
details: stalled, fixable: true,
|
|
679
|
-
fix_hint: "Finish the End tail via stale-lock reclaim:
|
|
680
|
-
"tail (Worktree.release -> Lock.release -> purge -> QMD reindex
|
|
681
|
-
"completion; it is NOT a reactivation of a done intent."
|
|
679
|
+
fix_hint: "Finish the End tail via stale-lock reclaim: run /plastic-doctor reclaim the lock, " \
|
|
680
|
+
"then complete the tail (Worktree.release -> Lock.release -> purge -> QMD reindex " \
|
|
681
|
+
"last). This FINISHES a completion; it is NOT a reactivation of a done intent."
|
|
682
682
|
)
|
|
683
683
|
end
|
|
684
684
|
|
package/scripts/lib/bridge.rb
CHANGED
|
@@ -741,17 +741,18 @@ module Bridge
|
|
|
741
741
|
data["lock"] = lock_cache(lock_data)
|
|
742
742
|
when :held
|
|
743
743
|
raise LockHeldError, "delivery lock for intent #{intent_id} is held by " \
|
|
744
|
-
"session #{lock_data && lock_data['owner_session']}; run /plastic-
|
|
744
|
+
"session #{lock_data && lock_data['owner_session']}; run /plastic-doctor " \
|
|
745
|
+
"check the lock status"
|
|
745
746
|
when :stale
|
|
746
747
|
raise LockHeldError, "delivery lock for intent #{intent_id} is stale " \
|
|
747
|
-
"(owner #{lock_data && lock_data['owner_session']}); run /plastic-
|
|
748
|
-
"reclaim to take it over with an audit"
|
|
748
|
+
"(owner #{lock_data && lock_data['owner_session']}); run /plastic-doctor " \
|
|
749
|
+
"reclaim the lock to take it over with an audit"
|
|
749
750
|
when :excluded
|
|
750
751
|
raise LockHeldError, "a #{lock_data && lock_data['type']} lock is active on " \
|
|
751
|
-
"intent #{intent_id}; run /plastic-lock status"
|
|
752
|
+
"intent #{intent_id}; run /plastic-doctor check the lock status"
|
|
752
753
|
when :corrupt
|
|
753
754
|
raise LockHeldError, "delivery.lock for intent #{intent_id} is unreadable; " \
|
|
754
|
-
"run /plastic-
|
|
755
|
+
"run /plastic-doctor fix the lock"
|
|
755
756
|
end
|
|
756
757
|
|
|
757
758
|
# Provision the per-intent worktrees (mandatory code worktree for project
|
|
@@ -861,7 +862,7 @@ module Bridge
|
|
|
861
862
|
end
|
|
862
863
|
return { "status" => "stale", "owner" => lock["owner_session"],
|
|
863
864
|
"actions" => actions, "session" => key,
|
|
864
|
-
"hint" => "run /plastic-
|
|
865
|
+
"hint" => "run /plastic-doctor reclaim the lock to take over with an audit" }
|
|
865
866
|
end
|
|
866
867
|
|
|
867
868
|
if lock
|
|
@@ -1002,16 +1003,16 @@ module Bridge
|
|
|
1002
1003
|
"#{lock['owner_session']}. Back off; if you are the owner's " \
|
|
1003
1004
|
"subagent, the owner must run: plastic-lock delegate " \
|
|
1004
1005
|
"--intent-dir #{target_dir} --session <your-session-id>. " \
|
|
1005
|
-
"Inspect with /plastic-lock status"
|
|
1006
|
+
"Inspect with /plastic-doctor check the lock status"
|
|
1006
1007
|
end
|
|
1007
1008
|
return solo_allow(id, "stale delivery lock") if solo
|
|
1008
1009
|
return "intent #{id} has a stale delivery lock (owner " \
|
|
1009
|
-
"#{lock['owner_session']}); run /plastic-
|
|
1010
|
-
"it over, or /plastic-
|
|
1010
|
+
"#{lock['owner_session']}); run /plastic-doctor reclaim the lock to " \
|
|
1011
|
+
"take it over, or /plastic-doctor fix the lock"
|
|
1011
1012
|
end
|
|
1012
1013
|
if Lock.corrupt?(target_dir)
|
|
1013
1014
|
return solo_allow(id, "unreadable delivery.lock") if solo
|
|
1014
|
-
return "delivery.lock for intent #{id} is unreadable; run /plastic-
|
|
1015
|
+
return "delivery.lock for intent #{id} is unreadable; run /plastic-doctor fix the lock"
|
|
1015
1016
|
end
|
|
1016
1017
|
return solo_allow(id, "no delivery lock") if solo
|
|
1017
1018
|
"no delivery lock held for intent #{id}; run /plastic-intent-starting " \
|
|
@@ -20,7 +20,7 @@ module DashboardBanner
|
|
|
20
20
|
return nil unless counts.is_a?(Hash)
|
|
21
21
|
active = counts["active"].to_i
|
|
22
22
|
future = counts["future"].to_i
|
|
23
|
-
line = "Plastic: #{active} active · #{future} next ·
|
|
23
|
+
line = "Plastic: #{active} active · #{future} next · say \"show the dashboard\" to see the board"
|
|
24
24
|
nbt = next_big_thing_id(payload)
|
|
25
25
|
line += " · next big thing: #{nbt}" if nbt
|
|
26
26
|
line
|
package/scripts/lib/lock.rb
CHANGED
|
@@ -368,8 +368,8 @@ module Claim
|
|
|
368
368
|
holder = data && data["owner_session"]
|
|
369
369
|
since = data && data["acquired_at"]
|
|
370
370
|
"artifact #{artifact} is claimed by #{holder} since #{since}; another writer holds " \
|
|
371
|
-
"it. Back off or run /plastic-lock status. If you are a distinct
|
|
372
|
-
"owner must register you: plastic-lock delegate --intent-dir
|
|
373
|
-
"--session <your-session-id>"
|
|
371
|
+
"it. Back off or run /plastic-doctor check the lock status. If you are a distinct " \
|
|
372
|
+
"delegate, the owner must register you: plastic-lock delegate --intent-dir " \
|
|
373
|
+
"#{intent_dir} --session <your-session-id>"
|
|
374
374
|
end
|
|
375
375
|
end
|
package/skills/auto/SKILL.md
CHANGED
|
@@ -4,6 +4,7 @@ description: >-
|
|
|
4
4
|
Autonomous intent delivery — agent takes over How and Exec. Use when user says
|
|
5
5
|
"auto", "take it from here", "deliver this", or when brainstorming-grill-me concludes
|
|
6
6
|
and user confirms autonomous execution. Requires an active intent in INDEX.md.
|
|
7
|
+
user-invocable: true
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Auto — Autonomous Intent Delivery
|
|
@@ -47,6 +47,9 @@ Every role report, whatever the stage, carries these fields:
|
|
|
47
47
|
|
|
48
48
|
## Per-role payload
|
|
49
49
|
|
|
50
|
+
Multi-item payload fields (ordered actions, insights, checklist deltas) default to tables per
|
|
51
|
+
`PLASTIC.md` (## Tabular-First Reporting, intent 160); single fields stay prose.
|
|
52
|
+
|
|
50
53
|
Each role appends a payload that fulfils its place in the What, Why, How, Exec cycle (decision
|
|
51
54
|
D2). The payload is what makes the report useful to the orchestrator beyond the envelope.
|
|
52
55
|
|
|
@@ -4,6 +4,7 @@ description: >-
|
|
|
4
4
|
Deep brainstorming that interviews the user relentlessly about a plan or design until reaching shared understanding.
|
|
5
5
|
Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
|
|
6
6
|
Pair with plastic-brainstorming for quick ideation and use grill-me for thorough interrogation. If superpowers:brainstorming is installed it complements this skill, but it is not required.
|
|
7
|
+
user-invocable: true
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Grill Me — Deep Brainstorming
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-continuing
|
|
3
3
|
description: Use when the user says "continue", "resume", or "pick up where we left off", or when starting a new session. Continues work with the latest project context: lands on the right dashboard, then presents choices. Boot (health check, core context, version, statusline) is owned by the SessionStart hook, not this skill. Does not drive work autonomously (that is plastic-auto).
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Continuing
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-creating-intent
|
|
3
3
|
description: Use when new work begins, the user expresses a new goal, says "new intent", or no active intent exists for the current task. Creates intents in the global store (~/.plastic/store/) or in a project's store (~/.plastic/projects/{slug}/store/) depending on context.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Creating an Intent
|
|
@@ -5,6 +5,7 @@ description: >-
|
|
|
5
5
|
git init, AGENTS.md with founding intent decisions, plastic-install --local,
|
|
6
6
|
tactical mirror, projects.yml registration, and framework scaffolding.
|
|
7
7
|
Use when an implementation intent spawns a project, or manually by user.
|
|
8
|
+
user-invocable: true
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# Creating a Project
|
|
@@ -102,6 +102,7 @@ Use only the documented optionals below. Add nothing beyond them [A6].
|
|
|
102
102
|
| `allowed-tools` | Space-separated tool list (experimental) |
|
|
103
103
|
| `model` | Claude Code extension: pin the model for this skill |
|
|
104
104
|
| `disable-model-invocation` | Claude Code extension: only the user may fire the skill |
|
|
105
|
+
| `user-invocable` | Claude Code extension: set false to hide the skill from the user's / slash menu while leaving it agent-invocable; default true |
|
|
105
106
|
| `context: fork` | Claude Code extension: run the body as a forked task |
|
|
106
107
|
| `paths` | Claude Code extension: scope the skill to matching paths |
|
|
107
108
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-dashboard
|
|
3
3
|
description: Use when the user wants an overview of intents, asks "where are we", "what's next", "what should I work on", "show the dashboard", or invokes /plastic-dashboard. Renders a deterministic Value×Effort work cockpit as Markdown across the global store and all projects, and emits a machine-readable queue that auto mode consumes.
|
|
4
|
+
user-invocable: false
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Dashboard — Plastic Work Cockpit
|
package/skills/doctor/SKILL.md
CHANGED
|
@@ -8,6 +8,7 @@ description: >
|
|
|
8
8
|
skill, checking if a description triggers correctly, or assessing
|
|
9
9
|
whether a skill is still needed. Also use when the user says "evaluate",
|
|
10
10
|
"test the skill", "run evals", "check conventions", or "write evals".
|
|
11
|
+
user-invocable: true
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
# Evaluating Skills
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-executing-plan
|
|
3
3
|
description: Use when you have a written implementation plan to execute. Default mode is subagent-driven (dispatches fresh subagent per task with two-stage review). Fallback mode is inline execution for environments without subagent support. If superpowers:subagent-driven-development or superpowers:executing-plans are available, delegates to them.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Executing a Plan
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-humanizer
|
|
3
3
|
description: Use to clean authored prose so it reads human and clutter-free. Removes AI tells and slop from a document, spec, outcome, README, report, or release note. Use when the user says "humanize", "de-slop", "remove the AI tells", or "clean up the wording". For documents, not for every chat reply, and not for code.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Humanizer
|
package/skills/install/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-install
|
|
3
3
|
description: Use when initializing Plastic globally (~/.plastic/) or locally in a project, or to re-install/repair a broken installation. Accepts channel flags (--alpha, --beta, --latest) to select release channel. First install defaults to --beta; reinstalls match the already-installed channel. Global install is recommended: it creates the global intent store as a git-backed repository. Local install creates .plastic/ in the current project for testing.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Install Plastic
|
|
@@ -11,6 +11,7 @@ description: |
|
|
|
11
11
|
user: "Organize the intents"
|
|
12
12
|
assistant: "I'll use the intent-curator to review clusters, flag orphans, and suggest connections"
|
|
13
13
|
<commentary>Periodic maintenance of the Zettelkasten structure.</commentary></example>
|
|
14
|
+
user-invocable: false
|
|
14
15
|
---
|
|
15
16
|
|
|
16
17
|
# Intent Curator
|
|
@@ -6,6 +6,7 @@ description: >-
|
|
|
6
6
|
resources/discovery--<slug>.md for the Why stage to consume. Use when an intent
|
|
7
7
|
is activated (moved from Future to Active), after the lock is armed, under it,
|
|
8
8
|
and before Why begins. Never writes the intent file itself.
|
|
9
|
+
user-invocable: false
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Intent Discovery — What-stage context deposit
|
|
@@ -33,6 +34,7 @@ lock. Dispatched as the `plastic-intent-discovery` background agent.
|
|
|
33
34
|
the intent file, spec.md, or any lifecycle deliverable. The lock-owner-only
|
|
34
35
|
write rule stays intact; the Why-stage `plastic-brainstorming` agent reads the
|
|
35
36
|
deposit and enriches `## Context`.
|
|
37
|
+
Shape the deposit tabular-first per `PLASTIC.md` (## Tabular-First Reporting, intent 160).
|
|
36
38
|
|
|
37
39
|
## Stage coverage
|
|
38
40
|
This is the What-stage agent in the one-agent-per-stage table (What:
|
|
@@ -5,6 +5,7 @@ description: >-
|
|
|
5
5
|
guided ONCE, then resume at the latest delivered station and run the cycle to Done. Use on
|
|
6
6
|
`continuing --intent {id}`, when a new intent is registered and the user asks to work it,
|
|
7
7
|
or when the user picks an intent to work. Requires the intent in INDEX `## Active`.
|
|
8
|
+
user-invocable: true
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# Intent Starting — board a session onto an intent
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-linking-intents
|
|
3
3
|
description: Use when creating connections between intents, the user says "link" or "connect", or when discovering that two intents are related. Manages sources, chain, and cross-reference links.
|
|
4
|
+
user-invocable: false
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Linking Intents
|
package/skills/lock/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: lock
|
|
2
|
+
name: plastic-lock
|
|
3
3
|
description: Inspect, repair, release, or reclaim an intent's delivery lock. Use when a lock-gate deny names /plastic-lock, when resuming interrupted work after a crash, reboot, or /tmp wipe, when a lock reads held or stale, or when the user says "fix the lock", "who holds the lock", or "reclaim the lock".
|
|
4
|
+
user-invocable: false
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Plastic Lock
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-managing-index
|
|
3
3
|
description: Use after creating, completing, or abandoning intents, when the user says "index" or "organize", or when INDEX.md needs maintenance. Curates the INDEX.md structure note.
|
|
4
|
+
user-invocable: false
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Managing the Index
|
package/skills/research/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-research
|
|
3
3
|
description: "Research a topic for the active intent. Agent decides shallow vs deep based on scope. Produces reports in the intent's resources/ directory."
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Research
|
|
@@ -81,6 +82,8 @@ Examples:
|
|
|
81
82
|
|
|
82
83
|
### Report Structure
|
|
83
84
|
|
|
85
|
+
Default to tabular-first per `PLASTIC.md` (## Tabular-First Reporting, intent 160): tables for findings and comparisons, prose for simple summaries.
|
|
86
|
+
|
|
84
87
|
```markdown
|
|
85
88
|
# {Type}: {Topic}
|
|
86
89
|
|
package/skills/roadmap/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-roadmap
|
|
3
3
|
description: Use when the user wants to plan a delivery batch, order waves of intents, ship a batch of tickets in one go, track a named collection of intents toward a goal, or asks for a "roadmap". Creates and maintains a roadmap file, a delivery-side collection of intents (the counterpart to a release), separate from INDEX.md status tracking.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Roadmap
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-savepoint
|
|
3
3
|
description: Use when verifying or repairing an intent's savepoint ledger, when the user says "save" or "savepoint", or when a PreCompact hook fires. The ledger is written automatically by the gate hook at each lifecycle boundary; this skill only reads, verifies, and rebuilds it.
|
|
4
|
+
user-invocable: false
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Savepoint
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-uninstall
|
|
3
3
|
description: Use when the user wants to remove Plastic from an agent. Runs the manifest-driven uninstaller (removes skills, hooks, statusline, and any legacy plugin layout), reports exactly what was removed and what was left behind, then gives verification steps. Optionally deletes the intent store.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Uninstall Plastic
|
package/skills/update/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-update
|
|
3
3
|
description: Use when updating Plastic. Runs the `update` verb, which reads the installed VERSION, derives its channel, queries npm dist-tags, and advances to the next version on that channel (or switches channel with a flag).
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Update Plastic
|
package/skills/versions/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plastic-versions
|
|
3
3
|
description: Use when the user wants to see their Plastic version history or roll back to a previously-installed version after a bad release. Manages the local, append-only versions.json ledger and steps between versions the user has actually run. For moving to a brand-new release, use plastic-update instead.
|
|
4
|
+
user-invocable: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Plastic Versions: local version time-machine
|