create-egregore 0.19.33 → 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.
Files changed (250) hide show
  1. package/assets/egregore-launcher.js +141 -14
  2. package/bin/cli.js +19 -3
  3. package/lib/connect-runtime.js +4 -2
  4. package/lib/local.js +15 -1
  5. package/lib/prime-runtime.js +208 -0
  6. package/lib/setup.js +66 -5
  7. package/package.json +4 -3
  8. package/runtime/codex/.codex/config.toml +3 -0
  9. package/runtime/codex/.codex/skills/archive/SKILL.md +1 -1
  10. package/runtime/codex/.codex/skills/branch/SKILL.md +1 -1
  11. package/runtime/codex/.codex/skills/checkup/SKILL.md +1 -1
  12. package/runtime/codex/.codex/skills/commit/SKILL.md +1 -1
  13. package/runtime/codex/.codex/skills/contribute/SKILL.md +1 -1
  14. package/runtime/codex/.codex/skills/delete-user/SKILL.md +1 -1
  15. package/runtime/codex/.codex/skills/ingest/SKILL.md +1 -1
  16. package/runtime/codex/.codex/skills/ingest-corpus/SKILL.md +29 -0
  17. package/runtime/codex/.codex/skills/ingest-notion/SKILL.md +29 -0
  18. package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +1 -1
  19. package/runtime/codex/.codex/skills/issue/SKILL.md +1 -1
  20. package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
  21. package/runtime/codex/.codex/skills/meeting/SKILL.md +1 -1
  22. package/runtime/codex/.codex/skills/note/SKILL.md +1 -1
  23. package/runtime/codex/.codex/skills/notion-connect/SKILL.md +29 -0
  24. package/runtime/codex/.codex/skills/onboarding/SKILL.md +1 -1
  25. package/runtime/codex/.codex/skills/pr/SKILL.md +1 -1
  26. package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
  27. package/runtime/codex/.codex/skills/push/SKILL.md +1 -1
  28. package/runtime/codex/.codex/skills/reflect/SKILL.md +1 -1
  29. package/runtime/codex/.codex/skills/review-pr/SKILL.md +1 -1
  30. package/runtime/codex/.codex/skills/save/SKILL.md +3 -1
  31. package/runtime/codex/.codex/skills/slack-connect/SKILL.md +1 -1
  32. package/runtime/codex/.codex/skills/summon/SKILL.md +1 -1
  33. package/runtime/codex/.codex/skills/sync-repos/SKILL.md +1 -1
  34. package/runtime/codex/.codex/skills/teams-connect/SKILL.md +29 -0
  35. package/runtime/codex/.codex/skills/telegram-connect/SKILL.md +1 -1
  36. package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
  37. package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
  38. package/runtime/codex/.codex/skills/tutorial/SKILL.md +1 -1
  39. package/runtime/codex/.codex/skills/update/SKILL.md +1 -1
  40. package/runtime/codex/.codex/spec-manifest.json +5 -5
  41. package/runtime/codex/AGENTS.md +41 -35
  42. package/runtime/codex/bin/activity-data.sh +4 -8
  43. package/runtime/codex/bin/agent.sh +17 -5
  44. package/runtime/codex/bin/attendant.sh +13 -0
  45. package/runtime/codex/bin/autosave.sh +27 -1
  46. package/runtime/codex/bin/codex-render-spec.mjs +33 -32
  47. package/runtime/codex/bin/codex-session-start.sh +3 -1
  48. package/runtime/codex/bin/codex-sync-skills.sh +6 -1
  49. package/runtime/codex/bin/graph-batch.sh +25 -6
  50. package/runtime/codex/bin/graph-op.sh +5 -4
  51. package/runtime/codex/bin/graph.sh +31 -5
  52. package/runtime/codex/bin/handoff-pr-backfill.sh +1 -1
  53. package/runtime/codex/bin/handoff-run.sh +8 -3
  54. package/runtime/codex/bin/handoff-save-egregore.sh +19 -7
  55. package/runtime/codex/bin/ingest.py +341 -10
  56. package/runtime/codex/bin/lib/context.sh +26 -1
  57. package/runtime/codex/bin/lib/git-message.sh +37 -0
  58. package/runtime/codex/bin/lib/git-sync.sh +10 -2
  59. package/runtime/codex/bin/lib/greeting.sh +4 -1
  60. package/runtime/codex/bin/lib/worktree-links.sh +25 -0
  61. package/runtime/codex/bin/session-autosave.sh +7 -1
  62. package/runtime/codex/bin/settings.sh +1 -1
  63. package/runtime/codex/manifest.json +10 -1
  64. package/runtime/pi/.codex/config.toml +3 -0
  65. package/runtime/pi/.codex/skills/archive/SKILL.md +1 -1
  66. package/runtime/pi/.codex/skills/branch/SKILL.md +1 -1
  67. package/runtime/pi/.codex/skills/checkup/SKILL.md +1 -1
  68. package/runtime/pi/.codex/skills/commit/SKILL.md +1 -1
  69. package/runtime/pi/.codex/skills/contribute/SKILL.md +1 -1
  70. package/runtime/pi/.codex/skills/delete-user/SKILL.md +1 -1
  71. package/runtime/pi/.codex/skills/ingest/SKILL.md +1 -1
  72. package/runtime/pi/.codex/skills/ingest-corpus/SKILL.md +29 -0
  73. package/runtime/pi/.codex/skills/ingest-notion/SKILL.md +29 -0
  74. package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +1 -1
  75. package/runtime/pi/.codex/skills/issue/SKILL.md +1 -1
  76. package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
  77. package/runtime/pi/.codex/skills/meeting/SKILL.md +1 -1
  78. package/runtime/pi/.codex/skills/note/SKILL.md +1 -1
  79. package/runtime/pi/.codex/skills/notion-connect/SKILL.md +29 -0
  80. package/runtime/pi/.codex/skills/onboarding/SKILL.md +1 -1
  81. package/runtime/pi/.codex/skills/pr/SKILL.md +1 -1
  82. package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
  83. package/runtime/pi/.codex/skills/push/SKILL.md +1 -1
  84. package/runtime/pi/.codex/skills/reflect/SKILL.md +1 -1
  85. package/runtime/pi/.codex/skills/review-pr/SKILL.md +1 -1
  86. package/runtime/pi/.codex/skills/save/SKILL.md +3 -1
  87. package/runtime/pi/.codex/skills/slack-connect/SKILL.md +1 -1
  88. package/runtime/pi/.codex/skills/summon/SKILL.md +1 -1
  89. package/runtime/pi/.codex/skills/sync-repos/SKILL.md +1 -1
  90. package/runtime/pi/.codex/skills/teams-connect/SKILL.md +29 -0
  91. package/runtime/pi/.codex/skills/telegram-connect/SKILL.md +1 -1
  92. package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
  93. package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
  94. package/runtime/pi/.codex/skills/tutorial/SKILL.md +1 -1
  95. package/runtime/pi/.codex/skills/update/SKILL.md +1 -1
  96. package/runtime/pi/.codex/spec-manifest.json +5 -5
  97. package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -33
  98. package/runtime/pi/.pi/extensions/egregore.ts +17 -6
  99. package/runtime/pi/.pi/spec-manifest.json +2 -2
  100. package/runtime/pi/AGENTS.md +41 -35
  101. package/runtime/pi/bin/activity-data.sh +4 -8
  102. package/runtime/pi/bin/agent.sh +17 -5
  103. package/runtime/pi/bin/attendant.sh +13 -0
  104. package/runtime/pi/bin/autosave.sh +27 -1
  105. package/runtime/pi/bin/codex-render-spec.mjs +33 -32
  106. package/runtime/pi/bin/codex-session-start.sh +3 -1
  107. package/runtime/pi/bin/codex-sync-skills.sh +6 -1
  108. package/runtime/pi/bin/graph-batch.sh +25 -6
  109. package/runtime/pi/bin/graph-op.sh +5 -4
  110. package/runtime/pi/bin/graph.sh +31 -5
  111. package/runtime/pi/bin/handoff-pr-backfill.sh +1 -1
  112. package/runtime/pi/bin/handoff-run.sh +8 -3
  113. package/runtime/pi/bin/handoff-save-egregore.sh +19 -7
  114. package/runtime/pi/bin/ingest.py +341 -10
  115. package/runtime/pi/bin/lib/context.sh +26 -1
  116. package/runtime/pi/bin/lib/git-message.sh +37 -0
  117. package/runtime/pi/bin/lib/git-sync.sh +10 -2
  118. package/runtime/pi/bin/lib/greeting.sh +4 -1
  119. package/runtime/pi/bin/lib/worktree-links.sh +25 -0
  120. package/runtime/pi/bin/pi-branch-policy.mjs +138 -1
  121. package/runtime/pi/bin/pi-product-workflows.mjs +35 -7
  122. package/runtime/pi/bin/pi-render-spec.mjs +52 -26
  123. package/runtime/pi/bin/session-autosave.sh +7 -1
  124. package/runtime/pi/bin/settings.sh +1 -1
  125. package/runtime/pi/manifest.json +10 -1
  126. package/runtime/prime/.claude/context/notification-consent.md +66 -0
  127. package/runtime/prime/.codex/config.toml +20 -0
  128. package/runtime/prime/.codex/hooks/branch-guard.js +461 -0
  129. package/runtime/prime/.codex/hooks/search-hint.js +67 -0
  130. package/runtime/prime/.codex/hooks.json +30 -0
  131. package/runtime/prime/.codex/skills/activity/SKILL.md +82 -0
  132. package/runtime/prime/.codex/skills/announce/SKILL.md +67 -0
  133. package/runtime/prime/.codex/skills/archive/SKILL.md +45 -0
  134. package/runtime/prime/.codex/skills/branch/SKILL.md +29 -0
  135. package/runtime/prime/.codex/skills/checkup/SKILL.md +45 -0
  136. package/runtime/prime/.codex/skills/commit/SKILL.md +29 -0
  137. package/runtime/prime/.codex/skills/contribute/SKILL.md +29 -0
  138. package/runtime/prime/.codex/skills/create-skill/SKILL.md +29 -0
  139. package/runtime/prime/.codex/skills/dark-mode/SKILL.md +29 -0
  140. package/runtime/prime/.codex/skills/dashboard/SKILL.md +59 -0
  141. package/runtime/prime/.codex/skills/deep-reflect/SKILL.md +109 -0
  142. package/runtime/prime/.codex/skills/delete-user/SKILL.md +29 -0
  143. package/runtime/prime/.codex/skills/emissary/SKILL.md +45 -0
  144. package/runtime/prime/.codex/skills/handoff/SKILL.md +166 -0
  145. package/runtime/prime/.codex/skills/harvest/QUESTION_PALETTE.md +76 -0
  146. package/runtime/prime/.codex/skills/harvest/SKILL.md +131 -0
  147. package/runtime/prime/.codex/skills/ingest/SKILL.md +29 -0
  148. package/runtime/prime/.codex/skills/ingest-corpus/SKILL.md +29 -0
  149. package/runtime/prime/.codex/skills/ingest-notion/SKILL.md +29 -0
  150. package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +45 -0
  151. package/runtime/prime/.codex/skills/invite/SKILL.md +44 -0
  152. package/runtime/prime/.codex/skills/issue/SKILL.md +45 -0
  153. package/runtime/prime/.codex/skills/me/SKILL.md +29 -0
  154. package/runtime/prime/.codex/skills/meeting/SKILL.md +45 -0
  155. package/runtime/prime/.codex/skills/note/SKILL.md +29 -0
  156. package/runtime/prime/.codex/skills/notion-connect/SKILL.md +29 -0
  157. package/runtime/prime/.codex/skills/onboarding/SKILL.md +45 -0
  158. package/runtime/prime/.codex/skills/pr/SKILL.md +29 -0
  159. package/runtime/prime/.codex/skills/pull/SKILL.md +29 -0
  160. package/runtime/prime/.codex/skills/push/SKILL.md +29 -0
  161. package/runtime/prime/.codex/skills/quest/SKILL.md +80 -0
  162. package/runtime/prime/.codex/skills/reflect/SKILL.md +45 -0
  163. package/runtime/prime/.codex/skills/review-pr/SKILL.md +45 -0
  164. package/runtime/prime/.codex/skills/save/SKILL.md +127 -0
  165. package/runtime/prime/.codex/skills/slack-connect/SKILL.md +29 -0
  166. package/runtime/prime/.codex/skills/summon/SKILL.md +45 -0
  167. package/runtime/prime/.codex/skills/sync-repos/SKILL.md +29 -0
  168. package/runtime/prime/.codex/skills/teams-connect/SKILL.md +29 -0
  169. package/runtime/prime/.codex/skills/telegram-connect/SKILL.md +29 -0
  170. package/runtime/prime/.codex/skills/telemetry/SKILL.md +29 -0
  171. package/runtime/prime/.codex/skills/test/SKILL.md +45 -0
  172. package/runtime/prime/.codex/skills/the-spiral/SKILL.md +84 -0
  173. package/runtime/prime/.codex/skills/tui-design/SKILL.md +45 -0
  174. package/runtime/prime/.codex/skills/tutorial/SKILL.md +45 -0
  175. package/runtime/prime/.codex/skills/update/SKILL.md +29 -0
  176. package/runtime/prime/.codex/skills/view/SKILL.md +156 -0
  177. package/runtime/prime/.codex/skills/view/agents/openai.yaml +4 -0
  178. package/runtime/prime/.codex/skills/view/assets/compose-scaffold.html +221 -0
  179. package/runtime/prime/.codex/skills/visual-explain/SKILL.md +45 -0
  180. package/runtime/prime/.codex/skills/wrap/SKILL.md +58 -0
  181. package/runtime/prime/.codex/spec-manifest.json +132 -0
  182. package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +416 -0
  183. package/runtime/prime/.prime/agent/extensions/egregore.ts +460 -0
  184. package/runtime/prime/.prime/agent/settings.json +4 -0
  185. package/runtime/prime/.prime/agent/skills/egregore/SKILL.md +34 -0
  186. package/runtime/prime/.prime/agent/skills/egregore/pyproject.toml +13 -0
  187. package/runtime/prime/.prime/agent/skills/egregore/src/egregore/__init__.py +156 -0
  188. package/runtime/prime/.prime/agent/spec-manifest.json +12 -0
  189. package/runtime/prime/AGENTS.md +488 -0
  190. package/runtime/prime/bin/activity-data.sh +238 -0
  191. package/runtime/prime/bin/agent.sh +787 -0
  192. package/runtime/prime/bin/attendant.sh +707 -0
  193. package/runtime/prime/bin/autosave.sh +112 -0
  194. package/runtime/prime/bin/capture-reconcile.sh +69 -0
  195. package/runtime/prime/bin/capture-run.sh +341 -0
  196. package/runtime/prime/bin/codex-install-skills.sh +78 -0
  197. package/runtime/prime/bin/codex-render-spec.mjs +435 -0
  198. package/runtime/prime/bin/codex-session-start.sh +265 -0
  199. package/runtime/prime/bin/codex-skill-render.mjs +347 -0
  200. package/runtime/prime/bin/codex-sync-skills.sh +237 -0
  201. package/runtime/prime/bin/connect-refresh.sh +33 -0
  202. package/runtime/prime/bin/dashboard-data.sh +178 -0
  203. package/runtime/prime/bin/graph-batch.sh +79 -0
  204. package/runtime/prime/bin/graph-op.sh +1102 -0
  205. package/runtime/prime/bin/graph-wal.sh +229 -0
  206. package/runtime/prime/bin/graph.sh +223 -0
  207. package/runtime/prime/bin/handoff-pr-backfill.sh +86 -0
  208. package/runtime/prime/bin/handoff-run.sh +676 -0
  209. package/runtime/prime/bin/handoff-save-egregore.sh +224 -0
  210. package/runtime/prime/bin/index-handoff.sh +322 -0
  211. package/runtime/prime/bin/ingest-graph.sh +80 -0
  212. package/runtime/prime/bin/ingest-surface.html +495 -0
  213. package/runtime/prime/bin/ingest.py +1011 -0
  214. package/runtime/prime/bin/ingest.sh +279 -0
  215. package/runtime/prime/bin/ingest_graph.py +856 -0
  216. package/runtime/prime/bin/ingest_surface.py +544 -0
  217. package/runtime/prime/bin/lib/artifact-id.sh +46 -0
  218. package/runtime/prime/bin/lib/config.sh +116 -0
  219. package/runtime/prime/bin/lib/context.sh +621 -0
  220. package/runtime/prime/bin/lib/dashboard-artifact.sh +242 -0
  221. package/runtime/prime/bin/lib/ensure-develop.sh +183 -0
  222. package/runtime/prime/bin/lib/git-message.sh +37 -0
  223. package/runtime/prime/bin/lib/git-sync.sh +414 -0
  224. package/runtime/prime/bin/lib/greeting.sh +519 -0
  225. package/runtime/prime/bin/lib/hash.sh +13 -0
  226. package/runtime/prime/bin/lib/identity.sh +213 -0
  227. package/runtime/prime/bin/lib/metrics.sh +374 -0
  228. package/runtime/prime/bin/lib/noncode.sh +31 -0
  229. package/runtime/prime/bin/lib/permissions.sh +106 -0
  230. package/runtime/prime/bin/lib/time.sh +56 -0
  231. package/runtime/prime/bin/lib/worktree-links.sh +79 -0
  232. package/runtime/prime/bin/notify.sh +636 -0
  233. package/runtime/prime/bin/person.py +630 -0
  234. package/runtime/prime/bin/person.sh +448 -0
  235. package/runtime/prime/bin/pi-branch-policy.mjs +312 -0
  236. package/runtime/prime/bin/pi-product-workflows.mjs +394 -0
  237. package/runtime/prime/bin/prime-render-spec.mjs +147 -0
  238. package/runtime/prime/bin/prime-session-start.sh +24 -0
  239. package/runtime/prime/bin/publish-artifact.sh +271 -0
  240. package/runtime/prime/bin/publish-references.sh +144 -0
  241. package/runtime/prime/bin/repo-state.sh +96 -0
  242. package/runtime/prime/bin/search.sh +240 -0
  243. package/runtime/prime/bin/session-autosave.sh +215 -0
  244. package/runtime/prime/bin/session-log.sh +199 -0
  245. package/runtime/prime/bin/settings.sh +304 -0
  246. package/runtime/prime/bin/telemetry.sh +391 -0
  247. package/runtime/prime/bin/worktree-create.sh +128 -0
  248. package/runtime/prime/bin/worktree-remove.sh +50 -0
  249. package/runtime/prime/bin/worktree.sh +198 -0
  250. package/runtime/prime/manifest.json +181 -0
@@ -370,6 +370,29 @@ fi
370
370
  JSON="[]"
371
371
  RICH="[]"
372
372
  if [ -d "$SCRIPT_DIR/memory/handoffs" ]; then
373
+ # One definition everywhere: in connected mode the list comes from the
374
+ # graph's open-handoffs named read (open = pending/unread/read/claimed,
375
+ # matched by name/github/aliases) — the same definition the dashboard
376
+ # uses. The file grep below stays as the local-mode/offline fallback.
377
+ ADDRESSED=""
378
+ if [ "${LOCAL_MODE:-false}" != "true" ]; then
379
+ _GRAPH_LIST=$(bash "$SCRIPT_DIR/bin/graph-op.sh" open-handoffs "$AUTHOR" 5 2>/dev/null || true)
380
+ if echo "$_GRAPH_LIST" | jq -e '.values | length > 0' >/dev/null 2>&1; then
381
+ ADDRESSED=$(echo "$_GRAPH_LIST" | jq -r '.values[][0]' 2>/dev/null | awk '!seen[$0]++' | while IFS= read -r _SID; do
382
+ # Two on-disk layouts: dated subdirs (YYYY-MM/DD-slug.md, the id's
383
+ # own shape) and flat files at the handoffs root. Probe both, else
384
+ # a graph-listed handoff silently vanishes from the greeting.
385
+ _MONTH="${_SID:0:7}"
386
+ _REST="${_SID:8}"
387
+ _F="$SCRIPT_DIR/memory/handoffs/$_MONTH/$_REST.md"
388
+ if [ -f "$_F" ]; then
389
+ echo "$_F"
390
+ elif [ -f "$SCRIPT_DIR/memory/handoffs/$_SID.md" ]; then
391
+ echo "$SCRIPT_DIR/memory/handoffs/$_SID.md"
392
+ fi
393
+ done | head -5)
394
+ fi
395
+ fi
373
396
  # Match github username, display name, github_name first word, and people-file name
374
397
  # Handoff files may use "to: name", "**To**: name", or "To: name"
375
398
  _DISPLAY=$(jq -r '.display_name // empty' "$STATE_FILE" 2>/dev/null)
@@ -387,7 +410,9 @@ fi
387
410
  echo "$_GREP_PAT" | grep -qF "$_VARIANT" && continue
388
411
  _GREP_PAT="$_GREP_PAT\|[Tt]o[*]*: *$_VARIANT\|[Tt]o[*]*:$_VARIANT"
389
412
  done
390
- ADDRESSED=$(grep -rli "$_GREP_PAT" "$SCRIPT_DIR/memory/handoffs/" 2>/dev/null | sort -r | head -5 || true)
413
+ if [ -z "$ADDRESSED" ]; then
414
+ ADDRESSED=$(grep -rli "$_GREP_PAT" "$SCRIPT_DIR/memory/handoffs/" 2>/dev/null | sort -r | head -5 || true)
415
+ fi
391
416
  JSON="["
392
417
  RICH="["
393
418
  FIRST=true
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ # git-message.sh — shared commit/PR message mechanics, sourced by composers.
3
+ # Spec: .claude/context/commit-format.md + .claude/context/pr-format.md.
4
+ #
5
+ # Provides:
6
+ # egregore_session_trailer <hub_dir>
7
+ # Print "Egregore-Session: <id>" when <hub_dir>/.egregore-session-id
8
+ # exists; print nothing otherwise. Never fails.
9
+ # egregore_commit <git_dir> <hub_dir> <message> [git-commit flags…]
10
+ # git -C <git_dir> commit with the session trailer appended as the
11
+ # final paragraph (a valid git trailer block) when an id exists.
12
+ # egregore_pr_skeleton <what> <why> <verification> <footer>
13
+ # The one source of the skeleton PR body shape.
14
+
15
+ egregore_session_trailer() {
16
+ local sid
17
+ sid="$(cat "${1:-.}/.egregore-session-id" 2>/dev/null || true)"
18
+ [ -n "$sid" ] && printf 'Egregore-Session: %s' "$sid"
19
+ return 0
20
+ }
21
+
22
+ egregore_commit() {
23
+ local git_dir="$1" hub_dir="$2" msg="$3"
24
+ shift 3
25
+ local trailer
26
+ trailer="$(egregore_session_trailer "$hub_dir")"
27
+ if [ -n "$trailer" ]; then
28
+ git -C "$git_dir" commit -m "$msg" -m "$trailer" "$@"
29
+ else
30
+ git -C "$git_dir" commit -m "$msg" "$@"
31
+ fi
32
+ }
33
+
34
+ egregore_pr_skeleton() {
35
+ printf '## What\n%s\n\n## Why\n%s\n\n## Verification\n%s\n\n%s\n' \
36
+ "$1" "$2" "$3" "$4"
37
+ }
@@ -185,7 +185,7 @@ _apply_framework_update() {
185
185
  FRAMEWORK_UPDATED_COUNT=$(printf '%s\n' "$_changed" | grep -c . || echo 0)
186
186
  FRAMEWORK_UPDATED_FILES=$(printf '%s\n' "$_changed" | awk '{print $NF}' | head -3 | tr '\n' ' ')
187
187
  git add bin/ .claude/ loom/ CLAUDE.md skills/ 2>/dev/null
188
- EGREGORE_FRAMEWORK_UPDATE=1 git commit -m "Auto-update Egregore framework" --quiet 2>/dev/null || true
188
+ EGREGORE_FRAMEWORK_UPDATE=1 git commit -m "chore(sync): update framework from upstream" --quiet 2>/dev/null || true
189
189
  FRAMEWORK_UPDATED="true"
190
190
  fi
191
191
  }
@@ -214,6 +214,14 @@ fi
214
214
  # Named setup_develop for continuity; it operates on $BASE_BRANCH, which is
215
215
  # "develop" by default and whatever egregore.json's base_branch says otherwise.
216
216
  setup_develop() {
217
+ # Detached HEAD (CI merge-ref checkouts, bisects): never create or switch
218
+ # branches here — `git checkout -b $BASE_BRANCH origin/$BASE_BRANCH` would
219
+ # silently replace the checked-out tree with the base branch. This is how
220
+ # CI jobs that invoke session-start machinery ended up testing develop
221
+ # instead of the PR under test. Syncing means updating the base-branch ref,
222
+ # not claiming HEAD; on a detached HEAD there is nothing safe to do.
223
+ [ -n "$(git branch --show-current 2>/dev/null)" ] || return 0
224
+
217
225
  # Ensure the base branch exists locally
218
226
  if ! git show-ref --verify --quiet "refs/heads/$BASE_BRANCH" 2>/dev/null; then
219
227
  if git show-ref --verify --quiet "refs/remotes/origin/$BASE_BRANCH" 2>/dev/null; then
@@ -267,7 +275,7 @@ setup_develop() {
267
275
  # Save uncommitted work so nothing is lost (guarded: never auto-commit
268
276
  # stray submodule pointers from sibling repos in the checkout)
269
277
  git_add_guarded
270
- git commit -m "Auto-save: uncommitted work from $CURRENT_BRANCH" --quiet 2>/dev/null || true
278
+ git commit -m "chore(autosave): save uncommitted work from $CURRENT_BRANCH" --quiet 2>/dev/null || true
271
279
  SAVED_BRANCH="$CURRENT_BRANCH"
272
280
  fi
273
281
 
@@ -188,7 +188,10 @@ fi
188
188
  # Staged auto-saves awaiting the user's merge (the /autosave consent gate).
189
189
  # Live gh query so the line persists until the PRs actually merge — the
190
190
  # ledger cursor above only reports once. Fail-soft when gh/network is out.
191
- if command -v gh >/dev/null 2>&1; then
191
+ # Shown only while the autosave experiment is enabled: stale PRs from a
192
+ # disabled experiment should not nag every greeting.
193
+ AUTOSAVE_ON=$(jq -r '.autosave_enabled // false' "$STATE_FILE" 2>/dev/null)
194
+ if [ "$AUTOSAVE_ON" = "true" ] && command -v gh >/dev/null 2>&1; then
192
195
  GH_SELF=$(jq -r '.github_username // empty' "$STATE_FILE" 2>/dev/null)
193
196
  if [ -n "$GH_SELF" ]; then
194
197
  WAITING_AS=$(gh pr list --state open --author "$GH_SELF" --limit 20 \
@@ -52,3 +52,28 @@ egregore_link_shared_state() {
52
52
  fi
53
53
  done
54
54
  }
55
+
56
+ # Resolve the .env that governs a checkout. A worktree can be missing its .env
57
+ # symlink (created before .env existed, or by a runtime that skipped worktree
58
+ # setup) — self-heal the links, then fall back to the main checkout's .env so
59
+ # credential loading never silently comes up empty. Prints the usable path, or
60
+ # nothing when neither checkout has one. Always returns 0.
61
+ egregore_env_file() {
62
+ local project_dir="${1:?project dir required}"
63
+ if [ ! -f "$project_dir/.env" ] && [ -f "$project_dir/.git" ]; then
64
+ egregore_link_shared_state "$project_dir" 2>/dev/null || true
65
+ fi
66
+ if [ -f "$project_dir/.env" ]; then
67
+ echo "$project_dir/.env"
68
+ return 0
69
+ fi
70
+ if [ -f "$project_dir/.git" ]; then
71
+ local main_dir
72
+ main_dir="$(egregore_main_project_dir "$project_dir" 2>/dev/null || true)"
73
+ if [ -n "$main_dir" ] && [ -f "$main_dir/.env" ]; then
74
+ echo "$main_dir/.env"
75
+ return 0
76
+ fi
77
+ fi
78
+ return 0
79
+ }
@@ -29,6 +29,12 @@
29
29
 
30
30
  set -uo pipefail
31
31
 
32
+ # shellcheck source=bin/lib/git-message.sh
33
+ . "$(cd "$(dirname "$0")" && pwd)/lib/git-message.sh" 2>/dev/null || true
34
+ type egregore_commit >/dev/null 2>&1 || egregore_commit() {
35
+ local gd="$1" m="$3"; shift 3; git -C "$gd" commit -m "$m" "$@"
36
+ }
37
+
32
38
  DIR=""
33
39
  AUTHOR=""
34
40
  DEBOUNCE=0
@@ -118,7 +124,7 @@ fi
118
124
  if git -C "$DIR/memory" rev-parse --git-dir >/dev/null 2>&1; then
119
125
  if [ -n "$(git -C "$DIR/memory" status --porcelain 2>/dev/null)" ]; then
120
126
  git -C "$DIR/memory" add -A >/dev/null 2>&1 || true
121
- git -C "$DIR/memory" commit -m "Auto-save: session content" --quiet 2>/dev/null || true
127
+ egregore_commit "$DIR/memory" "$DIR" "chore(autosave): save session work" --quiet 2>/dev/null || true
122
128
  fi
123
129
  if [ -n "$(git -C "$DIR/memory" log origin/main..HEAD --oneline 2>/dev/null)" ]; then
124
130
  for _try in 1 2 3; do
@@ -232,7 +232,7 @@ _people_file() {
232
232
  rm -f "$f"
233
233
  fi
234
234
  ( cd "$SCRIPT_DIR/memory" 2>/dev/null && git add -A people/ 2>/dev/null \
235
- && git commit -q -m "settings: people $op $user" 2>/dev/null \
235
+ && git commit -q -m "chore(settings): $op $user in people" 2>/dev/null \
236
236
  && git push -q 2>/dev/null ) || true
237
237
  }
238
238
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "source": "egregore-runtime",
3
3
  "policy": "available OSS components selected by capability-distribution.json; Connect is an authenticated additive overlay",
4
- "skillCount": 43,
4
+ "skillCount": 47,
5
5
  "skills": [
6
6
  "activity",
7
7
  "announce",
@@ -19,12 +19,15 @@
19
19
  "handoff",
20
20
  "harvest",
21
21
  "ingest",
22
+ "ingest-corpus",
23
+ "ingest-notion",
22
24
  "ingest-user-interview",
23
25
  "invite",
24
26
  "issue",
25
27
  "me",
26
28
  "meeting",
27
29
  "note",
30
+ "notion-connect",
28
31
  "onboarding",
29
32
  "pr",
30
33
  "pull",
@@ -36,6 +39,7 @@
36
39
  "slack-connect",
37
40
  "summon",
38
41
  "sync-repos",
42
+ "teams-connect",
39
43
  "telegram-connect",
40
44
  "telemetry",
41
45
  "test",
@@ -71,6 +75,8 @@
71
75
  ".codex/skills/handoff/SKILL.md",
72
76
  ".codex/skills/harvest/QUESTION_PALETTE.md",
73
77
  ".codex/skills/harvest/SKILL.md",
78
+ ".codex/skills/ingest-corpus/SKILL.md",
79
+ ".codex/skills/ingest-notion/SKILL.md",
74
80
  ".codex/skills/ingest-user-interview/SKILL.md",
75
81
  ".codex/skills/ingest/SKILL.md",
76
82
  ".codex/skills/invite/SKILL.md",
@@ -78,6 +84,7 @@
78
84
  ".codex/skills/me/SKILL.md",
79
85
  ".codex/skills/meeting/SKILL.md",
80
86
  ".codex/skills/note/SKILL.md",
87
+ ".codex/skills/notion-connect/SKILL.md",
81
88
  ".codex/skills/onboarding/SKILL.md",
82
89
  ".codex/skills/pr/SKILL.md",
83
90
  ".codex/skills/pull/SKILL.md",
@@ -89,6 +96,7 @@
89
96
  ".codex/skills/slack-connect/SKILL.md",
90
97
  ".codex/skills/summon/SKILL.md",
91
98
  ".codex/skills/sync-repos/SKILL.md",
99
+ ".codex/skills/teams-connect/SKILL.md",
92
100
  ".codex/skills/telegram-connect/SKILL.md",
93
101
  ".codex/skills/telemetry/SKILL.md",
94
102
  ".codex/skills/test/SKILL.md",
@@ -135,6 +143,7 @@
135
143
  "bin/lib/context.sh",
136
144
  "bin/lib/dashboard-artifact.sh",
137
145
  "bin/lib/ensure-develop.sh",
146
+ "bin/lib/git-message.sh",
138
147
  "bin/lib/git-sync.sh",
139
148
  "bin/lib/greeting.sh",
140
149
  "bin/lib/hash.sh",
@@ -1,6 +1,9 @@
1
1
  [features]
2
2
  hooks = true
3
3
 
4
+ [mcp_servers.notion]
5
+ url = "https://mcp.notion.com/mcp"
6
+
4
7
  [tui]
5
8
  # Codex currently accepts built-in footer item IDs only. Egregore's dynamic
6
9
  # ◆ CONNECTED / ◇ LOCAL identity is rendered by bin/codex-session-start.sh.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: archive
3
- description: 'Fallback Codex adapter for the Egregore archive workflow.'
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: 'Fallback Codex adapter for the Egregore branch workflow.'
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: 'Fallback Codex adapter for the Egregore checkup workflow.'
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: 'Fallback Codex adapter for the Egregore commit workflow.'
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: 'Fallback Codex adapter for the Egregore contribute workflow.'
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: 'Fallback Codex adapter for the Egregore delete-user workflow.'
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: 'Fallback Codex adapter for the Egregore ingest workflow.'
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.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: ingest-notion
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
+ ---
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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ingest-user-interview
3
- description: 'Fallback Codex adapter for the Egregore ingest-user-interview workflow.'
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: 'Fallback Codex adapter for the Egregore issue workflow.'
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: 'Fallback Codex adapter for the Egregore me workflow.'
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: 'Fallback Codex adapter for the Egregore meeting workflow.'
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: 'Fallback Codex adapter for the Egregore note workflow.'
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 -->
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: notion-connect
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
+ ---
5
+
6
+ <!-- generated-by: bin/codex-sync-skills.sh -->
7
+
8
+ # Egregore notion-connect 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/notion-connect/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: onboarding
3
- description: 'Fallback Codex adapter for the Egregore onboarding workflow.'
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: 'Fallback Codex adapter for the Egregore pr workflow.'
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: 'Fallback Codex adapter for the Egregore pull workflow.'
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: 'Fallback Codex adapter for the Egregore push workflow.'
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: 'Fallback Codex adapter for the Egregore reflect workflow.'
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: 'Fallback Codex adapter for the Egregore review-pr workflow.'
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 clear commit message,
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: 'Fallback Codex adapter for the Egregore slack-connect workflow.'
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: 'Fallback Codex adapter for the Egregore summon workflow.'
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: 'Fallback Codex adapter for the Egregore sync-repos workflow.'
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 -->
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: teams-connect
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
+ ---
5
+
6
+ <!-- generated-by: bin/codex-sync-skills.sh -->
7
+
8
+ # Egregore teams-connect 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/teams-connect/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: telegram-connect
3
- description: 'Fallback Codex adapter for the Egregore telegram-connect workflow.'
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: 'Fallback Codex adapter for the Egregore telemetry workflow.'
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: 'Fallback Codex adapter for the Egregore test workflow.'
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 -->