Skip to content

Package Resync a Repo and Fleet Conformance Check as Skills - #679

Merged
ptr727 merged 4 commits into
developfrom
feature/agent-skills-phase4
Aug 13, 2026
Merged

Package Resync a Repo and Fleet Conformance Check as Skills#679
ptr727 merged 4 commits into
developfrom
feature/agent-skills-phase4

Conversation

@ptr727

@ptr727 ptr727 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Phase 4 of the hub-docs-to-Skills conversion (see #676, #677, #678 for Phases 0-3).

What this adds

  • resync-a-repo (hub-only): packages RESYNC.md section 3's apply order for a hub-context session driving a named repo's resync. The carried-instruction-file-guard skill's distinctive-phrase probe is now a mandatory, non-skippable step before any verbatim re-vendor of an instruction file, the direct structural fix for the AGENTS.md-overwrite bug class rather than a rewording of existing advisory language.
  • fleet-conformance-check (fleet-wide, appliesTo: "*", new content): the downstream-facing counterpart. Runs from inside a repo's own session with no hub checkout and no named target other than the repo itself. Confirms the local Skills install is current, confirms AGENTS.md's pointer text matches the hub, self-applies what is safe (re-running the installer), and escalates anything ambiguous (a genuine local addition, a settings/workflow drift) to a hub-driven resync-a-repo run rather than touching it.

Supporting changes

  • RESYNC.md section 3 step 1 gains the mandatory probe requirement and the AGENTS.md skill-dependency pointer as one more verbatim-carried unit in the same step.
  • AGENTS.md's "Where the Rules Live" table and pointer paragraph route to both new skills.
  • .claude-plugin/fleet-skills/ rebuilt via build_dist.py (now 6 skills).

Verification

  • python3 -m unittest discover -s scripts -p "test_*.py": 628 tests, all pass.
  • python3 scripts/prose_lint.py on all touched files: clean.
  • python3 spec/validate.py: clean.
  • docker run ... mstruebing/editorconfig-checker:latest: clean.
  • CRLF preserved on all touched Markdown.

🤖 Generated with Claude Code

Phase 4 of the hub-docs-to-Skills conversion. resync-a-repo packages
RESYNC.md section 3's apply order for a hub-context session driving a
named repo's resync, with the carried-instruction-file-guard skill's
distinctive-phrase probe made a mandatory, non-skippable step before
any verbatim re-vendor of an instruction file. fleet-conformance-check
is the new downstream-facing counterpart: run from inside a repo's own
session with no hub checkout and no named target, it confirms the
local Skills install is current, confirms AGENTS.md's pointer text
matches the hub, self-applies what is safe, and escalates anything
ambiguous to a hub-driven resync-a-repo run.

RESYNC.md section 3 step 1 gains the mandatory probe requirement and
the AGENTS.md skill-dependency pointer as one more verbatim-carried
unit, sitting alongside the existing instruction-set-first step.
AGENTS.md's Where the Rules Live table and pointer paragraph route to
both new skills. .claude-plugin/fleet-skills/ rebuilt via
build_dist.py.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 13, 2026 15:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR continues the hub-docs-to-Skills conversion by adding two new fleet Skills (resync-a-repo and fleet-conformance-check) and updating the hub’s resync and routing docs so agents are directed to the right Skill-driven workflow.

Changes:

  • Add resync-a-repo (hub-context) and fleet-conformance-check (downstream-context) as Skills in both .agents/skills/ (source) and .claude-plugin/fleet-skills/ (generated dist).
  • Update RESYNC.md step ordering guidance to make the carried-instruction-file-guard probe mandatory before verbatim instruction-file re-vendor, and to treat the AGENTS skill-pointer paragraph as part of the same “instruction set first” step.
  • Update AGENTS.md routing to point conformance/resync scenarios to the new Skills.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
RESYNC.md Expands resync step 1 guidance and mandates the probe before verbatim instruction-file re-vendor.
AGENTS.md Updates “Where the Rules Live” routing and pointer paragraph to reference the new Skills.
.agents/skills/resync-a-repo/SKILL.md Adds the source Skill definition for hub-driven resync procedure.
.agents/skills/fleet-conformance-check/SKILL.md Adds the source Skill definition for in-repo conformance checking and safe self-fixes.
.claude-plugin/fleet-skills/skills/resync-a-repo/SKILL.md Adds generated Claude Code Skill copy of resync-a-repo.
.claude-plugin/fleet-skills/skills/fleet-conformance-check/SKILL.md Adds generated Claude Code Skill copy of fleet-conformance-check.
.claude-plugin/fleet-skills/.claude-plugin/plugin.json Registers the two new Skills in the plugin manifest.
.claude-plugin/fleet-skills/.source-digest Updates the dist source digest to reflect the rebuilt plugin output.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .agents/skills/fleet-conformance-check/SKILL.md Outdated
Comment thread AGENTS.md Outdated
Comment thread .claude-plugin/fleet-skills/skills/fleet-conformance-check/SKILL.md Outdated
The skill's description said it runs with no hub checkout required,
while its own steps instruct fetching one to reach
scripts/skills_install.py. Both are true at once: no *standing*
checkout is needed to invoke the skill or name a target, but the
check itself fetches one transiently to reach hub-hosted tooling, per
Hub-Hosted Tooling. Reworded the skill's description and AGENTS.md's
pointer paragraph to say both halves instead of only the first.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 13, 2026 15:45
@ptr727
ptr727 requested a lite review from Copilot and removed request for Copilot August 13, 2026 15:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

Suppressed comments (1)

.agents/skills/resync-a-repo/SKILL.md:66

  • This inline code span is broken across a newline (... <owner>/<repo> then release|operational on the next line). CommonMark code spans cannot contain line breaks, so this will render inconsistently and makes the command easy to copy incorrectly.

Suggestion: keep the full command on one line (or switch to a fenced code block). Since this Skill is also emitted into .claude-plugin/fleet-skills/, update the source here and regenerate the dist output (and .source-digest).

5. **Settings, rulesets, and secrets.** Run `repo-config/configure.sh check <owner>/<repo>
   release|operational` against the repo by name, then `apply` for what it reports, never from a
   carried copy.

CommonMark code spans cannot contain a line break, so the
repo-config/configure.sh command wrapped mid-span rendered
inconsistently and was easy to copy incorrectly. Moved the wrap point
outside the backticks and regenerated the dist copy.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 13, 2026 15:50
@ptr727

ptr727 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Answering round 2's suppressed finding:

.agents/skills/resync-a-repo/SKILL.md:66 — "This inline code span is broken across a newline (... <owner>/<repo> then release|operational on the next line). CommonMark code spans cannot contain line breaks..."

Fixed in 43fb9da: moved the wrap point outside the backticks so repo-config/configure.sh check <owner>/<repo> release|operational stays on one line, and regenerated .claude-plugin/fleet-skills/.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

Suppressed comments (1)

.agents/skills/resync-a-repo/SKILL.md:34

  • spec/audit.py takes registry repo names (the repos[].name values like Utilities), but this skill uses the placeholder <repo> here while also using <owner>/<repo> elsewhere. That makes it ambiguous whether the argument is a local checkout path, an owner/repo slug, or the registry repo name.

Please rename the placeholder to something unambiguous (e.g. <RepoName>) and ideally note it maps to the registry name field.

Read RESYNC.md section 0. A repo with no instruction set at all, or a partial one, is not this
skill's job, it is STANDUP.md sections 1A and 2 instead, since an absent carried file is a
baseline that never arrived rather than drift to converge. Run `spec/audit.py <repo>` and read
whether the findings are letters (absent) or drift (present but stale) before doing anything else.
The finding kind names the procedure the repo is owed.

<repo> was used for spec/audit.py's registry-name argument, while
<owner>/<repo> named an unrelated owner/repo slug a few lines later,
so a reader could not tell whether the argument was a checkout path,
a slug, or the registry name. Renamed to <RepoName>, matching the
tool's own --help metavar, and named it as the registry name field
explicitly. Regenerated the dist copy.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 13, 2026 15:56
@ptr727

ptr727 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Answering round 3's suppressed finding:

.agents/skills/resync-a-repo/SKILL.md:34 — "spec/audit.py takes registry repo names ... but this skill uses the placeholder <repo> here while also using <owner>/<repo> elsewhere. That makes it ambiguous..."

Fixed in 0a01dfe: renamed the placeholder to <RepoName>, matching spec/audit.py --help's own metavar, and named it explicitly as the registry/repos.json name field rather than an owner/repo slug or a checkout path.

(The other suppressed finding this round, on the same file at line 66, is the inline-code-span break already answered above, fixed in 43fb9da.)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e421a14 into develop Aug 13, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/agent-skills-phase4 branch August 13, 2026 16:04
ptr727 added a commit that referenced this pull request Aug 13, 2026
Phase 5 of the hub-docs-to-Skills conversion (Phase 0/1 shipped in #676,
Phase 2 in #677, Phase 3 in #678, Phase 4 in #679).

## What this adds

- `dotnet-codestyle` (appliesTo csharp), `python-codestyle` (appliesTo
python), and `shell-codestyle` (appliesTo *, since a shell script can
appear in any repo), extracted from CODESTYLE.md's .NET, Python, and
Shell sections respectively: build/analyzer requirements, language and
naming conventions, logging and testing conventions, the Python
build-versus-lint-only profile split and toolchain, and the shell `set
-Eeuo pipefail` / pipefail-early-reader / shellcheck rules.
- This is the first phase gating a skill by `appliesTo` rather than
fleet-wide `*`, expressed through each skill's own trigger wording (file
extensions and project shape) rather than a mechanical field, since
SKILL.md frontmatter carries no such field.

## What changed in existing files

- CODESTYLE.md's .NET, Python, and Shell sections shrink to pointers,
per this project's standing decision that a skill becomes the sole
canonical content for its topic once one exists. No spec file or test
references any subheading inside these three sections, so each collapses
fully rather than keeping empty subheadings. Six now-orphaned link
reference definitions (MD053) are removed with them.
- CODESTYLE.md's and AGENTS.md's own descriptions of the file's
structure are corrected to mention the pre-existing Shell section, which
neither previously named.
- `.claude-plugin/fleet-skills/` regenerated via `scripts/build_dist.py`
to carry the three new skills alongside the six from Phases 1-4.

## Dropped

- `docker-codestyle` (Phase 5b): a content-discovery pass found no
dedicated Docker style section in CODESTYLE.md, only scattered
linter-invocation mentions in OPERATIONS.md and release mechanics in
GOVERNANCE.md, neither of which is Docker coding style. Not authored,
per the plan's own don't-invent-content instruction.

## Verification performed

- `scripts/prose_lint.py`, CRLF byte-integrity (all touched/new files
100% CRLF), `editorconfig-checker` (docker), `markdownlint-cli2`
(docker, 72 files, 0 issues), `spec/validate.py`,
`scripts/test_prose_lint.py` (223 tests), `scripts/test_build_dist.py`
(19 tests), and `scripts/test_skills_install.py` all clean.
- `scripts/build_dist.py --check` confirms the generated plugin is
current relative to `.agents/skills/`.
- Grepped `scripts/test_*.py` and `spec/*.json` for any coupling to the
trimmed CODESTYLE.md subheadings before trimming: none found.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ptr727 added a commit that referenced this pull request Aug 15, 2026
…Python CI Gates (#718)

Thirty-one squashes, `56f4d7d..d54862a`. 115 files, +20436/-5298.

**Merge with a merge commit, never a squash, and never with
`--delete-branch`.** This pull request's head is `develop` itself.

## What lands

**Fleet Skills.** The `.agents/skills/` source tree, the generated
`.claude-plugin/` distribution, `scripts/build_dist.py` with its
`--check` gate, and `scripts/skills_install.py` with its host stamp
(#676). Packaged as skills on top of the scaffold: PR review conduct and
Copilot instructions upkeep (#677), comment and doc style (#678),
resync-a-repo and fleet-conformance-check (#679), the per-language
codestyles (#680), git commit conventions and operational vs release
workflow (#681), stand up a repo (#683), and repo-worktree (#717).
Coverage gaps closed in three passes (#690, #691, #692) plus the P4
sentence-length opt-in (#697).

**Host setup.** The Windows host-setup tooling and its PowerShell gate
(#674), the Windows bootstrap loader (#682), Docker install and upgrade
on Linux and Windows with a version floor (#701, #705), a `uv` floor in
`spec/host-tools.json` (#698), self-healing of a shadowing `uv`, `jq`,
or `git-restore-mtime` copy (#689), node's real winget package id
(#696), and a README for the Linux host-setup nuances (#710).

**Python and CI.** Python tooling in CI with the script tests moved to
`scripts/tests` (#704), `ruff format` adopted and gated (#709), and the
PSScriptAnalyzer claim conditioned on repos that carry `.ps1` files
(#686).

**Conduct rules.** Triage-order and scope guardrails in
pr-review-conduct (#684), `pr_review.py wait` requesting a review rather
than only polling for one (#685), a tech-agnostic signed-commit
verification (#708), execution rather than analogy to verify
platform-specific code (#715), and a unique worktree for every task
(#717).

**Docs.** The fleet map and gap register with peer messaging declared
(#687), mermaid flow diagrams in the kept-authority docs (#702), and the
map pointed at the shipped diagrams and current tooling (#703).

## Issues this promotion closes

Each landed on `develop` on its own pull request. The keyword fires only
on a merge into `main`, so it sits here rather than on the feature pull
requests.

Closes #700
Closes #707
Closes #711
Closes #712
Closes #714
Closes #688

#699 stays open on purpose: #717 shipped the layout convention and the
skill, and the physical migration of existing checkouts is still tracked
there.

## Review record

Every squash closed its own Copilot loop on its own pull request before
merging to `develop`. This promotion carries no new content of its own,
so its review is the merged tree as a whole.

## Consequence worth stating

The `GOVERNANCE.md` and `AGENTS.md` sections these squashes changed
become the canonical the moment this reaches `main`, and every carrying
repository reads as drifted from that point until it resyncs. That is
the ordinary consequence of a canonical moving rather than a defect. The
Skills installer added here is also how a machine picks the new skills
up, so a session that keeps restating a rule already packaged as a skill
is the signal to run it.
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.

2 participants