Skip to content

feat(doc-sweep): add PR-time docs-staleness CI check with [skip docs] ack - #8

Merged
nthansen merged 1 commit into
mainfrom
add-docs-staleness-ci
Jul 3, 2026
Merged

feat(doc-sweep): add PR-time docs-staleness CI check with [skip docs] ack#8
nthansen merged 1 commit into
mainfrom
add-docs-staleness-ci

Conversation

@nthansen

@nthansen nthansen commented Jul 3, 2026

Copy link
Copy Markdown
Owner

What

Adds a PR-time docs-staleness CI check to doc-sweep — the enforcement layer the local push-guard hook structurally can't reach (human commits, contributors without doc-sweep, and fork PRs).

  • docs-ci-check.sh — deterministic (no LLM, no secret), keyed on the PR merge base (no marker). Fails a PR when non-doc files changed but no docs did.
  • [skip docs] ack (mirrors [skip ci]) — a code-only change (e.g. a bug fix) clears the check by updating docs, or putting [skip docs] in a commit message or the PR body (editable in-browser, no rebase).
  • install-docs-ci — a manual (disable-model-invocation) skill that vendors the check script under .github/doc-sweep/ and scaffolds a pull_request workflow. Self-contained — no external action ref.
  • Push guard unifiedrevise-push-guard.sh now honors the same [skip docs] token (must be on every non-doc commit in range). Repositioned as the optional pre-push companion; funbox itself now uses the CI check and no longer runs the local hook. Retiring the hook is a deferred decision (noted in CLAUDE.md).

Verification

All local gates green: marketplace policy, claude plugin validate, skill-gate (install-docs-ci benchmark 1.0), openspec validate --strict --all, openspec hygiene, and both shell test suites (docs-ci-check 11/11, revise-push-guard 16/16). ShellCheck runs in CI.

Planned and implemented via OpenSpec (add-docs-staleness-ci, archived with living specs synced).

🤖 Generated with Claude Code

… ack

Ships a deterministic (no-LLM, no-secret) GitHub Actions check that fails a PR
when non-doc files changed but no docs did — catching drift on human commits,
non-doc-sweep contributors, and fork PRs that the local push guard structurally
can't reach. Baseline is the PR merge base (no marker). A code-only change clears
it by updating docs or adding a `[skip docs]` token (in a commit message or the
PR body). Installed via a new manual `install-docs-ci` skill that vendors a
self-contained check script and scaffolds the workflow (no external action ref).

The local revise-docs push guard now honors the same `[skip docs]` token (must be
on every non-doc commit in range) and is repositioned as the optional pre-push
companion. funbox itself stops running the local hook and dogfoods the CI check
(advisory). Retiring the hook entirely is a deferred decision (noted in CLAUDE.md).

Includes: docs-ci-check.sh + tests, install-docs-ci skill + eval benchmark (1.0),
README/CHANGELOG/CLAUDE.md updates, and the archived OpenSpec change with synced
living specs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nthansen
nthansen merged commit 178c249 into main Jul 3, 2026
2 checks passed
@nthansen
nthansen deleted the add-docs-staleness-ci branch July 3, 2026 22:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant