Explore the paths first where none are on record (the `invent` skill), then attack every path adversarially with one blind attacker per path, commit to one, and present the commitment — consequences for the user to confirm, kills on the record. Use when the user asks to run discernment on a tracked piece of work (`/discern`, or in words), or asks for a ready-made plan to be attacked before it is built. A work whose `next:` names this stage is not that ask, because the flow never advances itse...
Installs into .claude/skills of the current project.
Are you the author of Discern?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/donald-ada-discern)
---
name: discern
description: Explore the paths first where none are on record (the `invent` skill), then attack every path adversarially with one blind attacker per path, commit to one, and present the commitment — consequences for the user to confirm, kills on the record. Use when the user asks to run discernment on a tracked piece of work (`/discern`, or in words), or asks for a ready-made plan to be attacked before it is built. A work whose `next:` names this stage is not that ask, because the flow never advances itself, and a plan handed over to be implemented is not an invitation to attack it or to start the flow.
---
# Discernment
The genius of judgment. Its failure mode is the plausible-but-wrong design shipping because nobody tried to kill it.
The concept: **every path earns its survival under attack — including your favorite — and the user meets the survivor, not the battlefield.** Find the attack that kills each alternative from wherever it actually lives — the path's own shape knows its weakest joint better than any checklist. Where the plan under attack already has a contract (a work that ran Galvanizing), open `CONTRACT.md` first: the seams and pinned values are what an attack has to land against. Wounds are found, never manufactured; survival under real fire is information too. The decisions this project already recorded are live ammunition — `.genius/DECIDED.md` first, finished work files, and records that predate this plugin (`docs/adr/`): a path that contradicts one either dies of it, or survives by naming the decision it overturns and why. Ammunition goes stale: a recorded constraint the code stopped having kills nothing, so check each round before firing it, and correct a drifted one where it was written (`errata` skill) instead of shooting with it.
**Don't attack the paths yourself — spawn a fresh attacker per path, and judge what they find.** The session that reads every path has begun to prefer one before it fires a shot, and "including your favorite" asked of the mind that holds the favourite is asked of the one attacker that will go easy on it. Each attacker is the plugin's `attacker` agent ([agents/attacker.md](agents/attacker.md)), spawned in parallel, its task message carrying the confirmed problem, that one path, and where the record lives — never another path and nothing of the conversation. What comes back is claims: verify each landed attack against the repo before it kills anything, because a kill on a false wound is recorded for good. The weighing is yours — attacks against attacks, what each path survived, which wound is fatal and which is a cost.
Then commit, and present the commitment — not a ballot. The user sees one chosen approach, the alternatives that died, and each kill written as the attack that broke it. Confirmation is of **consequences, not labels**: play back what the choice means when things happen ("choosing the pipeline means a refund re-walks every adjustment") until the user can say that's what they want — or overrule you. A menu surfaces only where a fork is genuinely the user's world — their team, their ops, their priorities — asked with a recommendation and its price. If they can't evaluate even that, teach the difference first (`blindspot` skill), or record an honest `assumed:`.
## How it runs
1. Read the paths — where the snapshot holds none, run the `invent` skill's steps first, in this command: its inventors in parallel, its check of what they return, its record; the user types one command for both halves, because nothing between them waits on the user. Then `.genius/DECIDED.md`, and the older records the repo keeps; open `CONTRACT.md` only where the plan already has one. Check each round before firing it; correct a drifted one (`errata` skill).
2. Spawn one `attacker` agent per path, in parallel, each handed the confirmed problem, its one path and where the record lives; stay awake until every one returns. Verify each landed attack against the repo yourself. Wounds found, never manufactured; what a path survived is recorded too.
3. Commit to the survivor. Where every path dies, say so: back to invention (the `invent` skill, run again here) with the wounds as constraints, or to `/wonder` where they indict the problem.
4. Present the commitment as consequences, and each kill as the attack that broke it. A menu only where the fork is the user's world; teach first where they cannot evaluate it, or record an honest `assumed:`.
5. Record: the Decision section — chosen, the load-bearing why, one kill-reason line per rejected path; the whole fight under `## discernment` in the log; Invention's paths compacted out of the snapshot; `next: /galvanize <slug>` — the exact command, because with two works at the same stage a bare stage name does not say which one moves.
An unrecorded kill-reason gets re-proposed in six weeks. A decision a future stranger would re-fight earns its line in the decision index at close-out (`decision-record` skill holds the test); most stay with their work file. The fight is kept whole in the log — every attack tried on every path, the ones that landed and the ones the survivor walked out of, because what a design survived tells the builder how much load it was proved to take — under one anchor the Decision section links. The snapshot keeps the decision itself: chosen, the load-bearing why in a few lines, one kill-reason line per rejected path. A kill-reason that names no attack is an opinion.
Then `/galvanize`. Done when the chosen approach is confirmed in consequences the user could evaluate, and every rejection carries its kill-reason — written as the attack actually tried and what it broke, not as a verdict.