Skip to content

[Docs] Adopt the Squad-Spec-Repository-Template squad and agent rules - #251

Merged
LarsLaskowski merged 6 commits into
mainfrom
claude/squad-spec-driven-dev-uu4pz4
Oct 3, 2026
Merged

LarsLaskowski merged 6 commits into
mainfrom
claude/squad-spec-driven-dev-uu4pz4

Conversation

@LarsLaskowski

@LarsLaskowski LarsLaskowski commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

Pull Request

📖 Description

Brings this repository onto the shared squad template LarsLaskowski/Squad-Spec-Repository-Template (profile dotnet). From now on, squad and agent rules are maintained there and refreshed here with its adopt-template skill.

Added

  • The squad (.squad/, .claude/agents/squad-*.md): Lead, Devil's Advocate, Security, Tester, Dev, Code Officer, Reviewer, driven by the skills squad-issue (issues) and squad-spec (features), plus create-pr and review-pr — identical under .claude/skills/, .agents/skills/ (Codex/GPT) and .github/skills/ (Copilot).
  • .squad/stack.md (toolchain and every command), .squad/project.md (security areas, guarantees, integration surface, test doubles), .squad/tools/ (analyzer gate over the build's SARIF log, coverage gate merging both test projects, config check), .squad/template.json.
  • docs/decisions/ with three process records (quality gates before the PR, squash merge, working records off main), specs/ templates, a SessionStart hook for cloud sessions.

Moved, not lost

  • ARCHITECTURE.md → docs/ARCHITECTURE.md (links rebased); .github/PULL_REQUEST_TEMPLATE.md → .github/pull_request_template.md (the UI checklist stays as a project block).
  • Project-specific text lives in the <!-- project:… --> blocks of CLAUDE.md, AGENTS.md, .github/copilot-instructions.md (incl. the @.github/instructions/csharp.instructions.md import), docs/CONTRIBUTING.md, docs/ARCHITECTURE.md, the bug report and the PR template. SECURITY.md is unchanged.

Changed behavior — please note

  1. Commits and pushes to a feature branch are allowed without asking (previously: never commit or push without explicit approval). main stays protected; PRs are opened only by the squad or on request.
  2. Pull requests are merged with Squash and merge; branches are updated by merging main (previously: rebase, never merge). The repository settings already allow squash only.
  3. The rule that PR text and commits must not mention an AI assistant is dropped, as in the other repositories; so are "no extra PR sections" and "no Validation/Testing section".
  4. fix-issue, publish-pr and rereview-pr are replaced by squad-issue, create-pr and review-pr. review-pr builds, tests and posts its review; reviews of an open PR also compare the description with the diff and read the SonarQube result (.squad/project.md). Branch names follow the new skills (e.g. fix-issue-<n>-<slug>).
  5. New local gates before a PR: analyzer gate (no diagnostic of any severity in a changed file) and coverage gate (≥ 80 % on new/changed lines and overall; tests and generated EF Core migrations excluded). SonarQube's coverage measure now excludes the migrations and squad tooling too, so its overall figure rises (78 % today, with migrations).
  6. .github/instructions/csharp.instructions.md: interface regions are named after the interface (#region IDisposable), matching the code.

Not changed: line endings (no .gitattributes was added — that would renormalize the whole repository and belongs in a change of its own), CI steps other than the Sonar exclusions, SECURITY.md.

🎫 Issues

None

👩‍💻 Reviewer Notes

The large diffs are the rebuilt instruction files and docs/ARCHITECTURE.md / docs/CONTRIBUTING.md: their project content is unchanged inside the project blocks. .squad/project.md collects what the old review skills checked (layering, ConfigureAwait(false), EF Core navigation assumptions).

reihitsu-format --check already reports 4 unformatted files under src/DockerUpdateGuard/Portainer/Data on main; this PR does not touch them.

📑 Test Plan

  • python3 .squad/tools/config-check.py passes.
  • python3 .squad/tools/analyzer-check.py passes; 501 tests pass; python3 .squad/tools/coverage-check.py passes (84.0 % overall, both test projects merged).
  • All links in the changed Markdown files resolve; no file gained CRLF line endings.

✅ Checklist

  • I have added or updated Unit Tests for the change. (not applicable, no code change)
  • I have tested my changes.
  • I have run Format and Build from .squad/stack.md, and the Analyzer gate reports no diagnostic in a changed file.
  • New or changed production code has at least 80 % line coverage, and overall coverage is at least 80 % (Coverage gate in .squad/stack.md).
  • I have updated the project documentation (README.md, ARCHITECTURE.md) to reflect my changes.
  • I have read the CONTRIBUTING documentation and followed the project's code style guidelines.
  • New dependencies, if any, were added the way Dependencies in .squad/stack.md prescribes. (none)

⏭ Next Steps

Optionally add a .gitattributes matching .editorconfig (end_of_line = crlf) in a change of its own.

claude added 5 commits October 3, 2026 12:57
The squad, its skills for Claude, Codex/GPT and Copilot and the shared agent rules now come from the template (dotnet profile); fix-issue, publish-pr and rereview-pr are replaced by squad-issue, create-pr and review-pr. Project knowledge moved into .squad/stack.md, .squad/project.md and the project blocks of the instruction files, docs/CONTRIBUTING.md, docs/ARCHITECTURE.md (moved from the repository root), the bug report and the pull request template. Three process decision records are added, the coverage gate excludes tests and generated migrations, and SonarQube's coverage measure excludes the squad tooling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xZzHGWbMaKfnCWeA4Lgj1
The coverage gate now merges every report it finds, one per test project, so Test with coverage removes TestResults first and the unit-test guide shows the same commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xZzHGWbMaKfnCWeA4Lgj1
SonarQube's coverage measure now excludes the generated EF Core migrations like the local coverage gate does, so both gates measure the same code. The C# instructions name interface regions after the interface as the code and stack.md already do, the testing rules defer to the project's test doubles (NSubstitute here), and the Serena memories point to docs/ARCHITECTURE.md and .squad/stack.md. Reviews compare the PR description with the diff and read the SonarQube result, as the former review skill did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xZzHGWbMaKfnCWeA4Lgj1
… command

Pre-push reviews run before a PR or Sonar result exists, so project.md now asks only reviews of an open pull request to compare the description and read the SonarQube result. The Serena memory gives the PowerShell form of Test with coverage, because the stack.md command uses rm -rf and &&.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xZzHGWbMaKfnCWeA4Lgj1
The template changes this adoption needed are merged, so .squad/template.json points at the template's main commit that the next refresh starts from.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xZzHGWbMaKfnCWeA4Lgj1
The coverage gate's main() is split into helpers in the template, which clears SonarQube Cloud's
python:S3776 finding on coverage-check.py. The gate's output is unchanged. The template record now points
to the template commit carrying the change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xZzHGWbMaKfnCWeA4Lgj1
@sonarqubecloud

sonarqubecloud Bot commented Oct 3, 2026

Copy link
Copy Markdown

@LarsLaskowski
LarsLaskowski merged commit 2b2674e into main Oct 3, 2026
4 checks passed
@LarsLaskowski
LarsLaskowski deleted the claude/squad-spec-driven-dev-uu4pz4 branch October 3, 2026 13:24
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