Sync Docs
ayutaz/piper-plus
コミット前にエージェントチームで全ドキュメント (CLAUDE.md / README / CHANGELOG / docs/) を監査し、コード変更に応じて自動更新します。大規模変更時の documentation drift を予防。
Reconciles documentation with code at the end of a change or as a periodic audit, following a repo rule that code changes and doc changes land in one commit.
$ npx skills add fancyboi999/open-tag --skill doc-sync -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install fancyboi999/open-tag doc-sync --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/fancyboi999/open-tag.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/doc-sync .claude/skills/doc-sync && rm -rf skills-srcUse ~/.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/
Install the "doc-sync" agent skill from https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-sync into .claude/skills/doc-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-sync", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-syncType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add fancyboi999/open-tag --skill doc-sync -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install fancyboi999/open-tag doc-sync --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fancyboi999/open-tag.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/doc-sync .agents/skills/doc-sync && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "doc-sync" agent skill from https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-sync into .agents/skills/doc-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-sync", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add fancyboi999/open-tag --skill doc-sync -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install fancyboi999/open-tag doc-sync --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fancyboi999/open-tag.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/doc-sync .cursor/skills/doc-sync && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "doc-sync" agent skill from https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-sync into .cursor/skills/doc-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-sync", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/fancyboi999/open-tag.git --path .agents/skills/doc-sync--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add fancyboi999/open-tag --skill doc-sync -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install fancyboi999/open-tag doc-sync --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fancyboi999/open-tag.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/doc-sync .gemini/skills/doc-sync && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "doc-sync" agent skill from https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-sync into .gemini/skills/doc-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-sync", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install fancyboi999/open-tag doc-syncInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add fancyboi999/open-tag --skill doc-sync -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/fancyboi999/open-tag.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/doc-sync .github/skills/doc-sync && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "doc-sync" agent skill from https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-sync into .github/skills/doc-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-sync", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add fancyboi999/open-tag --skill doc-sync -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install fancyboi999/open-tag doc-sync --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fancyboi999/open-tag.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/doc-sync .opencode/skills/doc-sync && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "doc-sync" agent skill from https://github.com/fancyboi999/open-tag/tree/main/.agents/skills/doc-sync into .opencode/skills/doc-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-sync", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
doc-syncReconciles documentation with code at the end of a change or as a periodic audit, following a repo rule that code changes and doc changes land in one commit.
At the end of every change the skill finds the change surface from the git diff against origin/main, then checks each changed path against the doc-sync mapping table kept in AGENTS.md to list the documents the change owes. Examples named in the skill include a database schema snapshot, an architecture codemap, a features checklist, a tech-debt tracker and a changelog entry when the daemon bundle ships.
It also enforces a single-source rule for security and authorization item states, which are meant to live only in docs/authorization.md. A grep command is given to find other documents that mirror those states so they can be removed or pointed at the one source. Documentation that lags behind the code is treated as an unfinished bug.
The skill is written around one repository's layout and file names, so it is most useful there or as a model for similar rules elsewhere. Only the per-change mode is described in detail in the visible text; the periodic drift audit is named in the description.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 35d8eee. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Doc-Code Sync Check loads about 1.7k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 834 words of instructions outside code blocks.
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.
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.
The full file from fancyboi999/open-tag at commit 35d8eee, republished under its Apache-2.0 licence (© fancyboi999). 834 words, ~1,657 tokens.
.claude/skills/doc-sync/SKILL.md (or your agent's skills folder).This repo treats doc lag as an unfinished bug (see AGENTS.md § Doc-sync discipline). This skill is the executable procedure; the canonical mapping table (which change owes which doc) lives in AGENTS.md — read it there, do not copy it here.
This file is canonical at
.agents/skills/doc-sync/SKILL.md(.claude/skills/doc-syncis a symlink). The skill itself iterates: when a run shows an instruction here is wrong or misleading, fix it in the same pass, with the run's evidence in the commit message.
Determine the change surface.
git diff --stat origin/main...HEAD (or the staged diff for uncommitted work).
Map each changed path against the AGENTS.md doc-sync table. Produce the list of docs owed by this change. The high-traffic rows:
src/db/schema.ts → docs/generated/db-schema.md (hand-maintained snapshot — no
generator script exists despite the generated/ dir name; update the table row
and any enum lists by hand; prod DB migrates via prod:up → db:push:prod).ARCHITECTURE.md §II codemap + §IV contracts.ARCHITECTURE.md §II–IV.FEATURES.md checkbox (checkbox + a short note;
long verification narratives belong in the PR, not the checklist).docs/tech-debt-tracker.md new entry
(next free ID — check the archive too so IDs are never reused).src/daemon/** shipped in the bundle → bump packages/daemon/package.json,
cut a GitHub Release, and add the version's CHANGELOG.md entry. Merged ≠ shipped.Status single-source rule. Security/authorization item states (F*/C*/IDOR-B*) live
only in docs/authorization.md §6. Other docs (PLANS, tech-debt I44) may point
there but must never mirror per-item states — mirrored lists are how C10 stayed
"remaining" for weeks after it was fixed. Detect mechanically, don't trust prose:
grep -rnE '\b(C1[0-2]|C[1-9]|B[1-6]|F[0-9]|IDOR)\b' --include='*.md' docs/ *.md | grep -vE 'authorization\.md|docs/exec-plans/|docs/superpowers/'
(historical plan/spec records legitimately narrate the states they shipped — the rule
polices live docs). A hit naming an item's state (open/fixed/remaining) is a
violation; a bare pointer to authorization.md §6 is fine.
Staleness check on every doc you touched. For each edited doc: file paths it names
exist; tech-debt I<n> / D<n> references resolve (tracker or archive); counts/enums
match code (grep, wc -l — better: drop volatile numbers entirely, per
ARCHITECTURE.md's header rule).
Hygiene gates.
git diff origin/main -- <files> | grep '^+' | grep -E '~/\.claude|/Users/'.
A personal absolute path (/Users/<name>/…) is a violation. Two known non-violations
that this grep still surfaces: a generic runtime path that is product behavior
(e.g. ~/.claude/skills as Claude CLI's global skills dir), and a tech-debt entry
quoting a personal path as the evidence of the debt it records. Judge, don't
blind-fail — but never add a new personal path outside those two shapes.src/daemon/prompt.ts? Grep for provider-specific tool names
(Read, cat, grep, vision hints) → expect zero hits (code-quality red line).Fail loud. In the PR/summary, list: docs updated · docs checked-and-clean · drift found but deferred (with its new tech-debt entry ID).
Cross-check the status documents against code and each other; they drift fastest:
FEATURES.md — sample every [ ] unchecked line: is the feature actually still
missing? (grep the endpoint / CLI verb / component). Unchecked-but-shipped is the
most common rot.docs/PLANS.md — every referenced plan file exists; Active items are still active;
completed plans moved to docs/exec-plans/completed/ with their status line
updated (a moved plan still saying "merge pending <date>" is half-finished rot).docs/tech-debt-tracker.md — no duplicate IDs (incl. vs the archive); ⬜/🟡 entries
spot-checked against code; newly-✅ entries: move the full row to the archive.
The tracker keeps no stub — it holds open items only; cross-references resolve by
grepping both files.docs/authorization.md §6 vs any doc that mentions security items — pointers only,
no mirrored states (run the Mode 1 step-3 grep).ARCHITECTURE.md §II — new substantive modules (>50 lines) present in the codemap.
Recipe: git log --since=<last audit> --name-only --diff-filter=A --pretty=format: -- 'src/*' 'web/src/*',
then check each surviving non-test file's basename appears in the codemap. Named files
exist; CHANGELOG.md's newest version heading (the [Unreleased] section doesn't
count) matches packages/daemon/package.json.git ls-files '*.md' | xargs wc -c | sort -rn | head.
For each fat doc, check it against its own stated form rule (FEATURES' "checkbox +
short note" header, ARCHITECTURE's "write only what doesn't change often" header) —
self-rule violations are the strongest trim mandate. Cut change-history narrative
("the former X was removed…", "before this fix…") and verification evidence — git log
and PRs own those. Frozen plan/spec archives of shipped work are deletable (git
history retains them); before deleting, grep for inbound references incl. from src/.README.zh-CN.md parity — diff section structure + bullet counts against
README.md; the zh mirror silently misses EN feature edits (drift is one-directional).
Small deltas: translate in the same pass. A backlog: open a tech-debt entry.Report findings with file:line evidence; fix mechanically-safe drift in the same pass, open tech-debt entries for anything needing a decision.
© fancyboi999, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/doc-sync of fancyboi999/open-tag.
Open the folder on GitHubat commit 35d8eee
Doc-Code Sync Check 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Doc-Code Sync Check this skillfancyboi999/open-tag | 203 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Sync Docsayutaz/piper-plus | 220 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Releasejrswab/axe | 895 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Docs GuardamElnagdy/guard-skills | 1.3k | — | ~2.1k | Automated safety check: Pass | MIT | |
| CommitLennartHennigs/Button2 | 565 | — | ~562 | Automated safety check: Pass | MIT | |
| Qkeymapper Release NotesZalafina/QKeyMapper | 755 | — | ~1.3k | Automated safety check: Pass | GPL-3.0 |
ayutaz/piper-plus
コミット前にエージェントチームで全ドキュメント (CLAUDE.md / README / CHANGELOG / docs/) を監査し、コード変更に応じて自動更新します。大規模変更時の documentation drift を予防。
jrswab/axe
Prepare code for release (version bumps, changelog, README updates) and create an annotated tag to trigger the GoReleaser workflow.
amElnagdy/guard-skills
Checks generated or edited documentation against the source code, flagging invented symbols, outdated samples and unverifiable claims before publishing.
LennartHennigs/Button2
Stage and commit current changes for Button2 — checks for needed CHANGELOG/README/CLAUDE.md updates, creates a branch if on master, writes a commit message, and commits
Zalafina/QKeyMapper
为 QKeyMapper 编写 README.md 的中文 release note,并默认联动 qkeymapper-readme-en-sync 定向同步更新英文版 READMEen.md。收集最近正式 release tag 之后的已提交更新,先展示中英双语完整草稿供审阅,批准实施后分阶段原子提交两个 README。用于发布说明、更新日志和中英文版本信息维护。
LennartHennigs/ESPRotary
Stage and commit current changes for ESPRotary — checks for needed CHANGELOG/README/CLAUDE.md updates, creates a branch if on master, writes a commit message, and commits
Works with
Categories
Reconciles documentation with code at the end of a change or as a periodic audit, following a repo rule that code changes and doc changes land in one commit. md to list the documents the change owes. Examples named in the skill include a database schema snapshot, an architecture codemap, a features checklist, a tech-debt tracker and a changelog entry when the daemon bundle ships.
Doc-Code Sync Check fits situations like: finishing a pull request and confirming every owed doc was updated; auditing a repo for drift between documentation and code; checking whether a schema or route change needs architecture notes; before calling a change done, as the last verification step.
Run `npx skills add fancyboi999/open-tag --skill doc-sync -a claude-code`. Or copy the skill folder (.agents/skills/doc-sync in fancyboi999/open-tag) into .claude/skills/doc-sync in your project. Claude Code loads it when a task matches its description.
Run `npx skills add fancyboi999/open-tag --skill doc-sync -a codex`. Or copy the skill folder (.agents/skills/doc-sync in fancyboi999/open-tag) into .agents/skills/doc-sync in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fancyboi999/open-tag --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.
Going by SKILL.md and its folder, Doc-Code Sync Check needs the command-line tools its instructions call (git). Our summary lists: A git repository with an AGENTS.md doc-sync mapping table; Git access to origin/main for the diff.
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.
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.
Doc-Code Sync Check is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Doc-Code Sync Check: Sync Docs (ayutaz/piper-plus, 220 stars), Release (jrswab/axe, 895 stars), Docs Guard (amElnagdy/guard-skills, 1.3k stars) and Commit (LennartHennigs/Button2, 565 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
fancyboi999 (a GitHub user) maintains it in fancyboi999/open-tag, which has 203 GitHub stars. The repository was last updated on August 22, 2026.
Source: fancyboi999/open-tag on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.