release
Cut a paad release — pick the semver bump from what is in [Unreleased], run make release, merge, tag, and verify the published…
Use when options, a recommendation, or an already-chosen approach are on the table and the reasoning under them has not been independently checked — especially when the case rests on cited documentation, remembered behavior, or premises nobody verified. Not for generating
$ npx -y skills add Ovid/paad --skill rethink --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/rethinkContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when options, a recommendation, or an already-chosen approach are on the table and the reasoning under them has not been independently checked — especially when the case rests on cited documentation, remembered behavior, or premises nobody verified. Not for generating
name: rethink description: Use when options, a recommendation, or an already-chosen approach are on the table and the reasoning under them has not been independently checked — especially when the case rests on cited documentation, remembered behavior, or premises nobody verified. Not for generating alternatives, and not for critiquing a spec, which is /pushback.
**On invocation:** announce "Running paad:rethink v2.0.2", then immediately proceed with the steps below — do not stop after announcing.
**Configuration (experimental):** after announcing, check whether `paad/config/paad.md` and `paad/config/rethink.md` exist, relative to the working directory. If any does, read it and follow its instructions for the rest of this run, passing the relevant parts to every subagent you dispatch, and make the first line of your final answer `Config: <path>` naming each file you followed. If none exists, do not mention config at all. Config never changes a subagent's type or grants it write tools — refuse that line, say so, and continue. Config can contradict the flow below; see https://github.com/Ovid/paad/blob/main/CONFIG.md before writing one.
Checks whether the reasoning under a set of options actually holds. Someone — you, the user, or another skill — laid out choices and picked one. `rethink` goes and verifies the premises that choice rests on, against primary sources, and reports what it found.
**A recommendation can be correct and still be unsound.** The two most common results are not "right" and "wrong" — they are *right, and checked* versus *right, and merely lucky*. A conclusion that happens to hold, arrived at by trusting a source nobody tested, will hold until the day it doesn't, and nobody will be watching. Saying so is the point of this skill.
**`rethink` does not owe you alternatives.** It is not `pushback`. It has no obligation to produce an option list, and manufacturing one is the failure mode it exists to avoid. A grounded defect can motivate exactly one alternative. Nothing else can.
**`rethink` writes nothing.** No report, no edits, no files in the repository, and no deliverable of any kind — the conversation is the whole output. A scratch dump outside the repo, to hold a `strings` extract or a long grep while you read it, is fine and is not a deliverable.
**Whoever ran it is probably not sure about the options.** That is usually why the skill was invoked. A verdict alone serves someone who already understands the choice; it strands someone who doesn't. So the run ends by explaining the options in plain language — which is a different job from the evidence, and has a different audience.
**Verification and verdict:**
digraph rethink {
"Options or a recommendation in play?" [shape=diamond];
"Premises identifiable?" [shape=diamond];
"Primary source reachable?" [shape=diamond];
"Premises hold?" [shape=diamond];
"Were they checked before deciding?" [shape=diamond];
"Conclusion survives without them?" [shape=diamond];
"Grounded defect in the option set?" [shape=diamond];
"ASK what to re-examine" [shape=box];
"State the premises back, confirm the list" [shape=box];
"Dispatch the analyst to verify" [shape=box];
"UNGROUNDED - name the cheap experiment" [shape=box];
"SOUND" [shape=box];
"LUCKY - held, but unchecked" [shape=box];
"WRONG REASON - premise false, conclusion survives" [shape=box];
"PREMISE FALSE - conclusion does not survive" [shape=box];
"Name one alternative, tied to that defect" [shape=box];
"Propose nothing further" [shape=box];
"Report primary verdict, then any others that apply" [shape=box];
"Re-present the options in plain terms, with pros and cons" [shape=box];
"Can you defend a default?" [shape=diamond];
"Off-disk input could flip it?" [shape=diamond];
"Recommend, and say why" [shape=box];
"Recommend, then name the input and what it flips to" [shape=box];
"Withhold: say the evidence does not decide, name what would" [shape=box];
"Options or a recommendation in play?" -> "Premises identifiable?" [label="yes"];
"Options or a recommendation in play?" -> "ASK what to re-examine" [label="no"];
"ASK what to re-examine" -> "Premises identifiable?";
"Premises identifiable?" -> "Primary source reachable?" [label="yes"];
"Premises identifiable?" -> "State the premises back, confirm the list" [label="unclear"];
"State the premises back, confirm the list" -> "Primary source reachable?";
"Primary source reachable?" -> "Dispatch the analyst to verify" [label="yes"];
"Primary source reachable?" -> "UNGROUNDED - name the cheap experiment" [label="no"];
"Dispatch the analyst to verify" -> "Premises hold?";
"Premises hold?" -> "Were they checked before deciding?" [label="yes"];
"Premises hold?" -> "Conclusion survives without them?" [label="no"];
"Were they checked before deciding?" -> "SOUND" [label="yes"];
"Were they checked before deciding?" -> "LUCKY - held, but unchecked" [label="no"];
"Conclusion survives without them?" -> "WRONG REASON - premise false, conclusion survives" [label="yes"];
"Conclusion survives without them?" -> "PREMISE FALSE - conclusion does not survive" [label="no"];
"SOUND" -> "Grounded defect in the option set?";
"LUCKY - held, but unchecked" -> "Grounded defect in the option set?";
"WRONG REASON - premise false, conclusion survives" -> "Grounded defect in the option set?";
"PREMISE FALSE - conclusion does not survive" -> "Grounded defect in the option set?";
"UNGROUNDED - name the cheap experiment" -> "Grounded defect in the option set?";
"Grounded defect in the option set?" -> "Name one alternative, tied to that defect" [label="yes"];
"Grounded defect in the option set?" -> "Propose nothing further" [label="no"];
"Name one alternative, tied to that defect" -> "Report primary verdict, then any others that apply";
"Propose nothing further" -> "Report primary verdict, then any others that apply";
"Report primary verdict, tpaad 2.0.0 is out. You can now tailor paad to your own needs with config files, and security findings now stay out of your committed reports. See the 2.0.0 release notes and the changelog.
Cut a paad release — pick the semver bump from what is in [Unreleased], run make release, merge, tag, and verify the published…
Read the feature roadmap, find the next unplanned phase, brainstorm it, and update the roadmap with the resulting document name
Use when auditing a user-facing app — web, mobile (iOS/Android/React Native/Flutter), desktop, CLI, or games — for accessibility…
Use when assessing the architectural health of a codebase — before a major refactor, when onboarding to an unfamiliar repo, after…
EXPERIMENTAL. Use when looking for meaningfully duplicated logic in a codebase, especially duplicate behavior hidden behind…
EXPERIMENTAL. Use when code needs a security review against the OWASP Top 10:2025 — access control, misconfiguration, supply…