Agent skill

Doc Sync

by katopz in katopz/katgpt-rs

Synchronize each repo's .docs/ and README.md with recently succeeded plans/issues/benchmarks by diffing git history against the last documented entry.

MITAuto-check passedDevelopment

Install Doc Sync

skills CLI
$ npx skills add katopz/katgpt-rs --skill doc-sync -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install katopz/katgpt-rs doc-sync --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/katopz/katgpt-rs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/doc-sync .claude/skills/doc-sync && rm -rf skills-src

Use ~/.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/

Facts

Skill name
doc-sync
GitHub stars
135
Token cost
~14k tokens
SKILL.md length
7,345 words
Files
3
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

Synchronize each repo's .docs/ and README.md with recently succeeded plans/issues/benchmarks by diffing git history against the last documented entry.

  • Works in 6 steps: Find the last documented commit → List landed-but-undocumented work → Classify each landed item → …
  • Tasks that involve Git workflow
  • SKILL.md covers When to use, BOUNDARY.md — the 4th doc…, The workspace repos and their… and The sync workflow (per repo), plus 6 more sections
  • Runs Python scripts from its folder; calls git, python3 and cargo

What it does

Doc Sync is an agent skill from katopz/katgpt-rs. Synchronize each repo's .docs/ and README.md with recently succeeded plans/issues/benchmarks by diffing git history against the last documented entry. Use after landing a GOAT-passing plan, closing a batch of issues, or quarterly as a doc-hygiene gate. Covers every workspace repo and knows each repo's doc layout + where to record what, including each repo's root BOUNDARY.md contract (drift rows vs issue state).

Its SKILL.md is about 14k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `tools/link_fix.py` and `tools/linkcheck_sweep.py`).

It sits in Development, covering Git workflow and Technical documentation. The repository describes itself as: A neuro-symbolic micro-Transformer with speculative decoding, constraint pruning, recurrent attention, and adaptive test-time scaling — built in Rust. The licence is MIT.

When your agent uses it

  • Tasks that involve Git workflow
  • Tasks that involve Technical documentation

Example prompts

  • “s doc layout + where to record what, including each repo”
  • “/doc-sync”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Find the last documented commit
  2. List landed-but-undocumented work
  3. Classify each landed item
  4. Write the updates
  5. Verify
  6. Commit

What it can do on your machine

Read from SKILL.md and the folder at commit 7e47c8c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • python3
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Doc Sync loads about 14k tokens when it runs. Until then it costs about 107 tokens; SKILL.md has 7,345 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~107
When it runs · the whole SKILL.md, loaded when a task matches
~14k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from katopz/katgpt-rs at commit 7e47c8c, republished under its MIT licence (© katopz). 7,345 words, ~14,467 tokens.

Download SKILL.mdSave it as .claude/skills/doc-sync/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
doc-sync
description
Synchronize each repo's `.docs/` and `README.md` with recently succeeded plans/issues/benchmarks by diffing git history against the last documented entry. Use after landing a GOAT-passing plan, closing a batch of issues, or quarterly as a doc-hygiene gate. Covers every workspace repo and knows each repo's doc layout + where to record what, including each repo's root BOUNDARY.md contract (drift rows vs issue state).

doc-sync — Keep .docs/ + README.md in sync with landed work

This skill brings a repo's documentation up to date with the work that has landed in git but not yet been written up. It is the doc equivalent of a cargo doc rebuild: the code shipped, now make the narrative match.

When to use

  • After a plan closes with a GOAT/gain verdict (promote, keep-opt-in, or honest fail).
  • After a batch of issues resolves (especially negative-result issues that move a primitive's status line).
  • After a feature is promoted to default-on OR demoted to opt-in.
  • Quarterly as a doc-hygiene gate.
  • NOT for speculative work — only landed, committed work counts.

BOUNDARY.md — the 4th doc surface (added 2026-08-21)

Every repo ships a root BOUNDARY.md: Owns / Does not own / May depend on (crate-granular allowlist) / Inherited (links) / Drift ledger. It is a doc-sync surface because its drift ledger is a claim about issue state, and claims rot:

  • Row ⟺ open issue. A fixable / owner-call row REQUIRES an existing issue file; a by-design row cites a decision record instead. When an issue closes, its row must be removed in the same commit — the noise-reduction rule extended to BOUNDARY.md. A row whose issue is gone is the boundary equivalent of a stale README claim.
  • Flag row-without-issue and issue-without-row (a boundary issue that landed with no ledger row is invisible to the guard).
  • Don't hand-verify the dep tables — run riir-ai/scripts/ci_boundary_contract.sh. It fails on an undeclared cross-repo dep, a stale allowlist row, an unparseable ledger, and on the 4 split-prep invariants. --list-deps prints the measured graph.
  • Numbers in a contract are measurements, so they carry a date. If a row cites "N symbols" or "N packages", re-measure before trusting it in a new decision (riir-ai/BOUNDARY.md D2/D3 are the pattern).
  • The contract is per-repo; cross-repo rules live in ONE canonical home (chain admission → riir-chain, dep matrix + split-prep → riir-ai) and every other repo LINKS. Never copy a cross-repo rule into a second file — that is the duplication doc-sync exists to catch.

The workspace repos and their doc shapes (derived, never counted — de-counted 2026-09-04)

The header carried a hand-typed count (18, measured 2026-09-01) while the workspace moved to 16 live repos on 2026-09-04 (three to git/obsolete/) — the same rot class the boundary-guard skill de-counted in its 21st run. It is 18 again since 2026-09-10 (riir-esp32 moved out of riir-chain 2026-09-06; riir-kat spun out of riir-clippy 2026-09-10) — same count, different membership, which is exactly why the count is derived and the census below is a snapshot; the one-liner derives the membership.

The header said "14 as of 2026-08-28" over a table of 12 rows until 2026-09-01 — wrong twice, and six repos had no row at all, so a sync run that walked this table skipped them silently. Don't re-type the count; derive the set the same way the boundary gate does:

bash
cd /Users/katopz/git && for d in */; do
  [ -f "$d/BOUNDARY.md" ] && [ -d "$d/.git" ] && echo "${d%/}"
done

Canonical count + product-vs-workspace split: katgpt-rs/AGENTS.md §"Repo count".

Each repo has a different doc layout. Read the repo's AGENTS.md first — it documents the canonical layout and the numbering discipline.

Repo.docs/ shapeREADME.mdNumbering highwaterWorking branch
katgpt-rs10 numbered folders (01_orientation/ … 10_audits/), unnumbered files inside. The public selling-point book.Large showcase + feature tables + getting-started..plans/.highwater, .issues/.highwater, .benchmarks/.highwater, .research/.highwaterdevelop
riir-ai12 numbered folders (01_orientation/ … 12_inference/; 02_inference/ was renumbered to 12_inference/ on 2026-08-08 to resolve a 02_ prefix collision with 02_crates/). The private consolidated selling-point book.Large showcase + crate table.same .highwater filesdevelop
riir-chain7 numbered folders (01_orientation/ … 07_formal_verification/, reindexed from flat on 2026-08-08), unnumbered files inside. Canonical self-description — the chain owns the truth about the chain; riir-ai/.docs/07_neuro_symbolic_chain/ is the consumer/fusion view and links here. Two workspace members (riir-chain lib + riir-chaind daemon). Build surface still lives in README.md; FV invariants in AGENTS.md + .proofs/README.md.Build commands + feature flags + the wallet/RPC trust surface + the merkle_root lesson.samedevelop
riir-neuron-db11 numbered folders (01_orientation/ … 11_cli/; the 11th added 2026-09-09 for the ndb CLI — Plan 327, Warm-tier CRUD + identity login + multi-node sync), unnumbered files inside. Covers all src/ modules + examples/. Matches the riir-ai/.docs/ format.What the crate owns + feature gates (default-on / opt-in) + feature→chain mapping + merkle_root/can_freeze lessons.samedevelop
riir-train6 numbered folders (01_orientation/ … 06_cross_cutting/, reindexed from flat on 2026-07-15), unnumbered files inside. Training-method research vault.Role + sibling layout.samedevelop (flipped from main 2026-09-04 — develop created from the main tip and made the default branch, the Issue 704 convention; main frozen)
riir-game-sdk10 numbered folders (01_orientation/ … 10_multiplayer_topology/; the 10th was added for the two-binary production topology + avatar/game sync facade), unnumbered files inside. Covers all src/ modules + examples/. Matches the riir-ai/.docs/ / riir-neuron-db/.docs/ format.Boundary rule + leaf constraint + spatial canonical + Phase 2/3 status + feature gates.samedevelop
riir-mmorpg-examplesNo .docs/ folder — docs live in AGENTS.md (extensive: role, topology, plans/issues/benchmarks index, canonical-failure lessons) + README.md (status + build commands + env vars) + .plans/ / .issues/ / .benchmarks/ files. POC consumer of riir-game-sdk.Status + build commands + Plan/Issue index.samedevelop
riir-refine12 numbered folders (01_orientation/ … 11_domains/ + 12_ane/; the 12th added for the Apple Neural Engine substrate knowledge — private runtime API, MIL/blob formats, M3 Max findings, the Rust-bridge negative result + working ObjC substrate — riir-ai Issue 726 T0 distillation), unnumbered files inside. The code-healer vault — corpus/drafter/pruner/verify/self-evolve/domains narrative. AGENTS.md carries the batch-mining progress notes (the sweep record home for cross-repo clippy heals).Status + Quick Start + Usage + feature gates.samedevelop
riir-unityRETIRED 2026-09-04 → git/obsolete/ (owner act). Lineage only; do not route work here. No .docs/ folder — AGENTS.md-centric (domain boundary, Unity MCP rules, issue log) + .benchmarks/. The Unity host; Rust work belongs in riir-viewbridge, so doc-sync here = AGENTS.md issue-log sections + module-map freshness.Role + boundary + sibling layout.samedevelop
riir-viewbridge1 numbered folder (.docs/01_orientation/ — README.md + crate_role.md) + a .docs/README.md index; AGENTS.md still carries the workspace layout, boundary rules (latent/raw wall, generated-bindings, catch_unwind) + issue log, and .benchmarks/ the node GOAT. The Rust FFI side of the Unity bridge. This row said "No .docs/ folder" until 2026-09-04 — the folder arrived in the workspace scaffold 2f0257c (Plan 532 P0 part 2), i.e. a shape change that never came back to this contract, which is the failure the Shape-change contract below exists to prevent.Role + boundary + build commands.samedevelop
mmorpg-remake1 numbered folder (.docs/01_orientation/ — README.md + unity_host.md, from Plan 031 Phase 5) + AGENTS.md/README.md/BOUNDARY.md. The Bevy/wasm viewer half after the Unity host split out. Row ADDED 2026-09-04 — the repo was enrolled 2026-09-03 and this table never got a row for it, while carrying three retired ones: 18 rows over a 16-repo workspace, wrong in BOTH directions.Role + boundary + build/run commands + the vessel-texture + present-mode records.samedevelop (highwater: .issues 005, .benchmarks 002)
riir-dapps1 numbered folder (.docs/11_kat_service/, numbered to MIRROR the kat-service group elsewhere — there is no 01–10 here, so don't read the prefix as a tenth sibling) holding dated evidence bundles (2026-09-10_domain_swap/: a README narrative + 5 manifest/health JSONs), plus the AGENTS.md-centric remainder (the one-way game → dapps → chain invariant, the three-test rule, tiered-durability record) + .plans/ / .issues/ / .benchmarks/. The settlement-composition layer. This row said "No .docs/ folder" until 2026-09-11 — the folder landed tracked in eb85243 (2026-09-10, Plans 023+024, cited from AGENTS.md §Status) and never came back to this contract: the Shape-change contract's exact failure, caught by a doc-sync run deriving the census instead of reading it.Boundary + build + the direction_gate + kat rail status.samedevelop
riir-daoNo .docs/ folder — AGENTS.md-centric (the KAT tokenomics agent: signals → strategy → guard → advisory → commit; the G5 advisory-only verdict) + .plans/ / .benchmarks/.Boundary + build + the direction gate.samedevelop
riir-armageddonRETIRED 2026-09-02 → git/obsolete/ (owner act). Lineage only; do not route work here. .docs/ exists but is EMPTY — AGENTS.md-centric in practice (arena/game-product domain types). Added 2026-09-01yes.issues 005, .plans 008main — not develop; check before branching
riir-auth.docs/ exists but holds only .highwater — i.e. no docs at all, AGENTS.md-centric in practice (the numbering file was created ahead of the folder's first document). Added 2026-09-01yes.issues 002, .benchmarks 4, .plans/.docs/.research at 0develop
riir-burnerRETIRED 2026-09-04 → git/obsolete/ (owner act). Lineage only; do not route work here. Flat numbered FILES, no folders — .docs/001_model_verdict.md … 016_*.md (7 files; two share 016 — the numbering discipline is not enforced here). Added 2026-09-01yes.issues 015, .plans 019develop
riir-deployer2 numbered folders (01_orientation/, 02_runbooks/) + a .docs/README.md index — the smallest numbered shape in the workspace. No CLAUDE.md. Added 2026-09-01yes.issues 003, .plans 002, .benchmarks 001develop
katgpt-webNo .docs/ folder — AGENTS.md-centric. Added 2026-09-01yesnonemain — the feat/percepta-arch-diagrams checkout note is history: Issue 002 (2026-09-09, 01a9c51) merged + ff'd main to the working branch and the local feat branch is deleted; the repo sits on its trunk
mmorpg-editorNAMED (not numbered) .docs/ subfolders — new-game-schema/, registry/, plus loose GAME_ASSETS.md. Carries ARCHITECTURE.md + DESIGN.md alongside AGENTS/README, and ARCHITECTURE.md is where the internal layering lives (BOUNDARY.md covers only the outer edge). Added 2026-09-01yes.issues 141, .plans 140develop
riir-esp32No .docs/ folder — AGENTS.md/BOUNDARY.md-centric (the ESP32 Satellite device-tier POC: crates/riir-satellite-probe, emulator recipes; explicitly not prod). Row ADDED 2026-09-11 — the repo moved out of riir-chain 2026-09-06 and this census never gained a row (the same silent-skip class the de-counted header warns about).Role + boundary + domain test..issues 110, .proposals 006develop
riir-katNo .docs/ folder, no README — AGENTS.md/BOUNDARY.md/HISTORY.md-centric (the KAT network CLIENT + wire-protocol plane, spun out of riir-clippy issue 088 on 2026-09-10; single crate). Row ADDED 2026-09-11 — born 2026-09-10, censused a day late.none — AGENTS.md §Status is the surface.issues 1develop
riir-shader4 numbered folders (01_orientation/, 02_substrate/, 03_porting_method/, 04_size_budget/), unnumbered files inside — the WebGPU visual-effect substrate as Bevy plugins (ports every vgpu.sh example to wasm32+native as composable plugins; leaf, zero riir-* deps; upstream vercel-labs/vgpu @ 42bc4bc, MIT, attribution header per shader) + the crates/riir-shader-graph serde-only graph medium (Proposal 001 Phase 1, 3aa01ce). Row ADDED 2026-09-12; CORRECTED 2026-09-14 — the 09-12 row said "No .docs/ folder" and the book landed 7h later (2b78bb5, 09-12 07:48, "Phase 2 doc-sync — 4 folders, 10 docs") with the Shape-change contract never run by the producer; the 09-14 run re-derived the census and caught it.yes (README).issues 16 · .plans 002 · .benchmarks 3 · .proposals 001develop
mmorpg-remasterFlat numbered FILES (.docs/00_principal.md … 10_quest_system.md + lessons_code_smell_audit_023.md + task_index.md; design docs from the remaster gap analysis, c0954dc). READ-ONLY to agents (main + develop, owner rule). Row ADDED 2026-09-14 — the repo joined the contract set at katgpt-rs Issue 760 making the workspace 20, but this census table never gained a row (the 09-12 anti-pattern census counted 19), and the flat-numbered-FILES shape it carries was wrongly believed to have left the workspace with riir-burner.yes (README).issues 30 · .plans 045 · .benchmarks 042develop (read-only)

The sync workflow (per repo)

Step 1 — Find the last documented commit
sh
git --no-pager log --oneline <branch> -- ".docs/**" "README.md" | head -20

The most recent docs: commit is your baseline. Everything after it is undocumented work.

Step 2 — List landed-but-undocumented work
sh
git --no-pager log --oneline <baseline>..<branch>

Filter for:

  • feat: / fix: commits that close a plan or issue (grep the message for Plan NNN / Issue NNN).
  • docs: commits that close research notes or benchmarks (these may already be half-documented).
  • Promotions / demotions (search for promote, demote, default-on, opt-in).

Cross-reference against the repo's .plans/, .issues/, .benchmarks/, .research/ folders — read the highwater files to know the current max number.

Step 3 — Classify each landed item

For each undocumented plan/issue, classify it:

VerdictWhat to write
GOAT PASS + promoted to default-onAdd to the default-features list in README. Add/update the feature table row in .docs/01_orientation/overview.md (or equivalent). Mark the plan's TL;DR with the promotion date.
GOAT PASS + stays opt-inAdd to the opt-in features table in README. Update the .docs/ feature catalog. Honest about why it stays opt-in (heavy, fusion-pending, diagnostic-only).
GOAT FAIL / negative resultAdd to the negative-results section (09_feature_catalog/negative_results.md for katgpt-rs, equivalent elsewhere). Mark the plan with the failure mode. Keep the entry — negative results are load-bearing.
Issue closed (investigation)If it changes a primitive's status (e.g. "map-fidelity hypothesis exhausted"), update that primitive's README/docs entry. If it's pure investigation with no status change, it may not need a doc writeup — judge case by case.
Research note (PASS/Gain/GOAT)If it led to a plan, the plan entry is the writeup. If it's a standalone PASS verdict with no plan (e.g. "already shipped"), add a one-liner to the relevant .docs/ group README.
Step 4 — Write the updates

Apply the repo-specific rules:

katgpt-rs (the public engine)
  • README.md: feature showcase entries (one ### section per primitive with a GOAT gate table), the opt-in features table, the default-features list, the Documentation Index.
  • .docs/01_orientation/overview.md: the full feature-flag table (one row per flag).
  • .docs/09_feature_catalog/: opt-in features + negative results.
  • .docs/<group>/README.md: the group's fusion map + file list.
  • Numbering: never reuse a plan/issue/benchmark/research number. Read the .highwater file, use value + 1, write it back.
riir-ai (the private runtime)
  • README.md: crate table + feature showcase.
  • .docs/: 12 numbered folders — drop new docs in the right group, add one line to the group README.
  • Cross-repo: if a katgpt-rs primitive was consumed, note the fusion in the riir-ai doc AND the katgpt-rs doc (bidirectional cross-refs).
riir-chain (7-folder .docs/ book, reindexed 2026-08-08)
  • README.md: build surface, feature flags, consumers, drift notes.
  • .docs/: 7 numbered folders mirroring the riir-ai/.docs/ format — 01_orientation (what it is + feature surface + module map + how the ledger works), 02_consensus, 03_economics, 04_daemon (incl. the operator runbook), 05_wallet (trust boundaries, SIWR, node certificates), 06_operations (rolling upgrade across protocol versions, e2e coverage, failure scenarios), 07_formal_verification (pointer — the invariant table stays in AGENTS.md). Drop new docs in the right group folder and add one line to that folder's README.md index table. The top-level .docs/README.md is the entry point.
  • Division of labour with riir-ai (set 2026-08-08): riir-chain holds the canonical chain docs; riir-ai/.docs/07_neuro_symbolic_chain/ is a fusion map + feature highlights that links here and keeps only what is riir-ai's own (the Egg/Shell raw-vs-latent boundary, latent precision realms, game-layer sync strategy, CF Workers edge topology). Do not re-centralize chain internals in riir-ai — that duplication is what drifted before. Cross-link bidirectionally.
  • Module map discipline: 01_orientation/overview.md claims to list every src/ and crates/riir-chaind/src/ subtree. If a plan adds a module, add the row — a map that silently omits modules reads as "these do not exist".
  • AGENTS.md: the FV (Lean 4) invariant table lives here (mirrored in .proofs/README.md), NOT in .docs/. Plan 016 spec self-tests live next to each spec module under .proofs/RiirChainProof/.
riir-neuron-db (11-folder .docs/ book; 10th added 2026-07-30, 11th 11_cli/ added 2026-09-09)
  • README.md: build surface — feature gates (default-on / transitive / opt-in / per-feature prose sections for promoted primitives) + Formal Verification summary + License. Prose sections are reserved for promoted default-on features; opt-in features get table rows only.
  • .docs/: 11 numbered folders mirroring the riir-ai/.docs/ format. Drop new docs in the right group folder (by capability: shard substrate / freeze-thaw / consolidation / vessel / specialized / zone / examples / FV / local-kv Warm tier / CLI), add one line to that folder's README.md index table. The top-level .docs/README.md is the entry point. The 05_secure_vessel/vessel_primitive.md doc is the restored home of the old 15_vessel.md (corrected: riir-neuron-db is "this crate", NOT katgpt-rs per Plan 006). The 10_local_kv/ folder covers the LocalKvStore + CommitLevel/CommitBatch + WAL compaction + BM25 (the Warm tier substrate backing per-player state recovery in riir-mmorpg-examples Plan 013, added Issue 043). The 11_cli/ folder covers the ndb binary (Plan 327: Warm-tier CRUD, identity login via riir-auth account_key, multi-node WAL-mirror sync).
  • AGENTS.md: the FV (Lean 4) invariant table lives here (mirrored in .proofs/README.md), NOT in .docs/. The .docs/09_formal_verification/ folder is the narrative overview; AGENTS.md is the authoritative invariant table.
  • Cross-repo: if a primitive was consumed by riir-ai or riir-chain, the fusion is documented bidirectionally.
riir-train (6-folder .docs/ book, reindexed 2026-07-15)
  • 6 numbered folders (01_orientation/ … 06_cross_cutting/), unnumbered .md files inside — mirrors the riir-ai/.docs/ format.
  • Training-method research vault: adapter training, distillation/RL, data filtering, cross-cutting audits.
  • README.md is minimal — role + sibling layout.
  • main branch (no develop).
riir-game-sdk (10-folder .docs/ book; 10th added for multiplayer topology)
  • README.md: build surface — boundary rule, leaf constraint, spatial canonical, feature gates, Phase 2/3 status table.
  • .docs/: 10 numbered folders mirroring the riir-ai/.docs/ / riir-neuron-db/.docs/ format. Drop new docs in the right group folder (by capability: spatial-entity / tick-world / rules-ai / game-builder / zone-living-world / gm-dashboard / examples / lessons / multiplayer-topology), add one line to that folder's README.md index table. The top-level .docs/README.md is the entry point. The 10_multiplayer_topology/ folder covers the two-binary authority/player production model + avatar/game sync facade (the consumer pattern for the documented C1/C2/C4 chain topologies).
  • AGENTS.md: authoritative repo-local context (phase status, boundary rule rationale, leaf-constraint argument, the canonical-failure lessons). The 09_lessons/ folder is the narrative mirror of those lessons.
  • examples/: showcase examples are part of the doc surface (Issue 517 rule) AND documented in .docs/08_examples/.
  • Leaf constraint reminder: this crate has zero sibling path deps. Docs that reference sibling repos use relative links only — never imply a code dependency.
riir-mmorpg-examples (no .docs/ folder — AGENTS.md-centric)
  • POC consumer of riir-game-sdk (orchard multiplayer: 1000-NPC swarm + cross-target Bevy binary).
  • No .docs/ folder — documentation lives in:
    • AGENTS.md — the authoritative narrative (role, topology, plans/issues/benchmarks index, canonical-failure lessons, honest POC-grade caveats).
    • README.md — build surface (status, build commands, env vars, Plan/Issue index).
    • .plans/ / .issues/ / .benchmarks/ — individual plan/issue/benchmark files.
  • The AGENTS.md is large (~1000+ lines) and IS the doc surface — doc-sync for this repo means keeping AGENTS.md sections current with landed plans.
riir-refine (12-folder .docs/ book)
  • .docs/: 12 numbered folders mirroring the riir-ai/.docs/ format — corpus / drafter / pruner / verify / ruliology / examples / benchmarks / lessons / self-evolve / domains / ANE substrate knowledge (12_ane/, riir-ai Issue 726 T0 distillation). Drop new docs in the right group folder, add one line to that folder's README.md index table.
  • AGENTS.md: the batch-mining progress notes + sweep records live here (the cross-repo clippy-heal record home). A landed heal slice in a sibling repo (katgpt-rs, riir-train, riir-ai) gets its progress note in the SAME commit as the heal — a later doc-sync run defers to the healing session (never write progress notes for someone else's in-flight sweep).
  • README.md: Status + Quick Start + Usage + feature gates.
riir-unity — RETIRED 2026-09-04 (git/obsolete/), lineage only
  • AGENTS.md: domain boundary (no Rust crates here; UPM package is build output; no engine substrate in C#) + the Unity MCP rules + the issue log. Doc-sync = issue-log sections for resolved issues + module-map freshness (the Packages/com.riir.viewbridge/ population + scene wiring notes).
  • The Rust side of any feature lives in riir-viewbridge — cross-repo arcs (e.g. Issue 004) document on BOTH sides at arc close.
riir-viewbridge (.docs/01_orientation/ + an AGENTS.md-centric remainder)
  • AGENTS.md: workspace layout (core/derive/abi/xtask) + boundary rules (latent/raw wall, generated-bindings rule, catch_unwind) + the issue log.
  • .benchmarks/: GOAT records (e.g. Bench 002 node GOAT). Doc-sync = issue-log resolution entries + benchmark cross-refs.
Every repo not subsectioned above (riir-dapps, riir-dao, riir-auth, riir-deployer, riir-esp32, riir-kat, katgpt-web, mmorpg-remake, mmorpg-editor)
  • Follow the census-table row — these are AGENTS.md/BOUNDARY.md-centric: doc-sync = AGENTS.md/BOUNDARY.md status sections + numbering highwater + README freshness (riir-kat has no README; its AGENTS.md is the surface). The repo's own AGENTS.md supersedes this skill.
  • katgpt-web checkout may sit on a feature branch (see census row) — sync the branch you find, and say which one in the run log.
Step 5 — Verify
  • No broken links: every [...](.plans/NNN_*.md) must point to a file that exists.
  • No stale numbers: if a README entry says "ratio 0.01" but the benchmark says "0.27", the README is wrong — update it.
  • Numbering discipline: .highwater files must be bumped when new plans/issues land.
  • Honesty: a GOAT FAIL stays a GOAT FAIL in the docs. A "stays opt-in" primitive is documented as opt-in with the reason. Never upgrade a verdict in the docs without the benchmark to back it.
Step 6 — Commit

Per the global AGENTS.md rule: always commit at task completion. Use docs: prefix. Stay on the repo's working branch (develop for most, main for riir-train). Do not push.

sh
git add .docs/ README.md .plans/ .issues/ .benchmarks/ .research/
git commit -m "docs: sync .docs + README with recent plans (NNN, NNN, NNN)"

Cross-repo coordination

The 5-repo (now 10-repo) family shares numbering namespaces for plans/issues/benchmarks/research within each repo but NOT across repos. When a katgpt-rs primitive is consumed by riir-ai, the fusion is documented bidirectionally: the katgpt-rs doc notes "consumed by riir-ai/NNN", and the riir-ai doc notes "consumes katgpt-rs/NNN".

Formal verification (Lean 4) has its own cross-repo pattern (Research 351): each repo's .proofs/ instance is self-documenting via its invariant table in AGENTS.md. The doc-sync skill does NOT cross-port Lean files between repos (coordinator rule C4: private proofs stay private).

Shape-change contract (when .docs/ grows a new top-level NNN_* folder)

This is the root-cause guard for skill drift. The recurring failure mode: a plan adds a top-level .docs/NNN_*/ folder to a repo, lands the commit, and nobody updates this skill file — so the next doc-sync run operates on a stale folder-count assumption (canonical drifts: riir-neuron-db 9→10 via Issue 043, riir-game-sdk 9→10 via the multiplayer-topology docs, riir-chain flat→7 via the 2026-08-08 reindex, riir-ai 11→12 via Plan 455's orphaned 02_inference/ folder discovered 2026-08-08). This contract makes the update a grep-able checklist instead of an implicit expectation.

Trigger: any plan/issue/commit that adds a new top-level .docs/NNN_*/ folder to any repo that already has numbered folders — measured 2026-09-14 as 12 of the 20: katgpt-rs, riir-ai, riir-chain, riir-clippy, riir-dapps, riir-deployer, riir-game-sdk, riir-neuron-db, riir-shader, riir-train, riir-viewbridge, mmorpg-remake. Or that gives a .docs/ to one of the five with none (katgpt-web, riir-dao, riir-esp32, riir-kat, riir-mmorpg-examples) or the one whose .docs/ holds no document (riir-auth) — creating the folder is itself a shape change and requires this contract. Derive the split rather than reading it here (ls */.docs); the previous version of this trigger named riir-viewbridge as having none while its .docs/01_orientation/ had shipped in the repo's own scaffold commit — and the version before that kept riir-shader in the "none" list for two days after its 4-folder book landed (2b78bb5), because a census row nobody re-derived beats no row at all for hiding a shape change.

Checklist (run in the SAME pass as the folder-adding commit):

  • Verify ground truth. ls <repo>/.docs/ and count the NNN_* folders. Do not trust the skill's current number — it may already be stale.
  • Update the table row in ## The workspace repos and their doc shapes above: bump the folder count, extend the range (…NN_<new-folder>/), and add a short provenance note (plan/issue number + one-phrase capability description).
  • Update the Step 4 section for that repo: change the header count, add the new folder's name to the capability list, and add a one-sentence description of what the folder covers.
  • Grep-verify zero stale counts. After the edit, run grep -nE "<old_count> (numbered|folder)" ~/.agents/skills/doc-sync/SKILL.md for the repo you touched — it MUST return zero hits. (Example: after bumping riir-neuron-db from 9 to 10, grep -nE "9 (numbered|folder)" filtered to the neuron-db rows must be empty.)
  • Commit. This file is NOT in a git repo (~/.agents/ is on-disk only), so the update lands by saving — but the repo-side commit that adds the folder should reference this contract in its message (e.g. docs: add .docs/10_local_kv/ (shape-change contract: doc-sync SKILL.md updated)).

Who runs this: the agent executing the plan that adds the folder — NOT a later doc-sync run. doc-sync is the consumer of the skill; the contract is the producer-side obligation. A doc-sync run that discovers a stale count (row says 9, disk says 10) is a SIGNAL that the producer skipped this contract — fix the skill then, but also note the gap.

Anti-patterns

  • Do not write a doc entry for a plan that hasn't landed yet. Speculative docs go in .proposals/.
  • Do not remove a negative-result entry when closing its issue — the negative result is load-bearing documentation.
  • Do not upgrade a GOAT FAIL to a PASS in the docs without the benchmark file to back it.
  • Do not impose a .docs/ shape that differs from the repo's existing convention — respect the shape you find. Re-measured 2026-09-14 over the live 20 (the 09-12 measurement read 19 — it had no row for mmorpg-remaster, which joined at Issue 760): 12 numbered folders (katgpt-rs 10, riir-ai 12, riir-chain 7, riir-clippy 12, riir-dapps 1, riir-deployer 2, riir-game-sdk 10, riir-neuron-db 11, riir-shader 4, riir-train 6, riir-viewbridge 1, mmorpg-remake 1), 5 with no .docs/ at all (katgpt-web, riir-dao, riir-esp32, riir-kat, riir-mmorpg-examples), 1 whose .docs/ holds no document (riir-auth — only .highwater, which reads as a shape and is not one), 1 NAMED subfolders (mmorpg-editor), 1 flat numbered FILES (mmorpg-remaster — the shape did NOT leave the workspace with riir-burner; the 09-12 version of this sentence was wrong because that repo had no census row to be counted through). Don't re-type this census: the one-liner in the trigger above derives it, and every hand-written version of it in this file's history has been wrong within days — the previous one said "8 numbered / 8 AGENTS.md-centric" over a table whose membership differed from the workspace in BOTH directions. A shape change is a deliberate, committed decision governed by the Shape-change contract above.
  • Do not renumber existing docs — the numbering discipline is monotonic and never reused.
  • Do not document trivial mechanical commits (lockfile bumps, clippy fixes) unless they close a tracked issue.

Standing lessons (distilled from the run log — the load-bearing process rules)

  • Per-file logs + pickaxe are the reliable baseline tools. git log -- .docs README.md AGENTS.md once reported 5a1330b as game-sdk's newest doc-touching commit while git log -- AGENTS.md + git log -S '<landed-string>' -- <file> proved 1977d83 (two days newer) had touched AGENTS.md. Always re-verify a suspicious baseline per-file before declaring a range clean.
  • Narrow producer-side syncs leave holes the baseline heuristic can't see. A narrow sync fixes its own feature and skips everything else, so the strict baseline..HEAD range can be empty while the book still misses older landings. Gate runs GREP the book for recently-landed headline features; don't just trust the range. The inverse gap exists too: code landing to MATCH an already-documented row (mmorpg ?transport=local) is invisible to any baseline heuristic — nothing to fix, but don't declare a gap either.
  • Grep extraction regex must include digits. ^[a-z_]+ = over [features] silently dropped avatar_sync_ed25519 and game_sync_p2p — nearly filed phantom "documented-but-dead feature" findings. Use ^[a-z0-9_]+ =.
  • The staged-index check must GATE the commit, not precede it. One run saw two sibling-staged files in git diff --cached --name-only output and then sailed past them because the check was ;-chained ahead of git add + git commit — the sibling's WIP landed inside the run-log commit (benign outcome, luck not process). The correct form: run the check as its OWN command and read it, or use git commit -- <paths> (a partial commit builds a temporary index from HEAD + the named paths, leaving anyone else's staged hunks intact — the safe form on shared checkouts). scripts/staged_set_audit.py (katgpt-rs) reports the same signal class pre-commit.
  • A doc claim of determinism is a claim about a proof. When a fix refutes the proof (the ndb Bm25 tie-truncation class), grep the book for the CLAIM, not just for coverage of the fix — the fix landed with in-source comments only and the book kept asserting the falsified invariant.
  • False positives: grep the repo's OWN .benchmarks/ before declaring coverage. Different repos (and even different series in one repo) reuse bench numbers — the overview's only "Bench 025" hit was a different numbering series.
  • Broken links: prose citations survive file removal, markdown links do not. The noise-reduction rule removes record files but no link-fix pass followed, so every closed issue left ](.issues/NNN…) links dangling. Standing tools (committed in katgpt-rs .agents/skills/doc-sync/tools/ — moved out of a repo-root tools/ that no longer exists; the 2026-09-04 landing row below still says tools/ and is history, not a path): python3 .agents/skills/doc-sync/tools/linkcheck_sweep.py (census) + python3 .agents/skills/doc-sync/tools/link_fix.py <repo> (auto R1-repoint / R3-delink), re-sweep to verify, commit pathspec'd .md only. Guards baked into the tools: absent-repo (a link into a workspace repo not checked out on the running box is UNVERIFIABLE, not broken — exists() is box-relative), backtick (link text already code-marked is emitted unwrapped), EOL (the fixer reads/writes with newline="" since 2026-09-22 — CRLF/mixed files round-trip byte-exact; before that the read_text/write_text pair LF-normalized whole files, measured on a CRLF .research/200, and the old 'restore EOL to HEAD convention manually' workaround is retired), and a markdown link split across lines is invisible to one-line fix regexes (NOMATCH → manual two-line edit).
  • Never cite "Plan/Research NNN" without naming the repo when the number exists in more than one namespace — and never link a path you haven't verified (ls it first; per-repo numbering namespaces collide constantly).
  • Classification against dirty trees uses git show <rev>: content, never the working tree. Sync remotes first; git show -1 <sha> mis-parses (the -1 overrides the sha — pass the sha alone). The reliable per-file baseline is the 4-surface set (AGENTS.md / README.md / .docs/ / the feature file) + a since-count.
  • "0 passed" in a baseline run is the reliable gate detector — grep on attribute FORMS lies (whole-file #![cfg] gates sit below doc-comment headers, mod-level cfg(any(feature…)) compiles empty under default).
Show full SKILL.md (2,728 more words)Show less

Run log (compact — full narratives live in git history)

Each row's durable record is the named docs:/fix commit(s) in the repo it touched, plus this file's own history (git log -p -- .agents/skills/doc-sync/SKILL.md — rows carried full narratives until the 2026-09-05 compaction; git log -S '<date>' -- <this file> recovers any of them). Re-compacted 2026-09-11 — the rows appended after 09-05 had regressed to full narratives again; same recovery applies. New rows append ONE compact line each (hashes + one phrase — never narratives; the 09-05 and 09-11 compactions both followed regressions to full narratives). Pruned 2026-09-21: 119 → 15 rows, 104KB → 51KB — this time the one-line convention HELD but the cadence didn't: ~8 rows/day × ~1KB/row re-bloated the file in 10 days (67 file-touching commits 09-11→09-19). Pruned 2026-09-23: 25 → 15 rows, 59.1KB → 49.2KB — trip-preempting at 59.1KB, ~2 idle-pass rows under the 60KB threshold (the 04:49 idle-pass proximity note; the ~8-rows/day cadence lesson stands). Pruned 2026-09-28: 25 → 15 rows, 56.9KB → 50.4KB — same trip-preempt precedent at a full-gate run (fetch sweep 26/26 + linkcheck 0 breaks / 5894 files + dirty sweep all sibling-WIP). Maintenance rule: whenever this file exceeds 60KB, prune the run log to the newest 15 rows (checked at any full-gate run); every removed row is recoverable via git log -S '<date>' -- <this file>.

DateScopeVerdictRecord (primary fix commits)
2026-10-08delta unit #2 (M3 idle ~09:4x +07, riir-refine idle-loop continuation; Protocol H clean — all repos fetched in-sync, no zombies, no prunable worktrees, 4090 gitsync DONE 09:27; census still running — zero-cargo units only; hygiene: refine Issues 153+148 closed into HISTORY rows, files removed per the noise rule)3 doc gaps in riir-chain (landed after the 10-07 chain unit): overview module-map row for shard_assignment_solver.rs + README shard_solver umbrella row (Issue 164 item 4, 992cbf0b) · chaind doc riir-chaind token CLI block + chain_token_cli feature row + SDK token-registry crate-table mention (Plan 041 tails, 56f790f4); linkcheck 2 = the standing refine plan-202 deferral, 0 new; issues triaged: 089/150 owner-gated, 133/139/140 deferred-trigger trackers, ai pool all gated (1033 stays = the only T3–T6/T8 tracker), rethink 028 T7 owner-gated trackerchain 599b4ea4 · refine 4101b30b+06fb1ea2 · katgpt-rs (this commit)
2026-10-08delta unit (M3 idle ~08:1x +07, katgpt-rs 917/920 handoff continuation; Protocol H clean — 33 repos fetched all in-sync, no zombies (the 07:44 riir-esp32 fetch pair completed on its own), no prunable worktrees, 4090 gitsync DONE 07:50; disk 76Gi internal BELOW the 100Gi gate — top incremental slices (sge 41G, refine 35G, chain 28G) all in LIVE sibling sessions' repos, deletion deferred with reason, disk-clean contract needs user approval anyway; queue triage: issues 1–2 EXHAUSTED everywhere — owner-gated (dapps 111/117/119-T10, rethink 025/028-T7, neuron-db 627-T4b, infer 1003-record, auth-005 audio-deferred, katgpt 620 consumer-gated, ai 607/602/528 Ultra-gated, ndb-333 owner window), contended (riir-kat 003 T13 lane, infer 1005 Drex session, refine plan-202), or M3-measurement-gated (the 920 run holds ~3 cores nice-19 for ~21h; instinct 008 + ai-1004 league are measurement units); zero-contention unit picked: doc-sync)3 link/coverage repairs: katgpt-rs feature-catalog §141 gained the 917-T2 decode-wiring row (cousins + eligibility join landed 10-08 docs-silent by the landing session's own lineage — this closes it) + pending line now names only the lane A/B; katgpt-rs bench 923 owner delink (removed issue, HISTORY record); neuron-db riir-rag carve link tail — 524/526/523/575 + crate doc repointed cross-repo to riir-ai, pre-carve 325/324 back-links localized (8 links, the Issue-1038 session's residue); riir-shader proposal 002 sge plan-241 citation goes folder-level (file removed + number REUSED — delink, never repoint). linkcheck 12→2 (the 2 = refine plan-202, sibling-hot, deferred). Verified self-doc'd: rethink 030 egemma NO-GO (full HISTORY row), deployer 014 sleep_after (full HISTORY row), dao 008+B5-mirror (both rows), dapps v4 ingest (AGENTS row). 920 run healthy: probe 75/2000, 25658 tokens byte-identical checkpoints ×3, deltas_f32.bin 250MB, manifest still 0 (buffered, known)katgpt-rs b3464a45e · neuron-db d35acd2 · shader 8278716 · katgpt-rs (this commit)
2026-10-07delta unit (M3, riir-chain Plan-066 overflow-handoff continuation; the doc-sync trigger IS the 066 landing — chain book had 2 audit rows only; sibling-hot left as-found: ai + .wprobe + reflex-site per prior rows)riir-chain: overview module-map row un-rotted (dead chain_prog_nft dropped; escrow_multi/token_registry/domain_registry/delegation added; header 20→19 + the two 066 features named) · architecture.md program table gained the 7 missing live programs (Curator 20…Subscription 26) + NftProgram row dropped (Issue 125) + src tree current + audit filename fixed (escrow_multi.rs, was multi_claim_escrow.rs) · README Feature Surface section for programs 25/26 (wire 97–103, G1–G4, default-off, consumer = dapps 044-E owner-gated, v2 k-of-n additive) · AGENTS + audit pin counts 20→22 live · chaind doc 2 forward rows · 03_economics KAT-issuance (flow-vs-stock) paragraph · linkcheck: chain 0; train 6→0 delink R3 (removed Issues 487/570) — prior rows deferred those 6 as routing-restricted; train found quiet this run (clean + origin-synced, no listed sibling) so the delinks landed · deferred: ai 4 + wprobe 4 (sibling-hot), reflex-site 1 (claimed file)chain 5d858c73 · train ade74e26
2026-10-07delta unit ×2 (M3 idle; two overflow-handoff sessions back to back; 8 quiet repos fetched all in-sync — chain/dapps/sdk/infer/reflex/neuron-db/reflexer/katgpt-rs; sibling-hot left as-found: ai ×2 lanes, rethink ×2, refine ×2, seal)unit 1: katgpt-rs feature-catalog §141 updated for the 917-T3 landing (catalog row still said "promotion pending"; T3 shipped 10-06) · unit 2: 8-repo delta scan CLEAN — every landing since 10-05 self-doc'd in-commit (HISTORY rows/AGENTS compactions/README bullets; reflex 623-T5 artifact adoption carries its full HISTORY row incl. the SDXC1TB durability finding); riir-train Plan 416 T2.5 close-out landed (Bench 626: no-harm proven, plasticity_lr STAYS OPT-IN; issue 570 resolved+removed per its own contract, 604 closed); llama.cpp PR #29353 (GDN chunked prefill) re-checked — still OPEN/unmerged, riir-ai Issue 971 re-arm NOT FIRED; when merged the +13.3% 4090 pp2048 Qwen3.8-27B claim compresses our league prefill margins (~1.176× → ~1.04×) — next fork re-pin should expect itkatgpt-rs a2adb8797 · train e393c216 · katgpt-rs (this commit)
2026-10-07delta unit (M3 idle ~10:0x +07, riir-refine idle-loop continuation; Protocol H clean — 32 repos fetched all in-sync, no zombies/worktree debt, disk 211G/502G, 4090 gitsync DONE 08:58; sibling-hot untouched: ai 5d + train 2d + rethink 1d + mmorpg 2d + sge 1d dirty, reflex-site dev_flow.md claimed by its WIP session, refine/dapps Plan-066 lane)3 doc gaps + 5 linkcheck repairs: game-sdk riir-e2e README gate rows re-derived from test_gate.sh (13 rows — was stale ~08-28 at 6 rows/every count moved: default 21→29, adaptive 30→42, game 36→45, settlement 45→54, prod 172→187, item 180→195; +7 missing: aoi:47, backstab:38, backstab-anchored:41, backstab-arm-link:43, nft:240, shop-chaos:35, market-gold-chaos:37) + aoi/backstab runbook lanes + AGENTS member row gains the Plan 617 Phase 3 backstab chaind link · riir-kat AGENTS feature table gains the cegal-only wire (114 T6, dapps cut-over 4f2a8da) + purge domain (119 T12) + kat_cegel_client row · sealm-toolkit README sprite paragraph six→thirteen (rain 311 + RUN attack 314 sets) · linkcheck 16→11: dapps delink removed 116/120 + repoint 117 relative depth, refine delink removed 146 in Proposal 020; deferred with reasons: train 6 (routing-restricted), ai 4 (sibling-hot), reflex-site 1 (claimed file)game-sdk 809db28 · riir-kat aa82302 · sealm-toolkit ceba59d · dapps b9c7a32 · refine 4cd02276
2026-10-06delta unit (M3 idle ~09-11 +07, riir-refine overflow handoff continuation; 27 repos fetched all in-sync; sibling-hot deferred: dapps B7 live-smoke lane + kat wire (the live pack/pay session), refine B7, train GGUF-hunt, ai 1017/1020/1022 open-issue lanes, instinct 013 re-baseline (b) pending)2 doc gaps fixed: katgpt-rs kv_compression.md book copy followed the 883 promotion late (fitted_v_reconstruct DEFAULT-ON since 34145bfd5, book still said BOTH OPT-IN) · neuron-db 10_local_kv gained the 10th capability (scan_after_prefix from-cursor twins + scan_rows_returned read-cost instrument, dapps 116 T2 — folder count 9→10, store-doc section, index row, AGENTS folder row). THE UNIT'S REAL WORK: reflex issue-number dual allocation caught + remediated — the substrate-first audit (50ddbb7) filed SplitMix64-duplication as issue 070 while 070 was already allocated (1d2befe eval-seat alloc surface, closed e0c43c7, ~10 cross-repo mentions); first holder keeps the number, audit issue renumbered 070→071 (reflex 66a195e: file mv + highwater 70→71 + in-code comment repoints) + katgpt-rs run-log row repointed (a53ee7bb5) — lesson: ls-only allocation misses a CLOSED-AND-REMOVED same-number holder; read highwater AND the removal log (git log --diff-filter=D) before allocatingreflex 479b042+673ce4c+66a195e · katgpt-rs a53ee7bb5+c2ee7dcba · neuron-db 8c7b781
2026-10-05delta unit #3 (M3 ~12:3x +07; web-half of the ESC/typed-head additions per owner ask "new addition should update both doc-sync and website especially /resources, also check rethink.gist.rs"; repos fetched in-sync; sibling-hot left as-found: riir-rethink mid-flight Issue-023-T2 XNLI-ESC-demotion lane (arsenal.toml + escalating_backend.rs + esc tests dirty — the demotion my copy is written to survive) + reflex-site docs/instinct/dev_flow.md link-repair WIP + katgpt-rs src WIP)3 site/doc gaps fixed: (1) riir-rethink .docs/05_resources/resources.md said storefront "incoming / link may be dark" — live since 10-03; reworded + gained concept-level "How escalation works" (per-suite arming + rate guard + receipt-named demotion; no suite names, no numbers — mirror-fence-safe, survives T2) → mirrored docs/rethink/resources.md + manifest sha in reflex-site 06922a5 · (2) reflex-site /resources Rethink section gained the same fact ("Escalation is built, not just drawn"), moat-law-cleanreflex-site 06922a5 · rethink 22e1157 · (3) the rethink storefront feed was STALE — site/data/why.json built from bench sha aa4bc12e while the published feed moved to f82f648b at the Bench-123 publish (reflex-site 3529710); rebuilt via build_why_data.py, Rethink cells byte-unchanged (only provenance stamps moved), deployed rethink fc52b2a4 + reflex-site 5e556e4e; en-route gate repair: resources smoke's numbers-law scan flagged the footer licence line "Apache-2.0" (pre-existing since 007-T1, licence name ≠ measurement) — digitFindings now strips licence identifiers by name; gates: sync_mirror 32/32 --check + resources smoke PASS + public_copy_gate PASS; rethink.gist.rs check verdict: current, feed-driven tiles, no ESC/typed-head copy drift — rethink 35b3296
2026-10-05delta unit #2 (M3 ~05:2x-07:1x +07, overflow-handoff continuation; Protocol H fetch 27 repos 12.2s / disk 124Gi free; queue triage: every handoff item owner-gated or sibling — 627 T4 owner-adjacent (in-issue), 625 ND1/ND2 owner, reflex-site 007 T5 owner commitment, refine 146/147 sibling lane, 089/102/133/139/140 trigger-gated untriggered, dapps 112 owner tag, katgpt-rs 917 blocked-on-train-437; clean-behind riir-infer FF'd fe75497 (sibling 013-T4 lane — its doc notes deferred to that session) + katgpt-rs ff'd 618d7ec71 (fitted_value_table.rs only, zero overlap with the sibling's 5 dirty src files))3 doc gaps fixed: neuron-db README raw_wake_ring feature row (the 626/627 arc + Benches 500/501 landed README-silent) · refine AGENTS stale arc-swap fork-row claim (dropped 10-03 fd9aead7/fa904dde7 — prose still asserted it stays) · reflexer HISTORY vessel-mint genesis row (vmint-keygen + stub worker + GENESIS.md keys, e81d66d+d29de0b+4b40003 record-silent); THE UNIT'S REAL WORK: workspace linkcheck 167→0 — the 10-01 riir-clippy→riir-refine rename left 95 inbound links stale across 7 repos, the 10-03 rethink split moved ~25 targets (moat/ arsenal proposal, benches 039-041 stayed instinct-side), + depth classes + removed-issue delinks (898/914/106/571/55/56/64/30); 15 commits across 15 repos via link_fix R1/R2/R3 + hand fixes; lesson: pre-translating finding targets breaks the tool's line anchor — sed the files first, re-run linkcheck, then fixneuron-db 9150198+6659521 · refine feffe68e+545a835a · reflexer b5acd6c+bb18884 · ai 1dc8398a5 · dapps fdcb29a · train 25e9b580 · dao b4d6170 · reflex 6365fab · chain 2efd8192 · deployer fc25053 · infer 3f67035 · instinct e196573 · rethink 0c2c68b · reflex-site 3baffcc · katgpt-rs 10345b6cc
2026-10-03delta unit (M3 idle ~11:0x +07, riir-refine idle unit post-Protocol-H; trigger = Plan 618 T2 landed 04:5x today (neuron-db 2b53ed7 + ai 16276e3e2 + the vessel-attest wiring) with the landing session's coverage verified partial — crate-module row only; boundary 166th scoped row committed alongside; sibling-hot untouched: katgpt-rs 915 lane, train Plan-614 lane (routing restriction), reflex Bench-111 head self-doc'd, seal-remake HISTORY rows in-commit)2 gaps fixed: riir-neuron-db abstraction_freeze_gate (README feature row + consolidation_pipeline methods row + classified-capture section + folder index; claims verified against phase_gate.rs MIN_WAKE_ABSTRACTION 0.5 / G2 750 ns) · riir-ai (AGENTS engine row — the whole 618 arc was doc-silent: engram_runtime_store T1 + abstraction_producer T2.3; AGENTS mmorpg row — vessel_attest_abstraction T2 wiring; cognitive_branches_runtime.md module table + count 15→17) · 1026 arc verified self-doc'd (closed+HISTORY) · chain 161 closed, 160 defer-marked self-doc'dneuron-db 015850d · ai fb7657afc
2026-10-01delta unit #3 (M3 idle ~23:1x +07, overflow-handoff continuation; riir-refine ff'd +3 → 141c6109 — the live batch session's Batch 198 PrismML few-row landing, all four commits self-doc'd by construction: .research/231 + .plans/196 + AGENTS kernel_opt 734→739 / rust_perf 167→168 re-pins + README + .distill snapshot + domain docs; session LIVE per Protocol A — progress notes deferred to it, never written by another session; sibling-hot untouched: seal-game-editor map-tab build, surveying-sibling grammar-tests lane; boundary-guard 164th row committed alongside)CLEAN — 0 gaps in riir-refine; no other repo deltas this window (all 0/0 synced except sibling worktrees left as-found)katgpt-rs (this commit)
2026-10-01delta unit #2 (M3 idle ~18:5x +07, post-handoff; all repos fetched — every landing since the 07:2x baseline is the Plan-192/Proposal-018 rename wave carrying per-repo docs companions, perf-lane self-docs (ai 1004, infer 032/998/1004, instinct 017/035, reflex 057/058), dapps owner-ask HISTORY rows, or mechanical chores; riir-train read-only per routing restriction — its 9 landings all docs-companioned; sibling-hot untouched: refine Batch-197 + driver wiring, reflex-site edits, ai perf lane live at 18:14)CLEAN — 0 gaps; game-sdk a3a82b5 (backstab e2e) verified covered cross-repo via ai-1020 status + Plan 617 5.3; run log 57.3KB < 60KB no prunekatgpt-rs (this commit)
2026-10-01delta unit (M3 idle ~07:2x +07, handoff carry-over observation; 32 repos fetched in-sync except riir-infer behind-1 sibling-owned (dq614 matrix in flight) + reflex 058 sibling-claimed per partition rule)katgpt-rs "894+ window under-documented" observation REFUTED — every closed issue 894..912 has a HISTORY row (the top newest-first section, lines 4–248; the prior session's tail-read mistook file position for coverage). REAL defect found instead: the 912 row had been appended MID-ENTRY inside Issue 893's body (between its intro and its task bullets) and at file-end against the newest-first shape — relocated to the top, 893's entry re-joinedkatgpt-rs (this commit)
2026-09-30delta unit #2 (M3, post-C1-handoff continuation; 26 repos fetched/synced, instinct+train behind-1 FF'd — the sibling's 426-T4 4090 cross-check bench 030 + the C2 sibling's untracked 602/surrogate files in train, both in-flight deferred; the prior unit's "picked up NEXT: reflex 055" thread landed CLOSED by a later session — 055 null + 056 spun+closed, HISTORY-only)3 gaps fixed: reflex AGENTS gained the 055/056 arc (mc_ensemble opt-in + --mc-ab + the --gate-fit-calibrated DEFAULT posture, Benches 092–095 + katgpt-rs 909-911) · instinct AGENTS gained the 014 C1 row (Bench 029 encoder lane serve:✗ live, the T8 width-guard regression fix) + 008's typed board refreshed to the SERVED H2 0.6475 (0.6300/+5.8/−14.1 → +7.5/−12.4, site-verified) · katgpt-rs §113 sigmoid_calibration gained the 909/910/911 solver-repair record; DEFERRED: riir-ai 326e720f8 (045-arc half-landed, seal-remake sibling re-running) + mmorpg soak boot #3 (issue 1002 in-flight); run log 55.3KB < 60KB no prunereflex 2f6b58c · instinct 6218dbc · katgpt-rs (this commit)
2026-09-30delta unit (M3 ~01:0x +07, post-reflexer-002 handoff; 15 tips checked vs the 09-29 baseline — delta CLEAN: reflexer 60408d2 self-doc'd (HISTORY row + issue removal in-commit), clippy 99515251/katgpt-rs 0fffc3d7b docs-class, seal-remake f1e5099 + infer befcaa2 both carry HISTORY.md in-commit, sge de18b1ae follows its own docs(279) ledger, ai/train/instinct tips = the sibling's ACTIVE tetris round-5 arc (invalid-build amendment + warm-epochs fix) — deferred by rule; run log 54.6KB < 60KB no prune; picked up NEXT: reflex Issue 055 DRM distributional layer (unclaimed, ungated)CLEAN — 0 gaps; every landing docs-class, self-doc'd, or sibling-in-flight—
2026-09-29idle unit (M3, ~04-05 +07; box LOADED throughout — twt sweep bursty 956→95→1070% + infer sibling benchmark arc, so Bench 961 re-run + Plan 182 T18 stayed preflight-gated; 32 fetched all in-sync; doc delta CLEAN — tips newer than the prior unit are all docs-class or mechanical: mmorpg 0695cd6, train 49e8d0f4, seal-remake 733e53a, reflex cfa132a, clippy 95e5a14d)the unit's real work: riir-instinct Issue 012 PICKED UP + LANDED — the frozen-artifact staleness probe (Plan 005 / Bench 022): src/staleness.rs + fixture (192 items, digest 98a68396…) + example + 6 gates; MEASURED NOT dead-by-domination (banking77 v1→v2 bridge drift 13/64 flips meanΔgold
2026-09-29delta unit #2 (M3, quiet-box queue still gated load ~13 — twt sibling sweep + riir-infer benchmark arc; work units: instinct Issue 010 closed+removed — site half verified reflex-site 74b49e4, residual owner decision → pickup 013, AGENTS stale open-half row fixed (b6eb4c2) · reflex doc-sync — openthai + 426-T5 corpus-synthesis lanes into AGENTS Build Commands + HISTORY 09-29 row (021486b) · reflex-site 003 T5 hybrid half resolved by SHA mapping — 0959928 = instinct Bench 002 in-repo, 634093f = reflex HEAD (2a5ed55) · ai 971 09-29 re-check still NOT FIRED — +15 prism commits incl. sycl PQ2_0/PTQ1_0 FP16 dequant + metal FWHT-SwiGLU fold + DFlash2 spec, ZERO GDN-prefill-family/rebase, 09-24 CUDA cells stand (a81a2fc60) · code-smell hunt completed over all quiet repos — chain/dapps/dao/deployer/neuron-db/mmorpg/sdk-lite/shader/llm clean, seal-online-remaster 2[B]+7[C1]+29 stillborn REPORT-ONLY (owner-DEFERRED repo, no fixes filed)2 doc gaps fixed (reflex lanes; instinct 010 hygiene) + 1 stale residual relocated; trigger verdicts re-confirmed, no state flipsinstinct b6eb4c2 · reflex 021486b · reflex-site 2a5ed55 · ai a81a2fc60
2026-09-29delta unit (M3, overflow handoff; quiet-box items preflight-gated — load 12-13, sibling twt sweep pegging ~10 cores; 32 checkouts fetched, all in-sync except seal-game-editor behind 30 known sibling WIP; incoming landings all self-doc'd by construction: 1016-pickup wave ×6 repos, plan-426 arc (train docs + reflex 8426cef), instinct bench-021 + docs row, seal-remake plan-015 arc + plan-016 amend, riir-infer 022 T5.0 sibling-hot untouched, riir-clippy mining walk sibling-hot)2 gaps fixed: riir-ai deltanet showcase gained the f32 CPU-reference row (Bench 961 NOT-PROMOTED verdict — the landed negative was showcase-silent, GPU rows only) + sdk vessel_pipeline A2 basis-gate row resolved-by-retirement (D11 0df869d, was still listed open)ai c43b5ebb2 · game-sdk 22948a1

TL;DR

Diff git history against the last docs: commit. For each landed plan/issue, write the matching README/docs entry using the repo's existing shape and the verdict from its benchmark file. Commit with docs: prefix on the working branch. Never upgrade a verdict without proof; never delete a negative result.

© katopz, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in .agents/skills/doc-sync of katopz/katgpt-rs.

  • SKILL.md
  • tools/link_fix.py
  • tools/linkcheck_sweep.py

Open the folder on GitHubat commit 7e47c8c

Compare with similar skills

Doc Sync 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.

Doc Sync compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Doc Sync this skillkatopz/katgpt-rs135—~14kAutomated safety check: PassMIT
Doc Maintenancepaperclipai/paperclip99k—~1.6kAutomated safety check: PassMIT
Update DocsArcReel/ArcReel5.4k—~544Automated safety check: NotesAGPL-3.0
Docs Update from DiffQwenLM/qwen-code28k—~1.1kAutomated safety check: PassApache-2.0
Facade YARD Documentation Rulesruby-git/ruby-git1.8k—~5kAutomated safety check: PassMIT
GitHub Code ReviewRedWoodOG/Hermes-Desktop1775 repos~3.4kAutomated safety check: NotesMIT

Similar skills

  • Doc Maintenance

    paperclipai/paperclip

    Audit README, SPEC, and PRODUCT docs against recent git history for drift and make minimal PR-ready edits.

    99k GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Update Docs

    ArcReel/ArcReel

    根据最近的 git 改动,更新面向用户的文档(README 双语、入门教程、部署、剪映导出等)。手动调用. An agent skill from ArcReel/ArcReel.

    5.4k GitHub stars~544 tokensUpdated today
    DevelopmentAuto-check: notes
  • Docs Update from Diff

    QwenLM/qwen-code

    Reads local git changes and updates only the matching docs pages, so documentation stays in sync with uncommitted or recent code changes.

    28k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Sets facade-specific YARD documentation rules for the Git::Repository public API, layered on the gem's general YARD skill.

    1.8k GitHub stars~5k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • GitHub Code Review

    RedWoodOG/Hermes-Desktop

    Review code changes by analyzing git diffs, leaving inline comments on PRs, and performing thorough pre-push review.

    177 GitHub starsUsed in 5 repos~3.4k tokens
    DevelopmentAuto-check: notes
  • Wf Spec Wrapup

    changkun/wallfacer

    Close out a finished spec: write the Outcome section, move the status through the testing gate to complete, update specs/README.md, and commit.

    112 GitHub stars~2.4k tokensUpdated 4 days ago
    DevelopmentAuto-check passed

More from katopz/katgpt-rs

All 8 skills in this repo
  • Proposal

    katopz/katgpt-rs

    Write a reasoned architectural proposal (.proposals/NNN.md) grounded in focused codebase grep + prior-art paper search.

    135 GitHub stars~4.9k tokensUpdated today
    Auto-check passed
  • Boundary Guard

    katopz/katgpt-rs

    Audit + enforce game-stack boundary rules across the multi-repo workspace.

    135 GitHub stars~9.9k tokensUpdated today
    Auto-check passed
  • Feature Gate Audit

    katopz/katgpt-rs

    Audit feature-gate status claims across the multi-repo stack.

    135 GitHub stars~6.2k tokensUpdated today
    Auto-check passed
  • Goat Audit

    katopz/katgpt-rs

    Audit cross-repo GOAT/gain primitive cherry-pick status across the multi-repo stack (katgpt-rs upstream, riir- consumers).

    135 GitHub stars~7.9k tokensUpdated today
    Auto-check passed
  • Research

    katopz/katgpt-rs

    Research workflow for distilling ML/AI papers into modelless inference primitives, freeze/thaw runtime patterns, latent-space operations, AND model-based training plans across the multi-repo stack.

    135 GitHub stars~20k tokensUpdated today
    Auto-check passed
  • Rust Optimize

    katopz/katgpt-rs

    Optimize Rust code until nothing left to improve. An agent skill from katopz/katgpt-rs.

    135 GitHub stars~7k tokensUpdated today
    Auto-check passed

Categories

Questions about Doc Sync

What does Doc Sync do?

Synchronize each repo's .docs/ and README.md with recently succeeded plans/issues/benchmarks by diffing git history against the last documented entry. Doc Sync is an agent skill from katopz/katgpt-rs.md with recently succeeded plans/issues/benchmarks by diffing git history against the last documented entry.

When should I use Doc Sync?

Doc Sync fits situations like: tasks that involve Git workflow; tasks that involve Technical documentation.

How do I install Doc Sync in Claude Code?

Run `npx skills add katopz/katgpt-rs --skill doc-sync -a claude-code`. Or copy the skill folder (.agents/skills/doc-sync in katopz/katgpt-rs) into .claude/skills/doc-sync in your project. Claude Code loads it when a task matches its description.

How do I install Doc Sync in Codex?

Run `npx skills add katopz/katgpt-rs --skill doc-sync -a codex`. Or copy the skill folder (.agents/skills/doc-sync in katopz/katgpt-rs) into .agents/skills/doc-sync in your project. Codex loads it when a task matches its description.

Can I use Doc Sync in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add katopz/katgpt-rs --skill doc-sync -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/doc-sync, .gemini/skills/doc-sync, .github/skills/doc-sync and .opencode/skills/doc-sync in your project.

What does Doc Sync need to run?

Going by SKILL.md and its folder, Doc Sync needs Python for the scripts in its folder and the command-line tools its instructions call (git, python3 and cargo). Our summary lists: Python 3.

Does Doc Sync access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Doc Sync safe to install?

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. Review the folder before installing.

What licence does Doc Sync use?

Doc Sync is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Doc Sync use?

About 14k tokens (SKILL.md is roughly 58k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Doc Sync?

Skills that share tags, products or a category with Doc Sync: Doc Maintenance (paperclipai/paperclip, 99k stars), Update Docs (ArcReel/ArcReel, 5.4k stars), Docs Update from Diff (QwenLM/qwen-code, 28k stars) and Facade YARD Documentation Rules (ruby-git/ruby-git, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Doc Sync?

katopz (a GitHub user) maintains it in katopz/katgpt-rs, which has 135 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 8, 2026.

Source: katopz/katgpt-rs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.