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.
- package/README.md +61 -109
- package/bin/pantheon-init.mjs +57 -136
- package/commands/pantheon-audit.md +1 -1
- package/commands/pantheon-deepwork.md +32 -81
- package/commands/pantheon-reflect.md +16 -0
- package/commands/pantheon-status.md +1 -1
- package/commands/pantheon-verify.md +17 -0
- package/opencode.json +25 -0
- package/package.json +24 -13
- package/scripts/ci-validate-yaml.py +19 -0
- package/scripts/doctor.mjs +10 -65
- package/scripts/install/opencode.mjs +69 -6
- package/scripts/install/shared.mjs +39 -13
- package/scripts/manifest.mjs +5 -30
- package/scripts/postinstall.mjs +47 -0
- package/scripts/release-bundle.mjs +2 -2
- package/scripts/uninstall.mjs +5 -5
- package/scripts/validate-routing.mjs +19 -16
- package/scripts/versioning.mjs +12 -1
- package/skills-lock.json +9 -2
- package/src/agents/aphrodite.md +15 -57
- package/src/agents/apollo.md +9 -48
- package/src/agents/athena.md +17 -54
- package/src/agents/demeter.md +10 -47
- package/src/agents/gaia.md +7 -40
- package/src/agents/hephaestus.md +9 -52
- package/src/agents/hermes.md +17 -52
- package/src/agents/iris.md +8 -45
- package/src/agents/mnemosyne.md +12 -47
- package/src/agents/nyx.md +8 -45
- package/src/agents/prometheus.md +11 -49
- package/src/agents/talos.md +6 -45
- package/src/agents/themis.md +10 -35
- package/src/agents/zeus.md +5 -7
- package/src/mcp/mcp_resources_server.py +2 -0
- package/src/plugins/tui/dist/tui.tsx +203 -93
- package/src/plugins/tui/src/index.tsx +203 -93
- package/src/routing.yml +33 -93
- package/src/skills/clonedeps/SKILL.md +45 -0
- package/src/skills/codemap/SKILL.md +47 -0
- package/src/skills/loop-engineering/SKILL.md +51 -0
- package/src/skills/reflect/SKILL.md +49 -0
- package/src/skills/simplify/SKILL.md +39 -0
- package/src/skills/verification-planning/SKILL.md +52 -0
- package/src/skills/worktrees/SKILL.md +43 -0
- package/commands/pantheon-bg.md +0 -10
- package/commands/pantheon-consolidate.md +0 -11
- package/commands/pantheon-doc.md +0 -10
- package/commands/pantheon-hash.md +0 -11
- package/commands/pantheon-todo.md +0 -11
- package/docs/AGENT-MCP.md +0 -194
- package/docs/ARCHITECTURE.md +0 -384
- package/docs/BRANCH-PROTECTION.md +0 -142
- package/docs/INDEX.md +0 -81
- package/docs/INSTALLATION.md +0 -217
- package/docs/MCP.md +0 -238
- package/docs/MEMORY.md +0 -471
- package/docs/MIGRATION-MEMORY-BANK.md +0 -139
- package/docs/PLATFORMS.md +0 -5
- package/docs/QUICKSTART.md +0 -49
- package/docs/README.md +0 -18
- package/docs/RELEASING.md +0 -256
- package/docs/SETUP.md +0 -5
- package/docs/UPGRADING.md +0 -41
- package/docs/mcp-recommendations.md +0 -439
- package/docs/mcp-tools.md +0 -156
- package/docs/mcp-user-guide.md +0 -204
- package/docs/persistence-mcp.md +0 -111
- package/scripts/init-pantheon-mcp.sh +0 -118
- package/scripts/install.mjs +0 -26
- package/src/instructions/documentation-standards.instructions.md +0 -53
- 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
|
-
|
|
74
|
+
pantheon-init.mjs — Pantheon OpenCode installer
|
|
66
75
|
|
|
67
76
|
Usage:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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:
|
|
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
|
|
package/scripts/manifest.mjs
CHANGED
|
@@ -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 —
|
|
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(
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
-
//
|
|
72
|
-
copy('
|
|
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')
|
package/scripts/uninstall.mjs
CHANGED
|
@@ -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
|
|
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
|
-
|
|
40
|
-
|
|
39
|
+
|
|
40
|
+
|
|
41
41
|
'nyx',
|
|
42
42
|
'gaia',
|
|
43
43
|
'iris',
|
|
44
44
|
'mnemosyne',
|
|
45
45
|
'talos',
|
|
46
|
-
|
|
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:
|
|
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('.
|
|
64
|
-
.map((f) => f.replace('.
|
|
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
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
console.log(`\n Skills
|
|
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 || []
|
package/scripts/versioning.mjs
CHANGED
|
@@ -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
|
+
}
|
package/src/agents/aphrodite.md
CHANGED
|
@@ -1,57 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aphrodite
|
|
3
|
-
description: Frontend specialist — React 19, TypeScript strict, WCAG accessibility,
|
|
4
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
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
|
-
-
|
|
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
|
|
package/src/agents/apollo.md
CHANGED
|
@@ -1,48 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: apollo
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
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:
|
|
14
|
+
steps: 30
|
|
26
15
|
skills:
|
|
27
|
-
-
|
|
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.
|
package/src/agents/athena.md
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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`
|