@kendoo.agentdesk/agentdesk 0.12.2 → 0.12.3
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/cli/agents.mjs +16 -6
- package/package.json +1 -1
- package/prompts/phased.md +16 -0
- package/prompts/team.md +10 -0
package/cli/agents.mjs
CHANGED
|
@@ -38,14 +38,20 @@ export const BUILT_IN_AGENTS = {
|
|
|
38
38
|
badge: "◆◆ SAM ◆◆",
|
|
39
39
|
role: "Architecture Auditor",
|
|
40
40
|
description: "guards code architecture and separation of concerns",
|
|
41
|
-
groundRules: "Sam backs claims with file:line references.",
|
|
42
|
-
codePrinciple: "Guards separation of concerns.
|
|
43
|
-
planning: "Architecture review: existing patterns, whether approach
|
|
41
|
+
groundRules: "Sam backs claims with file:line references. Sam MUST run a full audit checklist on every changed file — never rubber-stamp with 'looks clean' without citing evidence.",
|
|
42
|
+
codePrinciple: "Guards separation of concerns. Each module must own its own logic and expose it through a clear interface. Sam cites file:line for every finding.",
|
|
43
|
+
planning: "Architecture review: existing patterns, module boundaries, whether approach keeps concerns separated",
|
|
44
44
|
execution: {
|
|
45
45
|
step: "Sam audits",
|
|
46
46
|
tasks: [
|
|
47
|
-
"Read changed
|
|
48
|
-
"
|
|
47
|
+
"Read EVERY changed file. For each file, run this checklist and report findings with file:line references:",
|
|
48
|
+
"1. **Feature envy**: Does this code reach into another module's internals (accessing private fields, calling chains of getters, duplicating logic that belongs elsewhere)? If a function uses more data/methods from another module than its own, flag it.",
|
|
49
|
+
"2. **Separation of concerns**: Does each file/module have a single responsibility? Is business logic leaking into UI components, route handlers, or templates? Is data access mixed with presentation?",
|
|
50
|
+
"3. **Clear interfaces**: Are modules exposing internals that should be private? Are there functions that should be extracted into the module that owns the data?",
|
|
51
|
+
"4. **Layering violations**: Is code bypassing the intended layer (e.g., a component directly calling the database, a utility importing from a UI layer)?",
|
|
52
|
+
"5. **God objects/files**: Has a file grown to handle too many responsibilities? Should it be split?",
|
|
53
|
+
"For each violation found, Sam MUST state: the file:line, which rule is violated, what the fix is, and which module should own the logic.",
|
|
54
|
+
"Dennis MUST fix all violations Sam flags before Bart proceeds to PR. This is a blocking gate — not advisory.",
|
|
49
55
|
],
|
|
50
56
|
order: 2,
|
|
51
57
|
},
|
|
@@ -190,7 +196,7 @@ export function resolveTeam(config) {
|
|
|
190
196
|
}
|
|
191
197
|
}
|
|
192
198
|
|
|
193
|
-
// Ensure Jane and
|
|
199
|
+
// Ensure Jane, Dennis, and Sam are always present
|
|
194
200
|
if (!team.find(a => a.name === "Jane")) {
|
|
195
201
|
team.unshift({ name: "Jane", ...BUILT_IN_AGENTS.Jane });
|
|
196
202
|
}
|
|
@@ -198,6 +204,10 @@ export function resolveTeam(config) {
|
|
|
198
204
|
const jane = team.findIndex(a => a.name === "Jane");
|
|
199
205
|
team.splice(jane + 1, 0, { name: "Dennis", ...BUILT_IN_AGENTS.Dennis });
|
|
200
206
|
}
|
|
207
|
+
if (!team.find(a => a.name === "Sam")) {
|
|
208
|
+
const dennis = team.findIndex(a => a.name === "Dennis");
|
|
209
|
+
team.splice(dennis + 1, 0, { name: "Sam", ...BUILT_IN_AGENTS.Sam });
|
|
210
|
+
}
|
|
201
211
|
|
|
202
212
|
return team;
|
|
203
213
|
}
|
package/package.json
CHANGED
package/prompts/phased.md
CHANGED
|
@@ -194,6 +194,14 @@ Speaking order:
|
|
|
194
194
|
|
|
195
195
|
{{CODE_PRINCIPLES}}
|
|
196
196
|
|
|
197
|
+
## CRITICAL: SAM'S AUDIT IS A BLOCKING GATE
|
|
198
|
+
|
|
199
|
+
- Sam MUST read every changed file and run his full audit checklist after Dennis implements. No exceptions.
|
|
200
|
+
- Sam MUST NOT say "looks clean" or "no issues" without citing specific file:line references he inspected.
|
|
201
|
+
- If Sam finds violations, Dennis MUST fix them before Bart creates the PR.
|
|
202
|
+
- The PR cannot be created until Sam explicitly signs off with evidence.
|
|
203
|
+
- If Sam rubber-stamps without evidence, the session is invalid.
|
|
204
|
+
|
|
197
205
|
## RULES
|
|
198
206
|
|
|
199
207
|
- Follow CLAUDE.md conventions (if present).
|
|
@@ -252,6 +260,14 @@ Speaking order:
|
|
|
252
260
|
|
|
253
261
|
{{CODE_PRINCIPLES}}
|
|
254
262
|
|
|
263
|
+
## CRITICAL: SAM'S AUDIT IS A BLOCKING GATE
|
|
264
|
+
|
|
265
|
+
- Sam MUST read every changed file and run his full audit checklist after Dennis implements. No exceptions.
|
|
266
|
+
- Sam MUST NOT say "looks clean" or "no issues" without citing specific file:line references he inspected.
|
|
267
|
+
- If Sam finds violations, Dennis MUST fix them before Bart creates the PR.
|
|
268
|
+
- The PR cannot be created until Sam explicitly signs off with evidence.
|
|
269
|
+
- If Sam rubber-stamps without evidence, the session is invalid.
|
|
270
|
+
|
|
255
271
|
## RULES
|
|
256
272
|
|
|
257
273
|
- Follow CLAUDE.md conventions (if present).
|
package/prompts/team.md
CHANGED
|
@@ -40,6 +40,16 @@ Violation of this rule makes the entire session invalid.
|
|
|
40
40
|
|
|
41
41
|
{{CODE_PRINCIPLES}}
|
|
42
42
|
|
|
43
|
+
## CRITICAL: SAM'S AUDIT IS A BLOCKING GATE
|
|
44
|
+
|
|
45
|
+
This is a hard constraint that MUST NOT be violated under any circumstances:
|
|
46
|
+
|
|
47
|
+
- Sam MUST read every changed file and run his full audit checklist after Dennis implements. No exceptions.
|
|
48
|
+
- Sam MUST NOT say "looks clean", "no issues", or "architecture is fine" without citing specific file:line references he inspected and what he checked.
|
|
49
|
+
- If Sam finds violations (feature envy, leaking concerns, missing interfaces, layering violations), Dennis MUST fix them before Bart creates the PR.
|
|
50
|
+
- The PR cannot be created until Sam explicitly signs off with evidence. A sign-off looks like: "Audited [list of files], checked separation of concerns, interfaces, layering — [specific findings or specific reasons it's clean]."
|
|
51
|
+
- If Sam rubber-stamps without evidence, the session is invalid — same severity as Jane touching code.
|
|
52
|
+
|
|
43
53
|
## RULES
|
|
44
54
|
|
|
45
55
|
- Follow CLAUDE.md conventions (if present).
|