pantheon-opencode 1.1.1-beta.9 → 1.1.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/routing.yml CHANGED
@@ -2,7 +2,6 @@ version: 1.0
2
2
  agents:
3
3
  zeus:
4
4
  role: Central orchestrator
5
- model_tier: code
6
5
  reasoning_effort: medium
7
6
  user_invocable: true
8
7
  can_delegate: true
@@ -41,7 +40,6 @@ agents:
41
40
  - incremental-implementation
42
41
  athena:
43
42
  role: Strategic planner
44
- model_tier: premium
45
43
  reasoning_effort: high
46
44
  user_invocable: true
47
45
  can_delegate: true
@@ -61,7 +59,6 @@ agents:
61
59
  - memory-bank
62
60
  apollo:
63
61
  role: Investigation scout
64
- model_tier: free
65
62
  reasoning_effort: low
66
63
  user_invocable: false
67
64
  can_delegate: false
@@ -79,7 +76,6 @@ agents:
79
76
  - auto-continue
80
77
  hermes:
81
78
  role: Backend specialist
82
- model_tier: code
83
79
  reasoning_effort: medium
84
80
  user_invocable: true
85
81
  can_delegate: true
@@ -92,6 +88,10 @@ agents:
92
88
  - obsolete_lib_detection
93
89
  - memory_store
94
90
  - pantheon_code_mode
91
+ subagent_can_delegate_to:
92
+ - apollo
93
+ - themis
94
+ - mnemosyne
95
95
  skills:
96
96
  - tdd-with-agents
97
97
  - file-prompts
@@ -100,7 +100,6 @@ agents:
100
100
  - incremental-implementation
101
101
  aphrodite:
102
102
  role: Frontend specialist
103
- model_tier: code
104
103
  reasoning_effort: medium
105
104
  user_invocable: true
106
105
  can_delegate: false
@@ -113,13 +112,13 @@ agents:
113
112
  - deprecated_npm_detection
114
113
  - memory_store
115
114
  - pantheon_resources_memory_bank
115
+ - pantheon_code_mode
116
116
  skills:
117
117
  - tdd-with-agents
118
118
  - visual-review-pipeline
119
119
  - file-prompts
120
120
  demeter:
121
121
  role: Database specialist
122
- model_tier: code
123
122
  reasoning_effort: medium
124
123
  user_invocable: true
125
124
  can_delegate: false
@@ -132,12 +131,12 @@ agents:
132
131
  - index_strategy
133
132
  - memory_store
134
133
  - memory_recall
134
+ - pantheon_code_mode
135
135
  skills:
136
136
  - tdd-with-agents
137
137
  - incremental-implementation
138
138
  themis:
139
139
  role: Quality gate
140
- model_tier: premium
141
140
  reasoning_effort: high
142
141
  user_invocable: true
143
142
  can_delegate: true
@@ -151,6 +150,7 @@ agents:
151
150
  - deprecation_audit
152
151
  - memory_search
153
152
  - pantheon_resources
153
+ - pantheon_code_mode
154
154
  subagent_can_delegate_to:
155
155
  - mnemosyne
156
156
  skills:
@@ -160,7 +160,6 @@ agents:
160
160
  - context-compression
161
161
  prometheus:
162
162
  role: Infrastructure specialist
163
- model_tier: code
164
163
  reasoning_effort: medium
165
164
  user_invocable: true
166
165
  can_delegate: false
@@ -178,7 +177,6 @@ agents:
178
177
  - incremental-implementation
179
178
  hephaestus:
180
179
  role: AI pipelines
181
- model_tier: code
182
180
  reasoning_effort: medium
183
181
  user_invocable: true
184
182
  can_delegate: false
@@ -190,12 +188,12 @@ agents:
190
188
  - embedding_strategy
191
189
  - ai_workflow_composition
192
190
  - memory_search
191
+ - pantheon_code_mode
193
192
  skills:
194
193
  - tdd-with-agents
195
194
  - auto-continue
196
195
  nyx:
197
196
  role: Observability
198
- model_tier: free
199
197
  reasoning_effort: low
200
198
  user_invocable: true
201
199
  can_delegate: false
@@ -207,12 +205,12 @@ agents:
207
205
  - alerting
208
206
  - monitoring_dashboards
209
207
  - pantheon_resources_routing
208
+ - pantheon_code_mode
210
209
  skills:
211
210
  - security-hardening
212
211
  - auto-continue
213
212
  gaia:
214
213
  role: Remote sensing domain specialist
215
- model_tier: free
216
214
  reasoning_effort: low
217
215
  user_invocable: false
218
216
  can_delegate: false
@@ -226,7 +224,6 @@ agents:
226
224
  - auto-continue
227
225
  iris:
228
226
  role: GitHub operations
229
- model_tier: free
230
227
  reasoning_effort: low
231
228
  user_invocable: true
232
229
  can_delegate: false
@@ -238,17 +235,14 @@ agents:
238
235
  - release_management
239
236
  - changelog_generation
240
237
  - pantheon_resources
241
- subagent_can_delegate_to:
242
- - mnemosyne
243
238
  skills:
244
239
  - git-workflow-and-versioning
245
240
  - artifact-management
246
241
  mnemosyne:
247
242
  role: Memory bank
248
- model_tier: free
249
243
  reasoning_effort: low
250
244
  user_invocable: true
251
- can_delegate: true
245
+ can_delegate: false
252
246
  can_receive_delegation: true
253
247
  capabilities:
254
248
  - memory_bank_management
@@ -260,6 +254,7 @@ agents:
260
254
  - memory_store
261
255
  - memory_recall
262
256
  - pantheon_resources_memory_bank
257
+ - pantheon_code_mode
263
258
  subagent_can_delegate_to: []
264
259
  skills:
265
260
  - artifact-management
@@ -268,7 +263,6 @@ agents:
268
263
  - session-goal
269
264
  talos:
270
265
  role: Hotfix agent
271
- model_tier: free
272
266
  reasoning_effort: low
273
267
  user_invocable: true
274
268
  can_delegate: false
@@ -379,19 +373,6 @@ platforms:
379
373
  - bash_execution
380
374
  - web_fetch
381
375
  - web_search
382
- fallback_chains:
383
- premium_agents:
384
- primary: deepseek/deepseek-v4-pro
385
- secondary: mimo/v2.5
386
- emergency: deepseek/deepseek-v4-pro
387
- code_agents:
388
- primary: deepseek/deepseek-v4-flash
389
- secondary: mimo/v2.5
390
- emergency: deepseek/deepseek-v4-flash
391
- free_agents:
392
- primary: deepseek/deepseek-v4-flash
393
- secondary: mimo/v2.5
394
- emergency: deepseek/deepseek-v4-flash
395
376
  background_job_board:
396
377
  max_concurrent_per_agent: 3
397
378
  signal_dir: .pantheon/deepwork/board-signals/
@@ -1,9 +0,0 @@
1
- ---
2
- description: "Pin a session goal to prevent scope creep. Usage: /pantheon-focus"
3
- agent: "zeus"
4
- ---
5
- # /pantheon-focus — Session Goal
6
-
7
- **What:** Pins a session objective. When active, all agents verify every action against the pinned goal. Off-topic work is flagged and blocked.
8
- **Usage:** `/pantheon-focus <short objective>`
9
- **Commands:** `/pantheon-focus list` — show all active goals, `/pantheon-focus clear` — remove all
@@ -1,58 +0,0 @@
1
- ---
2
- description: "Compress old memory entries into summarized form. /pantheon-forget lists entries older than N days, then replaces them with a compressed summary. --auto applies without confirmation. Usage: /pantheon-forget"
3
- agent: "zeus"
4
- ---
5
- # /pantheon-forget — Memory Range Compression
6
-
7
- **What:** Applies range compression to old memory entries — groups entries by time period and namespace, generates a concise summary via fast LLM, replaces N raw entries with 1 summary. Companion to memory_consolidate (merge) vs memory_forget (compress).
8
-
9
- ## Usage
10
-
11
- ```
12
- /pantheon-forget → Lista candidatas (7+ dias, modo interativo)
13
- /pantheon-forget --days=30 → Só entradas com 30+ dias
14
- /pantheon-forget --namespace=sessions → Namespace específico
15
- /pantheon-forget --namespace=sessions --days=14 Combinado
16
- /pantheon-forget --auto → Comprime sem confirmação
17
- /pantheon-forget --auto --days=30 --compress → Agressivo: 30+ dias + comprimir em 1 arquivo
18
- /pantheon-forget --dry-run → Preview sem modificar
19
- ```
20
-
21
- ## Flags
22
-
23
- | Flag | Default | Descrição |
24
- |------|---------|-----------|
25
- | `--days=<N>` | `7` | Idade mínima em dias |
26
- | `--namespace=<ns>` | `all` | Namespace específico |
27
- | `--auto` | off | Comprimir sem confirmação |
28
- | `--dry-run` | off | Preview sem modificar |
29
- | `--compress` | off | Comprimir tudo em 1 único entry (modo agressivo) |
30
-
31
- ## How It Works
32
-
33
- 1. `memory_list()` → obtém entradas, filtra por idade
34
- 2. Agrupa por namespace + mês
35
- 3. Cada grupo: envia para LLM fast com prompt:
36
- ```
37
- Summarize these N memory entries into 2-3 sentences:
38
- [entries...]
39
- ```
40
- 4. Substitui grupo por entry único com key `compressed:<namespace>:<YYYY-MM>`
41
- 5. Entradas originais são deletadas via `memory_forget()`
42
-
43
- ## Output
44
-
45
- ```
46
- 🗜️ Memory Range Compression
47
-
48
- Group: sessions · 2026-06 (15 entries · 1.2K tokens)
49
- → "Sessões de junho focadas em migração FastAPI, ajustes de rota e correção de testes."
50
- → Compressed: 15 → 1 entry ✅
51
-
52
- Group: decisions · 2026-05 (8 entries · 640 tokens)
53
- → "Decisões de maio sobre arquitetura: monorepo mantido, SQLAlchemy 2.0 como padrão."
54
- → Compressed: 8 → 1 entry ✅
55
-
56
- Summary: 2 groups compressed, 23 entries → 2 entries (-91%)
57
- Tokens saved: ~1.8K
58
- ```
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Reflect on workflow friction and create improvement action items"
3
- agent: zeus
4
- ---
5
- # /pantheon-reflect — Workflow Reflection
6
-
7
- **What:** After completing a task, reflect on what could be improved. Turns repeated friction into reusable skills, agents, or config improvements.
8
- **Usage:** `/pantheon-reflect [session-or-task]`
9
- **Returns:** Structured reflection with action items
10
-
11
- ## When to Use
12
- - After completing a complex feature
13
- - When you notice the same manual steps repeating
14
- - At end of work session
15
-
16
- Delegates to @mnemosyne with `skill: reflect`.
@@ -1,44 +0,0 @@
1
- ---
2
- description: "Store or recall a memory interactively. /pantheon-remember <text> → stores it. /pantheon-remember recall <key> → retrieves it. Omitting args starts interactive mode. Usage: /pantheon-remember"
3
- agent: "zeus"
4
- ---
5
- # /pantheon-remember — Memory Store & Recall
6
-
7
- **What:** Stores a memory entry via `memory_store()` or recalls via `memory_recall()`. Interactive mode if no arguments.
8
-
9
- ## Usage
10
-
11
- ```
12
- /pantheon-remember "Decisão: usar FastAPI em vez de Flask" → Store (namespace: default)
13
- /pantheon-remember "Decisão: ..." --namespace=decisions → Store em namespace específico
14
- /pantheon-remember recall "FastAPI decision" → Recall por key
15
- /pantheon-remember recall "FastAPI decision" --namespace=decisions → Recall em namespace
16
- /pantheon-remember → Modo interativo (pergunta→store→pergunta recall)
17
- ```
18
-
19
- ## Behavior
20
-
21
- ### Store mode (default)
22
- 1. Chama `memory_store()` com o texto fornecido
23
- 2. Metadata: preenche `agent`, `type`, `timestamp` automaticamente
24
- 3. Pergunta: "Quer buscar algo relacionado? (y/n)"
25
- - `y` → `memory_recall()` com extração automática de keywords
26
- - `n` → fim
27
-
28
- ### Recall mode
29
- 1. Chama `memory_recall()` com a key fornecida
30
- 2. Se não achar, tenta `memory_search()` como fallback
31
-
32
- ### Interactive mode (no args)
33
- 1. "O que você quer armazenar?"
34
- 2. Recebe texto → `memory_store()`
35
- 3. "Quer buscar algo relacionado?"
36
- 4. Opcional: "Qual namespace?" (default: "default")
37
-
38
- ## Output
39
-
40
- ```
41
- ✅ Stored — id: 42 | namespace: decisions | key: auto-generated
42
- 📎 Related entries (memory_recall):
43
- - #1: "Decisão: usar FastAPI..." (score: 0.92)
44
- ```
@@ -1,48 +0,0 @@
1
- ---
2
- description: "Search memories by text with optional namespace filter, category, and result limit. /pantheon-search <query> --namespace=<ns> --top=<N> --stats. Usage: /pantheon-search"
3
- agent: "zeus"
4
- ---
5
- # /pantheon-search — Memory Search
6
-
7
- **What:** Searches memory entries via `memory_search()` with hybrid vector + keyword (RRF fusion). Supports namespace filter, result limit, and stats view.
8
-
9
- ## Usage
10
-
11
- ```
12
- /pantheon-search "FastAPI performance" → Busca em todos os namespaces
13
- /pantheon-search "FastAPI" --namespace=decisions → Busca só em decisions
14
- /pantheon-search "bug pattern" --namespace=sessions --top=10 → 10 resultados
15
- /pantheon-search --stats → memory_stats() completo
16
- /pantheon-search --stats --namespace=decisions → Stats por namespace
17
- ```
18
-
19
- ## Flags
20
-
21
- | Flag | Default | Descrição |
22
- |------|---------|-----------|
23
- | `--namespace=<ns>` | `all` | Filtrar por namespace específico |
24
- | `--top=<N>` | `5` | Número de resultados (max 50) |
25
- | `--stats` | off | Mostrar estatísticas em vez de buscar |
26
-
27
- ## Output (search)
28
-
29
- ```
30
- 🔍 Memory Search: "FastAPI performance"
31
-
32
- Results (namespace: all):
33
- #1 │ decisions │ "Decisão: usar FastAPI..." │ score: 0.89 │ 2026-07-20
34
- #2 │ repo │ "FastAPI async patterns" │ score: 0.74 │ 2026-07-18
35
- #3 │ sessions │ "FastAPI migration done" │ score: 0.61 │ 2026-07-15
36
-
37
- Found 3 results in 2 namespaces (0.23s)
38
- ```
39
-
40
- ## Output (stats)
41
-
42
- ```
43
- 📊 Memory Stats
44
- Total entries: 142
45
- Namespaces: decisions (58), sessions (44), repo (28), default (12)
46
- Vector entries: 142
47
- DB size: 1.2 MB
48
- ```
@@ -1,71 +0,0 @@
1
- ---
2
- description: "Show Pantheon version, model tier, and all available agents with status"
3
- agent: "zeus"
4
- ---
5
- # /pantheon-status — System Status & Agent Registry
6
-
7
- **What:** Displays the current Pantheon version, model tier (Pro/Free), and a full status table of all agents.
8
- **Usage:** `/pantheon-status`
9
- **Returns:** Version badge · model tier · agent table with availability
10
- **Use when:** You want to see what version of Pantheon is running and which agents are loaded
11
-
12
- ## Output Format
13
-
14
- Produce EXACTLY this structure:
15
-
16
- ```
17
- ## 🏛️ Pantheon System Status
18
-
19
- **Version:** vX.Y.Z
20
- **Model Tier:** Pro (premium models) | Free (default models)
21
- **Platform:** <detect: opencode | claude | cursor | windsurf | vscode>
22
- **Agents loaded:** N of 14
23
-
24
- ### Agent Registry
25
-
26
- | Agent | Role | Tier | Status |
27
- |-------|------|------|--------|
28
- | @zeus | Central orchestrator | default | ✅ |
29
- | @athena | Strategic planner | premium | ✅ |
30
- | @hermes | Backend (FastAPI) | default | ✅ |
31
- | @aphrodite | Frontend (React) | default | ✅ |
32
- | @demeter | Database | default | ✅ |
33
- | @themis | Quality & security | premium | ✅ |
34
- | @prometheus | Infrastructure | default | ✅ |
35
- | @apollo | Codebase discovery | fast | ✅ |
36
- | @iris | GitHub operations | fast | ✅ |
37
- | @mnemosyne | Memory bank | fast | ✅ |
38
- | @talos | Hotfixes | fast | ✅ |
39
- | @hephaestus | AI pipelines | default | ✅ |
40
- | @nyx | Observability | fast | ✅ |
41
- | @gaia | Remote sensing | fast | ✅ |
42
-
43
- ### Commands Available
44
-
45
- `/pantheon` `/pantheon-status` `/audit` `/focus` `/deepwork` `/optimize` `/sketch` `/` `/` `/` `/pantheon-remember` `/pantheon-search` `/` `/pantheon-forget`
46
-
47
- ### Health
48
-
49
- - ✅ All agents responding
50
- - ⚠️ N agents degraded (if any)
51
- - ❌ N agents unavailable (if any)
52
- ```
53
-
54
- ## How to Detect Version
55
-
56
- Read `package.json` → `"version"` field. If unavailable, read `plugin.json` → `"version"`.
57
-
58
- ## How to Detect Model Tier
59
-
60
- - **Pro:** Any agent with `model_tier: premium` in `routing.yml` is using a premium model (athena, themis)
61
- - **Free:** All agents using `default` or `fast` tier models
62
- - Report based on what `routing.yml` declares for the active platform
63
-
64
- ## How to Detect Platform
65
-
66
- Check for platform-specific markers:
67
- - `opencode.json` present → **OpenCode**
68
- - `.claude/` directory → **Claude Code**
69
- - `.cursor/` directory → **Cursor**
70
- - `.windsurf/` directory → **Windsurf**
71
- - `.vscode/` directory → **VS Code Copilot**
@@ -1,17 +0,0 @@
1
- ---
2
- description: "Create verification plan before non-trivial changes"
3
- agent: zeus
4
- ---
5
- # /pantheon-verify — Verification Planning
6
-
7
- **What:** Plans an evidence path before non-trivial changes, defining how to verify correctness.
8
- **Usage:** `/pantheon-verify <change-description>`
9
- **Returns:** Verification plan with strategy, rollback, and acceptance criteria
10
-
11
- ## When to Use
12
- - Before changes touching 3+ files
13
- - Before DB migrations or schema changes
14
- - Before API contract changes
15
- - Before dependency upgrades
16
-
17
- Delegates to @themis + @athena with `skill: verification-planning`.
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env bash
2
- # check-version-consistency.sh — Verifies all 3 manifests have the same version
3
- set -euo pipefail
4
-
5
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
- ROOT="$(dirname "$SCRIPT_DIR")"
7
-
8
- pkg_ver=$(node -p "require('$ROOT/package.json').version")
9
- plugin_ver=$(node -p "require('$ROOT/plugin.json').version")
10
- gh_plugin_ver=$(node -p "require('$ROOT/.github/plugin/plugin.json').version")
11
-
12
- echo "package.json: $pkg_ver"
13
- echo "plugin.json: $plugin_ver"
14
- echo ".github/plugin/plugin.json: $gh_plugin_ver"
15
-
16
- if [ "$pkg_ver" != "$plugin_ver" ] || [ "$pkg_ver" != "$gh_plugin_ver" ]; then
17
- echo "❌ Version mismatch across manifests!"
18
- echo ""
19
- echo "Fix: run 'node scripts/versioning.mjs apply' to sync all manifests"
20
- exit 1
21
- fi
22
-
23
- echo "✅ All versions match: $pkg_ver"
@@ -1,104 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * generate-routing-docs.mjs — Generate routing docs from routing.yml
4
- *
5
- * Reads the canonical routing.yml and outputs markdown documentation
6
- * to stdout. Pipe to a file to save: node generate-routing-docs.mjs > ROUTING.md
7
- */
8
-
9
- import { existsSync, readFileSync } from 'node:fs'
10
- import { dirname, join } from 'node:path'
11
- import { fileURLToPath } from 'node:url'
12
- import yaml from 'js-yaml'
13
-
14
- const __dirname = dirname(fileURLToPath(import.meta.url))
15
- const ROOT = join(__dirname, '..')
16
-
17
- const routingPath = join(ROOT, 'routing.yml')
18
- if (!existsSync(routingPath)) {
19
- console.error('❌ routing.yml not found')
20
- process.exit(1)
21
- }
22
- const routing = yaml.load(readFileSync(routingPath, 'utf8'))
23
-
24
- const agents = routing.agents || {}
25
- const matrix = routing.routing_matrix || []
26
- const handoffs = routing.handoffs || {}
27
-
28
- let doc = ''
29
-
30
- // Title
31
- doc += `# Pantheon Routing Reference\n\n`
32
- doc += `Auto-generated from \`routing.yml\` (v${routing.version || '?'})\n\n`
33
- doc += `${Object.keys(agents).length} agents · ${matrix.length} routing rules · ${Object.keys(handoffs).length} agent handoff groups\n\n`
34
-
35
- // Agent Registry
36
- doc += `---\n\n## Agent Registry\n\n`
37
- doc += `All ${Object.keys(agents).length} Pantheon agents with roles, model tiers, and capabilities.\n\n`
38
- doc += `| Agent | Role | Model Tier | User-Invocable | Delegates To | Skills |\n`
39
- doc += `|-------|------|-----------|----------------|-------------|--------|\n`
40
-
41
- for (const [name, info] of Object.entries(agents)) {
42
- const role = info.role || '—'
43
- const tier = info.model_tier || '—'
44
- const invocable = info.user_invocable ? '✅ Yes' : '❌ No'
45
- const delegates = (info.subagent_can_delegate_to || []).join(', ') || '—'
46
- const agentSkills = (info.skills || []).map((s) => `\`${s}\``).join(', ') || '—'
47
- doc += `| **@${name}** | ${role} | ${tier} | ${invocable} | ${delegates} | ${agentSkills} |\n`
48
- }
49
-
50
- // Routing Matrix
51
- doc += `\n---\n\n## Routing Matrix\n\n`
52
- doc += `Task category → primary agent mapping. Use this to decide which agent to invoke.\n\n`
53
- doc += `| Category | Primary Agent | Model Tier | Can Run Parallel With |\n`
54
- doc += `|----------|--------------|-----------|----------------------|\n`
55
-
56
- for (const entry of matrix) {
57
- const primary = `@${entry.primary_agent}`
58
- const tier = entry.model_tier || '—'
59
- const parallel = entry.parallel_with ? entry.parallel_with.map((a) => `@${a}`).join(', ') : '—'
60
- doc += `| ${entry.category} | ${primary} | ${tier} | ${parallel} |\n`
61
- }
62
-
63
- // Handoff Reference
64
- doc += `\n---\n\n## Handoff Reference\n\n`
65
- doc += `Structured delegation contracts between agents.\n\n`
66
-
67
- for (const [agentName, agentHandoffs] of Object.entries(handoffs)) {
68
- doc += `### @${agentName}\n\n`
69
- doc += `| Handoff | Target Agent | Model Tier | Description |\n`
70
- doc += `|---------|-------------|-----------|-------------|\n`
71
-
72
- for (const [key, handoff] of Object.entries(agentHandoffs)) {
73
- if (typeof handoff !== 'object') continue
74
- const target = `@${handoff.agent}`
75
- const tier = handoff.model_tier || '—'
76
- const desc = handoff.description || handoff.prompt?.substring(0, 80) || '—'
77
- doc += `| **${key}** | ${target} | ${tier} | ${desc} |\n`
78
- }
79
- doc += `\n`
80
- }
81
-
82
- // Deployment platforms
83
- doc += `---\n\n## Deployment Platforms\n\n`
84
- doc += `Supported platforms and their configuration details.\n\n`
85
- doc += `| Platform | Directory | Format | Handoff Strategy |\n`
86
- doc += `|----------|-----------|--------|-----------------|\n`
87
-
88
- const PLATFORM_INFO = {
89
- opencode: { dir: '.opencode/agents/', format: '.md with YAML', handoff: 'native (YAML)' },
90
- claude: { dir: '.claude/agents/', format: '.md with YAML', handoff: 'embed (body)' },
91
- cursor: { dir: '.cursor/rules/', format: '.mdc rule files', handoff: 'embed (body)' },
92
- windsurf: { dir: '.windsurf/rules/', format: '.md rule files', handoff: 'embed (body)' },
93
- cline: { dir: '.clinerules/', format: 'plain text', handoff: 'embed (body)' },
94
- copilot: { dir: '.github/agents/', format: '.agent.md with YAML', handoff: 'native (YAML)' },
95
- continue: { dir: '.continue/rules/', format: '.md rules', handoff: 'embed (body)' },
96
- }
97
-
98
- for (const [platform, info] of Object.entries(PLATFORM_INFO)) {
99
- doc += `| **${platform}** | ${info.dir} | ${info.format} | ${info.handoff} |\n`
100
- }
101
-
102
- doc += `\n---\n\n*Generated on ${new Date().toISOString().split('T')[0]} from \`routing.yml\`*\n`
103
-
104
- console.log(doc)