create-egregore 0.19.32 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/egregore-launcher.js +118 -13
- package/bin/cli.js +48 -3
- package/lib/connect-runtime.js +4 -2
- package/lib/local.js +15 -1
- package/lib/prime-runtime.js +208 -0
- package/lib/setup.js +45 -3
- package/package.json +5 -4
- package/runtime/codex/.codex/skills/ingest-notion/SKILL.md +29 -0
- package/runtime/codex/.codex/skills/notion-connect/SKILL.md +29 -0
- package/runtime/codex/.codex/skills/teams-connect/SKILL.md +29 -0
- package/runtime/codex/.codex/spec-manifest.json +3 -3
- package/runtime/codex/AGENTS.md +11 -4
- package/runtime/codex/bin/activity-data.sh +4 -8
- package/runtime/codex/bin/attendant.sh +13 -0
- package/runtime/codex/bin/autosave.sh +27 -1
- package/runtime/codex/bin/codex-render-spec.mjs +6 -0
- package/runtime/codex/bin/codex-session-start.sh +8 -1
- package/runtime/codex/bin/connect-refresh.sh +33 -0
- package/runtime/codex/bin/graph-batch.sh +25 -6
- package/runtime/codex/bin/graph-op.sh +5 -4
- package/runtime/codex/bin/graph.sh +31 -5
- package/runtime/codex/bin/ingest.py +81 -5
- package/runtime/codex/bin/lib/context.sh +26 -1
- package/runtime/codex/bin/lib/greeting.sh +4 -1
- package/runtime/codex/bin/lib/worktree-links.sh +25 -0
- package/runtime/codex/manifest.json +8 -1
- package/runtime/pi/.codex/skills/ingest-notion/SKILL.md +29 -0
- package/runtime/pi/.codex/skills/notion-connect/SKILL.md +29 -0
- package/runtime/pi/.codex/skills/teams-connect/SKILL.md +29 -0
- package/runtime/pi/.codex/spec-manifest.json +3 -3
- package/runtime/pi/.pi/APPEND_SYSTEM.md +3 -2
- package/runtime/pi/.pi/extensions/egregore.ts +17 -6
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +11 -4
- package/runtime/pi/bin/activity-data.sh +4 -8
- package/runtime/pi/bin/attendant.sh +13 -0
- package/runtime/pi/bin/autosave.sh +27 -1
- package/runtime/pi/bin/codex-render-spec.mjs +6 -0
- package/runtime/pi/bin/codex-session-start.sh +8 -1
- package/runtime/pi/bin/connect-refresh.sh +33 -0
- package/runtime/pi/bin/graph-batch.sh +25 -6
- package/runtime/pi/bin/graph-op.sh +5 -4
- package/runtime/pi/bin/graph.sh +31 -5
- package/runtime/pi/bin/ingest.py +81 -5
- package/runtime/pi/bin/lib/context.sh +26 -1
- package/runtime/pi/bin/lib/greeting.sh +4 -1
- package/runtime/pi/bin/lib/worktree-links.sh +25 -0
- package/runtime/pi/bin/pi-branch-policy.mjs +138 -1
- package/runtime/pi/bin/pi-product-workflows.mjs +35 -7
- package/runtime/pi/manifest.json +8 -1
- package/runtime/prime/.claude/context/notification-consent.md +66 -0
- package/runtime/prime/.codex/config.toml +17 -0
- package/runtime/prime/.codex/hooks/branch-guard.js +461 -0
- package/runtime/prime/.codex/hooks/search-hint.js +67 -0
- package/runtime/prime/.codex/hooks.json +30 -0
- package/runtime/prime/.codex/skills/activity/SKILL.md +82 -0
- package/runtime/prime/.codex/skills/announce/SKILL.md +67 -0
- package/runtime/prime/.codex/skills/archive/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/branch/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/checkup/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/commit/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/contribute/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/create-skill/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/dark-mode/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/dashboard/SKILL.md +59 -0
- package/runtime/prime/.codex/skills/deep-reflect/SKILL.md +109 -0
- package/runtime/prime/.codex/skills/delete-user/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/emissary/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/handoff/SKILL.md +166 -0
- package/runtime/prime/.codex/skills/harvest/QUESTION_PALETTE.md +76 -0
- package/runtime/prime/.codex/skills/harvest/SKILL.md +131 -0
- package/runtime/prime/.codex/skills/ingest/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/ingest-notion/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/invite/SKILL.md +44 -0
- package/runtime/prime/.codex/skills/issue/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/me/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/meeting/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/note/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/notion-connect/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/onboarding/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/pr/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/pull/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/push/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/quest/SKILL.md +80 -0
- package/runtime/prime/.codex/skills/reflect/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/review-pr/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/save/SKILL.md +125 -0
- package/runtime/prime/.codex/skills/slack-connect/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/summon/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/sync-repos/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/teams-connect/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/telegram-connect/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/telemetry/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/test/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/the-spiral/SKILL.md +84 -0
- package/runtime/prime/.codex/skills/tui-design/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/tutorial/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/update/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/view/SKILL.md +156 -0
- package/runtime/prime/.codex/skills/view/agents/openai.yaml +4 -0
- package/runtime/prime/.codex/skills/view/assets/compose-scaffold.html +221 -0
- package/runtime/prime/.codex/skills/visual-explain/SKILL.md +45 -0
- package/runtime/prime/.codex/skills/wrap/SKILL.md +58 -0
- package/runtime/prime/.codex/spec-manifest.json +132 -0
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +393 -0
- package/runtime/prime/.prime/agent/extensions/egregore.ts +460 -0
- package/runtime/prime/.prime/agent/settings.json +4 -0
- package/runtime/prime/.prime/agent/skills/egregore/SKILL.md +34 -0
- package/runtime/prime/.prime/agent/skills/egregore/pyproject.toml +13 -0
- package/runtime/prime/.prime/agent/skills/egregore/src/egregore/__init__.py +156 -0
- package/runtime/prime/.prime/agent/spec-manifest.json +12 -0
- package/runtime/prime/AGENTS.md +489 -0
- package/runtime/prime/bin/activity-data.sh +238 -0
- package/runtime/prime/bin/agent.sh +775 -0
- package/runtime/prime/bin/attendant.sh +707 -0
- package/runtime/prime/bin/autosave.sh +112 -0
- package/runtime/prime/bin/capture-reconcile.sh +69 -0
- package/runtime/prime/bin/capture-run.sh +341 -0
- package/runtime/prime/bin/codex-install-skills.sh +78 -0
- package/runtime/prime/bin/codex-render-spec.mjs +440 -0
- package/runtime/prime/bin/codex-session-start.sh +265 -0
- package/runtime/prime/bin/codex-skill-render.mjs +347 -0
- package/runtime/prime/bin/codex-sync-skills.sh +232 -0
- package/runtime/prime/bin/connect-refresh.sh +33 -0
- package/runtime/prime/bin/dashboard-data.sh +178 -0
- package/runtime/prime/bin/graph-batch.sh +79 -0
- package/runtime/prime/bin/graph-op.sh +1102 -0
- package/runtime/prime/bin/graph-wal.sh +229 -0
- package/runtime/prime/bin/graph.sh +223 -0
- package/runtime/prime/bin/handoff-pr-backfill.sh +86 -0
- package/runtime/prime/bin/handoff-run.sh +671 -0
- package/runtime/prime/bin/handoff-save-egregore.sh +212 -0
- package/runtime/prime/bin/index-handoff.sh +322 -0
- package/runtime/prime/bin/ingest-graph.sh +80 -0
- package/runtime/prime/bin/ingest-surface.html +495 -0
- package/runtime/prime/bin/ingest.py +756 -0
- package/runtime/prime/bin/ingest.sh +279 -0
- package/runtime/prime/bin/ingest_graph.py +856 -0
- package/runtime/prime/bin/ingest_surface.py +544 -0
- package/runtime/prime/bin/lib/artifact-id.sh +46 -0
- package/runtime/prime/bin/lib/config.sh +116 -0
- package/runtime/prime/bin/lib/context.sh +621 -0
- package/runtime/prime/bin/lib/dashboard-artifact.sh +242 -0
- package/runtime/prime/bin/lib/ensure-develop.sh +183 -0
- package/runtime/prime/bin/lib/git-sync.sh +406 -0
- package/runtime/prime/bin/lib/greeting.sh +519 -0
- package/runtime/prime/bin/lib/hash.sh +13 -0
- package/runtime/prime/bin/lib/identity.sh +213 -0
- package/runtime/prime/bin/lib/metrics.sh +374 -0
- package/runtime/prime/bin/lib/noncode.sh +31 -0
- package/runtime/prime/bin/lib/permissions.sh +106 -0
- package/runtime/prime/bin/lib/time.sh +56 -0
- package/runtime/prime/bin/lib/worktree-links.sh +79 -0
- package/runtime/prime/bin/notify.sh +636 -0
- package/runtime/prime/bin/person.py +630 -0
- package/runtime/prime/bin/person.sh +448 -0
- package/runtime/prime/bin/pi-branch-policy.mjs +312 -0
- package/runtime/prime/bin/pi-product-workflows.mjs +394 -0
- package/runtime/prime/bin/prime-render-spec.mjs +123 -0
- package/runtime/prime/bin/prime-session-start.sh +24 -0
- package/runtime/prime/bin/publish-artifact.sh +271 -0
- package/runtime/prime/bin/publish-references.sh +144 -0
- package/runtime/prime/bin/repo-state.sh +96 -0
- package/runtime/prime/bin/search.sh +240 -0
- package/runtime/prime/bin/session-autosave.sh +209 -0
- package/runtime/prime/bin/session-log.sh +199 -0
- package/runtime/prime/bin/settings.sh +304 -0
- package/runtime/prime/bin/telemetry.sh +391 -0
- package/runtime/prime/bin/worktree-create.sh +128 -0
- package/runtime/prime/bin/worktree-remove.sh +50 -0
- package/runtime/prime/bin/worktree.sh +198 -0
- package/runtime/prime/manifest.json +178 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: delete-user
|
|
3
|
+
description: 'Fallback Codex adapter for the Egregore delete-user workflow.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore delete-user 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/delete-user/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.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: emissary
|
|
3
|
+
description: 'Compose, send, or run an Egregore emissary — portable handoff v1 artifacts with server-rendered HTML at egregore.xyz. Use for `/emissary`, "make/send/run an emissary", or when a user pastes an `egregore.xyz/emissary/e/<id>` link.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore emissary 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
|
+
## Structured UX parity
|
|
19
|
+
|
|
20
|
+
This workflow has a Claude skill with user-visible structured output. After
|
|
21
|
+
reading `.claude/skills/emissary/SKILL.md`, reproduce the same visible UX in Codex:
|
|
22
|
+
|
|
23
|
+
- Preserve TUI boxes, markdown tables, rich cards, browser artifact rendering,
|
|
24
|
+
exact confirmation blocks, and "no preamble" rules from the source skill.
|
|
25
|
+
- Use the source skill's frame width, section order, labels, status footer,
|
|
26
|
+
and examples as the contract for the final response.
|
|
27
|
+
- Never replace a required box/table/card/artifact view with a prose summary
|
|
28
|
+
unless the user explicitly asks for a summary.
|
|
29
|
+
- When the source says to output a TUI box directly, paste that box as the
|
|
30
|
+
visible response, preferably in a `text` fenced block.
|
|
31
|
+
- Never show raw JSON, raw command output, or unformatted script output when
|
|
32
|
+
the source skill requires formatted status or rendered output.
|
|
33
|
+
|
|
34
|
+
1. Read `.claude/skills/emissary/SKILL.md` for the workflow details.
|
|
35
|
+
2. Run the referenced `bin/` scripts directly from Codex.
|
|
36
|
+
3. Treat graph and publish steps as best-effort unless that workflow explicitly
|
|
37
|
+
says they are required.
|
|
38
|
+
4. For every external notification, follow
|
|
39
|
+
`.claude/context/notification-consent.md`: plan without sending, then show
|
|
40
|
+
a separate exact Send / Edit / Cancel checkpoint. Never infer notification
|
|
41
|
+
consent from the workflow request or a batch approval.
|
|
42
|
+
5. Keep local-mode behavior filesystem-first and avoid graph or notification
|
|
43
|
+
calls when `egregore.json` declares `"mode": "local"`.
|
|
44
|
+
6. Never call the deprecated `egregore-handoff` CLI for Egregore project
|
|
45
|
+
handoffs.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: handoff
|
|
3
|
+
description: Create an internal Egregore team handoff when the user invokes /handoff or $handoff, asks to hand off work, or wants to pass context to a teammate or future self.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Egregore Handoff
|
|
7
|
+
|
|
8
|
+
Native Codex Egregore skill. This creates an internal team handoff in
|
|
9
|
+
`memory/handoffs/`, indexes it, publishes it when possible, and may prepare an
|
|
10
|
+
external notification proposal. External runnable packets are emissaries; if the user
|
|
11
|
+
asks for one or provides an `egregore.xyz/emissary/e/` link, use the emissary
|
|
12
|
+
tooling instead.
|
|
13
|
+
|
|
14
|
+
`/handoff` is pure addressed capture. Do not triage incoming handoffs here;
|
|
15
|
+
route “show/close my handoffs” to `$activity`. Personal session closure without
|
|
16
|
+
an addressed recipient belongs to `$wrap`.
|
|
17
|
+
|
|
18
|
+
## Flow
|
|
19
|
+
|
|
20
|
+
1. Run `bin/agent.sh sync`.
|
|
21
|
+
2. Resolve the author from `.egregore-state.json` `github_username`, then
|
|
22
|
+
`name`, then git config.
|
|
23
|
+
3. Parse a short topic and optional recipient from the user request. Match the
|
|
24
|
+
recipient against `memory/people/*.md`; omit the recipient when uncertain.
|
|
25
|
+
4. Classify the content before drafting:
|
|
26
|
+
- **Supplied content**: the user pasted substantial prose, supplied a
|
|
27
|
+
document, or approved exact wording. Preserve wording, order, headings,
|
|
28
|
+
lists, code, and links. Add only capture frontmatter with
|
|
29
|
+
`content_mode: supplied`. Do not create a composed JSON or attach session
|
|
30
|
+
artifacts unless the user asks.
|
|
31
|
+
- **Generated content**: the user supplied only a topic or fragmentary
|
|
32
|
+
notes. Draft the canonical markdown record with these sections:
|
|
33
|
+
- `## Briefing`
|
|
34
|
+
- `## Key Decisions`
|
|
35
|
+
- `## Current State`
|
|
36
|
+
- `## Open Threads`
|
|
37
|
+
- `## Next Steps`
|
|
38
|
+
- `## Entry Points`
|
|
39
|
+
Use this metadata contract even when the user supplied only prose:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
---
|
|
43
|
+
capture_schema: egregore-capture/v1
|
|
44
|
+
capture_mode: addressed
|
|
45
|
+
kind: addressed
|
|
46
|
+
from: <author>
|
|
47
|
+
addressed_to: <recipient, if any>
|
|
48
|
+
date: YYYY-MM-DD
|
|
49
|
+
topic: <topic>
|
|
50
|
+
intent: <action | feedback | fyi>
|
|
51
|
+
content_mode: <supplied | generated>
|
|
52
|
+
claim: <one-line claim>
|
|
53
|
+
ask: <what the receiver should do>
|
|
54
|
+
---
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
5. Build the preview. For supplied content, render the Markdown directly
|
|
58
|
+
through the native handoff renderer and verify fidelity:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
node packages/egregore-artifacts/bin/cli.js handoff "$BODY_FILE" \
|
|
62
|
+
--verify-fidelity
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For generated content, compose the HTML view from that record. Markdown is
|
|
66
|
+
canonical; the JSON is
|
|
67
|
+
only a presentation map. Give every JSON section a stable `id` and add a
|
|
68
|
+
top-level `sourceMap` from every authored `##` heading to the section that
|
|
69
|
+
contains its complete text:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"kind": "handoff",
|
|
74
|
+
"kicker": "Handoff",
|
|
75
|
+
"topic": "<topic>",
|
|
76
|
+
"claim": "<one-line claim>",
|
|
77
|
+
"sourceMap": {
|
|
78
|
+
"Briefing": "briefing",
|
|
79
|
+
"Key Decisions": "decisions",
|
|
80
|
+
"Current State": "current-state",
|
|
81
|
+
"Open Threads": "open-threads",
|
|
82
|
+
"Next Steps": "next-steps",
|
|
83
|
+
"Entry Points": "entry-points"
|
|
84
|
+
},
|
|
85
|
+
"sections": [
|
|
86
|
+
{"id":"briefing","label":"Briefing","component":"prose","body":"<complete Briefing text>"}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Pick richer components when they fit, but copy all authored content into
|
|
92
|
+
the mapped destination. Never independently summarize the Markdown into the
|
|
93
|
+
JSON. For command-heavy sections, keep command headings, explanatory text,
|
|
94
|
+
fenced commands, and expected output verbatim.
|
|
95
|
+
|
|
96
|
+
Render generated content with semantic coverage enabled:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
node packages/egregore-artifacts/bin/cli.js composed "$COMPOSED_FILE" \
|
|
100
|
+
--source "$BODY_FILE" --verify-fidelity
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
6. Show the actual browser HTML before publishing. This is the approval
|
|
104
|
+
surface—not a list of component names.
|
|
105
|
+
|
|
106
|
+
Stop for confirmation after the browser preview. If validation fails, fix
|
|
107
|
+
the mapping/content and render again. Skip confirmation only when the user
|
|
108
|
+
explicitly said to send without preview.
|
|
109
|
+
|
|
110
|
+
7. After confirmation, run one orchestration command:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
TMPDIR="$(mktemp -d -t codex-handoff-XXXXXX)"
|
|
114
|
+
TMPDIR="$TMPDIR" bash bin/capture-run.sh --mode addressed --author "$AUTHOR" \
|
|
115
|
+
--topic "$TOPIC" ${RECIPIENT_ARG} --content-mode "$CONTENT_MODE" \
|
|
116
|
+
${COMPOSED_ARG} < "$BODY_FILE"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Use `COMPOSED_ARG=(--composed "$COMPOSED_FILE")` only for generated content.
|
|
120
|
+
|
|
121
|
+
Use `--recipient "$RECIPIENT"` only when a clear teammate or future-self
|
|
122
|
+
recipient is known. Do not pass `--no-publish` unless the user explicitly
|
|
123
|
+
asked for a dry run. The runner may plan a notification, but never dispatches.
|
|
124
|
+
|
|
125
|
+
8. Read `$TMPDIR/handoff-run-result.json` and render:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
node bin/codex-skill-render.mjs handoff-card "$TMPDIR/handoff-run-result.json"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Paste the rendered card exactly in the visible response, preferably in a
|
|
132
|
+
`text` fenced block. Do not paraphrase the card into bullets unless the user
|
|
133
|
+
asks for a summary.
|
|
134
|
+
|
|
135
|
+
9. If the result has `notifyStatus: "approval_required"`, follow
|
|
136
|
+
`.claude/context/notification-consent.md`. In a separate checkpoint, show
|
|
137
|
+
the exact organization, recipient/group, every channel/delivery, and exact
|
|
138
|
+
message from `notifyPlan`; offer Send / Edit / Cancel and wait. Only a Send
|
|
139
|
+
response to that preview permits one `approve` + `dispatch`. A local direct
|
|
140
|
+
message never falls back to a group.
|
|
141
|
+
|
|
142
|
+
10. Fire the detached save helper when appropriate:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
( bash bin/handoff-save-egregore.sh "$AUTHOR" "$TOPIC" >/dev/null 2>&1 & ) >/dev/null 2>&1
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
11. Report the `memory/...` path and hosted link from the result JSON when a
|
|
149
|
+
link exists.
|
|
150
|
+
|
|
151
|
+
## Rules
|
|
152
|
+
|
|
153
|
+
- Do not call `egregore-handoff` for project handoffs.
|
|
154
|
+
- Do not use Claude Code commands.
|
|
155
|
+
- Keep the briefing concise and operational; include exact files, branches,
|
|
156
|
+
commands, open questions, and verification state when relevant.
|
|
157
|
+
- Supplied content is authoritative. Do not replace it with a session summary,
|
|
158
|
+
presentation JSON, related artifacts, or repo state.
|
|
159
|
+
- The artifact is a view of the handoff, never a summary of it. Publishing
|
|
160
|
+
must fail when any non-empty authored section is unmapped or loses content.
|
|
161
|
+
- Structured UX parity is required: the rendered card is the acknowledgment.
|
|
162
|
+
Do not add a preamble such as "Handoff created successfully." Preserve the
|
|
163
|
+
72-column TUI/card shape, status footer, links below the box, and warning
|
|
164
|
+
placement used by the Egregore handoff workflow.
|
|
165
|
+
- Creating or approving the handoff is not notification consent. Never approve
|
|
166
|
+
or dispatch from detached work.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Harvest — Question Palette
|
|
2
|
+
|
|
3
|
+
> Ask for the kind of judgment the harvest actually needs.
|
|
4
|
+
|
|
5
|
+
This document is the single canonical home for choosing a question move
|
|
6
|
+
and answer shape from `questionIntent`. `PROCESS.md` owns the conversational
|
|
7
|
+
rhythm and evaluation; `SKILL.md` owns rendered-surface wiring; scrolls
|
|
8
|
+
consume this palette directly. They point here instead of restating it.
|
|
9
|
+
The byte-identical `.codex/skills/harvest/QUESTION_PALETTE.md` file is a
|
|
10
|
+
packaging mirror for Codex and Pi; tests reject drift from this source.
|
|
11
|
+
|
|
12
|
+
The palette is a decision aid, not a checklist. It never requires a mix or
|
|
13
|
+
minimum number of shapes. An all-`single` surface is correct when every
|
|
14
|
+
question is truly an enumerable fork; it is wrong when rankings, subsets,
|
|
15
|
+
graded positions, or unmapped spaces were flattened into option cards.
|
|
16
|
+
|
|
17
|
+
## Selection rule
|
|
18
|
+
|
|
19
|
+
For every question:
|
|
20
|
+
|
|
21
|
+
1. State the `questionIntent`: what the answer must reveal or change.
|
|
22
|
+
2. Choose the closest intent row below.
|
|
23
|
+
3. Use its move and answer shape when available.
|
|
24
|
+
4. If another shape fits better, record one sentence explaining why.
|
|
25
|
+
5. In a new rendered surface, declare `mode` explicitly. An absent mode
|
|
26
|
+
falls back to `single` only for backward compatibility.
|
|
27
|
+
|
|
28
|
+
The author must be able to explain both why the question is being asked
|
|
29
|
+
and why its answer shape fits. There is no shape quota or preset flow.
|
|
30
|
+
|
|
31
|
+
## Intent → move → answer shape
|
|
32
|
+
|
|
33
|
+
| Elicitation intent | Question move / answer shape | Guard |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| Decide among enumerable, mutually exclusive alternatives | Run the **enumerability test**: the author can state the full space. Use option cards, mode `single`, with 2–4 options, an “other, in your own words” escape, honest ± tradeoffs, and at most one argued lean. | If the full space cannot be stated, it is not a single-pick fork. |
|
|
36
|
+
| Place a graded position or intensity between two honest poles | Name the evaluated dimension and both poles concretely. Use mode `spectrum` with 5–7 discrete, fully labeled stops; follow a midpoint with a clarifying probe. | Nothing is preselected. Untouched, midpoint, and UNDECIDED remain distinct. Never use a continuous slider. |
|
|
37
|
+
| Set priority or sequence over a small set | Use mode `rank`; allow ties or top-k when a total order would invent precision. | Keep to at most 5 items. |
|
|
38
|
+
| Compare importance across a longer list | Run **best-worst** as dialogue: show 3–4 items, ask most and least, then rotate subsets. | Do not turn a long list into a rating battery. |
|
|
39
|
+
| Choose a non-exclusive subset | In an artifact, use mode `multi` with an explicit `max`. In live dialogue, walk items one at a time as explicit include / leave-out judgments. | Cap the subset and keep the candidate set small enough to inspect. “Select all that apply” without a cap invites shallow selection. |
|
|
40
|
+
| Allocate relative magnitude or resources | Use mode `weight` with coarse 5–10% steps and an explicit untouched state. | Use at most 5 buckets; do not imply false precision or prefill an even split. |
|
|
41
|
+
| Weight decision dimensions with different ranges | Ask a **swing question**: with every dimension at its worst, which swing to best would the respondent buy first? Continue against the concrete ranges. | Do not substitute context-free importance ratings. |
|
|
42
|
+
| Elicit a quantity plus confidence | Ask, in order: lowest plausible, highest plausible, best guess, then sureness. Prefer frequency framing. | This needs the four-field interval card; until that renderer addition exists, run it conversationally. |
|
|
43
|
+
| Explore an unmapped answer space, rationale, or discovery question | Use an open prompt anchored in the respondent’s own words. Acknowledge the answer, then probe only when it is insufficient. | Ask at most 1–2 probes per question; do not use a bare “why?” when a specific clarifier is available. |
|
|
44
|
+
| Discover tacit taste dimensions before minting a fork | Run a **triad**: present three concrete elements and ask which two are alike and how the third differs. The named difference becomes a candidate axis. | Do not supply the taste taxonomy in advance. |
|
|
45
|
+
| Reach tacit expertise behind a general claim | Run a **critical-incident sequence**: one concrete incident, a co-built timeline, deepening probes, then “what if X had been absent?” | Generalities are elicited through a real case, not requested directly. |
|
|
46
|
+
| Deepen a thin why-note | **Ladder up** with “why does that matter to you?” or **ladder down** with “give me a concrete example.” | Stop after at most 3 consecutive ladder steps. |
|
|
47
|
+
| Verify the interviewer’s interpretation | Run a **mirrored-inference check**: “My read of your position is X — what is wrong in that?” End a harvest with a member check of each respondent’s own synthesis when useful. | Mirror the sharpest reading, including tensions; do not smooth disagreement into affirmation. |
|
|
48
|
+
| Get concrete feedback after abstract forks run dry, or when the respondent asks to see the work | Show only the relevant draft or excerpt in the decisions view and ask an open prompt naming what the answer will change. | This is selective authoring, not a mode: no default per-section controls, no generic ready/not-ready verdict, and no interaction added to the readable face. |
|
|
49
|
+
| Elicit multi-respondent preferences, positions, or estimates | Default to blind independent collection. Freeze one shared artifact and question set when everyone should answer the same inquiry; otherwise adapt only from the seed, RoleSheet, and that respondent’s own prior turns. | Attribute every position and preserve its reasoning. Append pre-seal corrections and let the latest supersede; after sealing, a changed position starts a new round. Never report an anonymous aggregate such as “most of the team thinks.” |
|
|
50
|
+
| Preserve honest nonresponse | Offer explicit `UNDECIDED`, distinct from untouched. | Never force an answer. A scroll may carry it once, then must reframe or demote the question. |
|
|
51
|
+
| Handle an escape-hatch answer that names a missing option | At review, treat it as a candidate option or fork for the next version. | The creator decides whether it enters the pool; never silently coerce it into an existing option. |
|
|
52
|
+
|
|
53
|
+
## Conversational moves
|
|
54
|
+
|
|
55
|
+
These moves need no widget. They run inside PROCESS’s generate → evaluate
|
|
56
|
+
rhythm:
|
|
57
|
+
|
|
58
|
+
- **Ladder up / down** moves between value and concrete example.
|
|
59
|
+
- **Critical incident** reconstructs one real episode before generalizing.
|
|
60
|
+
- **Triad** lets the respondent name the comparison axis.
|
|
61
|
+
- **Best-worst** extracts discrimination from rotating small subsets.
|
|
62
|
+
- **Swing question** ties importance to the actual range of change.
|
|
63
|
+
- **Mirrored-inference check** asks the respondent to correct the model’s
|
|
64
|
+
strongest interpretation.
|
|
65
|
+
- **One-at-a-time forced choice** replaces an unbounded check-all with
|
|
66
|
+
inspectable include / leave-out judgments.
|
|
67
|
+
|
|
68
|
+
## Hard bans
|
|
69
|
+
|
|
70
|
+
These are lintable rules:
|
|
71
|
+
|
|
72
|
+
- No agree/disagree, true/false, or yes/no stems — rewrite as explicit alternatives or an item-specific scale.
|
|
73
|
+
- No draggable sliders with a preset thumb; no numbers-only or endpoint-only scales.
|
|
74
|
+
- No batteries of stacked identical gauges; one question per fold-point, adjacent to its motivating prose.
|
|
75
|
+
- Nothing pre-selected, ever — including spectrum position and weight splits; the lean argues, it never pre-picks.
|
|
76
|
+
- No dropdowns in surfaces; >4 genuine options means an unsplit fork — split it.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harvest
|
|
3
|
+
description: Run an adaptive Egregore harvest from Codex when the user invokes /harvest or $harvest to elicit tacit context, preferences, positions, and team judgment.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Egregore Harvest
|
|
7
|
+
|
|
8
|
+
Native Codex Egregore skill. A harvest is a structured elicitation process that
|
|
9
|
+
turns tacit context into durable organizational memory.
|
|
10
|
+
|
|
11
|
+
## Parse
|
|
12
|
+
|
|
13
|
+
Accept a topic plus optional flags:
|
|
14
|
+
|
|
15
|
+
- `--respondents a,b`
|
|
16
|
+
- `--seed path`
|
|
17
|
+
- `--resume id`
|
|
18
|
+
- `--mode blind|disclosed|comparative`
|
|
19
|
+
|
|
20
|
+
Resolve the initiator from `.egregore-state.json`, then git config. Mint IDs as
|
|
21
|
+
`harvest-YYYY-MM-DD-topic-slug` and
|
|
22
|
+
`harvest-YYYY-MM-DD-topic-slug-respondent`.
|
|
23
|
+
|
|
24
|
+
## State
|
|
25
|
+
|
|
26
|
+
Markdown is canonical. Persist under:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
memory/knowledge/harvests/{date}-{slug}/
|
|
30
|
+
manifest.md
|
|
31
|
+
sessions/{handle}.md
|
|
32
|
+
synthesis.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Single-respondent harvests may use one flat markdown file when that is simpler.
|
|
36
|
+
Every manifest records topic, intent, initiator, respondents, disclosure mode,
|
|
37
|
+
status, seed paths, and role-sheet assumptions.
|
|
38
|
+
|
|
39
|
+
Connected mode may also call `bin/graph-op.sh` helpers, but graph writes are
|
|
40
|
+
best-effort and must never block markdown state.
|
|
41
|
+
|
|
42
|
+
## Process
|
|
43
|
+
|
|
44
|
+
1. Sync memory with `bin/agent.sh sync`.
|
|
45
|
+
2. If `--resume` is present, reload the manifest, sessions, and prior
|
|
46
|
+
evaluations before asking anything new.
|
|
47
|
+
3. Build a role sheet for each respondent from `memory/people/*.md`, recent
|
|
48
|
+
handoffs, wraps, quests, and optionally graph context.
|
|
49
|
+
4. Clarify the harvest intent when topic, respondents, dimensions, or
|
|
50
|
+
disclosure mode are under-specified. Use structured Codex question tooling
|
|
51
|
+
when available; otherwise ask one numbered question at a time with `Other:`.
|
|
52
|
+
5. Read `QUESTION_PALETTE.md` completely. Ask situated questions with an
|
|
53
|
+
explicit `question_intent`, an answer shape that fits it, and grounding in
|
|
54
|
+
the role sheet, seed, the respondent's own prior answers, or attributed
|
|
55
|
+
positions allowed by the disclosure setting. Blind mode must not use
|
|
56
|
+
another respondent's answer content, even invisibly. Record a one-sentence
|
|
57
|
+
reason when departing from the palette's closest intent row.
|
|
58
|
+
6. Persist every turn immediately with turn number, question, intent, answer,
|
|
59
|
+
and evaluation. Apply the palette's satisficing and sycophancy guards when
|
|
60
|
+
evaluating. For absent respondents, create async questions with:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
bin/agent.sh ask --from "$INITIATOR" --to "$RESPONDENT" --topic "$TOPIC" --question "$QUESTION" --harvest-id "$HARVEST_ID" --harvest-session-id "$HARVEST_SESSION_ID" --turn "$TURN" --question-intent "$QUESTION_INTENT" --context-mode "$DISCLOSURE_MODE"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
7. In connected mode, follow `.claude/context/notification-consent.md` for
|
|
67
|
+
each async respondent: prepare one direct notification, show its exact
|
|
68
|
+
recipient/channel/message in a separate checkpoint, and dispatch once only
|
|
69
|
+
after that approval. Selecting respondents is not notification consent and
|
|
70
|
+
approvals cannot be batched.
|
|
71
|
+
8. Continue until present respondents reach diminishing returns and async
|
|
72
|
+
respondents are either answered, pending, or explicitly skipped.
|
|
73
|
+
|
|
74
|
+
## Multi-respondent rounds
|
|
75
|
+
|
|
76
|
+
Preference, estimate, and position intents default to `blind`. When everyone
|
|
77
|
+
should answer the same inquiry, freeze one source version and question set
|
|
78
|
+
before collection and send the identical artifact to each respondent.
|
|
79
|
+
|
|
80
|
+
While collection is open, a respondent may correct their own response. Append
|
|
81
|
+
the correction, use their latest finalized response as canonical, and count
|
|
82
|
+
distinct finalized respondents rather than submissions. After the declared
|
|
83
|
+
completion condition seals the evidence, it is immutable; a changed position
|
|
84
|
+
starts a new round. There is no automatic second pass after disclosure.
|
|
85
|
+
|
|
86
|
+
Attribute disclosed positions and preserve their reasoning. Never turn them
|
|
87
|
+
into an anonymous aggregate such as "most of the team thinks." A majority may
|
|
88
|
+
be named with its respondents, but it is not collective alignment.
|
|
89
|
+
|
|
90
|
+
## Synthesis
|
|
91
|
+
|
|
92
|
+
Write `synthesis.md` with:
|
|
93
|
+
|
|
94
|
+
- L0: compact portrait of the harvest.
|
|
95
|
+
- L1: useful patterns, preferences, constraints, and positions.
|
|
96
|
+
- L2: respondent or theme slices, chosen based on the material.
|
|
97
|
+
- L3: decisions, open questions, follow-ups, and reusable context.
|
|
98
|
+
|
|
99
|
+
Evidence should be attributed. Quotes support synthesized positions; they do
|
|
100
|
+
not replace them.
|
|
101
|
+
|
|
102
|
+
After synthesis, mark the manifest complete, commit and push memory:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
git -C memory add knowledge/harvests
|
|
106
|
+
git -C memory commit -m "harvest: $TOPIC" --quiet
|
|
107
|
+
git -C memory push origin main --quiet
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Emit telemetry best-effort in the background.
|
|
111
|
+
|
|
112
|
+
## Output
|
|
113
|
+
|
|
114
|
+
Structured UX parity is required. When a harvest completes or checkpoints,
|
|
115
|
+
render the Egregore harvest TUI instead of a prose-only recap:
|
|
116
|
+
|
|
117
|
+
- Use a 72-column outer box with standard top/separator/content/bottom lines.
|
|
118
|
+
- Header: `HARVEST`, initiator, and date.
|
|
119
|
+
- Body: topic, respondents, disclosure mode, synthesis path, and a one-line
|
|
120
|
+
layer summary when available.
|
|
121
|
+
- Footer: harvested/synthesized/saved/pushed state and `Visible in /activity.`
|
|
122
|
+
- If graph writes are skipped or unavailable, reflect that in the footer
|
|
123
|
+
without saying the harvest failed when markdown was saved.
|
|
124
|
+
|
|
125
|
+
## Rules
|
|
126
|
+
|
|
127
|
+
- Ask one question at a time for present respondents.
|
|
128
|
+
- Never impose an answer-shape quota or preset question flow.
|
|
129
|
+
- Make low-confidence role assumptions visible when they shape questions.
|
|
130
|
+
- Local mode skips graph and notification calls.
|
|
131
|
+
- Do not use Claude Code commands.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest
|
|
3
|
+
description: 'Fallback Codex adapter for the Egregore ingest workflow.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore ingest 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/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.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest-notion
|
|
3
|
+
description: 'Fallback Codex adapter for the Egregore ingest-notion workflow.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore ingest-notion 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-notion/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.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest-user-interview
|
|
3
|
+
description: 'Fallback Codex adapter for the Egregore ingest-user-interview workflow.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore ingest-user-interview 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
|
+
## Structured UX parity
|
|
19
|
+
|
|
20
|
+
This workflow has a Claude skill with user-visible structured output. After
|
|
21
|
+
reading `.claude/skills/ingest-user-interview/SKILL.md`, reproduce the same visible UX in Codex:
|
|
22
|
+
|
|
23
|
+
- Preserve TUI boxes, markdown tables, rich cards, browser artifact rendering,
|
|
24
|
+
exact confirmation blocks, and "no preamble" rules from the source skill.
|
|
25
|
+
- Use the source skill's frame width, section order, labels, status footer,
|
|
26
|
+
and examples as the contract for the final response.
|
|
27
|
+
- Never replace a required box/table/card/artifact view with a prose summary
|
|
28
|
+
unless the user explicitly asks for a summary.
|
|
29
|
+
- When the source says to output a TUI box directly, paste that box as the
|
|
30
|
+
visible response, preferably in a `text` fenced block.
|
|
31
|
+
- Never show raw JSON, raw command output, or unformatted script output when
|
|
32
|
+
the source skill requires formatted status or rendered output.
|
|
33
|
+
|
|
34
|
+
1. Read `.claude/skills/ingest-user-interview/SKILL.md` for the workflow details.
|
|
35
|
+
2. Run the referenced `bin/` scripts directly from Codex.
|
|
36
|
+
3. Treat graph and publish steps as best-effort unless that workflow explicitly
|
|
37
|
+
says they are required.
|
|
38
|
+
4. For every external notification, follow
|
|
39
|
+
`.claude/context/notification-consent.md`: plan without sending, then show
|
|
40
|
+
a separate exact Send / Edit / Cancel checkpoint. Never infer notification
|
|
41
|
+
consent from the workflow request or a batch approval.
|
|
42
|
+
5. Keep local-mode behavior filesystem-first and avoid graph or notification
|
|
43
|
+
calls when `egregore.json` declares `"mode": "local"`.
|
|
44
|
+
6. Never call the deprecated `egregore-handoff` CLI for Egregore project
|
|
45
|
+
handoffs.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: invite
|
|
3
|
+
description: Invite a GitHub user into this Egregore instance from Codex when the user invokes /invite or $invite, or asks to invite someone without exposing credentials.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Egregore Invite
|
|
7
|
+
|
|
8
|
+
Native Codex Egregore skill. Invite a GitHub username to the configured repos
|
|
9
|
+
and, in connected mode, create the Egregore join link.
|
|
10
|
+
|
|
11
|
+
## Flow
|
|
12
|
+
|
|
13
|
+
1. Require a GitHub username. If missing, ask for it and stop.
|
|
14
|
+
2. Read mode and config from `egregore.json`. Never print secrets from `.env`.
|
|
15
|
+
3. Run credential-sensitive work in a single shell command that reads
|
|
16
|
+
`GITHUB_TOKEN` and `EGREGORE_API_KEY` internally and only prints sanitized
|
|
17
|
+
JSON.
|
|
18
|
+
4. Connected mode:
|
|
19
|
+
- POST to the configured Egregore invite API with the GitHub username,
|
|
20
|
+
org, repo, slug, API key, and GitHub token.
|
|
21
|
+
- Parse the response and show invite status, memory access status, and the
|
|
22
|
+
returned invite URL.
|
|
23
|
+
- Best-effort graph record with `bin/graph.sh`.
|
|
24
|
+
- If a contact channel exists, follow
|
|
25
|
+
`.claude/context/notification-consent.md`: prepare a direct-message plan
|
|
26
|
+
and show the exact organization, recipient, channel, and message in a
|
|
27
|
+
separate Send / Edit / Cancel checkpoint. The invite request is not
|
|
28
|
+
notification consent.
|
|
29
|
+
5. Local mode:
|
|
30
|
+
- Use GitHub API collaborator endpoints for the core repo, memory repo, and
|
|
31
|
+
managed repos.
|
|
32
|
+
- Create or update `memory/people/{username}.md`.
|
|
33
|
+
- Commit and push memory.
|
|
34
|
+
- Show the join command using `npx -y create-egregore@latest join`.
|
|
35
|
+
6. If remote hosting is enabled, provision hosting best-effort in a detached
|
|
36
|
+
command and include the status only when it succeeds.
|
|
37
|
+
|
|
38
|
+
## Rules
|
|
39
|
+
|
|
40
|
+
- Never expose tokens, request bodies containing tokens, or raw API JSON.
|
|
41
|
+
- Only org admins can complete the connected invite flow; report API denial
|
|
42
|
+
clearly and give the manual GitHub access URL.
|
|
43
|
+
- Do not use Claude Code commands.
|
|
44
|
+
- Never fall back from an invite DM to a group or dispatch from detached work.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: issue
|
|
3
|
+
description: 'Fallback Codex adapter for the Egregore issue workflow.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
+
|
|
8
|
+
# Egregore issue 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
|
+
## Structured UX parity
|
|
19
|
+
|
|
20
|
+
This workflow has a Claude skill with user-visible structured output. After
|
|
21
|
+
reading `.claude/skills/issue/SKILL.md`, reproduce the same visible UX in Codex:
|
|
22
|
+
|
|
23
|
+
- Preserve TUI boxes, markdown tables, rich cards, browser artifact rendering,
|
|
24
|
+
exact confirmation blocks, and "no preamble" rules from the source skill.
|
|
25
|
+
- Use the source skill's frame width, section order, labels, status footer,
|
|
26
|
+
and examples as the contract for the final response.
|
|
27
|
+
- Never replace a required box/table/card/artifact view with a prose summary
|
|
28
|
+
unless the user explicitly asks for a summary.
|
|
29
|
+
- When the source says to output a TUI box directly, paste that box as the
|
|
30
|
+
visible response, preferably in a `text` fenced block.
|
|
31
|
+
- Never show raw JSON, raw command output, or unformatted script output when
|
|
32
|
+
the source skill requires formatted status or rendered output.
|
|
33
|
+
|
|
34
|
+
1. Read `.claude/skills/issue/SKILL.md` for the workflow details.
|
|
35
|
+
2. Run the referenced `bin/` scripts directly from Codex.
|
|
36
|
+
3. Treat graph and publish steps as best-effort unless that workflow explicitly
|
|
37
|
+
says they are required.
|
|
38
|
+
4. For every external notification, follow
|
|
39
|
+
`.claude/context/notification-consent.md`: plan without sending, then show
|
|
40
|
+
a separate exact Send / Edit / Cancel checkpoint. Never infer notification
|
|
41
|
+
consent from the workflow request or a batch approval.
|
|
42
|
+
5. Keep local-mode behavior filesystem-first and avoid graph or notification
|
|
43
|
+
calls when `egregore.json` declares `"mode": "local"`.
|
|
44
|
+
6. Never call the deprecated `egregore-handoff` CLI for Egregore project
|
|
45
|
+
handoffs.
|