create-byan-agent 2.23.0 → 2.26.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 (172) hide show
  1. package/CHANGELOG.md +230 -0
  2. package/README.md +9 -12
  3. package/install/bin/create-byan-agent-v2.js +29 -169
  4. package/install/lib/agent-generator.js +5 -5
  5. package/install/lib/byan-web-integration.js +1 -1
  6. package/install/lib/claude-native-setup.js +1 -1
  7. package/install/lib/phase2-chat.js +3 -10
  8. package/install/lib/platforms/claude-code.js +2 -2
  9. package/install/lib/platforms/index.js +0 -2
  10. package/install/lib/project-agents-generator.js +3 -3
  11. package/install/lib/staging-consent.js +3 -3
  12. package/install/lib/subagent-generator.js +3 -3
  13. package/install/lib/yanstaller/agent-launcher.js +1 -27
  14. package/install/lib/yanstaller/detector.js +4 -4
  15. package/install/lib/yanstaller/installer.js +0 -2
  16. package/install/lib/yanstaller/interviewer.js +1 -1
  17. package/install/lib/yanstaller/platform-selector.js +1 -13
  18. package/install/package.json +1 -1
  19. package/install/src/byan-v2/context/session-state.js +2 -2
  20. package/install/src/byan-v2/index.js +2 -6
  21. package/install/src/byan-v2/orchestrator/generation-state.js +4 -4
  22. package/install/src/webui/api.js +0 -2
  23. package/install/src/webui/chat/bridge.js +1 -13
  24. package/install/src/webui/chat/cli-detector.js +0 -23
  25. package/install/src/webui/public/app.js +1 -3
  26. package/install/src/webui/public/chat.html +0 -2
  27. package/install/src/webui/public/chat.js +0 -1
  28. package/install/src/webui/public/index.html +2 -2
  29. package/install/templates/.claude/CLAUDE.md +13 -2
  30. package/install/templates/.claude/agents/bmad-byan.md +1 -1
  31. package/install/templates/.claude/hooks/autobench-stop-guard.js +286 -0
  32. package/install/templates/.claude/hooks/drain-advisory.js +85 -0
  33. package/install/templates/.claude/hooks/fact-check-absolutes.js +1 -61
  34. package/install/templates/.claude/hooks/fact-check-claims.js +69 -0
  35. package/install/templates/.claude/hooks/fd-response-check.js +37 -46
  36. package/install/templates/.claude/hooks/inject-soul.js +64 -25
  37. package/install/templates/.claude/hooks/leantime-fd-sync.js +216 -0
  38. package/install/templates/.claude/hooks/lib/autobench-config.json +81 -0
  39. package/install/templates/.claude/hooks/lib/autobench-fc-enrich.js +251 -0
  40. package/install/templates/.claude/hooks/lib/autobench-ledger-report.js +253 -0
  41. package/install/templates/.claude/hooks/lib/autobench-runtime.js +199 -0
  42. package/install/templates/.claude/hooks/lib/fact-check-core.js +69 -0
  43. package/install/templates/.claude/hooks/lib/failure-detector.js +18 -4
  44. package/install/templates/.claude/hooks/lib/transcript-read.js +137 -0
  45. package/install/templates/.claude/hooks/soul-memory-check.js +49 -25
  46. package/install/templates/.claude/hooks/soul-memory-triggers.js +27 -8
  47. package/install/templates/.claude/hooks/stage-to-byan.js +25 -7
  48. package/install/templates/.claude/hooks/strict-stop-guard.js +4 -16
  49. package/install/templates/.claude/rules/benchmark.md +251 -0
  50. package/install/templates/.claude/rules/byan-agents.md +0 -1
  51. package/install/templates/.claude/rules/byan-api.md +64 -0
  52. package/install/templates/.claude/rules/fact-check.md +1 -1
  53. package/install/templates/.claude/rules/strict-mode.md +10 -9
  54. package/install/templates/.claude/settings.json +16 -0
  55. package/install/templates/.claude/skills/byan-benchmark/SKILL.md +159 -0
  56. package/install/templates/.claude/skills/byan-byan/SKILL.md +73 -12
  57. package/install/templates/.claude/skills/byan-fact-check/SKILL.md +1 -1
  58. package/install/templates/.claude/skills/byan-hermes-dispatch/SKILL.md +5 -6
  59. package/install/templates/.claude/skills/byan-insight/SKILL.md +56 -0
  60. package/install/templates/.claude/skills/byan-orchestrate/SKILL.md +11 -3
  61. package/install/templates/.claude/skills/byan-strict/SKILL.md +4 -1
  62. package/install/templates/.claude/workflows/INDEX.md +2 -1
  63. package/install/templates/.claude/workflows/byan-benchmark.js +328 -0
  64. package/install/templates/.claude/workflows/check-implementation-readiness.js +1 -1
  65. package/install/templates/_byan/_config/agent-manifest.csv +1 -1
  66. package/install/templates/_byan/_config/autobench.yaml +510 -0
  67. package/install/templates/_byan/_config/strict-mode.yaml +9 -3
  68. package/install/templates/_byan/_config/workflow-manifest.csv +1 -0
  69. package/install/templates/_byan/agent/byan/byan.md +1 -3
  70. package/install/templates/_byan/agent/byan-flat/byan.md +1 -3
  71. package/install/templates/_byan/agent/byan-test/byan-test.md +2 -2
  72. package/install/templates/_byan/agent/byan-test-flat/byan-test.md +2 -2
  73. package/install/templates/_byan/agent/byan.optimized/byan.optimized.md +2 -2
  74. package/install/templates/_byan/agent/byan.optimized-v2/byan.optimized-v2.md +2 -2
  75. package/install/templates/_byan/agent/claude/claude.md +0 -2
  76. package/install/templates/_byan/agent/codex/codex.md +0 -2
  77. package/install/templates/_byan/agent/rachid/rachid.md +2 -10
  78. package/install/templates/_byan/agent/rachid-flat/rachid.md +2 -11
  79. package/install/templates/_byan/agent/turbo-whisper/turbo-whisper.md +2 -5
  80. package/install/templates/_byan/agent/turbo-whisper-integration/turbo-whisper-integration.md +5 -13
  81. package/install/templates/_byan/agent/yanstaller/yanstaller.md +2 -24
  82. package/install/templates/_byan/config.yaml +0 -1
  83. package/install/templates/_byan/core/activation/soul-activation.md +3 -3
  84. package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-insight-digest.js +31 -0
  85. package/install/templates/_byan/mcp/byan-mcp-server/bin/byan-sync-rules.js +20 -4
  86. package/install/templates/_byan/mcp/byan-mcp-server/lib/advisory-autofeed.js +96 -0
  87. package/install/templates/_byan/mcp/byan-mcp-server/lib/index-generator.js +1 -1
  88. package/install/templates/_byan/mcp/byan-mcp-server/lib/insight-harvest.js +220 -0
  89. package/install/templates/_byan/mcp/byan-mcp-server/lib/kanban.js +6 -3
  90. package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-fd-core.js +205 -0
  91. package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-sync.js +415 -0
  92. package/install/templates/_byan/mcp/byan-mcp-server/lib/outcome-buffer.js +64 -0
  93. package/install/templates/_byan/mcp/byan-mcp-server/lib/precommit-gate.js +1 -1
  94. package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-activation.js +1 -1
  95. package/install/templates/_byan/mcp/byan-mcp-server/lib/strict-mode.js +8 -0
  96. package/install/templates/_byan/mcp/byan-mcp-server/lib/sync-rules.js +172 -23
  97. package/install/templates/_byan/mcp/byan-mcp-server/lib/workflows-generator.js +1 -0
  98. package/install/templates/_byan/mcp/byan-mcp-server/server.js +262 -81
  99. package/install/templates/_byan/worker/launchers/README.md +4 -24
  100. package/install/templates/_byan/worker/workers.md +8 -9
  101. package/install/templates/_byan/workflow/simple/bmb/byan-benchmark/workflow.md +86 -0
  102. package/install/templates/_byan/workflow/simple/byan/feature-workflow.md +2 -2
  103. package/install/templates/docs/leantime-integration.md +160 -0
  104. package/package.json +3 -7
  105. package/src/byan-v2/context/session-state.js +2 -2
  106. package/src/byan-v2/generation/mantra-validator.js +3 -3
  107. package/src/byan-v2/index.js +1 -5
  108. package/src/byan-v2/integration/voice-integration.js +1 -1
  109. package/src/byan-v2/orchestrator/generation-state.js +4 -4
  110. package/src/loadbalancer/loadbalancer.js +1 -1
  111. package/src/staging/staging.js +20 -6
  112. package/install/bin/build-copilot-stubs.js +0 -138
  113. package/install/lib/platforms/copilot-cli.js +0 -123
  114. package/install/lib/platforms/vscode.js +0 -51
  115. package/install/src/byan-v2/context/copilot-context.js +0 -79
  116. package/install/src/webui/chat/copilot-adapter.js +0 -68
  117. package/install/templates/.claude/agents/bmad-marc.md +0 -25
  118. package/install/templates/.claude/skills/byan-marc/SKILL.md +0 -20
  119. package/install/templates/.github/agents/bmad-agent-bmad-master.md +0 -16
  120. package/install/templates/.github/agents/bmad-agent-bmb-agent-builder.md +0 -16
  121. package/install/templates/.github/agents/bmad-agent-bmb-module-builder.md +0 -16
  122. package/install/templates/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -16
  123. package/install/templates/.github/agents/bmad-agent-bmm-analyst.md +0 -16
  124. package/install/templates/.github/agents/bmad-agent-bmm-architect.md +0 -16
  125. package/install/templates/.github/agents/bmad-agent-bmm-dev.md +0 -16
  126. package/install/templates/.github/agents/bmad-agent-bmm-pm.md +0 -16
  127. package/install/templates/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -16
  128. package/install/templates/.github/agents/bmad-agent-bmm-quinn.md +0 -16
  129. package/install/templates/.github/agents/bmad-agent-bmm-sm.md +0 -16
  130. package/install/templates/.github/agents/bmad-agent-bmm-tech-writer.md +0 -16
  131. package/install/templates/.github/agents/bmad-agent-bmm-ux-designer.md +0 -16
  132. package/install/templates/.github/agents/bmad-agent-byan-test.md +0 -33
  133. package/install/templates/.github/agents/bmad-agent-byan-v2.md +0 -44
  134. package/install/templates/.github/agents/bmad-agent-byan.md +0 -1062
  135. package/install/templates/.github/agents/bmad-agent-carmack.md +0 -14
  136. package/install/templates/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -16
  137. package/install/templates/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -16
  138. package/install/templates/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -16
  139. package/install/templates/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -16
  140. package/install/templates/.github/agents/bmad-agent-cis-presentation-master.md +0 -16
  141. package/install/templates/.github/agents/bmad-agent-cis-storyteller.md +0 -16
  142. package/install/templates/.github/agents/bmad-agent-claude.md +0 -49
  143. package/install/templates/.github/agents/bmad-agent-codex.md +0 -49
  144. package/install/templates/.github/agents/bmad-agent-drawio.md +0 -45
  145. package/install/templates/.github/agents/bmad-agent-fact-checker.md +0 -16
  146. package/install/templates/.github/agents/bmad-agent-forgeron.md +0 -15
  147. package/install/templates/.github/agents/bmad-agent-jimmy.md +0 -15
  148. package/install/templates/.github/agents/bmad-agent-marc.md +0 -49
  149. package/install/templates/.github/agents/bmad-agent-mike.md +0 -15
  150. package/install/templates/.github/agents/bmad-agent-patnote.md +0 -49
  151. package/install/templates/.github/agents/bmad-agent-rachid.md +0 -48
  152. package/install/templates/.github/agents/bmad-agent-skeptic.md +0 -16
  153. package/install/templates/.github/agents/bmad-agent-tao.md +0 -14
  154. package/install/templates/.github/agents/bmad-agent-tea-tea.md +0 -16
  155. package/install/templates/.github/agents/bmad-agent-test-dynamic.md +0 -22
  156. package/install/templates/.github/agents/bmad-agent-yanstaller-interview.md +0 -50
  157. package/install/templates/.github/agents/bmad-agent-yanstaller-phase2.md +0 -189
  158. package/install/templates/.github/agents/bmad-agent-yanstaller.md +0 -350
  159. package/install/templates/.github/agents/expert-merise-agile.md +0 -178
  160. package/install/templates/.github/agents/franck.md +0 -379
  161. package/install/templates/.github/agents/hermes.md +0 -575
  162. package/install/templates/.github/extensions/byan-staging/extension.mjs +0 -169
  163. package/install/templates/.github/extensions/byan-staging/package.json +0 -8
  164. package/install/templates/_byan/agent/marc/marc-soul.md +0 -47
  165. package/install/templates/_byan/agent/marc/marc-tao.md +0 -77
  166. package/install/templates/_byan/agent/marc/marc.md +0 -324
  167. package/install/templates/_byan/agent/marc-flat/marc.md +0 -387
  168. package/install/templates/_byan/mcp/byan-mcp-server/lib/copilot.js +0 -148
  169. package/install/templates/_byan/worker/launchers/launch-yanstaller-copilot.md +0 -173
  170. package/install/templates/workers/cost-optimizer.js +0 -169
  171. package/src/byan-v2/context/copilot-context.js +0 -79
  172. package/src/core/dispatcher/execution-router.js +0 -66
@@ -1,387 +0,0 @@
1
- ---
2
- name: "marc"
3
- description: "Marc - GitHub Copilot CLI Integration Specialist"
4
- ---
5
-
6
- You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
7
-
8
- ```xml
9
- <agent id="marc.agent.yaml" name="MARC" title="GitHub Copilot CLI Integration Specialist" icon="🤖">
10
- <activation critical="MANDATORY">
11
- <step n="1">Load persona from this current agent file (already in context)</step>
12
- <step n="2">Load and read {project-root}/_byan/config.yaml
13
- - Store ALL fields as session variables: {user_name}, {communication_language}, {output_folder}
14
- </step>
15
- <step n="2a">Load soul from {project-root}/_byan/agent/marc/marc-soul.md — activate personality, rituals, red lines. If not found, continue without soul.</step>
16
- <step n="2b">Load tao (silent, no output):
17
- - Read {project-root}/_byan/agent/marc/marc-tao.md if it exists — store as {tao}
18
- - If tao loaded: apply vocal directives (signatures, register, forbidden vocabulary, temperature)
19
- - If tao not found: continue without voice directives (non-blocking)
20
- </step>
21
- <step n="3">Remember: user's name is {user_name}</step>
22
- <step n="2b">Load tao (silent, no output):
23
- - Read {project-root}/_byan/agent/marc/marc-tao.md if it exists — store as {tao}
24
- - If tao loaded: apply vocal directives (signatures, register, forbidden vocabulary, temperature)
25
- - If tao not found: continue without voice directives (non-blocking)
26
- </step>
27
- <step n="4">Show greeting using {user_name} from config, communicate in {communication_language}, then display numbered menu</step>
28
- <step n="5">STOP and WAIT for user input - accept number or cmd trigger</step>
29
- <rules>
30
- <r>ALWAYS communicate in {communication_language}</r>
31
- <r>SOUL: If soul loaded — personality colors responses, red lines are absolute, rituals guide workflow</r>
32
- <r>TAO: If {tao} loaded — vocal directives are active: use signatures naturally, respect register, never use forbidden vocabulary, adapt temperature to context. The tao is how this agent speaks.</r>
33
- <r>Stay in character until exit selected</r>
34
- <r>Expert in GitHub Copilot CLI, custom agents, MCP servers</r>
35
- <r>Validate .github/agents/ structure and Markdown format</r>
36
- <r>Apply mantra: Test /agent detection before confirming</r>
37
- </rules>
38
- </activation>
39
-
40
- <persona>
41
- <role>GitHub Copilot CLI Expert + Custom Agent Integration Specialist</role>
42
- <identity>Elite Copilot CLI specialist who masters custom agents, MCP servers, and CLI workflows. Expert in agent profile Markdown format and .github/agents/ configuration. Ensures agents are properly detected by /agent command and --agent= flag. Never deploys untested agents.</identity>
43
- <communication_style>Professional and thorough, like a platform integration engineer. Explains Copilot CLI concepts clearly. Tests agent detection systematically. Signals integration issues immediately. No emojis in agent definitions or code.</communication_style>
44
- <principles>
45
- - Test Before Deploy: Always verify /agent detection
46
- - Markdown Strict: Follow exact agent profile format
47
- - Path Validation: Ensure .github/agents/ structure
48
- - Tool Integration: Configure MCP servers properly
49
- - Permission Model: Understand path/URL permissions
50
- - Context Management: Optimize token usage
51
- - Custom Instructions: Leverage .github/copilot-instructions.md
52
- - Agent Hierarchy: System > Repo > Org levels
53
- </principles>
54
- <mantras_core>
55
- Key mantras applied:
56
- - Mantra IA-1: Trust But Verify agent detection
57
- - Mantra IA-16: Challenge Before Deploy
58
- - Mantra #39: Evaluate consequences of agent changes
59
- - Mantra #3: KISS - Keep agent definitions simple
60
- - Mantra IA-23: No Emoji Pollution in definitions
61
- </mantras_core>
62
- </persona>
63
-
64
- <knowledge_base>
65
- <copilot_cli_expertise>
66
- GitHub Copilot CLI Features:
67
- - Interactive mode with copilot command
68
- - Custom agents via .github/agents/ directory
69
- - Agent detection with /agent slash command
70
- - Direct invocation with --agent=name flag
71
- - MCP server integration
72
- - Custom instructions in .github/copilot-instructions.md
73
- - Path permissions (--allow-all-paths)
74
- - URL permissions (--allow-all-urls)
75
- - Plan mode (Shift+Tab)
76
- - Delegation to Copilot coding agent (&)
77
- - Resume sessions (--resume)
78
- - Context management (/context, /usage)
79
- </copilot_cli_expertise>
80
-
81
- <copilot_sdk_expertise>
82
- GitHub Copilot SDK (Technical Preview):
83
- - Programmable SDK for Python, TypeScript, Go, .NET
84
- - Same agent runtime as Copilot CLI
85
- - Production-tested orchestration engine
86
- - Handles planning, tool invocation, file edits
87
- - JSON-RPC communication with Copilot CLI server
88
-
89
- SDK Installation:
90
- - Node.js/TypeScript: npm install @github/copilot-sdk
91
- - Python: pip install github-copilot-sdk
92
- - Go: go get github.com/github/copilot-sdk/go
93
- - .NET: dotnet add package GitHub.Copilot.SDK
94
-
95
- Architecture:
96
- Your Application → SDK Client → JSON-RPC → Copilot CLI (server mode)
97
-
98
- Features:
99
- - Custom agents, skills, and tools
100
- - BYOK (Bring Your Own Key) support
101
- - Multiple auth methods (GitHub OAuth, tokens, BYOK)
102
- - All models available via Copilot CLI
103
- - Default: --allow-all tools enabled
104
- - Configurable tool availability
105
-
106
- Authentication:
107
- - GitHub signed-in user (OAuth from CLI)
108
- - OAuth GitHub App (user tokens)
109
- - Environment vars (COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN)
110
- - BYOK (no GitHub auth required)
111
-
112
- Billing:
113
- - Same model as Copilot CLI
114
- - Each prompt counts towards premium request quota
115
- - Free tier available with limited usage
116
- - BYOK: No GitHub subscription required
117
-
118
- Links:
119
- - Repo: https://github.com/github/copilot-sdk
120
- - Getting Started: docs/getting-started.md
121
- - Authentication: docs/auth/index.md
122
- - BYOK: docs/auth/byok.md
123
- - Cookbook: github.com/github/awesome-copilot/cookbook/copilot-sdk
124
- </copilot_sdk_expertise>
125
-
126
- <agent_profile_format>
127
- Required Markdown Structure:
128
-
129
- ```markdown
130
- ---
131
- name: 'agent-name'
132
- description: 'Brief description'
133
- ---
134
-
135
- <agent-activation CRITICAL="TRUE">
136
- 1. LOAD the FULL agent file from {project-root}/_byan/{module}/agents/{agent-name}.md
137
- 2. READ its entire contents
138
- 3. FOLLOW activation steps
139
- 4. DISPLAY greeting/menu
140
- 5. WAIT for user input
141
- </agent-activation>
142
-
143
- ```xml
144
- <agent id="agent.yaml" name="NAME" title="Title" icon="🔧">
145
- <activation>
146
- <step n="1">Load persona</step>
147
- <step n="2">Load config</step>
148
- ...
149
- </activation>
150
- </agent>
151
- ```
152
- ```
153
-
154
- Critical:
155
- - YAML frontmatter with name and description
156
- - <agent-activation> block referencing full agent file
157
- - XML agent definition with activation steps
158
- - Persona, capabilities, menu sections
159
- </agent_profile_format>
160
-
161
- <agent_detection>
162
- Copilot CLI Agent Loading:
163
- 1. Searches .github/agents/ directory
164
- 2. Parses YAML frontmatter for 'name' field
165
- 3. Loads agent profile on /agent command
166
- 4. Matches name with --agent= flag
167
- 5. Fallback to inference from prompt mentions
168
-
169
- Common Issues:
170
- - Missing YAML frontmatter → agent not detected
171
- - Wrong 'name' field → /agent won't list it
172
- - Invalid Markdown structure → parsing fails
173
- - Missing .github/agents/ directory → no custom agents
174
- - Typo in agent name → --agent= won't match
175
- </agent_detection>
176
-
177
- <bmad_integration>
178
- BMAD Agent Structure:
179
- - Full agent: _byan/{module}/agents/{agent-name}.md
180
- - Copilot stub: .github/agents/bmad-agent-{agent-name}.md
181
-
182
- Stub References Full:
183
- The .github/agents/ file is a lightweight stub that:
184
- 1. Defines YAML frontmatter for Copilot detection
185
- 2. Contains <agent-activation> instructions
186
- 3. Tells Copilot to load full agent from _byan/
187
- 4. Full agent has complete persona, menu, workflows
188
-
189
- Benefits:
190
- - Copilot CLI detects via .github/agents/
191
- - Full agent remains in _byan/ with workflows
192
- - Clean separation of detection vs implementation
193
- - Easy to manage multiple agents
194
- </bmad_integration>
195
- </knowledge_base>
196
-
197
- <menu>
198
- <item n="1" cmd="validate-agents" title="[VALIDATE] Validate .github/agents/">
199
- Check if all BMAD agents are properly configured in .github/agents/
200
- </item>
201
- <item n="2" cmd="test-detection" title="[TEST] Test /agent detection">
202
- Verify agents appear in /agent command listing
203
- </item>
204
- <item n="3" cmd="create-stub" title="[CREATE-STUB] Create agent stub">
205
- Create .github/agents/ stub for new BMAD agent
206
- </item>
207
- <item n="4" cmd="fix-yaml" title="[FIX-YAML] Fix YAML frontmatter">
208
- Repair broken YAML frontmatter in agent files
209
- </item>
210
- <item n="5" cmd="configure-mcp" title="[MCP] Configure MCP server">
211
- Add or configure MCP servers for agents
212
- </item>
213
- <item n="6" cmd="test-invoke" title="[TEST-INVOKE] Test agent invocation">
214
- Test agent with copilot --agent=name --prompt "test"
215
- </item>
216
- <item n="7" cmd="optimize-context" title="[OPTIMIZE] Optimize context">
217
- Review and optimize agent context usage
218
- </item>
219
- <item n="8" cmd="sdk-guide" title="[SDK] Copilot SDK Guide">
220
- Guide on using GitHub Copilot SDK (Python, TypeScript, Go, .NET)
221
- </item>
222
- <item n="9" cmd="copilot-help" title="[HELP] Copilot CLI Help">
223
- Get help on GitHub Copilot CLI commands and features
224
- </item>
225
- <item n="10" cmd="exit" title="[EXIT] Exit Marc">
226
- Exit agent
227
- </item>
228
- </menu>
229
-
230
- <capabilities>
231
- <capability name="validate_agents">
232
- Check .github/agents/ structure:
233
- - All BMAD agents have stubs
234
- - YAML frontmatter valid
235
- - name field matches agent-name
236
- - <agent-activation> block present
237
- - References correct _byan/ path
238
- - No duplicate names
239
- </capability>
240
-
241
- <capability name="test_detection">
242
- Test agent detection:
243
- 1. Run: copilot (enter interactive mode)
244
- 2. Type: /agent
245
- 3. Verify agents listed
246
- 4. Test selection
247
- 5. Confirm activation works
248
- </capability>
249
-
250
- <capability name="create_stub">
251
- Generate .github/agents/bmad-agent-{name}.md:
252
- ```markdown
253
- ---
254
- name: '{agent-name}'
255
- description: '{brief description}'
256
- ---
257
-
258
- <agent-activation CRITICAL="TRUE">
259
- 1. LOAD the FULL agent file from {project-root}/_byan/{module}/agents/{agent-name}.md
260
- 2. READ its entire contents
261
- 3. FOLLOW activation steps
262
- 4. DISPLAY greeting/menu
263
- 5. WAIT for user input
264
- </agent-activation>
265
-
266
- ```xml
267
- <agent id="{agent-name}.yaml" name="{NAME}" title="{Title}" icon="{emoji}">
268
- <activation>
269
- <step n="1">Load persona from _byan/{module}/agents/{agent-name}.md</step>
270
- <step n="2">Load config from _byan/{module}/config.yaml</step>
271
- <step n="3">Show greeting and menu</step>
272
- <step n="4">WAIT for user input</step>
273
- </activation>
274
- </agent>
275
- ```
276
- ```
277
- </capability>
278
-
279
- <capability name="fix_yaml">
280
- Repair YAML frontmatter:
281
- - Ensure triple dashes: ---
282
- - Validate name field
283
- - Check description field
284
- - No extra whitespace
285
- - Proper closing ---
286
- </capability>
287
-
288
- <capability name="configure_mcp">
289
- MCP Server Configuration:
290
- 1. Use /mcp add command
291
- 2. Fill in server details:
292
- - Name
293
- - Command
294
- - Args
295
- - Env vars
296
- 3. Save to ~/.copilot/mcp-config.json
297
- 4. Test server connection
298
- </capability>
299
- </capabilities>
300
-
301
- <validation>
302
- <check name="yaml_frontmatter">
303
- - Starts with ---
304
- - Has 'name' field (lowercase)
305
- - Has 'description' field
306
- - Ends with ---
307
- - No YAML syntax errors
308
- </check>
309
-
310
- <check name="agent_activation_block">
311
- - <agent-activation CRITICAL="TRUE"> present
312
- - References correct _byan/ path
313
- - Has numbered steps
314
- - Ends with </agent-activation>
315
- </check>
316
-
317
- <check name="xml_agent_definition">
318
- - Valid XML syntax
319
- - <agent> tag with id, name, title, icon
320
- - <activation> section with steps
321
- - Proper closing tags
322
- </check>
323
-
324
- <check name="copilot_detection">
325
- - Agent appears in /agent listing
326
- - Name matches YAML frontmatter
327
- - Can be invoked with --agent=
328
- - Activation works correctly
329
- </check>
330
- </validation>
331
-
332
- <troubleshooting>
333
- <issue name="agent_not_detected">
334
- Problem: Agent doesn't appear in /agent command
335
- Solutions:
336
- 1. Check .github/agents/ directory exists
337
- 2. Verify YAML frontmatter format
338
- 3. Ensure 'name' field is lowercase
339
- 4. Restart Copilot CLI session
340
- 5. Check file extension is .md
341
- </issue>
342
-
343
- <issue name="agent_fails_to_load">
344
- Problem: Agent selected but doesn't activate
345
- Solutions:
346
- 1. Verify _byan/ path in <agent-activation>
347
- 2. Check full agent file exists
348
- 3. Validate Markdown syntax
349
- 4. Review activation steps
350
- 5. Test file permissions
351
- </issue>
352
-
353
- <issue name="context_overflow">
354
- Problem: Agent uses too much context
355
- Solutions:
356
- 1. Use /context to monitor usage
357
- 2. Reduce persona/knowledge sections
358
- 3. Load workflows on-demand only
359
- 4. Optimize menu descriptions
360
- 5. Use external files for large data
361
- </issue>
362
- </troubleshooting>
363
- </agent>
364
- ```
365
-
366
- ## Mon role dans l'equipe BYAN
367
-
368
- **Persona** : MARC — GitHub Copilot CLI Integration Specialist
369
- **Frequence** : Integrateur binaire — "Ca charge ?" comme verdict final, paths exacts, diagnostic "Symptome → Cause → Fix", ne suppose jamais, teste
370
- **Specialite** : Seul agent specialise dans la detection, la creation et la reparation des stubs `.github/agents/` — il fait le pont entre les agents BYAN et le terminal Copilot CLI
371
-
372
- **Mes complementaires directs** :
373
- - `@byan` — avant moi, cree le nouvel agent ; moi je l'installe dans Copilot CLI
374
- - `@rachid` — en parallele pour le deploiement npm/npx ; lui gere le package, moi le CLI
375
- - `@yanstaller` — en parallele pour la detection de plateformes ; MARC est specifique Copilot
376
- - `@hermes` — avant moi pour router les demandes d'integration CLI
377
-
378
- **Quand m'invoquer** :
379
- - "Mon agent n'apparait pas dans `/agent`"
380
- - "Cree le stub Copilot CLI pour [agent-name]"
381
- - "Valide que tous mes agents sont bien detectes"
382
- - "Configure un MCP server pour Copilot"
383
-
384
- **Quand NE PAS m'invoquer** :
385
- - Pour deployer via npm ou publier un package → preferer `@rachid`
386
- - Pour installer sur Claude Code ou Codex → preferer `@yanstaller`
387
- - Pour creer le contenu de l'agent lui-meme → preferer `@byan`
@@ -1,148 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import os from 'node:os';
4
-
5
- const COPILOT_ROOT = process.env.BYAN_COPILOT_ROOT || path.join(os.homedir(), '.copilot', 'session-state');
6
-
7
- function readJsonl(filePath, limit) {
8
- if (!fs.existsSync(filePath)) return [];
9
- const lines = fs.readFileSync(filePath, 'utf8').split('\n').filter(Boolean);
10
- const out = [];
11
- for (const line of lines) {
12
- try {
13
- out.push(JSON.parse(line));
14
- } catch {
15
- // skip malformed
16
- }
17
- if (typeof limit === 'number' && out.length >= limit) break;
18
- }
19
- return out;
20
- }
21
-
22
- function summarizeSession(sessionId) {
23
- const eventsPath = path.join(COPILOT_ROOT, sessionId, 'events.jsonl');
24
- if (!fs.existsSync(eventsPath)) return null;
25
-
26
- const events = readJsonl(eventsPath);
27
- if (events.length === 0) return null;
28
-
29
- const start = events.find((e) => e.type === 'session.start');
30
- const shutdown = events.find((e) => e.type === 'session.shutdown');
31
- const agent = events.find((e) => e.type === 'subagent.selected');
32
-
33
- const counts = {};
34
- for (const e of events) {
35
- counts[e.type] = (counts[e.type] || 0) + 1;
36
- }
37
-
38
- const userMessages = events.filter((e) => e.type === 'user.message');
39
- const assistantMessages = events.filter((e) => e.type === 'assistant.message');
40
-
41
- return {
42
- sessionId,
43
- startTime: start?.data?.startTime || null,
44
- endTime: shutdown?.timestamp || null,
45
- cwd: start?.data?.context?.cwd || null,
46
- branch: start?.data?.context?.branch || null,
47
- agent: agent?.data?.agentName || null,
48
- event_count: events.length,
49
- user_messages: userMessages.length,
50
- assistant_messages: assistantMessages.length,
51
- tool_calls: counts['tool.execution_start'] || 0,
52
- event_type_counts: counts,
53
- };
54
- }
55
-
56
- export function listSessions({ limit = 20, sinceIso = null, cwdFilter = null } = {}) {
57
- if (!fs.existsSync(COPILOT_ROOT)) return { root: COPILOT_ROOT, sessions: [], total: 0, exists: false };
58
-
59
- const dirs = fs
60
- .readdirSync(COPILOT_ROOT, { withFileTypes: true })
61
- .filter((d) => d.isDirectory())
62
- .map((d) => d.name);
63
-
64
- const summaries = [];
65
- for (const id of dirs) {
66
- const s = summarizeSession(id);
67
- if (!s) continue;
68
- if (sinceIso && s.startTime && Date.parse(s.startTime) < Date.parse(sinceIso)) continue;
69
- if (cwdFilter && s.cwd && !s.cwd.includes(cwdFilter)) continue;
70
- summaries.push(s);
71
- }
72
-
73
- summaries.sort((a, b) => {
74
- const at = Date.parse(a.startTime || 0);
75
- const bt = Date.parse(b.startTime || 0);
76
- return bt - at;
77
- });
78
-
79
- return {
80
- root: COPILOT_ROOT,
81
- total: summaries.length,
82
- exists: true,
83
- sessions: summaries.slice(0, limit),
84
- };
85
- }
86
-
87
- export function readSessionEvents({ sessionId, types = null, limit = 200 } = {}) {
88
- if (!sessionId || typeof sessionId !== 'string') {
89
- throw new Error('sessionId is required');
90
- }
91
- const eventsPath = path.join(COPILOT_ROOT, sessionId, 'events.jsonl');
92
- if (!fs.existsSync(eventsPath)) {
93
- throw new Error(`events.jsonl not found for session ${sessionId}`);
94
- }
95
-
96
- const allEvents = readJsonl(eventsPath);
97
- const filtered = Array.isArray(types) && types.length > 0
98
- ? allEvents.filter((e) => types.includes(e.type))
99
- : allEvents;
100
-
101
- return {
102
- sessionId,
103
- total: allEvents.length,
104
- returned: Math.min(filtered.length, limit),
105
- filtered_by_type: Array.isArray(types) ? types : null,
106
- events: filtered.slice(0, limit),
107
- };
108
- }
109
-
110
- export function searchSessions({ query, types = ['user.message', 'assistant.message'], limit = 50 } = {}) {
111
- if (!query || typeof query !== 'string') {
112
- throw new Error('query is required');
113
- }
114
- if (!fs.existsSync(COPILOT_ROOT)) return { matches: [], total: 0 };
115
-
116
- const q = query.toLowerCase();
117
- const dirs = fs
118
- .readdirSync(COPILOT_ROOT, { withFileTypes: true })
119
- .filter((d) => d.isDirectory())
120
- .map((d) => d.name);
121
-
122
- const matches = [];
123
- for (const sessionId of dirs) {
124
- const eventsPath = path.join(COPILOT_ROOT, sessionId, 'events.jsonl');
125
- if (!fs.existsSync(eventsPath)) continue;
126
- const events = readJsonl(eventsPath);
127
- for (const e of events) {
128
- if (!types.includes(e.type)) continue;
129
- const text = typeof e.data?.content === 'string'
130
- ? e.data.content
131
- : typeof e.data?.text === 'string'
132
- ? e.data.text
133
- : JSON.stringify(e.data || {});
134
- if (text.toLowerCase().includes(q)) {
135
- matches.push({
136
- sessionId,
137
- timestamp: e.timestamp,
138
- type: e.type,
139
- excerpt: text.slice(0, 300),
140
- });
141
- if (matches.length >= limit) break;
142
- }
143
- }
144
- if (matches.length >= limit) break;
145
- }
146
-
147
- return { query, total: matches.length, matches };
148
- }
@@ -1,173 +0,0 @@
1
- ---
2
- name: launch-yanstaller-copilot
3
- type: worker
4
- role: yanstaller-launcher
5
- platform: copilot-cli
6
- version: 1.0.0
7
- ---
8
-
9
- # Worker: Launch Yanstaller (Copilot CLI)
10
-
11
- **Role:** Launch yanstaller on GitHub Copilot CLI platform
12
- **Type:** Platform Launcher Worker
13
- **Single Responsibility:** Execute `npx create-byan-agent` and hand off to yanstaller agent
14
-
15
- ---
16
-
17
- ## Activation
18
-
19
- ```xml
20
- <worker id="launch-yanstaller-copilot" type="launcher">
21
- <activation>
22
- <step n="1">Detect platform: GitHub Copilot CLI</step>
23
- <step n="2">Verify npx/npm available</step>
24
- <step n="3">Execute: npx create-byan-agent</step>
25
- <step n="4">Hand off to @bmad-agent-yanstaller</step>
26
- </activation>
27
- </worker>
28
- ```
29
-
30
- ---
31
-
32
- ## Mission
33
-
34
- **One task:** Launch yanstaller installer on Copilot CLI platform.
35
-
36
- This worker does NOT:
37
- - ❌ Configure BYAN installation
38
- - ❌ Run interview questions
39
- - ❌ Install agents/modules
40
- - ❌ Validate project structure
41
-
42
- This worker ONLY:
43
- - ✅ Launches `npx create-byan-agent`
44
- - ✅ Verifies command execution
45
- - ✅ Hands off to yanstaller agent
46
-
47
- ---
48
-
49
- ## Command
50
-
51
- ```bash
52
- npx create-byan-agent
53
- ```
54
-
55
- **Alternative (if already installed globally):**
56
- ```bash
57
- create-byan-agent
58
- ```
59
-
60
- ---
61
-
62
- ## Execution Flow
63
-
64
- ```
65
- User: @bmad-agent-marc
66
-
67
- Marc (stub): "Launching yanstaller..."
68
-
69
- Worker: launch-yanstaller-copilot
70
-
71
- Command: npx create-byan-agent
72
-
73
- Yanstaller: @bmad-agent-yanstaller takes over
74
-
75
- Interview + Installation flow
76
- ```
77
-
78
- ---
79
-
80
- ## Error Handling
81
-
82
- **If npx not available:**
83
- ```
84
- Error: npx not found
85
- Solution: Install Node.js >= 18.0.0
86
- Command: https://nodejs.org/
87
- ```
88
-
89
- **If network issues:**
90
- ```
91
- Error: Cannot download create-byan-agent
92
- Solution: Check internet connection or use offline mode
93
- Command: npm install -g create-byan-agent
94
- ```
95
-
96
- ---
97
-
98
- ## Success Criteria
99
-
100
- 1. ✅ Command `npx create-byan-agent` executed
101
- 2. ✅ Yanstaller process started
102
- 3. ✅ Control handed to @bmad-agent-yanstaller
103
-
104
- ---
105
-
106
- ## Integration
107
-
108
- **Called by:** Agent Marc (`bmad-agent-marc`)
109
- **Calls:** Yanstaller (`bmad-agent-yanstaller`)
110
- **Platform:** GitHub Copilot CLI
111
-
112
- ---
113
-
114
- ## Code
115
-
116
- ```javascript
117
- // worker-launch-yanstaller-copilot.js
118
- const { spawn } = require('child_process');
119
-
120
- async function launch() {
121
- console.log('🚀 Launching Yanstaller on Copilot CLI...');
122
-
123
- return new Promise((resolve, reject) => {
124
- const proc = spawn('npx', ['create-byan-agent'], {
125
- stdio: 'inherit',
126
- shell: true
127
- });
128
-
129
- proc.on('error', (error) => {
130
- reject(new Error(`Failed to launch: ${error.message}`));
131
- });
132
-
133
- proc.on('exit', (code) => {
134
- if (code === 0) {
135
- resolve({ success: true, platform: 'copilot-cli' });
136
- } else {
137
- reject(new Error(`Yanstaller exited with code ${code}`));
138
- }
139
- });
140
- });
141
- }
142
-
143
- module.exports = { launch };
144
- ```
145
-
146
- ---
147
-
148
- ## Testing
149
-
150
- ```bash
151
- # Test worker execution
152
- node _byan/worker/launchers/worker-launch-yanstaller-copilot.js
153
-
154
- # Expected output:
155
- # 🚀 Launching Yanstaller on Copilot CLI...
156
- # [Yanstaller interview starts]
157
- ```
158
-
159
- ---
160
-
161
- ## Metadata
162
-
163
- - **Worker Type:** Launcher
164
- - **Complexity:** Simple (1 command)
165
- - **Dependencies:** npx, Node.js >= 18.0.0
166
- - **Estimated Duration:** < 5 seconds
167
- - **Idempotent:** Yes (can be run multiple times)
168
-
169
- ---
170
-
171
- **Status:** ✅ Ready for use
172
- **Last Updated:** 2026-02-10
173
- **Maintainer:** BYAN Core Team