agentleFS
MattieMattie/mattie_skills/skills/rmdd/SKILL.md

rmdd

Skill1 starsChanged 8 days agoMITView on GitHub

Run ReadMe Driven Development only when explicitly invoked as `$rmdd`. Make a project's code and tests match its current root README and relevant linked documentation without editing those documents. Keep private, local run receipts under `.rmdd/rmdd/` in Git and non-Git projects. Do not invoke for ordinary README reading, writing, reviewing, or discussion.

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 10 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use the README as the description of the product we want.

    line 8
  2. Distinctive:

    Treat the current root README.md and any local documentation it relies on as product intent.

    line 13
  3. Distinctive:

    Leave those documents untouched.

    line 14
  4. Very specific:

    Read prior .rmdd/rmdd/ receipts only as execution history.

    line 15
  5. Distinctive:

    Read the project instructions and the complete root README.

    line 26
  6. Very specific:

    Keep the returned run_dir for later commands.

    line 34
  7. Distinctive:

    If it cannot create writable local state, stop before changing project files.

    line 41
  8. Distinctive:

    Read local documentation linked by the README when it helps define observable behavior.

    line 46
  9. Distinctive:

    Use reasonable judgment when the README leaves room for a safe, reversible choice.

    line 57
  10. Distinctive:

    Add or update tests for changed behavior and run the checks that matter for this project.

    line 61
  11. Very specific:

    Run receipt.py refresh --run-dir <run_dir> before finishing.

    line 76
  12. Distinctive:

    Keep progress updates to one or two useful sentences.

    line 86
  13. Distinctive:

    Use plain descriptions instead of a status table for every behavior.

    line 96
  14. Very specific:

    Use FAILED only when the run itself could not complete.

    line 106

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

ReadMe Driven Development

Use the README as the description of the product we want. Read it, inspect the project, and make the implementation agree with it.

Keep the boundary clear

  • Treat the current root README.md and any local documentation it relies on as product intent.
  • Leave those documents untouched. A developer may update them while the run is in progress.
  • Read prior .rmdd/rmdd/ receipts only as execution history. The current documentation wins.
  • Work directly inside .rmdd/rmdd/. Do not list .rmdd/ or inspect .rmdd/rmdv/.
  • Save authored progress and the final answer. Leave tool output, private reasoning, credentials, and unrelated conversation out of the receipt.

The README can use ordinary prose, links, and examples. It needs no RMDD-specific syntax.

Start a receipt

  1. Find the project root. Use the Git work-tree root when Git is available. Otherwise, walk upward to the nearest README.md.
  2. Read the project instructions and the complete root README.
  3. Resolve scripts/receipt.py relative to this skill. Run it with an available Python 3 interpreter, preferring the project's environment when it has one:

    receipt.py start --project-root <root> --readme <root>/README.md
  4. Keep the returned run_dir for later commands. Mirror the opening progress update with:

    receipt.py progress --run-dir <run_dir> --message <authored update>

The helper creates the snapshots, Git evidence, local /.rmdd/ exclusion, and starting metadata. If it cannot create writable local state, stop before changing project files. An exclude warning is safe to continue past; mention it in the final answer.

Reconcile the project

Read local documentation linked by the README when it helps define observable behavior. Before relying on one, save its starting evidence:

receipt.py document --run-dir <run_dir> --path <document>

Compare the complete current documentation with the code and tests. Preserve compatible behavior, implement clear additions and changes, and remove behavior the documentation withdraws. Keep shared or ambiguous code when removal could damage something still intended.

Use reasonable judgment when the README leaves room for a safe, reversible choice. Call out the interpretation afterward. Finish compatible work before raising a narrow blocker that needs a consequential product decision or new authority.

Add or update tests for changed behavior and run the checks that matter for this project. Record useful receipt details as you go:

receipt.py note --run-dir <run_dir> --kind changed --text <path>
receipt.py note --run-dir <run_dir> --kind check --text <command and result>
receipt.py note --run-dir <run_dir> --kind warning --text <warning>

For a non-Git project, send the relevant before/after edit evidence to receipt.py evidence on standard input. Mirror each later user-facing progress update with receipt.py progress in the same order it appears in chat.

Check the latest save

Run receipt.py refresh --run-dir <run_dir> before finishing. Re-read the root README and every recorded intent document. If changed_sources is non-empty, reconsider the affected work and rerun its checks. Keep both README snapshots when the source changed during the run, and never overwrite or revert the developer's edit.

Inspect the final implementation diff or recorded edits. Confirm that RMDD did not change the root README or any linked intent document.

Talk like a teammate

Keep progress updates to one or two useful sentences. Say what you found, what you are changing, or what needs a decision. Keep receipt mechanics in the receipt unless a failure affects the run.

Make the final answer easy to skim. Cover:

  • what changed;
  • anything still open and why;
  • checks that ran; and
  • the receipt location.

Use plain descriptions instead of a status table for every behavior. Skip hashes, pointer rules, Git plumbing, and repeated labels when everything worked. A natural update such as "The formatter now preserves blank lines, and its focused tests pass" carries enough information.

Compose the complete final Markdown, then pass it on standard input to:

receipt.py finish --run-dir <run_dir> --status FINISHED

Use FAILED only when the run itself could not complete. A focused product blocker can remain in a finished run. If finish catches a newer documentation save, reconcile it, run refresh again, and rewrite the final answer. Re-read response.md and return that Markdown verbatim.

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.