Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/skills/doc-audit/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: doc-audit
description: Multi-agent developer documentation audit — finds stale constants, missing files, and outdated types across CLAUDE.md files, README.md, and docs/. Use when docs are stale, after adding features, or before releases.
---

<!-- meta-audit scope-universe: CLAUDE.md docs/*.md docs/dossiers/*.md src/*/CLAUDE.md README.md -->
<!-- meta-audit scope-universe: CLAUDE.md docs/*.md docs/dossiers/*.md openspec/README.md src/*/CLAUDE.md README.md -->

# Audit Developer Documentation

Expand All @@ -25,7 +25,7 @@ Spawn 6 Explore agents simultaneously. Each agent cross-references documentation

**Agent 1 — Root & Architecture**

Scope: `CLAUDE.md`, `docs/*.md` (system-design, core-systems, secondary-systems, balancing, challenge-minigames, decisions, infrastructure), `docs/dossiers/*.md`
Scope: `CLAUDE.md`, `docs/*.md` (currently: `decisions.md`, `README.md` — the old system-design/core-systems/secondary-systems/balancing/challenge-minigames/infrastructure docs were retired in favor of `openspec/specs/` on 2026-07-04, #675), `docs/dossiers/*.md`, `openspec/README.md` (capability/requirement/scenario count claims drift independently from CLAUDE.md's copy of the same numbers — see history)

Check: Module navigation table completeness, key constants accuracy, dependency versions, architecture descriptions.

Expand Down
2 changes: 2 additions & 0 deletions .claude/skills/meta-audit/history/doc-audit.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@
{"type":"run","date":"2026-07-05","commit_sha":"a2512c810159c5b21040be8d4ea683165c019336","pr_url":"https://github.com/stphung/quest/pull/693","agent_count":6,"scope":["CLAUDE.md","docs/*.md","docs/dossiers/*.md","README.md","src/core/CLAUDE.md","src/combat/CLAUDE.md","src/character/CLAUDE.md","src/zones/CLAUDE.md","src/dungeon/CLAUDE.md","src/fishing/CLAUDE.md","src/items/CLAUDE.md","src/challenges/CLAUDE.md","src/haven/CLAUDE.md","src/enhancement/CLAUDE.md","src/ascension/CLAUDE.md","src/stormglass/CLAUDE.md","src/deep/CLAUDE.md","src/power_cores/CLAUDE.md","src/god_items/CLAUDE.md","src/loom/CLAUDE.md","src/vessel/CLAUDE.md","src/ui/CLAUDE.md","src/input/CLAUDE.md","src/utils/CLAUDE.md","src/main_helpers/CLAUDE.md","src/achievements/CLAUDE.md","src/history/CLAUDE.md"],"findings":[{"location":"src/ui/CLAUDE.md:86","claim":"Module Structure table omits src/ui/vessel_transition_fx.rs","correct_value":"vessel_transition_fx.rs exists on disk (5-beat launch transition animation, Act 2 kill-switch gated); added row after vessel_scene.rs","severity":"HIGH","category":"missing-file-in-inventory","auto_fixed":true},{"location":"src/main_helpers/CLAUDE.md:19","claim":"persistence.rs entry only documents save_all()","correct_value":"persistence.rs also exposes save_files() (JSON-only save), commit_save() (git commit only), and spawn_background_save() (spawns a background thread for autosave)","severity":"MEDIUM","category":"missing-function-in-doc","auto_fixed":true},{"location":"src/main_helpers/CLAUDE.md:30","claim":"save_all() is the single save entry point, called from input routing on NeedsSave* results and on quit","correct_value":"main.rs also calls save_files()/commit_save() directly at ~10 call sites, and the 30s autosave goes through spawn_background_save(), not save_all()","severity":"MEDIUM","category":"stale-behavior-description","auto_fixed":true},{"location":"src/main_helpers/CLAUDE.md:15","claim":"cloud_ops.rs entry only documents reload_account_state()","correct_value":"cloud_ops.rs also exposes spawn_cloud_push() (spawns a background thread to push all branches to cloud)","severity":"LOW","category":"missing-function-in-doc","auto_fixed":true},{"location":"src/achievements/CLAUDE.md:30","claim":"Prestige milestones: FirstPrestige..Prestige10000 (18 milestones), omitting P100","correct_value":"AchievementId has 19 Prestige variants; P100 (Eternal) sits between PrestigeXC (P90) and Prestige150 per milestones.rs:124","severity":"MEDIUM","category":"stale-enum-count","auto_fixed":true},{"location":"src/vessel/CLAUDE.md:182","claim":"RIFTGLASS_BASE_HOURS_TO_FULL described as a voyage_simulator/ferryman_tests strategy_sweep-validated starting value","correct_value":"src/vessel/colony.rs:84-89 doc comment says it is NOT yet simulator-validated against the era's ~3-real-month pacing target; the referenced ferryman_tests are #[ignore]d manual tuning sweeps, not automated validation","severity":"MEDIUM","category":"doc-contradicts-source-comment","auto_fixed":true}]}
{"type":"run","date":"2026-07-06","commit_sha":"f46170dfd04eab6bc0662510163c68a31d27e153","pr_url":"https://github.com/stphung/quest/pull/697","agent_count":6,"scope":["CLAUDE.md","docs/*.md","docs/dossiers/*.md","src/core/CLAUDE.md","src/combat/CLAUDE.md","src/character/CLAUDE.md","src/zones/CLAUDE.md","src/dungeon/CLAUDE.md","src/fishing/CLAUDE.md","src/items/CLAUDE.md","src/challenges/CLAUDE.md","src/haven/CLAUDE.md","src/enhancement/CLAUDE.md","src/ascension/CLAUDE.md","src/stormglass/CLAUDE.md","src/deep/CLAUDE.md","src/power_cores/CLAUDE.md","src/god_items/CLAUDE.md","src/loom/CLAUDE.md","src/vessel/CLAUDE.md","src/ui/CLAUDE.md","src/input/CLAUDE.md","src/utils/CLAUDE.md","src/main_helpers/CLAUDE.md","src/achievements/CLAUDE.md","src/history/CLAUDE.md","README.md"],"findings":[{"location":"src/dungeon/CLAUDE.md:93","claim":"Defeat boss -> `boss_defeated = true` -> dungeon complete","correct_value":"Defeat boss -> dungeon cleared (`state.active_dungeon = None`), emits `DungeonEvent::DungeonComplete` -> dungeon complete","severity":"MEDIUM","category":"stale-claim","auto_fixed":true},{"location":"src/items/CLAUDE.md:90","claim":"Base attribute ranges at ilvl 10 ..., 1-3 random attributes","correct_value":"Attribute count varies by rarity per the table below (Common 1 .. Legendary 4-6), not a flat 1-3","severity":"LOW","category":"stale-claim","auto_fixed":true},{"location":"src/achievements/CLAUDE.md:34","claim":"Challenges: 4 difficulties per game type (Chess, Morris, Gomoku, Minesweeper, Rune, Go, FlappyBird, Snake, ContainmentBreach, SigilSurge, SigilMatrix, ShardFusion) + GrandChampion","correct_value":"List omitted RunicLights and VaultWarden, both present in AchievementId's 240 variants","severity":"MEDIUM","category":"stale-type-variant","auto_fixed":true},{"location":"src/utils/CLAUDE.md:19","claim":"UpdateInfoStatus: UpdateAvailable(UpdateInfo), UpToDate, or CheckFailed(String)","correct_value":"UpToDate is a struct variant: UpToDate { current_and_previous, current_and_previous_times }","severity":"MEDIUM","category":"stale-type-variant","auto_fixed":true},{"location":"README.md:4,116","claim":"Repo is MIT licensed (badge + footer text)","correct_value":"No LICENSE file exists in the repo and Cargo.toml has no license field -- claim is currently unsubstantiated","severity":"LOW","category":"missing-file","auto_fixed":false}]}
{"type":"run","date":"2026-07-07","commit_sha":"55f5cb9f07c1a2211154289d424960484d660614","pr_url":"https://github.com/stphung/quest/pull/702","agent_count":6,"scope":["CLAUDE.md","openspec/README.md","docs/dossiers/act1-ascent.md","docs/dossiers/act2-pilgrimage.md","README.md","src/core/CLAUDE.md","src/combat/CLAUDE.md","src/character/CLAUDE.md","src/zones/CLAUDE.md","src/dungeon/CLAUDE.md","src/fishing/CLAUDE.md","src/items/CLAUDE.md","src/challenges/CLAUDE.md","src/haven/CLAUDE.md","src/enhancement/CLAUDE.md","src/ascension/CLAUDE.md","src/stormglass/CLAUDE.md","src/deep/CLAUDE.md","src/power_cores/CLAUDE.md","src/god_items/CLAUDE.md","src/loom/CLAUDE.md","src/vessel/CLAUDE.md","src/ui/CLAUDE.md","src/input/CLAUDE.md","src/utils/CLAUDE.md","src/main_helpers/CLAUDE.md","src/achievements/CLAUDE.md","src/history/CLAUDE.md"],"findings":[{"location":"CLAUDE.md:17, openspec/README.md:22","claim":"OpenSpec baseline is 20 capabilities, 197 requirements, 500+ scenarios","correct_value":"20 capabilities, 208 requirements, 498 scenarios","severity":"MEDIUM","category":"stale-constant","auto_fixed":true},{"location":"src/challenges/CLAUDE.md:88","claim":"tick_stages.rs Stage 1 duplicates only the chess/morris/gomoku/go dispatch logic instead of calling facade.rs","correct_value":"Stage 1 also dispatches Shard Fusion (shard_fusion::tick_shard_fusion), a case facade.rs does not cover","severity":"MEDIUM","category":"stale-description","auto_fixed":true},{"location":"src/dungeon/CLAUDE.md:103","claim":"generate_dungeon_enemy/elite/boss live in combat/logic.rs","correct_value":"these functions live in combat/enemy_generation.rs","severity":"LOW","category":"wrong-file-attribution","auto_fixed":true}]}
{"type":"run","date":"2026-07-08","commit_sha":"e5a70f04aa2e757d78403b29337784c1da54aa03","pr_url":"https://github.com/stphung/quest/pull/706","agent_count":6,"scope":["CLAUDE.md","README.md","docs/dossiers/act1-ascent.md","docs/dossiers/act2-pilgrimage.md","src/core/CLAUDE.md","src/combat/CLAUDE.md","src/character/CLAUDE.md","src/zones/CLAUDE.md","src/dungeon/CLAUDE.md","src/fishing/CLAUDE.md","src/items/CLAUDE.md","src/challenges/CLAUDE.md","src/haven/CLAUDE.md","src/enhancement/CLAUDE.md","src/ascension/CLAUDE.md","src/stormglass/CLAUDE.md","src/deep/CLAUDE.md","src/power_cores/CLAUDE.md","src/god_items/CLAUDE.md","src/loom/CLAUDE.md","src/vessel/CLAUDE.md","src/ui/CLAUDE.md","src/input/CLAUDE.md","src/utils/CLAUDE.md","src/main_helpers/CLAUDE.md","src/achievements/CLAUDE.md","src/history/CLAUDE.md"],"findings":[{"location":"src/deep/CLAUDE.md","claim":"No documentation of mercenary quality promotion anywhere in the module doc","correct_value":"mercenaries.rs implements a full promotion system (promotion_missions_required, promotion_guild_rank_required, promotion_cost, can_promote, promote_mercenary, promote_merc_by_id) wired into input/deep_input.rs","severity":"HIGH","category":"missing-module-doc","auto_fixed":true},{"location":"README.md:4,116","claim":"MIT License badge and \"Open source under the MIT License\" statement","correct_value":"No LICENSE file exists in the repo and Cargo.toml has no license field","severity":"MEDIUM","category":"stale-readme-claim","auto_fixed":false},{"location":"src/core/CLAUDE.md:11","claim":"discoveries.rs # Discovery rolls (dungeons, fishing spots, Haven, Soulforge, The Deep)","correct_value":"discoveries.rs only contains try_discover_dungeon(); fishing/Haven/Soulforge/Deep discovery live in their own modules","severity":"MEDIUM","category":"stale-module-description","auto_fixed":true},{"location":"src/deep/CLAUDE.md:91-99","claim":"GuildRank table lists only Required Breakthrough as the gate","correct_value":"economy.rs::guild_upgrade_cost() also requires Warband Marks (200/500/1200/3000)","severity":"MEDIUM","category":"stale-constant","auto_fixed":true},{"location":"src/input/CLAUDE.md:19","claim":"voyage_input.rs description predates Dock/Reckoning/Record views and Jump/BuyDrive/BuyCapacity/BuyWard result variants","correct_value":"VoyageView gained Record/Reckoning/Dock variants; VoyageInputResult gained Jump/BuyDrive/BuyCapacity/BuyWard variants (commit 3afd852)","severity":"MEDIUM","category":"stale-type-or-enum","auto_fixed":true},{"location":"CLAUDE.md:219 (+ src/combat/CLAUDE.md:57)","claim":"Boss death resets to subzone 1","correct_value":"Boss death retreats to Subzone 1 of the highest zone with a defeated boss (Zone 1 if none) per resolve_combat_retreat()","severity":"MEDIUM","category":"stale-type-or-enum","auto_fixed":true},{"location":"docs/dossiers/act1-ascent.md:168","claim":"the player is quicker than any of them [enemy roles]","correct_value":"Zone boss ties the player's attack pace (1.5s each) and the dungeon boss is faster (1.4s) per core/constants.rs","severity":"MEDIUM","category":"stale-constant","auto_fixed":true},{"location":"src/items/CLAUDE.md:117","claim":"God item power scoring is deferred (#272)","correct_value":"Issue #272 is closed as not_planned, not deferred/pending","severity":"MEDIUM","category":"stale-external-reference","auto_fixed":true},{"location":"CLAUDE.md:188","claim":"XP gain: Only from defeating enemies (200-400 XP per kill)","correct_value":"200-400 ticks of passive XP per kill, scaled by prestige multiplier + Haven bonus (matches core/CLAUDE.md's own phrasing)","severity":"LOW","category":"stale-constant","auto_fixed":true},{"location":"src/zones/CLAUDE.md:226","claim":"UI displays a POST row for zones 12-30","correct_value":"No 'POST' string exists anywhere in src/; actual UI is a Zone gauge plus a gate-hint row","severity":"LOW","category":"stale-integration-point","auto_fixed":true},{"location":"src/power_cores/CLAUDE.md","claim":"Key Functions list missing fill_ratio()","correct_value":"types.rs::fill_ratio(elapsed, fill_secs) exists and is used by ui/stats_prestige.rs","severity":"LOW","category":"missing-module-doc","auto_fixed":true},{"location":"src/dungeon/CLAUDE.md:12","claim":"facade.rs # DungeonInput struct and tick_dungeon_facade() for decoupled dungeon ticking","correct_value":"DungeonInput is defined but never constructed/used anywhere in the repo; tick_dungeon_facade() takes loose params directly","severity":"LOW","category":"stale-type-or-enum","auto_fixed":true},{"location":"README.md:63","claim":"make setup # First time: configure git hooks","correct_value":"make setup also installs the OpenSpec CLI via the openspec-setup target","severity":"LOW","category":"stale-readme-claim","auto_fixed":false}]}
{"type":"eval_marker","date":"2026-07-08","pr_url":"https://github.com/stphung/quest/pull/708","runs_covered":5}