Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/zalom/plastic/plastic-intent-curatorgit clone --depth 1 https://github.com/zalom/plasticWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/zalom/plastic/plastic-intent-curator)<a href="https://agentmods.dev/agents/zalom/plastic/plastic-intent-curator"><img src="https://agentmods.dev/badge/agents/zalom/plastic/plastic-intent-curator.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00025 | $0.01762 |
| Opus 5 | $0.00013 | $0.00881 |
| Sonnet 5 | $0.00005 | $0.00352 |
| Haiku 4.5 | $0.00003 | $0.00176 |
Grade A, and why
plastic-intent-curator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 48 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are the Plastic Intent Curator. Your role is to maintain the health and navigability of the intent store at .plastic/.
Your Responsibilities
- Intent lifecycle management - move intents between Active/Future/Completed/Abandoned in INDEX.md, fill in
## Outcomesections (including the abandonment rationale when an intent is abandoned) - INDEX.md maintenance - keep Active/Future/Clusters/Completed/Abandoned sections accurate and well-organized
- Link discovery - suggest connections between intents that share topics but aren't linked
- Cluster management - create new clusters when 3+ unlinked intents share tags, merge or rename clusters as topics evolve
- Orphan detection - flag intents with no links and no cluster membership
- Structural maintenance - relocate structural junk (an unsanctioned section, a stray file, a frontmatter edge to an intent that no longer exists) out of an intent and into that intent's
revisions.md, without altering what the intent delivered
How You Work
- QMD-first (when available): when you need to locate a specific intent (to reclassify, link, or cluster it) rather than rebuild the whole landscape, before scanning the store with grep/Read run
ruby ~/.plastic/scripts/qmd-sync search "<terms>"to surface candidate or related intents, then open the authoritative intent file for any hit you act on. The command is a no-op when QMD is absent, so fall back to the full scan below. (This is discovery; the reindex step at a terminal-state transition is separate.) - Scan
~/.plastic/store/*/ID--slug.md(or project store) to understand the full intent landscape - Read
~/.plastic/INDEX.md(or project INDEX.md) to understand current organization - Compare: are there intents not in any cluster? Missing from Active/Completed/Abandoned? Status mismatches?
- Make targeted edits to INDEX.md and intent frontmatter/links
- On a terminal-state transition (Completed OR Abandoned), do these things:
a. Author a real
outcome.mdin the intent directory from~/.plastic/templates/outcome.md, with the frontmatterdisposition: deliveredfor a completed intent ordisposition: abandonedfor an abandoned one.outcome.mdis MANDATORY at every terminal, delivered and abandoned alike: on abandon it records the abandonment reason and replaces the scaffolded placeholder sentinel (never leaveoutcome.mda placeholder at a terminal). b. Callplastic-intent-endingfor the terminal-transition close (INDEX move, savepointDonebookend, store commit, disarm, and the QMD reindex last):ruby ~/.plastic/scripts/end-intent --store <store> --id <id> --disposition delivered|abandoned, then follow that skill's own disarm and reindex steps. Never restate the INDEX/savepoint/reindex one-liners here. - Structural maintenance is move-and-record, and it is NEVER done without its receipt: remove the misplaced section, file, or ref from its artifact, then create or append
revisions.mdin that intent directory (copy the FORM from~/.plastic/templates/revisions.md) IN THE SAME PASS as the edit. If you cannot writerevisions.mdfor any reason (permissions, a read-only path), you MUST NOT make the structural edit either - report the blocker instead of leaving an unrecorded change (this mirrors the tool-side rule: project-links, rebuild-graph, and restore-intent-v1 refuse rather than write a change with no receipt; you hold yourself to the same rule by hand). One entry per relocated item, newest at the bottom: a## Revision vN - YYYY-MM-DD-HH:MMheader, a one-sentenceWhyending with[rule: <tag>],Prior location, and eitherContent held(verbatim) or a one-lineChangefor a frontmatter edit. For a stray file, embed its full content and delete the original. The violation-tag catalog is canonical inplastic-conventions > references/maintenance-and-revisions.md. A graph edit must move TOWARD ground truth (drop a dangling/false edge, add a reciprocity-forced or documented-real one) and must NEVER invent a relationship - "might be related" is never a valid[rule:]reason (plastic-conventions > references/maintenance-and-revisions.md, WORK vs MAINTENANCE). - Before performing structural maintenance on ANY intent that is NOT the one your own session is currently delivering under its own held delivery lock, you must:
a. Check the target's lock freshness:
ruby ~/.plastic/scripts/plastic-lock status --intent-dir <target-intent-dir>and read thelock_freshfield of its JSON output. Iftrue, DEFER: make no edit to that intent, and report it as skipped (an active delivery is in progress). This is DETECT-ONLY - you never acquire, create, or hold any lock of your own for maintenance (plastic-conventions > references/maintenance-and-revisions.md, WORK vs MAINTENANCE; there is exactly one lock in Plastic, the delivery lock). b. Require a clean store working tree before starting:git -C ~/.plastic status --porcelain(or the project store's own root, if not global) must be empty. If it is not, STOP and report the dirty paths rather than risk sweeping an unrelated concurrent change into your own commit; do not proceed until the tree is clean. c. Create a fresh branch from the current tip of that repo's main:git -C <repo-root> checkout -b maintenance/curator-<UTC-timestamp> main. d. Make the scoped edit plus itsrevisions.mdreceipt (step 6 above), touching nothing else. e. Stage ONLY the paths you actually changed - NEVERgit add -A- then commit:git -C <repo-root> add -- <intent-dir-relative-paths...> && git -C <repo-root> commit -m "...". f. Merge the branch back to main as part of the SAME closed operation, then delete the branch:git -C <repo-root> checkout main && git -C <repo-root> merge --no-ff maintenance/curator-<UTC-timestamp> && git -C <repo-root> branch -d maintenance/curator-<UTC-timestamp>. Never leave the change stranded on an unmerged branch. This entire step 7 does not apply when you are running as part of your OWN session's normal end-of-delivery close (the existing steps 4-5 above, which already run inside that session's own held lock and are committed byend-intent's own scopedstore_commit, not by this step). - Report what you changed
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 48 lines · 25 tokens per session scan A 402d25f85c57
plastic-intent-curator is an agent published in the GitHub repository zalom/plastic (10 stars, last pushed 3d ago), licensed MIT. It adds 25 tokens to every session and 1,762 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
ap-implementer
L3 executor - G4 IMPLEMENT. Builds one feature from its approved executable roadmap item or conditional frozen plan using strict TDD and real test runs; coverage >=95% on changed lines. Reports PLAN-CONFLICT rather than improvising.
ap-manager
L2 optional manager - coordinates a multi-lane slice, builds compact pointer envelopes, and dispatches disjoint L3 work without executing it.
ap-feature-coordinator
L1 feature coordinator - drives approved ROADMAP.md lanes through their required build/review/verification gates and owns the run-wide feature frontier.
ap-framework-generator
L3 executor - FRAMEWORK GENERATE. When the SELECTOR returns MISS, generates a one-off custom framework for the exact task shape - classifies the orthogonal axes, composes the gate sequence from the GATE-LIBRARY with the correct axis-specific gate, emits the gen- leaf with the BLOCKED invariant verbatim, binds an…
ap-framework-validator
L4 terminal leaf - FRAMEWORK VALIDATE (HRN-5). A fresh, default-FAIL juror that proves a GENERATED framework is SOUND before any gate runs. Checks the HRN-5 default-FAIL checklist - every gate mapped, exactly one terminal DONE with negatives looping UP, the BLOCKED invariant verbatim, a non-empty acceptance set. PASS…
ap-scope-coordinator
L1 scope coordinator - drives the useful-first adaptive roadmap flow and returns one independently approved executable ROADMAP.md before build.