Align sync issue generation with Issue #29 format and remove preview/insider branch sync paths - #101
Conversation
e2e-template-testing skill across mirrored template surfaces
|
@copilot there are still more upstream changes in commits that have been made on the upstream squad repo on the dev branch that we don't have implemented. I need those accounted for. |
Implemented additional upstream-accounting updates in This adds the upstream-aligned template E2E guidance to |
e2e-template-testing skill across mirrored template surfacese2e-template-testing skill and E2E contributor guidance
e2e-template-testing skill and E2E contributor guidanceCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…8, upstream/dev@6a72634) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…v@aa9e8a5, upstream/dev@66c4a72) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…up rules (upstream/dev@fe1e7e8, upstream/dev@8a62093) - Expand coordinator skill-aware routing to scan 5 skill paths in precedence order - Add traversal safety: single-level scan, reject symlinks/reparse points - Add dedup rules: case-insensitive, NFC normalization, reserved-name checks - Add personal-path exclusion rationale for CLI-only injection - Applied uniformly across .github/agents/squad.agent.md, .squad/templates/squad.agent.md, src/Templates/squad.agent.md.template Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR expands Squad’s template and sharing capabilities by adding an end-to-end template testing skill/workflow, improving coordinator template guidance (team root resolution + skill path routing rules), and preserving top-level squad files during sharing export/import.
Changes:
- Add top-level file support (
team.md,decisions.md,routing.md) to sharing export/import, including empty-file round trips. - Add E2E template testing skill + CONTRIBUTING guidance, and update template consistency tests accordingly.
- Update coordinator templates and sync-check workflows (new issue format, disable preview sync).
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Squad.SDK.NET.Tests/RepositoryTemplateConsistencyTests.cs | Tracks new skill template file paths and adds a CONTRIBUTING.md expectation test. |
| tests/Squad.SDK.NET.Tests/AdvancedModulesTests.cs | Adds regression tests for exporting/importing top-level files (including empty files). |
| src/Squad.SDK.NET/Templates/squad.agent.md.template | Updates coordinator template guidance (team root resolution, skill routing rules, work freshness, post-work budget). |
| src/Squad.SDK.NET/Templates/skills/e2e-template-testing/SKILL.md | Adds a new skill documenting E2E validation for template changes. |
| src/Squad.SDK.NET/Sharing/SquadImporter.cs | Includes the deserialized payload on successful import. |
| src/Squad.SDK.NET/Sharing/SquadExporter.cs | Adds topLevelFiles payload support to exports and export-to-file. |
| src/Squad.SDK.NET/Sharing/SharingTypes.cs | Extends sharing DTOs with TopLevelFiles and ImportedSquad. |
| src/Squad.SDK.NET/Sharing/SharingJsonContext.cs | Adds source-gen metadata for dictionary serialization. |
| CONTRIBUTING.md | Documents the E2E template testing workflow and references the new skill. |
| .squad/templates/squad.agent.md | Mirrors coordinator template guidance updates for the repo-managed template. |
| .squad/templates/skills/e2e-template-testing/SKILL.md | Adds the E2E template testing skill into squad templates. |
| .github/workflows/sync-check.yml | Updates sync issue body format and adds a clearer completion checklist/state table. |
| .github/workflows/sync-check-preview.yml | Disables preview sync workflow execution. |
| .github/agents/squad.agent.md | Mirrors coordinator template guidance updates for GitHub Agents surface. |
| .copilot/skills/upstream-dev-sync/SKILL.md | Adds a skill documenting the upstream dev sync/porting process for this repo. |
| .copilot/skills/e2e-template-testing/SKILL.md | Adds the E2E template testing skill to Copilot skills. |
| .changeset/sync-sharing-top-level-files.md | Declares a patch release for top-level file sharing support. |
| .changeset/skill-routing-parity.md | Declares a patch release for skill-routing parity changes. |
| public async Task ExportToFileAsync( | ||
| SquadConfig config, | ||
| string filePath, | ||
| string? author = null, | ||
| IReadOnlyDictionary<string, string?>? topLevelFiles = null, | ||
| CancellationToken cancellationToken = default) |
| private static IReadOnlyDictionary<string, string> NormalizeTopLevelFiles( | ||
| IReadOnlyDictionary<string, string?>? topLevelFiles) | ||
| { | ||
| if (topLevelFiles is null || topLevelFiles.Count == 0) | ||
| return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); | ||
|
|
||
| var normalized = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); | ||
| foreach (var (key, value) in topLevelFiles) | ||
| { | ||
| if (string.IsNullOrWhiteSpace(key)) | ||
| continue; | ||
|
|
||
| normalized[key] = value ?? string.Empty; | ||
| } |
| /// <summary> | ||
| /// Gets exported top-level squad files (for example <c>team.md</c>, <c>decisions.md</c>, and <c>routing.md</c>). | ||
| /// Values may be empty strings when the source file existed but had no content. | ||
| /// </summary> | ||
| public IReadOnlyDictionary<string, string> TopLevelFiles { get; init; } = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); |
| --- | ||
| "squad.sdk.net": patch | ||
| --- |
| Check .copilot/skills/ for copilot-level skills (process, workflow, protocol). | ||
| Check .squad/skills/ for team-level skills (patterns discovered during work). | ||
| Read any relevant SKILL.md files before working. |
| Squad's coordinator prompt (`squad.agent.md`) and agent charters (e.g. | ||
| `scribe-charter.md`) are shipped as templates in `.squad-templates/`. Changes to | ||
| these files affect how every squad session behaves — but unit tests can't catch | ||
| prompt-level regressions because the prompts are interpreted by an LLM at | ||
| runtime. |
Sync issues now follow the richer, action-oriented format used in Issue #29 so porting work is clearly scoped and trackable. In parallel, sync automation was constrained to the active branch model by removing preview/insider branch sync behavior.
Issue body format parity (Issue Sync: upstream dev changes — 2026-04-10 #29 style)
.github/workflows/sync-check.ymlissue body generation to emit:...changes detected...to...changes...to match the established style.Branch model correction (no preview/insider sync)
sync-check.yml.Preview workflow behavior
.github/workflows/sync-check-preview.ymlinto an explicit no-op workflow (manual trigger only) so no sync attempt is made against non-existent preview/insider upstream branches.