diff --git a/.github/skills/local-strict-review/SKILL.md b/.github/skills/local-strict-review/SKILL.md index 7a2eb75..cad9a06 100644 --- a/.github/skills/local-strict-review/SKILL.md +++ b/.github/skills/local-strict-review/SKILL.md @@ -48,8 +48,7 @@ Rules that bind this task: quote `code-review`'s "Review the Change" section int the Return line below, not a PR comment or a coverage marker. Return: one finding per line, file:line, the concrete failure scenario, no severity theater. Bounds: read-only. No edit, no stage, no commit, no push, no PR-hosted write of any kind. -If a rule you were given does not cover what you find, stop and report it. Do not guess, and do - not read a governance file to resolve it. + ``` **Model tier:** the strongest tier this session can reach, per `AGENTS.md` "Match the model tier to the judgment" and "Never tier down the seat holding the judgment", applied here to the reviewer rather than the author. Run the pass on the same tier that authored the change when only one tier is reachable, a second, adversarially-prompted look still catches what the authoring pass's own "looks ready" judgment did not. diff --git a/.github/skills/resync-a-repo/SKILL.md b/.github/skills/resync-a-repo/SKILL.md index 5093063..9ac991f 100644 --- a/.github/skills/resync-a-repo/SKILL.md +++ b/.github/skills/resync-a-repo/SKILL.md @@ -49,21 +49,13 @@ Preserve the evidence RESYNC.md section 2 requires, and do not leave the finding ## Apply, in this order -1. **The instruction set first.** `AGENTS.md` and `GOVERNANCE.md` verbatim sections, then - `CODESTYLE.md` and `WORKFLOW.md`, including the `AGENTS.md` skill-dependency pointer paragraph - (naming `scripts/skills_install.py` and where the fleet's Skills live) as one more verbatim - unit carried in this same step, not a separate pass. **Before any verbatim re-vendor in this - step, run the `carried-instruction-file-guard` skill's distinctive-phrase probe against the - target file, every time, without exception.** This is not advisory language to weigh against - how routine the diff looks, a diff that looks routine is exactly the shape the - AGENTS.md-overwrite incident took. Do not proceed to the re-vendor until the probe has run and - any local addition it finds has a destination, per that skill's own procedure. +1. **The instruction set first.** `CLAUDE.md`, then `AGENTS.md` and `GOVERNANCE.md` verbatim sections, then `CODESTYLE.md` and `WORKFLOW.md`, including the `AGENTS.md` skill-dependency pointer paragraph (naming `scripts/skills_install.py` and where the fleet's Skills live) as one more verbatim unit carried in this same step, not a separate pass. `CLAUDE.md` is the single `@AGENTS.md`-import file that gets `AGENTS.md` into a Claude Code session's context at all, a separate baseline entry from `AGENTS.md` itself, so carrying one without the other still leaves that provider unconfigured. **Before touching `AGENTS.md`, `GOVERNANCE.md`, `CODESTYLE.md`, or `WORKFLOW.md` in this step, run the `carried-instruction-file-guard` skill's distinctive-phrase probe against the target file, every time, without exception, regardless of whether the update is a verbatim re-vendor or an intent-fidelity edit.** This is not advisory language to weigh against how routine the diff looks, a diff that looks routine is exactly the shape the AGENTS.md-overwrite incident took. Do not proceed to the re-vendor until the probe has run and any local addition it finds has a destination, per that skill's own procedure. `CLAUDE.md` is outside that guard's scope: it carries no mixed or repo-specific content by design, so its re-vendor is an ordinary verbatim-fidelity copy, no probe needed. 2. **Deletions second, before any re-vendor.** Only a `retire` disposition in `spec/divergences.json` authorizes removing a file, and the removal is swept tree-wide, per RESYNC.md section 4, before the deletion counts as done. -3. **Verbatim re-vendors** for everything the probe in step 1 cleared. A finding classified - modified rather than stale gets its diff read before being overwritten, since it may be an - improvement the hub should adopt instead of a mistake to erase. +3. **Verbatim re-vendors** for `CLAUDE.md` and everything else the probe in step 1 cleared. A + finding classified modified rather than stale gets its diff read before being overwritten, + since it may be an improvement the hub should adopt instead of a mistake to erase. 4. **Interface workflows.** Honor the named contract, required jobs, the ruleset-bound check name, the artifact-name handoff, rather than copying bytes. 5. **Settings, rulesets, and secrets.** Run diff --git a/.github/skills/standup-a-repo/SKILL.md b/.github/skills/standup-a-repo/SKILL.md index f9d2b4f..363d6bb 100644 --- a/.github/skills/standup-a-repo/SKILL.md +++ b/.github/skills/standup-a-repo/SKILL.md @@ -51,10 +51,13 @@ maintainer can supply what section 0A lists. section 2, then write or repair its `registry/repos.json` entry and confirm it with `spec/validate.py`. -4. **The instruction set, before authoring anything.** STANDUP.md section 1A: carry `AGENTS.md`, - `GOVERNANCE.md`, `CODESTYLE.md`, `WORKFLOW.md` and `AUDIT.md`, adapted rather than cloned for - the ones that describe a repo, plus `.markdownlint-cli2.jsonc` and `cspell.json`. Read - `CODESTYLE.md` and the `GOVERNANCE.md` documentation-style rules before writing any repo +4. **The instruction set, before authoring anything.** STANDUP.md section 1A: carry `CLAUDE.md`, + `AGENTS.md`, `GOVERNANCE.md`, `CODESTYLE.md`, `WORKFLOW.md` and `AUDIT.md`, adapted rather + than cloned for the ones that describe a repo, plus `.markdownlint-cli2.jsonc` and + `cspell.json`. `CLAUDE.md` is the fixed, verbatim `@AGENTS.md`-import file that gets + `AGENTS.md` into a Claude Code session's context at all, a separate baseline entry from + `AGENTS.md` itself, so carrying one without the other still leaves that provider unconfigured. + Read `CODESTYLE.md` and the `GOVERNANCE.md` documentation-style rules before writing any repo content of your own, the same window-closes shape as signing in step 1. 5. **Capture the source, if one exists.** STANDUP.md section 1B, only when the repo's content diff --git a/AUDIT.md b/AUDIT.md index 9ac555d..e4c736d 100644 --- a/AUDIT.md +++ b/AUDIT.md @@ -1,6 +1,6 @@ # AUDIT.md -How this repository audits itself against its committed baseline and reports drift. This is the repo-scoped adaptation of the fleet-wide AUDIT.md kept at the fleet hub, and the hub's fleet-wide audit remains authoritative. General settings, rulesets, and secret names are hub-hosted ground truth (`repo-config/` and `spec/secrets.json` in `github.com/ptr727/ProjectTemplate`, checked from a hub checkout rather than carried here, per [GOVERNANCE.md "Hub-Hosted Tooling"][governance-hub-hosted-tooling]), and the prose authorities are [`GOVERNANCE.md`][governance], [`CODESTYLE.md`][codestyle], and [`WORKFLOW.md`][workflow]. +How this repository audits itself against its committed baseline and reports drift. This is the repo-scoped adaptation of the fleet-wide AUDIT.md kept at the fleet hub, and the hub's fleet-wide audit remains authoritative. General settings, rulesets, and secret names are hub-hosted ground truth (`repo-config/` and `spec/secrets.json`, checked from a hub checkout rather than carried here, per [GOVERNANCE.md "Hub-Hosted Tooling"][governance-hub-hosted-tooling]), and the prose authorities are [`GOVERNANCE.md`][governance], [`CODESTYLE.md`][codestyle], and [`WORKFLOW.md`][workflow]. The audit is read-only: it diffs live state against the committed baseline and reports findings, and it never applies changes. The verdict vocabulary is [`WORKFLOW.md`][workflow]'s: **operational / not operational**, **N/A**, **defect**, and the applicable/absent rule. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..a2c84a1 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +# Claude Code Entry Point + +@AGENTS.md + +Claude Code reads `CLAUDE.md`, not `AGENTS.md`, so the import line above is what gets this repository's rules into a Claude Code session at all. See `AGENTS.md` for what is authoritative and why. This file carries no rule of its own, and adds none beyond the import line. diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 5585d6e..bb9e2c4 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -253,6 +253,7 @@ Every repo's GitHub repository details (the About panel) follow a fixed conventi ## Repository Layout - [`AGENTS.md`](./AGENTS.md): the agent entry point, carrying context and delegation rules plus the map to the sections above. +- [`CLAUDE.md`](./CLAUDE.md): imports `AGENTS.md`, since Claude Code reads `CLAUDE.md` and never `AGENTS.md` on its own. Carries no rule of its own. - [`GOVERNANCE.md`](./GOVERNANCE.md), [`CODESTYLE.md`](./CODESTYLE.md), [`WORKFLOW.md`](./WORKFLOW.md), [`AUDIT.md`](./AUDIT.md): the governance and audit docs. This file is the cross-cutting-rules authority, `AUDIT.md` the self-audit of settings, rulesets, and secret names. - [`.github/copilot-instructions.md`](./.github/copilot-instructions.md): the Copilot bootstrap and review runbook. [`ARCHITECTURE.md`](./ARCHITECTURE.md): this project's architecture, processing pipeline, per-command implementation details, and test layout. - [`PhotoCleaner/`](./PhotoCleaner/): the console application. [`PhotoCleanerTests/`](./PhotoCleanerTests/): the xUnit test project. [`PhotoCleanerBenchmarks/`](./PhotoCleanerBenchmarks/): the BenchmarkDotNet project. [`PhotoCleaner.slnx`](./PhotoCleaner.slnx) is the solution. @@ -260,6 +261,6 @@ Every repo's GitHub repository details (the About panel) follow a fixed conventi - [`.github/workflows/`](./.github/workflows/): the pull request gate, the reusable build tasks, and the publisher. - [`version.json`](./version.json): the version floor. [`Directory.Build.props`](./Directory.Build.props) and [`Directory.Packages.props`](./Directory.Packages.props): the shared build properties and the central package versions. -Branch rulesets, general settings, and secret names are hub-hosted (`repo-config/` and `spec/secrets.json` in `github.com/ptr727/ProjectTemplate`), checked against this repo from a hub checkout rather than carried here, per "Hub-Hosted Tooling". +Branch rulesets, general settings, and secret names are hub-hosted (`repo-config/` and `spec/secrets.json`), checked against this repo from a hub checkout rather than carried here, per "Hub-Hosted Tooling". After editing a doc, run the linters (see [`OPERATIONS.md`](./OPERATIONS.md) "Local Verification") before commit. The Comments, Character Set, and Line Endings rules above are the frequent regressions, so hold them exactly.