diff --git a/.agents/skills/comment-and-doc-style/references/line-endings.md b/.agents/skills/comment-and-doc-style/references/line-endings.md index bdf0846a..8337cbcf 100644 --- a/.agents/skills/comment-and-doc-style/references/line-endings.md +++ b/.agents/skills/comment-and-doc-style/references/line-endings.md @@ -71,9 +71,10 @@ tool-owned format outside `.bat`/`.cmd`, or a byte-preserve data directory whose consumer may depend on), still pair a `.gitattributes` pin with a matching `.editorconfig` override, since the git pin alone is not enough there, `.gitattributes` governs git while the editor follows `.editorconfig`. For a byte-preserve directory, disable all editor normalization, -not just EOL: `[/*]` with `charset = unset`, `end_of_line = unset`, `insert_final_newline = +not just EOL: `[/**]` with `charset = unset`, `end_of_line = unset`, `insert_final_newline = false`, `trim_trailing_whitespace = false` (`unset` is EditorConfig's spec-defined special value -that removes an inherited property). +that removes an inherited property, and `**` is needed rather than `*` so a nested file under the +directory is covered too, since `*` excludes `/` and only matches one path component). ## Editing discipline diff --git a/.agents/skills/dotnet-codestyle/references/conventions.md b/.agents/skills/dotnet-codestyle/references/conventions.md index 5eb48540..2421ab73 100644 --- a/.agents/skills/dotnet-codestyle/references/conventions.md +++ b/.agents/skills/dotnet-codestyle/references/conventions.md @@ -122,5 +122,14 @@ parameters, return values, exceptions, and crefs. /// /// Thrown when is not a supported value. /// -public async Task GetQuoteOfTheDayAsync(string category, CancellationToken cancellationToken) {} +public async Task GetQuoteOfTheDayAsync(string category, CancellationToken cancellationToken) +{ + if (category is not ("motivational" or "humor")) + { + throw new ArgumentException($"Unsupported category: {category}", nameof(category)); + } + + await Task.Delay(0, cancellationToken); + return $"Quote for {category}"; +} ``` diff --git a/.agents/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md b/.agents/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md index 597cd5f1..6d934c0e 100644 --- a/.agents/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md +++ b/.agents/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md @@ -35,7 +35,7 @@ Two traps, both learned the hard way: `git checkout -b promote/develop-to-main origin/main && git merge origin/develop`, take `develop`'s side for the EOL-conflicted files (`git checkout --theirs `) **after confirming each is content-identical modulo EOL, or that `develop` is a strict superset** - (`diff <(git show :2:f | tr -d '\r') <(git show :3:f | tr -d '\r')`), then open that branch into + (`diff <(git show ":2:" | tr -d '\r') <(git show ":3:" | tr -d '\r')`), then open that branch into `main`. Verify no genuine `main`-only content is dropped (build/test where the repo supports it). ## Why both rulesets omit "Require branches to be up to date before merging" diff --git a/.agents/skills/resync-a-repo/SKILL.md b/.agents/skills/resync-a-repo/SKILL.md index e291fb66..18962375 100644 --- a/.agents/skills/resync-a-repo/SKILL.md +++ b/.agents/skills/resync-a-repo/SKILL.md @@ -67,8 +67,9 @@ Preserve the evidence RESYNC.md section 2 requires, and do not leave the finding 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 - `repo-config/configure.sh check / release|operational` from the hub at `main`, - then `apply` for what it reports, never from a carried copy. + `repo-config/configure.sh check "/" release` (substitute `operational` for an + operational repo) from the hub at `main`, then `apply` for what it reports, never from a + carried copy. 6. **Intent files last, and by hand,** since nothing mechanical judges these. Reconcile the registry entry (`status`, `types`, `releaseTrigger`, `workflowModel`, diff --git a/.agents/skills/standup-a-repo/SKILL.md b/.agents/skills/standup-a-repo/SKILL.md index 54c277a5..8269093d 100644 --- a/.agents/skills/standup-a-repo/SKILL.md +++ b/.agents/skills/standup-a-repo/SKILL.md @@ -75,8 +75,9 @@ maintainer can supply what section 0A lists. 8. **Settings, rulesets, and secrets.** STANDUP.md section 4: confirm the remote and the GitHub repository agree before running anything else here, then apply with - `repo-config/configure.sh apply owner/repo release|operational` from the hub at `main` and check with the same - command's `check` subcommand, never from a hand-built or carried copy. + `repo-config/configure.sh apply owner/repo release` (substitute `operational` for an + operational repo) from the hub at `main` and check with the same command's `check` subcommand, + never from a hand-built or carried copy. 9. **Verify with the audit.** STANDUP.md section 5: run `AUDIT.md` end to end. The repo is stood up only when it passes for its type, or its residual deltas are tracked in diff --git a/.claude-plugin/fleet-skills/.source-digest b/.claude-plugin/fleet-skills/.source-digest index 97ea0b63..160eee0d 100644 --- a/.claude-plugin/fleet-skills/.source-digest +++ b/.claude-plugin/fleet-skills/.source-digest @@ -1 +1 @@ -b945e66c274cb82a +702692e5f8c8f60e diff --git a/.claude-plugin/fleet-skills/skills/comment-and-doc-style/references/line-endings.md b/.claude-plugin/fleet-skills/skills/comment-and-doc-style/references/line-endings.md index bdf0846a..8337cbcf 100644 --- a/.claude-plugin/fleet-skills/skills/comment-and-doc-style/references/line-endings.md +++ b/.claude-plugin/fleet-skills/skills/comment-and-doc-style/references/line-endings.md @@ -71,9 +71,10 @@ tool-owned format outside `.bat`/`.cmd`, or a byte-preserve data directory whose consumer may depend on), still pair a `.gitattributes` pin with a matching `.editorconfig` override, since the git pin alone is not enough there, `.gitattributes` governs git while the editor follows `.editorconfig`. For a byte-preserve directory, disable all editor normalization, -not just EOL: `[/*]` with `charset = unset`, `end_of_line = unset`, `insert_final_newline = +not just EOL: `[/**]` with `charset = unset`, `end_of_line = unset`, `insert_final_newline = false`, `trim_trailing_whitespace = false` (`unset` is EditorConfig's spec-defined special value -that removes an inherited property). +that removes an inherited property, and `**` is needed rather than `*` so a nested file under the +directory is covered too, since `*` excludes `/` and only matches one path component). ## Editing discipline diff --git a/.claude-plugin/fleet-skills/skills/dotnet-codestyle/references/conventions.md b/.claude-plugin/fleet-skills/skills/dotnet-codestyle/references/conventions.md index 5eb48540..2421ab73 100644 --- a/.claude-plugin/fleet-skills/skills/dotnet-codestyle/references/conventions.md +++ b/.claude-plugin/fleet-skills/skills/dotnet-codestyle/references/conventions.md @@ -122,5 +122,14 @@ parameters, return values, exceptions, and crefs. /// /// Thrown when is not a supported value. /// -public async Task GetQuoteOfTheDayAsync(string category, CancellationToken cancellationToken) {} +public async Task GetQuoteOfTheDayAsync(string category, CancellationToken cancellationToken) +{ + if (category is not ("motivational" or "humor")) + { + throw new ArgumentException($"Unsupported category: {category}", nameof(category)); + } + + await Task.Delay(0, cancellationToken); + return $"Quote for {category}"; +} ``` diff --git a/.claude-plugin/fleet-skills/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md b/.claude-plugin/fleet-skills/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md index 597cd5f1..6d934c0e 100644 --- a/.claude-plugin/fleet-skills/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md +++ b/.claude-plugin/fleet-skills/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md @@ -35,7 +35,7 @@ Two traps, both learned the hard way: `git checkout -b promote/develop-to-main origin/main && git merge origin/develop`, take `develop`'s side for the EOL-conflicted files (`git checkout --theirs `) **after confirming each is content-identical modulo EOL, or that `develop` is a strict superset** - (`diff <(git show :2:f | tr -d '\r') <(git show :3:f | tr -d '\r')`), then open that branch into + (`diff <(git show ":2:" | tr -d '\r') <(git show ":3:" | tr -d '\r')`), then open that branch into `main`. Verify no genuine `main`-only content is dropped (build/test where the repo supports it). ## Why both rulesets omit "Require branches to be up to date before merging" diff --git a/.claude-plugin/fleet-skills/skills/resync-a-repo/SKILL.md b/.claude-plugin/fleet-skills/skills/resync-a-repo/SKILL.md index e291fb66..18962375 100644 --- a/.claude-plugin/fleet-skills/skills/resync-a-repo/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/resync-a-repo/SKILL.md @@ -67,8 +67,9 @@ Preserve the evidence RESYNC.md section 2 requires, and do not leave the finding 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 - `repo-config/configure.sh check / release|operational` from the hub at `main`, - then `apply` for what it reports, never from a carried copy. + `repo-config/configure.sh check "/" release` (substitute `operational` for an + operational repo) from the hub at `main`, then `apply` for what it reports, never from a + carried copy. 6. **Intent files last, and by hand,** since nothing mechanical judges these. Reconcile the registry entry (`status`, `types`, `releaseTrigger`, `workflowModel`, diff --git a/.claude-plugin/fleet-skills/skills/standup-a-repo/SKILL.md b/.claude-plugin/fleet-skills/skills/standup-a-repo/SKILL.md index 54c277a5..8269093d 100644 --- a/.claude-plugin/fleet-skills/skills/standup-a-repo/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/standup-a-repo/SKILL.md @@ -75,8 +75,9 @@ maintainer can supply what section 0A lists. 8. **Settings, rulesets, and secrets.** STANDUP.md section 4: confirm the remote and the GitHub repository agree before running anything else here, then apply with - `repo-config/configure.sh apply owner/repo release|operational` from the hub at `main` and check with the same - command's `check` subcommand, never from a hand-built or carried copy. + `repo-config/configure.sh apply owner/repo release` (substitute `operational` for an + operational repo) from the hub at `main` and check with the same command's `check` subcommand, + never from a hand-built or carried copy. 9. **Verify with the audit.** STANDUP.md section 5: run `AUDIT.md` end to end. The repo is stood up only when it passes for its type, or its residual deltas are tracked in diff --git a/.github/skills/comment-and-doc-style/references/line-endings.md b/.github/skills/comment-and-doc-style/references/line-endings.md index bdf0846a..8337cbcf 100644 --- a/.github/skills/comment-and-doc-style/references/line-endings.md +++ b/.github/skills/comment-and-doc-style/references/line-endings.md @@ -71,9 +71,10 @@ tool-owned format outside `.bat`/`.cmd`, or a byte-preserve data directory whose consumer may depend on), still pair a `.gitattributes` pin with a matching `.editorconfig` override, since the git pin alone is not enough there, `.gitattributes` governs git while the editor follows `.editorconfig`. For a byte-preserve directory, disable all editor normalization, -not just EOL: `[/*]` with `charset = unset`, `end_of_line = unset`, `insert_final_newline = +not just EOL: `[/**]` with `charset = unset`, `end_of_line = unset`, `insert_final_newline = false`, `trim_trailing_whitespace = false` (`unset` is EditorConfig's spec-defined special value -that removes an inherited property). +that removes an inherited property, and `**` is needed rather than `*` so a nested file under the +directory is covered too, since `*` excludes `/` and only matches one path component). ## Editing discipline diff --git a/.github/skills/dotnet-codestyle/references/conventions.md b/.github/skills/dotnet-codestyle/references/conventions.md index 5eb48540..2421ab73 100644 --- a/.github/skills/dotnet-codestyle/references/conventions.md +++ b/.github/skills/dotnet-codestyle/references/conventions.md @@ -122,5 +122,14 @@ parameters, return values, exceptions, and crefs. /// /// Thrown when is not a supported value. /// -public async Task GetQuoteOfTheDayAsync(string category, CancellationToken cancellationToken) {} +public async Task GetQuoteOfTheDayAsync(string category, CancellationToken cancellationToken) +{ + if (category is not ("motivational" or "humor")) + { + throw new ArgumentException($"Unsupported category: {category}", nameof(category)); + } + + await Task.Delay(0, cancellationToken); + return $"Quote for {category}"; +} ``` diff --git a/.github/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md b/.github/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md index 597cd5f1..6d934c0e 100644 --- a/.github/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md +++ b/.github/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.md @@ -35,7 +35,7 @@ Two traps, both learned the hard way: `git checkout -b promote/develop-to-main origin/main && git merge origin/develop`, take `develop`'s side for the EOL-conflicted files (`git checkout --theirs `) **after confirming each is content-identical modulo EOL, or that `develop` is a strict superset** - (`diff <(git show :2:f | tr -d '\r') <(git show :3:f | tr -d '\r')`), then open that branch into + (`diff <(git show ":2:" | tr -d '\r') <(git show ":3:" | tr -d '\r')`), then open that branch into `main`. Verify no genuine `main`-only content is dropped (build/test where the repo supports it). ## Why both rulesets omit "Require branches to be up to date before merging" diff --git a/.github/skills/resync-a-repo/SKILL.md b/.github/skills/resync-a-repo/SKILL.md index e291fb66..18962375 100644 --- a/.github/skills/resync-a-repo/SKILL.md +++ b/.github/skills/resync-a-repo/SKILL.md @@ -67,8 +67,9 @@ Preserve the evidence RESYNC.md section 2 requires, and do not leave the finding 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 - `repo-config/configure.sh check / release|operational` from the hub at `main`, - then `apply` for what it reports, never from a carried copy. + `repo-config/configure.sh check "/" release` (substitute `operational` for an + operational repo) from the hub at `main`, then `apply` for what it reports, never from a + carried copy. 6. **Intent files last, and by hand,** since nothing mechanical judges these. Reconcile the registry entry (`status`, `types`, `releaseTrigger`, `workflowModel`, diff --git a/.github/skills/standup-a-repo/SKILL.md b/.github/skills/standup-a-repo/SKILL.md index 54c277a5..8269093d 100644 --- a/.github/skills/standup-a-repo/SKILL.md +++ b/.github/skills/standup-a-repo/SKILL.md @@ -75,8 +75,9 @@ maintainer can supply what section 0A lists. 8. **Settings, rulesets, and secrets.** STANDUP.md section 4: confirm the remote and the GitHub repository agree before running anything else here, then apply with - `repo-config/configure.sh apply owner/repo release|operational` from the hub at `main` and check with the same - command's `check` subcommand, never from a hand-built or carried copy. + `repo-config/configure.sh apply owner/repo release` (substitute `operational` for an + operational repo) from the hub at `main` and check with the same command's `check` subcommand, + never from a hand-built or carried copy. 9. **Verify with the audit.** STANDUP.md section 5: run `AUDIT.md` end to end. The repo is stood up only when it passes for its type, or its residual deltas are tracked in