Repository navigation
How to: contribute to the wiki
Set up the local wiki authoring environment before editing documentation. The wiki uses pre-commit hooks and Vale to enforce Markdown structure, DiΓ‘taxis page types, and Canonical style rules.
βTABLE OF CONTENTS
ββββCLICK TO EXPAND
-
Install authoring tools
Install pre-commit and Vale
-
Choose a documentation workflow
Use proposals or direct wiki edits
-
Initialize style rules
Fetch Canonical rule submodules
-
Register pre-commit hooks
Run checks before commits
-
Apply wiki style rules
Write pages that pass local validation
-
Verify documentation changes
Run Vale and structural checks
Install pre-commit and vale on the authoring machine.
On Ubuntu, install pre-commit with apt:
sudo apt update
sudo apt install -y pre-commitOn Ubuntu, install Vale from the Snap Store:
sudo snap install vale --classicUse one workflow for each documentation change.
| Workflow | Use when | Repository to edit |
|---|---|---|
| Wiki update proposal | A main repository change needs documentation updates, but the contributor should not edit the wiki directly. | Main repository only |
| Direct wiki edit | A maintainer explicitly assigns wiki edits and has wiki push access configured. | snap-pi-hole.wiki |
For proposal mode, read the current wiki from the optional .wiki/ checkout, then include the proposed changes in the contribution summary. Use .agents/templates/wiki-update-proposal.md from the main repository when an AI agent prepares the proposal.
For direct wiki edits, work from a standalone snap-pi-hole.wiki checkout or from the ignored .wiki/ checkout in the main repository. From the repository root, pull the latest wiki content before editing:
git -C .wiki pull --ff-onlyCommit direct wiki edits from inside the wiki repository. Do not include .wiki/ changes in a main repository commit.
From the repository root, initialize the submodules that provide the Canonical Documentation Style Guide rules:
git submodule update --init --recursiveThe wiki Vale configuration reads local rules from .vale/styles and shared Canonical rules from the initialized submodule.
From the repository root, register the hooks:
pre-commit installThe hooks run Vale, verify the custom table of contents format, and check Snapcraft link formatting for Markdown files in the wiki root.
Use the following rules when editing wiki pages:
- Match the filename to the DiΓ‘taxis page type, such as
How-to:-*.md,Reference:-*.md, orExplanation:-*.md. - Start pages with a short introduction, not an H1 heading.
- Include the required
<details>table of contents block. - Keep TOC links internal and make each TOC item match the anchored heading text.
- Use numbered lists for ordered procedures.
- Use bullets for prerequisites, options, and non-sequential information.
- Wrap commands, paths, ports, configuration keys, and package names in backticks.
- Use descriptive link text instead of
hereorclick here. - Use standard Markdown links, such as
[Install on Linux](./How-to:-install-on-Linux). Do not use GitHub wiki link syntax. - Avoid first-person pronouns.
- Keep bold list labels on their own line with the description indented beneath them.
From the repository root, run all pre-commit checks:
pre-commit run --all-filesFrom the repository root, run Vale directly for one file:
vale 'How-to:-contribute-to-the-wiki.md'From the repository root, run the custom TOC checker directly when editing headings or TOC entries:
python3 .hooks/check_toc.py 'How-to:-contribute-to-the-wiki.md'π Home
| Legend | |
|---|---|
| π | Learning-oriented to teach concepts |
| π οΈ | Goal-oriented to achieve tasks |
| π‘ | Understanding-oriented theory |
| π | Information-oriented facts |
- π Getting started with the Pi-hole snap
- π οΈ Supported deployment patterns
- π‘ Architecture and rationale
- π‘ Security model
- π‘ Topology and architecture
- π‘ Why Unbound is not bundled
- π Deployment environment comparison
- π Networking compatibility
- π Supported systems
- π οΈ Install on Linux
- π οΈ Install on Ubuntu Core
- π οΈ Install in a LXD container
- π οΈ Install using cloud-init
- π οΈ Install using Multipass
- π οΈ Operator runbook
- π οΈ Backups and restores
- π οΈ SSL for web interface using Caddy
- π οΈ Configure DHCP
- π οΈ Customize gravity update schedule
- π οΈ Migrate from an existing install
- π‘ Refresh behavior and updates
- π Ports and firewall
- π Native configuration
- π CLI wrapper commands
- π Packaging a snap locally
- π οΈ IDE and AI agent setup
- π οΈ Set up VS Code for development
- π οΈ Set up Zed for development
- π οΈ Configure AI agent workflows
- π Workshop actions and agent workflows
- π Legacy VM workflows
- π‘ Build-time scripting and patches
- π‘ Release pipelines and channels
- π‘ Software Bill of Materials
- π SBOM and VEX artifacts
- π οΈ Submit a bug report
- π οΈ Contribute to the wiki