agentleFS
arbelharbelh/perdure/skills/decide/SKILL.md

decide

Skill0 starsChanged 28 days agoMITView on GitHub

Create a new Architecture Decision Record (ADR) in perdure/decisions/.

51 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use redesign, weekly and 9 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • arjunkshahSkill

    redesign

    Redesign existing interfaces to premium quality while preserving product goals and functional behavior.

    Also in 3 projects that use this

  • gaiaaiagentSkill

    weekly

    Generate a weekly digest rolling up dailies into higher-level pattern analysis

    Also in 3 projects that use this

  • SethGammonSkill

    experiment

    Automated optimization loop with scalar fitness function. Proposes changes in isolated worktrees, measures with a metric command, keeps improvements, discards failures. Supports convergence detection and diminishing returns.

    Also in 3 projects that use this

  • kv0906Skill

    inbox

    Quick capture mode (with content) or batch processing mode (no content). GTD-style routing of inbox items to proper folders. Use "/inbox thought to capture" or "/inbox" to process.

    Also in 3 projects that use this

  • AnthropicSkill

    brief

    Generate contextual briefings for legal work — daily summary, topic research, or incident response. Use when starting your day and need a scan of legal-relevant items across email, calendar, and contracts, when researching a specific legal question across internal sources, or when a developing situation (data breach, litigation threat, regulatory inquiry) needs rapid context.

    Also in 5 projects that use this

  • AWSSkill

    map

    Map verified service capabilities against customer-provided control framework and threat model. Produces mapping-results.json, controls-catalog.md, and framework-mapping.md. Supports pluggable frameworks: CCMv4, NIST 800-53, CIS Benchmarks, ISO 27001, etc. Split into 4 focused sub-skills for better accuracy; this skill orchestrates them.

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. 0 are common, 9 are distinctive, and 9 are very specific to this project.

  • 0

    Common

    Most of the 50 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 9

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Create an ADR when a task that never reads the originating record must still obey the decision — a default, a name, a boundary, a rule — …

    line 19
  2. Distinctive:

    If unsure, ask the user: "Will another task have to obey this without reading the record?"

    line 35
  3. Very specific:

    If perdure/decisions/ doesn't exist, create it.

    line 40
  4. Very specific:

    If perdure/decisions/INDEX.md doesn't exist, create it with the skeleton (see step 5).

    line 42
  5. Very specific:

    Add 1 and pad to 3 digits.

    line 65
  6. Distinctive:

    Ask the user (or infer from context) for:

    line 72
  7. Distinctive:

    When promoting an existing workflow decision, pre-fill these from the workflow file.

    line 82
  8. Distinctive:

    Write the file with this exact schema:

    line 86
  9. Distinctive:

    If INDEX.md doesn't exist, create with this skeleton:

    line 142
  10. Distinctive:

    Add the new ADR to the Active section:

    line 174
  11. Very specific:

    Update the updated: frontmatter timestamp.

    line 179
  12. Very specific:

    Ask the user: "Commit perdure/decisions/ to git?"

    line 200
  13. Very specific:

    If they say no, add perdure/decisions/ to .gitignore

    line 202
  14. Distinctive:

    Never overwrite an existing ADR file

    line 224
  15. Very specific:

    Always number with next-adr-id.py (it checks the files and every branch)

    line 225
  16. Very specific:

    Never set status: superseded on creation (that's only set later)

    line 226
  17. Very specific:

    Keep ADR files immutable after status: accepted except:

    line 227
  18. Distinctive:

    Always update INDEX.md in the same operation as ADR file creation

    line 232

“Common” is measured: kept by at least 6 in 10 of the 50 edited versions of this file we could read. “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

Create an Architecture Decision Record

You are creating a new ADR — a structured, immutable record of a significant architectural or design decision. ADRs live in perdure/decisions/ and survive workflows, sessions, and time.

When to use this skill

Create an ADR when a task that never reads the originating record must still obey the decision — a default, a name, a boundary, a rule — and it can be stated in one sentence without that task's filenames. Size does not matter: a one-line default other tasks inherit qualifies; a ten-file refactor's local choices do not. Typical shapes:

  • Architecture, data model, or system boundaries
  • Trade-offs worth documenting (chose X over Y because Z)
  • Anything future engineers (or you in 6 months) will ask "why?" about
  • Anything that crosses workflows or outlives a single feature

Don't create an ADR for a choice only this task's files depend on, however large the change. When only the rule matters and not the why, propose a one-line addition to the project's instruction file (CLAUDE.md or AGENTS.md) instead, for the user to place — perdure never writes outside perdure/.

If unsure, ask the user: "Will another task have to obey this without reading the record?"

Steps

1. Verify the directory

If perdure/decisions/ doesn't exist, create it. Do this first: next-adr-id.py exits 2 when it finds no perdure/ folder at or above where it runs. If perdure/decisions/INDEX.md doesn't exist, create it with the skeleton (see step 5).

2. Resolve slug, ID, and filename

Slug: from $1 or ask the user (kebab-case, e.g., sqlite-over-redis).

ID: the next free 3-digit number. From the project root, run:

python3 "${CLAUDE_PLUGIN_ROOT}/scripts/next-adr-id.py" --root .

It prints the id to use (001 for the first decision): one more than the highest id in perdure/decisions/ or on any local or remote-tracking branch, so two branches do not take the same number. (${CLAUDE_PLUGIN_ROOT} is the plugin directory, set by Claude Code. Without it, the same script sits in the plugin checkout's root scripts/ directory, or in scripts/ beside this SKILL.md in a skills-CLI install.)

Where no script can be reached, read the highest id from the id position of the names, exactly three digits after the date (it sees the checked-out branch only):

ls perdure/decisions/ | sed -nE 's/^[0-9]{4}-[0-9]{2}-[0-9]{2}-([0-9]{3})-.*/\1/p' | sort -n | tail -1

Add 1 and pad to 3 digits; no output means 001.

Filename: YYYY-MM-DD-<id>-<slug>.md Example: 2026-05-10-005-sqlite-over-redis.md

3. Gather information

Ask the user (or infer from context) for:

  • Title (one line, plain English)
  • Context — what's the situation that required this decision?
  • Decision — what was chosen?
  • Alternatives considered — what other options were weighed and why rejected?
  • Consequences — positive and negative outcomes
  • Tags — categorization keywords (e.g., auth, cost, agent-config)
  • Related workflow(s) — slug(s) of workflow(s) this decision came from (optional)
  • Implementing commits — git SHAs if applicable (optional; can backfill later)

When promoting an existing workflow decision, pre-fill these from the workflow file.

4. Create the ADR file

Write the file with this exact schema:

---
id: <3-digit ID>
title: <title>
status: accepted
date: <YYYY-MM-DD>

# Linkage
supersedes: []
superseded-by: []
related-decisions: []
related-workflows: [<slug> or empty]

# Implementation tracking
implementing-commits: []
implementing-files: []

# Discoverability
tags: []
---

# Context

<what situation required this decision>

# Decision

<what was chosen and the core reasoning>

# Alternatives considered

- **<Alternative 1>**: <why rejected>
- **<Alternative 2>**: <why rejected>

# Consequences

**Positive**:
- <benefit 1>
- <benefit 2>

**Negative**:
- <trade-off 1>

**Neutral**:
- <side effect>

# References

- Workflow: <link to workflow file if any>
- Related commits: <SHAs if known>

5. Update INDEX.md

If INDEX.md doesn't exist, create with this skeleton:

---
type: orchestrator-decisions-index
updated: <ISO-8601 timestamp>
schema-version: 1
---

# Decisions Index

## Active — currently in force

| ID | Title | Accepted | Tags |
|----|-------|----------|------|

## Superseded

| ID | Title | Superseded by | Date |
|----|-------|---------------|------|

## Deprecated

| ID | Title | Deprecated | Reason |
|----|-------|------------|--------|

## Rejected

| ID | Title | Date | Reason |
|----|-------|------|--------|

Add the new ADR to the Active section:

| <id> | [<title>](<filename>) | <date> | <tags> |

Update the updated: frontmatter timestamp.

On a merge conflict in INDEX.md, keep the rows from both sides, ordered by id. If both branches took the same id, rot-lint reports a decision-id finding. Fix it by renumbering the later decision to the id next-adr-id.py prints, and every reference to it, in decisions and records, terminal ones included:

  • its file name and its id:
  • its INDEX row
  • each related-decisions entry that names it, in other decisions
  • each ADR-NNN mention of it, and each [promoted → #NNN] mark that points at it

A mention of the shared number belongs to the branch that added it (git log -S'ADR-NNN' on that branch finds the commit). Renumber the later decision's branch's mentions; leave the rest unchanged, and change nothing else.

6. Check .gitignore

Ask the user: "Commit perdure/decisions/ to git?"

  • Recommended: yes (ADRs are team-facing, long-term team context)
  • If they say no, add perdure/decisions/ to .gitignore

Same default as workflow files — both are committed by default (docs/RECORDS-CONVENTION.md, also at references/RECORDS-CONVENTION.md beside this SKILL.md in a skills-CLI install); archives remain the gitignored privacy layer. Note: records carry no authors frontmatter by design — git already carries authorship once, and records document work, not workers.

7. Report

✅ ADR created: #<id> <title>

File: perdure/decisions/<filename>
Status: accepted
Added to INDEX.md Active section

Next steps:
  - Review the ADR and edit any section that needs more detail
  - Commit if your team shares ADRs
  - View all: /perdure:decisions

Safety rules

  • Never overwrite an existing ADR file
  • Always number with next-adr-id.py (it checks the files and every branch)
  • Never set status: superseded on creation (that's only set later)
  • Keep ADR files immutable after status: accepted except:
    • Adding superseded-by when a new ADR supersedes this
    • Updating status to deprecated with reason
    • Backfilling implementing-commits after code ships
    • Renumbering a decision whose number another branch also took (step 5)
  • Always update INDEX.md in the same operation as ADR file creation

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.