Skip to content

Commit 8885e7c

Browse files
committed
Merge upstream/dev into main
Resolve 10 conflicts by taking dev's version (milestones 10-15): - BaseStyledComponent.cs: Add ThemeConfiguration cascading parameter - BaseWebFormsComponent.cs: Un-obsolete SkinID for theming support - Button.razor.cs: Un-obsolete UseSubmitBehavior, default true - BulletedList.razor: Use GetStartAttribute() for ordered list - CheckBox.razor: Remove wrapping span, attrs on input (HTML fidelity) - GridView.razor: Add border and border-collapse style - LinkButton.razor: Add href=javascript:void(0) and CSS class - Menu.razor: Add table rendering mode - ToolTipTests.razor: Match CheckBox HTML structure change - MILESTONE12-PLAN.md: Accept renumbering to M14
2 parents e4ae43e + 65aedc0 commit 8885e7c

1,027 files changed

Lines changed: 22174 additions & 1274 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Constraint Budget Tracking
2+
3+
When the user or system imposes constraints (question limits, revision limits, time budgets), maintain a visible counter in your responses and in the artifact.
4+
5+
## Format
6+
7+
```
8+
📊 Clarifying questions used: 2 / 3
9+
```
10+
11+
## Rules
12+
13+
- Update the counter each time the constraint is consumed
14+
- When a constraint is exhausted, state it: `📊 Question budget exhausted (3/3). Proceeding with current information.`
15+
- If no constraints are active, do not display counters
16+
- Include the final constraint status in multi-agent artifacts
17+
18+
## Example Session
19+
20+
```
21+
Coordinator: Spawning agents to analyze requirements...
22+
📊 Clarifying questions used: 0 / 3
23+
24+
Agent asks clarification: "Should we support OAuth?"
25+
Coordinator: Checking with user...
26+
📊 Clarifying questions used: 1 / 3
27+
28+
Agent asks clarification: "What's the rate limit?"
29+
Coordinator: Checking with user...
30+
📊 Clarifying questions used: 2 / 3
31+
32+
Agent asks clarification: "Do we need RBAC?"
33+
Coordinator: Checking with user...
34+
📊 Clarifying questions used: 3 / 3
35+
36+
Agent asks clarification: "Should we cache responses?"
37+
Coordinator: 📊 Question budget exhausted (3/3). Proceeding without clarification.
38+
```
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Copilot Coding Agent — Squad Instructions
2+
3+
You are working on a project that uses **Squad**, an AI team framework. When picking up issues autonomously, follow these guidelines.
4+
5+
## Team Context
6+
7+
Before starting work on any issue:
8+
9+
1. Read `.squad/team.md` for the team roster, member roles, and your capability profile.
10+
2. Read `.squad/routing.md` for work routing rules.
11+
3. If the issue has a `squad:{member}` label, read that member's charter at `.squad/agents/{member}/charter.md` to understand their domain expertise and coding style — work in their voice.
12+
13+
## Capability Self-Check
14+
15+
Before starting work, check your capability profile in `.squad/team.md` under the **Coding Agent → Capabilities** section.
16+
17+
- **🟢 Good fit** — proceed autonomously.
18+
- **🟡 Needs review** — proceed, but note in the PR description that a squad member should review.
19+
- **🔴 Not suitable** — do NOT start work. Instead, comment on the issue:
20+
```
21+
🤖 This issue doesn't match my capability profile (reason: {why}). Suggesting reassignment to a squad member.
22+
```
23+
24+
## Branch Naming
25+
26+
Use the squad branch convention:
27+
```
28+
squad/{issue-number}-{kebab-case-slug}
29+
```
30+
Example: `squad/42-fix-login-validation`
31+
32+
## PR Guidelines
33+
34+
When opening a PR:
35+
- Reference the issue: `Closes #{issue-number}`
36+
- If the issue had a `squad:{member}` label, mention the member: `Working as {member} ({role})`
37+
- If this is a 🟡 needs-review task, add to the PR description: `⚠️ This task was flagged as "needs review" — please have a squad member review before merging.`
38+
- Follow any project conventions in `.squad/decisions.md`
39+
40+
## Decisions
41+
42+
If you make a decision that affects other team members, write it to:
43+
```
44+
.squad/decisions/inbox/copilot-{brief-slug}.md
45+
```
46+
The Scribe will merge it into the shared decisions file.

.ai-team-templates/identity/now.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
updated_at: {timestamp}
3+
focus_area: {brief description}
4+
active_issues: []
5+
---
6+
7+
# What We're Focused On
8+
9+
{Narrative description of current focus — 1-3 sentences. Updated by coordinator at session start.}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
last_updated: {timestamp}
3+
---
4+
5+
# Team Wisdom
6+
7+
Reusable patterns and heuristics learned through work. NOT transcripts — each entry is a distilled, actionable insight.
8+
9+
## Patterns
10+
11+
<!-- Append entries below. Format: **Pattern:** description. **Context:** when it applies. -->
12+
13+
## Anti-Patterns
14+
15+
<!-- Things we tried that didn't work. **Avoid:** description. **Why:** reason. -->

.ai-team-templates/mcp-config.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# MCP Integration — Configuration and Samples
2+
3+
MCP (Model Context Protocol) servers extend Squad with tools for external services — Trello, Aspire dashboards, Azure, Notion, and more. The user configures MCP servers in their environment; Squad discovers and uses them.
4+
5+
> **Full patterns:** Read `.squad/skills/mcp-tool-discovery/SKILL.md` for discovery patterns, domain-specific usage, and graceful degradation.
6+
7+
## Config File Locations
8+
9+
Users configure MCP servers at these locations (checked in priority order):
10+
1. **Repository-level:** `.copilot/mcp-config.json` (team-shared, committed to repo)
11+
2. **Workspace-level:** `.vscode/mcp.json` (VS Code workspaces)
12+
3. **User-level:** `~/.copilot/mcp-config.json` (personal)
13+
4. **CLI override:** `--additional-mcp-config` flag (session-specific)
14+
15+
## Sample Config — Trello
16+
17+
```json
18+
{
19+
"mcpServers": {
20+
"trello": {
21+
"command": "npx",
22+
"args": ["-y", "@trello/mcp-server"],
23+
"env": {
24+
"TRELLO_API_KEY": "${TRELLO_API_KEY}",
25+
"TRELLO_TOKEN": "${TRELLO_TOKEN}"
26+
}
27+
}
28+
}
29+
}
30+
```
31+
32+
## Sample Config — GitHub
33+
34+
```json
35+
{
36+
"mcpServers": {
37+
"github": {
38+
"command": "npx",
39+
"args": ["-y", "@modelcontextprotocol/server-github"],
40+
"env": {
41+
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
42+
}
43+
}
44+
}
45+
}
46+
```
47+
48+
## Sample Config — Azure
49+
50+
```json
51+
{
52+
"mcpServers": {
53+
"azure": {
54+
"command": "npx",
55+
"args": ["-y", "@azure/mcp-server"],
56+
"env": {
57+
"AZURE_SUBSCRIPTION_ID": "${AZURE_SUBSCRIPTION_ID}",
58+
"AZURE_CLIENT_ID": "${AZURE_CLIENT_ID}",
59+
"AZURE_CLIENT_SECRET": "${AZURE_CLIENT_SECRET}",
60+
"AZURE_TENANT_ID": "${AZURE_TENANT_ID}"
61+
}
62+
}
63+
}
64+
}
65+
```
66+
67+
## Sample Config — Aspire
68+
69+
```json
70+
{
71+
"mcpServers": {
72+
"aspire": {
73+
"command": "npx",
74+
"args": ["-y", "@aspire/mcp-server"],
75+
"env": {
76+
"ASPIRE_DASHBOARD_URL": "${ASPIRE_DASHBOARD_URL}"
77+
}
78+
}
79+
}
80+
}
81+
```
82+
83+
## Authentication Notes
84+
85+
- **GitHub MCP requires a separate token** from the `gh` CLI auth. Generate at https://github.com/settings/tokens
86+
- **Trello requires API key + token** from https://trello.com/power-ups/admin
87+
- **Azure requires service principal credentials** — see Azure docs for setup
88+
- **Aspire uses the dashboard URL** — typically `http://localhost:18888` during local dev
89+
90+
Auth is a real blocker for some MCP servers. Users need separate tokens for GitHub MCP, Azure MCP, Trello MCP, etc. This is a documentation problem, not a code problem.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Multi-Agent Artifact Format
2+
3+
When multiple agents contribute to a final artifact (document, analysis, design), use this format. The assembled result must include:
4+
5+
- Termination condition
6+
- Constraint budgets (if active)
7+
- Reviewer verdicts (if any)
8+
- Raw agent outputs appendix
9+
10+
## Assembly Structure
11+
12+
The assembled result goes at the top. Below it, include:
13+
14+
```
15+
## APPENDIX: RAW AGENT OUTPUTS
16+
17+
### {Name} ({Role}) — Raw Output
18+
{Paste agent's verbatim response here, unedited}
19+
20+
### {Name} ({Role}) — Raw Output
21+
{Paste agent's verbatim response here, unedited}
22+
```
23+
24+
## Appendix Rules
25+
26+
This appendix is for diagnostic integrity. Do not edit, summarize, or polish the raw outputs. The Coordinator may not rewrite raw agent outputs; it may only paste them verbatim and assemble the final artifact above.
27+
28+
See `.squad/templates/run-output.md` for the complete output format template.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Plugin Marketplace
2+
3+
Plugins are curated agent templates, skills, instructions, and prompts shared by the community via GitHub repositories (e.g., `github/awesome-copilot`, `anthropics/skills`). They provide ready-made expertise for common domains — cloud platforms, frameworks, testing strategies, etc.
4+
5+
## Marketplace State
6+
7+
Registered marketplace sources are stored in `.squad/plugins/marketplaces.json`:
8+
9+
```json
10+
{
11+
"marketplaces": [
12+
{
13+
"name": "awesome-copilot",
14+
"source": "github/awesome-copilot",
15+
"added_at": "2026-02-14T00:00:00Z"
16+
}
17+
]
18+
}
19+
```
20+
21+
## CLI Commands
22+
23+
Users manage marketplaces via the CLI:
24+
- `squad plugin marketplace add {owner/repo}` — Register a GitHub repo as a marketplace source
25+
- `squad plugin marketplace remove {name}` — Remove a registered marketplace
26+
- `squad plugin marketplace list` — List registered marketplaces
27+
- `squad plugin marketplace browse {name}` — List available plugins in a marketplace
28+
29+
## When to Browse
30+
31+
During the **Adding Team Members** flow, AFTER allocating a name but BEFORE generating the charter:
32+
33+
1. Read `.squad/plugins/marketplaces.json`. If the file doesn't exist or `marketplaces` is empty, skip silently.
34+
2. For each registered marketplace, search for plugins whose name or description matches the new member's role or domain keywords.
35+
3. Present matching plugins to the user: *"Found '{plugin-name}' in {marketplace} marketplace — want me to install it as a skill for {CastName}?"*
36+
4. If the user accepts, install the plugin (see below). If they decline or skip, proceed without it.
37+
38+
## How to Install a Plugin
39+
40+
1. Read the plugin content from the marketplace repository (the plugin's `SKILL.md` or equivalent).
41+
2. Copy it into the agent's skills directory: `.squad/skills/{plugin-name}/SKILL.md`
42+
3. If the plugin includes charter-level instructions (role boundaries, tool preferences), merge those into the agent's `charter.md`.
43+
4. Log the installation in the agent's `history.md`: *"📦 Plugin '{plugin-name}' installed from {marketplace}."*
44+
45+
## Graceful Degradation
46+
47+
- **No marketplaces configured:** Skip the marketplace check entirely. No warning, no prompt.
48+
- **Marketplace unreachable:** Warn the user (*"⚠ Couldn't reach {marketplace} — continuing without it"*) and proceed with team member creation normally.
49+
- **No matching plugins:** Inform the user (*"No matching plugins found in configured marketplaces"*) and proceed.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Squad CI
2+
3+
on:
4+
pull_request:
5+
branches: [dev, preview, main, insider]
6+
types: [opened, synchronize, reopened]
7+
push:
8+
branches: [dev, insider]
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
test:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- uses: actions/setup-node@v4
20+
with:
21+
node-version: 22
22+
23+
- name: Run tests
24+
run: node --test test/*.test.js
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Squad Docs — Build & Deploy
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: [preview]
7+
paths:
8+
- 'docs/**'
9+
- '.github/workflows/squad-docs.yml'
10+
11+
permissions:
12+
contents: read
13+
pages: write
14+
id-token: write
15+
16+
concurrency:
17+
group: pages
18+
cancel-in-progress: true
19+
20+
jobs:
21+
build:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- uses: actions/setup-node@v4
27+
with:
28+
node-version: '22'
29+
30+
- name: Install build dependencies
31+
run: npm install --no-save markdown-it markdown-it-anchor
32+
33+
- name: Build docs site
34+
run: node docs/build.js --out _site --base /squad
35+
36+
- name: Upload Pages artifact
37+
uses: actions/upload-pages-artifact@v3
38+
with:
39+
path: _site
40+
41+
deploy:
42+
needs: build
43+
runs-on: ubuntu-latest
44+
environment:
45+
name: github-pages
46+
url: ${{ steps.deployment.outputs.page_url }}
47+
steps:
48+
- name: Deploy to GitHub Pages
49+
id: deployment
50+
uses: actions/deploy-pages@v4

0 commit comments

Comments
 (0)