@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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +11 -9
- package/CHANGELOG.md +32 -0
- package/INSTALL.md +22 -22
- package/README.md +33 -29
- package/agents/code-explorer.md +77 -0
- package/agents/product-owner.md +1 -1
- package/agents/senior-dev-reviewer.md +1 -1
- package/agents/senior-qa.md +1 -1
- package/agents/tech-lead-planner.md +8 -0
- package/commands/brainstorm.md +12 -2
- package/commands/implement.md +32 -0
- package/commands/{squad-next.md → next.md} +3 -3
- package/commands/question.md +20 -0
- package/commands/review.md +30 -0
- package/commands/{squad-task.md → task.md} +1 -1
- package/dist/config/ownership-matrix.d.ts +1 -1
- package/dist/config/ownership-matrix.js +17 -0
- package/dist/config/ownership-matrix.js.map +1 -1
- package/dist/config/squad-yaml.d.ts +1 -1
- package/dist/config/squad-yaml.js +1 -1
- package/dist/index.js +1 -1
- package/dist/learning/store.d.ts +1 -1
- package/dist/learning/store.js +1 -1
- package/dist/resources/agent-loader.js +1 -0
- package/dist/resources/agent-loader.js.map +1 -1
- package/dist/tasks/store.d.ts +2 -2
- package/dist/tasks/store.js +1 -1
- package/dist/tools/compose-advisory-bundle.d.ts +8 -0
- package/dist/tools/compose-advisory-bundle.js +9 -1
- package/dist/tools/compose-advisory-bundle.js.map +1 -1
- package/dist/tools/compose-squad-workflow.d.ts +30 -1
- package/dist/tools/compose-squad-workflow.js +41 -4
- package/dist/tools/compose-squad-workflow.js.map +1 -1
- package/dist/tools/mode/exec-mode.d.ts +124 -0
- package/dist/tools/mode/exec-mode.js +153 -0
- package/dist/tools/mode/exec-mode.js.map +1 -0
- package/dist/tools/read-learnings.js +1 -1
- package/dist/tools/record-learning.d.ts +1 -1
- package/dist/tools/record-learning.js +1 -1
- package/dist/tools/select-squad.js +8 -2
- package/dist/tools/select-squad.js.map +1 -1
- package/package.json +1 -1
- package/shared/Skill-Squad-Dev.md +8 -8
- package/shared/Skill-Squad-Review.md +15 -15
- package/skills/brainstorm/SKILL.md +26 -24
- package/skills/question/SKILL.md +110 -0
- package/skills/squad/SKILL.md +70 -26
- package/commands/squad-review.md +0 -20
- package/commands/squad.md +0 -22
- /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
|
|
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
|
|
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
|
|
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
|
-
|
|
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:
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,aAAa,GAGd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACjG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvE,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAoBH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAY;IAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,SAAqB,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAY,WAAW,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,SAAS,GAA2C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,kBAAkB,KAAK,CAAC,SAAS,EAAE;KAC5C,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,aAAa,GAAuC,EAAE,CAAC;IAE7D,MAAM,GAAG,GAAG,qBAAqB,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC;IAEhF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAKP,EAAE,CAAC;QAET,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,WAAW;oBACxB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACnE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,OAAO,EAAE,CAAC;oBACZ,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;oBACrC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;wBAClC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;4BAAE,SAAS;wBACxC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;4BACtC,OAAO,CAAC,IAAI,CAAC;gCACX,KAAK,EAAE,GAAG,CAAC,KAAK;gCAChB,MAAM,EAAE,GAAG,CAAC,WAAW;gCACvB,MAAM,EAAE,SAAS;gCACjB,SAAS,EAAE,OAAO,CAAC,SAAS;6BAC7B,CAAC,CAAC;4BACH,cAAc,GAAG,IAAI,CAAC;wBACxB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnE,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,UAAU,GACd,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzE,MAAM,EAAE,GAAa;gBACnB,IAAI;gBACJ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU;aACX,CAAC;YACF,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,gBAAgB,CAAC;gBAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;YACrF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,cAAc,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;iBACrD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"select-squad.js","sourceRoot":"","sources":["../../src/tools/select-squad.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -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
|
|
9
|
+
`/squad:review`
|
|
10
10
|
|
|
11
11
|
## How It Works
|
|
12
12
|
|
|
13
13
|
### General Flow
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
User -> /squad
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
320
|
+
/squad:review
|
|
321
321
|
-> Auto-detects the squad; reviews diff of current branch vs. master
|
|
322
322
|
|
|
323
|
-
/squad
|
|
323
|
+
/squad:review security
|
|
324
324
|
-> Security squad; reviews current branch diff
|
|
325
325
|
|
|
326
|
-
/squad
|
|
326
|
+
/squad:review arch Services/ParameterService.cs
|
|
327
327
|
-> Architecture squad; focused on the specified file
|
|
328
328
|
|
|
329
|
-
/squad
|
|
329
|
+
/squad:review full
|
|
330
330
|
-> Every agent; complete review
|
|
331
331
|
|
|
332
|
-
/squad
|
|
332
|
+
/squad:review --quick
|
|
333
333
|
-> Quick mode: 1 specialist + tech-lead, terse prompts, condensed output
|
|
334
334
|
|
|
335
|
-
/squad
|
|
335
|
+
/squad:review --quick code
|
|
336
336
|
-> Quick code-quality review (senior-dev-reviewer + tech-lead)
|
|
337
337
|
|
|
338
|
-
/squad
|
|
338
|
+
/squad:review --quick --codex
|
|
339
339
|
-> Error: --quick is mutually exclusive with --codex
|
|
340
340
|
```
|
|
341
341
|
|