Diataxis Docs Writer
calf-ai/calfkit-sdk
Write or improve software documentation using the Diátaxis framework — four documentation types (tutorials, how-to guides, reference, explanation), each serving a different user need.
Author and edit PiFinder's user-facing documentation in the project's house style.
$ npx skills add brickbots/PiFinder --skill docs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install brickbots/PiFinder docs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/docs .claude/skills/docs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "docs" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docs into .claude/skills/docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add brickbots/PiFinder --skill docs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install brickbots/PiFinder docs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/docs .agents/skills/docs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "docs" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docs into .agents/skills/docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brickbots/PiFinder --skill docs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install brickbots/PiFinder docs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/docs .cursor/skills/docs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "docs" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docs into .cursor/skills/docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/brickbots/PiFinder.git --path .claude/skills/docs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add brickbots/PiFinder --skill docs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install brickbots/PiFinder docs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/docs .gemini/skills/docs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "docs" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docs into .gemini/skills/docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install brickbots/PiFinder docsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add brickbots/PiFinder --skill docs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/docs .github/skills/docs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "docs" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docs into .github/skills/docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brickbots/PiFinder --skill docs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install brickbots/PiFinder docs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/docs .opencode/skills/docs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "docs" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/docs into .opencode/skills/docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
docsAuthor and edit PiFinder's user-facing documentation in the project's house style.
Docs is an agent skill from brickbots/PiFinder. Author and edit PiFinder's user-facing documentation in the project's house style. The published docs are reStructuredText (.rst) in docs/source/, built with Sphinx + the Read the Docs theme and hosted at pifinder.readthedocs.io. Use this skill whenever the user wants to write, add, update, or polish documentation — documenting a new feature, menu, screen, or setting in the user guide; creating a new doc page and wiring it into the toctree; or revising existing prose for clarity and voice — even if they never say…
Its SKILL.md is about 6.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `evals/evals.json`, `references/hardware-support.md` and `references/product-knowledge-base.md`).
It sits in Development, covering Technical documentation, Technical writing and Architecture decision records. It works with Python. The repository describes itself as: A plate solving telescope finder based around a Raspberry PI and RPI HQ Camera. The licence is GPL-3.0.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3775008. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pythongitpipFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pifinder.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Docs loads about 6.2k tokens when it runs, and up to ~41k if it reads all its reference files. Until then it costs about 222 tokens; SKILL.md has 3,281 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from brickbots/PiFinder at commit 3775008, republished under its GPL-3.0 licence (© brickbots). 3,281 words, ~6,234 tokens.
.claude/skills/docs/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.PiFinder's published documentation is a Sphinx site written in reStructuredText. Your job with this skill is to add or improve pages that a reader moves through without friction: the same rST conventions, the same cross-reference style, and the plain, consistent prose described under The house voice below. That voice is the part most likely to slip, so read it before you write.
The real documentation lives in docs/source/*.rst. It is built by Sphinx
and published to pifinder.readthedocs.io.
The trap: docs/*.md (e.g. docs/user_guide.md) are four-line redirect
stubs pointing at Read the Docs. They are not the docs. If you find yourself
editing a .md file under docs/, stop — you're in the wrong place. Edit the
matching docs/source/<name>.rst.
The page set (registered in docs/source/index.rst):
| File | Covers |
|---|---|
quick_start.rst | First-night, get-observing walkthrough |
user_guide.rst | Workflow reference for operating & observing — the printable core; defers enumeration to menu_map, deep topics to satellite pages |
menu_map.rst | Every menu item in the tree, one entry each |
equipment.rst | Telescopes & eyepieces: gear setup, magnification/TFOV, flip/flop |
catalogs.rst | Object catalogs included |
connectivity.rst | Reaching the device from another device: WiFi modes, web interface, SMB share |
skysafari.rst | SkySafari / planetarium integration |
troubleshooting.rst | Symptom-led fixes and FAQ |
build_guide.rst | Assembling the hardware |
v25_upgrade.rst | Upgrading a v2 unit |
software.rst | Flashing / updating the software image |
sd_card.rst | Swapping / re-imaging the SD card |
dev_guide.rst, dev_arch.rst | Contributor / architecture docs |
api.rst | HTTP API reference |
BOM.rst | Bill of materials |
The manual covers rev4, v3 and v2.5 PiFinders. rev4 is the current hardware, fully enabled in software from v2.6.1, and it differs from v3 in ways a reader will hit immediately:
| v3 / v2.5 | rev4 | |
|---|---|---|
| Power | white slide switch | power button — press, confirm, second press shuts down |
| Charging | optional PiSugar S Plus add-on | on-board charger; battery icon in the title bar, warnings at 10% and 5%, automatic clean shutdown when flat |
| Directional keys | four separate arrow buttons along the bottom | a single 5-way joystick; pressing it in acts as SQUARE |
| Screen | 1.5", 128×128 | 1.91", 176×176, larger glyphs, much wider dimming range |
| Sound | none | buzzer with a Volume setting (Off, 1–5) under User Pref |
Three rules for writing across both:
.. note:: under the passage they affect — not the other way round, and not balanced
"on rev4… on v3…" pairs in every paragraph.Press the power button on top to start the PiFinder. To shut down, press it again — the
screen asks you to confirm, and a second press powers the unit off.
.. note::
On v3 and v2.5 PiFinders, power is a white slide switch rather than a button, and you
shut down from the Quick Menu instead.build_guide.rst and BOM.rst describe the v3/v2.5 through-hole build only. rev4 build files are
not published, so do not add rev4 content or scoping notes to those two pages.
Section in user_guide vs standalone page — a topic earns its own page only
when readers arrive at it directly with a task in hand (search, a Discord
answer, a cross-page link) and it is separable from the guide's
operate-and-observe storyline (a sentence + link suffices in its place).
Otherwise it's a user_guide section. Standalone page URLs get linked from the
wild — don't merge or rename pages casually. Rationale and worked examples:
docs/adr/0015-user-docs-page-granularity.md.
Before writing a single line, read the page you're about to touch (or the closest sibling). Mirror its structure: heading depth, how it introduces images, how it refers to other pages, how long its sections run.
Do not mirror its sentence style. Most of the manual was written before the house voice below was settled, so the neighbouring paragraphs are a worked example of layout and a poor guide to prose. Take the structure from the page and the sentences from the rules.
Documentation that's confidently wrong is worse than none. Two bundled references hold hard-won, authoritative product knowledge — consult them before writing about anything you're not certain of, and prefer their facts over your own assumptions about how the hardware behaves.
references/product-knowledge-base.md — the big one. Distilled from real
support threads, it covers product versions/configs, setup & first use
(power/charging, GPS lock, focus, brightness, sleep mode), common issues,
connectivity, catalogs, warranty, an FAQ, and a troubleshooting decision tree.
It's long, so jump to the relevant ## section rather than reading top to
bottom. Especially useful for the troubleshooting/setup material that the user
guide and quick start cover.references/hardware-support.md — diagnosis and troubleshooting detail
(plate-solving focus/exposure, alignment, power, GPS interference, build
issues).Crucial framing: both files were written to guide customer-support emails, not docs. Mine them for facts — specs, defaults, behaviors, the steps that actually fix a problem — but never carry over their support voice (reassurance scripts, escalation advice, sign-offs). Rewrite every fact in the manual's own voice. If anything there conflicts with the code or the existing docs, trust the code/docs and flag the conflict to the user rather than documenting the discrepancy.
The manual follows a simplified technical English style. Write short, plain sentences. Use the same word for the same thing every time.
This matters more here than in most software documentation. The reader is usually outdoors in the dark. They are cold, their night vision is fragile, and they are often reading on a phone one-handed. PiFinder's own interface ships in German, Spanish, French and Chinese, so a large share of readers work through the English manual as a second language. Short, predictable sentences survive those conditions. Elegant long ones do not.
Simplified does not mean cold. The warmth comes from the words you choose and from talking to the reader directly. It does not come from long sentences or decorative punctuation. Keep the warmth. Shorten the sentences.
Rule 7 is the one that decays fastest, because every writer reaches for a synonym to avoid repetition. Repetition is correct here. These are the terms that drift most in the current manual:
| Concept | Use | Not |
|---|---|---|
| Operate a key | press | push, tap, hit, click |
| Long-press one key | press and hold | hold, long-press |
| Choose a menu entry | select | choose, pick, activate |
| The physical screen | the screen | the display, the panel |
| The product | the PiFinder | the unit, the device, your device |
| Move within a menu | scroll | navigate, browse, go to |
| Power on / off (reader's action) | turn on / turn off | power up, switch on/off |
| The machine's startup sequence | boot | start up, startup |
| A catalog object | object | target, DSO |
| The user's telescope | telescope | scope, tube — but keep polar scope, finder scope, OTA |
| Go up one menu level | go back | return, exit, back out |
The full table, the reasoning behind each choice, worked before/after examples,
and patterns for replacing em-dashes live in references/ste-style.md. Read
it before writing or revising more than a paragraph.
Apply this to text you write, not to text you pass by. The manual predates this style and still contains 259 em-dashes and 83 semicolons. Convert opportunistically, the same way you convert screenshots: text you write fresh follows every rule, text you are already revising gets converted in the same edit, and everything else stays as it is. Do not start a mass style pass. If a page needs one, say so and let the user decide.
Talk to the reader as "you." "You then see the Main Menu."
Keep the tone calm and confident. Reserve exclamation points for the rare genuinely delightful moment. Prefer plain, declarative sentences otherwise.
Say it once. Cut throat-clearing ("In order to…", "You should note that…"), redundant restatement, and hedging. When a procedure runs to more than two or three ordered steps, use a numbered list rather than a chain of "To begin… Next… Once you have…" paragraphs.
Write complete sentences. Do not open with a conjunction. Never begin a sentence with "And". Join the thought to the sentence before it, or rephrase. The same goes for opening with "But" or "So."
Explain the why, but compress it. A reader who understands the reason
trusts the instruction. Keep the why, but state it in a clause rather than a
paragraph. "The PiFinder dims the screen after a while to save battery and
prevent glare" earns its keep. A three-sentence aside reassuring the reader
that this is normal does not. When a caveat genuinely needs more room, put it
in a .. note:: rather than swelling the main flow.
Plain language over jargon. When a technical term is unavoidable (plate solving, alt/az), define it in passing the first time, the way the quick start glosses "plate solving" as taking continuous pictures and comparing them.
Hardware keys are bold, uppercase: the UP / DOWN arrows, RIGHT, LEFT, the SQUARE button, + and -. Menu and screen names are written in Title Case as they appear on the device (Settings Menu, Object Details, Push-To).
Describe menu navigation as a prose chain, not a glyph path. Walk the
reader along the route in plain verbs: "From the main menu, select Settings,
scroll down to Advanced, then select PiFinder Type." Do not write Settings → Advanced → PiFinder Type. Arrow paths belong to the Mermaid menu trees in
menu_map.rst. In running prose they read as jargon.
Use select and scroll throughout, never "choose", "pick", or "go to". A route that mixes verbs makes the reader wonder whether the steps differ. The manual gets this wrong in several places, so copy the rule rather than the neighbouring page.
Name each step in Title Case as it shows on the device. Anchor it when that
helps the reader find it ("near the bottom of the main menu", "at the top of
the Start menu"). For a destination you point at more than once, link it with
a :ref: cross-reference to its section instead of respelling the whole path
each time.
Voice check. Both of these carry the same information.
Yes. Hold SQUARE and press + to brighten the screen, or - to dim it. At a dark site you can turn it right down to preserve your night vision.
No. Brightness is adjustable via the SQUARE modifier key in combination with the increment/decrement keys — at a dark site the display can be turned right down, which will help to preserve your night vision.
The second version breaks four rules at once. It is passive ("is adjustable", "can be turned"). It joins two sentences with an em-dash. It says "display" where the manual says "screen". It chains auxiliaries ("will help to preserve"). None of those faults is dramatic on its own. Together they are what makes documentation tiring to read at 2am.
These are the patterns used across the existing pages. For anything not covered
here — tables, the full admonition list, code blocks, substitutions — read
references/rst-conventions.md.
Headings use an underline (the title may also have an overline). Keep one character per level, consistently, within a page:
Page Title
==========
Major Section
-------------
Sub-section
~~~~~~~~~~~~(Some pages overline and underline the page title with =; if the page you're
editing does that, match it.) Never skip a level or switch characters mid-page —
Sphinx infers the hierarchy from the order the characters first appear, so an
inconsistent ladder silently reorders your structure.
Links to other pages use :doc:, optionally with display text:
see the :doc:`Build Guide <build_guide>`
checkout the full :doc:`user_guide`Links to a section use :ref: with the autosectionlabel form
docname:section title. Critically, the label is lowercased even though the
heading itself is Title Case:
heading in the file: Settings Menu
reference to it: :ref:`user_guide:settings menu`
with custom text: :ref:`object images <user_guide:object images>`Images point into a per-page folder under images/. Use :width: to place
two side by side:
.. image:: images/user_guide/options_menu_01.png
.. image:: images/quick_start/pf_front.jpeg
:width: 45%
.. image:: images/quick_start/pf_rear.jpeg
:width: 45%Reference real, existing image files. If a feature needs a screenshot that
doesn't exist yet, you can usually capture and prepare it yourself — drive
the running app to the screen, grab it, and convert it (see Preparing
screenshots below), then drop it in the right images/<page>/ folder. Only when
the shot genuinely can't be produced this way (e.g. it needs a real night sky,
specific hardware, or a physical setup) should you fall back to a clearly-named
placeholder path in the .. image:: directive and flag, in your summary, that
the user needs to supply it. Never invent a filename for an image you haven't
actually produced.
Notes use the note admonition (body indented under it):
.. note::
The PiFinder dims the screen after it's been idle for a while to save
battery and prevent glare. The default is 30 seconds; you can change it in
the :ref:`user_guide:settings menu`.External links: `PiFinder.io <https://www.pifinder.io/>`_ — note the
trailing underscore.
Getting a doc-ready screenshot is two steps: capture the raw screen from a running PiFinder, then convert it to the larger, brighter house style.
Capture at 176×176 (rev4) by default — that is what pf_remote launch now
does without being asked. New and re-taken screenshots are rev4 shots.
The manual still contains ~118 older 256×256 images captured from the 128×128 panel. There is no mass-replacement job and you must not start one. The rule is opportunistic conversion:
Shoot the 128 px panel (--display headless) only when the shot is specifically
illustrating v3/v2.5 hardware — for example a side-by-side in
"Which PiFinder do I have?".
pifinder-remote skill)You don't need real hardware. The pifinder-remote skill runs PiFinder
headlessly and lets you drive it like a user over its HTTP API — launch it,
press keys to navigate to the screen you're documenting, and save the live
display as a PNG. Read that skill's SKILL.md for the full command set;
the shape of it is:
S=.claude/skills/pifinder-remote/scripts/pf_remote.py
python3 $S launch # headless PiFinder at 176x176 (first run ~90s)
python3 $S launch -fb # ...plus the rev4 battery icon and a full
# simulated discharge (low-battery warnings)
python3 $S launch --display headless # the 128x128 v3/v2.5 panel, when you need it
python3 $S key DOWN DOWN RIGHT # navigate to the screen you want
python3 $S screen -o /tmp/raw_shot.png # capture the current screen
python3 $S stop # clean shutdown when doneUse -fb for anything showing the title bar on rev4 — without it the battery
icon is absent, because plain -fh emulates rev3. It also runs a full discharge
lap, which is how you reach the low-battery popups and each battery bucket
without hardware.
After each key press, capture a fresh screen and Read the PNG to confirm
you're on the right screen before you keep it — menu order shifts between
versions, so the screen is the ground truth.
screenshot_to_doc.py)Raw captures are red-only (the OLED is driven red to protect night vision), so
they're small and dim. The docs use larger, brighter images: the red intensity is
recolored onto a warm amber tint and scaled 2×. The amber recolor is what makes
them look "brighter" — don't fiddle with brightness yourself; the bundled tool
bakes in the house tint (245,76,10), the 2× scale, and crisp pixel upscaling.
At 2× a rev4 capture lands at 352×352; the older 128 px shots are 256×256:
# one screenshot, named for where it lands in the manual:
python scripts/screenshot_to_doc.py /tmp/raw_shot.png \
-o docs/source/images/user_guide/status_screen_docs.png
# several at once into a page's image folder (keeps each input's name):
python scripts/screenshot_to_doc.py /tmp/shot1.png /tmp/shot2.png \
--out-dir docs/source/images/quick_start/Keep the existing filename when you re-take a shot — the .. image:: directive
then needs no edit and the diff shows exactly what changed.
Name outputs for their role in the docs, not after the raw capture — a reader
(and the .. image:: directive) should see status_screen_docs.png, not
raw_shot.png. Run python scripts/screenshot_to_doc.py -h for the options
(--resample lanczos for smoother edges, --tint, --scale, --force). It
needs Pillow, which is already a PiFinder dependency — activate the project venv
if the import fails.
This is the common case. A new menu, screen, or setting shipped and the manual needs to describe it.
user_guide.rst; a new screen goes near related screens. Read the
surrounding sections so your new one slots in at the right heading depth... note::.:ref: to related sections... image:: directives where a screenshot clarifies things (see the
placeholder guidance above).docs/source/<name>.rst with a page title and the standard top
.. note:: about which software version the docs target, if the page is
version-sensitive (copy the one from quick_start.rst).docs/source/index.rst — a new page that
isn't in the toctree won't appear in the navigation and Sphinx will warn that
it's an orphan. Insert it in the reading-order position that makes sense.docs/source/images/<name>/ for its screenshots.This is where the house voice does most of its work, so read
references/ste-style.md first.
Work in this order. It goes from mechanical to judged, and the early passes often make the later ones unnecessary:
Preserve the meaning, every cross-reference, and every image path. Keep the scope tight: revise the passage you were asked about, not the whole page.
Broken cross-references and malformed rST only show up at build time. Point the output at a throwaway dir so you don't litter the repo:
cd docs
python -m sphinx -b html -n -q source /tmp/pifinder_docs_build-n is "nitpicky" mode, which flags broken :ref: and :doc: targets. -q
suppresses the progress output, so the command prints only warnings and
errors. The manual currently builds with zero warnings, so anything that
appears is yours. Fix it. The two you are most likely to cause are "undefined
label" (a mistyped :ref:) and "toctree contains reference to nonexisting
document" (a new page you forgot to register).
Use the project venv. Sphinx needs sphinxcontrib-mermaid for menu_map.rst,
and a system Sphinx usually lacks it. If the build dies with "Could not import
extension sphinxcontrib.mermaid", you are on the wrong interpreter:
source python/.venv/bin/activate # then re-run the buildIf no interpreter has Sphinx, say so rather than skipping the check silently.
Offer pip install -r docs/source/requirements.txt.
The style rules are easy to verify on your own diff, and this catches the lapses that survive a careful first draft:
git diff -U0 -- docs/source | grep '^+' | grep -nE '—|;'Every hit needs a decision. A dash or semicolon joining two sentences is a rule
1 violation, so split it. Section 5 of references/ste-style.md covers the
cases where a dash can stay. Then re-read your added text once against the
approved-term table, which is the rule that slips most often.
When you summarise your work, list the files you changed, any screenshots the user still needs to capture, and the result of the build check.
.rst under docs/source/, never the docs/*.md stubs.docs/ax/*/CONTEXT.md or docs/adr/* — that's the domain-model
documentation handled by the grill-with-docs skill.© brickbots, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in .claude/skills/docs of brickbots/PiFinder.
Open the folder on GitHubat commit 3775008
Docs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Docs this skillbrickbots/PiFinder | 250 | — | ~6.2k | Automated safety check: Pass | GPL-3.0 | |
| Diataxis Docs Writercalf-ai/calfkit-sdk | 149 | 1 repos | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Updating Docs For Releasestreamlit/docs | 178 | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Write Vibe ADRmistralai/mistral-vibe | 5.1k | — | ~942 | Automated safety check: Pass | Apache-2.0 | |
| Adk Stylegoogle/adk-python | 22k | — | ~748 | Automated safety check: Pass | Apache-2.0 | |
| Diataxis Docspmndrs/glyph | 392 | — | ~1.4k | Automated safety check: Pass | MIT |
calf-ai/calfkit-sdk
Write or improve software documentation using the Diátaxis framework — four documentation types (tutorials, how-to guides, reference, explanation), each serving a different user need.
streamlit/docs
Update the streamlit/docs repo for a new Streamlit release. An agent skill from streamlit/docs.
mistralai/mistral-vibe
Creates or updates concise Architecture Decision Records for the Mistral Vibe CLI and registers each one in the AGENTS.md decisions table.
google/adk-python
Python style and codebase conventions for ADK (Agent Development Kit): private-by-default file visibility, imports, type hints, Pydantic v2 models, formatting, docstrings, logging, async I/O, file…
pmndrs/glyph
Design, classify, write, audit, or restructure technical documentation with the Diátaxis framework.
tech-leads-club/agent-skills
Drafts Request for Comments documents that lay out a proposal, the options weighed and the decision needed, so approvers can align before a major change.
brickbots/PiFinder
Run the PiFinder app headlessly and drive it like a user — launch it with no pygame window or physical display, send keypad presses to navigate menus, capture the screen as a PNG, read live state…
brickbots/PiFinder
PiFinder's internationalization (i18n) workflow — marking strings for translation, running the Babel extract/update/compile pipeline, adding or updating language translations, and filling in missing…
Works with
Categories
Author and edit PiFinder's user-facing documentation in the project's house style. Docs is an agent skill from brickbots/PiFinder. Author and edit PiFinder's user-facing documentation in the project's house style.
Docs fits situations like: the user wants to write; polish documentation — documenting a new feature; setting in the user guide; creating a new doc page and wiring it into the toctree.
Run `npx skills add brickbots/PiFinder --skill docs -a claude-code`. Or copy the skill folder (.claude/skills/docs in brickbots/PiFinder) into .claude/skills/docs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add brickbots/PiFinder --skill docs -a codex`. Or copy the skill folder (.claude/skills/docs in brickbots/PiFinder) into .agents/skills/docs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add brickbots/PiFinder --skill docs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docs, .gemini/skills/docs, .github/skills/docs and .opencode/skills/docs in your project.
Going by SKILL.md and its folder, Docs needs Python for the scripts in its folder and the command-line tools its instructions call (python3, python, git and pip). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: pifinder.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Docs is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.2k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 35k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Docs: Diataxis Docs Writer (calf-ai/calfkit-sdk, 149 stars), Updating Docs For Release (streamlit/docs, 178 stars), Write Vibe ADR (mistralai/mistral-vibe, 5.1k stars) and Adk Style (google/adk-python, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
brickbots (a GitHub user) maintains it in brickbots/PiFinder, which has 250 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 6, 2026.
Source: brickbots/PiFinder on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.