Skip to content
Documentation
Skill

/keep-the-why

In a project with a .keep-the-why, or when asked about Keep the Why or to set it up - extract and preserve the reasoning code cannot explain - decisions, rejected alternatives, workarounds, incidents, constraints - plus project setup and maintainer interviews. Not for what

BOOST
From plugin
keep-the-why
2311 skill
Install
$ npx -y skills add oliver-zehentleitner/keep-the-why --skill keep-the-why --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/keep-the-why

Context preview

The summary Claude sees to decide when to auto-load this skill.

In a project with a .keep-the-why, or when asked about Keep the Why or to set it up - extract and preserve the reasoning code cannot explain - decisions, rejected alternatives, workarounds, incidents, constraints - plus project setup and maintainer interviews. Not for what

SKILL.md

keep-the-why.SKILL.md
name: keep-the-why
description: In a project with a .keep-the-why, or when asked about Keep the Why or to set it up - extract and preserve the reasoning code cannot explain - decisions, rejected alternatives, workarounds, incidents, constraints - plus project setup and maintainer interviews. Not for what changed (see Keep a Changelog) - only why. Also the place for questions about how this skill works, complaints, feedback and settings changes about it. Anywhere else - no .keep-the-why, no such request - this skill is neither used nor offered nor named, not even in a closing offer to record something.
license: MIT
metadata:
  version: "0.20.3"
  repository: "https://github.com/oliver-zehentleitner/keep-the-why"
  author: "Oliver Zehentleitner"

Keep the Why

The core job: preserve and recover the reasoning that code alone cannot explain. Because "ask Bob" is not documentation — Keep a Changelog records what changed, this preserves why it changed.

When to use this skill

Four modes, all part of the same job:

1. **Continuous capture** — record rationale as it surfaces during normal development: decisions, rejected alternatives, workarounds, incidents, constraints, and changes that *didn't* happen (starting to modify something, then stopping once a reason not to became clear — that reasoning would otherwise leave no trace). See `references/continuous-capture.md`. 2. **Retrospective recovery** — given an existing or legacy repository, reconstruct what the code cannot explain from git history, issues, existing docs, and the code itself. Before a pass, read `references/retrospective-analysis.md`. 3. **Knowledge-transfer interview** — when a maintainer's knowledge is about to become unavailable, analyze the repository first, then either ask targeted questions or let them narrate freely. Before preparing or running one, read `references/interview-playbook.md`. 4. **Maintenance** — keep existing rationale current: resolve contradictions, mark superseded entries, merge duplicates, split files that have grown too large.

Asked what Keep the Why is, how it works, or what one can ask for: before answering, read `references/help.md` — its parts (what is required, what optional), and the sentences that start each mode, setup, an update and each optional component.

Edge cases

Don't create a `context/` entry for:

  • Routine implementation detail with no rejected alternative behind it.
  • Generic formatting or style changes.
  • Anything already fully explained by the code itself.
  • A correction — restoring something to what it should already have been (rule 4) — as opposed to a genuine fork between contending options.

Not every change is a decision worth a `context/` entry — see rule 10's proportionality gate.

Composition with other skills

Keep the Why is a cross-cutting persistence skill, not a development methodology. When another skill governs *how* the work gets done (planning, debugging, TDD, code review), that workflow runs first; this skill only preserves the rationale it produces. A design doc or implementation plan is evidence to draw from, not something to duplicate (rule 3; "Which file does this belong in?" in `references/repository-structure.md`).

Re-check whether this skill applies at the natural end of another skill's workflow step (a design settled, a root cause confirmed, an alternative rejected) — that's when capture-worthy content has just been produced. This re-check isn't guaranteed to happen on its own — another framework can hold attention through its own workflow; asking directly ("check whether keep-the-why applies here") is a reasonable fallback, not a sign something's broken.

Core rules

Rules 1 and 2 matter most — a skill that hallucinates rationale or acts on a misunderstood instruction is worse than no documentation.

1. **Never invent, never assume — ask.** If rationale can't be confirmed or reasonably inferred, mark it `unknown` or ask a focused question. This applies everywhere: entry content, config fields, ambiguous instructions, removals ("no reference found" means *unknown*, not *safe to delete* — ask before removing a Chesterton's Fence candidate; don't manufacture a justification either way). A genuinely *missing* config field with a documented default may be silently backfilled; a *present but unrecognized* or contradictory value is not the same — name the valid options and ask. Don't act on an unresolved ambiguity.

2. **Classify Evidence for every entry.** Three levels: **confirmed** (stated by a maintainer or backed by authoritative evidence), **inferred** (reasonably derived), **unknown** (can't be established). Evidence is a separate axis from Status (rule 5): a superseded decision can still have been confirmed when it was current. Add **Source** and **Verification** (`corroborated` | `uncorroborated` | `contradicted`) where there's something concrete to trace — a `contradicted` verification must explain what contradicts it. When two sources disagree, record both and flag the conflict as open rather than picking a winner. Full field definitions: `references/specification.md`; the `source-reference` setting governing when Source is actively sought: `references/setup.md`. One word per entry: when parts of an entry stand differently — a confirmed new reason beside a lost original one — the weakest grade wins and the body says which is which.

3. **Adapt to what exists.** Preserve the project's terminology and conventions. Update existing topic files instead of creating near-duplicates. Organize by *topic* (`auth.md`, `sync.md`), not by source file or commit. Existing, working decision records (an ADR folder, design notes) keep their own format: this skill's fields go on the entries it writes from now on, not retrofitted onto records that already work ("Retrofitting" in `references/repository-structure.md`).

4. **Record both halves of every decision: what was chosen, and what wasn't.** Actively look for rejected alternatives and why the

Read more
Ships withkeep-the-why

Keep a Changelog records what changed. Keep the Why preserves why it changed. Keep the Why is the why layer of repo-native project memory: your repository already holds what the project is, how it works and what changed; this is the agent skill, and the file

Get the whole plugin
Stats
230
Stars
13
Forks
Active
Maintenance
Python
Language
MIT
License
14h ago
Last commit
3mo ago
Created
4d ago
Added

Repo: oliver-zehentleitner/keep-the-why