Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
b682e40
docs(ai-team): LinkedIn provider planning session
csharpfritz Feb 18, 2026
77cc03d
fix: waterfall CSS/HTML rendering issues
csharpfritz Feb 18, 2026
2da5f39
feat: Add LinkedIn social media provider (#LinkedIn)
csharpfritz Feb 18, 2026
86cc0eb
docs(ai-team): LinkedIn provider implementation session
csharpfritz Feb 18, 2026
eafa18f
feat: Add event display screen and update docs
csharpfritz Feb 18, 2026
bf7ac2c
docs(ai-team): Event display and docs session
csharpfritz Feb 18, 2026
15f6458
chore: add Squad AI team infrastructure and workflows
csharpfritz Feb 19, 2026
380561e
style: apply dotnet format whitespace fixes
csharpfritz Feb 19, 2026
7fc89eb
docs(ai-team): LinkedIn token UI session
csharpfritz Feb 19, 2026
e86a0fc
fix: make LinkedIn OAuth tokens read-only in admin UI
csharpfritz Feb 19, 2026
5a8a439
fix: remove AntiforgeryToken from LinkedIn interactive config form
csharpfritz Feb 19, 2026
91078f5
chore: remove squad-main-guard workflow
csharpfritz Feb 19, 2026
376d2cf
fix: add FormName and restore AntiforgeryToken on LinkedIn config form
csharpfritz Feb 19, 2026
f2d2498
fix: disable prerendering on Providers page to resolve antiforgery er…
csharpfritz Feb 19, 2026
ae383bb
revert: restore prerendering on Providers page
csharpfritz Feb 19, 2026
c8bb63a
fix: resolve antiforgery token error on LinkedIn config form
csharpfritz Feb 19, 2026
7ad9441
set global.json to latest minor
csharpfritz Feb 19, 2026
5cdc892
fix: add AntiforgeryToken to LinkedIn config UI to match working prov…
csharpfritz Feb 19, 2026
0ac4d6c
docs: update Symmetra history and team decisions for antiforgery fix
csharpfritz Feb 19, 2026
e62510f
Revert "set global.json to latest minor"
csharpfritz Feb 19, 2026
0c0398d
docs(ai-team): log antiforgery fix session and merge decisions
csharpfritz Feb 19, 2026
2055354
fix: enable LinkedIn Save button and restore Users page rendering
csharpfritz Feb 19, 2026
875a926
set global.json to latest minor
csharpfritz Feb 19, 2026
32fc159
docs(ai-team): merge global.json directive and log session
csharpfritz Feb 19, 2026
784cad3
fix: replace UseStaticFiles with MapStaticAssets for .NET 10
csharpfritz Feb 19, 2026
55ba505
feat: add LinkedIn OAuth token acquisition flow
csharpfritz Feb 19, 2026
934968a
docs(ai-team): log LinkedIn OAuth session and merge decisions
csharpfritz Feb 19, 2026
80eedf0
fix: remove r_organization_social scope from LinkedIn OAuth
csharpfritz Feb 19, 2026
05e3682
feat: expand initial content lookback from 1 hour to 7 days
csharpfritz Feb 19, 2026
6a702c8
fix: enlarge moderation action panel and prevent clipping
csharpfritz Feb 19, 2026
fcdbb39
fix: use valid LinkedIn API endpoint and update version to 202506
csharpfritz Feb 19, 2026
5a1f0b2
fix: add r_member_social scope and improve LinkedIn API logging
csharpfritz Feb 19, 2026
2808389
fix: add OAuth debug logging at Information level
csharpfritz Feb 19, 2026
5e981d0
fix: remove openid/profile scopes and use /v2/me for member URN
csharpfritz Feb 19, 2026
4a55a04
fix: add debug-auth endpoint to diagnose LinkedIn OAuth redirect_uri
csharpfritz Feb 19, 2026
d229d71
fix: add configurable RedirectUri and remove unnecessary w_member_soc…
csharpfritz Feb 19, 2026
e3e2d30
fix: use consistent API version in ResolveMemberUrn and add error log…
csharpfritz Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .ai-team-templates/casting-history.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"universe_usage_history": [],
"assignment_cast_snapshots": {}
}
35 changes: 35 additions & 0 deletions .ai-team-templates/casting-policy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"casting_policy_version": "1.1",
"allowlist_universes": [
"The Usual Suspects",
"Reservoir Dogs",
"Alien",
"Ocean's Eleven",
"Arrested Development",
"Star Wars",
"The Matrix",
"Firefly",
"The Goonies",
"The Simpsons",
"Breaking Bad",
"Lost",
"Marvel Cinematic Universe",
"DC Universe"
],
"universe_capacity": {
"The Usual Suspects": 6,
"Reservoir Dogs": 8,
"Alien": 8,
"Ocean's Eleven": 14,
"Arrested Development": 15,
"Star Wars": 12,
"The Matrix": 10,
"Firefly": 10,
"The Goonies": 8,
"The Simpsons": 20,
"Breaking Bad": 12,
"Lost": 18,
"Marvel Cinematic Universe": 25,
"DC Universe": 18
}
}
3 changes: 3 additions & 0 deletions .ai-team-templates/casting-registry.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"agents": {}
}
41 changes: 41 additions & 0 deletions .ai-team-templates/ceremonies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Ceremonies

> Team meetings that happen before or after work. Each squad configures their own.

## Design Review

| Field | Value |
|-------|-------|
| **Trigger** | auto |
| **When** | before |
| **Condition** | multi-agent task involving 2+ agents modifying shared systems |
| **Facilitator** | lead |
| **Participants** | all-relevant |
| **Time budget** | focused |
| **Enabled** | ✅ yes |

**Agenda:**
1. Review the task and requirements
2. Agree on interfaces and contracts between components
3. Identify risks and edge cases
4. Assign action items

---

## Retrospective

| Field | Value |
|-------|-------|
| **Trigger** | auto |
| **When** | after |
| **Condition** | build failure, test failure, or reviewer rejection |
| **Facilitator** | lead |
| **Participants** | all-involved |
| **Time budget** | focused |
| **Enabled** | ✅ yes |

**Agenda:**
1. What happened? (facts only)
2. Root cause analysis
3. What should change?
4. Action items for next iteration
53 changes: 53 additions & 0 deletions .ai-team-templates/charter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# {Name} — {Role}

> {One-line personality statement — what makes this person tick}

## Identity

- **Name:** {Name}
- **Role:** {Role title}
- **Expertise:** {2-3 specific skills relevant to the project}
- **Style:** {How they communicate — direct? thorough? opinionated?}

## What I Own

- {Area of responsibility 1}
- {Area of responsibility 2}
- {Area of responsibility 3}

## How I Work

- {Key approach or principle 1}
- {Key approach or principle 2}
- {Pattern or convention I follow}

## Boundaries

**I handle:** {types of work this agent does}

**I don't handle:** {types of work that belong to other team members}

**When I'm unsure:** I say so and suggest who might know.

**If I review others' work:** On rejection, I may require a different agent to revise (not the original author) or request a new specialist be spawned. The Coordinator enforces this.

## Model

- **Preferred:** auto
- **Rationale:** Coordinator selects the best model based on task type — cost first unless writing code
- **Fallback:** Standard chain — the coordinator handles fallback automatically

## Collaboration

Before starting work, run `git rev-parse --show-toplevel` to find the repo root, or use the `TEAM ROOT` provided in the spawn prompt. All `.ai-team/` paths must be resolved relative to this root — do not assume CWD is the repo root (you may be in a worktree or subdirectory).

Before starting work, read `.ai-team/decisions.md` for team decisions that affect me.
After making a decision others should know, write it to `.ai-team/decisions/inbox/{my-name}-{brief-slug}.md` — the Scribe will merge it.
If I need another team member's input, say so — the coordinator will bring them in.

## Voice

{1-2 sentences describing personality. Not generic — specific. This agent has OPINIONS.
They have preferences. They push back. They have a style that's distinctly theirs.
Example: "Opinionated about test coverage. Will push back if tests are skipped.
Prefers integration tests over mocks. Thinks 80% coverage is the floor, not the ceiling."}
46 changes: 46 additions & 0 deletions .ai-team-templates/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copilot Coding Agent — Squad Instructions

You are working on a project that uses **Squad**, an AI team framework. When picking up issues autonomously, follow these guidelines.

## Team Context

Before starting work on any issue:

1. Read `.ai-team/team.md` for the team roster, member roles, and your capability profile.
2. Read `.ai-team/routing.md` for work routing rules.
3. If the issue has a `squad:{member}` label, read that member's charter at `.ai-team/agents/{member}/charter.md` to understand their domain expertise and coding style — work in their voice.

## Capability Self-Check

Before starting work, check your capability profile in `.ai-team/team.md` under the **Coding Agent → Capabilities** section.

- **🟢 Good fit** — proceed autonomously.
- **🟡 Needs review** — proceed, but note in the PR description that a squad member should review.
- **🔴 Not suitable** — do NOT start work. Instead, comment on the issue:
```
🤖 This issue doesn't match my capability profile (reason: {why}). Suggesting reassignment to a squad member.
```

## Branch Naming

Use the squad branch convention:
```
squad/{issue-number}-{kebab-case-slug}
```
Example: `squad/42-fix-login-validation`

## PR Guidelines

When opening a PR:
- Reference the issue: `Closes #{issue-number}`
- If the issue had a `squad:{member}` label, mention the member: `Working as {member} ({role})`
- 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.`
- Follow any project conventions in `.ai-team/decisions.md`

## Decisions

If you make a decision that affects other team members, write it to:
```
.ai-team/decisions/inbox/copilot-{brief-slug}.md
```
The Scribe will merge it into the shared decisions file.
10 changes: 10 additions & 0 deletions .ai-team-templates/history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Project Context

- **Owner:** {user name} ({user email})
- **Project:** {project description}
- **Stack:** {languages, frameworks, tools}
- **Created:** {date}

## Learnings

<!-- Append new learnings below. Each entry is something lasting about the project. -->
27 changes: 27 additions & 0 deletions .ai-team-templates/orchestration-log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Orchestration Log Entry

> One file per agent spawn. Saved to `.ai-team/orchestration-log/{timestamp}-{agent-name}.md`

---

### {timestamp} — {task summary}

| Field | Value |
|-------|-------|
| **Agent routed** | {Name} ({Role}) |
| **Why chosen** | {Routing rationale — what in the request matched this agent} |
| **Mode** | {`background` / `sync`} |
| **Why this mode** | {Brief reason — e.g., "No hard data dependencies" or "User needs to approve architecture"} |
| **Files authorized to read** | {Exact file paths the agent was told to read} |
| **File(s) agent must produce** | {Exact file paths the agent is expected to create or modify} |
| **Outcome** | {Completed / Rejected by {Reviewer} / Escalated} |

---

## Rules

1. **One file per agent spawn.** Named `{timestamp}-{agent-name}.md`.
2. **Log BEFORE spawning.** The entry must exist before the agent runs.
3. **Update outcome AFTER the agent completes.** Fill in the Outcome field.
4. **Never delete or edit past entries.** Append-only.
5. **If a reviewer rejects work,** log the rejection as a new entry with the revision agent.
37 changes: 37 additions & 0 deletions .ai-team-templates/raw-agent-output.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Raw Agent Output — Appendix Format

> This template defines the format for the `## APPENDIX: RAW AGENT OUTPUTS` section
> in any multi-agent artifact.

## Rules

1. **Verbatim only.** Paste the agent's response exactly as returned. No edits.
2. **No summarizing.** Do not condense, paraphrase, or rephrase any part of the output.
3. **No rewriting.** Do not fix typos, grammar, formatting, or style.
4. **No code fences around the entire output.** The raw output is pasted as-is, not wrapped in ``` blocks.
5. **One section per agent.** Each agent that contributed gets its own heading.
6. **Order matches work order.** List agents in the order they were spawned.
7. **Include all outputs.** Even if an agent's work was rejected, include their output for diagnostic traceability.

## Format

```markdown
## APPENDIX: RAW AGENT OUTPUTS

### {Name} ({Role}) — Raw Output

{Paste agent's verbatim response here, unedited}

### {Name} ({Role}) — Raw Output

{Paste agent's verbatim response here, unedited}
```

## Why This Exists

The appendix provides diagnostic integrity. It lets anyone verify:
- What each agent actually said (vs. what the Coordinator assembled)
- Whether the Coordinator faithfully represented agent work
- What was lost or changed in synthesis

Without raw outputs, multi-agent collaboration is unauditable.
60 changes: 60 additions & 0 deletions .ai-team-templates/roster.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Team Roster

> {One-line project description}

## Coordinator

| Name | Role | Notes |
|------|------|-------|
| Squad | Coordinator | Routes work, enforces handoffs and reviewer gates. Does not generate domain artifacts. |

## Members

| Name | Role | Charter | Status |
|------|------|---------|--------|
| {Name} | {Role} | `.ai-team/agents/{name}/charter.md` | ✅ Active |
| {Name} | {Role} | `.ai-team/agents/{name}/charter.md` | ✅ Active |
| {Name} | {Role} | `.ai-team/agents/{name}/charter.md` | ✅ Active |
| {Name} | {Role} | `.ai-team/agents/{name}/charter.md` | ✅ Active |
| Scribe | Session Logger | `.ai-team/agents/scribe/charter.md` | 📋 Silent |
| Ralph | Work Monitor | — | 🔄 Monitor |

## Coding Agent

<!-- copilot-auto-assign: false -->

| Name | Role | Charter | Status |
|------|------|---------|--------|
| @copilot | Coding Agent | — | 🤖 Coding Agent |

### Capabilities

**🟢 Good fit — auto-route when enabled:**
- Bug fixes with clear reproduction steps
- Test coverage (adding missing tests, fixing flaky tests)
- Lint/format fixes and code style cleanup
- Dependency updates and version bumps
- Small isolated features with clear specs
- Boilerplate/scaffolding generation
- Documentation fixes and README updates

**🟡 Needs review — route to @copilot but flag for squad member PR review:**
- Medium features with clear specs and acceptance criteria
- Refactoring with existing test coverage
- API endpoint additions following established patterns
- Migration scripts with well-defined schemas

**🔴 Not suitable — route to squad member instead:**
- Architecture decisions and system design
- Multi-system integration requiring coordination
- Ambiguous requirements needing clarification
- Security-critical changes (auth, encryption, access control)
- Performance-critical paths requiring benchmarking
- Changes requiring cross-team discussion

## Project Context

- **Owner:** {user name} ({user email})
- **Stack:** {languages, frameworks, tools}
- **Description:** {what the project does, in one sentence}
- **Created:** {date}
54 changes: 54 additions & 0 deletions .ai-team-templates/routing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Work Routing

How to decide who handles what.

## Routing Table

| Work Type | Route To | Examples |
|-----------|----------|----------|
| {domain 1} | {Name} | {example tasks} |
| {domain 2} | {Name} | {example tasks} |
| {domain 3} | {Name} | {example tasks} |
| Code review | {Name} | Review PRs, check quality, suggest improvements |
| Testing | {Name} | Write tests, find edge cases, verify fixes |
| Scope & priorities | {Name} | What to build next, trade-offs, decisions |
| Async issue work (bugs, tests, small features) | @copilot 🤖 | Well-defined tasks matching capability profile |
| Session logging | Scribe | Automatic — never needs routing |

## Issue Routing

| Label | Action | Who |
|-------|--------|-----|
| `squad` | Triage: analyze issue, evaluate @copilot fit, assign `squad:{member}` label | Lead |
| `squad:{name}` | Pick up issue and complete the work | Named member |
| `squad:copilot` | Assign to @copilot for autonomous work (if enabled) | @copilot 🤖 |

### How Issue Assignment Works

1. When a GitHub issue gets the `squad` label, the **Lead** triages it — analyzing content, evaluating @copilot's capability profile, assigning the right `squad:{member}` label, and commenting with triage notes.
2. **@copilot evaluation:** The Lead checks if the issue matches @copilot's capability profile (🟢 good fit / 🟡 needs review / 🔴 not suitable). If it's a good fit, the Lead may route to `squad:copilot` instead of a squad member.
3. When a `squad:{member}` label is applied, that member picks up the issue in their next session.
4. When `squad:copilot` is applied and auto-assign is enabled, `@copilot` is assigned on the issue and picks it up autonomously.
5. Members can reassign by removing their label and adding another member's label.
6. The `squad` label is the "inbox" — untriaged issues waiting for Lead review.

### Lead Triage Guidance for @copilot

When triaging, the Lead should ask:

1. **Is this well-defined?** Clear title, reproduction steps or acceptance criteria, bounded scope → likely 🟢
2. **Does it follow existing patterns?** Adding a test, fixing a known bug, updating a dependency → likely 🟢
3. **Does it need design judgment?** Architecture, API design, UX decisions → likely 🔴
4. **Is it security-sensitive?** Auth, encryption, access control → always 🔴
5. **Is it medium complexity with specs?** Feature with clear requirements, refactoring with tests → likely 🟡

## Rules

1. **Eager by default** — spawn all agents who could usefully start work, including anticipatory downstream work.
2. **Scribe always runs** after substantial work, always as `mode: "background"`. Never blocks.
3. **Quick facts → coordinator answers directly.** Don't spawn an agent for "what port does the server run on?"
4. **When two agents could handle it**, pick the one whose domain is the primary concern.
5. **"Team, ..." → fan-out.** Spawn all relevant agents in parallel as `mode: "background"`.
6. **Anticipate downstream work.** If a feature is being built, spawn the tester to write test cases from requirements simultaneously.
7. **Issue-labeled work** — when a `squad:{member}` label is applied to an issue, route to that member. The Lead handles all `squad` (base label) triage.
8. **@copilot routing** — when evaluating issues, check @copilot's capability profile in `team.md`. Route 🟢 good-fit tasks to `squad:copilot`. Flag 🟡 needs-review tasks for PR review. Keep 🔴 not-suitable tasks with squad members.
Loading
Loading