mapping-webapp/SKILL.md
Generate behavioral/feature documentation for web apps using code-first analysis. Reads source code and _MAP.md files to produce _FEATURES.md, with optional visual verification via browser automation. Companion to mapping-codebases. Use when documenting app behavior, creating feature inventories, generating behavioral ground truth for agents, or before modifying UI code. Triggers on "map features", "document app behavior", "feature inventory", "what does this app do".
npx skillsauth add oaustegard/claude-skills mapping-webappInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate _FEATURES.md files documenting what a web app does — screens, flows, states, behavioral invariants. Companion to mapping-codebases which documents code structure.
v0.3.0: Code-first architecture. The code IS the ground truth; screenshots are supplementary verification.
_MAP.md files exist)api-credentials skill or ANTHROPIC_API_KEY env var)--code-only)# Code-only analysis (no browser needed):
python /mnt/skills/user/mapping-webapp/scripts/featuremap.py \
--app-url https://example.com --codebase /path/to/repo --code-only
# Full pipeline (code analysis + selective visual verification):
python /mnt/skills/user/mapping-webapp/scripts/featuremap.py \
--app-url https://example.com --codebase /path/to/repo
# Incremental update:
python /mnt/skills/user/mapping-webapp/scripts/featuremap.py \
--app-url https://example.com --codebase . --incremental
| Flag | Default | Description |
|------|---------|-------------|
| --app-url | required | Base URL of the web app |
| --codebase | required | Path to repo root (must have _MAP.md files) |
| --output | <codebase>/_FEATURES.md | Output path |
| --max-pages | 100 | Cap on pages to discover |
| --code-only | false | Skip all vision — code analysis only |
| --verify-only | false | Only run vision on already-analyzed pages |
| --batch-size | auto | Pages per batch (auto-detected from environment) |
| --incremental | false | Only re-process changed pages |
| --viewport | 1280x720 | Screenshot viewport (WxH) |
| --routes | none | Comma-separated routes or path to routes file |
| --screenshots-dir | <codebase>/screenshots | Where to store PNGs |
| --model | claude-sonnet-4-6 | Claude model for analysis/vision |
| --dry-run / -n | false | Discover only, print sitemap |
Discovers pages from code structure, not browser crawling:
_MAP.md for page references--routes for manual seedingNo browser required for discovery.
Reads source code for each discovered page and uses Claude API (text, not vision) to generate behavioral descriptions:
_MAP.md excerpts for code contextCode-derived descriptions are usable standalone. Vision is enrichment, not requirement.
Selective visual verification for pages where it adds value:
Skipped entirely with --code-only. Run only this phase with --verify-only.
Compiles all descriptions into _FEATURES.md:
The skill auto-detects the runtime environment and adjusts batch size:
| Environment | Batch Size | Notes | |-------------|-----------|-------| | Claude.ai container | 4 pages | Short bash timeouts | | Claude Code on Web | 12 pages | Longer execution windows | | Local CLI | Unbatched | Full control |
Override with --batch-size N.
Progress is checkpointed after each batch via _FEATURES_MANIFEST.json, so work survives if a conversation ends mid-pipeline.
Each run stores page hashes and descriptions in _FEATURES_MANIFEST.json. With --incremental:
Pages requiring authentication are detected during verification (redirect detection + text heuristics) and marked GATED. The skill generates step-by-step manual capture instructions in GATED_PAGES.md.
# _FEATURES.md — App Name
Generated: 2026-03-22T12:00:00+0000
App URL: https://example.com
## Feature Inventory
### Status Summary
- **Documented:** 45 pages
- Code-analyzed: 40
- Visually verified: 5
- **Gated (auth required):** 2 pages
### Page Title (`/route`)
> *Derived from source code analysis*
**What the user sees:** Prose description from code analysis.
**Interactions:**
- Button "X" → does Y
**Invariants:**
- Rule 1
**Code:** `src/page.html` :1
---
_FEATURES.md is the behavioral source of truth. Combined with _MAP.md (structural):
mapping-codebases → _MAP.md (structural)mapping-webapp → _FEATURES.md (behavioral)--routes flagdevelopment
--- name: verifying-claims description: Check that a document's claims about code are actually true by reading the prose, the code, and the tests and reporting (or fixing) where they disagree. Use whenever the user wants to verify a README, guide, spec, or docstring still matches the code; whenever they mention documentation drift, doc-code sync, "is this still accurate", stale docs, or keeping docs/tests/code consistent; before publishing or merging a docs change; or as a periodic doc-accuracy
tools
Query, filter, and transform Markdown structurally with mq — a jq-like CLI for Markdown. Use to extract headings/sections/code-blocks/links from .md files, build a table of contents, pull code blocks of a given language, slice or reshape LLM prompt/output Markdown, or batch-transform docs. Triggers on "extract sections from this markdown", "get all the code blocks", "jq for markdown", "mq", or any structural query over Markdown that grep/Read can't do cleanly.
development
Composes single-file HTML artifacts (PR review writeups, status reports, incident postmortems, slide decks, design systems, prototypes, flowcharts, module maps, feature explainers, kanban boards, prompt tuners) from a small JSON spec instead of hand-written HTML/CSS/JS. Use when the user asks to "compare options side-by-side", requests an HTML version of a report or review or deck, asks for a flowchart, status update, postmortem, design system reference, interactive prototype, custom editor — or explicitly says "HTML artifact", "single HTML file", "self-contained HTML". Skip for ad-hoc HTML snippets (forms, emails, embedded widgets) where there's no template fit.
development
DAG workflow runner that encodes control flow in code, not prose. Use when a procedure has 3+ steps with branching, retries, or validation that must be enforced — gates as `when=`, edge contracts as `validate=`, predicate loops as `retry_until=`. The runner owns the graph; the LLM provides leaves. Also covers parallel execution, checkpoint resume, detached side-effects.