record-decision — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited record-decision (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Wraps bin/record-decision.sh. Creates one ADR file per invocation under docs/decisions/ (or the profile's configured location). Only MADR format is supported in v1.
for the primary datastore", "Adopt pnpm over npm"*. If the user's phrasing is long and prose-y ("I think we should probably go with Postgres because…"), propose a crisp title and confirm.
proposed (default) when the decision is still upfor review; accepted when the user says "we've already decided" or similar. Never default to accepted silently — when unclear, you MUST call the `AskUserQuestion` tool (not plain text):
{
"questions": [
{
"question": "What is the status of this decision?",
"header": "Status",
"multiSelect": false,
"options": [
{ "label": "Proposed (Default)", "description": "Decision is open for review" },
{ "label": "Accepted", "description": "Decision has already been agreed upon" }
]
}
]
}docs/decisions. Override when the repo usesa different location (check the profile's documentation.scaffold_types if uncertain).
with the user when the title contains non-ASCII or unusual punctuation.
record-decision creates the directory if missing, but doesn't scaffold a README.md or ADR-000. If the directory is empty (no prior ADRs), mention that bootstrap-project scaffolds an introductory ADR-000 and offer to run it first — but proceed with the new ADR either way if the user insists.
Run bin/record-decision.sh --dry-run and read back:
Confirm before the real run. Single-line "record that we chose X" phrasings can skip confirmation when the title is already explicit.
bin/record-decision.sh --target <cwd> \
--title "<imperative headline>" \
[--status proposed|accepted] \
[--dir <path>] \
[--slug <slug>] \
[--date YYYY-MM-DD] \
[--dry-run]The output JSON gives you the relative path. Offer to:
Decision drivers, Considered options, Decision outcome, Consequences, Validation).
/nyann:commit (suggest a commit subjectlike docs(adr): ADR-NNN — <title>).
Do NOT auto-fill the body from the user's conversation. An ADR's value comes from the writer thinking through the structure; filling it with Claude-generated prose dilutes that.
Numbers come from scanning ADR-<NNN>-*.md files in the target directory. When the user has a non-conventional ADR naming scheme (e.g. 0001-foo.md without the ADR- prefix), the detector will miss them and start at 000. If the user reports this, offer to rename existing files or accept a manual --dir pointing at a separate location.
ls docs/decisions/ or a simple filelisting; outside this skill.
is represented as a new ADR pointing at the old one (MADR convention).
release skillhandles CHANGELOG; ADRs and CHANGELOG are separate stores.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.