doc-architecture-review
Evaluate documentation information architecture: navigation paths, discoverability, progressive disclosure, cross-linking, and mental model alignment. This skill should be used when restructuring docs, adding new sections, or when users report difficulty finding information.
What this skill does
# Documentation Architecture Review
Evaluate whether documentation is organized so that readers can find what they need,
understand where they are, and navigate efficiently. The output is an architecture
assessment with specific restructuring recommendations — not new content.
## When to Use
- When restructuring or reorganizing documentation
- When adding a new section or doc type to an existing set
- When users report "I know it's documented somewhere but can't find it"
- When the doc set has grown organically and needs rationalization
- After `doc-completeness-audit` identifies gaps — before filling them, ensure the structure
can accommodate new content
- Periodic review of navigation and discoverability
## Quick Reference
| Resource | Purpose | Load when |
|----------|---------|-----------|
| `references/personas.md` | Six concrete reader personas with eval signals | Always (Phase 0) |
| `scripts/link_graph.py` | Mechanical link-graph analyzer (orphans, reciprocity, broken links, hubs) | Always (Phase 1) |
| `references/ia-heuristics.md` | Doc-type-aware IA evaluation heuristics | Always (Phase 2) |
---
## Workflow Overview
```
Phase 0: Personas → Establish the doc set's primary 1-3 personas
Phase 1: Map → Build the current doc structure map (incl. link graph)
Phase 2: Evaluate → Score against IA heuristics, parameterized by personas + doc type
Phase 3: Model → Compare structure to user mental models per persona
Phase 4: Report → Produce the architecture review with per-persona findings
```
---
## Phase 0: Establish Personas
A "good" architecture is good *for someone specific*. Without personas,
the heuristics apply a default standard that systematically misjudges
docs serving non-default audiences (a flat reference doc scored as
"poorly hierarchical" because it doesn't follow Quick Start → advanced).
### Step 0a — Identify the doc set's audiences
Read the doc set's entry pages (README, `index.md`, landing pages) and
the highest-traffic top-level docs. Identify which 1–3 personas from
`references/personas.md` are the primary readers. Common patterns:
| Doc set shape | Likely personas |
|---|---|
| Library / SDK with public API | API Looker-Up + Onboarding User |
| End-user product | Onboarding User + Operator |
| Internal infrastructure | Operator + Incident Responder + Architect Debugger |
| OSS project | Onboarding User + Contributor |
| Operations-heavy system | Operator + Incident Responder |
### Step 0b — Draft persona profiles
For each identified persona, copy the profile from
`references/personas.md` verbatim. Don't paraphrase — the explicit
profile is what calibrates downstream sub-agents. If a persona almost
fits but a dimension differs, define a custom persona using the same
five-field structure.
### Step 0c — Note conflicts
If the doc set serves more than one persona with conflicting needs
(e.g., Onboarding User wants narrative, API Looker-Up wants terseness),
note this explicitly. The synthesis report will surface where current
structure favors one persona at the cost of another.
**Output:** A persona block (1–3 personas + any conflict notes) that
feeds every downstream sub-agent prompt.
---
## Phase 1: Map the Current Structure
Build a complete picture of the documentation architecture.
### Step 1a: Physical Structure
Generate the file tree of all documentation:
```bash
find docs/ site/ -name '*.md' -o -name '*.html' | sort
```
Record:
- Directory hierarchy and nesting depth
- File count per directory
- Naming conventions (kebab-case, snake_case, mixed)
### Step 1b: Navigation Structure
Identify every way a reader can navigate:
| Navigation type | Where to find it |
|-----------------|-----------------|
| Sidebar / table of contents | `_config.yml` nav, front matter `nav_order`/`parent`, `SUMMARY.md` |
| Landing pages | `index.md` files — read each one for link lists |
| In-page cross-references | `[text](link)` and `{% link %}` references between pages |
| Breadcrumbs | Theme configuration or layout templates |
| Search | Search configuration, indexed content |
| Previous/Next links | Auto-generated or manual `nav_order` sequencing |
### Step 1c: Entry Points
Identify how readers arrive:
- **Direct** — typing a URL or bookmarking
- **Search** — site search or external search engine
- **Navigation** — sidebar, breadcrumb, landing page links
- **Cross-reference** — link from another doc page
- **External** — README, GitHub, blog post, error message linking to docs
Map which pages are reachable from each entry point. Pages unreachable from common
entry points are effectively invisible.
### Step 1d: Link Graph (mechanical)
Run the bundled link graph analyzer to extract deterministic facts about
inter-doc linking:
```bash
python3 skills/doc-architecture-review/scripts/link_graph.py --scope all --json > graph.json
# Or human-readable:
python3 skills/doc-architecture-review/scripts/link_graph.py --scope all
```
The script produces:
- **Orphans** — pages with no inbound links (excluding entry points like
`index.md` and `README.md`). Direct input to Heuristic 1 (Findability).
- **Dead-ends** — pages with no outbound links. Content silos.
- **Reciprocity ratio** — fraction of edges that have a back-link. Direct
input to Heuristic 4 (Cross-Linking Quality).
- **Hubs** — pages with high in-degree. Natural reference targets.
- **Broken links** — internal links that don't resolve. Direct input to
Heuristic 4.
These are *mechanical facts*, not judgments. The judgment-heavy parts of
Heuristics 1 and 4 (are links contextual? do navigation labels use user
language?) are evaluated by sonnet sub-agents in Phase 2.
**Output:** A structure map with physical hierarchy, navigation paths, entry points,
and the link graph JSON.
---
## Phase 2: Evaluate Against IA Heuristics
Assess the structure against seven heuristics. Load `references/ia-heuristics.md`
for detailed scoring criteria.
### Mechanical vs judgment split
For a doc set of any meaningful size, the orchestrator can't read every page
to score every heuristic — that strains the context window and produces
patchy evaluation. Phase 2 splits work:
- **Mechanical part** — driven by the Phase 1d link graph JSON. Orphan
counts, reciprocity ratio, broken-link counts, hub identification: these
are facts, not judgments. The orchestrator reads the JSON and assigns
scores deterministically.
- **Judgment part** — dispatched to `general-purpose` + `sonnet` sub-agents
organized by heuristic. Each agent receives a focused slice of the doc set
and returns specific findings with citations.
### Sonnet sub-agent dispatch
Three judgment-heavy heuristics warrant dedicated agents. Each agent's
prompt **inlines the persona block from Phase 0** and the relevant
doc-type criteria from `references/ia-heuristics.md`. The agent scores
*per-persona*, not against a generic default.
**Agent 1 — Findability narrative review** (Heuristic 1):
```
subagent_type: "general-purpose"
model: "sonnet"
description: "Findability narrative review"
```
Prompt template:
```
Read landing pages, navigation configs (_config.yml, front-matter
nav_order/parent), and the orphans list from the link graph JSON.
Personas (from Phase 0):
<INLINE PERSONA BLOCK — full profile per persona, not summary>
Doc-type criteria for Heuristic 1:
<INLINE Heuristic 1 section from references/ia-heuristics.md>
For each persona, score Findability 1-5 and identify specific failures:
- Are navigation labels in this persona's language?
- Are entry points appropriate for how this persona arrives?
- Are orphans concentrated in a doc type that fails this persona's task?
Output per-persona scores plus findings. When personas conflict (e.g.,
nav labels in one's language fail another), surface the conflict
explicitly rather than averaging.
```
**Agent 2 — Cross-linking quality review** (Heuristic 4):
```
subagent_type: "general-purpose"
model: "sonnet"
description: "Cross-link quRelated in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.