Skip to content

Coordinator should detect and enforce all three tooling layers (local skills, global MCP, global Copilot skills) #330

Closed

Description

@spboyer

Problem

During a real-world build session (FastAPI + AKS Automatic + PostgreSQL + ACR deployed via `azd up`), the Squad coordinator had three layers of tooling available but used none of them:

  1. Global MCP tools (`azure-mcp-get_azure_bestpractices`, `azure-mcp-aks`, `azure-mcp-documentation`, etc.) — 8+ tools available, zero called
  2. Global Copilot skills (`azure-ai`, `appinsights-instrumentation`, etc.) — available via `<available_skills>`, never considered
  3. Local project skills (`.squad/skills/`) — blank template, expected for a new project

This led to 13 deployment fix commits out of 18 total — most avoidable with a single pre-flight query.

Root Cause — Three Distinct Gaps in squad.agent.md

Gap 1: MCP Tools — Detected but Not Enforced

The coordinator's MCP Integration section says to detect `azure_*` tools and pass them to agents via an `MCP TOOLS AVAILABLE` block. But:

  • There's no rule enforcing a research-before-build step for Azure infrastructure work
  • The coordinator routes directly to the infra agent without querying best practices first
  • The MCP block is "include if detected" — not "must call before routing"

Gap 2: Global Copilot Skills — Completely Invisible

The coordinator's Skill-aware routing says: "check `.squad/skills/` for skills relevant to the task domain."

This is local skills only. The globally-installed Copilot skills provided via `<available_skills>` in the environment (like `azure-ai`, `appinsights-instrumentation`) are:

  • ❌ Not detected by the coordinator
  • ❌ Not passed to spawned agents
  • ❌ Not used as routing signals
  • ❌ Not mentioned anywhere in the spawn template

These global skills are fundamentally different from local project skills — they're installed at the user/system level and provide domain expertise that any agent could use. The coordinator has no concept of them.

Gap 3: No Layered Tooling Model

The coordinator doesn't distinguish between these three layers:

Layer Source When Available Example Coordinator Awareness
Local skills `.squad/skills/` After team discovers patterns "Our Bicep files use `environmentName` prefix" ✅ Checked during routing
Global MCP tools User's MCP config Always (if configured) `azure-mcp-aks`, `azure-mcp-documentation` ⚠️ Detected but not enforced
Global Copilot skills `<available_skills>` Always (if installed) `azure-ai`, `appinsights-instrumentation` ❌ Completely invisible

Without this layered model, the coordinator treats "we had no local skills" as "we had no tools" — which was wrong. Platform knowledge was available from day one via MCP tools and global skills.

Proposed Fix

1. Add a Tooling Awareness section to squad.agent.md

Define the three-layer model so the coordinator understands what's available:

```markdown

Tooling Awareness — Three Layers

The coordinator must be aware of three distinct layers of tooling:

  1. Local project skills (`.squad/skills/`) — team-earned patterns, checked during routing
  2. Global MCP tools (detected by tool prefix) — platform API access, passed to agents via MCP block
  3. Global Copilot skills (`<available_skills>`) — domain expertise, passed to agents when relevant

All three layers should inform routing decisions and agent spawn prompts.
```

2. Add Global Skills detection and passthrough

Add to the spawn template an optional `GLOBAL SKILLS AVAILABLE` block (similar to the existing `MCP TOOLS` block):

```
{only if relevant global skills detected in <available_skills>:}
GLOBAL SKILLS AVAILABLE:

  • {skill-name}: {description}
    Call the `skill` tool with the skill name if this domain is relevant to your task.
    {end block}
    ```

3. Add Azure Pre-Flight Rule to Routing

Signal Action
Azure infra work (Bicep, AKS, ACR, azd, ARM) Pre-flight: Coordinator calls `azure-mcp-get_azure_bestpractices` BEFORE spawning the infra agent. Include results in spawn prompt as `AZURE BEST PRACTICES:` block.

4. Update Skill-aware routing

Change from:

"check `.squad/skills/` for skills relevant to the task domain"

To:

"check `.squad/skills/` (local) AND `<available_skills>` (global) for skills relevant to the task domain. Include both in spawn prompts when matched."

Evidence

Full session documented in `LESSONS-LEARNED.md` at https://github.com/shboyer/gartner-march.

Deployment failures mapped to tools that would have prevented them

Failure Fix Commits Tool Layer Specific Tool
K8s version 1.29/1.31 LTS-only 3 commits Global MCP `azure-mcp-aks` get-versions
AKS Automatic requirements 2 commits Global MCP `azure-mcp-get_azure_bestpractices`
azd env var naming (AZURE_ prefix) 3 commits Global MCP `azure-mcp-documentation`
Deployment safeguards (seccomp, no :latest) 1 commit Global MCP `azure-mcp-documentation`
Image reference pattern 1 commit Global MCP `azure-mcp-documentation`
RBAC Cluster Admin requirement 1 commit Global MCP `azure-mcp-get_azure_bestpractices`
OMS agent deprecated 1 commit Global Skill `appinsights-instrumentation` skill
PostgreSQL region restrictions 2 commits Global MCP `azure-mcp-postgres`

Conservative estimate: 11 of 13 fix commits avoidable by using available tools before writing code.

Labels

Coordinator governance fix — changes only `squad.agent.md`, no code changes needed. Affects both MCP Integration and Skill-aware routing sections.

Activity

  1. changed the title [-]Coordinator should enforce Azure MCP pre-flight before infra work[/-] [+]Coordinator should detect and enforce all three tooling layers (local skills, global MCP, global Copilot skills)[/+] on Mar 10, 2026
  2. added a commit that references this issue on Mar 11, 2026
    e5f73f0
  3. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    🏗️ Squad Triage — Flight (Lead)

    Issue: #330 — Coordinator should detect and enforce all three tooling layers (local skills, global MCP, global Copilot skills)
    Assigned to: FIDO (Quality Owner)
    Reason: Issue relates to testing/quality work

    @copilot evaluation: 🔴 Not suitable — issue involves work outside the coding agent's capability profile.

    Team roster:

    • Flight (Lead) → label: squad:flight
    • Procedures (Prompt Engineer) → label: squad:procedures
    • EECOM (Core Dev) → label: squad:eecom
    • FIDO (Quality Owner) → label: squad:fido
    • PAO (DevRel) → label: squad:pao
    • CAPCOM (SDK Expert) → label: squad:capcom
    • CONTROL (TypeScript Engineer) → label: squad:control
    • Surgeon (Release Manager) → label: squad:surgeon
    • Booster (CI/CD Engineer) → label: squad:booster
    • GNC (Node.js Runtime) → label: squad:gnc
    • Network (Distribution) → label: squad:network
    • RETRO (Security) → label: squad:retro
    • INCO (CLI UX & Visual Design) → label: squad:inco
    • GUIDO (VS Code Extension) → label: squad:guido
    • Telemetry (Aspire & Observability) → label: squad:telemetry
    • VOX (REPL & Interactive Shell) → label: squad:vox
    • DSKY (TUI Engineer) → label: squad:dsky
    • Sims (E2E Test Engineer) → label: squad:sims
    • Handbook (SDK Usability) → label: squad:handbook
    • Ralph (Work Monitor) → label: squad:ralph
    • @copilot (Coding Agent) → label: squad:copilot

    To reassign, remove the current squad:* label and add the correct one.

  4. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    📋 Assigned to Flight (Lead)

    Issue: #330 — Coordinator should detect and enforce all three tooling layers (local skills, global MCP, global Copilot skills)

    Flight will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    Flight, work on issue #330

  5. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    📋 Assigned to Procedures (Prompt Engineer)

    Issue: #330 — Coordinator should detect and enforce all three tooling layers (local skills, global MCP, global Copilot skills)

    Procedures will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    Procedures, work on issue #330

  6. bradygaster commented on Mar 16, 2026

    @bradygaster
    Collaborator

    🔗 Linked with #354 — these two must ship together as a single body of work.

    Decision (bradygaster): This is now the team's top priority. All efforts focused here until it ships. No next release without this landing.

    The three-layer tooling model (#330) defines what the coordinator needs to know. The skills migration (#354) defines where skills live so Copilot can discover them. One without the other is incomplete.

    Execution plan:

    1. Prototype MCP tool inheritance — do spawned agents actually get MCP tools from the parent session?
    2. Move skills .squad/skills/\ → .copilot/skills/\ (governance + SDK + upgrade migration)
    3. Add three-layer awareness to coordinator (local skills + global MCP + global Copilot skills)
    4. Pre-flight research rule for platform-specific work (Azure, etc.)
    5. Backward compat fallback for one version

    cc #354

  7. deleted a comment from github-actions on Mar 18, 2026
  8. deleted a comment from github-actions on Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    go:needs-researchNeeds investigationpriority:p1This sprintsquadSquad triage inbox — Lead will assign to a membertype:featureNew capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions