@gempack/squad-mcp 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +11 -9
  3. package/CHANGELOG.md +32 -0
  4. package/INSTALL.md +22 -22
  5. package/README.md +33 -29
  6. package/agents/code-explorer.md +77 -0
  7. package/agents/product-owner.md +1 -1
  8. package/agents/senior-dev-reviewer.md +1 -1
  9. package/agents/senior-qa.md +1 -1
  10. package/agents/tech-lead-planner.md +8 -0
  11. package/commands/brainstorm.md +12 -2
  12. package/commands/implement.md +32 -0
  13. package/commands/{squad-next.md → next.md} +3 -3
  14. package/commands/question.md +20 -0
  15. package/commands/review.md +30 -0
  16. package/commands/{squad-task.md → task.md} +1 -1
  17. package/dist/config/ownership-matrix.d.ts +1 -1
  18. package/dist/config/ownership-matrix.js +17 -0
  19. package/dist/config/ownership-matrix.js.map +1 -1
  20. package/dist/config/squad-yaml.d.ts +1 -1
  21. package/dist/config/squad-yaml.js +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/learning/store.d.ts +1 -1
  24. package/dist/learning/store.js +1 -1
  25. package/dist/resources/agent-loader.js +1 -0
  26. package/dist/resources/agent-loader.js.map +1 -1
  27. package/dist/tasks/store.d.ts +2 -2
  28. package/dist/tasks/store.js +1 -1
  29. package/dist/tools/compose-advisory-bundle.d.ts +8 -0
  30. package/dist/tools/compose-advisory-bundle.js +9 -1
  31. package/dist/tools/compose-advisory-bundle.js.map +1 -1
  32. package/dist/tools/compose-squad-workflow.d.ts +30 -1
  33. package/dist/tools/compose-squad-workflow.js +41 -4
  34. package/dist/tools/compose-squad-workflow.js.map +1 -1
  35. package/dist/tools/mode/exec-mode.d.ts +124 -0
  36. package/dist/tools/mode/exec-mode.js +153 -0
  37. package/dist/tools/mode/exec-mode.js.map +1 -0
  38. package/dist/tools/read-learnings.js +1 -1
  39. package/dist/tools/record-learning.d.ts +1 -1
  40. package/dist/tools/record-learning.js +1 -1
  41. package/dist/tools/select-squad.js +8 -2
  42. package/dist/tools/select-squad.js.map +1 -1
  43. package/package.json +1 -1
  44. package/shared/Skill-Squad-Dev.md +8 -8
  45. package/shared/Skill-Squad-Review.md +15 -15
  46. package/skills/brainstorm/SKILL.md +26 -24
  47. package/skills/question/SKILL.md +110 -0
  48. package/skills/squad/SKILL.md +70 -26
  49. package/commands/squad-review.md +0 -20
  50. package/commands/squad.md +0 -22
  51. /package/commands/{squad-tasks.md → tasks.md} +0 -0
@@ -0,0 +1,124 @@
1
+ import type { AgentName, WorkType } from "../../config/ownership-matrix.js";
2
+ /**
3
+ * Execution depth resolution and squad shaping.
4
+ *
5
+ * `selectMode` picks one of `quick` / `normal` / `deep` from classify+risk
6
+ * signals (or honours the user's flag). `shapeSquadForMode` adjusts the
7
+ * agent list per the resolved mode.
8
+ *
9
+ * Lives in its own module so the pipeline orchestrator
10
+ * (`compose-squad-workflow.ts`) stays focused on its single job (detect →
11
+ * classify → score → select → shape). A future `.squad.yaml`-configurable
12
+ * threshold lands here, not in the pipeline.
13
+ */
14
+ /**
15
+ * Auto-detect threshold for `mode: "quick"`. Surfaced as a named constant so
16
+ * a future `.squad.yaml` override (Sprint 2 / v0.8.1) has a single hook.
17
+ *
18
+ * Note: an earlier draft also gated on a `loc_changed` heuristic, but the
19
+ * heuristic was tautological with this file-count cap and could be foot-gunned
20
+ * by single-file giant rewrites. Removed in favour of a real `git diff --numstat`
21
+ * once we need finer granularity — track in the v0.8.1 follow-up.
22
+ */
23
+ export declare const QUICK_AUTO_MAX_FILES = 5;
24
+ /**
25
+ * Execution depth. PUBLIC STABLE CONTRACT from v0.8.0 — downstream
26
+ * `.squad.yaml` consumers and CI integrations may key on this field.
27
+ *
28
+ * - `quick`: cap squad to 2 agents (top-2 from the ranked `selectSquad`
29
+ * output, with `senior-developer` always force-included as a tiebreaker
30
+ * for code-touching work types). Skip tech-lead-planner and
31
+ * tech-lead-consolidator personas. `apply_consolidation_rules` still runs.
32
+ * - `normal`: zero behavioural change vs. pre-v0.8.0. The implicit default.
33
+ * - `deep`: force-include `senior-architect` + `senior-dev-security`.
34
+ * Reject-loop cap raised from 2 to 3 iterations. Codex round suggested
35
+ * (still gated on `--codex` consent).
36
+ *
37
+ * Auto-detection fires only when neither `--quick` nor `--deep` is passed.
38
+ * User flag always wins. See `selectMode` for the rule.
39
+ */
40
+ export type ExecMode = "quick" | "normal" | "deep";
41
+ export declare const EXEC_MODES: readonly ["quick", "normal", "deep"];
42
+ /**
43
+ * Named constants for the agents the mode logic explicitly cares about.
44
+ * Exported so tests can assert against them by name instead of by string
45
+ * literal — if the role names ever change, the tests fail in the right
46
+ * place rather than silently passing on the new literal.
47
+ */
48
+ export declare const TIEBREAKER_AGENT: AgentName;
49
+ export declare const FALLBACK_SECONDARY: AgentName;
50
+ export declare const DEEP_REQUIRED: readonly AgentName[];
51
+ /**
52
+ * `mode_warning` codes. Stable from v0.8.0. CI integrations can differentiate
53
+ * warning types without regex-parsing the human message.
54
+ */
55
+ export type ModeWarningCode = "forced_quick_on_high_risk" | "force_agents_truncated";
56
+ export interface ModeWarning {
57
+ code: ModeWarningCode;
58
+ message: string;
59
+ }
60
+ interface RiskSignals {
61
+ touches_auth: boolean;
62
+ touches_money: boolean;
63
+ touches_migration: boolean;
64
+ files_count: number;
65
+ new_module?: boolean;
66
+ api_contract_change?: boolean;
67
+ }
68
+ /**
69
+ * Decide execution depth from classify+risk signals. User-supplied `mode`
70
+ * always wins (returned with `source: "user"`). Auto-detect rules:
71
+ *
72
+ * deep ← riskLevel == High || workType == Security || touches_migration
73
+ * quick ← riskLevel == Low
74
+ * && files_count <= QUICK_AUTO_MAX_FILES
75
+ * && !touches_auth && !touches_money && !touches_migration
76
+ * && workType != Security
77
+ * normal← everything else
78
+ */
79
+ export declare function selectMode(args: {
80
+ userMode: ExecMode | undefined;
81
+ riskLevel: "Low" | "Medium" | "High";
82
+ workType: WorkType;
83
+ signals: RiskSignals;
84
+ }): {
85
+ mode: ExecMode;
86
+ source: "user" | "auto";
87
+ warning?: ModeWarning;
88
+ };
89
+ /**
90
+ * Cap or expand the agent list according to execution depth.
91
+ *
92
+ * - `quick`: take the top-2 agents from `selectedAgents` (which arrives
93
+ * rank-ordered from selectSquad: core matrix → signals → user
94
+ * force_agents). `senior-developer` is force-included as a tiebreaker
95
+ * when the work_type is code-touching (anything other than
96
+ * `Business Rule`) — covers the Refactor/Performance path where
97
+ * `selectSquad` may not pick `senior-developer` from the matrix but
98
+ * the user still wants code-review eyes.
99
+ * When the user forced `--quick` on a high-risk diff (signalled via
100
+ * `signals.touches_auth/money/migration`), `senior-dev-security` is
101
+ * force-included as one of the two regardless.
102
+ * - `normal`: pass through unchanged.
103
+ * - `deep`: force-include `DEEP_REQUIRED` (architect + security) even if
104
+ * `selectSquad` did not pick them.
105
+ *
106
+ * Precedence inside the 2-agent cap for `quick` (highest first):
107
+ * 1. Safety override (`senior-dev-security` on forced-quick-on-high-risk).
108
+ * 2. `userForcedAgents` (caller intent).
109
+ * 3. Tiebreaker `senior-developer` (code-touching work types).
110
+ * 4. Top of `selectedAgents` ranked order.
111
+ * 5. `FALLBACK_SECONDARY` last resort to guarantee 2 agents.
112
+ *
113
+ * Returns the (potentially) reshaped list and a `truncationWarning` when
114
+ * the user's `force_agents` exceeded the cap-to-2 and slots were dropped.
115
+ */
116
+ export declare function shapeSquadForMode(selectedAgents: AgentName[], mode: ExecMode, ctx: {
117
+ workType: WorkType;
118
+ signals: RiskSignals;
119
+ userForcedAgents: readonly AgentName[];
120
+ }): {
121
+ agents: AgentName[];
122
+ warning?: ModeWarning;
123
+ };
124
+ export {};
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Execution depth resolution and squad shaping.
3
+ *
4
+ * `selectMode` picks one of `quick` / `normal` / `deep` from classify+risk
5
+ * signals (or honours the user's flag). `shapeSquadForMode` adjusts the
6
+ * agent list per the resolved mode.
7
+ *
8
+ * Lives in its own module so the pipeline orchestrator
9
+ * (`compose-squad-workflow.ts`) stays focused on its single job (detect →
10
+ * classify → score → select → shape). A future `.squad.yaml`-configurable
11
+ * threshold lands here, not in the pipeline.
12
+ */
13
+ /**
14
+ * Auto-detect threshold for `mode: "quick"`. Surfaced as a named constant so
15
+ * a future `.squad.yaml` override (Sprint 2 / v0.8.1) has a single hook.
16
+ *
17
+ * Note: an earlier draft also gated on a `loc_changed` heuristic, but the
18
+ * heuristic was tautological with this file-count cap and could be foot-gunned
19
+ * by single-file giant rewrites. Removed in favour of a real `git diff --numstat`
20
+ * once we need finer granularity — track in the v0.8.1 follow-up.
21
+ */
22
+ export const QUICK_AUTO_MAX_FILES = 5;
23
+ export const EXEC_MODES = ["quick", "normal", "deep"];
24
+ /**
25
+ * Named constants for the agents the mode logic explicitly cares about.
26
+ * Exported so tests can assert against them by name instead of by string
27
+ * literal — if the role names ever change, the tests fail in the right
28
+ * place rather than silently passing on the new literal.
29
+ */
30
+ export const TIEBREAKER_AGENT = "senior-developer";
31
+ export const FALLBACK_SECONDARY = "senior-qa";
32
+ export const DEEP_REQUIRED = ["senior-architect", "senior-dev-security"];
33
+ /**
34
+ * Decide execution depth from classify+risk signals. User-supplied `mode`
35
+ * always wins (returned with `source: "user"`). Auto-detect rules:
36
+ *
37
+ * deep ← riskLevel == High || workType == Security || touches_migration
38
+ * quick ← riskLevel == Low
39
+ * && files_count <= QUICK_AUTO_MAX_FILES
40
+ * && !touches_auth && !touches_money && !touches_migration
41
+ * && workType != Security
42
+ * normal← everything else
43
+ */
44
+ export function selectMode(args) {
45
+ const isHighRiskShape = args.riskLevel === "High" ||
46
+ args.workType === "Security" ||
47
+ args.signals.touches_auth ||
48
+ args.signals.touches_money ||
49
+ args.signals.touches_migration;
50
+ if (args.userMode !== undefined) {
51
+ if (args.userMode === "quick" && isHighRiskShape) {
52
+ return {
53
+ mode: "quick",
54
+ source: "user",
55
+ warning: {
56
+ code: "forced_quick_on_high_risk",
57
+ message: "user forced --quick on a high-risk diff; senior-dev-security force-included in the 2-agent cap as a safety override",
58
+ },
59
+ };
60
+ }
61
+ return { mode: args.userMode, source: "user" };
62
+ }
63
+ if (isHighRiskShape)
64
+ return { mode: "deep", source: "auto" };
65
+ if (args.riskLevel === "Low" &&
66
+ args.signals.files_count <= QUICK_AUTO_MAX_FILES &&
67
+ args.workType !== "Security") {
68
+ return { mode: "quick", source: "auto" };
69
+ }
70
+ return { mode: "normal", source: "auto" };
71
+ }
72
+ /**
73
+ * Cap or expand the agent list according to execution depth.
74
+ *
75
+ * - `quick`: take the top-2 agents from `selectedAgents` (which arrives
76
+ * rank-ordered from selectSquad: core matrix → signals → user
77
+ * force_agents). `senior-developer` is force-included as a tiebreaker
78
+ * when the work_type is code-touching (anything other than
79
+ * `Business Rule`) — covers the Refactor/Performance path where
80
+ * `selectSquad` may not pick `senior-developer` from the matrix but
81
+ * the user still wants code-review eyes.
82
+ * When the user forced `--quick` on a high-risk diff (signalled via
83
+ * `signals.touches_auth/money/migration`), `senior-dev-security` is
84
+ * force-included as one of the two regardless.
85
+ * - `normal`: pass through unchanged.
86
+ * - `deep`: force-include `DEEP_REQUIRED` (architect + security) even if
87
+ * `selectSquad` did not pick them.
88
+ *
89
+ * Precedence inside the 2-agent cap for `quick` (highest first):
90
+ * 1. Safety override (`senior-dev-security` on forced-quick-on-high-risk).
91
+ * 2. `userForcedAgents` (caller intent).
92
+ * 3. Tiebreaker `senior-developer` (code-touching work types).
93
+ * 4. Top of `selectedAgents` ranked order.
94
+ * 5. `FALLBACK_SECONDARY` last resort to guarantee 2 agents.
95
+ *
96
+ * Returns the (potentially) reshaped list and a `truncationWarning` when
97
+ * the user's `force_agents` exceeded the cap-to-2 and slots were dropped.
98
+ */
99
+ export function shapeSquadForMode(selectedAgents, mode, ctx) {
100
+ if (mode === "normal")
101
+ return { agents: selectedAgents };
102
+ if (mode === "deep") {
103
+ const out = [...selectedAgents];
104
+ for (const required of DEEP_REQUIRED) {
105
+ if (!out.includes(required))
106
+ out.push(required);
107
+ }
108
+ return { agents: out };
109
+ }
110
+ // mode === "quick"
111
+ const highRiskShape = ctx.signals.touches_auth || ctx.signals.touches_money || ctx.signals.touches_migration;
112
+ const seen = new Set();
113
+ const picked = [];
114
+ const push = (a) => {
115
+ if (picked.length >= 2)
116
+ return false;
117
+ if (seen.has(a))
118
+ return false;
119
+ seen.add(a);
120
+ picked.push(a);
121
+ return true;
122
+ };
123
+ // (1) Safety override.
124
+ if (highRiskShape)
125
+ push("senior-dev-security");
126
+ // (2) User-forced agents — preserve their intent within the cap.
127
+ let droppedForced = 0;
128
+ for (const a of ctx.userForcedAgents) {
129
+ if (!push(a) && !seen.has(a))
130
+ droppedForced += 1;
131
+ }
132
+ // (3) Tiebreaker for code-touching work types: senior-developer is the most
133
+ // general reviewer; force-include even if the matrix did not pick it.
134
+ // Skip only for Business Rule (PO-owned, not code-centric).
135
+ if (ctx.workType !== "Business Rule")
136
+ push(TIEBREAKER_AGENT);
137
+ // (4) Fill remaining slot(s) from the ranked list.
138
+ for (const a of selectedAgents)
139
+ push(a);
140
+ // (5) Last-resort fallback to guarantee 2 agents even with pathological
141
+ // upstream (e.g. selectSquad returned an empty list).
142
+ if (picked.length < 2)
143
+ push(FALLBACK_SECONDARY);
144
+ const result = { agents: picked };
145
+ if (droppedForced > 0) {
146
+ result.warning = {
147
+ code: "force_agents_truncated",
148
+ message: `quick mode caps the squad at 2 agents; ${droppedForced} of the user's force_agents were dropped`,
149
+ };
150
+ }
151
+ return result;
152
+ }
153
+ //# sourceMappingURL=exec-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec-mode.js","sourceRoot":"","sources":["../../../src/tools/mode/exec-mode.ts"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ export const readLearningsToolDef = {
63
63
  description: "Read recent team decisions from `.squad/learnings.jsonl` (path overridable via .squad.yaml.learnings.path). " +
64
64
  "Returns the filtered entries plus a pre-rendered markdown block ready to inject into agent / consolidator prompts. " +
65
65
  "Filters: agent, decision (accept|reject), changed_files (matches scoped entries against these paths). " +
66
- "Used by the /squad-review skill in Phase 5 (advisory) and Phase 10 (consolidation) to make the squad less repetitive over time.",
66
+ "Used by the /squad:review skill in Phase 5 (advisory) and Phase 10 (consolidation) to make the squad less repetitive over time.",
67
67
  schema,
68
68
  handler: readLearningsTool,
69
69
  };
@@ -12,7 +12,7 @@ declare const schema: z.ZodObject<{
12
12
  severity: z.ZodOptional<z.ZodEnum<["Blocker", "Major", "Minor", "Suggestion"]>>;
13
13
  /** Free-form rationale. Surfaces in the consolidator prompt. */
14
14
  reason: z.ZodOptional<z.ZodString>;
15
- /** PR number when recorded from `/squad-review #N`. */
15
+ /** PR number when recorded from `/squad:review #N`. */
16
16
  pr: z.ZodOptional<z.ZodNumber>;
17
17
  /** Branch name when recorded from a local review. */
18
18
  branch: z.ZodOptional<z.ZodString>;
@@ -15,7 +15,7 @@ const schema = z.object({
15
15
  severity: z.enum(["Blocker", "Major", "Minor", "Suggestion"]).optional(),
16
16
  /** Free-form rationale. Surfaces in the consolidator prompt. */
17
17
  reason: z.string().max(4096).optional(),
18
- /** PR number when recorded from `/squad-review #N`. */
18
+ /** PR number when recorded from `/squad:review #N`. */
19
19
  pr: z.number().int().positive().optional(),
20
20
  /** Branch name when recorded from a local review. */
21
21
  branch: z.string().min(1).max(255).optional(),
@@ -99,9 +99,15 @@ export async function selectSquad(input) {
99
99
  rationale.push({ agent: forced, reason: "forced by caller" });
100
100
  }
101
101
  }
102
- const sortedAgents = Array.from(selected).sort();
102
+ // Preserve insertion order: core agents from the matrix come first, then
103
+ // content/path signals, then user force_agents last. This is the "ranked"
104
+ // order downstream consumers (notably `shapeSquadForMode` in
105
+ // compose-squad-workflow.ts when mode === "quick") rely on. Prior versions
106
+ // sorted alphabetically and silently shipped a top-2 that didn't match
107
+ // the docstring contract.
108
+ const rankedAgents = Array.from(selected);
103
109
  return {
104
- agents: sortedAgents,
110
+ agents: rankedAgents,
105
111
  rationale,
106
112
  evidence,
107
113
  low_confidence_files: lowConfidence,
@@ -1 +1 @@
1
- {"version":3,"file":"select-squad.js","sourceRoot":"","sources":["../../src/tools/select-squad.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-squad.js","sourceRoot":"","sources":["../../src/tools/select-squad.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gempack/squad-mcp",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "MCP server for the squad-dev workflow: classification, risk scoring, agent selection, advisory orchestration",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Objective
4
4
 
5
- Development skill that takes a user prompt, builds an implementation plan, runs gated advisory with specialized agents, implements, and consolidates via TechLead-Consolidator. Codex is optional (`/squad --codex`) and may be auto-suggested when the plan is high-risk.
5
+ Development skill that takes a user prompt, builds an implementation plan, runs gated advisory with specialized agents, implements, and consolidates via TechLead-Consolidator. Codex is optional (`/squad:implement --codex`) and may be auto-suggested when the plan is high-risk.
6
6
 
7
7
  ## Skill Name
8
8
 
9
- `/squad`
9
+ `/squad:implement`
10
10
 
11
11
  ## Agent Registry
12
12
 
@@ -25,7 +25,7 @@ Development skill that takes a user prompt, builds an implementation plan, runs
25
25
  ## General Flow
26
26
 
27
27
  ```
28
- User -> /squad {prompt}
28
+ User -> /squad:implement {prompt}
29
29
  |
30
30
  v
31
31
  [0. Pre-Check]
@@ -378,21 +378,21 @@ Critical-change auto-fallback: if scope touches `auth`, `crypto`, `permissions`,
378
378
  ## Usage Examples
379
379
 
380
380
  ```
381
- /squad implement dollar balance endpoint
381
+ /squad:implement implement dollar balance endpoint
382
382
  -> No Codex
383
383
  -> Plan + Planner -> User approves -> Advisory -> Implement -> Consolidator
384
384
 
385
- /squad --codex fix cache bug in ParameterService
385
+ /squad:implement --codex fix cache bug in ParameterService
386
386
  -> With Codex
387
387
  -> Plan + Planner -> Codex validates -> User approves -> Advisory -> Implement -> Codex reviews -> Consolidator
388
388
 
389
- /squad refactor ExchangeUsdService to split responsibilities
389
+ /squad:implement refactor ExchangeUsdService to split responsibilities
390
390
  -> Plan + Planner -> User approves -> Advisory -> Implement -> Consolidator
391
391
 
392
- /squad --quick rename a misspelled local variable in BalanceController
392
+ /squad:implement --quick rename a misspelled local variable in BalanceController
393
393
  -> Quick mode: condensed plan, 1 specialist + tech-lead, terse prompts, condensed delivery
394
394
 
395
- /squad --quick --codex anything
395
+ /squad:implement --quick --codex anything
396
396
  -> Error: --quick is mutually exclusive with --codex
397
397
  ```
398
398
 
@@ -6,14 +6,14 @@ Skill that takes a user prompt, interprets intent, selects the relevant agents,
6
6
 
7
7
  ## Skill Name
8
8
 
9
- `/squad-review`
9
+ `/squad:review`
10
10
 
11
11
  ## How It Works
12
12
 
13
13
  ### General Flow
14
14
 
15
15
  ```
16
- User -> /squad-review {prompt}
16
+ User -> /squad:review {prompt}
17
17
  |
18
18
  v
19
19
  [1. Prompt Analysis]
@@ -62,42 +62,42 @@ The user can request a generic review or target a focus area. The skill maps the
62
62
  All specialized agents + TechLead-Consolidator.
63
63
 
64
64
  - **When**: Complete PR review, branch ready to merge
65
- - **Triggers**: `/squad-review`, `/squad-review PR`, `/squad-review branch`
65
+ - **Triggers**: `/squad:review`, `/squad:review PR`, `/squad:review branch`
66
66
 
67
67
  #### Code Squad
68
68
 
69
69
  `senior-dev-reviewer` + `senior-developer` + `senior-qa` + `tech-lead-consolidator`
70
70
 
71
71
  - **When**: Focused review on code quality and correctness
72
- - **Triggers**: `/squad-review code`
72
+ - **Triggers**: `/squad:review code`
73
73
 
74
74
  #### Data Squad
75
75
 
76
76
  `senior-dba` + `senior-developer` + `tech-lead-consolidator`
77
77
 
78
78
  - **When**: Changes to queries, migrations, cache, EF
79
- - **Triggers**: `/squad-review data`
79
+ - **Triggers**: `/squad:review data`
80
80
 
81
81
  #### Security Squad
82
82
 
83
83
  `senior-dev-security` + `senior-developer` + `senior-dev-reviewer` + `tech-lead-consolidator`
84
84
 
85
85
  - **When**: Focused security review
86
- - **Triggers**: `/squad-review security`
86
+ - **Triggers**: `/squad:review security`
87
87
 
88
88
  #### Architecture Squad
89
89
 
90
90
  `senior-architect` + `senior-developer` + `senior-dba` + `tech-lead-consolidator`
91
91
 
92
92
  - **When**: Structural changes, new modules, large refactors
93
- - **Triggers**: `/squad-review arch`
93
+ - **Triggers**: `/squad:review arch`
94
94
 
95
95
  #### Business Squad
96
96
 
97
97
  `po` + `senior-developer` + `senior-qa` + `tech-lead-consolidator`
98
98
 
99
99
  - **When**: New feature, business-rule change
100
- - **Triggers**: `/squad-review business`
100
+ - **Triggers**: `/squad:review business`
101
101
 
102
102
  ### Automatic Squad Detection
103
103
 
@@ -317,25 +317,25 @@ Verdict: APPROVED — no Blocker or Major findings.
317
317
  ## Usage Examples
318
318
 
319
319
  ```
320
- /squad-review
320
+ /squad:review
321
321
  -> Auto-detects the squad; reviews diff of current branch vs. master
322
322
 
323
- /squad-review security
323
+ /squad:review security
324
324
  -> Security squad; reviews current branch diff
325
325
 
326
- /squad-review arch Services/ParameterService.cs
326
+ /squad:review arch Services/ParameterService.cs
327
327
  -> Architecture squad; focused on the specified file
328
328
 
329
- /squad-review full
329
+ /squad:review full
330
330
  -> Every agent; complete review
331
331
 
332
- /squad-review --quick
332
+ /squad:review --quick
333
333
  -> Quick mode: 1 specialist + tech-lead, terse prompts, condensed output
334
334
 
335
- /squad-review --quick code
335
+ /squad:review --quick code
336
336
  -> Quick code-quality review (senior-dev-reviewer + tech-lead)
337
337
 
338
- /squad-review --quick --codex
338
+ /squad:review --quick --codex
339
339
  -> Error: --quick is mutually exclusive with --codex
340
340
  ```
341
341