create-egregore 0.20.0 → 0.20.1
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/assets/egregore-launcher.js +25 -3
- package/lib/setup.js +21 -2
- package/package.json +1 -1
- package/runtime/codex/.codex/config.toml +3 -0
- package/runtime/codex/.codex/skills/archive/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/branch/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/checkup/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/commit/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/contribute/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/delete-user/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/ingest/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/ingest-corpus/SKILL.md +29 -0
- package/runtime/codex/.codex/skills/ingest-notion/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/issue/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/meeting/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/note/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/notion-connect/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/onboarding/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/pr/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/push/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/reflect/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/review-pr/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/save/SKILL.md +3 -1
- package/runtime/codex/.codex/skills/slack-connect/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/summon/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/sync-repos/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/teams-connect/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/telegram-connect/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/tutorial/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/update/SKILL.md +1 -1
- package/runtime/codex/.codex/spec-manifest.json +3 -3
- package/runtime/codex/AGENTS.md +30 -31
- package/runtime/codex/bin/agent.sh +17 -5
- package/runtime/codex/bin/codex-render-spec.mjs +27 -32
- package/runtime/codex/bin/codex-sync-skills.sh +6 -1
- package/runtime/codex/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/codex/bin/handoff-run.sh +8 -3
- package/runtime/codex/bin/handoff-save-egregore.sh +19 -7
- package/runtime/codex/bin/ingest.py +260 -5
- package/runtime/codex/bin/lib/git-message.sh +37 -0
- package/runtime/codex/bin/lib/git-sync.sh +10 -2
- package/runtime/codex/bin/session-autosave.sh +7 -1
- package/runtime/codex/bin/settings.sh +1 -1
- package/runtime/codex/manifest.json +4 -1
- package/runtime/pi/.codex/config.toml +3 -0
- package/runtime/pi/.codex/skills/archive/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/branch/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/checkup/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/commit/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/contribute/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/delete-user/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/ingest/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/ingest-corpus/SKILL.md +29 -0
- package/runtime/pi/.codex/skills/ingest-notion/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/issue/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/meeting/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/note/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/notion-connect/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/onboarding/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/pr/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/push/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/reflect/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/review-pr/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/save/SKILL.md +3 -1
- package/runtime/pi/.codex/skills/slack-connect/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/summon/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/sync-repos/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/teams-connect/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/telegram-connect/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/tutorial/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/update/SKILL.md +1 -1
- package/runtime/pi/.codex/spec-manifest.json +3 -3
- package/runtime/pi/.pi/APPEND_SYSTEM.md +54 -31
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +30 -31
- package/runtime/pi/bin/agent.sh +17 -5
- package/runtime/pi/bin/codex-render-spec.mjs +27 -32
- package/runtime/pi/bin/codex-sync-skills.sh +6 -1
- package/runtime/pi/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/pi/bin/handoff-run.sh +8 -3
- package/runtime/pi/bin/handoff-save-egregore.sh +19 -7
- package/runtime/pi/bin/ingest.py +260 -5
- package/runtime/pi/bin/lib/git-message.sh +37 -0
- package/runtime/pi/bin/lib/git-sync.sh +10 -2
- package/runtime/pi/bin/pi-render-spec.mjs +52 -26
- package/runtime/pi/bin/session-autosave.sh +7 -1
- package/runtime/pi/bin/settings.sh +1 -1
- package/runtime/pi/manifest.json +4 -1
- package/runtime/prime/.codex/config.toml +3 -0
- package/runtime/prime/.codex/skills/archive/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/branch/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/checkup/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/commit/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/contribute/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/delete-user/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/ingest/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/ingest-corpus/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/ingest-notion/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/issue/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/meeting/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/note/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/notion-connect/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/onboarding/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/pr/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/push/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/reflect/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/review-pr/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/save/SKILL.md +3 -1
- package/runtime/prime/.codex/skills/slack-connect/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/summon/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/sync-repos/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/teams-connect/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/telegram-connect/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/tutorial/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/update/SKILL.md +1 -1
- package/runtime/prime/.codex/spec-manifest.json +3 -3
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +54 -31
- package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
- package/runtime/prime/AGENTS.md +30 -31
- package/runtime/prime/bin/agent.sh +17 -5
- package/runtime/prime/bin/codex-render-spec.mjs +27 -32
- package/runtime/prime/bin/codex-sync-skills.sh +6 -1
- package/runtime/prime/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/prime/bin/handoff-run.sh +8 -3
- package/runtime/prime/bin/handoff-save-egregore.sh +19 -7
- package/runtime/prime/bin/ingest.py +260 -5
- package/runtime/prime/bin/lib/git-message.sh +37 -0
- package/runtime/prime/bin/lib/git-sync.sh +10 -2
- package/runtime/prime/bin/prime-render-spec.mjs +51 -27
- package/runtime/prime/bin/session-autosave.sh +7 -1
- package/runtime/prime/bin/settings.sh +1 -1
- package/runtime/prime/manifest.json +4 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// egregore-launcher-version: 0.20.
|
|
2
|
+
// egregore-launcher-version: 0.20.1
|
|
3
3
|
//
|
|
4
4
|
// egregore — launch and browse Egregore instances from your terminal.
|
|
5
5
|
// Installed by create-egregore. Reads ~/.egregore/instances.json.
|
|
@@ -33,7 +33,7 @@ const crypto = require("node:crypto");
|
|
|
33
33
|
const { spawnSync, spawn } = require("node:child_process");
|
|
34
34
|
const readline = require("node:readline");
|
|
35
35
|
|
|
36
|
-
const VERSION = "0.20.
|
|
36
|
+
const VERSION = "0.20.1";
|
|
37
37
|
const REGISTRY = path.join(os.homedir(), ".egregore", "instances.json");
|
|
38
38
|
const DEFAULT_FILE = path.join(os.homedir(), ".egregore", "default");
|
|
39
39
|
const UPDATE_CACHE_FILE = path.join(os.homedir(), ".egregore", "update-check.json");
|
|
@@ -1532,9 +1532,31 @@ async function cmdConnect(args) {
|
|
|
1532
1532
|
}
|
|
1533
1533
|
const activation = state.connected_activation || {};
|
|
1534
1534
|
if (cfg.mode === "connected" && activation.status === "connected") {
|
|
1535
|
+
if (activation.intent_id) {
|
|
1536
|
+
const repaired = await connectedApiRequest(
|
|
1537
|
+
githubToken,
|
|
1538
|
+
"POST",
|
|
1539
|
+
`/api/billing/connect/${encodeURIComponent(activation.intent_id)}/claim`,
|
|
1540
|
+
{},
|
|
1541
|
+
);
|
|
1542
|
+
if (repaired.status !== 200 || repaired.data?.status !== "connected") {
|
|
1543
|
+
die(
|
|
1544
|
+
`Connected is active, but its shared configuration could not be published: ${connectError(repaired, `HTTP ${repaired.status}`)}`,
|
|
1545
|
+
);
|
|
1546
|
+
}
|
|
1547
|
+
writeJsonFileAtomic(path.join(inst.path, "egregore.json"), {
|
|
1548
|
+
...cfg,
|
|
1549
|
+
mode: "connected",
|
|
1550
|
+
api_url: repaired.data.api_url,
|
|
1551
|
+
});
|
|
1552
|
+
if (repaired.data.api_key) {
|
|
1553
|
+
writeEnvValueAtomic(path.join(inst.path, ".env"), "EGREGORE_API_KEY", repaired.data.api_key);
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1535
1556
|
normalizeClaudeDenyRules(inst.path);
|
|
1536
1557
|
ensureClaudeModeStatusLine(inst.path);
|
|
1537
|
-
|
|
1558
|
+
const detail = activation.intent_id ? "shared configuration published" : "already connected";
|
|
1559
|
+
console.log(`\n ${GREEN}✓${RESET} ${BOLD}${inst.slug}${RESET} is connected · ${detail}.\n`);
|
|
1538
1560
|
return;
|
|
1539
1561
|
}
|
|
1540
1562
|
|
package/lib/setup.js
CHANGED
|
@@ -695,8 +695,9 @@ function ensureConnectedConfig(repoDir, data, ui) {
|
|
|
695
695
|
}
|
|
696
696
|
|
|
697
697
|
const required = ["org_name", "github_org", "memory_repo", "api_url", "slug"];
|
|
698
|
-
|
|
699
|
-
|
|
698
|
+
let missing = required.filter((key) => !config[key]);
|
|
699
|
+
const missingIdentity = missing.filter((key) => key !== "api_url");
|
|
700
|
+
if (missingIdentity.length) {
|
|
700
701
|
throw new Error(
|
|
701
702
|
`Connected setup is incomplete: egregore.json is missing ${missing.join(", ")}. Retry setup from egregore.xyz/setup.`
|
|
702
703
|
);
|
|
@@ -712,8 +713,26 @@ function ensureConnectedConfig(repoDir, data, ui) {
|
|
|
712
713
|
);
|
|
713
714
|
}
|
|
714
715
|
|
|
716
|
+
let changed = false;
|
|
717
|
+
const tokenApiUrl = data.api_url ? String(data.api_url).replace(/\/$/, "") : "";
|
|
718
|
+
if (tokenApiUrl && config.api_url !== tokenApiUrl) {
|
|
719
|
+
config.api_url = tokenApiUrl;
|
|
720
|
+
changed = true;
|
|
721
|
+
if (ui && typeof ui.warn === "function") {
|
|
722
|
+
ui.warn("Reconciled Connected configuration from the authenticated setup token");
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
missing = required.filter((key) => !config[key]);
|
|
726
|
+
if (missing.length) {
|
|
727
|
+
throw new Error(
|
|
728
|
+
`Connected setup is incomplete: egregore.json is missing ${missing.join(", ")}. Retry setup from egregore.xyz/setup.`
|
|
729
|
+
);
|
|
730
|
+
}
|
|
715
731
|
if (config.mode !== "connected") {
|
|
716
732
|
config.mode = "connected";
|
|
733
|
+
changed = true;
|
|
734
|
+
}
|
|
735
|
+
if (changed) {
|
|
717
736
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
718
737
|
}
|
|
719
738
|
return config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: archive
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Capture an effective prompting technique or steering pattern as reusable knowledge. Use for /archive, or when a prompt worked especially well and is worth reusing — not insight about the work itself (/reflect).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: branch
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Create a working branch from what you are about to work on. Use for /branch, or any request to start a new branch before making changes.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: checkup
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Run diagnostics on your Egregore environment and render a health report, auto-fixing what it can. Use for /checkup, a health check, or when something is broken and the root cause is unclear.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: commit
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Stage changes and create a commit with a properly formatted message. Use for /commit, or saving work locally — not sharing it (/push) or opening a pull request (/pr).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contribute
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Contribute an improvement back to the upstream Egregore framework as a cross-fork pull request. Use for /contribute, or submitting a framework fix upstream — not saving org work (/save) or filing a bug (/issue).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: delete-user
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Remove a member from this Egregore, revoking access across GitHub, Supabase, and Neo4j. Use for /delete-user, removing or kicking someone — not inviting (/invite) or viewing members (/dashboard).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ingest
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Unified ingestion entry point — brings files, meetings, Google Workspace, Notion, or bulk corpora into intake, then promotes useful material into curated memory. Say ''ingest'', ''bring this into Egregore''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest-corpus
|
|
3
|
+
description: 'Turn a large folder of documents into a Connect-only knowledge base that answers questions with sources. Say ''build a knowledge base''. Not a few files (/ingest) or a meeting/Notion/Google source.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore ingest-corpus Adapter
|
|
9
|
+
|
|
10
|
+
This is fallback coverage for a long-tail Egregore workflow that has not been
|
|
11
|
+
ported to a hand-written Codex-native skill yet.
|
|
12
|
+
|
|
13
|
+
Use the project shell and filesystem directly. Do not invoke Claude Code
|
|
14
|
+
commands. Translate interactive choices to structured Codex question tooling
|
|
15
|
+
when it is available; otherwise render compact numbered choices with an
|
|
16
|
+
`Other:` option and wait for the user.
|
|
17
|
+
|
|
18
|
+
1. Read `.claude/skills/ingest-corpus/SKILL.md` for the workflow details.
|
|
19
|
+
2. Run the referenced `bin/` scripts directly from Codex.
|
|
20
|
+
3. Treat graph and publish steps as best-effort unless that workflow explicitly
|
|
21
|
+
says they are required.
|
|
22
|
+
4. For every external notification, follow
|
|
23
|
+
`.claude/context/notification-consent.md`: plan without sending, then show
|
|
24
|
+
a separate exact Send / Edit / Cancel checkpoint. Never infer notification
|
|
25
|
+
consent from the workflow request or a batch approval.
|
|
26
|
+
5. Keep local-mode behavior filesystem-first and avoid graph or notification
|
|
27
|
+
calls when `egregore.json` declares `"mode": "local"`.
|
|
28
|
+
6. Never call the deprecated `egregore-handoff` CLI for Egregore project
|
|
29
|
+
handoffs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ingest-notion
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Bring selected Notion pages into shared Egregore memory via Notion''s official MCP. Routed from /ingest when the source is Notion — say ''/ingest notion''. Selected pages only, not a full-workspace sync.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ingest-user-interview
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Analyze user interview transcripts (Granola, pasted text, or a file) through a 3-analyst-agent plus Opus-synthesis pipeline. Say ''process the interview'', ''onboarding interview'', ''research call''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: issue
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Report an issue — captures context and routes it to the right place. Say ''this is broken'', ''bug in'', ''file an issue'', ''report a problem''. Not a personal task (/todo) or team exploration (/quest).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: me
|
|
3
|
-
description: '
|
|
3
|
+
description: 'View or change your member identity — display name, email — shared across Claude Code, Codex, and Pi. Say ''who am I'', ''call me <name>'', ''change my name to X'', or run ''/me''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: meeting
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use for /meeting, /meeting sync, /meeting backfill, or a search term — adaptively analyzes a Granola meeting into decisions, findings, actions, and continuity in shared memory.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: note
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use when the user says ''jot this down'', ''note to self'', ''just thinking out loud'', or ''park this thought'' — saves a private personal note, never shared or pushed until explicitly promoted.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: notion-connect
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use for ''connect notion'', ''notion status'', or ''disconnect notion'' — connects the current agent runtime directly to Notion''s official hosted MCP for search and fetch, or checks/revokes that connection.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: onboarding
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use for /onboarding, or when a new member''s onboarding is not yet complete — runs the deterministic VERIFY, ORIENT, INVITE, FIRST_HANDOFF welcome flow.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pr
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use for /pr, or ''create a PR'' / ''open a pull request'' — creates a pull request for the current branch against the repo''s base branch with a formatted title and body. Not for reviewing an existing PR (review-pr).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pull
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use for /pull when you need to sync the current branch and shared memory without also viewing activity (/activity auto-syncs already).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: push
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use for /push, or ''push my branch'' — pushes the current branch to origin, setting upstream on first push, before opening a PR with /pr.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reflect
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use when the user says ''we decided'', ''I realized'', or ''that''s a pattern'' — captures decisions, findings, or patterns in shared memory. Not a private half-baked thought (/note) or cross-referencing (/deep-reflect).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-pr
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Use when the user says ''review PR'', ''is this PR safe to merge'', or ''audit PR'' — runs a CTO-level 10-point review checklist on one or more pull requests. Not creating a PR (/pr) or validating local changes (/test).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -81,7 +81,9 @@ Where should {name} live?
|
|
|
81
81
|
twice.
|
|
82
82
|
5. Synthesize:
|
|
83
83
|
- a short topic from the work,
|
|
84
|
-
- a
|
|
84
|
+
- a commit message per `.claude/context/commit-format.md` — subject
|
|
85
|
+
`type(scope): imperative summary`, type/scope derived from the work
|
|
86
|
+
itself (never `chore(save):` for real work),
|
|
85
87
|
- a one-line user-facing scope summary,
|
|
86
88
|
- a PR description following `.claude/context/pr-format.md`:
|
|
87
89
|
`## What` (1–4 bullets), `## Why` (1–3 sentences), and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slack-connect
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Set up Slack as a notification channel for your Egregore — creates the workspace app, invites the bot, and binds a channel. Use for /slack-connect, ''connect slack'', or ''set up slack notifications''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: summon
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Design and launch a persistent agent (a spirit) that runs on a schedule or watches for conditions, via adaptive questioning that produces a reviewable spec before launch.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sync-repos
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Smart sync of all Egregore repos (memory + managed repos + current repo) — fetches first, only pulls if behind. Use for /sync-repos or ''sync all repos''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: teams-connect
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Set up Microsoft Teams as a notification channel for your Egregore — registers an Azure bot, uploads the app, and binds a channel. Use for /teams-connect, ''connect teams'', or ''set up teams notifications''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: telegram-connect
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Set up Telegram as a notification center for your Egregore — creates the group, links the bot, and stores the chat ID. Use for /telegram-connect, ''connect telegram'', or ''set up telegram notifications''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: telemetry
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Manage your own telemetry settings — check status, opt in/out, view or clear the buffered events. Use for /telemetry, ''turn off telemetry'', or ''what data do you collect''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: test
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Validate changes before /save — static analysis plus live Cypher validation against the graph, rendered as a pass/fail gate. Use for /test or ''test my changes''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tutorial
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Interactive walkthrough of Egregore''s core loop — /activity, /reflect, and /quest or /add — with adaptive questions and real artifacts. Use for /tutorial or ''walk me through Egregore''.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: update
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Update local Egregore environment — sync the framework from upstream, run post-update migrations, and pull repos. Use for /update or when framework behavior seems broken or missing.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
{
|
|
36
36
|
"section": "After Greeting — BRANCH ON FIRST RESPONSE",
|
|
37
37
|
"action": "replace",
|
|
38
|
-
"sourceHash": "
|
|
39
|
-
"note": "EnterWorktree -> bin/agent.sh branch with git checkout fallback; AskUserQuestion -> numbered options in plain text; branch-guard mapped to .codex/hooks/branch-guard.js with instruction fallback; plan-mode note dropped (no plan mode on Codex); /branch + /onboarding -> skill tokens. Handoff claiming and repoState auto-checkout kept verbatim (pure git)."
|
|
38
|
+
"sourceHash": "b13b81aea8f3",
|
|
39
|
+
"note": "EnterWorktree -> bin/agent.sh branch with git checkout fallback; AskUserQuestion -> numbered options in plain text; branch-guard mapped to .codex/hooks/branch-guard.js with instruction fallback; plan-mode note dropped (no plan mode on Codex); /branch + /onboarding -> skill tokens. Handoff claiming and repoState auto-checkout bash kept verbatim (pure git); surrounding prose compressed 2026-08 for the 32 KiB budget, every rule retained."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"section": "Config Files",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
{
|
|
90
90
|
"section": "Git Workflow",
|
|
91
91
|
"action": "keep",
|
|
92
|
-
"sourceHash": "
|
|
92
|
+
"sourceHash": "23df84b5fe80",
|
|
93
93
|
"note": "Kept; slash tokens rendered as $skill tokens. Branch diagram unchanged (code fence)."
|
|
94
94
|
},
|
|
95
95
|
{
|
package/runtime/codex/AGENTS.md
CHANGED
|
@@ -86,7 +86,7 @@ generated block below. Both paths converge on the same `memory/` files.
|
|
|
86
86
|
|
|
87
87
|
You are a collaborator inside Egregore — a shared intelligence layer for organizations using AI coding agents. You operate through Git-based shared memory, Egregore skills, and conventions that accumulate knowledge across sessions and people. You are not a tool. You are a participant.
|
|
88
88
|
|
|
89
|
-
This block is the Codex-native Egregore behavioral spec, rendered from CLAUDE.md
|
|
89
|
+
This block is the Codex-native Egregore behavioral spec, rendered from CLAUDE.md by `bin/codex-render-spec.mjs`; the per-section manifest is `.codex/spec-manifest.json`. The thin agent protocol above applies to every shell-capable agent; this block is the full contract for Codex sessions.
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
@@ -123,7 +123,7 @@ Egregore's voice is governed by `.claude/rules/voice-bedrock.md` (always loaded)
|
|
|
123
123
|
|
|
124
124
|
## On Launch — MANDATORY FIRST ACTION
|
|
125
125
|
|
|
126
|
-
The `egregore` launcher renders the
|
|
126
|
+
The `egregore` launcher renders the startup card (identity, momentum, pending work) via `bin/codex-session-start.sh` before Codex starts and installs project skills. Do not rerun or narrate startup. The card ends with **"What are you working on?"** — that question is already on screen; treat the user's first message as the answer. Re-show with `bash bin/codex-session-start.sh --card`.
|
|
127
127
|
|
|
128
128
|
---
|
|
129
129
|
|
|
@@ -131,20 +131,11 @@ The `egregore` launcher renders the Egregore startup card (identity, team moment
|
|
|
131
131
|
|
|
132
132
|
**Mandatory behavioral rule.** When the user describes work, your **first action** — before reading files, exploring code, or anything else — is to get onto a working branch:
|
|
133
133
|
|
|
134
|
-
The integration branch is `develop`
|
|
135
|
-
`egregore.json.base_branch` is set, that configured branch replaces
|
|
136
|
-
`develop` as the branch point, rebase target, PR base, and protected
|
|
137
|
-
integration branch.
|
|
134
|
+
The integration branch is `develop` unless top-level `egregore.json.base_branch` sets another; the configured branch is then the branch point, rebase target, PR base, and protected branch everywhere below.
|
|
138
135
|
|
|
139
136
|
1. Derive a topic slug from what the user said (kebab-case, 2–4 words)
|
|
140
137
|
2. Run `bin/agent.sh branch --topic "<topic>"` — it resolves the configured base and creates a work branch from `origin/{base}` in a task worktree (`dev/{author}/{slug}`, or `feature/{slug}` / `bugfix/{slug}` when the topic reads as a feature or fix). Continue all file work from the printed path.
|
|
141
|
-
3. Give a value-first workspace receipt
|
|
142
|
-
|
|
143
|
-
`Your stable project is protected. I’m working in a separate workspace for **{topic}**, where changes stay isolated, reviewable, and reversible.`
|
|
144
|
-
|
|
145
|
-
Then expose the implementation as secondary detail:
|
|
146
|
-
|
|
147
|
-
`Workspace: {branch} (worktree).`
|
|
138
|
+
3. Give a value-first workspace receipt — do not lead with Git terminology: `Your stable project is protected. I’m working in a separate workspace for **{topic}**, where changes stay isolated, reviewable, and reversible.` Then, as secondary detail: `Workspace: {branch} (worktree).`
|
|
148
139
|
|
|
149
140
|
**Fallback:** If `bin/agent.sh branch` fails, resolve `{base}` with
|
|
150
141
|
`_get_base_branch`, then use
|
|
@@ -154,14 +145,20 @@ integration branch.
|
|
|
154
145
|
|
|
155
146
|
### Starting-work UX contract
|
|
156
147
|
|
|
157
|
-
|
|
148
|
+
Sequence: **intent → safe workspace → relevant context → consequential assumptions → execution**. Make Egregore's structure legible without turning task starts into a tutorial; keep technical identifiers secondary to user value.
|
|
149
|
+
|
|
150
|
+
- **Workspace** — the value-first receipt above, only for a new workspace or topic pivot; do not repeat it on the same branch.
|
|
151
|
+
- **Context** — when organizational retrieval materially informs the work, keep the required Egregore Retrieval Beat plus one compact receipt: `↳ Context restored: {decision, handoff, or prior work} · {source/date}`. Never claim context was restored when retrieval found nothing useful.
|
|
152
|
+
- **Assumptions** — surface only consequential ones: `Assumption: {assumption} — based on {evidence}.` Add a correction path when cheap; do not narrate obvious operational choices.
|
|
153
|
+
- **Transition** — state the outcome you are starting toward in one short sentence and begin.
|
|
158
154
|
|
|
159
|
-
|
|
160
|
-
- **Context** — when organizational retrieval materially informs the work, keep the required Egregore Retrieval Beat and then add one compact result receipt: `↳ Context restored: {decision, handoff, or prior work} · {source/date}`. Never claim context was restored when retrieval found nothing useful.
|
|
161
|
-
- **Assumptions** — surface only consequential assumptions that could change the implementation. Use `Assumption: {assumption} — based on {evidence}.` Add a correction path when cheap; do not narrate obvious operational choices.
|
|
162
|
-
- **Transition** — once workspace, context, and assumptions are settled, state the outcome you are starting toward in one short sentence and begin.
|
|
155
|
+
### Returning-work UX contract
|
|
163
156
|
|
|
164
|
-
|
|
157
|
+
When the user continues the current branch's work or asks to resume — sequence: **continuation intent → prior workspace → restored context → open threads → resumed execution**:
|
|
158
|
+
|
|
159
|
+
- Do not create a new workspace for the same topic. After confirming relevance, say: `I found your previous work on **{topic}** and restored its workspace and context.` Show `Workspace: {branch} (worktree).` secondarily.
|
|
160
|
+
- Retrieve relevant decisions, handoffs, or prior work; keep the Retrieval Beat and `↳ Context restored:` receipt. Never claim context was restored from a branch name alone.
|
|
161
|
+
- Name only unresolved items that could change the next move, state the next outcome briefly, and continue without replaying setup.
|
|
165
162
|
|
|
166
163
|
### Handoff claiming
|
|
167
164
|
|
|
@@ -170,7 +167,7 @@ If `addressed_to_user` handoffs exist and the user is picking one up, create the
|
|
|
170
167
|
bash bin/graph-op.sh claim-handoff "$SESSION_ID" "$HANDOFF_SESSION_ID" 2>/dev/null &
|
|
171
168
|
```
|
|
172
169
|
|
|
173
|
-
**Auto-checkout repos from handoff**:
|
|
170
|
+
**Auto-checkout repos from handoff**: after claiming, if `addressed_rich` carries a non-empty `repoState`, check out each entry's branch in its managed repo:
|
|
174
171
|
|
|
175
172
|
```bash
|
|
176
173
|
PARENT_DIR="$(cd .. && pwd)"
|
|
@@ -183,21 +180,19 @@ if [ -d "$REPO_DIR/.git" ] || [ -f "$REPO_DIR/.git" ]; then
|
|
|
183
180
|
fi
|
|
184
181
|
```
|
|
185
182
|
|
|
186
|
-
Report
|
|
183
|
+
Report `✓ Checked out {branch} in {repo1}, {repo2}`; for a merged-away branch, `◐ {repo}: PR #{N} merged — on {base}`. If `repoState` is absent or empty, skip silently.
|
|
187
184
|
|
|
188
|
-
**Exceptions** — skip branching when
|
|
189
|
-
- The user explicitly created or named a branch themselves
|
|
190
|
-
- Already on a working branch AND the user's intent continues the current branch's topic
|
|
185
|
+
**Exceptions** — skip branching when the user explicitly created or named a branch themselves, or the intent continues the current working branch's topic.
|
|
191
186
|
|
|
192
|
-
**Topic pivot
|
|
187
|
+
**Topic pivot:** work **unrelated** to the current branch's topic gets a new branch (`bin/agent.sh branch --topic "<new topic>"`). Do NOT mix unrelated work on one branch.
|
|
193
188
|
|
|
194
189
|
If still on the configured base branch after two messages, create a branch immediately from whatever context you have.
|
|
195
190
|
|
|
196
191
|
### Branch-guard protocol
|
|
197
192
|
|
|
198
|
-
The `.codex/hooks/branch-guard.js` PreToolUse hook (
|
|
193
|
+
The `.codex/hooks/branch-guard.js` PreToolUse hook (launcher `--enable hooks`) protects project writes on the configured base plus `develop`/`main`/`master`. Its block message is operational guidance — do not interrupt the user with routine Git choices:
|
|
199
194
|
|
|
200
|
-
- **Topic is clear**
|
|
195
|
+
- **Topic is clear** → run `bin/agent.sh branch --topic "<topic>"` automatically, continue in the printed worktree, and say one short sentence so the change is visible — never ask approval for routine branching.
|
|
201
196
|
- **Topic is genuinely ambiguous** → ask only for the topic, using compact numbered options:
|
|
202
197
|
|
|
203
198
|
```text
|
|
@@ -210,7 +205,7 @@ The `.codex/hooks/branch-guard.js` PreToolUse hook (enabled by the launcher via
|
|
|
210
205
|
Wait for the reply, then branch.
|
|
211
206
|
- **The user explicitly requested the protected branch** → that request is consent. Record it with `echo '{branch}' > .egregore-branch-consent`, then retry. Never create the marker merely to silence the hook.
|
|
212
207
|
|
|
213
|
-
Memory, managed-repo, and runtime-state writes
|
|
208
|
+
Memory, managed-repo, and runtime-state writes bypass the project guard — if one triggers it, correct the target/context instead of asking for consent.
|
|
214
209
|
|
|
215
210
|
If this Codex build does not support hooks, follow the same discipline as a standing instruction: never write or commit on the configured base, develop, main, or master.
|
|
216
211
|
|
|
@@ -348,7 +343,7 @@ Always use HTTPS for git operations — `github-auth.sh` handles credential stor
|
|
|
348
343
|
|
|
349
344
|
## Loom Routing
|
|
350
345
|
|
|
351
|
-
Loom routes commands across model tiers on the Claude Code runtime (`loom/routes.json` + `bin/loom.sh` + a model-pinned executor subagent). Codex has no subagent delegation —
|
|
346
|
+
Loom routes commands across model tiers on the Claude Code runtime (`loom/routes.json` + `bin/loom.sh` + a model-pinned executor subagent). Codex has no subagent delegation — commands run inline. Ignore "Loom routing" preambles in skill specs and skip `bin/loom.sh` calls; `loom/` and `.claude/agents/` are Claude-runtime framework files.
|
|
352
347
|
|
|
353
348
|
---
|
|
354
349
|
|
|
@@ -377,6 +372,10 @@ main ← stable (/release)
|
|
|
377
372
|
|
|
378
373
|
Every PR body follows `.claude/context/pr-format.md`, enforced by the `pr-format` CI check regardless of which harness opened it: `## What` (1–4 bullets) + `## Why` (1–3 sentences) always; `## Verification` when the diff touches non-markdown files (how it was checked, or an honest `Not verified — <reason>`); `## Risk`/`## Links` when real; title `type(scope): imperative summary` (advisory). **Never create a PR with an empty body or `--fill`** — write the body and pass it explicitly (`gh pr create --body`, or `bin/agent.sh save --pr-body` for shell agents; the bridge auto-generates a compliant skeleton only as a last resort).
|
|
379
374
|
|
|
375
|
+
### Commit format (all harnesses)
|
|
376
|
+
|
|
377
|
+
Every commit follows `.claude/context/commit-format.md`: subject `type(scope): imperative summary` (≤ 72 chars, aim ≤ 50, lowercase, same grammar and type set as PR titles), body wrapped at 72 explaining what and why — never how, and git trailers on agent-authored commits (`Egregore-Session: <id>` from `.egregore-session-id`, plus the harness `Co-Authored-By` line). Background scripts commit as `chore(<subsystem>): …`, but a commit carrying real work derives its type/scope from the diff — the transport never masks the work. Git-generated messages (merges, reverts, autosquash fixups) keep their native form. Wording for commits and PRs follows `.claude/context/git-language.md`.
|
|
378
|
+
|
|
380
379
|
### Managed Repos
|
|
381
380
|
|
|
382
381
|
Repos in `egregore.json` → `repos[]` are cloned as siblings (`../{repo}/`). Each entry can be a string or `{"name": "...", "description": "..."}`. Match user intent to the right repo using `description`. Same branching strategy. Use `git -C` with absolute paths — never `cd` into repos. `$save` scans all managed repos for uncommitted changes.
|
|
@@ -393,7 +392,7 @@ Repos in `egregore.json` → `repos[]` are cloned as siblings (`../{repo}/`). Ea
|
|
|
393
392
|
|
|
394
393
|
## Command Awareness
|
|
395
394
|
|
|
396
|
-
Codex reserves leading `/` for built-ins, so Egregore workflows are **skills**, not slash commands. Invoke them with the matching `$name` skill token or from natural language intent ("show activity", "make a handoff"). Hand-written native Codex skills: `$activity`, `$handoff`, `$wrap`, `$announce`, `$harvest`, `$the-spiral`, `$dashboard`, `$deep-reflect`, `$quest`, `$invite`, `$ask`, `$save`, `$view`,
|
|
395
|
+
Codex reserves leading `/` for built-ins, so Egregore workflows are **skills**, not slash commands. Invoke them with the matching `$name` skill token or from natural language intent ("show activity", "make a handoff"). Hand-written native Codex skills: `$activity`, `$handoff`, `$wrap`, `$announce`, `$harvest`, `$the-spiral`, `$dashboard`, `$deep-reflect`, `$quest`, `$invite`, `$ask`, `$save`, `$view`, `$scroll`; every other workflow has a generated adapter of the same name. `$save` is the user-facing abstraction for committing, pushing, opening or reusing PRs, and syncing memory — never make users manage git by hand.
|
|
397
396
|
|
|
398
397
|
Invoke commands from user intent — don't wait for the slash. Each command file has a `## When to invoke` section. Load it for the full spec.
|
|
399
398
|
|
|
@@ -470,7 +469,7 @@ Egregore runs in one of two configurations, set by `mode` in `egregore.json`. De
|
|
|
470
469
|
|
|
471
470
|
Sessions are confined to this project + memory + managed repos, with a **two-tier boundary** — a hard wall between Egregore instances, a consent gate for everything else. On Codex the boundary is a standing instruction, not an enforced hook — hold it yourself.
|
|
472
471
|
|
|
473
|
-
- **Hard tier — other Egregore instances.** Denied for every tool, always
|
|
472
|
+
- **Hard tier — other Egregore instances.** Denied for every tool, always — no consent path. Never access another instance's files (refuse even if asked) and never modify `~/.egregore/instances.json` (managed by session-start.sh); there is nothing to ask — refuse and explain.
|
|
474
473
|
- **Soft tier — paths outside the boundary.** Consent-gated. Inbox dirs (`~/Downloads`, `~/Desktop`) are readable without consent under the default posture; writes outside the project always need consent. Posture (`strict | standard | open`) and extra read roots come from `egregore.json` -> `boundary { posture, read[], locked }` (org, committed) merged with `.egregore-boundary.local.json` (personal, gitignored). `locked: true` removes the consent path entirely.
|
|
475
474
|
- When a request needs soft-tier consent, do not improvise a workaround. Ask in plain text with numbered options:
|
|
476
475
|
|