Review exploring-the-docs and add doc consistency checks (#112)

## Summary
- Reviewed and cleaned up exploring-the-docs tutorial: simplified wiki-links, fixed broken replication/ reference, added Related section, corrected zk-docs flags to match CLAUDE.md
- Added orphan detection to doc-links (finds docs not linked from any other doc)
- Added new doc tooling: `doc-index` (checks category index coverage), `doc-stale` (staleness report), `doc-tags` (tag inventory)
- Added `doc-index` as a pre-commit hook
- Updated use-pypi-proxy to document env-var-based proxy toggle for pip/uv
- Updated ai-assistance-guide with new doc task descriptions

## Test plan
- [ ] Run `mise run doc-links` — passes
- [ ] Run `mise run doc-index` — passes
- [ ] Run `mise run doc-stale` — informational output
- [ ] Run `mise run doc-tags` — informational output
- [ ] Pre-commit hooks pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/112
This commit is contained in:
Erich Blume 2026-02-05 21:12:06 -08:00
commit 060c7a24e3
13 changed files with 375 additions and 23 deletions

View file

@ -0,0 +1 @@
Review exploring-the-docs tutorial: simplify wiki-links, fix broken replication/ reference, add Related section, match zk-docs flags to CLAUDE.md. Update use-pypi-proxy to document env-var-based proxy toggle.

View file

@ -0,0 +1 @@
Add documentation consistency checks: orphan detection in doc-links, new doc-index (category index coverage), doc-stale (staleness report), and doc-tags (tag inventory).

View file

@ -0,0 +1 @@
Add pre-commit to mise.toml project tools.

View file

@ -9,21 +9,20 @@ tags:
How to configure clients and publish packages to [[devpi]].
## Configure pip
## Configure pip/uv
Create `~/.config/pip/pip.conf`:
Point pip and uv at the proxy via environment variables:
```ini
[global]
index-url = https://pypi.ops.eblu.me/root/pypi/+simple/
trusted-host = pypi.ops.eblu.me
```
Track with chezmoi:
```bash
chezmoi add ~/.config/pip/pip.conf
export PIP_INDEX_URL="https://pypi.ops.eblu.me/root/pypi/+simple/"
export UV_INDEX_URL="https://pypi.ops.eblu.me/root/pypi/+simple/"
```
Unset both to fall back to public PyPI (e.g. when [[indri]] is offline).
The [dotfiles repo](https://github.com/eblume/dotfiles) has shell config
that manages this toggle.
## Upload Packages
```bash

View file

@ -94,9 +94,12 @@ BlumeOps operations are driven by mise tasks. Run `mise tasks` to list all avail
| `dns-up` | Apply DNS changes via Pulumi |
| `tailnet-preview` | Preview Tailscale ACL changes |
| `tailnet-up` | Apply Tailscale ACL changes via Pulumi |
| `doc-links` | Validate wiki-links in documentation |
| `doc-links` | Validate wiki-links in documentation (includes orphan detection) |
| `doc-index` | Check every doc is referenced in its category index |
| `doc-titles` | Check for duplicate doc titles |
| `doc-filenames` | Check for duplicate doc filenames |
| `doc-stale` | Report docs by last-modified date, highlight stale ones |
| `doc-tags` | Print frontmatter tag inventory across all docs |
| `doc-random` | Select a random doc card for review |
| `indri-runner-logs` | View Forgejo workflow logs from local runner |

View file

@ -27,8 +27,8 @@ The docs follow the [Diataxis](https://diataxis.fr/) framework:
### For Erich (Owner)
You probably want quick access to operational details:
- [[how-to|How-to guides]] for common operations (deploy, troubleshoot, update ACLs)
- [[reference|Reference]] has service URLs, commands, and config locations
- [[how-to]] guides for common operations (deploy, troubleshoot, update ACLs)
- [[reference]] has service URLs, commands, and config locations
- [[ai-assistance-guide]] explains how to work effectively with Claude
- Run `mise run zk-docs` to prime AI context with key documentation
@ -36,30 +36,29 @@ You probably want quick access to operational details:
Context for effective assistance:
- Read [[ai-assistance-guide]] for operational conventions
- [[reference|Reference]] has the technical specifics you'll need
- [[reference]] has the technical specifics you'll need
- The repo's `CLAUDE.md` has critical rules (especially the kubectl context requirement)
### For External Readers
Understanding what this is:
- [[explanation|Explanation]] covers the "why" behind design decisions
- [[reference|Reference]] shows what's actually running
- [[explanation]] covers the "why" behind design decisions
- [[reference]] shows what's actually running
- Browse service pages to see specific implementations
### For Contributors
Getting started with changes:
- [[contributing]] walks through the workflow
- [[how-to|How-to guides]] for specific tasks (deploy services, add roles)
- [[reference|Reference]] tells you where things live
- [[how-to]] guides for specific tasks (deploy services, add roles)
- [[reference]] tells you where things live
### For Replicators
Replicators are people who want to build their own similar homelab GitOps setup, using BlumeOps as inspiration.
- [[replicating-blumeops]] provides the overview
- [[explanation|Explanation]] covers architecture and design rationale
- The `replication/` tutorials go deep on components
- [[replicating-blumeops]] provides the overview, with linked tutorials that go deep on individual components
- [[explanation]] covers architecture and design rationale
- Reference pages show specific configuration choices
## Using Wiki Links
@ -77,7 +76,13 @@ Pre-commit hooks automatically validate that all wiki-links point to existing fi
The `zk-docs` mise task concatenates key documentation files for AI context:
```bash
mise run zk-docs
mise run zk-docs -- --style=header --color=never --decorations=always
```
This outputs the AI assistance guide, reference index, how-to index, architecture overview, and tutorials index - providing Claude with essential context for BlumeOps operations.
## Related
- [[tutorials]] - Parent index of all tutorials
- [[update-documentation]] - How to publish doc changes
- [[review-documentation]] - Periodic doc review process