@juancr11/sibu 0.15.1 → 0.17.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 (42) hide show
  1. package/bin/modules/skill-selection-management/stop-managing-file/handler.js +2 -8
  2. package/bin/modules/sync-review/action-prompt.js +14 -1
  3. package/bin/modules/sync-review/handler.js +54 -7
  4. package/bin/modules/sync-review/index.js +1 -0
  5. package/bin/modules/sync-review/sync-preview.js +4 -4
  6. package/bin/modules/sync-review/unsupported-agent-cleanup.js +57 -0
  7. package/bin/modules/template-catalog-rendering/index.js +1 -1
  8. package/bin/modules/template-catalog-rendering/templates.js +83 -4
  9. package/bin/modules/workflow-mutation-readiness/workflow-mutation-readiness.js +9 -0
  10. package/bin/modules/workflow-target-planning/catalog.js +140 -26
  11. package/bin/modules/workflow-target-planning/index.js +2 -2
  12. package/bin/modules/workflow-target-planning/workflow-targets.js +42 -9
  13. package/package.json +1 -1
  14. package/templates/.claude/agents/github-exporter.md +18 -0
  15. package/templates/.claude/agents/notion-exporter.md +18 -0
  16. package/templates/.claude/agents/sibu-implementation-executor.md +30 -0
  17. package/templates/.claude/agents/sibu-implementation-planner.md +30 -0
  18. package/templates/.claude/settings.json +16 -0
  19. package/templates/.codex/agents/github-exporter.toml +20 -0
  20. package/templates/.codex/agents/notion-exporter.toml +20 -0
  21. package/templates/.codex/agents/sibu-implementation-executor.toml +30 -0
  22. package/templates/.codex/agents/sibu-implementation-planner.toml +30 -0
  23. package/templates/.codex/hooks.json +17 -0
  24. package/templates/.gemini/agents/github-exporter.md +18 -0
  25. package/templates/.gemini/agents/notion-exporter.md +18 -0
  26. package/templates/.gemini/agents/sibu-implementation-executor.md +30 -0
  27. package/templates/.gemini/agents/sibu-implementation-planner.md +30 -0
  28. package/templates/.gemini/settings.json +17 -0
  29. package/templates/AGENTS.md +5 -5
  30. package/templates/manifest.json +162 -22
  31. package/templates/skills/ai-implementation-executor-toolbox/SKILL.md +78 -0
  32. package/templates/skills/ai-implementation-plan-executor/SKILL.md +64 -108
  33. package/templates/skills/ai-implementation-planner/SKILL.md +55 -138
  34. package/templates/skills/ai-implementation-planner-toolbox/SKILL.md +78 -0
  35. package/templates/skills/business-domain-model-writer/SKILL.md +313 -0
  36. package/templates/skills/capabilities-map-writer/SKILL.md +271 -0
  37. package/templates/skills/deep-module-map-writer/SKILL.md +50 -14
  38. package/templates/skills/export-to-github/SKILL.md +36 -1
  39. package/templates/skills/export-to-notion/SKILL.md +36 -1
  40. package/templates/skills/feature-brief-writer/SKILL.md +72 -32
  41. package/templates/skills/technical-design-writer/SKILL.md +10 -10
  42. package/templates/skills/ux-expert/SKILL.md +62 -17
@@ -5,7 +5,6 @@ export const MANDATORY_SKILLS = [
5
5
  codex: '.agents/skills/clean-code/SKILL.md',
6
6
  gemini: '.agents/skills/clean-code/SKILL.md',
7
7
  claude: '.agents/skills/clean-code/SKILL.md',
8
- windsurf: '.agents/skills/clean-code/SKILL.md',
9
8
  },
10
9
  },
11
10
  {
@@ -14,7 +13,22 @@ export const MANDATORY_SKILLS = [
14
13
  codex: '.agents/skills/product-vision-writer/SKILL.md',
15
14
  gemini: '.agents/skills/product-vision-writer/SKILL.md',
16
15
  claude: '.agents/skills/product-vision-writer/SKILL.md',
17
- windsurf: '.agents/skills/product-vision-writer/SKILL.md',
16
+ },
17
+ },
18
+ {
19
+ templateRelativePath: 'skills/business-domain-model-writer/SKILL.md',
20
+ targetRelativePathsByAgent: {
21
+ codex: '.agents/skills/business-domain-model-writer/SKILL.md',
22
+ gemini: '.agents/skills/business-domain-model-writer/SKILL.md',
23
+ claude: '.agents/skills/business-domain-model-writer/SKILL.md',
24
+ },
25
+ },
26
+ {
27
+ templateRelativePath: 'skills/capabilities-map-writer/SKILL.md',
28
+ targetRelativePathsByAgent: {
29
+ codex: '.agents/skills/capabilities-map-writer/SKILL.md',
30
+ gemini: '.agents/skills/capabilities-map-writer/SKILL.md',
31
+ claude: '.agents/skills/capabilities-map-writer/SKILL.md',
18
32
  },
19
33
  },
20
34
  {
@@ -23,7 +37,6 @@ export const MANDATORY_SKILLS = [
23
37
  codex: '.agents/skills/deep-module-map-writer/SKILL.md',
24
38
  gemini: '.agents/skills/deep-module-map-writer/SKILL.md',
25
39
  claude: '.agents/skills/deep-module-map-writer/SKILL.md',
26
- windsurf: '.agents/skills/deep-module-map-writer/SKILL.md',
27
40
  },
28
41
  },
29
42
  {
@@ -32,7 +45,6 @@ export const MANDATORY_SKILLS = [
32
45
  codex: '.agents/skills/feature-brief-writer/SKILL.md',
33
46
  gemini: '.agents/skills/feature-brief-writer/SKILL.md',
34
47
  claude: '.agents/skills/feature-brief-writer/SKILL.md',
35
- windsurf: '.agents/skills/feature-brief-writer/SKILL.md',
36
48
  },
37
49
  },
38
50
  {
@@ -41,7 +53,6 @@ export const MANDATORY_SKILLS = [
41
53
  codex: '.agents/skills/technical-design-writer/SKILL.md',
42
54
  gemini: '.agents/skills/technical-design-writer/SKILL.md',
43
55
  claude: '.agents/skills/technical-design-writer/SKILL.md',
44
- windsurf: '.agents/skills/technical-design-writer/SKILL.md',
45
56
  },
46
57
  },
47
58
  {
@@ -50,7 +61,6 @@ export const MANDATORY_SKILLS = [
50
61
  codex: '.agents/skills/scrum-master-planner/SKILL.md',
51
62
  gemini: '.agents/skills/scrum-master-planner/SKILL.md',
52
63
  claude: '.agents/skills/scrum-master-planner/SKILL.md',
53
- windsurf: '.agents/skills/scrum-master-planner/SKILL.md',
54
64
  },
55
65
  },
56
66
  {
@@ -59,7 +69,38 @@ export const MANDATORY_SKILLS = [
59
69
  codex: '.agents/skills/ai-implementation-planner/SKILL.md',
60
70
  gemini: '.agents/skills/ai-implementation-planner/SKILL.md',
61
71
  claude: '.agents/skills/ai-implementation-planner/SKILL.md',
62
- windsurf: '.agents/skills/ai-implementation-planner/SKILL.md',
72
+ },
73
+ supplementalTargetsByAgent: {
74
+ codex: [
75
+ {
76
+ templateRelativePath: 'skills/ai-implementation-planner-toolbox/SKILL.md',
77
+ targetRelativePath: '.agents/skills/ai-implementation-planner-toolbox/SKILL.md',
78
+ },
79
+ {
80
+ templateRelativePath: '.codex/agents/sibu-implementation-planner.toml',
81
+ targetRelativePath: '.codex/agents/sibu-implementation-planner.toml',
82
+ },
83
+ ],
84
+ gemini: [
85
+ {
86
+ templateRelativePath: 'skills/ai-implementation-planner-toolbox/SKILL.md',
87
+ targetRelativePath: '.agents/skills/ai-implementation-planner-toolbox/SKILL.md',
88
+ },
89
+ {
90
+ templateRelativePath: '.gemini/agents/sibu-implementation-planner.md',
91
+ targetRelativePath: '.gemini/agents/sibu-implementation-planner.md',
92
+ },
93
+ ],
94
+ claude: [
95
+ {
96
+ templateRelativePath: 'skills/ai-implementation-planner-toolbox/SKILL.md',
97
+ targetRelativePath: '.agents/skills/ai-implementation-planner-toolbox/SKILL.md',
98
+ },
99
+ {
100
+ templateRelativePath: '.claude/agents/sibu-implementation-planner.md',
101
+ targetRelativePath: '.claude/agents/sibu-implementation-planner.md',
102
+ },
103
+ ],
63
104
  },
64
105
  },
65
106
  {
@@ -68,7 +109,38 @@ export const MANDATORY_SKILLS = [
68
109
  codex: '.agents/skills/ai-implementation-plan-executor/SKILL.md',
69
110
  gemini: '.agents/skills/ai-implementation-plan-executor/SKILL.md',
70
111
  claude: '.agents/skills/ai-implementation-plan-executor/SKILL.md',
71
- windsurf: '.agents/skills/ai-implementation-plan-executor/SKILL.md',
112
+ },
113
+ supplementalTargetsByAgent: {
114
+ codex: [
115
+ {
116
+ templateRelativePath: 'skills/ai-implementation-executor-toolbox/SKILL.md',
117
+ targetRelativePath: '.agents/skills/ai-implementation-executor-toolbox/SKILL.md',
118
+ },
119
+ {
120
+ templateRelativePath: '.codex/agents/sibu-implementation-executor.toml',
121
+ targetRelativePath: '.codex/agents/sibu-implementation-executor.toml',
122
+ },
123
+ ],
124
+ gemini: [
125
+ {
126
+ templateRelativePath: 'skills/ai-implementation-executor-toolbox/SKILL.md',
127
+ targetRelativePath: '.agents/skills/ai-implementation-executor-toolbox/SKILL.md',
128
+ },
129
+ {
130
+ templateRelativePath: '.gemini/agents/sibu-implementation-executor.md',
131
+ targetRelativePath: '.gemini/agents/sibu-implementation-executor.md',
132
+ },
133
+ ],
134
+ claude: [
135
+ {
136
+ templateRelativePath: 'skills/ai-implementation-executor-toolbox/SKILL.md',
137
+ targetRelativePath: '.agents/skills/ai-implementation-executor-toolbox/SKILL.md',
138
+ },
139
+ {
140
+ templateRelativePath: '.claude/agents/sibu-implementation-executor.md',
141
+ targetRelativePath: '.claude/agents/sibu-implementation-executor.md',
142
+ },
143
+ ],
72
144
  },
73
145
  },
74
146
  {
@@ -77,10 +149,26 @@ export const MANDATORY_SKILLS = [
77
149
  codex: '.agents/skills/feature-idea-capture/SKILL.md',
78
150
  gemini: '.agents/skills/feature-idea-capture/SKILL.md',
79
151
  claude: '.agents/skills/feature-idea-capture/SKILL.md',
80
- windsurf: '.agents/skills/feature-idea-capture/SKILL.md',
81
152
  },
82
153
  },
83
154
  ];
155
+ export const SESSION_START_HOOKS = [
156
+ {
157
+ agentId: 'codex',
158
+ templateRelativePath: '.codex/hooks.json',
159
+ targetRelativePath: '.codex/hooks.json',
160
+ },
161
+ {
162
+ agentId: 'gemini',
163
+ templateRelativePath: '.gemini/settings.json',
164
+ targetRelativePath: '.gemini/settings.json',
165
+ },
166
+ {
167
+ agentId: 'claude',
168
+ templateRelativePath: '.claude/settings.json',
169
+ targetRelativePath: '.claude/settings.json',
170
+ },
171
+ ];
84
172
  export const SELECTABLE_LANGUAGE_SKILLS = [
85
173
  {
86
174
  id: 'typescript',
@@ -92,7 +180,6 @@ export const SELECTABLE_LANGUAGE_SKILLS = [
92
180
  codex: '.agents/skills/typescript/SKILL.md',
93
181
  gemini: '.agents/skills/typescript/SKILL.md',
94
182
  claude: '.agents/skills/typescript/SKILL.md',
95
- windsurf: '.agents/skills/typescript/SKILL.md',
96
183
  },
97
184
  },
98
185
  {
@@ -105,7 +192,6 @@ export const SELECTABLE_LANGUAGE_SKILLS = [
105
192
  codex: '.agents/skills/golang/SKILL.md',
106
193
  gemini: '.agents/skills/golang/SKILL.md',
107
194
  claude: '.agents/skills/golang/SKILL.md',
108
- windsurf: '.agents/skills/golang/SKILL.md',
109
195
  },
110
196
  },
111
197
  ];
@@ -120,7 +206,6 @@ export const SELECTABLE_DATABASE_SKILLS = [
120
206
  codex: '.agents/skills/postgresql-expert/SKILL.md',
121
207
  gemini: '.agents/skills/postgresql-expert/SKILL.md',
122
208
  claude: '.agents/skills/postgresql-expert/SKILL.md',
123
- windsurf: '.agents/skills/postgresql-expert/SKILL.md',
124
209
  },
125
210
  },
126
211
  ];
@@ -135,7 +220,6 @@ export const SELECTABLE_FRAMEWORK_SKILLS = [
135
220
  codex: '.agents/skills/react/SKILL.md',
136
221
  gemini: '.agents/skills/react/SKILL.md',
137
222
  claude: '.agents/skills/react/SKILL.md',
138
- windsurf: '.agents/skills/react/SKILL.md',
139
223
  },
140
224
  },
141
225
  {
@@ -148,7 +232,6 @@ export const SELECTABLE_FRAMEWORK_SKILLS = [
148
232
  codex: '.agents/skills/nextjs/SKILL.md',
149
233
  gemini: '.agents/skills/nextjs/SKILL.md',
150
234
  claude: '.agents/skills/nextjs/SKILL.md',
151
- windsurf: '.agents/skills/nextjs/SKILL.md',
152
235
  },
153
236
  },
154
237
  ];
@@ -163,7 +246,6 @@ export const SELECTABLE_ARCHITECTURE_SKILLS = [
163
246
  codex: '.agents/skills/ddd-hexagonal/SKILL.md',
164
247
  gemini: '.agents/skills/ddd-hexagonal/SKILL.md',
165
248
  claude: '.agents/skills/ddd-hexagonal/SKILL.md',
166
- windsurf: '.agents/skills/ddd-hexagonal/SKILL.md',
167
249
  },
168
250
  },
169
251
  {
@@ -176,7 +258,6 @@ export const SELECTABLE_ARCHITECTURE_SKILLS = [
176
258
  codex: '.agents/skills/command-pattern/SKILL.md',
177
259
  gemini: '.agents/skills/command-pattern/SKILL.md',
178
260
  claude: '.agents/skills/command-pattern/SKILL.md',
179
- windsurf: '.agents/skills/command-pattern/SKILL.md',
180
261
  },
181
262
  },
182
263
  {
@@ -189,7 +270,6 @@ export const SELECTABLE_ARCHITECTURE_SKILLS = [
189
270
  codex: '.agents/skills/layered-architecture/SKILL.md',
190
271
  gemini: '.agents/skills/layered-architecture/SKILL.md',
191
272
  claude: '.agents/skills/layered-architecture/SKILL.md',
192
- windsurf: '.agents/skills/layered-architecture/SKILL.md',
193
273
  },
194
274
  },
195
275
  ];
@@ -204,7 +284,6 @@ export const SELECTABLE_WORKFLOW_SKILLS = [
204
284
  codex: '.agents/skills/ai-prompt-engineer-master/SKILL.md',
205
285
  gemini: '.agents/skills/ai-prompt-engineer-master/SKILL.md',
206
286
  claude: '.agents/skills/ai-prompt-engineer-master/SKILL.md',
207
- windsurf: '.agents/skills/ai-prompt-engineer-master/SKILL.md',
208
287
  },
209
288
  },
210
289
  {
@@ -217,7 +296,6 @@ export const SELECTABLE_WORKFLOW_SKILLS = [
217
296
  codex: '.agents/skills/ux-expert/SKILL.md',
218
297
  gemini: '.agents/skills/ux-expert/SKILL.md',
219
298
  claude: '.agents/skills/ux-expert/SKILL.md',
220
- windsurf: '.agents/skills/ux-expert/SKILL.md',
221
299
  },
222
300
  },
223
301
  {
@@ -230,7 +308,26 @@ export const SELECTABLE_WORKFLOW_SKILLS = [
230
308
  codex: '.agents/skills/export-to-github/SKILL.md',
231
309
  gemini: '.agents/skills/export-to-github/SKILL.md',
232
310
  claude: '.agents/skills/export-to-github/SKILL.md',
233
- windsurf: '.agents/skills/export-to-github/SKILL.md',
311
+ },
312
+ supplementalTargetsByAgent: {
313
+ codex: [
314
+ {
315
+ templateRelativePath: '.codex/agents/github-exporter.toml',
316
+ targetRelativePath: '.codex/agents/github-exporter.toml',
317
+ },
318
+ ],
319
+ gemini: [
320
+ {
321
+ templateRelativePath: '.gemini/agents/github-exporter.md',
322
+ targetRelativePath: '.gemini/agents/github-exporter.md',
323
+ },
324
+ ],
325
+ claude: [
326
+ {
327
+ templateRelativePath: '.claude/agents/github-exporter.md',
328
+ targetRelativePath: '.claude/agents/github-exporter.md',
329
+ },
330
+ ],
234
331
  },
235
332
  },
236
333
  {
@@ -243,7 +340,26 @@ export const SELECTABLE_WORKFLOW_SKILLS = [
243
340
  codex: '.agents/skills/export-to-notion/SKILL.md',
244
341
  gemini: '.agents/skills/export-to-notion/SKILL.md',
245
342
  claude: '.agents/skills/export-to-notion/SKILL.md',
246
- windsurf: '.agents/skills/export-to-notion/SKILL.md',
343
+ },
344
+ supplementalTargetsByAgent: {
345
+ codex: [
346
+ {
347
+ templateRelativePath: '.codex/agents/notion-exporter.toml',
348
+ targetRelativePath: '.codex/agents/notion-exporter.toml',
349
+ },
350
+ ],
351
+ gemini: [
352
+ {
353
+ templateRelativePath: '.gemini/agents/notion-exporter.md',
354
+ targetRelativePath: '.gemini/agents/notion-exporter.md',
355
+ },
356
+ ],
357
+ claude: [
358
+ {
359
+ templateRelativePath: '.claude/agents/notion-exporter.md',
360
+ targetRelativePath: '.claude/agents/notion-exporter.md',
361
+ },
362
+ ],
247
363
  },
248
364
  },
249
365
  ];
@@ -295,6 +411,7 @@ export const SUPPORTED_AGENTS = [
295
411
  description: 'Create .codex/config.toml pointing Codex to AGENTS.md',
296
412
  targetRelativePath: '.codex/config.toml',
297
413
  templateRelativePath: '.codex/config.toml',
414
+ supportsForegroundWorkers: true,
298
415
  },
299
416
  {
300
417
  id: 'gemini',
@@ -302,6 +419,7 @@ export const SUPPORTED_AGENTS = [
302
419
  description: 'Create GEMINI.md that delegates to AGENTS.md',
303
420
  targetRelativePath: 'GEMINI.md',
304
421
  templateRelativePath: 'GEMINI.md',
422
+ supportsForegroundWorkers: true,
305
423
  },
306
424
  {
307
425
  id: 'claude',
@@ -309,11 +427,7 @@ export const SUPPORTED_AGENTS = [
309
427
  description: 'Create CLAUDE.md that delegates to AGENTS.md',
310
428
  targetRelativePath: 'CLAUDE.md',
311
429
  templateRelativePath: 'CLAUDE.md',
312
- },
313
- {
314
- id: 'windsurf',
315
- name: 'Windsurf',
316
- description: 'Use root AGENTS.md and shared .agents/skills/ discovery',
430
+ supportsForegroundWorkers: true,
317
431
  },
318
432
  ];
319
433
  export function resolveSelectableMcpServerById(serverId) {
@@ -1,2 +1,2 @@
1
- export { MANDATORY_SKILLS, SELECTABLE_ARCHITECTURE_SKILLS, SELECTABLE_DATABASE_SKILLS, SELECTABLE_FRAMEWORK_SKILLS, SELECTABLE_LANGUAGE_SKILLS, SELECTABLE_MCP_SERVERS, SELECTABLE_WORKFLOW_SKILLS, SUPPORTED_AGENTS, getMcpServersRequiredByWorkflowSkills, getWorkflowSkillsImpliedByMcpServers, resolveSelectableMcpServerById, resolveSelectableSkillById, } from './catalog.js';
2
- export { getSelectedAgentsFromState, getSelectedArchitectureSkillFromState, getSelectedDatabaseSkillsFromState, getSelectedFrameworkSkillsFromState, getSelectedLanguageSkillsFromState, getSelectedMcpServersFromState, getSelectedMcpTargetsForAgents, getSelectedSkillTargetsForAgents, getSelectedWorkflowSkillsFromState, getWorkflowTargets, renderMissingWorkflowFiles, writeSibuState, } from './workflow-targets.js';
1
+ export { MANDATORY_SKILLS, SELECTABLE_ARCHITECTURE_SKILLS, SELECTABLE_DATABASE_SKILLS, SELECTABLE_FRAMEWORK_SKILLS, SELECTABLE_LANGUAGE_SKILLS, SELECTABLE_MCP_SERVERS, SELECTABLE_WORKFLOW_SKILLS, SESSION_START_HOOKS, SUPPORTED_AGENTS, getMcpServersRequiredByWorkflowSkills, getWorkflowSkillsImpliedByMcpServers, resolveSelectableMcpServerById, resolveSelectableSkillById, } from './catalog.js';
2
+ export { getSelectedAgentsFromState, getSelectedArchitectureSkillFromState, getSelectedDatabaseSkillsFromState, getSelectedFrameworkSkillsFromState, getSelectedLanguageSkillsFromState, getSelectedMcpServersFromState, getSelectedMcpTargetsForAgents, getSelectedSkillTargetsForAgents, getSelectedWorkflowSkillsFromState, getSkillTargetsForAgents, getWorkflowTargets, renderMissingWorkflowFiles, writeSibuState, } from './workflow-targets.js';
@@ -1,11 +1,11 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { SIBU_VERSION } from '../version-advisory/index.js';
4
- import { MANDATORY_SKILLS, SELECTABLE_ARCHITECTURE_SKILLS, SELECTABLE_DATABASE_SKILLS, SELECTABLE_FRAMEWORK_SKILLS, SELECTABLE_LANGUAGE_SKILLS, SELECTABLE_MCP_SERVERS, SELECTABLE_WORKFLOW_SKILLS, SUPPORTED_AGENTS, } from './index.js';
4
+ import { MANDATORY_SKILLS, SELECTABLE_ARCHITECTURE_SKILLS, SELECTABLE_DATABASE_SKILLS, SELECTABLE_FRAMEWORK_SKILLS, SELECTABLE_LANGUAGE_SKILLS, SELECTABLE_MCP_SERVERS, SELECTABLE_WORKFLOW_SKILLS, SESSION_START_HOOKS, SUPPORTED_AGENTS, } from './index.js';
5
5
  import { sha256 } from '../../shared/hash.js';
6
6
  import { removeUndefinedFields } from '../../shared/object.js';
7
7
  import { readExistingState } from '../workflow-state-registry/index.js';
8
- import { getTemplateVersion, readTemplate, readTemplateManifest, renderMcpConfig, renderSkillRouting } from '../template-catalog-rendering/index.js';
8
+ import { getTemplateVersion, readTemplate, readTemplateManifest, renderMcpConfig, renderSkillRouting, renderWorkerToolboxRoutingPlaceholders } from '../template-catalog-rendering/index.js';
9
9
  export function getSelectedLanguageSkillsFromState(state) {
10
10
  return SELECTABLE_LANGUAGE_SKILLS.filter((skill) => state.selectedLanguageSkills?.includes(skill.id));
11
11
  }
@@ -36,18 +36,36 @@ export function getSelectedSkillTargetsForAgents(selectedAgents, selectedLanguag
36
36
  ];
37
37
  for (const agent of selectedAgents) {
38
38
  for (const skill of selectedSkills) {
39
- const targetRelativePath = skill.targetRelativePathsByAgent[agent.id];
40
- if (!targetRelativePath) {
41
- continue;
39
+ for (const skillTarget of getSkillTargetsForAgent(skill, agent.id)) {
40
+ skillTargets.set(skillTarget.targetRelativePath, skillTarget);
42
41
  }
43
- skillTargets.set(targetRelativePath, {
44
- targetRelativePath,
45
- templateRelativePath: skill.templateRelativePath,
46
- });
47
42
  }
48
43
  }
49
44
  return [...skillTargets.values()];
50
45
  }
46
+ export function getSkillTargetsForAgents(skill, selectedAgents) {
47
+ const skillTargets = new Map();
48
+ for (const agent of selectedAgents) {
49
+ for (const skillTarget of getSkillTargetsForAgent(skill, agent.id)) {
50
+ skillTargets.set(skillTarget.targetRelativePath, skillTarget);
51
+ }
52
+ }
53
+ return [...skillTargets.values()];
54
+ }
55
+ function getSkillTargetsForAgent(skill, agentId) {
56
+ const targets = [];
57
+ const targetRelativePath = skill.targetRelativePathsByAgent[agentId];
58
+ if (targetRelativePath) {
59
+ targets.push({
60
+ targetRelativePath,
61
+ templateRelativePath: skill.templateRelativePath,
62
+ });
63
+ }
64
+ for (const supplementalTarget of skill.supplementalTargetsByAgent?.[agentId] ?? []) {
65
+ targets.push(supplementalTarget);
66
+ }
67
+ return targets;
68
+ }
51
69
  export function getSelectedMcpTargetsForAgents(selectedAgents, selectedMcpServers) {
52
70
  if (selectedMcpServers.length === 0) {
53
71
  return [];
@@ -83,6 +101,13 @@ export function getSelectedMcpTargetsForAgents(selectedAgents, selectedMcpServer
83
101
  return [];
84
102
  });
85
103
  }
104
+ function getSessionStartHookTargetsForAgents(selectedAgents) {
105
+ const selectedAgentIds = new Set(selectedAgents.map((agent) => agent.id));
106
+ return SESSION_START_HOOKS.filter((hookTemplate) => selectedAgentIds.has(hookTemplate.agentId)).map((hookTemplate) => ({
107
+ targetRelativePath: hookTemplate.targetRelativePath,
108
+ templateRelativePath: hookTemplate.templateRelativePath,
109
+ }));
110
+ }
86
111
  export function getWorkflowTargets(rootPath, selectedAgents, selectedLanguageSkills = [], selectedFrameworkSkills = [], selectedArchitectureSkill, selectedWorkflowSkills = [], selectedDatabaseSkills = [], selectedMcpServers = []) {
87
112
  const targets = [
88
113
  {
@@ -113,6 +138,13 @@ export function getWorkflowTargets(rootPath, selectedAgents, selectedLanguageSki
113
138
  requiresProjectOverview: false,
114
139
  targetKind: 'skill',
115
140
  })),
141
+ ...getSessionStartHookTargetsForAgents(selectedAgents).map((hookTarget) => ({
142
+ label: hookTarget.targetRelativePath,
143
+ targetPath: path.join(rootPath, hookTarget.targetRelativePath),
144
+ templateRelativePath: hookTarget.templateRelativePath,
145
+ requiresProjectOverview: false,
146
+ targetKind: 'agent-support',
147
+ })),
116
148
  ];
117
149
  for (const mcpTarget of getSelectedMcpTargetsForAgents(selectedAgents, selectedMcpServers)) {
118
150
  const targetPath = path.join(rootPath, mcpTarget.targetRelativePath);
@@ -151,6 +183,7 @@ export function renderMissingWorkflowFiles({ missingTargets, overview, selectedL
151
183
  contents = contents.replace('{{PROJECT_OVERVIEW}}', overview.trim());
152
184
  }
153
185
  contents = renderSkillRouting(contents, selectedLanguageSkills, selectedFrameworkSkills, selectedArchitectureSkill, selectedWorkflowSkills, selectedDatabaseSkills);
186
+ contents = renderWorkerToolboxRoutingPlaceholders(contents, selectedLanguageSkills, selectedFrameworkSkills, selectedArchitectureSkill, selectedWorkflowSkills, selectedDatabaseSkills);
154
187
  return {
155
188
  label: target.label,
156
189
  targetPath: target.targetPath,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juancr11/sibu",
3
- "version": "0.15.1",
3
+ "version": "0.17.0",
4
4
  "description": "CLI for setting up a local AI-augmented development workflow.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: github-exporter
3
+ description: Exports Sibu feature epics and user stories to GitHub issues with narrow task context and no local repository writes.
4
+ ---
5
+
6
+ You are the GitHub exporter sub-agent for Sibu-managed workflows.
7
+
8
+ Use only the specific export packet from the main agent: feature slug or explicit planning artifact paths, target repository resolved from the current repo, the no-local-write rule, and the expected final output format. Do not rely on or request the main agent's full conversation context.
9
+
10
+ Scope:
11
+ - Export only local Epic briefs and User Story Markdown files for the requested feature.
12
+ - Read local Markdown files as source of truth.
13
+ - Write only to GitHub issues and native sub-issue relationships.
14
+ - Ask for explicit opt-in before creating or modifying GitHub issues or sub-issues.
15
+ - Do not modify local repository files or write GitHub URLs back into Markdown by default.
16
+ - Return concise created issue URLs or numbers, sub-issue relationship results, and any errors.
17
+
18
+ If issue creation, issue ID access, native sub-issue mutation, or target repository resolution is unavailable, fail clearly and do not fall back to labels, loose links, projects, or checklists.
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: notion-exporter
3
+ description: Exports Sibu feature documentation to Notion with narrow task context and no local repository writes.
4
+ ---
5
+
6
+ You are the Notion exporter sub-agent for Sibu-managed workflows.
7
+
8
+ Use only the specific export packet from the main agent: feature slug or explicit source paths, Notion destination details, the no-local-write rule, and the expected final output format. Do not rely on or request the main agent's full conversation context.
9
+
10
+ Scope:
11
+ - Export only allowed feature documentation artifacts: feature brief, UX design, and technical design.
12
+ - Read local Markdown files as source of truth.
13
+ - Write only to Notion.
14
+ - Ask for explicit opt-in before creating or modifying Notion pages.
15
+ - Do not modify local repository files or write Notion URLs back into Markdown by default.
16
+ - Return concise created or updated Notion URLs and any errors.
17
+
18
+ If required Notion MCP capabilities, destination details, or source files are missing, fail clearly instead of inventing content or destinations.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: sibu-implementation-executor
3
+ description: Executes one Sibu story plan in a fresh, bounded context using the executor toolbox skill.
4
+ ---
5
+
6
+ You are the Sibu implementation executor worker.
7
+
8
+ Communication mode: use light verbose mode for all progress updates and final reporting.
9
+
10
+ Light verbose mode rules:
11
+ - Show the plan once at the beginning, with at most 5 bullets.
12
+ - Announce only major phase changes.
13
+ - Mention skills or tools only when first used.
14
+ - Do not explain obvious file reads.
15
+ - Summarize batches of work instead of every action.
16
+ - Report decisions, not thought processes.
17
+ - Show only test failures and final test results.
18
+ - Give a concise final summary that satisfies the worker's required final output format.
19
+
20
+ Use only the narrow executor packet from the main agent. Do not rely on or request the main agent's full conversation context.
21
+
22
+ The packet must include exactly one User Story path or one story-local `.impl_plan/` folder, required source artifact paths, the executor toolbox skill path, required and optional skill paths, distilled constraints, approval and commit rules, and the expected final output format. If required packet fields are missing or ambiguous, stop and ask the main agent for the missing packet fields.
23
+
24
+ Before execution:
25
+ - Read and follow the executor toolbox skill from the packet.
26
+ - Read required skill files listed in the packet, including clean-code.
27
+ - Read optional installed skill files only when relevant to the story, step files, source artifacts, or touched files.
28
+ - Treat distilled constraints as binding for this task.
29
+
30
+ Execute exactly one story plan. You may edit the local working tree and run validation. Never approve your own work, write approval metadata, run git commit, run git stash, or run git reset.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: sibu-implementation-planner
3
+ description: Plans one Sibu User Story in a fresh, bounded context using the planner toolbox skill.
4
+ ---
5
+
6
+ You are the Sibu implementation planner worker.
7
+
8
+ Communication mode: use light verbose mode for all progress updates and final reporting.
9
+
10
+ Light verbose mode rules:
11
+ - Show the plan once at the beginning, with at most 5 bullets.
12
+ - Announce only major phase changes.
13
+ - Mention skills or tools only when first used.
14
+ - Do not explain obvious file reads.
15
+ - Summarize batches of work instead of every action.
16
+ - Report decisions, not thought processes.
17
+ - Show only test failures and final test results.
18
+ - Give a concise final summary that satisfies the worker's required final output format.
19
+
20
+ Use only the narrow planner packet from the main agent. Do not rely on or request the main agent's full conversation context.
21
+
22
+ The packet must include exactly one User Story path, required source artifact paths, the planner toolbox skill path, required and optional skill paths, distilled constraints, and the expected final output format. If required packet fields are missing or ambiguous, stop and ask the main agent for the missing packet fields.
23
+
24
+ Before planning:
25
+ - Read and follow the planner toolbox skill from the packet.
26
+ - Read required skill files listed in the packet, including clean-code.
27
+ - Read optional installed skill files only when relevant to the story or source artifacts.
28
+ - Treat distilled constraints as binding for this task.
29
+
30
+ Plan exactly one story. Write only story-local implementation plan files. Never write production code or unrelated artifacts.
@@ -0,0 +1,16 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "sh -lc 'if latest=$(npm view @juancr11/sibu version 2>/dev/null); then echo \"Sibu latest version: $latest\"; else echo \"Sibu version check unavailable; continuing to sibu doctor.\"; fi; sibu doctor || true'",
10
+ "timeout": 60
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,20 @@
1
+ name = "github-exporter"
2
+ description = "Exports Sibu feature epics and user stories to GitHub issues with narrow task context and no local repository writes."
3
+
4
+ developer_instructions = """
5
+ You are the GitHub exporter sub-agent for Sibu-managed workflows.
6
+
7
+ Use only the specific export packet from the main agent: feature slug or explicit planning artifact paths, target repository resolved from the current repo, the no-local-write rule, and the expected final output format. Do not rely on or request the main agent's full conversation context.
8
+
9
+ If the export packet is missing required source paths, destination details, mutation approval state, or expected output format, stop and ask the main agent for the missing packet. Do not infer missing export inputs from broader conversation history.
10
+
11
+ Scope:
12
+ - Export only local Epic briefs and User Story Markdown files for the requested feature.
13
+ - Read local Markdown files as source of truth.
14
+ - Write only to GitHub issues and native sub-issue relationships.
15
+ - Ask for explicit opt-in before creating or modifying GitHub issues or sub-issues.
16
+ - Do not modify local repository files or write GitHub URLs back into Markdown by default.
17
+ - Return concise created issue URLs or numbers, sub-issue relationship results, and any errors.
18
+
19
+ If issue creation, issue ID access, native sub-issue mutation, or target repository resolution is unavailable, fail clearly and do not fall back to labels, loose links, projects, or checklists.
20
+ """
@@ -0,0 +1,20 @@
1
+ name = "notion-exporter"
2
+ description = "Exports Sibu feature documentation to Notion with narrow task context and no local repository writes."
3
+
4
+ developer_instructions = """
5
+ You are the Notion exporter sub-agent for Sibu-managed workflows.
6
+
7
+ Use only the specific export packet from the main agent: feature slug or explicit source paths, Notion destination details, the no-local-write rule, and the expected final output format. Do not rely on or request the main agent's full conversation context.
8
+
9
+ If the export packet is missing required source paths, destination details, mutation approval state, or expected output format, stop and ask the main agent for the missing packet. Do not infer missing export inputs from broader conversation history.
10
+
11
+ Scope:
12
+ - Export only allowed feature documentation artifacts: feature brief, UX design, and technical design.
13
+ - Read local Markdown files as source of truth.
14
+ - Write only to Notion.
15
+ - Ask for explicit opt-in before creating or modifying Notion pages.
16
+ - Do not modify local repository files or write Notion URLs back into Markdown by default.
17
+ - Return concise created or updated Notion URLs and any errors.
18
+
19
+ If required Notion MCP capabilities, destination details, or source files are missing, fail clearly instead of inventing content or destinations.
20
+ """
@@ -0,0 +1,30 @@
1
+ name = "sibu-implementation-executor"
2
+ description = "Executes one Sibu story plan in a fresh, bounded context using the executor toolbox skill."
3
+
4
+ developer_instructions = """
5
+ You are the Sibu implementation executor worker.
6
+
7
+ Communication mode: use light verbose mode for all progress updates and final reporting.
8
+
9
+ Light verbose mode rules:
10
+ - Show the plan once at the beginning, with at most 5 bullets.
11
+ - Announce only major phase changes.
12
+ - Mention skills or tools only when first used.
13
+ - Do not explain obvious file reads.
14
+ - Summarize batches of work instead of every action.
15
+ - Report decisions, not thought processes.
16
+ - Show only test failures and final test results.
17
+ - Give a concise final summary that satisfies the worker's required final output format.
18
+
19
+ Use only the narrow executor packet from the main agent. Do not rely on or request the main agent's full conversation context.
20
+
21
+ The packet must include exactly one User Story path or one story-local `.impl_plan/` folder, required source artifact paths, the executor toolbox skill path, required and optional skill paths, distilled constraints, approval and commit rules, and the expected final output format. If required packet fields are missing or ambiguous, stop and ask the main agent for the missing packet fields.
22
+
23
+ Before execution:
24
+ - Read and follow the executor toolbox skill from the packet.
25
+ - Read required skill files listed in the packet, including clean-code.
26
+ - Read optional installed skill files only when relevant to the story, step files, source artifacts, or touched files.
27
+ - Treat distilled constraints as binding for this task.
28
+
29
+ Execute exactly one story plan. You may edit the local working tree and run validation. Never approve your own work, write approval metadata, run git commit, run git stash, or run git reset.
30
+ """