docs-drift-fixer
Docs drift fixer — docs true to the code
Daily: finds doc statements the code or recent commits contradict, rewrites only those, proves every edit against the cited code line with a calibrated check, and opens one docs-only PR behind approval.
| Source | templates/docs-drift-fixer/workflow.yaml |
| Category | development |
| Trigger | manual (wfx run) · schedule 0 5 * * * |
| Steps | 7 |
| Human approval before | publish |
| Providers named | claude-cli |
Use it
Section titled “Use it”wfx templates docs-drift-fixerwfx new docs-drift-fixer --as my-docs-drift-fixerwfx dryrun my-docs-drift-fixerWhat it does
Section titled “What it does”Finds documentation that no longer matches the code — paths, symbols and flags the docs name that the code does not have, and names recent commits renamed or deleted — has an agent confirm each is really stale and make the smallest edit citing the code line that makes it true, re-checks every edit against that line with two calibrated questions, commits only what holds (one commit per doc), and opens a docs-only PR after a person approves.
What you fill in
Section titled “What you fill in”- docs / exclude globs if your docs live elsewhere, or you keep history docs outside docs/adr
- the base branch for the PR, if not the repository’s default
- TYPESAFE_API_KEY in the env store for the calibrated edit check
Inputs
Section titled “Inputs”| Input | Type | Default | Required | Meaning |
|---|---|---|---|---|
repo_path |
string | |||
repo_url |
string | |||
base_branch |
string | |||
since |
string | |||
lookback_days |
integer | 14 |
||
docs |
string | "README.md,**/README.md,docs/**/*.md,**/SKILL.md" |
||
exclude |
string | "docs/adr/**,**/CHANGELOG*,openspec/**,docs/spikes/**,docs/research/**,.claude/**,.codex/**,.opencode/**,**/node_modules/**" |
||
max_findings |
integer | 25 |
||
dry_run |
boolean | true |
||
isolate |
boolean | true |
| # | Step | Kind | Skills | Gates |
|---|---|---|---|---|
| 1 | collectFind drift (machine checks) |
shell (run:) |
exitCode = 70 → failexitCode = 78 → skip to remember |
|
| 2 | syncConfirm and fix each flag (doc-syncer) |
agent on claude-cli |
doc-syncer repo-navigator |
|
| 3 | verifyVerify every edit against the code (JEV) and commit |
shell (run:) |
exitCode = 70 → failexitCode = 78 → skip to remember |
|
| 4 | dry_run_stopStop here on a dry run |
shell (run:) |
exitCode = 78 → skip to remember |
|
| 5 | publishPush and open the docs PR (pr-publisher) |
agent on claude-cli |
pr-publisher |
human approval first |
| 6 | rememberRemember the last commit checked |
shell (run:) |
||
| 7 | reportReport |
shell (run:) |
Human gates
Section titled “Human gates”publishwaits forwfx approve <run-id>(orwfx reject <run-id> -m "why") before it runs.