Skip to content

Development

Mark Rogers edited this page Oct 18, 2026 · 1 revision

Layout

  • skills/<name>/SKILL.md: each skill's working document, under 200 lines, with a description of at most 1,024 characters.
  • Beside each, the evergreen companions: RESEARCH.md (dated findings, sources and a four-track search plan), CHANGELOG.md (every change with its reason), LEARNINGS.md, TESTS.md with evals/evals.json, MAINTENANCE.md, and evergreen.json (tier, schedule and history).
  • skills/madnesswright/scripts/mpn.py: the helper, standard-library Python 3.9 or newer, one JSON object per command.
  • tests/check_skills.py (structure and public-safety checks), tests/test_mpn.py (the helper), tests/fixtures/ (synthetic mods and a synthetic SceneTools project).
  • scripts/budget.py: the size budget.
  • ai-docs/: session notes, the handoff and the log.

Running the checks

From the repository root, as AGENTS.md asks before every commit. The outputs below are from a fresh clone of tag v0.1.1:

python tests/check_skills.py
ok: 3 skills, companions, manifests, links and text guards

Exit code 0.

check_skills.py checks each skill's frontmatter, description length, companions and evergreen.json. It also parses every JSON file, wants an X.Y.Z version in plugin.json, follows every relative link, and fails any file holding a home-folder path or an AI attribution line.

python tests/test_mpn.py
..........................
----------------------------------------------------------------------
Ran 26 tests in <s>s

OK

Exit code 0.

The 26 tests cover scene-lint on a synthetic project written to a temporary folder (8), check-mod (14), deploy and log (3) and backup (1).

python scripts/budget.py
largest description characters (always loaded; spec limit 1,024)       1000  green<=950   yellow<=1024  yellow madnesswright
all descriptions tokens together (always loaded)                        737  green<=1200  yellow<=1600  green  3 skills
largest SKILL.md tokens (loaded on every use)                          2281  green<=2500  yellow<=3500  green  madnesswright
largest reference tokens (loaded on demand)                            1593  green<=3500  yellow<=5000  green  madnesswright-modtools/harmony.md
largest script tokens (run, read only when debugging)                  9331  green<=9000  yellow<=12000 yellow madnesswright/mpn.py
installed skills folder KB                                              174  green<=200   yellow<=400   green  
tracked repository KB                                                  1117  green<=512   yellow<=1536  yellow 
budget: YELLOW

Exit code 0.

The budget keeps the always-loaded descriptions and the installed size small. Red exits 2 and fails CI; yellow passes and is printed for the maintainer. At 0.1.1 three rows are yellow: the longest description (1,000 characters), mpn.py (about 9,300 tokens) and the tracked repository (1,117 KB).

CI

.github/workflows/tests.yml runs check_skills.py and test_mpn.py on Linux, macOS and Windows with Python 3.9 and 3.14, on every push to main and every pull request, plus a job for budget.py. Dependabot keeps the workflow actions current.

Releases

Bump .claude-plugin/plugin.json, add a line to the root CHANGELOG.md, and push a tag vX.Y.Z. .github/workflows/release.yml then:

  1. checks that the tag matches the version in plugin.json;
  2. runs the structure check, the helper's tests and the budget;
  3. zips skills/ (without __pycache__) with README, LICENSE and SECURITY.md;
  4. publishes a GitHub release with that zip.

Evergreen upkeep

Each skill follows the evergreen protocol in pointer mode. With the evergreen plugin installed it refreshes through evergreen-refresh; otherwise its MAINTENANCE.md has the rules. All three skills are tier moderate, every 30 days, next due 2026-11-16. The madnesswright skill also re-checks one volatile claim every 14 days and at each use: that official modding runs only on releasebeta. Every change to a SKILL.md gets a CHANGELOG entry with its reason, and a change to what a skill triggers on or does reruns its evals.

Rules

AGENTS.md holds the rules for anyone, or any agent, working in the repository. Among them:

  • Research beats recall: no branch name, version, path, menu item, card field or rule changes from memory, only from a source cited in RESEARCH.md.
  • mpn.py writes only a backup zip and the game's Mods folder.
  • Nothing from the SceneTools or ModTools repositories is copied in.
  • The skills install nothing on their own.
  • Nothing private in the public repository, and no AI attribution anywhere.

How this wiki was checked

The repository's ai-docs/notes/ folder holds:

  • 2026-10-17-wiki-verify.py: downloads the 0.1.1 release zip, clones tag v0.1.1 for the fixtures, builds the stand-in game folders, and runs every command on these pages.
  • 2026-10-17-wiki-verify.out.txt: its saved output on Windows, with the scratch folder, home folder, backup time stamp and test timing masked. The pages were filled from it by script.
  • 2026-10-17-wiki-verify.linux.out.txt: the same program on Linux (WSL Ubuntu, Python 3.14.4), which differs only in path separators and in the order check-mod lists cards and warnings.
  • 2026-10-17-github-wiki.md: how the wiki was made and how to update it at the next release.

Clone this wiki locally