create-egregore 0.21.6 → 0.22.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.
Files changed (719) hide show
  1. package/assets/egregore-launcher.js +58 -6
  2. package/assets/egregore-launcher.sh +15 -2
  3. package/lib/claude-runtime.js +2 -0
  4. package/lib/codex-runtime.js +2 -0
  5. package/lib/setup.js +20 -3
  6. package/package.json +2 -2
  7. package/runtime/claude/.claude/context/commit-format.md +7 -4
  8. package/runtime/claude/.claude/context/handoff-claiming.md +32 -0
  9. package/runtime/claude/.claude/context/notification-consent.md +12 -9
  10. package/runtime/claude/.claude/hooks/boundary-check.sh +14 -331
  11. package/runtime/claude/.claude/hooks/memory-read-guard.sh +9 -1
  12. package/runtime/claude/.claude/rules/voice-bedrock.md +6 -2
  13. package/runtime/claude/.claude/settings.json +1 -1
  14. package/runtime/claude/.claude/skills/commit/SKILL.md +5 -3
  15. package/runtime/claude/.claude/skills/dark-mode/SKILL.md +48 -369
  16. package/runtime/claude/.claude/skills/records/SKILL.md +158 -0
  17. package/runtime/claude/.claude/skills/reflect/SKILL.md +50 -21
  18. package/runtime/claude/.claude/skills/review-pr/SKILL.md +4 -2
  19. package/runtime/claude/.claude/skills/save/SKILL.md +9 -3
  20. package/runtime/claude/.claude/skills/summon/SKILL.md +138 -207
  21. package/runtime/claude/.claude/skills/tui-design/SKILL.md +1 -1
  22. package/runtime/claude/.claude/skills/update/SKILL.md +1 -1
  23. package/runtime/claude/.claude/skills/view/SKILL.md +52 -16
  24. package/runtime/claude/.claude/skills/view/compose-scaffold.html +19 -13
  25. package/runtime/claude/CLAUDE.md +59 -95
  26. package/runtime/claude/bin/agent.sh +231 -7
  27. package/runtime/claude/bin/api-call.sh +44 -23
  28. package/runtime/claude/bin/artifact-register.sh +7 -1
  29. package/runtime/claude/bin/artifact-writeback.sh +1 -1
  30. package/runtime/claude/bin/artifacts.sh +66 -265
  31. package/runtime/claude/bin/attendant.sh +4 -1
  32. package/runtime/claude/bin/boundary-guard.cjs +1848 -0
  33. package/runtime/claude/bin/boundary-hook.sh +41 -0
  34. package/runtime/claude/bin/boundary.sh +15 -155
  35. package/runtime/claude/bin/capture-run.sh +32 -2
  36. package/runtime/claude/bin/codex-render-spec.mjs +24 -46
  37. package/runtime/claude/bin/codex-session-start.sh +19 -0
  38. package/runtime/claude/bin/codex-skill-render.mjs +18 -0
  39. package/runtime/claude/bin/config-get.sh +10 -1
  40. package/runtime/claude/bin/connect-refresh.sh +16 -0
  41. package/runtime/claude/bin/corpus_map.py +5 -0
  42. package/runtime/claude/bin/data/capabilities/claude.json +1480 -0
  43. package/runtime/claude/bin/genui.sh +19 -0
  44. package/runtime/claude/bin/graph-batch.sh +1 -1
  45. package/runtime/claude/bin/graph-op.sh +14 -0
  46. package/runtime/claude/bin/graph.sh +1 -1
  47. package/runtime/claude/bin/handoff-pr-backfill.sh +1 -1
  48. package/runtime/claude/bin/handoff-run.sh +11 -6
  49. package/runtime/claude/bin/ingest-item.sh +1 -1
  50. package/runtime/claude/bin/ingest-surface.html +22 -4
  51. package/runtime/claude/bin/issue.sh +1 -1
  52. package/runtime/claude/bin/knowledge.sh +1 -1
  53. package/runtime/claude/bin/lib/card-delivery.sh +329 -0
  54. package/runtime/claude/bin/lib/config.sh +148 -3
  55. package/runtime/claude/bin/lib/context.sh +38 -67
  56. package/runtime/claude/bin/lib/genui-entry.py +36 -0
  57. package/runtime/claude/bin/lib/git-message.sh +25 -6
  58. package/runtime/claude/bin/lib/git-sync.sh +12 -4
  59. package/runtime/claude/bin/lib/greeting.sh +255 -28
  60. package/runtime/claude/bin/lib/handoff_meta.py +294 -0
  61. package/runtime/claude/bin/lib/health-footer.sh +83 -2
  62. package/runtime/claude/bin/lib/identity.sh +31 -10
  63. package/runtime/claude/bin/lib/instance-registry.sh +71 -0
  64. package/runtime/claude/bin/lib/local_ci_receipt.py +249 -0
  65. package/runtime/claude/bin/lib/metrics.sh +121 -8
  66. package/runtime/claude/bin/lib/notices.sh +36 -0
  67. package/runtime/claude/bin/lib/record_outcomes.py +729 -0
  68. package/runtime/claude/bin/lib/reflexes.py +267 -0
  69. package/runtime/claude/bin/lib/retrieval_scorecard.py +624 -0
  70. package/runtime/claude/bin/lib/session-record-prompt.txt +18 -0
  71. package/runtime/claude/bin/lib/session_record.py +3747 -0
  72. package/runtime/claude/bin/lib/session_trail.py +1983 -0
  73. package/runtime/claude/bin/lib/settings-drift.sh +8 -5
  74. package/runtime/claude/bin/lib/startup-restart.sh +41 -0
  75. package/runtime/claude/bin/lib/worktree-links.sh +92 -0
  76. package/runtime/claude/bin/memory-push.sh +6 -0
  77. package/runtime/claude/bin/merge-gate.sh +498 -0
  78. package/runtime/claude/bin/notify.sh +5 -2
  79. package/runtime/claude/bin/page-access.sh +103 -0
  80. package/runtime/claude/bin/person.sh +13 -2
  81. package/runtime/claude/bin/pi-render-spec.mjs +0 -1
  82. package/runtime/claude/bin/pi-spirit-discovery.mjs +34 -0
  83. package/runtime/claude/bin/post-update.sh +181 -0
  84. package/runtime/claude/bin/prime-render-spec.mjs +0 -1
  85. package/runtime/claude/bin/publish-artifact.sh +89 -42
  86. package/runtime/claude/bin/qa-inventory.sh +2 -2
  87. package/runtime/claude/bin/quest.sh +1 -1
  88. package/runtime/claude/bin/records.sh +11 -0
  89. package/runtime/claude/bin/reflexes/05-vitals.sh +9 -0
  90. package/runtime/claude/bin/reflexes/10-open-items.sh +12 -0
  91. package/runtime/claude/bin/reflexes/15-retrieval.sh +8 -0
  92. package/runtime/claude/bin/reflexes/20-nightly.sh +100 -0
  93. package/runtime/claude/bin/reflexes/20-sandbox.sh +85 -0
  94. package/runtime/claude/bin/reflexes/30-cost.py +116 -0
  95. package/runtime/claude/bin/reflexes/40-shells.py +51 -0
  96. package/runtime/claude/bin/reflexes/README.md +61 -0
  97. package/runtime/claude/bin/reflexes.sh +7 -0
  98. package/runtime/claude/bin/runtime-identity.sh +140 -42
  99. package/runtime/claude/bin/screenshot.sh +77 -0
  100. package/runtime/claude/bin/scroll.sh +1 -1
  101. package/runtime/claude/bin/search.sh +31 -5
  102. package/runtime/claude/bin/session-autosave.sh +6 -3
  103. package/runtime/claude/bin/session-id.sh +147 -0
  104. package/runtime/claude/bin/session-log.sh +19 -0
  105. package/runtime/claude/bin/session-record.sh +26 -0
  106. package/runtime/claude/bin/session-start.sh +121 -151
  107. package/runtime/claude/bin/settings.sh +13 -8
  108. package/runtime/claude/bin/spirit-discovery-claude.sh +4 -0
  109. package/runtime/claude/bin/spirit-discovery-codex.sh +4 -0
  110. package/runtime/claude/bin/spirit-discovery-pi.sh +4 -0
  111. package/runtime/claude/bin/spirit-discovery-prime.sh +4 -0
  112. package/runtime/claude/bin/spirit-discovery.sh +4 -0
  113. package/runtime/claude/bin/startup-check.sh +1 -1
  114. package/runtime/claude/bin/telemetry.sh +11 -4
  115. package/runtime/claude/bin/test-baseline.sh +33 -5
  116. package/runtime/claude/bin/todo.sh +1 -1
  117. package/runtime/claude/bin/worktree-create.sh +15 -45
  118. package/runtime/claude/bin/worktree.sh +6 -0
  119. package/runtime/claude/docs/spirit-discovery.md +96 -0
  120. package/runtime/claude/egregore_runtime/__init__.py +18 -12
  121. package/runtime/claude/egregore_runtime/access.py +608 -0
  122. package/runtime/claude/egregore_runtime/access_cli.py +190 -0
  123. package/runtime/claude/egregore_runtime/adapters/invitation.py +5 -3
  124. package/runtime/claude/egregore_runtime/adapters/qmd.py +521 -47
  125. package/runtime/claude/egregore_runtime/admin_entry.py +56 -0
  126. package/runtime/claude/egregore_runtime/artifacts.py +222 -16
  127. package/runtime/claude/egregore_runtime/contracts.py +27 -0
  128. package/runtime/claude/egregore_runtime/eligibility.py +5 -12
  129. package/runtime/claude/egregore_runtime/episode_binding.py +16 -5
  130. package/runtime/claude/egregore_runtime/github_issues.py +2 -2
  131. package/runtime/claude/egregore_runtime/handoff_lookup.py +9 -20
  132. package/runtime/claude/egregore_runtime/harness_cli.py +674 -149
  133. package/runtime/claude/egregore_runtime/held.py +2436 -0
  134. package/runtime/claude/egregore_runtime/hosted_api.py +137 -0
  135. package/runtime/claude/egregore_runtime/identity.py +196 -65
  136. package/runtime/claude/egregore_runtime/identity_transfer.py +6 -2
  137. package/runtime/claude/egregore_runtime/ingest_cli.py +2 -2
  138. package/runtime/claude/egregore_runtime/ingest_index_cli.py +4 -16
  139. package/runtime/claude/egregore_runtime/installation.py +119 -0
  140. package/runtime/claude/egregore_runtime/investigation.py +64 -41
  141. package/runtime/claude/egregore_runtime/investigation_guidance.py +16 -11
  142. package/runtime/claude/egregore_runtime/issue_cli.py +51 -32
  143. package/runtime/claude/egregore_runtime/issue_reporting.py +4 -3
  144. package/runtime/claude/egregore_runtime/issue_triage_service.py +2 -2
  145. package/runtime/claude/egregore_runtime/issues.py +12 -6
  146. package/runtime/claude/egregore_runtime/knowledge.py +331 -5
  147. package/runtime/claude/egregore_runtime/knowledge_cli.py +57 -17
  148. package/runtime/claude/egregore_runtime/lifecycle.py +88 -22
  149. package/runtime/claude/egregore_runtime/lifecycle_cli.py +21 -13
  150. package/runtime/claude/egregore_runtime/line_ids.py +10 -0
  151. package/runtime/claude/egregore_runtime/memory_push.py +349 -0
  152. package/runtime/claude/egregore_runtime/observe.py +64 -25
  153. package/runtime/claude/egregore_runtime/observers.py +19 -0
  154. package/runtime/claude/egregore_runtime/optional_modules.py +13 -0
  155. package/runtime/claude/egregore_runtime/outputs_cli.py +321 -0
  156. package/runtime/claude/egregore_runtime/policy.py +651 -24
  157. package/runtime/claude/egregore_runtime/private_result.py +2 -1
  158. package/runtime/claude/egregore_runtime/projection.py +946 -0
  159. package/runtime/claude/egregore_runtime/quest_cli.py +20 -23
  160. package/runtime/claude/egregore_runtime/question_cli.py +15 -11
  161. package/runtime/claude/egregore_runtime/questions.py +10 -10
  162. package/runtime/claude/egregore_runtime/quests.py +10 -10
  163. package/runtime/claude/egregore_runtime/record_publish.py +548 -0
  164. package/runtime/claude/egregore_runtime/record_subject.py +564 -0
  165. package/runtime/claude/egregore_runtime/research_ingest.py +2 -4
  166. package/runtime/claude/egregore_runtime/runtime.py +169 -60
  167. package/runtime/claude/egregore_runtime/sandbox.py +194 -0
  168. package/runtime/claude/egregore_runtime/scroll_cli.py +22 -32
  169. package/runtime/claude/egregore_runtime/scrolls.py +23 -15
  170. package/runtime/claude/egregore_runtime/shadow.py +262 -0
  171. package/runtime/claude/egregore_runtime/spirit_discovery.py +487 -0
  172. package/runtime/claude/egregore_runtime/spirit_discovery_cli.py +25 -0
  173. package/runtime/claude/egregore_runtime/spirit_discovery_transport.py +18 -0
  174. package/runtime/claude/egregore_runtime/status.py +101 -44
  175. package/runtime/claude/egregore_runtime/status_cli.py +13 -5
  176. package/runtime/claude/egregore_runtime/sync.py +39 -21
  177. package/runtime/claude/egregore_runtime/taste.py +934 -0
  178. package/runtime/claude/egregore_runtime/taste_cli.py +242 -0
  179. package/runtime/claude/egregore_runtime/taste_rules.py +91 -0
  180. package/runtime/claude/egregore_runtime/telemetry.py +26 -3
  181. package/runtime/claude/egregore_runtime/todo_cli.py +15 -12
  182. package/runtime/claude/egregore_runtime/todos.py +3 -2
  183. package/runtime/claude/egregore_runtime/upgrade.py +85 -58
  184. package/runtime/claude/egregore_runtime/writeback.py +330 -24
  185. package/runtime/claude/manifest.json +65 -5
  186. package/runtime/codex/.claude/context/handoff-claiming.md +32 -0
  187. package/runtime/codex/.claude/context/notification-consent.md +12 -9
  188. package/runtime/codex/.claude/skills/view/SKILL.md +438 -0
  189. package/runtime/codex/.codex/hooks.json +11 -0
  190. package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
  191. package/runtime/codex/.codex/skills/records/SKILL.md +29 -0
  192. package/runtime/codex/.codex/skills/summon/SKILL.md +1 -1
  193. package/runtime/codex/.codex/skills/view/assets/compose-scaffold.html +19 -13
  194. package/runtime/codex/.codex/spec-manifest.json +13 -19
  195. package/runtime/codex/AGENTS.md +54 -105
  196. package/runtime/codex/bin/agent.sh +231 -7
  197. package/runtime/codex/bin/api-call.sh +44 -23
  198. package/runtime/codex/bin/artifact-register.sh +7 -1
  199. package/runtime/codex/bin/artifact-writeback.sh +1 -1
  200. package/runtime/codex/bin/artifacts.sh +66 -265
  201. package/runtime/codex/bin/attendant.sh +4 -1
  202. package/runtime/codex/bin/boundary-guard.cjs +1848 -0
  203. package/runtime/codex/bin/boundary-hook.sh +41 -0
  204. package/runtime/codex/bin/capture-run.sh +32 -2
  205. package/runtime/codex/bin/codex-render-spec.mjs +24 -46
  206. package/runtime/codex/bin/codex-session-start.sh +19 -0
  207. package/runtime/codex/bin/codex-skill-render.mjs +18 -0
  208. package/runtime/codex/bin/config-get.sh +10 -1
  209. package/runtime/codex/bin/connect-refresh.sh +16 -0
  210. package/runtime/codex/bin/corpus_map.py +5 -0
  211. package/runtime/codex/bin/data/capabilities/codex.json +1458 -0
  212. package/runtime/codex/bin/genui.sh +19 -0
  213. package/runtime/codex/bin/graph-batch.sh +1 -1
  214. package/runtime/codex/bin/graph-op.sh +14 -0
  215. package/runtime/codex/bin/graph.sh +1 -1
  216. package/runtime/codex/bin/handoff-pr-backfill.sh +1 -1
  217. package/runtime/codex/bin/handoff-run.sh +11 -6
  218. package/runtime/codex/bin/ingest-item.sh +1 -1
  219. package/runtime/codex/bin/ingest-surface.html +22 -4
  220. package/runtime/codex/bin/issue.sh +1 -1
  221. package/runtime/codex/bin/knowledge.sh +1 -1
  222. package/runtime/codex/bin/lib/card-delivery.sh +329 -0
  223. package/runtime/codex/bin/lib/config.sh +148 -3
  224. package/runtime/codex/bin/lib/context.sh +38 -67
  225. package/runtime/codex/bin/lib/genui-entry.py +36 -0
  226. package/runtime/codex/bin/lib/git-message.sh +25 -6
  227. package/runtime/codex/bin/lib/git-sync.sh +12 -4
  228. package/runtime/codex/bin/lib/greeting.sh +255 -28
  229. package/runtime/codex/bin/lib/handoff_meta.py +294 -0
  230. package/runtime/codex/bin/lib/health-footer.sh +83 -2
  231. package/runtime/codex/bin/lib/identity.sh +31 -10
  232. package/runtime/codex/bin/lib/instance-registry.sh +71 -0
  233. package/runtime/codex/bin/lib/local_ci_receipt.py +249 -0
  234. package/runtime/codex/bin/lib/metrics.sh +121 -8
  235. package/runtime/codex/bin/lib/notices.sh +36 -0
  236. package/runtime/codex/bin/lib/record_outcomes.py +729 -0
  237. package/runtime/codex/bin/lib/reflexes.py +267 -0
  238. package/runtime/codex/bin/lib/retrieval_scorecard.py +624 -0
  239. package/runtime/codex/bin/lib/session-record-prompt.txt +18 -0
  240. package/runtime/codex/bin/lib/session_record.py +3747 -0
  241. package/runtime/codex/bin/lib/session_trail.py +1983 -0
  242. package/runtime/codex/bin/lib/settings-drift.sh +8 -5
  243. package/runtime/codex/bin/lib/startup-restart.sh +41 -0
  244. package/runtime/codex/bin/lib/worktree-links.sh +92 -0
  245. package/runtime/codex/bin/memory-push.sh +6 -0
  246. package/runtime/codex/bin/merge-gate.sh +498 -0
  247. package/runtime/codex/bin/notify.sh +5 -2
  248. package/runtime/codex/bin/page-access.sh +103 -0
  249. package/runtime/codex/bin/person.sh +13 -2
  250. package/runtime/codex/bin/pi-render-spec.mjs +0 -1
  251. package/runtime/codex/bin/pi-spirit-discovery.mjs +34 -0
  252. package/runtime/codex/bin/post-update.sh +181 -0
  253. package/runtime/codex/bin/prime-render-spec.mjs +0 -1
  254. package/runtime/codex/bin/publish-artifact.sh +89 -42
  255. package/runtime/codex/bin/qa-inventory.sh +2 -2
  256. package/runtime/codex/bin/quest.sh +1 -1
  257. package/runtime/codex/bin/records.sh +11 -0
  258. package/runtime/codex/bin/reflexes/05-vitals.sh +9 -0
  259. package/runtime/codex/bin/reflexes/10-open-items.sh +12 -0
  260. package/runtime/codex/bin/reflexes/15-retrieval.sh +8 -0
  261. package/runtime/codex/bin/reflexes/20-nightly.sh +100 -0
  262. package/runtime/codex/bin/reflexes/20-sandbox.sh +85 -0
  263. package/runtime/codex/bin/reflexes/30-cost.py +116 -0
  264. package/runtime/codex/bin/reflexes/40-shells.py +51 -0
  265. package/runtime/codex/bin/reflexes/README.md +61 -0
  266. package/runtime/codex/bin/reflexes.sh +7 -0
  267. package/runtime/codex/bin/runtime-identity.sh +140 -42
  268. package/runtime/codex/bin/screenshot.sh +77 -0
  269. package/runtime/codex/bin/scroll.sh +1 -1
  270. package/runtime/codex/bin/search.sh +31 -5
  271. package/runtime/codex/bin/session-autosave.sh +6 -3
  272. package/runtime/codex/bin/session-id.sh +147 -0
  273. package/runtime/codex/bin/session-log.sh +19 -0
  274. package/runtime/codex/bin/session-record.sh +26 -0
  275. package/runtime/codex/bin/settings.sh +13 -8
  276. package/runtime/codex/bin/spirit-discovery-claude.sh +4 -0
  277. package/runtime/codex/bin/spirit-discovery-codex.sh +4 -0
  278. package/runtime/codex/bin/spirit-discovery-pi.sh +4 -0
  279. package/runtime/codex/bin/spirit-discovery-prime.sh +4 -0
  280. package/runtime/codex/bin/spirit-discovery.sh +4 -0
  281. package/runtime/codex/bin/startup-check.sh +1 -1
  282. package/runtime/codex/bin/telemetry.sh +11 -4
  283. package/runtime/codex/bin/test-baseline.sh +33 -5
  284. package/runtime/codex/bin/todo.sh +1 -1
  285. package/runtime/codex/bin/worktree-create.sh +15 -45
  286. package/runtime/codex/bin/worktree.sh +6 -0
  287. package/runtime/codex/docs/spirit-discovery.md +96 -0
  288. package/runtime/codex/egregore_runtime/__init__.py +18 -12
  289. package/runtime/codex/egregore_runtime/access.py +608 -0
  290. package/runtime/codex/egregore_runtime/access_cli.py +190 -0
  291. package/runtime/codex/egregore_runtime/adapters/invitation.py +5 -3
  292. package/runtime/codex/egregore_runtime/adapters/qmd.py +521 -47
  293. package/runtime/codex/egregore_runtime/admin_entry.py +56 -0
  294. package/runtime/codex/egregore_runtime/artifacts.py +222 -16
  295. package/runtime/codex/egregore_runtime/contracts.py +27 -0
  296. package/runtime/codex/egregore_runtime/eligibility.py +5 -12
  297. package/runtime/codex/egregore_runtime/episode_binding.py +16 -5
  298. package/runtime/codex/egregore_runtime/github_issues.py +2 -2
  299. package/runtime/codex/egregore_runtime/handoff_lookup.py +9 -20
  300. package/runtime/codex/egregore_runtime/harness_cli.py +674 -149
  301. package/runtime/codex/egregore_runtime/held.py +2436 -0
  302. package/runtime/codex/egregore_runtime/hosted_api.py +137 -0
  303. package/runtime/codex/egregore_runtime/identity.py +196 -65
  304. package/runtime/codex/egregore_runtime/identity_transfer.py +6 -2
  305. package/runtime/codex/egregore_runtime/ingest_cli.py +2 -2
  306. package/runtime/codex/egregore_runtime/ingest_index_cli.py +4 -16
  307. package/runtime/codex/egregore_runtime/installation.py +119 -0
  308. package/runtime/codex/egregore_runtime/investigation.py +64 -41
  309. package/runtime/codex/egregore_runtime/investigation_guidance.py +16 -11
  310. package/runtime/codex/egregore_runtime/issue_cli.py +51 -32
  311. package/runtime/codex/egregore_runtime/issue_reporting.py +4 -3
  312. package/runtime/codex/egregore_runtime/issue_triage_service.py +2 -2
  313. package/runtime/codex/egregore_runtime/issues.py +12 -6
  314. package/runtime/codex/egregore_runtime/knowledge.py +331 -5
  315. package/runtime/codex/egregore_runtime/knowledge_cli.py +57 -17
  316. package/runtime/codex/egregore_runtime/lifecycle.py +88 -22
  317. package/runtime/codex/egregore_runtime/lifecycle_cli.py +21 -13
  318. package/runtime/codex/egregore_runtime/line_ids.py +10 -0
  319. package/runtime/codex/egregore_runtime/memory_push.py +349 -0
  320. package/runtime/codex/egregore_runtime/observe.py +64 -25
  321. package/runtime/codex/egregore_runtime/observers.py +19 -0
  322. package/runtime/codex/egregore_runtime/optional_modules.py +13 -0
  323. package/runtime/codex/egregore_runtime/outputs_cli.py +321 -0
  324. package/runtime/codex/egregore_runtime/policy.py +651 -24
  325. package/runtime/codex/egregore_runtime/private_result.py +2 -1
  326. package/runtime/codex/egregore_runtime/projection.py +946 -0
  327. package/runtime/codex/egregore_runtime/quest_cli.py +20 -23
  328. package/runtime/codex/egregore_runtime/question_cli.py +15 -11
  329. package/runtime/codex/egregore_runtime/questions.py +10 -10
  330. package/runtime/codex/egregore_runtime/quests.py +10 -10
  331. package/runtime/codex/egregore_runtime/record_publish.py +548 -0
  332. package/runtime/codex/egregore_runtime/record_subject.py +564 -0
  333. package/runtime/codex/egregore_runtime/research_ingest.py +2 -4
  334. package/runtime/codex/egregore_runtime/runtime.py +169 -60
  335. package/runtime/codex/egregore_runtime/sandbox.py +194 -0
  336. package/runtime/codex/egregore_runtime/scroll_cli.py +22 -32
  337. package/runtime/codex/egregore_runtime/scrolls.py +23 -15
  338. package/runtime/codex/egregore_runtime/shadow.py +262 -0
  339. package/runtime/codex/egregore_runtime/spirit_discovery.py +487 -0
  340. package/runtime/codex/egregore_runtime/spirit_discovery_cli.py +25 -0
  341. package/runtime/codex/egregore_runtime/spirit_discovery_transport.py +18 -0
  342. package/runtime/codex/egregore_runtime/status.py +101 -44
  343. package/runtime/codex/egregore_runtime/status_cli.py +13 -5
  344. package/runtime/codex/egregore_runtime/sync.py +39 -21
  345. package/runtime/codex/egregore_runtime/taste.py +934 -0
  346. package/runtime/codex/egregore_runtime/taste_cli.py +242 -0
  347. package/runtime/codex/egregore_runtime/taste_rules.py +91 -0
  348. package/runtime/codex/egregore_runtime/telemetry.py +26 -3
  349. package/runtime/codex/egregore_runtime/todo_cli.py +15 -12
  350. package/runtime/codex/egregore_runtime/todos.py +3 -2
  351. package/runtime/codex/egregore_runtime/upgrade.py +85 -58
  352. package/runtime/codex/egregore_runtime/writeback.py +330 -24
  353. package/runtime/codex/manifest.json +66 -5
  354. package/runtime/pi/.claude/context/handoff-claiming.md +32 -0
  355. package/runtime/pi/.claude/context/notification-consent.md +12 -9
  356. package/runtime/pi/.claude/skills/view/SKILL.md +438 -0
  357. package/runtime/pi/.codex/hooks.json +11 -0
  358. package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
  359. package/runtime/pi/.codex/skills/records/SKILL.md +29 -0
  360. package/runtime/pi/.codex/skills/summon/SKILL.md +1 -1
  361. package/runtime/pi/.codex/skills/view/assets/compose-scaffold.html +19 -13
  362. package/runtime/pi/.codex/spec-manifest.json +13 -19
  363. package/runtime/pi/.pi/APPEND_SYSTEM.md +53 -99
  364. package/runtime/pi/.pi/extensions/egregore.ts +13 -1
  365. package/runtime/pi/.pi/spec-manifest.json +2 -2
  366. package/runtime/pi/AGENTS.md +54 -105
  367. package/runtime/pi/bin/agent.sh +231 -7
  368. package/runtime/pi/bin/api-call.sh +44 -23
  369. package/runtime/pi/bin/artifact-register.sh +7 -1
  370. package/runtime/pi/bin/artifact-writeback.sh +1 -1
  371. package/runtime/pi/bin/artifacts.sh +66 -265
  372. package/runtime/pi/bin/attendant.sh +4 -1
  373. package/runtime/pi/bin/boundary-guard.cjs +1848 -0
  374. package/runtime/pi/bin/boundary-hook.sh +41 -0
  375. package/runtime/pi/bin/capture-run.sh +32 -2
  376. package/runtime/pi/bin/codex-render-spec.mjs +24 -46
  377. package/runtime/pi/bin/codex-session-start.sh +19 -0
  378. package/runtime/pi/bin/codex-skill-render.mjs +18 -0
  379. package/runtime/pi/bin/config-get.sh +10 -1
  380. package/runtime/pi/bin/connect-refresh.sh +16 -0
  381. package/runtime/pi/bin/corpus_map.py +5 -0
  382. package/runtime/pi/bin/data/capabilities/pi.json +1458 -0
  383. package/runtime/pi/bin/genui.sh +19 -0
  384. package/runtime/pi/bin/graph-batch.sh +1 -1
  385. package/runtime/pi/bin/graph-op.sh +14 -0
  386. package/runtime/pi/bin/graph.sh +1 -1
  387. package/runtime/pi/bin/handoff-pr-backfill.sh +1 -1
  388. package/runtime/pi/bin/handoff-run.sh +11 -6
  389. package/runtime/pi/bin/ingest-item.sh +1 -1
  390. package/runtime/pi/bin/ingest-surface.html +22 -4
  391. package/runtime/pi/bin/issue.sh +1 -1
  392. package/runtime/pi/bin/knowledge.sh +1 -1
  393. package/runtime/pi/bin/lib/card-delivery.sh +329 -0
  394. package/runtime/pi/bin/lib/config.sh +148 -3
  395. package/runtime/pi/bin/lib/context.sh +38 -67
  396. package/runtime/pi/bin/lib/genui-entry.py +36 -0
  397. package/runtime/pi/bin/lib/git-message.sh +25 -6
  398. package/runtime/pi/bin/lib/git-sync.sh +12 -4
  399. package/runtime/pi/bin/lib/greeting.sh +255 -28
  400. package/runtime/pi/bin/lib/handoff_meta.py +294 -0
  401. package/runtime/pi/bin/lib/health-footer.sh +83 -2
  402. package/runtime/pi/bin/lib/identity.sh +31 -10
  403. package/runtime/pi/bin/lib/instance-registry.sh +71 -0
  404. package/runtime/pi/bin/lib/local_ci_receipt.py +249 -0
  405. package/runtime/pi/bin/lib/metrics.sh +121 -8
  406. package/runtime/pi/bin/lib/notices.sh +36 -0
  407. package/runtime/pi/bin/lib/record_outcomes.py +729 -0
  408. package/runtime/pi/bin/lib/reflexes.py +267 -0
  409. package/runtime/pi/bin/lib/retrieval_scorecard.py +624 -0
  410. package/runtime/pi/bin/lib/session-record-prompt.txt +18 -0
  411. package/runtime/pi/bin/lib/session_record.py +3747 -0
  412. package/runtime/pi/bin/lib/session_trail.py +1983 -0
  413. package/runtime/pi/bin/lib/settings-drift.sh +8 -5
  414. package/runtime/pi/bin/lib/startup-restart.sh +41 -0
  415. package/runtime/pi/bin/lib/worktree-links.sh +92 -0
  416. package/runtime/pi/bin/memory-push.sh +6 -0
  417. package/runtime/pi/bin/merge-gate.sh +498 -0
  418. package/runtime/pi/bin/notify.sh +5 -2
  419. package/runtime/pi/bin/page-access.sh +103 -0
  420. package/runtime/pi/bin/person.sh +13 -2
  421. package/runtime/pi/bin/pi-branch-policy.mjs +37 -0
  422. package/runtime/pi/bin/pi-observe-context.mjs +97 -4
  423. package/runtime/pi/bin/pi-render-spec.mjs +0 -1
  424. package/runtime/pi/bin/pi-session-start.sh +4 -1
  425. package/runtime/pi/bin/pi-spirit-discovery.mjs +34 -0
  426. package/runtime/pi/bin/post-update.sh +181 -0
  427. package/runtime/pi/bin/prime-render-spec.mjs +0 -1
  428. package/runtime/pi/bin/publish-artifact.sh +89 -42
  429. package/runtime/pi/bin/qa-inventory.sh +2 -2
  430. package/runtime/pi/bin/quest.sh +1 -1
  431. package/runtime/pi/bin/records.sh +11 -0
  432. package/runtime/pi/bin/reflexes/05-vitals.sh +9 -0
  433. package/runtime/pi/bin/reflexes/10-open-items.sh +12 -0
  434. package/runtime/pi/bin/reflexes/15-retrieval.sh +8 -0
  435. package/runtime/pi/bin/reflexes/20-nightly.sh +100 -0
  436. package/runtime/pi/bin/reflexes/20-sandbox.sh +85 -0
  437. package/runtime/pi/bin/reflexes/30-cost.py +116 -0
  438. package/runtime/pi/bin/reflexes/40-shells.py +51 -0
  439. package/runtime/pi/bin/reflexes/README.md +61 -0
  440. package/runtime/pi/bin/reflexes.sh +7 -0
  441. package/runtime/pi/bin/runtime-identity.sh +140 -42
  442. package/runtime/pi/bin/screenshot.sh +77 -0
  443. package/runtime/pi/bin/scroll.sh +1 -1
  444. package/runtime/pi/bin/search.sh +31 -5
  445. package/runtime/pi/bin/session-autosave.sh +6 -3
  446. package/runtime/pi/bin/session-id.sh +147 -0
  447. package/runtime/pi/bin/session-log.sh +19 -0
  448. package/runtime/pi/bin/session-record.sh +26 -0
  449. package/runtime/pi/bin/settings.sh +13 -8
  450. package/runtime/pi/bin/spirit-discovery-claude.sh +4 -0
  451. package/runtime/pi/bin/spirit-discovery-codex.sh +4 -0
  452. package/runtime/pi/bin/spirit-discovery-pi.sh +4 -0
  453. package/runtime/pi/bin/spirit-discovery-prime.sh +4 -0
  454. package/runtime/pi/bin/spirit-discovery.sh +4 -0
  455. package/runtime/pi/bin/startup-check.sh +1 -1
  456. package/runtime/pi/bin/telemetry.sh +11 -4
  457. package/runtime/pi/bin/test-baseline.sh +33 -5
  458. package/runtime/pi/bin/todo.sh +1 -1
  459. package/runtime/pi/bin/worktree-create.sh +15 -45
  460. package/runtime/pi/bin/worktree.sh +6 -0
  461. package/runtime/pi/docs/spirit-discovery.md +96 -0
  462. package/runtime/pi/egregore_runtime/__init__.py +18 -12
  463. package/runtime/pi/egregore_runtime/access.py +608 -0
  464. package/runtime/pi/egregore_runtime/access_cli.py +190 -0
  465. package/runtime/pi/egregore_runtime/adapters/invitation.py +5 -3
  466. package/runtime/pi/egregore_runtime/adapters/qmd.py +521 -47
  467. package/runtime/pi/egregore_runtime/admin_entry.py +56 -0
  468. package/runtime/pi/egregore_runtime/artifacts.py +222 -16
  469. package/runtime/pi/egregore_runtime/contracts.py +27 -0
  470. package/runtime/pi/egregore_runtime/eligibility.py +5 -12
  471. package/runtime/pi/egregore_runtime/episode_binding.py +16 -5
  472. package/runtime/pi/egregore_runtime/github_issues.py +2 -2
  473. package/runtime/pi/egregore_runtime/handoff_lookup.py +9 -20
  474. package/runtime/pi/egregore_runtime/harness_cli.py +674 -149
  475. package/runtime/pi/egregore_runtime/held.py +2436 -0
  476. package/runtime/pi/egregore_runtime/hosted_api.py +137 -0
  477. package/runtime/pi/egregore_runtime/identity.py +196 -65
  478. package/runtime/pi/egregore_runtime/identity_transfer.py +6 -2
  479. package/runtime/pi/egregore_runtime/ingest_cli.py +2 -2
  480. package/runtime/pi/egregore_runtime/ingest_index_cli.py +4 -16
  481. package/runtime/pi/egregore_runtime/installation.py +119 -0
  482. package/runtime/pi/egregore_runtime/investigation.py +64 -41
  483. package/runtime/pi/egregore_runtime/investigation_guidance.py +16 -11
  484. package/runtime/pi/egregore_runtime/issue_cli.py +51 -32
  485. package/runtime/pi/egregore_runtime/issue_reporting.py +4 -3
  486. package/runtime/pi/egregore_runtime/issue_triage_service.py +2 -2
  487. package/runtime/pi/egregore_runtime/issues.py +12 -6
  488. package/runtime/pi/egregore_runtime/knowledge.py +331 -5
  489. package/runtime/pi/egregore_runtime/knowledge_cli.py +57 -17
  490. package/runtime/pi/egregore_runtime/lifecycle.py +88 -22
  491. package/runtime/pi/egregore_runtime/lifecycle_cli.py +21 -13
  492. package/runtime/pi/egregore_runtime/line_ids.py +10 -0
  493. package/runtime/pi/egregore_runtime/memory_push.py +349 -0
  494. package/runtime/pi/egregore_runtime/observe.py +64 -25
  495. package/runtime/pi/egregore_runtime/observers.py +19 -0
  496. package/runtime/pi/egregore_runtime/optional_modules.py +13 -0
  497. package/runtime/pi/egregore_runtime/outputs_cli.py +321 -0
  498. package/runtime/pi/egregore_runtime/policy.py +651 -24
  499. package/runtime/pi/egregore_runtime/private_result.py +2 -1
  500. package/runtime/pi/egregore_runtime/projection.py +946 -0
  501. package/runtime/pi/egregore_runtime/quest_cli.py +20 -23
  502. package/runtime/pi/egregore_runtime/question_cli.py +15 -11
  503. package/runtime/pi/egregore_runtime/questions.py +10 -10
  504. package/runtime/pi/egregore_runtime/quests.py +10 -10
  505. package/runtime/pi/egregore_runtime/record_publish.py +548 -0
  506. package/runtime/pi/egregore_runtime/record_subject.py +564 -0
  507. package/runtime/pi/egregore_runtime/research_ingest.py +2 -4
  508. package/runtime/pi/egregore_runtime/runtime.py +169 -60
  509. package/runtime/pi/egregore_runtime/sandbox.py +194 -0
  510. package/runtime/pi/egregore_runtime/scroll_cli.py +22 -32
  511. package/runtime/pi/egregore_runtime/scrolls.py +23 -15
  512. package/runtime/pi/egregore_runtime/shadow.py +262 -0
  513. package/runtime/pi/egregore_runtime/spirit_discovery.py +487 -0
  514. package/runtime/pi/egregore_runtime/spirit_discovery_cli.py +25 -0
  515. package/runtime/pi/egregore_runtime/spirit_discovery_transport.py +18 -0
  516. package/runtime/pi/egregore_runtime/status.py +101 -44
  517. package/runtime/pi/egregore_runtime/status_cli.py +13 -5
  518. package/runtime/pi/egregore_runtime/sync.py +39 -21
  519. package/runtime/pi/egregore_runtime/taste.py +934 -0
  520. package/runtime/pi/egregore_runtime/taste_cli.py +242 -0
  521. package/runtime/pi/egregore_runtime/taste_rules.py +91 -0
  522. package/runtime/pi/egregore_runtime/telemetry.py +26 -3
  523. package/runtime/pi/egregore_runtime/todo_cli.py +15 -12
  524. package/runtime/pi/egregore_runtime/todos.py +3 -2
  525. package/runtime/pi/egregore_runtime/upgrade.py +85 -58
  526. package/runtime/pi/egregore_runtime/writeback.py +330 -24
  527. package/runtime/pi/manifest.json +66 -5
  528. package/runtime/prime/.claude/context/handoff-claiming.md +32 -0
  529. package/runtime/prime/.claude/context/notification-consent.md +12 -9
  530. package/runtime/prime/.claude/skills/view/SKILL.md +438 -0
  531. package/runtime/prime/.codex/hooks.json +11 -0
  532. package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
  533. package/runtime/prime/.codex/skills/records/SKILL.md +29 -0
  534. package/runtime/prime/.codex/skills/summon/SKILL.md +1 -1
  535. package/runtime/prime/.codex/skills/view/assets/compose-scaffold.html +19 -13
  536. package/runtime/prime/.codex/spec-manifest.json +13 -19
  537. package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +53 -99
  538. package/runtime/prime/.prime/agent/extensions/egregore.ts +14 -1
  539. package/runtime/prime/.prime/agent/skills/egregore/SKILL.md +14 -6
  540. package/runtime/prime/.prime/agent/skills/egregore/src/egregore/__init__.py +66 -1
  541. package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
  542. package/runtime/prime/AGENTS.md +54 -105
  543. package/runtime/prime/bin/agent.sh +231 -7
  544. package/runtime/prime/bin/api-call.sh +44 -23
  545. package/runtime/prime/bin/artifact-register.sh +7 -1
  546. package/runtime/prime/bin/artifact-writeback.sh +1 -1
  547. package/runtime/prime/bin/artifacts.sh +66 -265
  548. package/runtime/prime/bin/attendant.sh +4 -1
  549. package/runtime/prime/bin/boundary-guard.cjs +1848 -0
  550. package/runtime/prime/bin/boundary-hook.sh +41 -0
  551. package/runtime/prime/bin/capture-run.sh +32 -2
  552. package/runtime/prime/bin/codex-render-spec.mjs +24 -46
  553. package/runtime/prime/bin/codex-session-start.sh +19 -0
  554. package/runtime/prime/bin/codex-skill-render.mjs +18 -0
  555. package/runtime/prime/bin/config-get.sh +10 -1
  556. package/runtime/prime/bin/connect-refresh.sh +16 -0
  557. package/runtime/prime/bin/corpus_map.py +5 -0
  558. package/runtime/prime/bin/data/capabilities/prime.json +1458 -0
  559. package/runtime/prime/bin/genui.sh +19 -0
  560. package/runtime/prime/bin/graph-batch.sh +1 -1
  561. package/runtime/prime/bin/graph-op.sh +14 -0
  562. package/runtime/prime/bin/graph.sh +1 -1
  563. package/runtime/prime/bin/handoff-pr-backfill.sh +1 -1
  564. package/runtime/prime/bin/handoff-run.sh +11 -6
  565. package/runtime/prime/bin/ingest-item.sh +1 -1
  566. package/runtime/prime/bin/ingest-surface.html +22 -4
  567. package/runtime/prime/bin/issue.sh +1 -1
  568. package/runtime/prime/bin/knowledge.sh +1 -1
  569. package/runtime/prime/bin/lib/card-delivery.sh +329 -0
  570. package/runtime/prime/bin/lib/config.sh +148 -3
  571. package/runtime/prime/bin/lib/context.sh +38 -67
  572. package/runtime/prime/bin/lib/genui-entry.py +36 -0
  573. package/runtime/prime/bin/lib/git-message.sh +25 -6
  574. package/runtime/prime/bin/lib/git-sync.sh +12 -4
  575. package/runtime/prime/bin/lib/greeting.sh +255 -28
  576. package/runtime/prime/bin/lib/handoff_meta.py +294 -0
  577. package/runtime/prime/bin/lib/health-footer.sh +83 -2
  578. package/runtime/prime/bin/lib/identity.sh +31 -10
  579. package/runtime/prime/bin/lib/instance-registry.sh +71 -0
  580. package/runtime/prime/bin/lib/local_ci_receipt.py +249 -0
  581. package/runtime/prime/bin/lib/metrics.sh +121 -8
  582. package/runtime/prime/bin/lib/notices.sh +36 -0
  583. package/runtime/prime/bin/lib/record_outcomes.py +729 -0
  584. package/runtime/prime/bin/lib/reflexes.py +267 -0
  585. package/runtime/prime/bin/lib/retrieval_scorecard.py +624 -0
  586. package/runtime/prime/bin/lib/session-record-prompt.txt +18 -0
  587. package/runtime/prime/bin/lib/session_record.py +3747 -0
  588. package/runtime/prime/bin/lib/session_trail.py +1983 -0
  589. package/runtime/prime/bin/lib/settings-drift.sh +8 -5
  590. package/runtime/prime/bin/lib/startup-restart.sh +41 -0
  591. package/runtime/prime/bin/lib/worktree-links.sh +92 -0
  592. package/runtime/prime/bin/memory-push.sh +6 -0
  593. package/runtime/prime/bin/merge-gate.sh +498 -0
  594. package/runtime/prime/bin/notify.sh +5 -2
  595. package/runtime/prime/bin/page-access.sh +103 -0
  596. package/runtime/prime/bin/person.sh +13 -2
  597. package/runtime/prime/bin/pi-branch-policy.mjs +37 -0
  598. package/runtime/prime/bin/pi-observe-context.mjs +97 -4
  599. package/runtime/prime/bin/pi-render-spec.mjs +0 -1
  600. package/runtime/prime/bin/pi-spirit-discovery.mjs +34 -0
  601. package/runtime/prime/bin/post-update.sh +181 -0
  602. package/runtime/prime/bin/prime-render-spec.mjs +0 -1
  603. package/runtime/prime/bin/prime-session-start.sh +3 -1
  604. package/runtime/prime/bin/publish-artifact.sh +89 -42
  605. package/runtime/prime/bin/qa-inventory.sh +2 -2
  606. package/runtime/prime/bin/quest.sh +1 -1
  607. package/runtime/prime/bin/records.sh +11 -0
  608. package/runtime/prime/bin/reflexes/05-vitals.sh +9 -0
  609. package/runtime/prime/bin/reflexes/10-open-items.sh +12 -0
  610. package/runtime/prime/bin/reflexes/15-retrieval.sh +8 -0
  611. package/runtime/prime/bin/reflexes/20-nightly.sh +100 -0
  612. package/runtime/prime/bin/reflexes/20-sandbox.sh +85 -0
  613. package/runtime/prime/bin/reflexes/30-cost.py +116 -0
  614. package/runtime/prime/bin/reflexes/40-shells.py +51 -0
  615. package/runtime/prime/bin/reflexes/README.md +61 -0
  616. package/runtime/prime/bin/reflexes.sh +7 -0
  617. package/runtime/prime/bin/runtime-identity.sh +140 -42
  618. package/runtime/prime/bin/screenshot.sh +77 -0
  619. package/runtime/prime/bin/scroll.sh +1 -1
  620. package/runtime/prime/bin/search.sh +31 -5
  621. package/runtime/prime/bin/session-autosave.sh +6 -3
  622. package/runtime/prime/bin/session-id.sh +147 -0
  623. package/runtime/prime/bin/session-log.sh +19 -0
  624. package/runtime/prime/bin/session-record.sh +26 -0
  625. package/runtime/prime/bin/settings.sh +13 -8
  626. package/runtime/prime/bin/spirit-discovery-claude.sh +4 -0
  627. package/runtime/prime/bin/spirit-discovery-codex.sh +4 -0
  628. package/runtime/prime/bin/spirit-discovery-pi.sh +4 -0
  629. package/runtime/prime/bin/spirit-discovery-prime.sh +4 -0
  630. package/runtime/prime/bin/spirit-discovery.sh +4 -0
  631. package/runtime/prime/bin/startup-check.sh +1 -1
  632. package/runtime/prime/bin/telemetry.sh +11 -4
  633. package/runtime/prime/bin/test-baseline.sh +33 -5
  634. package/runtime/prime/bin/todo.sh +1 -1
  635. package/runtime/prime/bin/worktree-create.sh +15 -45
  636. package/runtime/prime/bin/worktree.sh +6 -0
  637. package/runtime/prime/docs/spirit-discovery.md +96 -0
  638. package/runtime/prime/egregore_runtime/__init__.py +18 -12
  639. package/runtime/prime/egregore_runtime/access.py +608 -0
  640. package/runtime/prime/egregore_runtime/access_cli.py +190 -0
  641. package/runtime/prime/egregore_runtime/adapters/invitation.py +5 -3
  642. package/runtime/prime/egregore_runtime/adapters/qmd.py +521 -47
  643. package/runtime/prime/egregore_runtime/admin_entry.py +56 -0
  644. package/runtime/prime/egregore_runtime/artifacts.py +222 -16
  645. package/runtime/prime/egregore_runtime/contracts.py +27 -0
  646. package/runtime/prime/egregore_runtime/eligibility.py +5 -12
  647. package/runtime/prime/egregore_runtime/episode_binding.py +16 -5
  648. package/runtime/prime/egregore_runtime/github_issues.py +2 -2
  649. package/runtime/prime/egregore_runtime/handoff_lookup.py +9 -20
  650. package/runtime/prime/egregore_runtime/harness_cli.py +674 -149
  651. package/runtime/prime/egregore_runtime/held.py +2436 -0
  652. package/runtime/prime/egregore_runtime/hosted_api.py +137 -0
  653. package/runtime/prime/egregore_runtime/identity.py +196 -65
  654. package/runtime/prime/egregore_runtime/identity_transfer.py +6 -2
  655. package/runtime/prime/egregore_runtime/ingest_cli.py +2 -2
  656. package/runtime/prime/egregore_runtime/ingest_index_cli.py +4 -16
  657. package/runtime/prime/egregore_runtime/installation.py +119 -0
  658. package/runtime/prime/egregore_runtime/investigation.py +64 -41
  659. package/runtime/prime/egregore_runtime/investigation_guidance.py +16 -11
  660. package/runtime/prime/egregore_runtime/issue_cli.py +51 -32
  661. package/runtime/prime/egregore_runtime/issue_reporting.py +4 -3
  662. package/runtime/prime/egregore_runtime/issue_triage_service.py +2 -2
  663. package/runtime/prime/egregore_runtime/issues.py +12 -6
  664. package/runtime/prime/egregore_runtime/knowledge.py +331 -5
  665. package/runtime/prime/egregore_runtime/knowledge_cli.py +57 -17
  666. package/runtime/prime/egregore_runtime/lifecycle.py +88 -22
  667. package/runtime/prime/egregore_runtime/lifecycle_cli.py +21 -13
  668. package/runtime/prime/egregore_runtime/line_ids.py +10 -0
  669. package/runtime/prime/egregore_runtime/memory_push.py +349 -0
  670. package/runtime/prime/egregore_runtime/observe.py +64 -25
  671. package/runtime/prime/egregore_runtime/observers.py +19 -0
  672. package/runtime/prime/egregore_runtime/optional_modules.py +13 -0
  673. package/runtime/prime/egregore_runtime/outputs_cli.py +321 -0
  674. package/runtime/prime/egregore_runtime/policy.py +651 -24
  675. package/runtime/prime/egregore_runtime/private_result.py +2 -1
  676. package/runtime/prime/egregore_runtime/projection.py +946 -0
  677. package/runtime/prime/egregore_runtime/quest_cli.py +20 -23
  678. package/runtime/prime/egregore_runtime/question_cli.py +15 -11
  679. package/runtime/prime/egregore_runtime/questions.py +10 -10
  680. package/runtime/prime/egregore_runtime/quests.py +10 -10
  681. package/runtime/prime/egregore_runtime/record_publish.py +548 -0
  682. package/runtime/prime/egregore_runtime/record_subject.py +564 -0
  683. package/runtime/prime/egregore_runtime/research_ingest.py +2 -4
  684. package/runtime/prime/egregore_runtime/runtime.py +169 -60
  685. package/runtime/prime/egregore_runtime/sandbox.py +194 -0
  686. package/runtime/prime/egregore_runtime/scroll_cli.py +22 -32
  687. package/runtime/prime/egregore_runtime/scrolls.py +23 -15
  688. package/runtime/prime/egregore_runtime/shadow.py +262 -0
  689. package/runtime/prime/egregore_runtime/spirit_discovery.py +487 -0
  690. package/runtime/prime/egregore_runtime/spirit_discovery_cli.py +25 -0
  691. package/runtime/prime/egregore_runtime/spirit_discovery_transport.py +18 -0
  692. package/runtime/prime/egregore_runtime/status.py +101 -44
  693. package/runtime/prime/egregore_runtime/status_cli.py +13 -5
  694. package/runtime/prime/egregore_runtime/sync.py +39 -21
  695. package/runtime/prime/egregore_runtime/taste.py +934 -0
  696. package/runtime/prime/egregore_runtime/taste_cli.py +242 -0
  697. package/runtime/prime/egregore_runtime/taste_rules.py +91 -0
  698. package/runtime/prime/egregore_runtime/telemetry.py +26 -3
  699. package/runtime/prime/egregore_runtime/todo_cli.py +15 -12
  700. package/runtime/prime/egregore_runtime/todos.py +3 -2
  701. package/runtime/prime/egregore_runtime/upgrade.py +85 -58
  702. package/runtime/prime/egregore_runtime/writeback.py +330 -24
  703. package/runtime/prime/manifest.json +66 -5
  704. package/runtime/claude/bin/thread.sh +0 -9
  705. package/runtime/claude/egregore_runtime/admin_gate.py +0 -102
  706. package/runtime/claude/egregore_runtime/thread_cli.py +0 -173
  707. package/runtime/claude/egregore_runtime/threads.py +0 -521
  708. package/runtime/codex/bin/thread.sh +0 -9
  709. package/runtime/codex/egregore_runtime/admin_gate.py +0 -102
  710. package/runtime/codex/egregore_runtime/thread_cli.py +0 -173
  711. package/runtime/codex/egregore_runtime/threads.py +0 -521
  712. package/runtime/pi/bin/thread.sh +0 -9
  713. package/runtime/pi/egregore_runtime/admin_gate.py +0 -102
  714. package/runtime/pi/egregore_runtime/thread_cli.py +0 -173
  715. package/runtime/pi/egregore_runtime/threads.py +0 -521
  716. package/runtime/prime/bin/thread.sh +0 -9
  717. package/runtime/prime/egregore_runtime/admin_gate.py +0 -102
  718. package/runtime/prime/egregore_runtime/thread_cli.py +0 -173
  719. package/runtime/prime/egregore_runtime/threads.py +0 -521
@@ -0,0 +1,1480 @@
1
+ {
2
+ "schema": "egregore.capability-snapshot/v1",
3
+ "runtime": "claude",
4
+ "audience": "oss",
5
+ "provenance": "build-projection-unattested",
6
+ "items": [
7
+ {
8
+ "id": "artifacts.local",
9
+ "kind": "catalog-capability",
10
+ "summary": "Render local artifacts from Egregore data.",
11
+ "state_owner": "local artifact renderer",
12
+ "requires": [
13
+ "asset.design-system-vendor",
14
+ "npm.egregore-artifacts",
15
+ "skill.view"
16
+ ],
17
+ "files": [
18
+ ".claude/skills/view/SKILL.md",
19
+ ".claude/skills/view/compose-scaffold.html"
20
+ ],
21
+ "unmeasured_dependencies": [
22
+ "asset.design-system-vendor",
23
+ "npm.egregore-artifacts"
24
+ ],
25
+ "contract": "unknown",
26
+ "availability": "oss"
27
+ },
28
+ {
29
+ "id": "asset.design-system-vendor",
30
+ "kind": "catalog-component",
31
+ "summary": "Declared asset: asset.design-system-vendor",
32
+ "state_owner": "unknown",
33
+ "requires": [],
34
+ "files": [],
35
+ "unmeasured_dependencies": [
36
+ "asset.design-system-vendor"
37
+ ],
38
+ "contract": "unknown",
39
+ "availability": "oss"
40
+ },
41
+ {
42
+ "id": "asset.slack-app",
43
+ "kind": "catalog-component",
44
+ "summary": "Declared asset: asset.slack-app",
45
+ "state_owner": "unknown",
46
+ "requires": [],
47
+ "files": [],
48
+ "unmeasured_dependencies": [
49
+ "asset.slack-app"
50
+ ],
51
+ "contract": "unknown",
52
+ "availability": "oss"
53
+ },
54
+ {
55
+ "id": "connectors.notion",
56
+ "kind": "catalog-capability",
57
+ "summary": "Connect and ingest selected Notion content.",
58
+ "state_owner": "Notion connector and Runtime ingestion owners",
59
+ "requires": [
60
+ "skill.ingest-notion",
61
+ "skill.notion-connect"
62
+ ],
63
+ "files": [
64
+ ".claude/skills/ingest-notion/SKILL.md",
65
+ ".claude/skills/notion-connect/SKILL.md"
66
+ ],
67
+ "unmeasured_dependencies": [],
68
+ "contract": "unknown",
69
+ "availability": "oss"
70
+ },
71
+ {
72
+ "id": "emissary.memory-overlay",
73
+ "kind": "catalog-capability",
74
+ "summary": "Prepare portable emissary tasks with scoped memory context.",
75
+ "state_owner": "emissary package",
76
+ "requires": [
77
+ "npm.egregore-emissary",
78
+ "skill.emissary"
79
+ ],
80
+ "files": [
81
+ ".claude/skills/emissary/SKILL.md"
82
+ ],
83
+ "unmeasured_dependencies": [
84
+ "npm.egregore-emissary"
85
+ ],
86
+ "contract": "unknown",
87
+ "availability": "oss"
88
+ },
89
+ {
90
+ "id": "npm.create-egregore",
91
+ "kind": "catalog-component",
92
+ "summary": "Declared npm: npm.create-egregore",
93
+ "state_owner": "unknown",
94
+ "requires": [],
95
+ "files": [],
96
+ "unmeasured_dependencies": [
97
+ "npm.create-egregore"
98
+ ],
99
+ "contract": "unknown",
100
+ "availability": "oss"
101
+ },
102
+ {
103
+ "id": "npm.egregore-artifacts",
104
+ "kind": "catalog-component",
105
+ "summary": "Declared npm: npm.egregore-artifacts",
106
+ "state_owner": "unknown",
107
+ "requires": [],
108
+ "files": [],
109
+ "unmeasured_dependencies": [
110
+ "npm.egregore-artifacts"
111
+ ],
112
+ "contract": "unknown",
113
+ "availability": "oss"
114
+ },
115
+ {
116
+ "id": "npm.egregore-emissary",
117
+ "kind": "catalog-component",
118
+ "summary": "Declared npm: npm.egregore-emissary",
119
+ "state_owner": "unknown",
120
+ "requires": [],
121
+ "files": [],
122
+ "unmeasured_dependencies": [
123
+ "npm.egregore-emissary"
124
+ ],
125
+ "contract": "unknown",
126
+ "availability": "oss"
127
+ },
128
+ {
129
+ "id": "npm.egregore-handoff",
130
+ "kind": "catalog-component",
131
+ "summary": "Declared npm: npm.egregore-handoff",
132
+ "state_owner": "unknown",
133
+ "requires": [],
134
+ "files": [],
135
+ "unmeasured_dependencies": [
136
+ "npm.egregore-handoff"
137
+ ],
138
+ "contract": "unknown",
139
+ "availability": "oss"
140
+ },
141
+ {
142
+ "id": "runtime.oss-core",
143
+ "kind": "catalog-capability",
144
+ "summary": "Local Egregore workflows and shared runtime mechanics.",
145
+ "state_owner": "local Runtime and installed workflow owners",
146
+ "requires": [
147
+ "npm.create-egregore",
148
+ "skill.activity",
149
+ "skill.announce",
150
+ "skill.archive",
151
+ "skill.checkup",
152
+ "skill.contribute",
153
+ "skill.dark-mode",
154
+ "skill.dashboard",
155
+ "skill.deep-reflect",
156
+ "skill.delete-user",
157
+ "skill.emissary",
158
+ "skill.handoff",
159
+ "skill.harvest",
160
+ "skill.ingest",
161
+ "skill.ingest-user-interview",
162
+ "skill.invite",
163
+ "skill.issue",
164
+ "skill.me",
165
+ "skill.meeting",
166
+ "skill.note",
167
+ "skill.onboarding",
168
+ "skill.quest",
169
+ "skill.reflect",
170
+ "skill.save",
171
+ "skill.slack-connect",
172
+ "skill.summon",
173
+ "skill.sync-repos",
174
+ "skill.telegram-connect",
175
+ "skill.telemetry",
176
+ "skill.test",
177
+ "skill.the-spiral",
178
+ "skill.tui-design",
179
+ "skill.tutorial",
180
+ "skill.update",
181
+ "skill.view",
182
+ "skill.visual-explain",
183
+ "skill.wrap"
184
+ ],
185
+ "files": [
186
+ ".claude/skills/activity/SKILL.md",
187
+ ".claude/skills/announce/SKILL.md",
188
+ ".claude/skills/archive/SKILL.md",
189
+ ".claude/skills/checkup/SKILL.md",
190
+ ".claude/skills/contribute/SKILL.md",
191
+ ".claude/skills/dark-mode/SKILL.md",
192
+ ".claude/skills/dashboard/SKILL.md",
193
+ ".claude/skills/deep-reflect/REPORT.md",
194
+ ".claude/skills/deep-reflect/RESEARCH.md",
195
+ ".claude/skills/deep-reflect/ROLES.md",
196
+ ".claude/skills/deep-reflect/SKILL.md",
197
+ ".claude/skills/delete-user/SKILL.md",
198
+ ".claude/skills/emissary/SKILL.md",
199
+ ".claude/skills/handoff/SKILL.md",
200
+ ".claude/skills/harvest/AUDIT.md",
201
+ ".claude/skills/harvest/FORMAT.md",
202
+ ".claude/skills/harvest/PROCESS.md",
203
+ ".claude/skills/harvest/QUESTION_PALETTE.md",
204
+ ".claude/skills/harvest/SKILL.md",
205
+ ".claude/skills/ingest-user-interview/SKILL.md",
206
+ ".claude/skills/ingest-user-interview/references/analysis-contract.md",
207
+ ".claude/skills/ingest/SKILL.md",
208
+ ".claude/skills/invite/SKILL.md",
209
+ ".claude/skills/issue/SKILL.md",
210
+ ".claude/skills/me/SKILL.md",
211
+ ".claude/skills/meeting/SKILL.md",
212
+ ".claude/skills/meeting/references/analysis-contract.md",
213
+ ".claude/skills/note/SKILL.md",
214
+ ".claude/skills/onboarding/SKILL.md",
215
+ ".claude/skills/quest/SKILL.md",
216
+ ".claude/skills/reflect/SKILL.md",
217
+ ".claude/skills/save/SKILL.md",
218
+ ".claude/skills/slack-connect/SKILL.md",
219
+ ".claude/skills/summon/SKILL.md",
220
+ ".claude/skills/sync-repos/SKILL.md",
221
+ ".claude/skills/telegram-connect/SKILL.md",
222
+ ".claude/skills/telemetry/SKILL.md",
223
+ ".claude/skills/test/SKILL.md",
224
+ ".claude/skills/the-spiral/SKILL.md",
225
+ ".claude/skills/tui-design/SKILL.md",
226
+ ".claude/skills/tutorial/SKILL.md",
227
+ ".claude/skills/update/SKILL.md",
228
+ ".claude/skills/view/SKILL.md",
229
+ ".claude/skills/view/compose-scaffold.html",
230
+ ".claude/skills/visual-explain/SKILL.md",
231
+ ".claude/skills/wrap/SKILL.md"
232
+ ],
233
+ "unmeasured_dependencies": [
234
+ "npm.create-egregore"
235
+ ],
236
+ "contract": "unknown",
237
+ "availability": "oss"
238
+ },
239
+ {
240
+ "id": "runtime.records",
241
+ "kind": "catalog-capability",
242
+ "summary": "Record each session's asks, decisions, open items and cost from its own transcript.",
243
+ "state_owner": "session records runtime and memory/sessions",
244
+ "requires": [
245
+ "skill.records",
246
+ "tool.spirit-publication-history",
247
+ "tool.spirit-record-presentation"
248
+ ],
249
+ "files": [
250
+ ".claude/skills/records/SKILL.md",
251
+ "egregore_runtime/record_publish.py",
252
+ "egregore_runtime/record_subject.py"
253
+ ],
254
+ "unmeasured_dependencies": [],
255
+ "contract": "unknown",
256
+ "availability": "oss"
257
+ },
258
+ {
259
+ "id": "skill.activity",
260
+ "kind": "catalog-component",
261
+ "summary": "Explicit Activity card only. Use when the user names /activity or directly asks to show, open, or render the Activity dashboard/card. Never use it to answer or synthesize what the team is focused on, busy with, prioritizing, or doing; analytical organizational questions use Search/Runtime QMD.",
262
+ "state_owner": "unknown",
263
+ "requires": [],
264
+ "files": [
265
+ ".claude/skills/activity/SKILL.md"
266
+ ],
267
+ "unmeasured_dependencies": [],
268
+ "contract": "unknown",
269
+ "availability": "oss"
270
+ },
271
+ {
272
+ "id": "skill.announce",
273
+ "kind": "catalog-component",
274
+ "summary": "Draft, preview, and explicitly send an Egregore group announcement. Use for /announce, telling the team something, or notifying everyone—not a direct message or structured handoff.",
275
+ "state_owner": "unknown",
276
+ "requires": [],
277
+ "files": [
278
+ ".claude/skills/announce/SKILL.md"
279
+ ],
280
+ "unmeasured_dependencies": [],
281
+ "contract": "unknown",
282
+ "availability": "oss"
283
+ },
284
+ {
285
+ "id": "skill.archive",
286
+ "kind": "catalog-component",
287
+ "summary": "Capture an effective prompting or steering technique as a reusable canonical pattern. Use when a prompt chain worked especially well; use /reflect for insight about the work and /note for a private thought.",
288
+ "state_owner": "unknown",
289
+ "requires": [],
290
+ "files": [
291
+ ".claude/skills/archive/SKILL.md"
292
+ ],
293
+ "unmeasured_dependencies": [],
294
+ "contract": "unknown",
295
+ "availability": "oss"
296
+ },
297
+ {
298
+ "id": "skill.branch",
299
+ "kind": "catalog-component",
300
+ "summary": "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.",
301
+ "state_owner": "unknown",
302
+ "requires": [],
303
+ "files": [
304
+ ".claude/skills/branch/SKILL.md"
305
+ ],
306
+ "unmeasured_dependencies": [],
307
+ "contract": "unknown",
308
+ "availability": "oss"
309
+ },
310
+ {
311
+ "id": "skill.checkup",
312
+ "kind": "catalog-component",
313
+ "summary": "Run diagnostics on an Egregore environment and render a health report, repairing safe local Runtime problems when possible. Use for /checkup, a health check, or when something is broken and the root cause is unclear.",
314
+ "state_owner": "unknown",
315
+ "requires": [],
316
+ "files": [
317
+ ".claude/skills/checkup/SKILL.md"
318
+ ],
319
+ "unmeasured_dependencies": [],
320
+ "contract": "unknown",
321
+ "availability": "oss"
322
+ },
323
+ {
324
+ "id": "skill.commit",
325
+ "kind": "catalog-component",
326
+ "summary": "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).",
327
+ "state_owner": "unknown",
328
+ "requires": [],
329
+ "files": [
330
+ ".claude/skills/commit/SKILL.md"
331
+ ],
332
+ "unmeasured_dependencies": [],
333
+ "contract": "unknown",
334
+ "availability": "oss"
335
+ },
336
+ {
337
+ "id": "skill.contribute",
338
+ "kind": "catalog-component",
339
+ "summary": "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).",
340
+ "state_owner": "unknown",
341
+ "requires": [],
342
+ "files": [
343
+ ".claude/skills/contribute/SKILL.md"
344
+ ],
345
+ "unmeasured_dependencies": [],
346
+ "contract": "unknown",
347
+ "availability": "oss"
348
+ },
349
+ {
350
+ "id": "skill.create-skill",
351
+ "kind": "catalog-component",
352
+ "summary": "Create a skill your org owns — scaffolded in this Egregore, protected from framework updates, shared with teammates via /save.",
353
+ "state_owner": "unknown",
354
+ "requires": [],
355
+ "files": [
356
+ ".claude/skills/create-skill/SKILL.md"
357
+ ],
358
+ "unmeasured_dependencies": [],
359
+ "contract": "unknown",
360
+ "availability": "oss"
361
+ },
362
+ {
363
+ "id": "skill.dark-mode",
364
+ "kind": "catalog-component",
365
+ "summary": "Use when authoring or modifying browser-rendered visual output: HTML, CSS, React SSR, artifact templates, markdown renderers, design tokens, themes, or composed pages. Do not invoke for an ordinary /view render—the checked-in renderer already owns its theme contract. The load-bearing rule is that theme-sensitive colors must be emitted as `var(--token)`, never resolved inline hex; the colors themselves come from the design system registry.",
366
+ "state_owner": "unknown",
367
+ "requires": [],
368
+ "files": [
369
+ ".claude/skills/dark-mode/SKILL.md"
370
+ ],
371
+ "unmeasured_dependencies": [],
372
+ "contract": "unknown",
373
+ "availability": "oss"
374
+ },
375
+ {
376
+ "id": "skill.dashboard",
377
+ "kind": "catalog-component",
378
+ "summary": "Explicit personal-status surface for /dashboard or a direct request for the whole personal overview. Do not use it to find or resume one specific prior handoff, project, or work thread; that is semantic organizational recall through Runtime/QMD.",
379
+ "state_owner": "unknown",
380
+ "requires": [],
381
+ "files": [
382
+ ".claude/skills/dashboard/SKILL.md"
383
+ ],
384
+ "unmeasured_dependencies": [],
385
+ "contract": "unknown",
386
+ "availability": "oss"
387
+ },
388
+ {
389
+ "id": "skill.deep-reflect",
390
+ "kind": "catalog-component",
391
+ "summary": "Run deep, multi-hop research over org memory to answer a question or cross-reference an insight, with a cited synthesis. Use for /deep-reflect — not one-shot recall (/search) or capturing an insight (/reflect).",
392
+ "state_owner": "unknown",
393
+ "requires": [],
394
+ "files": [
395
+ ".claude/skills/deep-reflect/REPORT.md",
396
+ ".claude/skills/deep-reflect/RESEARCH.md",
397
+ ".claude/skills/deep-reflect/ROLES.md",
398
+ ".claude/skills/deep-reflect/SKILL.md"
399
+ ],
400
+ "unmeasured_dependencies": [],
401
+ "contract": "unknown",
402
+ "availability": "oss"
403
+ },
404
+ {
405
+ "id": "skill.delete-user",
406
+ "kind": "catalog-component",
407
+ "summary": "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).",
408
+ "state_owner": "unknown",
409
+ "requires": [],
410
+ "files": [
411
+ ".claude/skills/delete-user/SKILL.md"
412
+ ],
413
+ "unmeasured_dependencies": [],
414
+ "contract": "unknown",
415
+ "availability": "oss"
416
+ },
417
+ {
418
+ "id": "skill.emissary",
419
+ "kind": "catalog-component",
420
+ "summary": "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.",
421
+ "state_owner": "unknown",
422
+ "requires": [],
423
+ "files": [
424
+ ".claude/skills/emissary/SKILL.md"
425
+ ],
426
+ "unmeasured_dependencies": [],
427
+ "contract": "unknown",
428
+ "availability": "oss"
429
+ },
430
+ {
431
+ "id": "skill.env",
432
+ "kind": "catalog-component",
433
+ "summary": "Install or rotate a secret privately into a .env file or a Railway service; never asks for the value in chat. Use for missing keys, replacement tokens, password changes, or environment setup.",
434
+ "state_owner": "unknown",
435
+ "requires": [],
436
+ "files": [
437
+ ".claude/skills/env/SKILL.md"
438
+ ],
439
+ "unmeasured_dependencies": [],
440
+ "contract": "unknown",
441
+ "availability": "oss"
442
+ },
443
+ {
444
+ "id": "skill.handoff",
445
+ "kind": "catalog-component",
446
+ "summary": "Create an internal Egregore team handoff to a teammate or future self. Use when the user says /handoff, asks to pass work or context, or wants an operational continuation record. Route external or executable capsules to /emissary, pending-work triage to /activity, and personal closure to /wrap.",
447
+ "state_owner": "unknown",
448
+ "requires": [],
449
+ "files": [
450
+ ".claude/skills/handoff/SKILL.md"
451
+ ],
452
+ "unmeasured_dependencies": [],
453
+ "contract": "unknown",
454
+ "availability": "oss"
455
+ },
456
+ {
457
+ "id": "skill.harvest",
458
+ "kind": "catalog-component",
459
+ "summary": "Run an adaptive harvest — directed elicitation that extracts, deepens, and synthesizes what people think about a topic. Use for 'harvest', 'run a harvest', 'align the team on', or a structured interview; not for a casual question or fixed survey.",
460
+ "state_owner": "unknown",
461
+ "requires": [],
462
+ "files": [
463
+ ".claude/skills/harvest/AUDIT.md",
464
+ ".claude/skills/harvest/FORMAT.md",
465
+ ".claude/skills/harvest/PROCESS.md",
466
+ ".claude/skills/harvest/QUESTION_PALETTE.md",
467
+ ".claude/skills/harvest/SKILL.md"
468
+ ],
469
+ "unmeasured_dependencies": [],
470
+ "contract": "unknown",
471
+ "availability": "oss"
472
+ },
473
+ {
474
+ "id": "skill.ingest",
475
+ "kind": "catalog-component",
476
+ "summary": "Route and run organizational ingestion through Egregore Runtime for files, folders, meetings, Google Workspace, Notion, interviews, or bulk corpora. Use for 'ingest', 'bring this into Egregore', 'index this folder', or 'import our docs'.",
477
+ "state_owner": "unknown",
478
+ "requires": [],
479
+ "files": [
480
+ ".claude/skills/ingest/SKILL.md"
481
+ ],
482
+ "unmeasured_dependencies": [],
483
+ "contract": "unknown",
484
+ "availability": "oss"
485
+ },
486
+ {
487
+ "id": "skill.ingest-corpus",
488
+ "kind": "catalog-component",
489
+ "summary": "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.",
490
+ "state_owner": "unknown",
491
+ "requires": [],
492
+ "files": [
493
+ ".claude/skills/ingest-corpus/SKILL.md"
494
+ ],
495
+ "unmeasured_dependencies": [],
496
+ "contract": "unknown",
497
+ "availability": "oss"
498
+ },
499
+ {
500
+ "id": "skill.ingest-notion",
501
+ "kind": "catalog-component",
502
+ "summary": "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.",
503
+ "state_owner": "unknown",
504
+ "requires": [],
505
+ "files": [
506
+ ".claude/skills/ingest-notion/SKILL.md"
507
+ ],
508
+ "unmeasured_dependencies": [],
509
+ "contract": "unknown",
510
+ "availability": "oss"
511
+ },
512
+ {
513
+ "id": "skill.ingest-user-interview",
514
+ "kind": "catalog-component",
515
+ "summary": "Analyze a user interview from Granola, pasted text, or a file into an evidence-backed briefing, journey insights, product findings, patterns, and actions. Use for /ingest user-interview, onboarding interviews, research calls, or requests to process user feedback.",
516
+ "state_owner": "unknown",
517
+ "requires": [],
518
+ "files": [
519
+ ".claude/skills/ingest-user-interview/SKILL.md",
520
+ ".claude/skills/ingest-user-interview/references/analysis-contract.md"
521
+ ],
522
+ "unmeasured_dependencies": [],
523
+ "contract": "unknown",
524
+ "availability": "oss"
525
+ },
526
+ {
527
+ "id": "skill.invite",
528
+ "kind": "catalog-component",
529
+ "summary": "Invite someone to this Egregore — repository access plus a setup link when Connected. Use for /invite <username>, 'invite <username>', or 'add <username> to the org'; not member removal.",
530
+ "state_owner": "unknown",
531
+ "requires": [],
532
+ "files": [
533
+ ".claude/skills/invite/SKILL.md"
534
+ ],
535
+ "unmeasured_dependencies": [],
536
+ "contract": "unknown",
537
+ "availability": "oss"
538
+ },
539
+ {
540
+ "id": "skill.issue",
541
+ "kind": "catalog-component",
542
+ "summary": "Report and manage organizational issues through Egregore Runtime. Use for 'this is broken', 'bug in', 'file an issue', 'report a problem', issue listing/search, or closing an issue; do not use for a personal todo or collaborative quest.",
543
+ "state_owner": "unknown",
544
+ "requires": [],
545
+ "files": [
546
+ ".claude/skills/issue/SKILL.md"
547
+ ],
548
+ "unmeasured_dependencies": [],
549
+ "contract": "unknown",
550
+ "availability": "oss"
551
+ },
552
+ {
553
+ "id": "skill.me",
554
+ "kind": "catalog-component",
555
+ "summary": "View or change the current member's Egregore profile across Claude Code, Codex, Pi, and Prime. Use for /me, 'who am I', 'call me <name>', or an explicit self email update.",
556
+ "state_owner": "unknown",
557
+ "requires": [],
558
+ "files": [
559
+ ".claude/skills/me/SKILL.md"
560
+ ],
561
+ "unmeasured_dependencies": [],
562
+ "contract": "unknown",
563
+ "availability": "oss"
564
+ },
565
+ {
566
+ "id": "skill.meeting",
567
+ "kind": "catalog-component",
568
+ "summary": "Analyze a Granola meeting into an evidence-backed briefing, decisions, findings, patterns, actions, and continuity. Use for /meeting, /meeting sync, /meeting backfill, or requests to process a meeting.",
569
+ "state_owner": "unknown",
570
+ "requires": [],
571
+ "files": [
572
+ ".claude/skills/meeting/SKILL.md",
573
+ ".claude/skills/meeting/references/analysis-contract.md"
574
+ ],
575
+ "unmeasured_dependencies": [],
576
+ "contract": "unknown",
577
+ "availability": "oss"
578
+ },
579
+ {
580
+ "id": "skill.note",
581
+ "kind": "catalog-component",
582
+ "summary": "Use when the user says 'jot this down', 'note to self', 'just thinking out loud', or 'park this thought' — saves an actor-owned private draft locally and promotes it to organizational knowledge only on an explicit request.",
583
+ "state_owner": "unknown",
584
+ "requires": [],
585
+ "files": [
586
+ ".claude/skills/note/SKILL.md"
587
+ ],
588
+ "unmeasured_dependencies": [],
589
+ "contract": "unknown",
590
+ "availability": "oss"
591
+ },
592
+ {
593
+ "id": "skill.notion-connect",
594
+ "kind": "catalog-component",
595
+ "summary": "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.",
596
+ "state_owner": "unknown",
597
+ "requires": [],
598
+ "files": [
599
+ ".claude/skills/notion-connect/SKILL.md"
600
+ ],
601
+ "unmeasured_dependencies": [],
602
+ "contract": "unknown",
603
+ "availability": "oss"
604
+ },
605
+ {
606
+ "id": "skill.onboarding",
607
+ "kind": "catalog-component",
608
+ "summary": "Use for /onboarding, or when a new member's onboarding is incomplete — runs the resumable VERIFY, ORIENT, INVITE, FIRST_HANDOFF welcome flow through Egregore Runtime.",
609
+ "state_owner": "unknown",
610
+ "requires": [],
611
+ "files": [
612
+ ".claude/skills/onboarding/SKILL.md"
613
+ ],
614
+ "unmeasured_dependencies": [],
615
+ "contract": "unknown",
616
+ "availability": "oss"
617
+ },
618
+ {
619
+ "id": "skill.pr",
620
+ "kind": "catalog-component",
621
+ "summary": "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).",
622
+ "state_owner": "unknown",
623
+ "requires": [],
624
+ "files": [
625
+ ".claude/skills/pr/SKILL.md"
626
+ ],
627
+ "unmeasured_dependencies": [],
628
+ "contract": "unknown",
629
+ "availability": "oss"
630
+ },
631
+ {
632
+ "id": "skill.pull",
633
+ "kind": "catalog-component",
634
+ "summary": "Use for /pull when you need to sync the current branch and shared memory. Activity and dashboard are read-only and never sync repositories.",
635
+ "state_owner": "unknown",
636
+ "requires": [],
637
+ "files": [
638
+ ".claude/skills/pull/SKILL.md"
639
+ ],
640
+ "unmeasured_dependencies": [],
641
+ "contract": "unknown",
642
+ "availability": "oss"
643
+ },
644
+ {
645
+ "id": "skill.push",
646
+ "kind": "catalog-component",
647
+ "summary": "Use for /push, or 'push my branch' — pushes the current branch to origin, setting upstream on first push, before opening a PR with /pr.",
648
+ "state_owner": "unknown",
649
+ "requires": [],
650
+ "files": [
651
+ ".claude/skills/push/SKILL.md"
652
+ ],
653
+ "unmeasured_dependencies": [],
654
+ "contract": "unknown",
655
+ "availability": "oss"
656
+ },
657
+ {
658
+ "id": "skill.quest",
659
+ "kind": "catalog-component",
660
+ "summary": "Manage shared open-ended quests through one canonical Markdown lifecycle. Use for /quest, listing or opening quests, starting an exploration, contributing, prioritizing, pausing, or completing a quest.",
661
+ "state_owner": "unknown",
662
+ "requires": [],
663
+ "files": [
664
+ ".claude/skills/quest/SKILL.md"
665
+ ],
666
+ "unmeasured_dependencies": [],
667
+ "contract": "unknown",
668
+ "availability": "oss"
669
+ },
670
+ {
671
+ "id": "skill.records",
672
+ "kind": "catalog-component",
673
+ "summary": "View or change your session records, hold the current session, redact a past record, record past sessions from this machine, and close or file the open items records carry.",
674
+ "state_owner": "unknown",
675
+ "requires": [],
676
+ "files": [
677
+ ".claude/skills/records/SKILL.md"
678
+ ],
679
+ "unmeasured_dependencies": [],
680
+ "contract": "unknown",
681
+ "availability": "oss"
682
+ },
683
+ {
684
+ "id": "skill.reflect",
685
+ "kind": "catalog-component",
686
+ "summary": "Use when the user says 'we decided', 'I realized', or 'that's a pattern' — captures a share-ready decision, finding, or pattern in canonical organizational memory. Use /note for private or half-baked thoughts and /archive for reusable AI-steering techniques.",
687
+ "state_owner": "unknown",
688
+ "requires": [],
689
+ "files": [
690
+ ".claude/skills/reflect/SKILL.md"
691
+ ],
692
+ "unmeasured_dependencies": [],
693
+ "contract": "unknown",
694
+ "availability": "oss"
695
+ },
696
+ {
697
+ "id": "skill.review-pr",
698
+ "kind": "catalog-component",
699
+ "summary": "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).",
700
+ "state_owner": "unknown",
701
+ "requires": [],
702
+ "files": [
703
+ ".claude/skills/review-pr/SKILL.md"
704
+ ],
705
+ "unmeasured_dependencies": [],
706
+ "contract": "unknown",
707
+ "availability": "oss"
708
+ },
709
+ {
710
+ "id": "skill.save",
711
+ "kind": "catalog-component",
712
+ "summary": "Save current Egregore work: validate distribution, commit the task branch, push it, and create or reuse a PR against the configured integration branch.",
713
+ "state_owner": "unknown",
714
+ "requires": [],
715
+ "files": [
716
+ ".claude/skills/save/SKILL.md"
717
+ ],
718
+ "unmeasured_dependencies": [],
719
+ "contract": "unknown",
720
+ "availability": "oss"
721
+ },
722
+ {
723
+ "id": "skill.slack-connect",
724
+ "kind": "catalog-component",
725
+ "summary": "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'.",
726
+ "state_owner": "unknown",
727
+ "requires": [],
728
+ "files": [
729
+ ".claude/skills/slack-connect/SKILL.md"
730
+ ],
731
+ "unmeasured_dependencies": [],
732
+ "contract": "unknown",
733
+ "availability": "oss"
734
+ },
735
+ {
736
+ "id": "skill.summon",
737
+ "kind": "catalog-component",
738
+ "summary": "Reuse, design, and launch Egregore spirits. Review available recipes and current host permissions, then start authorized on-demand work or design a scheduled process for an available scheduler.",
739
+ "state_owner": "unknown",
740
+ "requires": [],
741
+ "files": [
742
+ ".claude/skills/summon/SKILL.md"
743
+ ],
744
+ "unmeasured_dependencies": [],
745
+ "contract": "unknown",
746
+ "availability": "oss"
747
+ },
748
+ {
749
+ "id": "skill.sync-repos",
750
+ "kind": "catalog-component",
751
+ "summary": "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'.",
752
+ "state_owner": "unknown",
753
+ "requires": [],
754
+ "files": [
755
+ ".claude/skills/sync-repos/SKILL.md"
756
+ ],
757
+ "unmeasured_dependencies": [],
758
+ "contract": "unknown",
759
+ "availability": "oss"
760
+ },
761
+ {
762
+ "id": "skill.teams-connect",
763
+ "kind": "catalog-component",
764
+ "summary": "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'.",
765
+ "state_owner": "unknown",
766
+ "requires": [],
767
+ "files": [
768
+ ".claude/skills/teams-connect/SKILL.md"
769
+ ],
770
+ "unmeasured_dependencies": [],
771
+ "contract": "unknown",
772
+ "availability": "oss"
773
+ },
774
+ {
775
+ "id": "skill.telegram-connect",
776
+ "kind": "catalog-component",
777
+ "summary": "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'.",
778
+ "state_owner": "unknown",
779
+ "requires": [],
780
+ "files": [
781
+ ".claude/skills/telegram-connect/SKILL.md"
782
+ ],
783
+ "unmeasured_dependencies": [],
784
+ "contract": "unknown",
785
+ "availability": "oss"
786
+ },
787
+ {
788
+ "id": "skill.telemetry",
789
+ "kind": "catalog-component",
790
+ "summary": "Manage local-first telemetry — status, inspect, export, opt in/out, clear, or explicitly share a disclosed dataset. Use for /telemetry, 'turn off telemetry', or 'what data do you collect'.",
791
+ "state_owner": "unknown",
792
+ "requires": [],
793
+ "files": [
794
+ ".claude/skills/telemetry/SKILL.md"
795
+ ],
796
+ "unmeasured_dependencies": [],
797
+ "contract": "unknown",
798
+ "availability": "oss"
799
+ },
800
+ {
801
+ "id": "skill.test",
802
+ "kind": "catalog-component",
803
+ "summary": "Run Egregore's fast static, Runtime-contract, and targeted automated test gate before save. Optional relationship index validation requires an explicit request.",
804
+ "state_owner": "unknown",
805
+ "requires": [],
806
+ "files": [
807
+ ".claude/skills/test/SKILL.md"
808
+ ],
809
+ "unmeasured_dependencies": [],
810
+ "contract": "unknown",
811
+ "availability": "oss"
812
+ },
813
+ {
814
+ "id": "skill.the-spiral",
815
+ "kind": "catalog-component",
816
+ "summary": "A generative epistemology engine that transforms intuitions into rigorous, communicable output through structured Socratic dialogue. Use this skill whenever someone needs to develop, pressure-test, and articulate a complex thesis — fundraising materials, book proposals, product strategy, research agendas, organizational philosophy, policy design, or any context requiring deep structured thinking. Triggers on: 'let's think through', 'help me articulate', 'pressure test this', 'develop this thesis', 'spiral', 'deep exploration', 'Socratic', or any request to go from intuition to rigorous output. Also triggers when a user has a strong conviction but can't yet articulate it clearly, or when they need to prepare materials that require deep domain understanding (pitch decks, memos, strategy docs, proposals).",
817
+ "state_owner": "unknown",
818
+ "requires": [],
819
+ "files": [
820
+ ".claude/skills/the-spiral/SKILL.md"
821
+ ],
822
+ "unmeasured_dependencies": [],
823
+ "contract": "unknown",
824
+ "availability": "oss"
825
+ },
826
+ {
827
+ "id": "skill.tui-design",
828
+ "kind": "catalog-component",
829
+ "summary": "TUI Design System for Egregore slash commands. Use when designing or modifying any command's terminal output to ensure visual consistency. Triggers on: TUI, terminal output, box drawing, command output formatting, sigils, section markers. Do NOT use for browser rendering (use dark-mode) or external prose (use egregore-voice).",
830
+ "state_owner": "unknown",
831
+ "requires": [],
832
+ "files": [
833
+ ".claude/skills/tui-design/SKILL.md"
834
+ ],
835
+ "unmeasured_dependencies": [],
836
+ "contract": "unknown",
837
+ "availability": "oss"
838
+ },
839
+ {
840
+ "id": "skill.tutorial",
841
+ "kind": "catalog-component",
842
+ "summary": "Interactive walkthrough of Egregore's Local core loop — activity, reflection, and a quest — using adaptive questions and real Runtime-backed artifacts. Use for 'tutorial', 'walk me through Egregore', or 'show me how this works'; use onboarding for first-time identity or org setup.",
843
+ "state_owner": "unknown",
844
+ "requires": [],
845
+ "files": [
846
+ ".claude/skills/tutorial/SKILL.md"
847
+ ],
848
+ "unmeasured_dependencies": [],
849
+ "contract": "unknown",
850
+ "availability": "oss"
851
+ },
852
+ {
853
+ "id": "skill.update",
854
+ "kind": "catalog-component",
855
+ "summary": "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.",
856
+ "state_owner": "unknown",
857
+ "requires": [],
858
+ "files": [
859
+ ".claude/skills/update/SKILL.md"
860
+ ],
861
+ "unmeasured_dependencies": [],
862
+ "contract": "unknown",
863
+ "availability": "oss"
864
+ },
865
+ {
866
+ "id": "skill.view",
867
+ "kind": "catalog-component",
868
+ "summary": "Generate a branded HTML artifact from Egregore data (quest, handoff, activity, board, network, or any document) and open it in the browser. Use for /view, 'render this', or 'show me visually'.",
869
+ "state_owner": "unknown",
870
+ "requires": [],
871
+ "files": [
872
+ ".claude/skills/view/SKILL.md",
873
+ ".claude/skills/view/compose-scaffold.html"
874
+ ],
875
+ "unmeasured_dependencies": [],
876
+ "contract": "unknown",
877
+ "availability": "oss"
878
+ },
879
+ {
880
+ "id": "skill.visual-explain",
881
+ "kind": "catalog-component",
882
+ "summary": "Explain concepts visually using ASCII diagrams, flow charts, tables, and structural maps. Use when asked to explain, compare, or show how something works.",
883
+ "state_owner": "unknown",
884
+ "requires": [],
885
+ "files": [
886
+ ".claude/skills/visual-explain/SKILL.md"
887
+ ],
888
+ "unmeasured_dependencies": [],
889
+ "contract": "unknown",
890
+ "availability": "oss"
891
+ },
892
+ {
893
+ "id": "skill.wrap",
894
+ "kind": "catalog-component",
895
+ "summary": "Close the current Egregore session with a personal, canonical summary. Use for /wrap or when the user says they are done, wrapping up, or at a stopping point. Route work assigned to another person to /handoff and save-without-closing to /save.",
896
+ "state_owner": "unknown",
897
+ "requires": [],
898
+ "files": [
899
+ ".claude/skills/wrap/SKILL.md"
900
+ ],
901
+ "unmeasured_dependencies": [],
902
+ "contract": "unknown",
903
+ "availability": "oss"
904
+ },
905
+ {
906
+ "id": "tool.autosave-runtime",
907
+ "kind": "catalog-component",
908
+ "summary": "Declared tool: tool.autosave-runtime",
909
+ "state_owner": "unknown",
910
+ "requires": [],
911
+ "files": [
912
+ "bin/attendant.sh",
913
+ "bin/autosave.sh",
914
+ "bin/capture-reconcile.sh",
915
+ "bin/capture-run.sh",
916
+ "bin/session-autosave.sh"
917
+ ],
918
+ "unmeasured_dependencies": [],
919
+ "contract": "unknown",
920
+ "availability": "oss"
921
+ },
922
+ {
923
+ "id": "tool.corpus-knowledge-base",
924
+ "kind": "catalog-component",
925
+ "summary": "Declared tool: tool.corpus-knowledge-base",
926
+ "state_owner": "unknown",
927
+ "requires": [],
928
+ "files": [
929
+ "bin/corpus_survey.py",
930
+ "bin/retrieval_eval.py"
931
+ ],
932
+ "unmeasured_dependencies": [],
933
+ "contract": "unknown",
934
+ "availability": "oss"
935
+ },
936
+ {
937
+ "id": "tool.memory-push",
938
+ "kind": "catalog-component",
939
+ "summary": "Declared tool: tool.memory-push",
940
+ "state_owner": "unknown",
941
+ "requires": [],
942
+ "files": [
943
+ "bin/memory-push.sh",
944
+ "egregore_runtime/memory_push.py"
945
+ ],
946
+ "unmeasured_dependencies": [],
947
+ "contract": "unknown",
948
+ "availability": "oss"
949
+ },
950
+ {
951
+ "id": "tool.owned-skills-restore",
952
+ "kind": "catalog-component",
953
+ "summary": "Declared tool: tool.owned-skills-restore",
954
+ "state_owner": "unknown",
955
+ "requires": [],
956
+ "files": [
957
+ "bin/restore-owned-skills.sh"
958
+ ],
959
+ "unmeasured_dependencies": [],
960
+ "contract": "unknown",
961
+ "availability": "oss"
962
+ },
963
+ {
964
+ "id": "tool.prose-check",
965
+ "kind": "catalog-component",
966
+ "summary": "Declared tool: tool.prose-check",
967
+ "state_owner": "unknown",
968
+ "requires": [],
969
+ "files": [
970
+ "bin/prose-check-tally.sh",
971
+ "bin/prose-check.mjs",
972
+ "bin/prose-rules/announcing-instead-of-doing.md",
973
+ "bin/prose-rules/banned-vocabulary.md",
974
+ "bin/prose-rules/coined-terms.md",
975
+ "bin/prose-rules/exclamation.md",
976
+ "bin/prose-rules/filler-intensifiers.md",
977
+ "bin/prose-rules/harness-tool-names.md",
978
+ "bin/prose-rules/hedging-stack.md",
979
+ "bin/prose-rules/mannered-prose.md",
980
+ "bin/prose-rules/not-x-but-y.md",
981
+ "bin/prose-rules/one-name-per-thing.md",
982
+ "bin/prose-rules/passive-enthusiasm.md",
983
+ "bin/prose-rules/process-narration.md",
984
+ "bin/prose-rules/rhetorical-opener.md",
985
+ "bin/prose-rules/self-contained.md",
986
+ "bin/prose-rules/self-praise.md",
987
+ "bin/prose-rules/temporal-handwave.md"
988
+ ],
989
+ "unmeasured_dependencies": [],
990
+ "contract": "unknown",
991
+ "availability": "oss"
992
+ },
993
+ {
994
+ "id": "tool.runtime-metrics",
995
+ "kind": "catalog-component",
996
+ "summary": "Declared tool: tool.runtime-metrics",
997
+ "state_owner": "unknown",
998
+ "requires": [],
999
+ "files": [
1000
+ "bin/lib/metrics.sh"
1001
+ ],
1002
+ "unmeasured_dependencies": [],
1003
+ "contract": "unknown",
1004
+ "availability": "oss"
1005
+ },
1006
+ {
1007
+ "id": "tool.search-runtime",
1008
+ "kind": "catalog-component",
1009
+ "summary": "Declared tool: tool.search-runtime",
1010
+ "state_owner": "unknown",
1011
+ "requires": [],
1012
+ "files": [
1013
+ ".claude/hooks/search-hint.sh",
1014
+ "bin/search.sh"
1015
+ ],
1016
+ "unmeasured_dependencies": [],
1017
+ "contract": "unknown",
1018
+ "availability": "oss"
1019
+ },
1020
+ {
1021
+ "id": "tool.spirit-publication-history",
1022
+ "kind": "catalog-component",
1023
+ "summary": "Declared tool: tool.spirit-publication-history",
1024
+ "state_owner": "unknown",
1025
+ "requires": [],
1026
+ "files": [
1027
+ "egregore_runtime/record_publish.py"
1028
+ ],
1029
+ "unmeasured_dependencies": [],
1030
+ "contract": "unknown",
1031
+ "availability": "oss"
1032
+ },
1033
+ {
1034
+ "id": "tool.spirit-query",
1035
+ "kind": "catalog-component",
1036
+ "summary": "Inspect declared capabilities, actual installed files and separately authenticated spirit host evidence.",
1037
+ "state_owner": "local installer ownership records and current spirit host",
1038
+ "requires": [],
1039
+ "files": [
1040
+ "bin/pi-spirit-discovery.mjs",
1041
+ "bin/spirit-discovery-claude.sh",
1042
+ "bin/spirit-discovery-codex.sh",
1043
+ "bin/spirit-discovery-pi.sh",
1044
+ "bin/spirit-discovery-prime.sh",
1045
+ "bin/spirit-discovery.sh",
1046
+ "docs/spirit-discovery.md",
1047
+ "egregore_runtime/spirit_discovery.py",
1048
+ "egregore_runtime/spirit_discovery_cli.py",
1049
+ "egregore_runtime/spirit_discovery_transport.py"
1050
+ ],
1051
+ "unmeasured_dependencies": [],
1052
+ "contract": "unknown",
1053
+ "availability": "oss"
1054
+ },
1055
+ {
1056
+ "id": "tool.spirit-record-presentation",
1057
+ "kind": "catalog-component",
1058
+ "summary": "Declared tool: tool.spirit-record-presentation",
1059
+ "state_owner": "unknown",
1060
+ "requires": [],
1061
+ "files": [
1062
+ "egregore_runtime/record_subject.py"
1063
+ ],
1064
+ "unmeasured_dependencies": [],
1065
+ "contract": "unknown",
1066
+ "availability": "oss"
1067
+ }
1068
+ ],
1069
+ "files": [
1070
+ {
1071
+ "path": ".claude/hooks/search-hint.sh",
1072
+ "sha256": "80da9077e898022e50a1045d407e0bf9e65db17aee866d17c1b4c50bd0bfae1d"
1073
+ },
1074
+ {
1075
+ "path": ".claude/skills/activity/SKILL.md",
1076
+ "sha256": "435bb475f957f6d0199d303c121053d2da9dced74dacafeb6441854cf48619df"
1077
+ },
1078
+ {
1079
+ "path": ".claude/skills/announce/SKILL.md",
1080
+ "sha256": "38d6edeb8171bfe8324709b37bbe3948b4ee53a2c0ada2b695c58faabe688607"
1081
+ },
1082
+ {
1083
+ "path": ".claude/skills/archive/SKILL.md",
1084
+ "sha256": "295590b09a46aae58a6a9123e3bd16e1056cb4fef159edb1486c20ac05fadf9c"
1085
+ },
1086
+ {
1087
+ "path": ".claude/skills/branch/SKILL.md",
1088
+ "sha256": "e3a96b2d83d822dcd5262a7d9aba308d557919b2cd2649052573bd1495a4d0fc"
1089
+ },
1090
+ {
1091
+ "path": ".claude/skills/checkup/SKILL.md",
1092
+ "sha256": "9976cd7a17ed3612b0323d5a8cb64197376d40016e28682e4a7dab384a7f9620"
1093
+ },
1094
+ {
1095
+ "path": ".claude/skills/commit/SKILL.md",
1096
+ "sha256": "2a8db698d6fe0a56a05c5ab1a8788d6cb596ff93ee42de2a94ce60c3e2897b7d"
1097
+ },
1098
+ {
1099
+ "path": ".claude/skills/contribute/SKILL.md",
1100
+ "sha256": "21238d6e31429c952483fe667a6a8fa62dfa2428b7997765b27738fcab09f2d2"
1101
+ },
1102
+ {
1103
+ "path": ".claude/skills/create-skill/SKILL.md",
1104
+ "sha256": "22d880be30ff309015348f6a09033aef69daebc30c647b799d69a15bae528077"
1105
+ },
1106
+ {
1107
+ "path": ".claude/skills/dark-mode/SKILL.md",
1108
+ "sha256": "0f26e575423340b7fe8ce63a54d31caa5ec20b9889d25bb14285e3a6c67c78d1"
1109
+ },
1110
+ {
1111
+ "path": ".claude/skills/dashboard/SKILL.md",
1112
+ "sha256": "e0eaee8a9062001ecc16db1f19e793c41f88656103007e9109d65dd1d4bd5902"
1113
+ },
1114
+ {
1115
+ "path": ".claude/skills/deep-reflect/REPORT.md",
1116
+ "sha256": "ec6305302070fb5d40d87321ac9486c9725acbc6b777792be49e33b0b8536da9"
1117
+ },
1118
+ {
1119
+ "path": ".claude/skills/deep-reflect/RESEARCH.md",
1120
+ "sha256": "f99d8b84fd562d9f39a3a8df04327d393e9879477da0fb006764c04bd2c4a357"
1121
+ },
1122
+ {
1123
+ "path": ".claude/skills/deep-reflect/ROLES.md",
1124
+ "sha256": "bf9e925de41e0a57682f13ec33ed213ec101a36e85eb015e9cf1dac5d2ddfd45"
1125
+ },
1126
+ {
1127
+ "path": ".claude/skills/deep-reflect/SKILL.md",
1128
+ "sha256": "dddad48066fd6d2370d908457291bcc37094467281f7ceeb19d23dae24a43beb"
1129
+ },
1130
+ {
1131
+ "path": ".claude/skills/delete-user/SKILL.md",
1132
+ "sha256": "26c34d2e828cd58d77b48b7e33921552388742df68657f0deebf8de86a35d54f"
1133
+ },
1134
+ {
1135
+ "path": ".claude/skills/emissary/SKILL.md",
1136
+ "sha256": "ac66050864d019501b0f322993c11232237c92ad95641d94b87a41e34146bd8d"
1137
+ },
1138
+ {
1139
+ "path": ".claude/skills/env/SKILL.md",
1140
+ "sha256": "6bbf8c70a48c540ef7099ef8605a11d20dd0d2287c89a3356cfb9133d6c1c4ef"
1141
+ },
1142
+ {
1143
+ "path": ".claude/skills/handoff/SKILL.md",
1144
+ "sha256": "2cf3693d14b57acf1e00c54ad635e71718ca2c2cc894f604caec3b44a5797962"
1145
+ },
1146
+ {
1147
+ "path": ".claude/skills/harvest/AUDIT.md",
1148
+ "sha256": "70f737cc48f4a2eec63c08dee7ac303446ac9e0f4ea91a15ff91b6ad33bccbb8"
1149
+ },
1150
+ {
1151
+ "path": ".claude/skills/harvest/FORMAT.md",
1152
+ "sha256": "4891a118e333446e108e7f7cd4d9c90a19decd46f7c449b11c420974bf3527db"
1153
+ },
1154
+ {
1155
+ "path": ".claude/skills/harvest/PROCESS.md",
1156
+ "sha256": "027e2e92c4ed8aeafe0f4c6d205c0d61c18e8e4fb45960b60ffe7a0653cc17ae"
1157
+ },
1158
+ {
1159
+ "path": ".claude/skills/harvest/QUESTION_PALETTE.md",
1160
+ "sha256": "af6a5143175e453d2aacd55158cfd5741d4a22596fd03e48a55cfb611e433a82"
1161
+ },
1162
+ {
1163
+ "path": ".claude/skills/harvest/SKILL.md",
1164
+ "sha256": "2f20aa2ce6593812fe9c806e2cd2a52cea29d622f75362a26ec19fbf605387dd"
1165
+ },
1166
+ {
1167
+ "path": ".claude/skills/ingest-corpus/SKILL.md",
1168
+ "sha256": "6e3222544223e92a5d781dc0fef46f03971ceb84872f621527a6d33f634e4e13"
1169
+ },
1170
+ {
1171
+ "path": ".claude/skills/ingest-notion/SKILL.md",
1172
+ "sha256": "986a4b550addb8d8a25d0fc90cf053ba8206d446cd2ff9454a457afc90a44e4e"
1173
+ },
1174
+ {
1175
+ "path": ".claude/skills/ingest-user-interview/SKILL.md",
1176
+ "sha256": "63c1c01b3a965432d78f6aeb359fd5103908e74aa4d981a239feae8a9d236fbb"
1177
+ },
1178
+ {
1179
+ "path": ".claude/skills/ingest-user-interview/references/analysis-contract.md",
1180
+ "sha256": "12133c97dbcb9b73813eb886d1d61bc77c3e82f2bd66111d1e5f0ad99f30095e"
1181
+ },
1182
+ {
1183
+ "path": ".claude/skills/ingest/SKILL.md",
1184
+ "sha256": "649a9ff63f549aedc56de16533394ba8cd210ce8d7333124cceb173cc92c1e81"
1185
+ },
1186
+ {
1187
+ "path": ".claude/skills/invite/SKILL.md",
1188
+ "sha256": "26425a9debb6ce7c4be8443a9517577dcca854b57ef632db52bef5b32273998d"
1189
+ },
1190
+ {
1191
+ "path": ".claude/skills/issue/SKILL.md",
1192
+ "sha256": "725ec556df8e12e66e603ad42c0c0c7b98b9017b45bb66c88d74ef6e810c2289"
1193
+ },
1194
+ {
1195
+ "path": ".claude/skills/me/SKILL.md",
1196
+ "sha256": "b868bcf299c933cce53677fef6938a6b4149269a0fa4b4996c17c91554135725"
1197
+ },
1198
+ {
1199
+ "path": ".claude/skills/meeting/SKILL.md",
1200
+ "sha256": "0e47b4e67d867e92d30c70d7018b5b6a7798edb257246d8f698c9e18743900f3"
1201
+ },
1202
+ {
1203
+ "path": ".claude/skills/meeting/references/analysis-contract.md",
1204
+ "sha256": "766d2057f4ccac64dd6b7f2e405838c4de82060fb5f77d9f03a3a01ceda9b2f7"
1205
+ },
1206
+ {
1207
+ "path": ".claude/skills/note/SKILL.md",
1208
+ "sha256": "43d1acdb0c724d84eba013bfb198d9bacd7fa4c5573255f9853c1b6d9833033b"
1209
+ },
1210
+ {
1211
+ "path": ".claude/skills/notion-connect/SKILL.md",
1212
+ "sha256": "63eb5eb8f224880ce02b1ee2c505ec74170c85c977d41208f3b50492f438050a"
1213
+ },
1214
+ {
1215
+ "path": ".claude/skills/onboarding/SKILL.md",
1216
+ "sha256": "3b72e03826a6307837b582db2bc406da8732157d15bd79f7132d568c59c3d314"
1217
+ },
1218
+ {
1219
+ "path": ".claude/skills/pr/SKILL.md",
1220
+ "sha256": "b4d7f6ffa00e0d43a6c9ddae230a743c36f63f2adf0be6c2e842d53f1af44951"
1221
+ },
1222
+ {
1223
+ "path": ".claude/skills/pull/SKILL.md",
1224
+ "sha256": "b7b371d80476100da43023408ba81ef9314edf1e4805e4723eac620de7961690"
1225
+ },
1226
+ {
1227
+ "path": ".claude/skills/push/SKILL.md",
1228
+ "sha256": "8ea320db920a186bd73412fe63db9ca06106f56ea69442c832f91278e3621098"
1229
+ },
1230
+ {
1231
+ "path": ".claude/skills/quest/SKILL.md",
1232
+ "sha256": "e639acd137734410365eb2f6f6eaa387879eb5b7d03d235e9eec9ea90943990a"
1233
+ },
1234
+ {
1235
+ "path": ".claude/skills/records/SKILL.md",
1236
+ "sha256": "49eaac770f1d0f185aaf020af90c7ec3bf3403eb90d0d6a9b777d6e02af8d74b"
1237
+ },
1238
+ {
1239
+ "path": ".claude/skills/reflect/SKILL.md",
1240
+ "sha256": "4cd5611e573c0c2cbb1fc133638cde2d2aa4b93635a4149494f51f8155acdacc"
1241
+ },
1242
+ {
1243
+ "path": ".claude/skills/review-pr/SKILL.md",
1244
+ "sha256": "3565d8f63529670b7b8133ba2915db81e7a1a9239aac7a666383ae4bfc770a13"
1245
+ },
1246
+ {
1247
+ "path": ".claude/skills/save/SKILL.md",
1248
+ "sha256": "f36d9da44a46e23b364a794892023c662c9111c08c2566cf351879fb8c5a308d"
1249
+ },
1250
+ {
1251
+ "path": ".claude/skills/slack-connect/SKILL.md",
1252
+ "sha256": "3e050e7e19f86475c5e406eaae4f98cefcc467d4f1503a81d3a9f82c242ab06a"
1253
+ },
1254
+ {
1255
+ "path": ".claude/skills/summon/SKILL.md",
1256
+ "sha256": "a9a67f44580cc28752a5eaa8d1b6196b0198e9837fb8cec656cea780393d8c8a"
1257
+ },
1258
+ {
1259
+ "path": ".claude/skills/sync-repos/SKILL.md",
1260
+ "sha256": "c14845b78d74641ea903326b870b2adc2ce995d7614e97fce4516f4c2c820ca7"
1261
+ },
1262
+ {
1263
+ "path": ".claude/skills/teams-connect/SKILL.md",
1264
+ "sha256": "871ac23a6e88eda34c7f5868b59e5a37cb04712d4bdbf2210c65ef868bb4af88"
1265
+ },
1266
+ {
1267
+ "path": ".claude/skills/telegram-connect/SKILL.md",
1268
+ "sha256": "bab3dd17b9818b4978ba062743b1f5e1fa7c18938415971051c7e6c4c1ae42b0"
1269
+ },
1270
+ {
1271
+ "path": ".claude/skills/telemetry/SKILL.md",
1272
+ "sha256": "3d2f821c19b49f0b9c792c6b18a79d41dea822300f4e3bff5a88b818383886ae"
1273
+ },
1274
+ {
1275
+ "path": ".claude/skills/test/SKILL.md",
1276
+ "sha256": "c2cf3cd5fd734007df5adaa99719c5ef3f5ea51c1cd4ce3f9f60bfe78c79c211"
1277
+ },
1278
+ {
1279
+ "path": ".claude/skills/the-spiral/SKILL.md",
1280
+ "sha256": "2ac83db71df09fa468a34717805e33c10b9ed260f57a51aadf05eaa68c603faa"
1281
+ },
1282
+ {
1283
+ "path": ".claude/skills/tui-design/SKILL.md",
1284
+ "sha256": "958520ba9233283e722e191ed0403072866bf2190dc48f2f11b67b5fc4fbc29d"
1285
+ },
1286
+ {
1287
+ "path": ".claude/skills/tutorial/SKILL.md",
1288
+ "sha256": "e3d5c0211d368c0fc0adef59f4aa2dbd46b4450d74bed1f573d140a7ed6dbce7"
1289
+ },
1290
+ {
1291
+ "path": ".claude/skills/update/SKILL.md",
1292
+ "sha256": "7e747f427d1bda97b94532d72eb724d8458b8cf98db74f548da13ff90efa3776"
1293
+ },
1294
+ {
1295
+ "path": ".claude/skills/view/SKILL.md",
1296
+ "sha256": "ae83425ed1f1c134d377b759578527a7ae420352e7d50c68dac712de254a5acb"
1297
+ },
1298
+ {
1299
+ "path": ".claude/skills/view/compose-scaffold.html",
1300
+ "sha256": "9fdd13b41acafbfa906e7e68572083bf25896fd124716682e36b3b5a2f9a29cf"
1301
+ },
1302
+ {
1303
+ "path": ".claude/skills/visual-explain/SKILL.md",
1304
+ "sha256": "c67d8b6bdb87833d5e3b06b0dc310f87b0052150956fb14b7436b48df83b22a7"
1305
+ },
1306
+ {
1307
+ "path": ".claude/skills/wrap/SKILL.md",
1308
+ "sha256": "6871c03082d7932a456b8f3bc5d349fbe5e626e4ed20d703b8d36fe9aad8e255"
1309
+ },
1310
+ {
1311
+ "path": "bin/attendant.sh",
1312
+ "sha256": "98ee0edf47a1de0d0d373ba0cb3580e1227354dda90a6951534a823ec3ed352b"
1313
+ },
1314
+ {
1315
+ "path": "bin/autosave.sh",
1316
+ "sha256": "ea85d808e6ebb59d9493b5aaf6326f75a1b0382e9c92a172982c774d53b78422"
1317
+ },
1318
+ {
1319
+ "path": "bin/capture-reconcile.sh",
1320
+ "sha256": "44a580815e02a6b05cc4238f7c6d6bff6b973a296c86d44ff4b0a2a9fee477b6"
1321
+ },
1322
+ {
1323
+ "path": "bin/capture-run.sh",
1324
+ "sha256": "3afff84590a4e7423d75b99b59ed5219274600690e9e9d9e2e4a4357d13f0d66"
1325
+ },
1326
+ {
1327
+ "path": "bin/corpus_survey.py",
1328
+ "sha256": "bddc71dc07defbd539aaeccd3a0d58402ebb0d26a733720956d117ccf87e9473"
1329
+ },
1330
+ {
1331
+ "path": "bin/lib/metrics.sh",
1332
+ "sha256": "1cc7a2875728728e2cbfe13a32c0a22d13c1fe6b23bebd5d9f16f8e31df06ff2"
1333
+ },
1334
+ {
1335
+ "path": "bin/memory-push.sh",
1336
+ "sha256": "a743ba7a55c38f739c584deba37bcdeaa92b27e6c4dfba5a0088267792e69901"
1337
+ },
1338
+ {
1339
+ "path": "bin/pi-spirit-discovery.mjs",
1340
+ "sha256": "eff280f278c99d8e09f2fd9e4f9e320d1161a9effb8f80e83872d8cd1fa887a4"
1341
+ },
1342
+ {
1343
+ "path": "bin/prose-check-tally.sh",
1344
+ "sha256": "d3d9f4ae033a7e69548dc0029f530f3c7d0a363af9f7ee1470dc3d7ba2e6d11e"
1345
+ },
1346
+ {
1347
+ "path": "bin/prose-check.mjs",
1348
+ "sha256": "6d054a5a59679907a9dc2df6b675ae6898465bcbaa6660ba62475d5d1992daf7"
1349
+ },
1350
+ {
1351
+ "path": "bin/prose-rules/announcing-instead-of-doing.md",
1352
+ "sha256": "5c9eb7e0c0773065269ea59653ba326020fd5d7adb2f9156970982633bfbb130"
1353
+ },
1354
+ {
1355
+ "path": "bin/prose-rules/banned-vocabulary.md",
1356
+ "sha256": "e611d9b52fbdd8ba9cb5e5016218e7da31651c71f5c1a1edd714c5d0921322e6"
1357
+ },
1358
+ {
1359
+ "path": "bin/prose-rules/coined-terms.md",
1360
+ "sha256": "2608f72b1ef4122009b8b7b69838bd5dc43cdaffe2c8df56646e3f085eef7d5d"
1361
+ },
1362
+ {
1363
+ "path": "bin/prose-rules/exclamation.md",
1364
+ "sha256": "a2283382403ad74ec80063f5cba8c8d1d67e7969a24a62061cf26ed97e5322e7"
1365
+ },
1366
+ {
1367
+ "path": "bin/prose-rules/filler-intensifiers.md",
1368
+ "sha256": "4ff5befa3f39a0edf1213a0b557a26b7fb56068666e58b16388157922c1129f0"
1369
+ },
1370
+ {
1371
+ "path": "bin/prose-rules/harness-tool-names.md",
1372
+ "sha256": "ed73c6c514be74362d056665f381168dc10da520b66300927159b8426c4fa3c7"
1373
+ },
1374
+ {
1375
+ "path": "bin/prose-rules/hedging-stack.md",
1376
+ "sha256": "d6ec43ff6348871f83f071585ab90a78d24d4b6575a35069717c92bd840baddc"
1377
+ },
1378
+ {
1379
+ "path": "bin/prose-rules/mannered-prose.md",
1380
+ "sha256": "b51074e2f534a7141e30a6d48c117c3afe5d361babc12c9a10858ab6751df8de"
1381
+ },
1382
+ {
1383
+ "path": "bin/prose-rules/not-x-but-y.md",
1384
+ "sha256": "cf8ec7ddcebd119d5a716004552b658c09f25b43c03103a7ef5b3fa2a4bb8cb3"
1385
+ },
1386
+ {
1387
+ "path": "bin/prose-rules/one-name-per-thing.md",
1388
+ "sha256": "24f540b43fb68c0e0cf5c1910080abcd1f5e2c13194ac562512aaf513b34480a"
1389
+ },
1390
+ {
1391
+ "path": "bin/prose-rules/passive-enthusiasm.md",
1392
+ "sha256": "c3c4092bfe3a1779a3909a19c72a5dff99e11e2a374c49547cae562a04903a47"
1393
+ },
1394
+ {
1395
+ "path": "bin/prose-rules/process-narration.md",
1396
+ "sha256": "774ba34caea748d7c443ce86da0a7f4ea6ce038295f2482be8ff7cc37e5e1413"
1397
+ },
1398
+ {
1399
+ "path": "bin/prose-rules/rhetorical-opener.md",
1400
+ "sha256": "1aa6a6fdc3147df00e2ea3ebb30366130f2696e1d1f573f90f8fe12f3aec94aa"
1401
+ },
1402
+ {
1403
+ "path": "bin/prose-rules/self-contained.md",
1404
+ "sha256": "8e821c78b791e9c48d31d94dbf79cc94a1a5f816e6834eaf317f8fd5edf3ec9c"
1405
+ },
1406
+ {
1407
+ "path": "bin/prose-rules/self-praise.md",
1408
+ "sha256": "aa58878b548c449854dadcf4eec06cd8f58ec6d8607b4135d1dd6a6648cf857d"
1409
+ },
1410
+ {
1411
+ "path": "bin/prose-rules/temporal-handwave.md",
1412
+ "sha256": "5b7c59a34e48c8b2b4fbca0bf27488b1ad672e652734e569d425ec5ece5e7e3c"
1413
+ },
1414
+ {
1415
+ "path": "bin/restore-owned-skills.sh",
1416
+ "sha256": "15d83911ea4febcfd0d141c397a95d6826d379477bd20334a82d2ae42b94e6ac"
1417
+ },
1418
+ {
1419
+ "path": "bin/retrieval_eval.py",
1420
+ "sha256": "381eeea698b8d269cde848716cc5e8d83fe541a3c51c95cd019ffe8e205c6fa2"
1421
+ },
1422
+ {
1423
+ "path": "bin/search.sh",
1424
+ "sha256": "60cd887743ad8026a4d0f48bd7d663142d7870c5bfcfa2635ed481f0846af6c6"
1425
+ },
1426
+ {
1427
+ "path": "bin/session-autosave.sh",
1428
+ "sha256": "c4ab89cf62954360cff40e1be8135468351b37a9410eb63717ecc9bc25bf65b6"
1429
+ },
1430
+ {
1431
+ "path": "bin/spirit-discovery-claude.sh",
1432
+ "sha256": "b3d8776f5af65eec1c4dd621e61ef62a202e28d3abe1b05b9f4fe612ef4444bf"
1433
+ },
1434
+ {
1435
+ "path": "bin/spirit-discovery-codex.sh",
1436
+ "sha256": "1b53c0bd8f144957e5af12365ef578df32c16a78bbdaec942229b644cd7cc66b"
1437
+ },
1438
+ {
1439
+ "path": "bin/spirit-discovery-pi.sh",
1440
+ "sha256": "ac76809e2d9f55c8f540a8434b54ff8f7b0428c3125a8655c492b46ffb248637"
1441
+ },
1442
+ {
1443
+ "path": "bin/spirit-discovery-prime.sh",
1444
+ "sha256": "a48f065247229fadcd55c2553a752fc617ecd606a4298a4c27bc55159f50c40f"
1445
+ },
1446
+ {
1447
+ "path": "bin/spirit-discovery.sh",
1448
+ "sha256": "9ff051fe35f2ad50b11864a8cda320afa05c015612cb4925f261da077fb588ea"
1449
+ },
1450
+ {
1451
+ "path": "docs/spirit-discovery.md",
1452
+ "sha256": "7756b4ba27c04c4ccd6d69dd3a5e203f5d618a57d5ed8a05ce7f1b88a693fd65"
1453
+ },
1454
+ {
1455
+ "path": "egregore_runtime/memory_push.py",
1456
+ "sha256": "493444640e2a8404f44f00b4b698c4c69196c649cc920d26b0e5f3a86feec3d9"
1457
+ },
1458
+ {
1459
+ "path": "egregore_runtime/record_publish.py",
1460
+ "sha256": "8237afce1da7a97417a95ce6ab778be6ed492caa52e6c5df3f3c348195c52520"
1461
+ },
1462
+ {
1463
+ "path": "egregore_runtime/record_subject.py",
1464
+ "sha256": "0368613f903208510f4562821f0ec3b5b15ce227d22d5b3108e4ad6253aaa360"
1465
+ },
1466
+ {
1467
+ "path": "egregore_runtime/spirit_discovery.py",
1468
+ "sha256": "4f884acb9bb215f3c58f0a646ffecedda4630f4f298fe952e56d79e853177a11"
1469
+ },
1470
+ {
1471
+ "path": "egregore_runtime/spirit_discovery_cli.py",
1472
+ "sha256": "586a64fb8e8afeca67c60afd86d5fc2840f9f507574902961784374f9e6007cf"
1473
+ },
1474
+ {
1475
+ "path": "egregore_runtime/spirit_discovery_transport.py",
1476
+ "sha256": "1615e3132fd13a407f853068b7ee663e19971c5fe6ec5a0c377cc08576cfe978"
1477
+ }
1478
+ ],
1479
+ "digest": "f2c98d17306a7c1d922a59d2fa2b896f91cc69f0a77a28742f9d854f6635010e"
1480
+ }