Repository navigation
Getting Started
From zero to a scaffolded, audited, publishable wiki skeleton in one sitting — the shortest honest path through the kit. Every command below was executed during this wiki run in a fresh sandbox (Debian-class, root, Python 3.11.2); the sample outputs are real, lightly trimmed. The full doctrine lives in The Four Phase Workflow; this page is the five-minute shape of it, plus where to go deep.
- Prerequisites
- Step 1 — get the kit and prepare the environment
- Step 2 — clone the subject and check its runtime floor
- Step 3 — inventory the subject in two minutes
- Step 4 — RUN the subject and probe it
- Step 5 — design the wiki before writing it
- Step 6 — scaffold the skeleton
- Step 7 — write, then audit to zero
- Step 8 — deliver
- Where to go next
- See also
- An environment with
python3(3.8+),bashandgit— the bootstrap will confirm and fill gaps. - A subject repository URL you are allowed to clone and run.
- An LLM agent that can execute shell commands and write files (Claude Code, Codex-class tooling, or a human at a terminal — the kit is agent-operated but not agent-exclusive).
git clone https://github.com/paulmann/github-wiki-llm-writer.git
cd github-wiki-llm-writer
bash setup/bootstrap.shThe bootstrap ends with a capability report and an egress check:
== 5. Capability report
git git version 2.39.5
curl curl 7.88.1 (x86_64-pc-linux-gnu) ...
jq jq-1.6
python3 Python 3.11.2
rg ripgrep 13.0.0
php PHP 8.2.34 (cli) ...
== 6. Network egress
https://github.com 200
https://raw.githubusercontent.com 301
https://api.github.com 200
Read setup/PITFALLS.md now — fifteen minutes that eliminate the mistakes which cost the reference run hours. Its first three entries produce silently wrong results.
mkdir -p workspace/repo && cd workspace/repo
git clone https://github.com/OWNER/REPO SUBJECT
cd ../..
python3 setup/check_runtime.py workspace/repo/SUBJECTExit 0 means fine (or nothing declared); exit 2 means the installed interpreter cannot boot the subject — fix the runtime first (the tool prints the recipe), because every probe of an unbootable subject measures a corpse.
python3 scan/repo_scan.py workspace/repo/SUBJECT --brief -o workspace/research/scan.jsonThe brief prints: git metadata including whether tags exist (this changes how you document versioning), license and extra attribution clauses, declared dependencies or their absence, the largest files (where the logic lives), entry points, version markers, every external host (your supply-chain facts), security-signal counts, and the configuration-key surface. Run against the kit itself, it reported: 8 commits, no tags, MIT, "NO MANIFEST — zero declared dependencies", 44 files / 5,523 code lines, entry point setup/bootstrap.sh.
For a web app (PHP shown; other runtimes via --serve-cmd):
python3 probe/webapp_probe.py --repo workspace/repo/SUBJECT \
--copy 'index.php,css,js' --entry /index.php --suite generic \
-o workspace/research/probe.json --md workspace/research/probe.mdFor a CLI or library subject, write a small driver that shells out and records stdout/stderr/exit codes — the shape matters, not the transport (see Research and Probing Guide).
The console summary flags every expectation mismatch with a verbatim marker, and the batteries report in one line each:
SUITE generic · 16 requests
200 GET /md.php
404 GET /.git/config
...
traversal : 17/20 denied, 0 leaked sensitive content
injection : 19/26 payloads survived into the response
headers : /md.php missing → Content-Security-Policy, X-Content-Type-Options, ...
(The figures above are this run's real measurement against the reference subject MD.Viewer 2.18.0, staged locally — full battery in 0.46 s.)
Caution
Batteries fire path-traversal and injection payloads. Run them against the staged local copy (--repo), never against third-party or production hosts. See Security Considerations.
Copy and fill the three Phase-2 documents:
cp templates/PROGRESS.json.tmpl workspace/PROGRESS.json # page tree + groups + style contract
cp templates/ban.json workspace/ban.json # from research/sources.md section D
cp templates/terms.json workspace/terms.json # from the domain-notes glossaryWrite the five research files first if you have not (summary.md, architecture.md, domain-notes.md, facts.json, sources.md with its §D "claims deliberately not made") — §D is what you paste into ban.json, and it is the artefact that stops a future pass from re-adding a plausible falsehood.
python3 scaffold/new_page.py workspace/wiki/OWNER.REPO.wiki --init \
--project "SUBJECT" --repo-url https://github.com/OWNER/REPO \
--version X.Y.Z --commit abc1234 --license MIT \
--progress workspace/PROGRESS.jsonOutput: Home.md, _Sidebar.md, _Footer.md and one stub per planned page — every stub already carrying the H1, lead-paragraph slot, ## Contents and ## See also that the auditor requires. Filenames use spaces (Security Hardening Guide.md); this is not cosmetic — GitHub resolves [[Security Hardening Guide]] against the space-named file, and a hyphenated filename makes every such link dead.
Fill pages (hardest first — usually Security and the big reference matrices), then loop:
python3 qa/fix_toc.py workspace/wiki/OWNER.REPO.wiki --bak
python3 qa/qa_wiki.py workspace/wiki/OWNER.REPO.wiki \
--terms workspace/terms.json --ban workspace/ban.json --strictRun python3 qa/qa_wiki.py --self-test once per session first — it proves the checker can fail (22 detections). Then iterate on the audit until ERRORS (0). The scaffold alone already passes:
TOTAL pages=5 (3 content) words=378 alerts=1 mermaid=1 tables=13 code=2 wiki-links=13
ERRORS (0):
WARNINGS (0):
bash publish/publish.sh workspace/wiki/OWNER.REPO.wiki OWNER/REPOQA-gates, clones the .wiki.git repo (branch master; falls back to a local git init with origin configured when the wiki was never initialised), commits, produces a verified bundle, writes PUBLISH.md with three push options, and stops — pushing needs credentials your sandbox probably lacks, and that is a planned outcome, not a failure. Finish with workspace/wiki/REPORT.md: what was verified, how, what the subject's own docs got wrong, and the limits of your analysis.
| You want… | Page |
|---|---|
| the reasoning and rules behind each phase | The Four Phase Workflow |
| to probe something unusual (CLI, two layouts, sessions) | Research and Probing Guide |
| to write pages that pass the first time | Writing Pages Guide |
| to understand an auditor error | QA and Audit Guide and Troubleshooting |
| every flag of every tool | Tool Reference and Configuration Reference |
| to publish into an existing wiki with history | Publishing and Delivery |
| to survive a sandbox that fights back | Sandbox Survival Guide |
- Home — the wiki's entry point and navigation
- Installation and Setup — requirements and environment in depth
- Features and Verification Model — what the kit guarantees and how
- FAQ — common first-run questions
- Security Considerations — authorized-use doctrine before you probe
github-wiki-llm-writer 1.2.1 · MIT · Repository · Report an issue · Home · Glossary · FAQ · Troubleshooting
Facts in this wiki are verified against the source at commit 7e17a11; see Changelog and Versioning.
Home Getting Started Features and Verification Model Comparison with Alternatives
Installation and Setup Configuration Reference
The Four Phase Workflow Research and Probing Guide Writing Pages Guide QA and Audit Guide
Publishing and Delivery Security Considerations Sandbox Survival Guide Extending the Kit
Tool Reference Architecture Troubleshooting FAQ Changelog and Versioning Glossary
1.2.1 · MIT