Skip to content

#228 chore: tailor .skills/doc-sections; re-sync the shipping fork's Step 1.5 - #229

Merged
gregoryfoster merged 8 commits into
mainfrom
228-doc-sections
Sep 14, 2026
Merged

gregoryfoster merged 8 commits into
mainfrom
228-doc-sections

Conversation

@gregoryfoster

Copy link
Copy Markdown
Contributor

Closes #228.

doc-check.sh (shipping-work Step 1.5) printed the python-fastapi default advice on every hit, beside archiver's tailored path list. Upstream gregoryfoster/skills#284 now ends such a hit with a Note: this project tailors .skills/doc-sensitive-paths but not .skills/doc-sections line. This PR commits the second half.

Changes

  • .skills/doc-sections (new): 9 advice lines, each sending a watched path to the doc that covers it. Checked against the docs rather than inferred from doc names. Corrections to the issue's draft:
    • The changelog trigger is not all of src/. The line points at AGENTS.md's quoted regex and CONVENTIONS.md "Changelog trigger" instead of copying the paths.
    • Dashboard changes follow CONVENTIONS.md "Dashboard living docs" (8 docs; the draft named 4).
    • Added lines the draft lacked: BUS_CONSUMERS.md, deploy/README.md, ARCHITECTURE.md "Project Layout", SCHEMA.md invariants enforced outside models/, and the guard tests tests/scripts/ and tests/deploy/, which the path list deliberately over-matches.
  • tests/scripts/test_doc_sections.py (new): upstream runs no check on the advice (it's prose), so this covers the checkable parts. It fails when a path the advice names is no longer tracked, a quoted doc "Heading" is gone (code fences skipped), a line names no doc, or the forked SKILL.md doesn't mention both override files. The path grammar is pinned by its own test. It shares one list reader with test_doc_sensitive_paths.py via tests/scripts/_skills_lists.py.
  • skills/shipping-work-python-fastapi/SKILL.md (the committed fork): Step 1.5 re-synced from upstream 178ec64 (#261 doc-sections, #284 half-tailoring note, unusable .skills/ exits 2), plus Step 2's #257 exit-2 note, which the pinned check-status.sh already implements. synced-from is now 178ec64.
  • docs/SKILLS.md: documents the second file.

No CHANGELOG entry: no trigger path is touched.

Verification

  • Pre-ship: ruff clean, 1884 Python + 88 JS tests passed.
  • Red first: 3fb0643 (test only) fails 2 tests, and e183407 turns them green. The CR round (f63213e..432ef24, one commit per finding) added its own red-first tests for the path grammar and the fence-aware heading scan. Mutations (renamed doc, dead dir, renamed heading, line with no doc) each fail.
  • Upstream 178ec64 doc-check.sh run against this branch prints (advice: .skills/doc-sections) and no Note: line. With the file hidden, the note prints.

Issue checklist

  • .skills/doc-sections committed, naming this repo's docs
  • after the refresh, a doc-check hit prints (advice: .skills/doc-sections) and no Note: this project tailors line. Verified with the 178ec64 script; it goes live when the daily SessionStart hook moves skills-vendor/gregoryfoster-skills past 178ec64 (pinned at 980a0d1 today).

🤖 Generated with Claude Code

gregoryfoster and others added 8 commits September 14, 2026 20:30
…t exist

Red: the file is absent, and the shipping fork's Step 1.5 never mentions
it. Upstream runs no dead-entry check on advice; this module checks the
parts of the prose that can be checked - named paths are tracked, quoted
headings exist, every line names a doc - and that the fork introduces
both override files doc-check.sh reports on.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…Step 1.5

doc-check.sh's advice on a hit was still the python-fastapi defaults
(AGENTS.md route table, README quick start) beside archiver's tailored
path list. Upstream gregoryfoster/skills#284 ends every such hit with a
note naming the untailored half.

- .skills/doc-sections routes each watched path at the doc that owns it:
  CHANGELOG/CONVENTIONS for the trigger, API, SCHEMA, BUS/BUS_CONSUMERS,
  the dashboard living-docs map, DEPLOYMENT + deploy/README, ARCHITECTURE's
  layout, and the AGENTS/README doc indexes. Turns the #228 test green.
- skills/shipping-work-python-fastapi/SKILL.md: Step 1.5 re-synced from
  upstream 178ec64 (#261 doc-sections, #284 half-tailoring note, unusable
  .skills/ is exit 2), plus Step 2's #257 exit-2 note the pinned
  check-status.sh already implements. synced-from bumped to 178ec64.
- docs/SKILLS.md documents the second file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…checked

FILE_TOKEN only knew six extensions, so deploy/archiver.service,
src/dashboard/static/dashboard.css, .github/workflows/ci.yml and
.skills/doc-sensitive-paths were never extracted - the paths the deploy
and dashboard lines are likeliest to name could rot silently while the
docstring claimed any path was checked. A pinned grammar test now holds
the three shapes and the prose that must stay out (e.g., owner/repo).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
deploy/ and scripts/ deliberately over-match tests/deploy/ and
tests/scripts/, but no advice line said what to do about such a hit -
this branch's own (tests/scripts/test_doc_sections.py) printed eight
lines, none applicable, and never named docs/SKILLS.md. The list's
"both land on the same docs anyway" was wrong for skill guard tests;
it now points at the advice line instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…els/

The line named only src/core/models/, but SCHEMA.md documents
invariants enforced in src/core/services/ (registry_announcement,
source_revision), src/core/fingerprints.py, src/core/replication/ and
the JSON Schema validators; a change there never pointed at it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…omments

The heading scan counted every `#` line, including those inside fenced
code blocks (README.md's bash comments, CONVENTIONS.md's `# Plain
lookup`), so a renamed heading could be satisfied by a comment that
happened to contain its text. _headings() now skips fenced code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
test_doc_sections copied _entries()/_tracked_files() from
test_doc_sensitive_paths line for line. Upstream parses both files with
one read_list_file so a grammar fix lands on both (#261); two copies here
could drift apart and one test would disagree with the script. Both now
import read_list_file and tracked_files from tests/scripts/_skills_lists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…d regex

"when the diff touches AGENTS.md's changelog trigger regex" read as
editing the regex; the trigger is a changed path matching it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

shipping-work: tailor .skills/doc-sections — doc-check.sh will flag the default advice on every hit (gregoryfoster/skills#284)

1 participant