agentleFS
scolladonscolladon/craft/skills/impact-triage/SKILL.md

impact-triage

Skill2 starsChanged 34 days agoMITView on GitHub

Craft impact-triage phase - re-verify every impact the run deferred through a read-only triager, show the verdicts, file the backlog-worthy ones under the backlog-write policy, and list them in the PR body.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Cross-phase wait: start only once the in-session awaitingHarnesses set is empty — every awaited executing-harness has landed, its triage is …

    line 13
  2. Very specific:

    Standalone: no open run means no store.

    line 17
  3. Very specific:

    No filing target → append NO-OP(impact-triage): no file-backed backlog — verdicts in the PR body only, go to step 5.

    line 43
  4. Very specific:

    Commit docs(<slug>): file triaged impacts, then append one FILED(<file>): I<n> <title> — not folded: <reason> line per filed entry.

    line 54

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

craft:impact-triage

Preamble (always runs — non-overridable)

  1. Manifest read (run manifest-lint.sh if standalone). Resolve the filing target per docs/contributing/specs/backlog.md Filing: source: file → its ref; no source key → the root BACKLOG.md when it exists, else none; source: custom → none.
  2. Cross-phase wait: start only once the in-session awaitingHarnesses set is empty — every awaited executing-harness has landed, its triage is done (the documentation late-EXCEPTION synthesis included) and its gate is green, or it was released by auto-skip, NO-OP or a waiver. Not yet → wait. This phase is never itself awaited.
  3. Standalone: no open run means no store. Say no open run: no discovered-impacts store in the final output and stop, writing nothing.
  4. Resolve the store:

    ledger="${CRAFT_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/run-ledger.sh"
    store="$("$ledger" dir)/<run-id>.impacts.md"

Procedure (default body — a manifest override: replaces everything below)

Session-owned, never delegated, except the spawn in step 2: the ledger, the store writes and the BACKLOG write live in the session.

  1. Untriaged ids. The I<n> of every DEFERRED( line of this run with no TRIAGED(I<n>): line. None → go to step 5.
  2. Spawn craft:impact-triager with the store path, the untriaged ids, the worktree path, the filing target path (or none), the base revision <base>, and the global + impact-triage-phase context: files verbatim.
  3. Record each verdict. Pipe its one-line rationale into "$ledger" verdict <run-id> I<n> <verdict>; the script appends the verdict to the store and TRIAGED(I<n>): <verdict> — <rationale> to the ledger. A returned id with no verdict, or a verdict the script refuses (exit 2), → re-spawn once for those ids only, then blocker { impact-triage, reason, ≤3 options }.
  4. Show, then file. Print the verdict table (id, verdict, title, rationale) before anything is written.
    • No filing target → append NO-OP(impact-triage): no file-backed backlog — verdicts in the PR body only, go to step 5.
    • Else consult the backlog-write action (default always; see docs/contributing/specs/policy.md). A refusal records its POLICY(...) line, writes nothing, and goes to step 5.
    • On proceed, write every drafted backlog:* entry under one section ### Open (scoped <date> — follow-ups surfaced by the <slug> run, triaged), following the repo's ordering convention. Proof output stays inside its fenced code block; any of it outside a fence is fenced before writing. Each entry keeps its Not folded: <reason> sentence. A spike entry opens with Spike — and carries Question: <what the probe must answer>.
    • Commit docs(<slug>): file triaged impacts, then append one FILED(<file>): I<n> <title> — not folded: <reason> line per filed entry.
    • No backlog:* verdict → no section, no commit.
  5. PR trailer. Rewrite the drafted PR body's - **Discovered impacts:** line as <n> deferred: <x> ready, <y> spike, <z> reject, then one line per entry (I<n> <verdict> — <title>), or none.

The phase never gates propose beyond its own steps; a verdict never folds.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.