pantheon-opencode 1.0.0 → 1.0.6

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 (72) hide show
  1. package/README.md +61 -109
  2. package/bin/pantheon-init.mjs +57 -136
  3. package/commands/pantheon-audit.md +1 -1
  4. package/commands/pantheon-deepwork.md +32 -81
  5. package/commands/pantheon-reflect.md +16 -0
  6. package/commands/pantheon-status.md +1 -1
  7. package/commands/pantheon-verify.md +17 -0
  8. package/opencode.json +25 -0
  9. package/package.json +24 -13
  10. package/scripts/ci-validate-yaml.py +19 -0
  11. package/scripts/doctor.mjs +10 -65
  12. package/scripts/install/opencode.mjs +69 -6
  13. package/scripts/install/shared.mjs +39 -13
  14. package/scripts/manifest.mjs +5 -30
  15. package/scripts/postinstall.mjs +47 -0
  16. package/scripts/release-bundle.mjs +2 -2
  17. package/scripts/uninstall.mjs +5 -5
  18. package/scripts/validate-routing.mjs +19 -16
  19. package/scripts/versioning.mjs +12 -1
  20. package/skills-lock.json +9 -2
  21. package/src/agents/aphrodite.md +15 -57
  22. package/src/agents/apollo.md +9 -48
  23. package/src/agents/athena.md +17 -54
  24. package/src/agents/demeter.md +10 -47
  25. package/src/agents/gaia.md +7 -40
  26. package/src/agents/hephaestus.md +9 -52
  27. package/src/agents/hermes.md +17 -52
  28. package/src/agents/iris.md +8 -45
  29. package/src/agents/mnemosyne.md +12 -47
  30. package/src/agents/nyx.md +8 -45
  31. package/src/agents/prometheus.md +11 -49
  32. package/src/agents/talos.md +6 -45
  33. package/src/agents/themis.md +10 -35
  34. package/src/agents/zeus.md +5 -7
  35. package/src/mcp/mcp_resources_server.py +2 -0
  36. package/src/plugins/tui/dist/tui.tsx +203 -93
  37. package/src/plugins/tui/src/index.tsx +203 -93
  38. package/src/routing.yml +33 -93
  39. package/src/skills/clonedeps/SKILL.md +45 -0
  40. package/src/skills/codemap/SKILL.md +47 -0
  41. package/src/skills/loop-engineering/SKILL.md +51 -0
  42. package/src/skills/reflect/SKILL.md +49 -0
  43. package/src/skills/simplify/SKILL.md +39 -0
  44. package/src/skills/verification-planning/SKILL.md +52 -0
  45. package/src/skills/worktrees/SKILL.md +43 -0
  46. package/commands/pantheon-bg.md +0 -10
  47. package/commands/pantheon-consolidate.md +0 -11
  48. package/commands/pantheon-doc.md +0 -10
  49. package/commands/pantheon-hash.md +0 -11
  50. package/commands/pantheon-todo.md +0 -11
  51. package/docs/AGENT-MCP.md +0 -194
  52. package/docs/ARCHITECTURE.md +0 -384
  53. package/docs/BRANCH-PROTECTION.md +0 -142
  54. package/docs/INDEX.md +0 -81
  55. package/docs/INSTALLATION.md +0 -217
  56. package/docs/MCP.md +0 -238
  57. package/docs/MEMORY.md +0 -471
  58. package/docs/MIGRATION-MEMORY-BANK.md +0 -139
  59. package/docs/PLATFORMS.md +0 -5
  60. package/docs/QUICKSTART.md +0 -49
  61. package/docs/README.md +0 -18
  62. package/docs/RELEASING.md +0 -256
  63. package/docs/SETUP.md +0 -5
  64. package/docs/UPGRADING.md +0 -41
  65. package/docs/mcp-recommendations.md +0 -439
  66. package/docs/mcp-tools.md +0 -156
  67. package/docs/mcp-user-guide.md +0 -204
  68. package/docs/persistence-mcp.md +0 -111
  69. package/scripts/init-pantheon-mcp.sh +0 -118
  70. package/scripts/install.mjs +0 -26
  71. package/src/instructions/documentation-standards.instructions.md +0 -53
  72. package/src/mcp/init-pantheon-mcp.sh +0 -118
@@ -14,11 +14,19 @@ import {
14
14
  } from 'node:fs'
15
15
  import { basename, dirname, join } from 'node:path'
16
16
  import { fileURLToPath } from 'node:url'
17
+
18
+ const REQUIRED_NODE_MAJOR = 18;
19
+ if (parseInt(process.versions.node.split('.')[0], 10) < REQUIRED_NODE_MAJOR) {
20
+ console.error(`❌ Node.js >= ${REQUIRED_NODE_MAJOR} required (current: ${process.versions.node})`);
21
+ process.exit(1);
22
+ }
23
+
17
24
  import yaml from 'js-yaml'
18
25
 
19
26
  export const __dirname = dirname(fileURLToPath(import.meta.url))
20
27
  export const ROOT = join(__dirname, '..', '..')
21
28
  export const AGENTS_DIR = join(ROOT, 'src', 'agents')
29
+ // PLATFORM_DIR is deprecated — platform/ was removed in v1.0
22
30
  export const PLATFORM_DIR = join(ROOT, 'platform')
23
31
 
24
32
  // Auto-detect agent names from agents/ directory
@@ -33,6 +41,7 @@ export function getAgentNames() {
33
41
  // Cached constant for backward compatibility
34
42
  export const AGENT_NAMES = getAgentNames()
35
43
 
44
+ // DEPRECATED: OpenCode-only since v1.0
36
45
  export const PLATFORM_DETECTORS = {
37
46
  opencode: (target) =>
38
47
  existsSync(join(target, 'opencode.json')) ||
@@ -62,20 +71,20 @@ export const summary = {
62
71
 
63
72
  export function showHelp() {
64
73
  console.log(`
65
- install.mjs — Multi-platform Pantheon agent installer
74
+ pantheon-init.mjs — Pantheon OpenCode installer
66
75
 
67
76
  Usage:
68
- node scripts/install.mjs auto-detect, cwd
69
- node scripts/install.mjs --target /path/to/project auto-detect, target
70
- node scripts/install.mjs --platforms opencode,claude specific platforms, cwd
71
- node scripts/install.mjs --target /path --platforms all all platforms
72
- node scripts/install.mjs --detect detect platforms without installing
73
- node scripts/install.mjs --dry-run preview without writing
74
- node scripts/install.mjs --backup create timestamped backup before writing
75
- node scripts/install.mjs --clean wipe + fresh install (all components)
76
- node scripts/install.mjs --clean --components agents,skills wipe only agents+skills, reinstall
77
- node scripts/install.mjs --components agents install only agents (no skills/instructions)
78
- node scripts/install.mjs --help show this help
77
+ npx pantheon-opencode init auto-detect, cwd
78
+ npx pantheon-opencode init --project auto-detect, project
79
+ npx pantheon-opencode init --project --platforms opencode,claude specific platforms
80
+ npx pantheon-opencode init --project --platforms all all platforms
81
+ npx pantheon-opencode init --detect detect platforms without installing
82
+ npx pantheon-opencode init --project --dry-run preview without writing
83
+ npx pantheon-opencode init --project --backup create timestamped backup before writing
84
+ npx pantheon-opencode init --project --clean wipe + fresh install (all components)
85
+ npx pantheon-opencode init --project --clean --components agents,skills wipe only agents+skills, reinstall
86
+ npx pantheon-opencode init --project --components agents install only agents (no skills/instructions)
87
+ npx pantheon-opencode init --help show this help
79
88
 
80
89
  Components (--components):
81
90
  Comma-separated list of what to install. Default: agents,skills,instructions,commands,plugins
@@ -238,7 +247,7 @@ export function detectAndReport(target) {
238
247
  console.log(`\n 📊 ${detected.length} of ${results.length} platforms detected.`)
239
248
  if (detected.length > 0) {
240
249
  const names = detected.map((r) => r.platform).join(',')
241
- console.log(` → Install with: node scripts/install.mjs --platforms ${names}`)
250
+ console.log(` → Install with: npx pantheon-opencode init --platforms ${names}`)
242
251
  }
243
252
 
244
253
  return detected.map((r) => r.platform)
@@ -275,6 +284,7 @@ export function copyFiles(srcDir, dstDir, dryRun, renameMap = null, clean = fals
275
284
 
276
285
  const dstFile = join(dstDir, dstName)
277
286
 
287
+ if (statSync(srcFile).isDirectory()) continue
278
288
  const content = readFileSync(srcFile, 'utf8')
279
289
  const existing = existsSync(dstFile) ? readFileSync(dstFile, 'utf8') : null
280
290
 
@@ -408,6 +418,22 @@ export function installSkills(skills, target, dryRun, subDir = '.opencode') {
408
418
  copyDirRecursive(src, dst)
409
419
  }
410
420
 
421
+ // Remove stale skills that exist in dst but not in skills list
422
+ if (existsSync(dstSkillsDir)) {
423
+ const dstEntries = readdirSync(dstSkillsDir)
424
+ for (const entry of dstEntries) {
425
+ const dstPath = join(dstSkillsDir, entry)
426
+ if (!statSync(dstPath).isDirectory()) continue
427
+ if (!skills.includes(entry)) {
428
+ if (!dryRun) {
429
+ rmSync(dstPath, { recursive: true, force: true })
430
+ console.log(` 🗑️ Removed stale skill: ${entry}`)
431
+ }
432
+ created++
433
+ }
434
+ }
435
+ }
436
+
411
437
  return { created, skipped }
412
438
  }
413
439
 
@@ -184,7 +184,7 @@ ${colored('USAGE', C.cyan)}
184
184
  node scripts/manifest.mjs --help this help
185
185
 
186
186
  ${colored('PIPELINE', C.cyan)}
187
- 1. SYNC — Generate platform agent files via sync-platforms.mjs
187
+ 1. SYNC — [removed in v1.0] platform sync via sync-platforms.mjs
188
188
  2. INSTALL — Deploy agents, config, skills to target directory
189
189
  3. VERIFY — Check agent count, MCP servers, config integrity
190
190
  4. REPORT — Structured pass/fail summary
@@ -219,35 +219,10 @@ function _step(label, fn) {
219
219
  // Step 1: Sync
220
220
  // ---------------------------------------------------------------------------
221
221
 
222
- function syncPlatforms(targetPlatforms) {
223
- const syncScript = join(ROOT, 'scripts', 'sync-platforms.mjs')
224
- if (!existsSync(syncScript)) {
225
- fail(`sync-platforms.mjs not found at ${syncScript}`)
226
- return false
227
- }
228
-
229
- let allOk = true
230
- for (const platform of targetPlatforms) {
231
- const label = platform.charAt(0).toUpperCase() + platform.slice(1)
232
- console.log(` ${colored('Syncing', C.cyan)} ${colored(label, C.bold)}...`)
233
- try {
234
- const result = spawnSync(process.execPath, [syncScript, platform], {
235
- cwd: ROOT,
236
- stdio: 'inherit',
237
- timeout: 60_000,
238
- })
239
- if (result.status === 0) {
240
- pass(`${label} sync completed`)
241
- } else {
242
- fail(`${label} sync failed (exit ${result.status})`)
243
- allOk = false
244
- }
245
- } catch (err) {
246
- fail(`Sync error: ${err.message}`)
247
- allOk = false
248
- }
249
- }
250
- return allOk
222
+ function syncPlatforms(_targetPlatforms) {
223
+ // sync-platforms.mjs removed in v1.0 (OpenCode-only)
224
+ info('Platform sync step skipped — sync-platforms.mjs was removed in v1.0')
225
+ return true
251
226
  }
252
227
 
253
228
  // ---------------------------------------------------------------------------
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * postinstall.mjs — Pantheon npm post-install hook
4
+ *
5
+ * Runs after `npm install` completes. Validates environment and prints
6
+ * setup instructions. Does NOT install Pantheon platform components.
7
+ */
8
+ import { existsSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+
12
+ const __dirname = fileURLToPath(new URL('.', import.meta.url));
13
+ const ROOT = join(__dirname, '..');
14
+
15
+ const REQUIRED_NODE_MAJOR = 18;
16
+ const nodeMajor = parseInt(process.versions.node.split('.')[0], 10);
17
+
18
+ try {
19
+ // Validate Node.js version
20
+ if (nodeMajor < REQUIRED_NODE_MAJOR) {
21
+ console.error(`❌ Node.js >= ${REQUIRED_NODE_MAJOR} required (current: ${process.versions.node})`);
22
+ process.exit(1);
23
+ }
24
+
25
+ // Validate js-yaml is available
26
+ try {
27
+ await import('js-yaml');
28
+ } catch {
29
+ console.warn('⚠️ js-yaml not found — run `npm install` to install dependencies');
30
+ }
31
+
32
+ console.log('');
33
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
34
+ console.log(' Pantheon OpenCode — npm dependencies installed ✅');
35
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
36
+ console.log('');
37
+ console.log(' Next steps:');
38
+ console.log(' 1. Configure Pantheon:');
39
+ console.log(' npm run setup');
40
+ console.log(' # or: npx pantheon-opencode init');
41
+ console.log(' 2. Verify installation:');
42
+ console.log(' npm run doctor');
43
+ console.log('');
44
+ } catch (err) {
45
+ console.error(`❌ Post-install check failed: ${err.message}`);
46
+ process.exit(1);
47
+ }
@@ -68,8 +68,8 @@ copy('plugin.json')
68
68
  // Shell helper
69
69
  copy('sync-opencode.sh')
70
70
 
71
- // Install script exposed at root (not nested under scripts/)
72
- copy('scripts/install.mjs', 'install.mjs')
71
+ // Entry point exposed at root
72
+ copy('bin/pantheon-init.mjs', 'pantheon-init.mjs')
73
73
 
74
74
  // Agent definitions
75
75
  copy('agents')
@@ -4,7 +4,7 @@
4
4
  * uninstall.mjs — Multi-platform Pantheon agent uninstaller
5
5
  *
6
6
  * Removes Pantheon agent files and config from a project directory.
7
- * The reverse of install.mjs.
7
+ * The reverse of the installer.
8
8
  *
9
9
  * Usage:
10
10
  * node scripts/uninstall.mjs auto-detect, cwd
@@ -36,14 +36,14 @@ const PANTHEON_AGENT_NAMES = [
36
36
  'themis',
37
37
  'prometheus',
38
38
  'hephaestus',
39
- 'chiron',
40
- 'echo',
39
+
40
+
41
41
  'nyx',
42
42
  'gaia',
43
43
  'iris',
44
44
  'mnemosyne',
45
45
  'talos',
46
- 'agora',
46
+
47
47
  ]
48
48
 
49
49
  const PLATFORM_LABELS = {
@@ -958,7 +958,7 @@ function printUninstallSummary(target, platforms) {
958
958
  console.log('')
959
959
  if (totalRemoved > 0) {
960
960
  console.log(' 📖 To verify, check the target directory for remaining Pantheon files.')
961
- console.log(` 📚 Reinstall: node scripts/install.mjs --target ${target}`)
961
+ console.log(` 📚 Reinstall: npx pantheon-opencode init --project (in ${target})`)
962
962
  }
963
963
  console.log('')
964
964
  }
@@ -44,7 +44,7 @@ function warn(message) {
44
44
  }
45
45
 
46
46
  // Load routing.yml
47
- const routingPath = join(ROOT, 'routing.yml')
47
+ const routingPath = join(ROOT, 'src', 'routing.yml')
48
48
  if (!existsSync(routingPath)) {
49
49
  console.error('❌ routing.yml not found')
50
50
  process.exit(1)
@@ -58,10 +58,10 @@ const routingAgents = Object.keys(routing.agents || {})
58
58
  console.log(` Agents in routing.yml: ${routingAgents.length}`)
59
59
 
60
60
  // Get canonical agent files
61
- const agentsDir = join(ROOT, 'agents')
61
+ const agentsDir = join(ROOT, 'src', 'agents')
62
62
  const canonicalFiles = readdirSync(agentsDir)
63
- .filter((f) => f.endsWith('.agent.md'))
64
- .map((f) => f.replace('.agent.md', ''))
63
+ .filter((f) => f.endsWith('.md'))
64
+ .map((f) => f.replace('.md', ''))
65
65
  .sort()
66
66
 
67
67
  console.log(` Canonical agent files: ${canonicalFiles.length}`)
@@ -77,19 +77,22 @@ for (const name of canonicalFiles) {
77
77
  }
78
78
 
79
79
  // B. Skill validation
80
- const skillsDir = join(ROOT, 'skills')
81
- const existingSkills = existsSync(skillsDir)
82
- ? readdirSync(skillsDir).filter((d) => {
83
- const skillDir = join(skillsDir, d)
80
+ const srcSkillsDir = join(ROOT, 'src', 'skills')
81
+ const dotSkillsDir = join(ROOT, '.opencode', 'skills')
82
+ const existingSkills = []
83
+ for (const dir of [srcSkillsDir, dotSkillsDir]) {
84
+ if (existsSync(dir)) {
85
+ for (const d of readdirSync(dir)) {
86
+ const skillDir = join(dir, d)
84
87
  try {
85
- return existsSync(join(skillDir, 'SKILL.md'))
86
- } catch {
87
- return false
88
- }
89
- })
90
- : []
91
-
92
- console.log(`\n Skills in skills/: ${existingSkills.length}`)
88
+ if (existsSync(join(skillDir, 'SKILL.md')) && !existingSkills.includes(d)) {
89
+ existingSkills.push(d)
90
+ }
91
+ } catch { /* skip */ }
92
+ }
93
+ }
94
+ }
95
+ console.log(`\n Skills found: ${existingSkills.length} (src/skills/ + .opencode/skills/)`)
93
96
 
94
97
  for (const [name, info] of Object.entries(routing.agents || {})) {
95
98
  const agentSkills = info.skills || []
@@ -25,7 +25,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url))
25
25
  const ROOT = join(__dirname, '..')
26
26
 
27
27
  const MANIFEST_FILES = [
28
- 'platform/forge.json',
28
+ // 'platform/forge.json' removed in v1.0 — directory no longer exists
29
29
  'pyproject.toml',
30
30
  'package.json',
31
31
  'plugin.json',
@@ -225,6 +225,17 @@ switch (command) {
225
225
  updateManifests(newVersion)
226
226
  promoteUnreleased(newVersion, date)
227
227
  console.log(`\nDone. Commit with: git add -A && git commit -m "chore(release): v${newVersion}"`)
228
+
229
+ // Create git tag
230
+ try {
231
+ const tag = `v${newVersion}`
232
+ execSync(`git tag -a ${tag} -m "chore(release): ${tag}"`, { stdio: 'inherit' })
233
+ console.log(`Tag ${tag} created locally. Push: git push origin ${tag}`)
234
+ console.log(`Auto-release will trigger on main after merge.`)
235
+ } catch (e) {
236
+ console.warn(`Tag creation failed: ${e.message}`)
237
+ console.log('Create manually: git tag -a v' + newVersion + ' -m "chore(release): v' + newVersion + '"')
238
+ }
228
239
  break
229
240
  }
230
241
 
package/skills-lock.json CHANGED
@@ -12,5 +12,12 @@
12
12
  "src/skills/session-goal/SKILL.md": "793498265f70253c20524f6adc88bcc86db11d7160fe8232a26aedc6b1c5489f",
13
13
  "src/skills/spec-driven-development/SKILL.md": "e93b9103d6cd1848ab01328efde82c1daf564d1cabbdc2278254b346fcf55d02",
14
14
  "src/skills/tdd-with-agents/SKILL.md": "9880919a46b74f549f948147d8b086b008635de94fa259f76261d067772bb8e3",
15
- "src/skills/visual-review-pipeline/SKILL.md": "f6e65ff75a9325c38e0e9dde8e87f09b873e14e490936ef48aa80201bb68fe10"
16
- }
15
+ "src/skills/visual-review-pipeline/SKILL.md": "f6e65ff75a9325c38e0e9dde8e87f09b873e14e490936ef48aa80201bb68fe10",
16
+ "src/skills/codemap/SKILL.md": "src/skills/codemap/SKILL.md",
17
+ "src/skills/simplify/SKILL.md": "src/skills/simplify/SKILL.md",
18
+ "src/skills/reflect/SKILL.md": "src/skills/reflect/SKILL.md",
19
+ "src/skills/worktrees/SKILL.md": "src/skills/worktrees/SKILL.md",
20
+ "src/skills/verification-planning/SKILL.md": "src/skills/verification-planning/SKILL.md",
21
+ "src/skills/loop-engineering/SKILL.md": "src/skills/loop-engineering/SKILL.md",
22
+ "src/skills/clonedeps/SKILL.md": "src/skills/clonedeps/SKILL.md"
23
+ }
@@ -1,57 +1,29 @@
1
1
  ---
2
2
  name: aphrodite
3
- description: Frontend specialist — React 19, TypeScript strict, WCAG accessibility,
4
- responsive design, TDD, modern API patterns, deprecated npm detection. Calls apollo
5
- for discovery, sends to themis for review.
6
- mode: subagent
3
+ description: "Frontend specialist — React 19, TypeScript strict, WCAG accessibility, responsive design, TDD, modern API patterns, deprecated npm detection. Calls apollo for discovery, sends to themis for review."
4
+ mode: primary
7
5
  reasoning_effort: medium
8
6
  permission:
7
+ read: allow
8
+ grep: allow
9
+ edit: allow
9
10
  bash: allow
10
- "pantheon-resources_*": allow
11
- "pantheon-memory_*": allow
12
-
13
- tools:
14
- agent: true
15
- vscode/askQuestions: true
16
- search/codebase: true
17
- search/usages: true
18
- read/readFile: true
19
- read/problems: true
20
- edit/editFiles: true
21
- execute/runInTerminal: true
22
- execute/testFailure: true
23
- execute/getTerminalOutput: true
24
- browser/openBrowserPage: true
25
- browser/navigatePage: true
26
- browser/readPage: true
27
- browser/clickElement: true
28
- browser/typeInPage: true
29
- browser/hoverElement: true
30
- browser/dragElement: true
31
- browser/handleDialog: true
32
- temperature: 0.5
33
- steps: 25
11
+ webfetch: allow
12
+ glob: allow
13
+ question: allow
14
+ temperature: 0.3
15
+ steps: 50
34
16
  skills:
35
- - frontend-analyzer
36
- - nextjs-seo-optimization
37
- - quality-gate
38
- - simplify
39
- - tdd-with-agents
40
- - context-compression
41
- - visual-review-pipeline
17
+ - tdd-with-agents
18
+ - visual-review-pipeline
19
+ - file-prompts
20
+ - incremental-implementation
42
21
  mcp_tools:
43
22
  pantheon-resources: all
44
23
  pantheon-memory: [memory_search]
45
24
  pantheon-code-mode: [execute_code_script]
46
25
  ---
47
26
 
48
- ## Memory Protocol
49
-
50
- See `instructions/memory-protocol.instructions.md` for universal rules.
51
-
52
- ### Override
53
- - `memory_recall("frontend", top_k=3)` at task start
54
-
55
27
  ## When NOT to Use Aphrodite
56
28
  - For backend API implementation — that's @hermes
57
29
  - For database schema changes — that's @demeter
@@ -135,24 +107,10 @@ After implementing UI components:
135
107
  - Do NOT auto-continue on visual regression — stop and diagnose
136
108
  - Partial results NOT allowed — must complete or fail
137
109
 
138
- ## MCP Capabilities
139
-
140
- Pantheon provides 3 native MCP servers. See [`docs/mcp-tools.md`](../docs/mcp-tools.md) for the full tool registry.
141
-
142
- | Server | Tools | When to use |
143
- |--------|-------|-------------|
144
- | **pantheon-resources** | Read `pantheon://agents`, `pantheon://routing`, `pantheon://skills`, `pantheon://deepwork/{slug}` | Discover agents, routing rules, and skills at session start |
145
- | **pantheon-memory** | `memory_search(query, n_results?)` | Read-only memory — search past UI decisions and component patterns |
146
- | **pantheon-code-mode** | `execute_code_script(script_name, args?)` | Run npm test, biome check |
147
-
148
- Before implementing, call `memory_search("<component/page>")` to retrieve past component patterns. Results are persisted by Zeus on subtask_summary return.
149
-
150
110
  ## Inline Compression
151
111
 
152
112
  Compress working context with the `context-compression` skill (L1, Pantheon-native) when:
153
- - **C8**: After returning a `subtask_summary` with CRITICAL/HIGH findings → compress before the next phase.
154
- - **C9**: Before delegating a large context block to another agent → compress to cut tokens.
155
- - **C11**: At a phase boundary / session handoff → compress completed work.
113
+ - > Inline compression: See `skill: context-compression` (C8, C9, C11)
156
114
 
157
115
  **How**: call `execute_code_script("compress-inline.py", args=["compress", "--text", "<content>"])`. Use `score` to preview priority, `batch` for multiple files. See the `context-compression` skill for the full protocol.
158
116
 
@@ -1,48 +1,25 @@
1
1
  ---
2
2
  name: apollo
3
- description: 'Read-only investigation scout — 310 parallel searches across codebase,
4
- external docs, and GitHub. Called by: athena, zeus, hermes, aphrodite, demeter.
5
- No edits, no commands.'
3
+ description: "Read-only investigation scout — 3-10 parallel searches across codebase, external docs, and GitHub. Called by: athena, zeus, hermes, aphrodite, demeter. No edits, no commands."
4
+ mode: subagent
5
+ reasoning_effort: low
6
6
  permission:
7
+ read: allow
8
+ grep: allow
9
+ glob: allow
10
+ webfetch: allow
7
11
  edit: deny
8
12
  bash: deny
9
- "pantheon-resources_*": allow
10
- "pantheon-memory_*": allow
11
- "pantheon-persistence_*": allow
12
-
13
- tools:
14
- agent: true
15
- search/codebase: true
16
- search/textSearch: true
17
- search/fileSearch: true
18
- search/usages: true
19
- read/readFile: true
20
- read/listDirectory: true
21
- web/fetch: true
22
- mode: subagent
23
- reasoning_effort: low
24
13
  temperature: 0.1
25
- steps: 15
14
+ steps: 30
26
15
  skills:
27
- - internet-search
28
- - codemap
16
+ - auto-continue
29
17
  mcp_tools:
30
18
  pantheon-resources: all
31
19
  pantheon-memory: [memory_search]
32
20
  pantheon-code-mode: []
33
21
  ---
34
22
 
35
- ## Memory Protocol
36
-
37
- See `instructions/memory-protocol.instructions.md` for universal rules.
38
-
39
- ### Override
40
- - `memory_search("<topic>")` before investigation — read-only, no store
41
-
42
- # Apollo - Investigation Scout
43
-
44
- You are the **READ-ONLY INVESTIGATOR** (Apollo) called by other agents to explore codebases, search for patterns, and gather evidence. You NEVER edit files or run commands.
45
-
46
23
  ## When NOT to Use Apollo
47
24
  - When you already know the exact file path — read it directly
48
25
  - When you need to modify files — Apollo is read-only
@@ -91,19 +68,3 @@ Return structured findings with:
91
68
  - If timeout occurs, return partial findings with confidence score
92
69
  - Do NOT loop back for more searches — return what you have
93
70
  - Never auto-continue past 3 search rounds without fresh context
94
-
95
- ## MCP Capabilities
96
-
97
- Pantheon provides 3 native MCP servers. See [`docs/mcp-tools.md`](../docs/mcp-tools.md) for the full tool registry.
98
-
99
- | Server | Tools | When to use |
100
- |--------|-------|-------------|
101
- | **pantheon-resources** | Read `pantheon://agents`, `pantheon://routing`, `pantheon://skills`, `pantheon://deepwork/{slug}` | Discover agents, routing rules, and skills at session start |
102
- | **pantheon-memory** | `memory_recall(context, n_results?)`, `memory_store(content, category?, importance?)`, `memory_search(query, n_results?)` | Search past discoveries via `memory_search()` before starting new investigations |
103
- | **pantheon-code-mode** | `execute_code_script(script_name, args?)` | (none — bash=deny) |
104
-
105
- ### Not Available
106
- - `pantheon-code-mode` (bash=deny)
107
- - `memory_store` — read-only; findings indexed by Mnemosyne
108
-
109
- Before starting an investigation, call `memory_search("<topic>")` to avoid re-discovering known patterns. Read `pantheon://agents` to discover agent constraints. You are read-only — Mnemosyne handles memory persistence.
@@ -5,46 +5,24 @@ description: Strategic planner & architect — research-first, plan-only, never
5
5
  for discovery.
6
6
  mode: primary
7
7
  reasoning_effort: high
8
- permission:
9
- edit: deny
10
- bash: deny
11
- "pantheon-resources_*": allow
12
- "pantheon-memory_*": allow
13
-
14
- tools:
15
- agent: true
16
- vscode/askQuestions: true
17
- search/codebase: true
18
- search/usages: true
19
- search/fileSearch: true
20
- search/textSearch: true
21
- search/listDirectory: true
22
- read/readFile: true
23
- web/fetch: true
24
- temperature: 0.1
25
- steps: 15
26
- skills:
27
- - plan-architecture
28
- - codemap
29
- - init-deep
30
- - interview
31
- - metis-gap-analysis
8
+
9
+ steps: 30
32
10
  mcp_tools:
33
11
  pantheon-resources: all
34
12
  pantheon-memory: [memory_search]
35
13
  pantheon-code-mode: []
14
+ skills:
15
+ - spec-driven-development
16
+ - memory-bank
17
+ permission:
18
+ edit: deny
19
+ bash: deny
20
+ read: allow
21
+ grep: allow
22
+ glob: allow
23
+ webfetch: allow
36
24
  ---
37
25
 
38
- ## Memory Protocol
39
-
40
- See `instructions/memory-protocol.instructions.md` for universal rules.
41
-
42
- ### Overrides
43
- - `memory_search("<domain>", top_k=3)` before planning — read-only
44
- - Architectural decisions: handoff to @mnemosyne for ADR
45
-
46
- # Athena - Strategic Planner
47
-
48
26
  ## When NOT to Use Athena
49
27
  - When the task is a small, bounded fix — use @talos directly
50
28
  - When you need immediate implementation without planning — delegate to @hermes / @aphrodite directly
@@ -62,7 +40,7 @@ Use `task` to delegate to agents that have these tools.
62
40
  ## Core Workflow
63
41
 
64
42
  1. **Understand** the user's goal and requirements
65
- 2. **Research** codebase (use `search/codebase` directly OR delegate to @apollo if complex)
43
+ 2. **Research** codebase (use `grep` directly OR delegate to @apollo if complex)
66
44
  3. **Plan** in CONCISE phases (3-5 max, not 10+)
67
45
  4. **Validate plan quality** via @themis
68
46
  5. **Approve** via `agent/askQuestions`
@@ -73,7 +51,7 @@ Use `task` to delegate to agents that have these tools.
73
51
  Only Athena should fetch and reconcile supported-model information from:
74
52
  - https://docs.github.com/pt/copilot/reference/ai-models/supported-models
75
53
 
76
- Use `web/fetch` to verify availability before proposing model updates to other agents.
54
+ Use `webfetch` to verify availability before proposing model updates to other agents.
77
55
 
78
56
  ## Bounded Research Strategy (Fast Planning)
79
57
 
@@ -163,7 +141,7 @@ Only after explicit "yes" → delegate to @zeus with plan context.
163
141
  - Relationship analysis (how A connects to B)
164
142
  - Multiple parallel searches needed (3-10 simultaneous)
165
143
 
166
- **Otherwise**: Use `search/codebase` directly (faster).
144
+ **Otherwise**: Use `grep` directly (faster).
167
145
 
168
146
  ## `/fork` for Alternative Approaches
169
147
 
@@ -174,7 +152,7 @@ This is worth exploring separately. Use /fork to compare approaches.
174
152
 
175
153
  ## Examples
176
154
 
177
- **Simple:** "Plan JWT auth" → Use `search/codebase` for auth files → Create 3-phase plan
155
+ **Simple:** "Plan JWT auth" → Use `grep` for auth files → Create 3-phase plan
178
156
 
179
157
  **Complex:** "Plan microservices migration" → Delegate to `@apollo` for full discovery → Create 5-phase plan
180
158
 
@@ -194,7 +172,7 @@ Before creating a plan:
194
172
 
195
173
  ## Research with Web Fetch
196
174
 
197
- For external docs/specs, use `web/fetch` (see `internet-search` skill for patterns):
175
+ For external docs/specs, use `webfetch` (see `internet-search` skill for patterns):
198
176
  - RFCs, official documentation, GitHub issues/PRs
199
177
  - Synthesize findings into plan recommendations
200
178
 
@@ -207,20 +185,5 @@ For external docs/specs, use `web/fetch` (see `internet-search` skill for patter
207
185
  - Do NOT re-plan without new information
208
186
  - Partial results NOT allowed — plan must be complete before presenting
209
187
 
210
- ## MCP Capabilities
211
-
212
- Pantheon provides 3 native MCP servers. See [`docs/mcp-tools.md`](../docs/mcp-tools.md) for the full tool registry.
213
-
214
- | Server | Tools | When to use |
215
- |--------|-------|-------------|
216
- | **pantheon-resources** | Read `pantheon://agents`, `pantheon://routing`, `pantheon://skills`, `pantheon://deepwork/{slug}` | Discover agents, routing rules, and skills at session start |
217
- | **pantheon-memory** | `memory_search(query, n_results?)` | Read-only memory — search past architecture decisions before planning |
218
- | **pantheon-code-mode** | `execute_code_script(script_name, args?)` | (none — bash=deny) |
219
-
220
- ### Not Available
221
- - `pantheon-code-mode` (bash=deny) — delegate script execution to implementers
222
-
223
- Before creating a plan, call `memory_search("<domain>")` with top-k 5 to retrieve past architecture decisions. Read `pantheon://routing` to verify delegation rules. Results are persisted by Zeus on subtask_summary return.
224
-
225
188
  ## Skills
226
189
  Planejamento: `spec-driven-development`, `artifact-management`