@fredericboyer/dev-team 0.7.0 → 0.8.1

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/dist/init.js CHANGED
@@ -42,6 +42,7 @@ const path_1 = __importDefault(require("path"));
42
42
  const files_js_1 = require("./files.js");
43
43
  const prompts = __importStar(require("./prompts.js"));
44
44
  const scan_js_1 = require("./scan.js");
45
+ const skill_recommendations_js_1 = require("./skill-recommendations.js");
45
46
  const ALL_AGENTS = [
46
47
  { label: "Voss", file: "dev-team-voss.md", description: "Backend Engineer" },
47
48
  {
@@ -370,6 +371,24 @@ async function run(targetDir, flags = []) {
370
371
  console.log((0, scan_js_1.formatScanReport)(findings));
371
372
  console.log("");
372
373
  }
374
+ // Step 13: Skill recommendations
375
+ let runSkillScan = isAll || !!preset;
376
+ if (!isAll && !preset) {
377
+ runSkillScan = await prompts.confirm("Scan for recommended Claude Code skills based on your project stack?", true);
378
+ }
379
+ if (runSkillScan) {
380
+ const { recommendations, ecosystems, catalog } = (0, skill_recommendations_js_1.scanSkillRecommendations)(targetDir);
381
+ if (recommendations.length > 0) {
382
+ console.log((0, skill_recommendations_js_1.formatRecommendations)(recommendations, ecosystems, catalog));
383
+ if (!isAll && !preset) {
384
+ console.log(" Install recommended skills from your Claude Code settings or MCP configuration.");
385
+ console.log(" These are suggestions only — skip any that don't apply.\n");
386
+ }
387
+ }
388
+ else if (ecosystems.length > 0) {
389
+ console.log("Skill scan: no matching skills found for your detected stack.\n");
390
+ }
391
+ }
373
392
  console.log("Next steps:");
374
393
  console.log(" 1. Review installed agents in .dev-team/agents/");
375
394
  console.log(" 2. Customize agent personas and focus areas to fit your project");
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ export interface SkillRecommendation {
2
+ id: string;
3
+ name: string;
4
+ description: string;
5
+ source: string;
6
+ detectedBy: string;
7
+ }
8
+ interface SkillEntry {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ source: string;
13
+ detectDeps: string[];
14
+ detectFiles: string[];
15
+ ecosystem: string;
16
+ }
17
+ interface EcosystemEntry {
18
+ detectFiles: string[];
19
+ label: string;
20
+ }
21
+ interface SkillCatalog {
22
+ ecosystems: Record<string, EcosystemEntry>;
23
+ skills: SkillEntry[];
24
+ }
25
+ /**
26
+ * Loads the skill recommendations catalog from templates/.
27
+ */
28
+ export declare function loadCatalog(): SkillCatalog;
29
+ /**
30
+ * Detects which ecosystems are present in a project directory.
31
+ * Returns an array of ecosystem keys (e.g., ["node", "python"]).
32
+ */
33
+ export declare function detectEcosystems(targetDir: string, catalog: SkillCatalog): string[];
34
+ /**
35
+ * Parses dependencies from ecosystem-specific manifest files.
36
+ * Returns a set of dependency names found across all detected ecosystems.
37
+ */
38
+ export declare function parseDependencies(targetDir: string, ecosystems: string[]): Set<string>;
39
+ /**
40
+ * Matches detected project state against the skill catalog.
41
+ * Returns recommended skills with the reason they were detected.
42
+ */
43
+ export declare function matchSkills(targetDir: string, catalog: SkillCatalog, ecosystems: string[], dependencies: Set<string>): SkillRecommendation[];
44
+ /**
45
+ * Formats skill recommendations as a human-readable report.
46
+ */
47
+ export declare function formatRecommendations(recommendations: SkillRecommendation[], ecosystems: string[], catalog: SkillCatalog): string;
48
+ /**
49
+ * Full scan: detect ecosystems, parse deps, match skills, return recommendations.
50
+ * This is the main entry point used by init.ts.
51
+ */
52
+ export declare function scanSkillRecommendations(targetDir: string): {
53
+ recommendations: SkillRecommendation[];
54
+ ecosystems: string[];
55
+ catalog: SkillCatalog;
56
+ };
57
+ export {};
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadCatalog = loadCatalog;
7
+ exports.detectEcosystems = detectEcosystems;
8
+ exports.parseDependencies = parseDependencies;
9
+ exports.matchSkills = matchSkills;
10
+ exports.formatRecommendations = formatRecommendations;
11
+ exports.scanSkillRecommendations = scanSkillRecommendations;
12
+ const path_1 = __importDefault(require("path"));
13
+ const files_js_1 = require("./files.js");
14
+ /**
15
+ * Loads the skill recommendations catalog from templates/.
16
+ */
17
+ function loadCatalog() {
18
+ const catalogPath = path_1.default.join((0, files_js_1.templateDir)(), "skill-recommendations.json");
19
+ const content = (0, files_js_1.readFile)(catalogPath);
20
+ if (!content) {
21
+ throw new Error("Missing templates/skill-recommendations.json");
22
+ }
23
+ return JSON.parse(content);
24
+ }
25
+ /**
26
+ * Detects which ecosystems are present in a project directory.
27
+ * Returns an array of ecosystem keys (e.g., ["node", "python"]).
28
+ */
29
+ function detectEcosystems(targetDir, catalog) {
30
+ const detected = [];
31
+ for (const [key, eco] of Object.entries(catalog.ecosystems)) {
32
+ const found = eco.detectFiles.some((f) => (0, files_js_1.fileExists)(path_1.default.join(targetDir, f)));
33
+ if (found) {
34
+ detected.push(key);
35
+ }
36
+ }
37
+ return detected;
38
+ }
39
+ /**
40
+ * Parses dependencies from ecosystem-specific manifest files.
41
+ * Returns a set of dependency names found across all detected ecosystems.
42
+ */
43
+ function parseDependencies(targetDir, ecosystems) {
44
+ const deps = new Set();
45
+ if (ecosystems.includes("node")) {
46
+ parseNodeDeps(targetDir, deps);
47
+ }
48
+ if (ecosystems.includes("python")) {
49
+ parsePythonDeps(targetDir, deps);
50
+ }
51
+ if (ecosystems.includes("ruby")) {
52
+ parseRubyDeps(targetDir, deps);
53
+ }
54
+ if (ecosystems.includes("go")) {
55
+ parseGoDeps(targetDir, deps);
56
+ }
57
+ if (ecosystems.includes("rust")) {
58
+ parseRustDeps(targetDir, deps);
59
+ }
60
+ if (ecosystems.includes("java")) {
61
+ parseJavaDeps(targetDir, deps);
62
+ }
63
+ return deps;
64
+ }
65
+ function parseNodeDeps(targetDir, deps) {
66
+ const content = (0, files_js_1.readFile)(path_1.default.join(targetDir, "package.json"));
67
+ if (!content)
68
+ return;
69
+ try {
70
+ const pkg = JSON.parse(content);
71
+ for (const key of ["dependencies", "devDependencies", "peerDependencies"]) {
72
+ if (pkg[key]) {
73
+ for (const dep of Object.keys(pkg[key])) {
74
+ deps.add(dep);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ catch {
80
+ // Invalid JSON — skip
81
+ }
82
+ }
83
+ function parsePythonDeps(targetDir, deps) {
84
+ // requirements.txt
85
+ const reqContent = (0, files_js_1.readFile)(path_1.default.join(targetDir, "requirements.txt"));
86
+ if (reqContent) {
87
+ for (const line of reqContent.split("\n")) {
88
+ const trimmed = line.trim();
89
+ if (trimmed && !trimmed.startsWith("#") && !trimmed.startsWith("-")) {
90
+ // Extract package name before version specifier
91
+ const match = trimmed.match(/^([a-zA-Z0-9_-]+)/);
92
+ if (match) {
93
+ deps.add(match[1].toLowerCase());
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // pyproject.toml — lightweight parsing for [project] dependencies
99
+ const pyprojectContent = (0, files_js_1.readFile)(path_1.default.join(targetDir, "pyproject.toml"));
100
+ if (pyprojectContent) {
101
+ // Match dependencies = ["django>=4.0", "fastapi", ...]
102
+ const depsMatch = pyprojectContent.match(/dependencies\s*=\s*\[([\s\S]*?)\]/);
103
+ if (depsMatch) {
104
+ const entries = depsMatch[1].match(/"([^"]+)"/g);
105
+ if (entries) {
106
+ for (const entry of entries) {
107
+ const name = entry.replace(/"/g, "").match(/^([a-zA-Z0-9_-]+)/);
108
+ if (name) {
109
+ deps.add(name[1].toLowerCase());
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ // Pipfile — lightweight parsing
116
+ const pipfileContent = (0, files_js_1.readFile)(path_1.default.join(targetDir, "Pipfile"));
117
+ if (pipfileContent) {
118
+ const lines = pipfileContent.split("\n");
119
+ let inPackages = false;
120
+ for (const line of lines) {
121
+ if (line.match(/^\[packages\]/) || line.match(/^\[dev-packages\]/)) {
122
+ inPackages = true;
123
+ continue;
124
+ }
125
+ if (line.match(/^\[/) && inPackages) {
126
+ inPackages = false;
127
+ continue;
128
+ }
129
+ if (inPackages) {
130
+ const match = line.match(/^([a-zA-Z0-9_-]+)\s*=/);
131
+ if (match) {
132
+ deps.add(match[1].toLowerCase());
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+ function parseRubyDeps(targetDir, deps) {
139
+ const content = (0, files_js_1.readFile)(path_1.default.join(targetDir, "Gemfile"));
140
+ if (!content)
141
+ return;
142
+ for (const line of content.split("\n")) {
143
+ // Match: gem 'rails', '~> 7.0' or gem "rails"
144
+ const match = line.match(/^\s*gem\s+['"]([a-zA-Z0-9_-]+)['"]/);
145
+ if (match) {
146
+ deps.add(match[1]);
147
+ }
148
+ }
149
+ }
150
+ function parseGoDeps(targetDir, deps) {
151
+ const content = (0, files_js_1.readFile)(path_1.default.join(targetDir, "go.mod"));
152
+ if (!content)
153
+ return;
154
+ for (const line of content.split("\n")) {
155
+ const trimmed = line.trim();
156
+ // Match require lines: github.com/foo/bar v1.2.3
157
+ if (trimmed && !trimmed.startsWith("//") && !trimmed.startsWith("module")) {
158
+ const match = trimmed.match(/^([^\s]+)\s+v/);
159
+ if (match) {
160
+ deps.add(match[1]);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ function parseRustDeps(targetDir, deps) {
166
+ const content = (0, files_js_1.readFile)(path_1.default.join(targetDir, "Cargo.toml"));
167
+ if (!content)
168
+ return;
169
+ const lines = content.split("\n");
170
+ let inDeps = false;
171
+ for (const line of lines) {
172
+ if (line.match(/^\[dependencies\]/) ||
173
+ line.match(/^\[dev-dependencies\]/) ||
174
+ line.match(/^\[build-dependencies\]/)) {
175
+ inDeps = true;
176
+ continue;
177
+ }
178
+ if (line.match(/^\[/) && inDeps) {
179
+ inDeps = false;
180
+ continue;
181
+ }
182
+ if (inDeps) {
183
+ const match = line.match(/^([a-zA-Z0-9_-]+)\s*=/);
184
+ if (match) {
185
+ deps.add(match[1]);
186
+ }
187
+ }
188
+ }
189
+ }
190
+ function parseJavaDeps(targetDir, deps) {
191
+ // pom.xml — lightweight parsing for artifactId
192
+ const pomContent = (0, files_js_1.readFile)(path_1.default.join(targetDir, "pom.xml"));
193
+ if (pomContent) {
194
+ const matches = pomContent.match(/<artifactId>([^<]+)<\/artifactId>/g);
195
+ if (matches) {
196
+ for (const match of matches) {
197
+ const name = match.replace(/<\/?artifactId>/g, "");
198
+ deps.add(name);
199
+ }
200
+ }
201
+ }
202
+ // build.gradle — lightweight parsing for implementation/api deps
203
+ for (const gradleFile of ["build.gradle", "build.gradle.kts"]) {
204
+ const gradleContent = (0, files_js_1.readFile)(path_1.default.join(targetDir, gradleFile));
205
+ if (gradleContent) {
206
+ // Match: implementation 'group:artifact:version' or implementation("group:artifact:version")
207
+ const matches = gradleContent.match(/(?:implementation|api|compileOnly|testImplementation)\s*[("']+([^"')]+)/g);
208
+ if (matches) {
209
+ for (const match of matches) {
210
+ const depStr = match.replace(/(?:implementation|api|compileOnly|testImplementation)\s*[("']+/, "");
211
+ const parts = depStr.split(":");
212
+ if (parts.length >= 2) {
213
+ deps.add(parts[1]); // artifactId
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
220
+ /**
221
+ * Matches detected project state against the skill catalog.
222
+ * Returns recommended skills with the reason they were detected.
223
+ */
224
+ function matchSkills(targetDir, catalog, ecosystems, dependencies) {
225
+ const recommendations = [];
226
+ for (const skill of catalog.skills) {
227
+ // Skip if ecosystem doesn't match
228
+ if (!ecosystems.includes(skill.ecosystem)) {
229
+ continue;
230
+ }
231
+ // Check dependency matches
232
+ const depMatch = skill.detectDeps.find((dep) => dependencies.has(dep));
233
+ if (depMatch) {
234
+ recommendations.push({
235
+ id: skill.id,
236
+ name: skill.name,
237
+ description: skill.description,
238
+ source: skill.source,
239
+ detectedBy: `dependency: ${depMatch}`,
240
+ });
241
+ continue;
242
+ }
243
+ // Check file matches
244
+ const fileMatch = skill.detectFiles.find((f) => (0, files_js_1.fileExists)(path_1.default.join(targetDir, f)));
245
+ if (fileMatch) {
246
+ recommendations.push({
247
+ id: skill.id,
248
+ name: skill.name,
249
+ description: skill.description,
250
+ source: skill.source,
251
+ detectedBy: `file: ${fileMatch}`,
252
+ });
253
+ }
254
+ }
255
+ return recommendations;
256
+ }
257
+ /**
258
+ * Formats skill recommendations as a human-readable report.
259
+ */
260
+ function formatRecommendations(recommendations, ecosystems, catalog) {
261
+ const lines = [];
262
+ lines.push("Skill recommendations\n");
263
+ if (ecosystems.length > 0) {
264
+ const ecoLabels = ecosystems.map((e) => catalog.ecosystems[e]?.label || e).join(", ");
265
+ lines.push(` Detected stack: ${ecoLabels}\n`);
266
+ }
267
+ if (recommendations.length === 0) {
268
+ lines.push(" No matching skills found for your project's dependencies.");
269
+ return lines.join("\n");
270
+ }
271
+ for (const rec of recommendations) {
272
+ lines.push(` [SKILL] ${rec.name}`);
273
+ lines.push(` ${rec.description}`);
274
+ lines.push(` Source: ${rec.source} | Detected via ${rec.detectedBy}`);
275
+ lines.push("");
276
+ }
277
+ return lines.join("\n");
278
+ }
279
+ /**
280
+ * Full scan: detect ecosystems, parse deps, match skills, return recommendations.
281
+ * This is the main entry point used by init.ts.
282
+ */
283
+ function scanSkillRecommendations(targetDir) {
284
+ const catalog = loadCatalog();
285
+ const ecosystems = detectEcosystems(targetDir, catalog);
286
+ const dependencies = parseDependencies(targetDir, ecosystems);
287
+ const recommendations = matchSkills(targetDir, catalog, ecosystems, dependencies);
288
+ return { recommendations, ecosystems, catalog };
289
+ }
290
+ //# sourceMappingURL=skill-recommendations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-recommendations.js","sourceRoot":"","sources":["../src/skill-recommendations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fredericboyer/dev-team",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Adversarial AI agent team for any project — installs Claude Code agents, hooks, and skills that enforce quality through productive friction",
5
5
  "main": "dist/init.js",
6
6
  "types": "dist/init.d.ts",
@@ -15,7 +15,7 @@
15
15
  "scripts": {
16
16
  "build": "tsc",
17
17
  "pretest": "npm run build",
18
- "test": "node --test tests/unit/files.test.js tests/unit/hooks.test.js tests/unit/scan.test.js tests/unit/create-agent.test.js tests/unit/cli.test.js tests/integration/fresh-project.test.js tests/integration/idempotency.test.js tests/integration/update.test.js tests/scenarios/node-project.test.js tests/scenarios/python-project.test.js tests/scenarios/upgrade-path.test.js",
18
+ "test": "node --test tests/unit/files.test.js tests/unit/hooks.test.js tests/unit/scan.test.js tests/unit/skill-recommendations.test.js tests/unit/create-agent.test.js tests/unit/cli.test.js tests/integration/fresh-project.test.js tests/integration/idempotency.test.js tests/integration/update.test.js tests/scenarios/node-project.test.js tests/scenarios/python-project.test.js tests/scenarios/upgrade-path.test.js",
19
19
  "test:unit": "node --test tests/unit/files.test.js tests/unit/hooks.test.js",
20
20
  "test:integration": "node --test tests/integration/fresh-project.test.js tests/integration/idempotency.test.js",
21
21
  "test:scenarios": "node --test tests/scenarios/node-project.test.js tests/scenarios/python-project.test.js tests/scenarios/upgrade-path.test.js",
@@ -68,6 +68,7 @@ Do NOT skip this. Do NOT treat hook output as optional. If you believe a review
68
68
  - `/dev-team:review` — orchestrated multi-agent parallel review of changes
69
69
  - `/dev-team:audit` — full codebase security + quality + tooling audit
70
70
  - `/dev-team:merge` — merge a PR with Copilot review handling, auto-merge, CI monitoring, and post-merge actions
71
+ - `/dev-team:security-status` — check code scanning, Dependabot, and secret scanning alerts
71
72
  - `/dev-team:assess` — audit knowledge base health (learnings, agent memory, CLAUDE.md)
72
73
 
73
74
  ### Learnings — where to write what
@@ -81,6 +82,6 @@ All project and process learnings MUST go to in-repo files, NOT to machine-local
81
82
  | Formal architecture decisions | `docs/adr/` | ADR format, not learnings |
82
83
  | User-specific preferences only | Machine-local memory | Personal style, name, role — things that vary per person, not per project |
83
84
 
84
- When the human gives feedback about process, coding style, or tool behavior: write it to `dev-team-learnings.md`. Only use machine-local memory for things that are truly personal and would not apply to another developer on the same project.
85
+ When the human gives feedback about process, coding style, or tool behavior: write it to `.dev-team/learnings.md`. Only use machine-local memory for things that are truly personal and would not apply to another developer on the same project.
85
86
 
86
87
  <!-- dev-team:end -->
@@ -16,8 +16,9 @@ Your philosophy: "Red, green, refactor — in that order, every time."
16
16
 
17
17
  Before writing tests:
18
18
  1. Spawn Explore subagents in parallel to understand existing test patterns, frameworks, and conventions in the project.
19
- 2. If @dev-team-knuth has produced findings, use them as your starting point they identify the gaps, you fill them.
20
- 3. Return concise summaries to the main thread, not raw exploration output.
19
+ 2. **Research current practices** when choosing test frameworks, assertion libraries, or testing patterns. Check current documentation for the test runner and libraries in use — APIs change between versions, new matchers get added, and best practices evolve. Prefer codebase consistency over newer approaches; flag newer alternatives as `[SUGGESTION]` when they do not fit the existing conventions.
20
+ 3. If @dev-team-knuth has produced findings, use them as your starting point — they identify the gaps, you fill them.
21
+ 4. Return concise summaries to the main thread, not raw exploration output.
21
22
 
22
23
  After completing tests:
23
24
  1. Run the tests and report results.
@@ -69,7 +70,11 @@ After completing work, write key learnings to your MEMORY.md:
69
70
 
70
71
  ## Learnings Output (mandatory)
71
72
 
72
- After completing work, you MUST output a "Learnings" section in your response:
73
- - What was surprising or non-obvious about this task?
74
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
75
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
73
+ After completing work, you MUST:
74
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-beck/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
75
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
76
+ - What was surprising or non-obvious about this task?
77
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
78
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
79
+
80
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -16,9 +16,10 @@ Your philosophy: "A release without a changelog is a surprise. A surprise in pro
16
16
 
17
17
  Before making release decisions:
18
18
  1. Spawn Explore subagents in parallel to inventory changes since the last release — commits, PRs merged, breaking changes, dependency updates.
19
- 2. Read package.json/pyproject.toml/Cargo.toml (or equivalent) for the current version.
20
- 3. Check for existing changelogs, release notes, and tagging conventions.
21
- 4. Return concise findings to the main thread.
19
+ 2. **Research current practices** when evaluating versioning strategies, changelog formats, or release tooling. Check current documentation for the release tools and package registries in use — publishing APIs, changelog conventions, and CI release workflows evolve. Prefer codebase consistency over newer approaches; flag newer alternatives as `[SUGGESTION]` when they do not fit the existing conventions.
20
+ 3. Read package.json/pyproject.toml/Cargo.toml (or equivalent) for the current version.
21
+ 4. Check for existing changelogs, release notes, and tagging conventions.
22
+ 5. Return concise findings to the main thread.
22
23
 
23
24
  After completing release work:
24
25
  1. Verify all prerequisites are met before tagging.
@@ -68,7 +69,11 @@ After completing work, write key learnings to your MEMORY.md:
68
69
 
69
70
  ## Learnings Output (mandatory)
70
71
 
71
- After completing work, you MUST output a "Learnings" section in your response:
72
- - What was surprising or non-obvious about this task?
73
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
74
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
72
+ After completing work, you MUST:
73
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-conway/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
74
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
75
+ - What was surprising or non-obvious about this task?
76
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
77
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
78
+
79
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -41,6 +41,7 @@ You always check for:
41
41
  - **Onboarding friction**: How fast can a new developer go from clone to productive? Are there undocumented setup steps or missing scripts?
42
42
  - **Toolchain bloat**: Is every tool earning its keep? Remove tools that add more cognitive load than they remove.
43
43
  - **Portability**: Cross-platform CI coverage, platform-specific behavior detection, and environment portability. A build that only passes on the author's machine is not a build.
44
+ - **Skill recommendations**: Has the project stack changed since the last scan? Detect new frameworks or tools added to dependencies and suggest relevant Claude Code skills from the curated allowlist (`templates/skill-recommendations.json`). Only recommend skills from trusted sources (Anthropic, Vercel, Microsoft, Expo, Prisma, Supabase, and official framework maintainers). Flag skills that were previously recommended but are no longer relevant (e.g., a framework was removed from dependencies).
44
45
 
45
46
  ## Challenge style
46
47
 
@@ -89,7 +90,11 @@ After completing work, write key learnings to your MEMORY.md:
89
90
 
90
91
  ## Learnings Output (mandatory)
91
92
 
92
- After completing work, you MUST output a "Learnings" section in your response:
93
- - What was surprising or non-obvious about this task?
94
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
95
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
93
+ After completing work, you MUST:
94
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-deming/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
95
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
96
+ - What was surprising or non-obvious about this task?
97
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
98
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
99
+
100
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -90,11 +90,15 @@ If the implementing agent disagrees with a reviewer:
90
90
  ### 6. Complete
91
91
 
92
92
  When no `[DEFECT]` findings remain:
93
- 1. Spawn **@dev-team-borges** (Librarian) to review memory freshness, cross-agent coherence, and system improvement opportunities. This is mandatoryBorges runs at the end of every task.
94
- 2. Summarize what was implemented and what was reviewed.
95
- 3. Report any remaining `[RISK]` or `[SUGGESTION]` items, including Borges's recommendations.
96
- 4. List which agents reviewed and their verdicts.
97
- 5. Write learnings to agent memory files.
93
+ 1. **Deliver the work**: Ensure the task is complete end-to-end. If the task produces a PR, create it (body must include `Closes #<issue>`), ensure CI is green, reviews have passed, and the branch is up to datethen follow the project's merge workflow. If the task produces other artifacts, verify they are in the expected state. Work is not done until the deliverable is delivered — not just created.
94
+ 2. **Clean up worktree**: If the work was done in a worktree, clean it up after the branch is pushed and the PR is created. Do not wait for merge to clean the worktree.
95
+ 3. Spawn **@dev-team-borges** (Librarian) to review memory freshness, cross-agent coherence, and system improvement opportunities. This is mandatory — Borges runs at the end of every task.
96
+ 4. Summarize what was implemented and what was reviewed.
97
+ 5. Report any remaining `[RISK]` or `[SUGGESTION]` items, including Borges's recommendations.
98
+ 6. List which agents reviewed and their verdicts.
99
+ 7. Write learnings to agent memory files.
100
+
101
+ **Task is complete only when the deliverable is delivered.** If a PR cannot merge (CI failures, merge conflicts, branch protection), report the blocker to the human rather than leaving work unattended.
98
102
 
99
103
  ### Parallel orchestration
100
104
 
@@ -114,15 +118,11 @@ When working on multiple issues simultaneously (see ADR-019):
114
118
 
115
119
  Conflict groups (issues with file overlaps) execute sequentially within the group but in parallel with other groups and independent issues.
116
120
 
117
- ### PR merge workflow
121
+ ### Completing work
118
122
 
119
- When managing PRs through to merge, use `/dev-team:merge` for the merge step. This skill handles:
120
- - Checking and addressing Copilot review comments
121
- - Setting auto-merge with squash strategy
122
- - Monitoring CI status and reporting when merged
123
- - Post-merge actions (pull latest main, report merge SHA, suggest next work)
123
+ Work is done when the deliverable is delivered — not just created. For PRs, this means merged (or ready-to-merge per the project's workflow). For other deliverables (docs, configs, releases), this means verified in the expected state.
124
124
 
125
- Do not manually run `gh pr merge` or poll CI status -- delegate to the merge skill.
125
+ Follow the project's merge workflow. Some projects use auto-merge, others require manual approval. If the project has a `/dev-team:merge` skill or similar automation, use it. Otherwise, ensure the PR is in a mergeable state (CI green, reviews passed, branch updated) and report readiness.
126
126
 
127
127
  ## Focus areas
128
128
 
@@ -71,7 +71,11 @@ After completing work, write key learnings to your MEMORY.md:
71
71
 
72
72
  ## Learnings Output (mandatory)
73
73
 
74
- After completing work, you MUST output a "Learnings" section in your response:
75
- - What was surprising or non-obvious about this task?
76
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
77
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
74
+ After completing work, you MUST:
75
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-hamilton/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
76
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
77
+ - What was surprising or non-obvious about this task?
78
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
79
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
80
+
81
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -69,7 +69,11 @@ After completing work, write key learnings to your MEMORY.md:
69
69
 
70
70
  ## Learnings Output (mandatory)
71
71
 
72
- After completing work, you MUST output a "Learnings" section in your response:
73
- - What was surprising or non-obvious about this task?
74
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
75
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
72
+ After completing work, you MUST:
73
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-mori/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
74
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
75
+ - What was surprising or non-obvious about this task?
76
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
77
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
78
+
79
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -16,8 +16,9 @@ Your philosophy: "If the docs say one thing and the code does another, both are
16
16
 
17
17
  Before reviewing or writing documentation:
18
18
  1. Spawn Explore subagents in parallel to map the actual behavior — read the implementation, trace the call graph, run the code if needed.
19
- 2. Compare actual behavior against existing documentation. Every claim in the docs must be verifiable in the code.
20
- 3. Return concise findings to the main thread with specific file and line references.
19
+ 2. **Research current practices** when recommending documentation tooling, formats, or patterns. Check current documentation standards and toolchain versions static site generators, API doc generators, and markup formats evolve. Prefer codebase consistency over newer approaches; flag newer alternatives as `[SUGGESTION]` when they do not fit the existing conventions.
20
+ 3. Compare actual behavior against existing documentation. Every claim in the docs must be verifiable in the code.
21
+ 4. Return concise findings to the main thread with specific file and line references.
21
22
 
22
23
  After completing documentation work:
23
24
  1. Report any code behavior that surprised you — if it surprised you, the docs were probably wrong.
@@ -83,7 +84,11 @@ After completing work, write key learnings to your MEMORY.md:
83
84
 
84
85
  ## Learnings Output (mandatory)
85
86
 
86
- After completing work, you MUST output a "Learnings" section in your response:
87
- - What was surprising or non-obvious about this task?
88
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
89
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
87
+ After completing work, you MUST:
88
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-tufte/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
89
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
90
+ - What was surprising or non-obvious about this task?
91
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
92
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
93
+
94
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -69,7 +69,11 @@ After completing work, write key learnings to your MEMORY.md:
69
69
 
70
70
  ## Learnings Output (mandatory)
71
71
 
72
- After completing work, you MUST output a "Learnings" section in your response:
73
- - What was surprising or non-obvious about this task?
74
- - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
75
- - Where should this be recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
72
+ After completing work, you MUST:
73
+ 1. **Write to your MEMORY.md** (`.dev-team/agent-memory/dev-team-voss/MEMORY.md`) with key learnings from this task. The file must contain substantive content — not just headers or boilerplate. Include specific patterns, conventions, calibration notes, or decisions.
74
+ 2. **Output a "Learnings" section** in your response summarizing what was written:
75
+ - What was surprising or non-obvious about this task?
76
+ - What should be calibrated for next time? (e.g., assumptions that were wrong, patterns that worked well)
77
+ - Where was this recorded? (`agent memory` for agent-specific calibration / `team learnings` for shared process rules / `ADR` for architectural decisions)
78
+
79
+ If you skip the MEMORY.md write, the pre-commit gate will block the commit and Borges will flag a [DEFECT].
@@ -88,10 +88,51 @@ const hasImplFiles = files.some(
88
88
  (f) => /\.(js|ts|jsx|tsx|py|rb|go|java|rs)$/.test(f) && !/\.(test|spec)\./.test(f),
89
89
  );
90
90
 
91
- const hasMemoryUpdates = files.some(
91
+ const memoryFiles = files.filter(
92
92
  (f) => f.endsWith("learnings.md") || /agent-memory\/.*MEMORY\.md$/.test(f),
93
93
  );
94
94
 
95
+ const hasMemoryUpdates = memoryFiles.length > 0;
96
+
97
+ /**
98
+ * Check whether a memory file has substantive content beyond boilerplate.
99
+ * Returns true if the file contains at least one non-empty, non-header,
100
+ * non-boilerplate line.
101
+ */
102
+ function hasSubstantiveContent(filePath) {
103
+ try {
104
+ const absPath = path.join(process.cwd(), filePath);
105
+ // Reject symlinks to avoid reading unintended files
106
+ const stat = fs.lstatSync(absPath);
107
+ if (stat.isSymbolicLink()) return false;
108
+
109
+ const content = fs.readFileSync(absPath, "utf-8");
110
+ const lines = content.split("\n");
111
+ const substantiveLines = lines.filter((line) => {
112
+ const trimmed = line.trim();
113
+ if (!trimmed) return false; // empty line
114
+ if (/^#+\s/.test(trimmed)) return false; // markdown header
115
+ if (trimmed === "---") return false; // horizontal rule / frontmatter delimiter
116
+ return true;
117
+ });
118
+ return substantiveLines.length > 0;
119
+ } catch {
120
+ return false; // file doesn't exist or can't be read — not substantive
121
+ }
122
+ }
123
+
124
+ // If memory files are staged, verify they have substantive content
125
+ if (hasMemoryUpdates) {
126
+ const allSubstantive = memoryFiles.every((f) => hasSubstantiveContent(f));
127
+ if (!allSubstantive) {
128
+ console.error(
129
+ "[dev-team pre-commit] BLOCKED: Memory files were staged but contain only boilerplate (headers, empty lines). " +
130
+ "Add substantive content — patterns, conventions, calibration notes, or decisions learned from this work.",
131
+ );
132
+ process.exit(1);
133
+ }
134
+ }
135
+
95
136
  if (hasImplFiles && !hasMemoryUpdates) {
96
137
  // Check for .memory-reviewed override marker
97
138
  const markerPath = path.join(process.cwd(), ".dev-team", ".memory-reviewed");
@@ -0,0 +1,169 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "description": "Curated allowlist of trusted Claude Code skill sources. Only official framework and tool maintainer skills are included.",
4
+ "trustedSources": [
5
+ "anthropic",
6
+ "vercel",
7
+ "microsoft",
8
+ "expo",
9
+ "prisma",
10
+ "supabase",
11
+ "playwright",
12
+ "vuejs",
13
+ "rust-lang"
14
+ ],
15
+ "ecosystems": {
16
+ "node": {
17
+ "detectFiles": ["package.json"],
18
+ "label": "Node.js / JavaScript / TypeScript"
19
+ },
20
+ "python": {
21
+ "detectFiles": ["requirements.txt", "pyproject.toml", "setup.py", "Pipfile", "setup.cfg"],
22
+ "label": "Python"
23
+ },
24
+ "ruby": {
25
+ "detectFiles": ["Gemfile"],
26
+ "label": "Ruby"
27
+ },
28
+ "go": {
29
+ "detectFiles": ["go.mod"],
30
+ "label": "Go"
31
+ },
32
+ "rust": {
33
+ "detectFiles": ["Cargo.toml"],
34
+ "label": "Rust"
35
+ },
36
+ "java": {
37
+ "detectFiles": ["pom.xml", "build.gradle", "build.gradle.kts"],
38
+ "label": "Java / Kotlin"
39
+ }
40
+ },
41
+ "skills": [
42
+ {
43
+ "id": "react",
44
+ "name": "React Documentation Lookup",
45
+ "description": "Search React documentation for components, hooks, and patterns",
46
+ "source": "vercel",
47
+ "detectDeps": ["react", "react-dom"],
48
+ "detectFiles": [],
49
+ "ecosystem": "node"
50
+ },
51
+ {
52
+ "id": "nextjs",
53
+ "name": "Next.js Documentation Lookup",
54
+ "description": "Search Next.js docs for routing, data fetching, and deployment",
55
+ "source": "vercel",
56
+ "detectDeps": ["next"],
57
+ "detectFiles": ["next.config.js", "next.config.mjs", "next.config.ts"],
58
+ "ecosystem": "node"
59
+ },
60
+ {
61
+ "id": "vue",
62
+ "name": "Vue.js Documentation Lookup",
63
+ "description": "Search Vue.js docs for components, composition API, and reactivity",
64
+ "source": "vuejs",
65
+ "detectDeps": ["vue"],
66
+ "detectFiles": ["vue.config.js", "vite.config.ts"],
67
+ "ecosystem": "node"
68
+ },
69
+ {
70
+ "id": "expo",
71
+ "name": "Expo Documentation Lookup",
72
+ "description": "Search Expo docs for React Native, EAS Build, and native modules",
73
+ "source": "expo",
74
+ "detectDeps": ["expo"],
75
+ "detectFiles": ["app.json", "app.config.js", "app.config.ts"],
76
+ "ecosystem": "node"
77
+ },
78
+ {
79
+ "id": "prisma",
80
+ "name": "Prisma Documentation Lookup",
81
+ "description": "Search Prisma docs for schema modeling, migrations, and client usage",
82
+ "source": "prisma",
83
+ "detectDeps": ["prisma", "@prisma/client"],
84
+ "detectFiles": ["prisma/schema.prisma"],
85
+ "ecosystem": "node"
86
+ },
87
+ {
88
+ "id": "supabase",
89
+ "name": "Supabase Documentation Lookup",
90
+ "description": "Search Supabase docs for auth, database, storage, and edge functions",
91
+ "source": "supabase",
92
+ "detectDeps": ["@supabase/supabase-js"],
93
+ "detectFiles": ["supabase/config.toml"],
94
+ "ecosystem": "node"
95
+ },
96
+ {
97
+ "id": "playwright",
98
+ "name": "Playwright Test Runner",
99
+ "description": "Search Playwright docs for browser automation, selectors, and test patterns",
100
+ "source": "microsoft",
101
+ "detectDeps": ["@playwright/test", "playwright"],
102
+ "detectFiles": ["playwright.config.ts", "playwright.config.js"],
103
+ "ecosystem": "node"
104
+ },
105
+ {
106
+ "id": "angular",
107
+ "name": "Angular Documentation Lookup",
108
+ "description": "Search Angular docs for components, services, and dependency injection",
109
+ "source": "microsoft",
110
+ "detectDeps": ["@angular/core"],
111
+ "detectFiles": ["angular.json"],
112
+ "ecosystem": "node"
113
+ },
114
+ {
115
+ "id": "django",
116
+ "name": "Django Documentation Lookup",
117
+ "description": "Search Django docs for models, views, templates, and ORM",
118
+ "source": "anthropic",
119
+ "detectDeps": ["django", "Django"],
120
+ "detectFiles": ["manage.py"],
121
+ "ecosystem": "python"
122
+ },
123
+ {
124
+ "id": "fastapi",
125
+ "name": "FastAPI Documentation Lookup",
126
+ "description": "Search FastAPI docs for endpoints, dependency injection, and async patterns",
127
+ "source": "anthropic",
128
+ "detectDeps": ["fastapi"],
129
+ "detectFiles": [],
130
+ "ecosystem": "python"
131
+ },
132
+ {
133
+ "id": "flask",
134
+ "name": "Flask Documentation Lookup",
135
+ "description": "Search Flask docs for routing, blueprints, and extensions",
136
+ "source": "anthropic",
137
+ "detectDeps": ["flask", "Flask"],
138
+ "detectFiles": [],
139
+ "ecosystem": "python"
140
+ },
141
+ {
142
+ "id": "rails",
143
+ "name": "Ruby on Rails Documentation Lookup",
144
+ "description": "Search Rails docs for ActiveRecord, controllers, and migrations",
145
+ "source": "anthropic",
146
+ "detectDeps": ["rails"],
147
+ "detectFiles": ["config/routes.rb", "bin/rails"],
148
+ "ecosystem": "ruby"
149
+ },
150
+ {
151
+ "id": "rust-analyzer",
152
+ "name": "Rust Documentation Lookup",
153
+ "description": "Search Rust docs for ownership, traits, async, and crate APIs",
154
+ "source": "rust-lang",
155
+ "detectDeps": [],
156
+ "detectFiles": ["Cargo.toml"],
157
+ "ecosystem": "rust"
158
+ },
159
+ {
160
+ "id": "spring-boot",
161
+ "name": "Spring Boot Documentation Lookup",
162
+ "description": "Search Spring Boot docs for auto-configuration, REST APIs, and data access",
163
+ "source": "anthropic",
164
+ "detectDeps": ["spring-boot-starter"],
165
+ "detectFiles": [],
166
+ "ecosystem": "java"
167
+ }
168
+ ]
169
+ }
@@ -76,4 +76,5 @@ Before starting the review, check for open security alerts: run `/dev-team:secur
76
76
  After the review report is delivered:
77
77
  1. You MUST spawn **@dev-team-borges** (Librarian) as the final step to review memory freshness and capture any learnings from the review findings. Do NOT skip this.
78
78
  2. If Borges was not spawned, the review is INCOMPLETE.
79
- 3. Include Borges's recommendations in the final report.
79
+ 3. **Borges memory gate**: If Borges reports that any participating agent's MEMORY.md is empty or contains only boilerplate, this is a **[DEFECT]** that blocks review completion. The agent must write substantive learnings before the review can be marked done.
80
+ 4. Include Borges's recommendations in the final report.
@@ -82,8 +82,11 @@ Before starting work, check for open security alerts: run `/dev-team:security-st
82
82
  ## Completion
83
83
 
84
84
  When the loop exits:
85
- 1. You MUST spawn **@dev-team-borges** (Librarian) as the final step to review memory freshness, cross-agent coherence, and system improvement opportunities. Do NOT skip this.
86
- 2. If Borges was not spawned, the task is INCOMPLETE.
87
- 3. Summarize what was accomplished across all iterations.
88
- 4. Report any remaining `[RISK]` or `[SUGGESTION]` items, including Borges's recommendations.
89
- 5. Write key learnings to agent MEMORY.md files.
85
+ 1. **Deliver the work**: If changes are on a feature branch, create the PR (body must include `Closes #<issue>`). Ensure the PR is ready to merge: CI green, reviews passed, branch up to date. Then follow the project's merge workflow — use `/dev-team:merge` if the project has it configured, otherwise report readiness. If merge fails (CI failures, merge conflicts, branch protection), report the blocker to the human rather than leaving work unattended.
86
+ 2. **Clean up worktree**: If the work was done in a worktree, clean it up after the branch is pushed and the PR is created. Do not wait for merge to clean the worktree.
87
+ 3. You MUST spawn **@dev-team-borges** (Librarian) as the final step to review memory freshness, cross-agent coherence, and system improvement opportunities. Do NOT skip this.
88
+ 4. If Borges was not spawned, the task is INCOMPLETE.
89
+ 5. **Borges memory gate**: If Borges reports that any implementing agent's MEMORY.md is empty or contains only boilerplate after a task, this is a **[DEFECT]** that blocks task completion. The implementing agent must write substantive learnings before the task can be marked done. Empty agent memory after a task means the enforcement pipeline failed.
90
+ 6. Summarize what was accomplished across all iterations.
91
+ 7. Report any remaining `[RISK]` or `[SUGGESTION]` items, including Borges's recommendations.
92
+ 8. Write key learnings to agent MEMORY.md files.