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 skills/scolladon/craft/decisionsnpx skills add scolladon/craft --skill decisionsgit clone --depth 1 https://github.com/scolladon/craftWrote 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/skills/scolladon/craft/decisions)<a href="https://agentmods.dev/skills/scolladon/craft/decisions"><img src="https://agentmods.dev/badge/skills/scolladon/craft/decisions.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.00031 | $0.01220 |
| Opus 5 | $0.00015 | $0.00610 |
| Sonnet 5 | $0.00006 | $0.00244 |
| Haiku 4.5 | $0.00003 | $0.00122 |
Grade A, and why
decisions 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 — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
craft:decisions
Preamble (always runs — non-overridable)
- Manifest read (lint if standalone). Probe: ADR directory (
paths.adr, elsedocs/adr/, create if absent); repo ADR template, else"${CRAFT_ROOT:-${CLAUDE_PLUGIN_ROOT}}/templates/adr.md"; next ADR number = highest existing + 1. - ADR writes route through the intention port's
record— for thefileadapter this is a thin relabel of today'sdocs/adr/writes byte-for-byte (seedocs/contributing/specs/intention.md); the authoring below is unchanged. A write now carries the governance declaration fromtemplates/adr.md(thesubjects:andsupersedes:frontmatter fence). Thedecisionsphase is the only ADR backfill writer: it writes the block into a pre-existing ADR it authors or supersedes, never as a read-phase side effect.
Procedure (default body — a manifest override: replaces everything below)
ENTIRELY session-owned — never delegated.
- Triage every candidate (session-owned) into adopt-or-escalate. A candidate is
ADOPTED without escalation when its design recommendation is clear AND aligns with
an existing ADR or a stated craft principle — check "aligns with an existing ADR"
against the governing slice arriving on slot 1 (
skills/run/SKILL.md's intention hint), an indexed read, never an unindexed wish over the full ADR directory. A candidate is a GENUINE FORK — escalated — when the recommendation is unclear, the alternatives carry a real user-judgment trade-off, or it deviates from an existing ADR/principle. When in doubt, escalate: adopt only the unambiguous. - Genuine forks → user conversation. Per escalated candidate: present ≤3 options with the design's recommendation; capture the user's decision.
- No genuine forks (zero candidates, or every candidate adopted) → first-class
no-op. Record
NO-OP(decisions): no user-judgment decisions — <justification>in the run record, the 1–3 line justification naming what was adopted and the ADR/principle each aligns with (so the no-op is auditable, not asserted); the run record is carried into the PR body (documentation phase), so the no-op is stated, not hidden. Never invent questions to manufacture a conversation. Adopted recommendations stand as the design states them; they ARE still authored as ADRs (see step 5), each marked adopted-as-recommended (no user judgment) so the decision trail is complete — the no-op concerns the escalation conversation, not the ADR record. - Cross-candidate interaction check (before authoring): once all candidates are settled (escalated ones ratified, the rest adopted), check whether any settled choice's rationale is voided or altered by another (a later choice can invalidate an earlier one's premise — including a ratified fork voiding an adopted choice). If so, re-surface the affected choice — escalating an adopted choice to the user if its premise is now in genuine doubt — before authoring.
- Author each settled decision — ratified (escalated-and-decided) and adopted
(taken-as-recommended) — as
<adr-dir>/NNN-<title>.mdfrom the template; commit each asdocs(adr): NNN <title>. An adopted choice's ADR marks its Decision section adopted-as-recommended (no user judgment) so the log stays distinguishable from a ratified choice, whose ADR records the user's judgment.
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 · 72 lines · 31 tokens per session scan A 0f2f71e1ac9a
decisions is a skill published in the GitHub repository scolladon/craft (2 stars, last pushed 15d ago), licensed MIT. It adds 31 tokens to every session and 1,220 once invoked, about $0.0002 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 skills, from other repositories
define
Manifest builder. Turns shared understanding into a verifiable Manifest with Deliverables, Acceptance Criteria, Global Invariants, and an Initial Approach. Use when planning features, scoping refactors, debugging complex issues, or when the user asks to define, scope, plan, spec out, make a manifest, or break down a…
check-pr
Read-only inspection of a single GitHub PR lifecycle — checks CI, review threads, description sync, and mergeability, and returns PASS or FAIL with per-gate findings. Never invokes the merge button. Use when verifying a PR is ready to merge, polling lifecycle progress, checking mergeability, or babysitting a GitHub PR…
babysit-pr
Author-side PR lifecycle babysitter and companion to review-pr. Use when the user wants to tend an existing GitHub PR through CI, review threads, description sync, mergeability, auto-fixes, or asks to babysit a PR with or without an existing manifest.
review-code
Review a change along one specific quality dimension — bugs, design, simplicity, maintainability, testability, test quality, type safety, contracts, operational readiness, docs, prose value, change intent, defect-class completeness after a fix, or CLAUDE.md adherence. Loads exactly one dimension reference and audits…
just-define
Goal-based Manifest builder. Encodes shared understanding into a verifiable Manifest — Deliverables, Acceptance Criteria, Global Invariants — deciding for itself how to interview. Use when the user asks to just define it, spec it lean, or make a manifest with minimal process.
update-lid
Configure or reconcile a project for linked-intent development (LID). Dispatches on project state — fresh bootstrap, append directives to an existing agent-instructions file (AGENTS.md or CLAUDE.md), add missing mode marker, reconcile convention drift, or run mode transitions. Invoked as /update-lid. For fresh…