Repository navigation
Home
wikiwright is an agent skill that writes a repository's GitHub wiki and keeps it current. The agent reads the repository and its npm or NuGet registry entry, and runs every example the pages will show against the version users install. Then it writes the pages with a sidebar and footer, pushes them to the .wiki.git repository and checks that each page is live. At the next release it runs the same examples again and fixes the pages whose output changed.
It ships as a Claude Code plugin and as a plain skills/wikiwright folder that other agents reading SKILL.md skills can load. The mechanical half is wikiwright.py, a single standard-library Python script with eleven subcommands that the agent (or you) can run on their own.
In a terminal, with Claude Code installed:
claude plugin marketplace add https://github.com/m4bwav/wikiwright.git
claude plugin install wikiwright@wikiwrightThen ask for a wiki in a Claude Code session, in the repository you want documented: "write a wiki for this repo". Copilot, other agents and gh skill install are on Getting started.
A wiki page whose output no longer matches its code is the commonest way a wiki goes wrong. Take this page, pages/Home.md, where someone added reverse=True and updated the output by hand:
Widget sorts words.
```python
words = ["pear", "fig", "apple"]
print(sorted(words, reverse=True))
```
It prints:
```text
['pear', 'fig', 'apple']
```The saved output of the verification run, wiki-verify.out.txt, still holds the old answer, and the program wiki-verify.py still holds the old code. From a clone of the repository, outputs and snippets both report the page:
$ python skills/wikiwright/scripts/wikiwright.py outputs pages wiki-verify.out.txt
Home.md:10: error: output block not in the verify output: ['pear', 'fig', 'apple']
outputs: 1 pages, 1 outputs checked, 1 missing, 0 skipped
$ echo $?
1
$ python skills/wikiwright/scripts/wikiwright.py snippets pages wiki-verify.py
Home.md:3: error: code block not in the program (line 5 is in no program: print(sorted(words, reverse=True))): words = ["pear", "fig", "apple"]
snippets: 1 pages, 1 blocks checked, 1 missing, 0 skipped, 0 commands
$ echo $?
1The fix is to add the case to the verification program, run it, and paste what it prints. With the skill installed, the agent does that itself before it pushes.
- Getting started: what it needs, every install route, and a first command.
- How the skill works: the eight steps, update mode, what the agent asks of you and what it never does.
-
What the helper checks: the rules behind
check,outputs,snippetsandlive, and the markers that steer them. -
Commands: every subcommand of
wikiwright.py, its options, output and exit codes. - Recipes: asking the agent, gating a wiki before a push, updating for a release, surveying a package.
- Versions and upgrading: what each release from 0.1.0 to 0.9.0 added, and how to update each install.
- FAQ: the first-page click, Windows path limits, other registries and hosts, stale installs.
- Development: the tests, CI, the eval suite and how a release is made.
The current version is 0.9.0, released on 2026-10-01.
This wiki describes wikiwright 0.9.0 (master at a809eff) and was last updated on 2026-10-03. The skill is MIT licensed. Report problems in the issues.
Using it
The releases
Contributing
Elsewhere