Repository navigation
How The Skill Works
This page describes what the agent does once the skill loads, as skills/wikiwright/SKILL.md lays it out in 0.9.0. The helper's own rules are on What the helper checks.
The skill's description tells the agent to use it when you ask to write, fill out, generate, create or update a wiki for a repository or package. Its examples are "write a wiki for this repo", "fill out the GitHub wiki", "update the wiki for 2.4.0" and "the wiki is empty". It also loads when a package-modernize run reaches its wiki step, and for "refresh wikiwright" or "is wikiwright stale". It is not for a README on its own, a docs site such as GitHub Pages or Docusaurus, an Obsidian vault or ai-docs/ notes.
A new wiki, where the repository has none or only GitHub's placeholder page, goes through the eight steps below. An update for a release, where the wiki exists and the repository's ai-docs/notes/*-github-wiki.md says how it was made, follows update mode. A draft-only request ("put the pages in ./wiki-draft/, don't push or commit") writes the changed pages to that folder and the notes beside them, and leaves both clones untouched.
-
Freshness and the overlay. The agent reads
evergreen.jsonnext toSKILL.md; if the skill is past its research date or a learning contradicted it, it says so in one line and refreshes after the task. Then it reads your private overlay, if you have one (Getting started). -
Preflight.
wikiwright.py preflight OWNER/REPO --enable --clone <clone>.wikichecks the wiki feature, whether the.wiki.gitrepository exists, and whether it holds only the placeholder. It runs first, before any writing, even when your overlay already lists the wiki. -
Survey. The agent reads the README, CHANGELOG, AGENTS.md and CLAUDE.md,
ai-docs/, the public source, the tests and the CI workflows. From GitHub it reads releases, tags, and issues and pull requests, open and closed; their questions become FAQ entries. From the registry, starting withwikiwright.py registry, it takes versions with dates, downloads, the published package's files and its dependency tree. The agent keeps two lists from here on: facts the README does not state, and places where the shipped docs are wrong. - Page set. It picks the pages for the repository's kind (see Page sets).
-
Verify every example. It installs the published version into a scratch folder, never the working tree, and runs every example the pages will show from a verification script started with
wikiwright.py scaffold. Packages that make requests are answered by a local fixture server or stand-in proxy, never the internet. The script and its output are saved so the next release can run them again and diff. -
Write the pages. File names are hyphenated, headings are in sentence case and links are
[Text](Page-Name). Input and output sit in paired blocks with real output only, and "not tested" marks whatever did not run. Pages use LF line endings and carry no AI attribution, and the footer names the version and the date. -
Check. The agent rereads every sentence asking which output, source line or registry answer supports it, then runs
check,outputs,snippetsand the everwrite prose checker when it is installed. Each must pass. -
Publish. It commits in the wiki working copy and pushes to
master, then runswikiwright.py liveuntil every page answers. -
Record. It writes
ai-docs/notes/<date>-github-wiki.mdin the repository from the note template: the pages, how they were verified, the facts found, the numbered inaccuracies in the shipped docs and the update procedure. It does not edit your README or CHANGELOG unless asked; it lists their mistakes for you.
- Read the wiki note and
git pull --ff-onlythe wiki working copy. - Read the CHANGELOG since the version the footer names, and survey the new version on the registry.
- Run the saved verification script against the new published version and compare:
wikiwright.py diffout <saved output> <new output>lists every changed, added and removed section, andwikiwright.py outputslists every page output the new run no longer prints. Recipes that import other packages are run against their current versions too, since a clean diff proves only the cases the script already holds. - Update the pages that name the version, Versions and upgrading, and the footer.
- Check, publish and record as in steps 6 to 8.
A wiki written before its script was saved is adopted first: the agent writes or completes the program until every page output appears in its saved output.
The pages depend on what the repository is. The sets in references/page-sets.md and references/page-sets-cli.md were each tested on real wikis:
| Kind | Pages |
|---|---|
| Library (npm or NuGet) | Home, Getting started, API reference, a behaviour page named for what it does (such as How-Titles-Are-Chosen), edge cases and errors, Recipes, Versions and upgrading, FAQ, Development |
| Library with a command line | the library set plus Commands |
| Seeded or deterministic output | adds a behaviour page named after the promise (such as Same-Seed-Same-Sequence) |
| Command-line tool | Home, Getting started, Commands, Configuration, Recipes, Versions and upgrading, FAQ, Development |
| Library and its tool in one repository | both sets together |
Applications, websites and monorepos have no tested set yet. The agent says so; for an application it starts from Home, Getting started, Configuration, Architecture, Deploying, FAQ and Development, and records what the run taught it. On Gitea, Forgejo, GitLab and Azure DevOps the set stays the same and the navigation files and names change.
GitHub creates a wiki's repository only when someone saves a first page in the web UI. Switching the wiki feature on does not create it, and no API can. When preflight reports no-wiki-repo, the agent asks you in its first message to open https://github.com/OWNER/REPO/wiki/_new and save any text, and carries on with the survey, the verification and the pages meanwhile. The push replaces that page.
The agent also stops for your approval wherever your tools require it, which in Claude Code can include the push itself.
- Request the real service a package talks to, even once to record an answer. Output that is remote content is shown from a local stand-in and labelled as sample content.
- Show an output it did not produce, or convert one by hand into another layout.
- Overwrite a wiki that already has pages:
has-pagesmeans read every page and update in place. - Add AI attribution to pages or commits.
- Edit the README or CHANGELOG without being asked.
When you correct the agent, an error repeats, or it finds a workaround or an environment fact, it writes a lesson to the skill's LEARNINGS.md with an ID and a short code name. The skill was built from twelve real wikis written between 2026-09-28 and 2026-09-30, listed in references/page-sets.md.
A package-modernize run reaches the wiki in its Phase 7, after the release is verified on the registry. An existing wiki takes update mode; the golden recordings of old versions that package-modernize keeps feed Versions and upgrading.
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