plan-first SKILL.md skillA
plan-first from edbertchan/catstack is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add edbertchan/catstack/plan-first@git:20261012.afd48c4Pins git:20261012.afd48c4 in mdr.lock. Pin the fingerprint instead.
- Audit grade
- A, 17 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- edbertchan/catstack
- Path
product/skills/plan-first/SKILL.md- Versions recorded
- 4
- Latest version
- git:20261012.afd48c4, committed Oct 12, 2026
- First version recorded
- Sep 10, 2026
- Size
- 6,490 bytes
- Repository stars
- 6
- License
- none declared
Front door for work that will span more than one file, review unit, or commit. Produces the plan before the first edit: the claim, the done-gate, the slice boundaries, the gates that will run, and the base it runs against. Names the invariants that apply rather than restating them. Use before authoring implementation work, or when a task is about to become a PR stack.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Plan first
Most rework is a constraint discovered late that was knowable early. This
produces the plan while changing the plan is still free.
It carries **no invariants of its own**. Invariants live in `principle-*`
skills, which is why they survive a plan being wrong. This file names them and
stops.
## When this is worth it
Run it when the work will cross a file, a review unit, or a commit. Skip it
for a one-file change with a local check — planning a two-line fix costs more
than the fix.
The tell that it was skipped: a gate rejects the shape of the work rather than
its content ("mixed review units", "changed without a corresponding test
change"). That is a planning failure surfacing as a build failure.
## Step 0. Scan the past decisions on the code you will touch
Before the claim, read what earlier changes to this area decided. For each
file or guard the plan changes:
```sh
git log --oneline -15 -- <file>
gh pr view <number> --json title,body
git log -S '<token>' --oneline
```
The first lists the PR numbers of recent decisions, the second reads the ones
that set the current shape, and the third finds who added the check or rule
you will change.
…Read the whole file at its exact version.
How to install
mdr add edbertchan/catstack/plan-first@sha256:67ab44a84bbf5b6aThe line at the top of this page pins the label git:20261012.afd48c4, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_xq52aozkb34pr2xr)
2 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 4 versions of this file, between Sep 10, 2026 and Oct 12, 2026, about one every 11 days.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20261012.afd48c4 latest | 2026-10-12 | afd48c4 | 6,490 B | A | view · diff |
| git:20260923.ed697e9 | 2026-09-23 | ed697e9 | 5,770 B | A | view · diff |
| git:20260916.3d1c40e | 2026-09-16 | 3d1c40e | 5,213 B | A | view · diff |
| git:20260910.1598cc7 | 2026-09-10 | 1598cc7 | 4,319 B | A | view |
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (6490 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
edbertchan/catstack · 6 stars · license none declared · pushed 2026-10-22 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_xq52aozkb34pr2xr GET https://markdownregistry.com/api/v1/resolve?ref=edbertchan/catstack/plan-first GET https://markdownregistry.com/api/v1/blob/67ab44a84bbf5b6a9769959a8680a6c87b81c68b2b2d9301dadb2bdd435ec5ee
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.
More from edbertchan/catstack
Every file in edbertchan/catstack