create-egregore 0.20.2 → 0.21.0-runtime-mvp.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/egregore-launcher.js +1013 -16
- package/bin/cli.js +11 -0
- package/lib/claude-runtime.js +192 -0
- package/lib/local.js +38 -31
- package/lib/pi-runtime.js +1 -0
- package/lib/prime-runtime.js +1 -0
- package/lib/runtime-identity.js +146 -0
- package/lib/setup.js +116 -17
- package/package.json +10 -6
- package/runtime/claude/.claude/context/commit-format.md +110 -0
- package/runtime/claude/.claude/context/git-language.md +46 -0
- package/runtime/claude/.claude/context/notification-consent.md +66 -0
- package/runtime/claude/.claude/context/pr-format.md +67 -0
- package/runtime/claude/.claude/context/telemetry.md +133 -0
- package/runtime/claude/.claude/hooks/boundary-check.sh +333 -0
- package/runtime/claude/.claude/hooks/branch-guard.sh +231 -0
- package/runtime/claude/.claude/hooks/card-context.sh +38 -0
- package/runtime/claude/.claude/hooks/emissary-detect.sh +53 -0
- package/runtime/claude/.claude/hooks/memory-refresh.sh +67 -0
- package/runtime/claude/.claude/hooks/onboarding-guard.sh +86 -0
- package/runtime/claude/.claude/hooks/retrieval-context.sh +43 -0
- package/runtime/claude/.claude/rules/voice-bedrock.md +73 -0
- package/runtime/claude/.claude/settings.json +131 -0
- package/runtime/claude/.claude/skills/activity/SKILL.md +68 -0
- package/runtime/claude/.claude/skills/announce/SKILL.md +54 -0
- package/runtime/claude/.claude/skills/archive/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/branch/SKILL.md +147 -0
- package/runtime/claude/.claude/skills/checkup/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/commit/SKILL.md +103 -0
- package/runtime/claude/.claude/skills/contribute/SKILL.md +343 -0
- package/runtime/claude/.claude/skills/create-skill/SKILL.md +135 -0
- package/runtime/claude/.claude/skills/dark-mode/SKILL.md +410 -0
- package/runtime/claude/.claude/skills/dashboard/SKILL.md +43 -0
- package/runtime/claude/.claude/skills/deep-reflect/REPORT.md +140 -0
- package/runtime/claude/.claude/skills/deep-reflect/RESEARCH.md +132 -0
- package/runtime/claude/.claude/skills/deep-reflect/ROLES.md +104 -0
- package/runtime/claude/.claude/skills/deep-reflect/SKILL.md +170 -0
- package/runtime/claude/.claude/skills/delete-user/SKILL.md +150 -0
- package/runtime/claude/.claude/skills/emissary/SKILL.md +220 -0
- package/runtime/claude/.claude/skills/handoff/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/harvest/AUDIT.md +546 -0
- package/runtime/claude/.claude/skills/harvest/FORMAT.md +436 -0
- package/runtime/claude/.claude/skills/harvest/PROCESS.md +395 -0
- package/runtime/claude/.claude/skills/harvest/QUESTION_PALETTE.md +76 -0
- package/runtime/claude/.claude/skills/harvest/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/ingest/SKILL.md +112 -0
- package/runtime/claude/.claude/skills/ingest-corpus/SKILL.md +187 -0
- package/runtime/claude/.claude/skills/ingest-notion/SKILL.md +214 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/SKILL.md +65 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/references/analysis-contract.md +125 -0
- package/runtime/claude/.claude/skills/invite/SKILL.md +111 -0
- package/runtime/claude/.claude/skills/issue/SKILL.md +104 -0
- package/runtime/claude/.claude/skills/me/SKILL.md +81 -0
- package/runtime/claude/.claude/skills/meeting/SKILL.md +76 -0
- package/runtime/claude/.claude/skills/meeting/references/analysis-contract.md +102 -0
- package/runtime/claude/.claude/skills/note/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/notion-connect/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/onboarding/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/pr/SKILL.md +85 -0
- package/runtime/claude/.claude/skills/pull/SKILL.md +79 -0
- package/runtime/claude/.claude/skills/push/SKILL.md +47 -0
- package/runtime/claude/.claude/skills/quest/SKILL.md +121 -0
- package/runtime/claude/.claude/skills/reflect/SKILL.md +69 -0
- package/runtime/claude/.claude/skills/review-pr/SKILL.md +276 -0
- package/runtime/claude/.claude/skills/save/SKILL.md +92 -0
- package/runtime/claude/.claude/skills/slack-connect/SKILL.md +148 -0
- package/runtime/claude/.claude/skills/summon/SKILL.md +240 -0
- package/runtime/claude/.claude/skills/sync-repos/SKILL.md +82 -0
- package/runtime/claude/.claude/skills/teams-connect/SKILL.md +216 -0
- package/runtime/claude/.claude/skills/telegram-connect/SKILL.md +110 -0
- package/runtime/claude/.claude/skills/telemetry/SKILL.md +117 -0
- package/runtime/claude/.claude/skills/test/SKILL.md +87 -0
- package/runtime/claude/.claude/skills/the-spiral/SKILL.md +492 -0
- package/runtime/claude/.claude/skills/tui-design/SKILL.md +188 -0
- package/runtime/claude/.claude/skills/tutorial/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/update/SKILL.md +265 -0
- package/runtime/claude/.claude/skills/view/SKILL.md +393 -0
- package/runtime/claude/.claude/skills/view/compose-scaffold.html +221 -0
- package/runtime/claude/.claude/skills/visual-explain/SKILL.md +132 -0
- package/runtime/claude/.claude/skills/wrap/SKILL.md +98 -0
- package/runtime/claude/CLAUDE.md +447 -0
- package/runtime/claude/bin/activity-action.sh +92 -0
- package/runtime/claude/bin/activity-data.sh +17 -0
- package/runtime/claude/bin/agent.sh +783 -0
- package/runtime/claude/bin/artifact-register.sh +164 -0
- package/runtime/claude/bin/artifact-writeback.sh +53 -0
- package/runtime/claude/bin/artifacts.sh +288 -0
- package/runtime/claude/bin/attendant.sh +707 -0
- package/runtime/claude/bin/autosave.sh +112 -0
- package/runtime/claude/bin/boundary.sh +253 -0
- package/runtime/claude/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/claude/bin/capture-reconcile.sh +69 -0
- package/runtime/claude/bin/capture-run.sh +357 -0
- package/runtime/claude/bin/codex-install-skills.sh +78 -0
- package/runtime/claude/bin/codex-render-spec.mjs +462 -0
- package/runtime/claude/bin/codex-session-start.sh +275 -0
- package/runtime/claude/bin/codex-skill-render.mjs +349 -0
- package/runtime/claude/bin/codex-sync-skills.sh +237 -0
- package/runtime/claude/bin/connect-refresh.sh +33 -0
- package/runtime/claude/bin/contribute-guard.sh +79 -0
- package/runtime/claude/bin/corpus_map.py +806 -0
- package/runtime/claude/bin/corpus_survey.py +304 -0
- package/runtime/claude/bin/dashboard-data.sh +18 -0
- package/runtime/claude/bin/github-auth.sh +121 -0
- package/runtime/claude/bin/graph-batch.sh +86 -0
- package/runtime/claude/bin/graph-op.sh +1106 -0
- package/runtime/claude/bin/graph-projection.sh +54 -0
- package/runtime/claude/bin/graph-wal.sh +242 -0
- package/runtime/claude/bin/graph.sh +267 -0
- package/runtime/claude/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/claude/bin/handoff-lifecycle.sh +280 -0
- package/runtime/claude/bin/handoff-pr-backfill.sh +86 -0
- package/runtime/claude/bin/handoff-preview.sh +169 -0
- package/runtime/claude/bin/handoff-run.sh +692 -0
- package/runtime/claude/bin/handoff-save-egregore.sh +224 -0
- package/runtime/claude/bin/index-handoff.sh +322 -0
- package/runtime/claude/bin/ingest-graph.sh +86 -0
- package/runtime/claude/bin/ingest-item.sh +10 -0
- package/runtime/claude/bin/ingest-surface.html +495 -0
- package/runtime/claude/bin/ingest.py +1011 -0
- package/runtime/claude/bin/ingest.sh +308 -0
- package/runtime/claude/bin/ingest_graph.py +856 -0
- package/runtime/claude/bin/ingest_surface.py +544 -0
- package/runtime/claude/bin/invite.sh +6 -0
- package/runtime/claude/bin/issue.sh +10 -0
- package/runtime/claude/bin/knowledge.sh +10 -0
- package/runtime/claude/bin/lib/artifact-id.sh +46 -0
- package/runtime/claude/bin/lib/config.sh +136 -0
- package/runtime/claude/bin/lib/context.sh +642 -0
- package/runtime/claude/bin/lib/dashboard-artifact.sh +242 -0
- package/runtime/claude/bin/lib/ensure-develop.sh +183 -0
- package/runtime/claude/bin/lib/git-message.sh +37 -0
- package/runtime/claude/bin/lib/git-sync.sh +494 -0
- package/runtime/claude/bin/lib/greeting.sh +548 -0
- package/runtime/claude/bin/lib/handoff-meta.sh +97 -0
- package/runtime/claude/bin/lib/hash.sh +13 -0
- package/runtime/claude/bin/lib/identity.sh +213 -0
- package/runtime/claude/bin/lib/metrics.sh +374 -0
- package/runtime/claude/bin/lib/noncode.sh +31 -0
- package/runtime/claude/bin/lib/permissions.sh +106 -0
- package/runtime/claude/bin/lib/time.sh +56 -0
- package/runtime/claude/bin/lib/worktree-links.sh +85 -0
- package/runtime/claude/bin/node-run.sh +42 -0
- package/runtime/claude/bin/notification.sh +6 -0
- package/runtime/claude/bin/notify.sh +636 -0
- package/runtime/claude/bin/observe-context.sh +14 -0
- package/runtime/claude/bin/onboarding.sh +6 -0
- package/runtime/claude/bin/person.py +634 -0
- package/runtime/claude/bin/person.sh +481 -0
- package/runtime/claude/bin/pi-render-spec.mjs +140 -0
- package/runtime/claude/bin/post-update.sh +37 -0
- package/runtime/claude/bin/prime-render-spec.mjs +147 -0
- package/runtime/claude/bin/publish-artifact.sh +324 -0
- package/runtime/claude/bin/publish-references.sh +144 -0
- package/runtime/claude/bin/quest.sh +9 -0
- package/runtime/claude/bin/question.sh +8 -0
- package/runtime/claude/bin/repo-state.sh +96 -0
- package/runtime/claude/bin/research-ingest.sh +7 -0
- package/runtime/claude/bin/restore-owned-skills.sh +67 -0
- package/runtime/claude/bin/retrieval_eval.py +385 -0
- package/runtime/claude/bin/runtime-identity.sh +70 -0
- package/runtime/claude/bin/runtime-upgrade.sh +43 -0
- package/runtime/claude/bin/scroll.sh +9 -0
- package/runtime/claude/bin/search.sh +318 -0
- package/runtime/claude/bin/session-autosave.sh +220 -0
- package/runtime/claude/bin/session-log.sh +199 -0
- package/runtime/claude/bin/session-start.sh +696 -0
- package/runtime/claude/bin/settings.sh +532 -0
- package/runtime/claude/bin/startup-check.sh +136 -0
- package/runtime/claude/bin/statusline.sh +41 -0
- package/runtime/claude/bin/telemetry.sh +666 -0
- package/runtime/claude/bin/test-changes.sh +344 -0
- package/runtime/claude/bin/thread.sh +9 -0
- package/runtime/claude/bin/todo.sh +9 -0
- package/runtime/claude/bin/view-render.sh +126 -0
- package/runtime/claude/bin/worktree-create.sh +145 -0
- package/runtime/claude/bin/worktree-remove.sh +50 -0
- package/runtime/claude/bin/worktree.sh +198 -0
- package/runtime/claude/egregore_runtime/__init__.py +228 -0
- package/runtime/claude/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/claude/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/claude/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/claude/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/claude/egregore_runtime/admin_gate.py +102 -0
- package/runtime/claude/egregore_runtime/artifacts.py +523 -0
- package/runtime/claude/egregore_runtime/contracts.py +499 -0
- package/runtime/claude/egregore_runtime/entitlements.py +85 -0
- package/runtime/claude/egregore_runtime/errors.py +10 -0
- package/runtime/claude/egregore_runtime/graph.py +356 -0
- package/runtime/claude/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/claude/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/claude/egregore_runtime/identity.py +734 -0
- package/runtime/claude/egregore_runtime/identity_cli.py +91 -0
- package/runtime/claude/egregore_runtime/ingest.py +575 -0
- package/runtime/claude/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/claude/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/claude/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/claude/egregore_runtime/invitations.py +116 -0
- package/runtime/claude/egregore_runtime/issue_cli.py +305 -0
- package/runtime/claude/egregore_runtime/issues.py +359 -0
- package/runtime/claude/egregore_runtime/knowledge.py +376 -0
- package/runtime/claude/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/claude/egregore_runtime/lifecycle.py +888 -0
- package/runtime/claude/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/claude/egregore_runtime/notification_cli.py +125 -0
- package/runtime/claude/egregore_runtime/notifications.py +230 -0
- package/runtime/claude/egregore_runtime/observe.py +342 -0
- package/runtime/claude/egregore_runtime/onboarding.py +290 -0
- package/runtime/claude/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/claude/egregore_runtime/policy.py +144 -0
- package/runtime/claude/egregore_runtime/profile.py +193 -0
- package/runtime/claude/egregore_runtime/quest_cli.py +216 -0
- package/runtime/claude/egregore_runtime/question_cli.py +180 -0
- package/runtime/claude/egregore_runtime/questions.py +304 -0
- package/runtime/claude/egregore_runtime/quests.py +419 -0
- package/runtime/claude/egregore_runtime/readiness.py +379 -0
- package/runtime/claude/egregore_runtime/research_ingest.py +256 -0
- package/runtime/claude/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/claude/egregore_runtime/runtime.py +464 -0
- package/runtime/claude/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/claude/egregore_runtime/scrolls.py +726 -0
- package/runtime/claude/egregore_runtime/status.py +412 -0
- package/runtime/claude/egregore_runtime/status_cli.py +174 -0
- package/runtime/claude/egregore_runtime/sync.py +218 -0
- package/runtime/claude/egregore_runtime/teamsync.py +139 -0
- package/runtime/claude/egregore_runtime/telemetry.py +640 -0
- package/runtime/claude/egregore_runtime/thread_cli.py +173 -0
- package/runtime/claude/egregore_runtime/threads.py +517 -0
- package/runtime/claude/egregore_runtime/todo_cli.py +142 -0
- package/runtime/claude/egregore_runtime/todos.py +244 -0
- package/runtime/claude/egregore_runtime/upgrade.py +770 -0
- package/runtime/claude/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/claude/egregore_runtime/writeback.py +391 -0
- package/runtime/claude/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/claude/manifest.json +284 -0
- package/runtime/codex/.codex/hooks/search-hint.js +21 -52
- package/runtime/codex/.codex/hooks.json +3 -3
- package/runtime/codex/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/codex/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/codex/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/codex/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/codex/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/codex/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/codex/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/codex/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/codex/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/codex/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/codex/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/codex/.codex/skills/note/SKILL.md +30 -25
- package/runtime/codex/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/codex/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/codex/.codex/skills/save/SKILL.md +2 -2
- package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/codex/.codex/skills/view/SKILL.md +115 -111
- package/runtime/codex/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/codex/.codex/spec-manifest.json +9 -9
- package/runtime/codex/AGENTS.md +62 -58
- package/runtime/codex/bin/activity-action.sh +92 -0
- package/runtime/codex/bin/activity-data.sh +12 -233
- package/runtime/codex/bin/agent.sh +84 -100
- package/runtime/codex/bin/artifact-register.sh +164 -0
- package/runtime/codex/bin/artifact-writeback.sh +53 -0
- package/runtime/codex/bin/artifacts.sh +288 -0
- package/runtime/codex/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/codex/bin/capture-run.sh +18 -2
- package/runtime/codex/bin/codex-render-spec.mjs +41 -16
- package/runtime/codex/bin/codex-session-start.sh +14 -4
- package/runtime/codex/bin/codex-skill-render.mjs +9 -7
- package/runtime/codex/bin/corpus_map.py +806 -0
- package/runtime/codex/bin/corpus_survey.py +304 -0
- package/runtime/codex/bin/dashboard-data.sh +11 -171
- package/runtime/codex/bin/github-auth.sh +121 -0
- package/runtime/codex/bin/graph-batch.sh +7 -0
- package/runtime/codex/bin/graph-op.sh +4 -0
- package/runtime/codex/bin/graph-projection.sh +54 -0
- package/runtime/codex/bin/graph-wal.sh +13 -0
- package/runtime/codex/bin/graph.sh +44 -0
- package/runtime/codex/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/codex/bin/handoff-lifecycle.sh +280 -0
- package/runtime/codex/bin/handoff-preview.sh +169 -0
- package/runtime/codex/bin/handoff-run.sh +42 -26
- package/runtime/codex/bin/ingest-graph.sh +6 -0
- package/runtime/codex/bin/ingest-item.sh +10 -0
- package/runtime/codex/bin/ingest.sh +59 -30
- package/runtime/codex/bin/invite.sh +6 -0
- package/runtime/codex/bin/issue.sh +10 -0
- package/runtime/codex/bin/knowledge.sh +10 -0
- package/runtime/codex/bin/lib/config.sh +20 -0
- package/runtime/codex/bin/lib/context.sh +46 -25
- package/runtime/codex/bin/lib/git-sync.sh +70 -6
- package/runtime/codex/bin/lib/greeting.sh +34 -5
- package/runtime/codex/bin/lib/handoff-meta.sh +97 -0
- package/runtime/codex/bin/lib/worktree-links.sh +6 -0
- package/runtime/codex/bin/node-run.sh +42 -0
- package/runtime/codex/bin/notification.sh +6 -0
- package/runtime/codex/bin/observe-context.sh +14 -0
- package/runtime/codex/bin/onboarding.sh +6 -0
- package/runtime/codex/bin/person.py +4 -0
- package/runtime/codex/bin/person.sh +43 -10
- package/runtime/codex/bin/pi-render-spec.mjs +140 -0
- package/runtime/codex/bin/post-update.sh +37 -0
- package/runtime/codex/bin/prime-render-spec.mjs +147 -0
- package/runtime/codex/bin/publish-artifact.sh +55 -2
- package/runtime/codex/bin/quest.sh +9 -0
- package/runtime/codex/bin/question.sh +8 -0
- package/runtime/codex/bin/research-ingest.sh +7 -0
- package/runtime/codex/bin/restore-owned-skills.sh +67 -0
- package/runtime/codex/bin/retrieval_eval.py +385 -0
- package/runtime/codex/bin/runtime-identity.sh +70 -0
- package/runtime/codex/bin/runtime-upgrade.sh +43 -0
- package/runtime/codex/bin/scroll.sh +9 -0
- package/runtime/codex/bin/search.sh +231 -195
- package/runtime/codex/bin/settings.sh +174 -5
- package/runtime/codex/bin/startup-check.sh +136 -0
- package/runtime/codex/bin/telemetry.sh +522 -247
- package/runtime/codex/bin/test-changes.sh +344 -0
- package/runtime/codex/bin/thread.sh +9 -0
- package/runtime/codex/bin/todo.sh +9 -0
- package/runtime/codex/bin/view-render.sh +126 -0
- package/runtime/codex/bin/worktree-create.sh +19 -5
- package/runtime/codex/egregore_runtime/__init__.py +228 -0
- package/runtime/codex/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/codex/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/codex/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/codex/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/codex/egregore_runtime/admin_gate.py +102 -0
- package/runtime/codex/egregore_runtime/artifacts.py +523 -0
- package/runtime/codex/egregore_runtime/contracts.py +499 -0
- package/runtime/codex/egregore_runtime/entitlements.py +85 -0
- package/runtime/codex/egregore_runtime/errors.py +10 -0
- package/runtime/codex/egregore_runtime/graph.py +356 -0
- package/runtime/codex/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/codex/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/codex/egregore_runtime/identity.py +734 -0
- package/runtime/codex/egregore_runtime/identity_cli.py +91 -0
- package/runtime/codex/egregore_runtime/ingest.py +575 -0
- package/runtime/codex/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/codex/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/codex/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/codex/egregore_runtime/invitations.py +116 -0
- package/runtime/codex/egregore_runtime/issue_cli.py +305 -0
- package/runtime/codex/egregore_runtime/issues.py +359 -0
- package/runtime/codex/egregore_runtime/knowledge.py +376 -0
- package/runtime/codex/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/codex/egregore_runtime/lifecycle.py +888 -0
- package/runtime/codex/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/codex/egregore_runtime/notification_cli.py +125 -0
- package/runtime/codex/egregore_runtime/notifications.py +230 -0
- package/runtime/codex/egregore_runtime/observe.py +342 -0
- package/runtime/codex/egregore_runtime/onboarding.py +290 -0
- package/runtime/codex/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/codex/egregore_runtime/policy.py +144 -0
- package/runtime/codex/egregore_runtime/profile.py +193 -0
- package/runtime/codex/egregore_runtime/quest_cli.py +216 -0
- package/runtime/codex/egregore_runtime/question_cli.py +180 -0
- package/runtime/codex/egregore_runtime/questions.py +304 -0
- package/runtime/codex/egregore_runtime/quests.py +419 -0
- package/runtime/codex/egregore_runtime/readiness.py +379 -0
- package/runtime/codex/egregore_runtime/research_ingest.py +256 -0
- package/runtime/codex/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/codex/egregore_runtime/runtime.py +464 -0
- package/runtime/codex/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/codex/egregore_runtime/scrolls.py +726 -0
- package/runtime/codex/egregore_runtime/status.py +412 -0
- package/runtime/codex/egregore_runtime/status_cli.py +174 -0
- package/runtime/codex/egregore_runtime/sync.py +218 -0
- package/runtime/codex/egregore_runtime/teamsync.py +139 -0
- package/runtime/codex/egregore_runtime/telemetry.py +640 -0
- package/runtime/codex/egregore_runtime/thread_cli.py +173 -0
- package/runtime/codex/egregore_runtime/threads.py +517 -0
- package/runtime/codex/egregore_runtime/todo_cli.py +142 -0
- package/runtime/codex/egregore_runtime/todos.py +244 -0
- package/runtime/codex/egregore_runtime/upgrade.py +770 -0
- package/runtime/codex/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/codex/egregore_runtime/writeback.py +391 -0
- package/runtime/codex/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/codex/manifest.json +98 -1
- package/runtime/pi/.codex/hooks/search-hint.js +21 -52
- package/runtime/pi/.codex/hooks.json +3 -3
- package/runtime/pi/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/pi/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/pi/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/pi/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/pi/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/pi/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/pi/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/pi/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/pi/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/pi/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/pi/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/pi/.codex/skills/note/SKILL.md +30 -25
- package/runtime/pi/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/pi/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/pi/.codex/skills/save/SKILL.md +2 -2
- package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/pi/.codex/skills/view/SKILL.md +115 -111
- package/runtime/pi/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/pi/.codex/spec-manifest.json +9 -9
- package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -48
- package/runtime/pi/.pi/extensions/egregore.ts +7 -0
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +62 -58
- package/runtime/pi/bin/activity-action.sh +92 -0
- package/runtime/pi/bin/activity-data.sh +12 -233
- package/runtime/pi/bin/agent.sh +84 -100
- package/runtime/pi/bin/artifact-register.sh +164 -0
- package/runtime/pi/bin/artifact-writeback.sh +53 -0
- package/runtime/pi/bin/artifacts.sh +288 -0
- package/runtime/pi/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/pi/bin/capture-run.sh +18 -2
- package/runtime/pi/bin/codex-render-spec.mjs +41 -16
- package/runtime/pi/bin/codex-session-start.sh +14 -4
- package/runtime/pi/bin/codex-skill-render.mjs +9 -7
- package/runtime/pi/bin/corpus_map.py +806 -0
- package/runtime/pi/bin/corpus_survey.py +304 -0
- package/runtime/pi/bin/dashboard-data.sh +11 -171
- package/runtime/pi/bin/github-auth.sh +121 -0
- package/runtime/pi/bin/graph-batch.sh +7 -0
- package/runtime/pi/bin/graph-op.sh +4 -0
- package/runtime/pi/bin/graph-projection.sh +54 -0
- package/runtime/pi/bin/graph-wal.sh +13 -0
- package/runtime/pi/bin/graph.sh +44 -0
- package/runtime/pi/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/pi/bin/handoff-lifecycle.sh +280 -0
- package/runtime/pi/bin/handoff-preview.sh +169 -0
- package/runtime/pi/bin/handoff-run.sh +42 -26
- package/runtime/pi/bin/ingest-graph.sh +6 -0
- package/runtime/pi/bin/ingest-item.sh +10 -0
- package/runtime/pi/bin/ingest.sh +59 -30
- package/runtime/pi/bin/invite.sh +6 -0
- package/runtime/pi/bin/issue.sh +10 -0
- package/runtime/pi/bin/knowledge.sh +10 -0
- package/runtime/pi/bin/lib/config.sh +20 -0
- package/runtime/pi/bin/lib/context.sh +46 -25
- package/runtime/pi/bin/lib/git-sync.sh +70 -6
- package/runtime/pi/bin/lib/greeting.sh +34 -5
- package/runtime/pi/bin/lib/handoff-meta.sh +97 -0
- package/runtime/pi/bin/lib/worktree-links.sh +6 -0
- package/runtime/pi/bin/node-run.sh +42 -0
- package/runtime/pi/bin/notification.sh +6 -0
- package/runtime/pi/bin/observe-context.sh +14 -0
- package/runtime/pi/bin/onboarding.sh +6 -0
- package/runtime/pi/bin/person.py +4 -0
- package/runtime/pi/bin/person.sh +43 -10
- package/runtime/pi/bin/pi-observe-context.mjs +93 -0
- package/runtime/pi/bin/pi-product-workflows.mjs +1 -1
- package/runtime/pi/bin/pi-render-spec.mjs +1 -1
- package/runtime/pi/bin/post-update.sh +37 -0
- package/runtime/pi/bin/prime-render-spec.mjs +147 -0
- package/runtime/pi/bin/publish-artifact.sh +55 -2
- package/runtime/pi/bin/quest.sh +9 -0
- package/runtime/pi/bin/question.sh +8 -0
- package/runtime/pi/bin/research-ingest.sh +7 -0
- package/runtime/pi/bin/restore-owned-skills.sh +67 -0
- package/runtime/pi/bin/retrieval_eval.py +385 -0
- package/runtime/pi/bin/runtime-identity.sh +70 -0
- package/runtime/pi/bin/runtime-upgrade.sh +43 -0
- package/runtime/pi/bin/scroll.sh +9 -0
- package/runtime/pi/bin/search.sh +231 -195
- package/runtime/pi/bin/settings.sh +174 -5
- package/runtime/pi/bin/startup-check.sh +136 -0
- package/runtime/pi/bin/telemetry.sh +522 -247
- package/runtime/pi/bin/test-changes.sh +344 -0
- package/runtime/pi/bin/thread.sh +9 -0
- package/runtime/pi/bin/todo.sh +9 -0
- package/runtime/pi/bin/view-render.sh +126 -0
- package/runtime/pi/bin/worktree-create.sh +19 -5
- package/runtime/pi/egregore_runtime/__init__.py +228 -0
- package/runtime/pi/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/pi/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/pi/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/pi/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/pi/egregore_runtime/admin_gate.py +102 -0
- package/runtime/pi/egregore_runtime/artifacts.py +523 -0
- package/runtime/pi/egregore_runtime/contracts.py +499 -0
- package/runtime/pi/egregore_runtime/entitlements.py +85 -0
- package/runtime/pi/egregore_runtime/errors.py +10 -0
- package/runtime/pi/egregore_runtime/graph.py +356 -0
- package/runtime/pi/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/pi/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/pi/egregore_runtime/identity.py +734 -0
- package/runtime/pi/egregore_runtime/identity_cli.py +91 -0
- package/runtime/pi/egregore_runtime/ingest.py +575 -0
- package/runtime/pi/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/pi/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/pi/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/pi/egregore_runtime/invitations.py +116 -0
- package/runtime/pi/egregore_runtime/issue_cli.py +305 -0
- package/runtime/pi/egregore_runtime/issues.py +359 -0
- package/runtime/pi/egregore_runtime/knowledge.py +376 -0
- package/runtime/pi/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/pi/egregore_runtime/lifecycle.py +888 -0
- package/runtime/pi/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/pi/egregore_runtime/notification_cli.py +125 -0
- package/runtime/pi/egregore_runtime/notifications.py +230 -0
- package/runtime/pi/egregore_runtime/observe.py +342 -0
- package/runtime/pi/egregore_runtime/onboarding.py +290 -0
- package/runtime/pi/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/pi/egregore_runtime/policy.py +144 -0
- package/runtime/pi/egregore_runtime/profile.py +193 -0
- package/runtime/pi/egregore_runtime/quest_cli.py +216 -0
- package/runtime/pi/egregore_runtime/question_cli.py +180 -0
- package/runtime/pi/egregore_runtime/questions.py +304 -0
- package/runtime/pi/egregore_runtime/quests.py +419 -0
- package/runtime/pi/egregore_runtime/readiness.py +379 -0
- package/runtime/pi/egregore_runtime/research_ingest.py +256 -0
- package/runtime/pi/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/pi/egregore_runtime/runtime.py +464 -0
- package/runtime/pi/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/pi/egregore_runtime/scrolls.py +726 -0
- package/runtime/pi/egregore_runtime/status.py +412 -0
- package/runtime/pi/egregore_runtime/status_cli.py +174 -0
- package/runtime/pi/egregore_runtime/sync.py +218 -0
- package/runtime/pi/egregore_runtime/teamsync.py +139 -0
- package/runtime/pi/egregore_runtime/telemetry.py +640 -0
- package/runtime/pi/egregore_runtime/thread_cli.py +173 -0
- package/runtime/pi/egregore_runtime/threads.py +517 -0
- package/runtime/pi/egregore_runtime/todo_cli.py +142 -0
- package/runtime/pi/egregore_runtime/todos.py +244 -0
- package/runtime/pi/egregore_runtime/upgrade.py +770 -0
- package/runtime/pi/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/pi/egregore_runtime/writeback.py +391 -0
- package/runtime/pi/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/pi/manifest.json +98 -1
- package/runtime/prime/.codex/hooks/search-hint.js +21 -52
- package/runtime/prime/.codex/hooks.json +3 -3
- package/runtime/prime/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/prime/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/prime/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/prime/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/prime/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/prime/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/prime/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/prime/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/prime/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/prime/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/prime/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/prime/.codex/skills/note/SKILL.md +30 -25
- package/runtime/prime/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/prime/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/prime/.codex/skills/save/SKILL.md +2 -2
- package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/prime/.codex/skills/view/SKILL.md +115 -111
- package/runtime/prime/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/prime/.codex/spec-manifest.json +9 -9
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +57 -48
- package/runtime/prime/.prime/agent/extensions/egregore.ts +7 -0
- package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
- package/runtime/prime/AGENTS.md +62 -58
- package/runtime/prime/bin/activity-action.sh +92 -0
- package/runtime/prime/bin/activity-data.sh +12 -233
- package/runtime/prime/bin/agent.sh +84 -100
- package/runtime/prime/bin/artifact-register.sh +164 -0
- package/runtime/prime/bin/artifact-writeback.sh +53 -0
- package/runtime/prime/bin/artifacts.sh +288 -0
- package/runtime/prime/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/prime/bin/capture-run.sh +18 -2
- package/runtime/prime/bin/codex-render-spec.mjs +41 -16
- package/runtime/prime/bin/codex-session-start.sh +14 -4
- package/runtime/prime/bin/codex-skill-render.mjs +9 -7
- package/runtime/prime/bin/corpus_map.py +806 -0
- package/runtime/prime/bin/corpus_survey.py +304 -0
- package/runtime/prime/bin/dashboard-data.sh +11 -171
- package/runtime/prime/bin/github-auth.sh +121 -0
- package/runtime/prime/bin/graph-batch.sh +7 -0
- package/runtime/prime/bin/graph-op.sh +4 -0
- package/runtime/prime/bin/graph-projection.sh +54 -0
- package/runtime/prime/bin/graph-wal.sh +13 -0
- package/runtime/prime/bin/graph.sh +44 -0
- package/runtime/prime/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/prime/bin/handoff-lifecycle.sh +280 -0
- package/runtime/prime/bin/handoff-preview.sh +169 -0
- package/runtime/prime/bin/handoff-run.sh +42 -26
- package/runtime/prime/bin/ingest-graph.sh +6 -0
- package/runtime/prime/bin/ingest-item.sh +10 -0
- package/runtime/prime/bin/ingest.sh +59 -30
- package/runtime/prime/bin/invite.sh +6 -0
- package/runtime/prime/bin/issue.sh +10 -0
- package/runtime/prime/bin/knowledge.sh +10 -0
- package/runtime/prime/bin/lib/config.sh +20 -0
- package/runtime/prime/bin/lib/context.sh +46 -25
- package/runtime/prime/bin/lib/git-sync.sh +70 -6
- package/runtime/prime/bin/lib/greeting.sh +34 -5
- package/runtime/prime/bin/lib/handoff-meta.sh +97 -0
- package/runtime/prime/bin/lib/worktree-links.sh +6 -0
- package/runtime/prime/bin/node-run.sh +42 -0
- package/runtime/prime/bin/notification.sh +6 -0
- package/runtime/prime/bin/observe-context.sh +14 -0
- package/runtime/prime/bin/onboarding.sh +6 -0
- package/runtime/prime/bin/person.py +4 -0
- package/runtime/prime/bin/person.sh +43 -10
- package/runtime/prime/bin/pi-observe-context.mjs +93 -0
- package/runtime/prime/bin/pi-product-workflows.mjs +1 -1
- package/runtime/prime/bin/pi-render-spec.mjs +140 -0
- package/runtime/prime/bin/post-update.sh +37 -0
- package/runtime/prime/bin/prime-render-spec.mjs +1 -1
- package/runtime/prime/bin/publish-artifact.sh +55 -2
- package/runtime/prime/bin/quest.sh +9 -0
- package/runtime/prime/bin/question.sh +8 -0
- package/runtime/prime/bin/research-ingest.sh +7 -0
- package/runtime/prime/bin/restore-owned-skills.sh +67 -0
- package/runtime/prime/bin/retrieval_eval.py +385 -0
- package/runtime/prime/bin/runtime-identity.sh +70 -0
- package/runtime/prime/bin/runtime-upgrade.sh +43 -0
- package/runtime/prime/bin/scroll.sh +9 -0
- package/runtime/prime/bin/search.sh +231 -195
- package/runtime/prime/bin/settings.sh +174 -5
- package/runtime/prime/bin/startup-check.sh +136 -0
- package/runtime/prime/bin/telemetry.sh +522 -247
- package/runtime/prime/bin/test-changes.sh +344 -0
- package/runtime/prime/bin/thread.sh +9 -0
- package/runtime/prime/bin/todo.sh +9 -0
- package/runtime/prime/bin/view-render.sh +126 -0
- package/runtime/prime/bin/worktree-create.sh +19 -5
- package/runtime/prime/egregore_runtime/__init__.py +228 -0
- package/runtime/prime/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/prime/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/prime/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/prime/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/prime/egregore_runtime/admin_gate.py +102 -0
- package/runtime/prime/egregore_runtime/artifacts.py +523 -0
- package/runtime/prime/egregore_runtime/contracts.py +499 -0
- package/runtime/prime/egregore_runtime/entitlements.py +85 -0
- package/runtime/prime/egregore_runtime/errors.py +10 -0
- package/runtime/prime/egregore_runtime/graph.py +356 -0
- package/runtime/prime/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/prime/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/prime/egregore_runtime/identity.py +734 -0
- package/runtime/prime/egregore_runtime/identity_cli.py +91 -0
- package/runtime/prime/egregore_runtime/ingest.py +575 -0
- package/runtime/prime/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/prime/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/prime/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/prime/egregore_runtime/invitations.py +116 -0
- package/runtime/prime/egregore_runtime/issue_cli.py +305 -0
- package/runtime/prime/egregore_runtime/issues.py +359 -0
- package/runtime/prime/egregore_runtime/knowledge.py +376 -0
- package/runtime/prime/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/prime/egregore_runtime/lifecycle.py +888 -0
- package/runtime/prime/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/prime/egregore_runtime/notification_cli.py +125 -0
- package/runtime/prime/egregore_runtime/notifications.py +230 -0
- package/runtime/prime/egregore_runtime/observe.py +342 -0
- package/runtime/prime/egregore_runtime/onboarding.py +290 -0
- package/runtime/prime/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/prime/egregore_runtime/policy.py +144 -0
- package/runtime/prime/egregore_runtime/profile.py +193 -0
- package/runtime/prime/egregore_runtime/quest_cli.py +216 -0
- package/runtime/prime/egregore_runtime/question_cli.py +180 -0
- package/runtime/prime/egregore_runtime/questions.py +304 -0
- package/runtime/prime/egregore_runtime/quests.py +419 -0
- package/runtime/prime/egregore_runtime/readiness.py +379 -0
- package/runtime/prime/egregore_runtime/research_ingest.py +256 -0
- package/runtime/prime/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/prime/egregore_runtime/runtime.py +464 -0
- package/runtime/prime/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/prime/egregore_runtime/scrolls.py +726 -0
- package/runtime/prime/egregore_runtime/status.py +412 -0
- package/runtime/prime/egregore_runtime/status_cli.py +174 -0
- package/runtime/prime/egregore_runtime/sync.py +218 -0
- package/runtime/prime/egregore_runtime/teamsync.py +139 -0
- package/runtime/prime/egregore_runtime/telemetry.py +640 -0
- package/runtime/prime/egregore_runtime/thread_cli.py +173 -0
- package/runtime/prime/egregore_runtime/threads.py +517 -0
- package/runtime/prime/egregore_runtime/todo_cli.py +142 -0
- package/runtime/prime/egregore_runtime/todos.py +244 -0
- package/runtime/prime/egregore_runtime/upgrade.py +770 -0
- package/runtime/prime/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/prime/egregore_runtime/writeback.py +391 -0
- package/runtime/prime/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/prime/manifest.json +98 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: commit
|
|
3
|
+
description: "Stage changes and create a commit with a properly formatted message. Use for /commit, or saving work locally — not sharing it (/push) or opening a pull request (/pr)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Stage changes and commit with a message.
|
|
7
|
+
|
|
8
|
+
## When to invoke
|
|
9
|
+
|
|
10
|
+
User says: "/commit", "commit this", "stage and commit", "save this change locally"
|
|
11
|
+
Not this: sharing your commit with others → `/push` · opening a pull request → `/pr`
|
|
12
|
+
|
|
13
|
+
Message (optional): $ARGUMENTS
|
|
14
|
+
|
|
15
|
+
## Execution boundary
|
|
16
|
+
|
|
17
|
+
This is a deterministic Git operation. Run it inline through the shared Git
|
|
18
|
+
mechanics; do not spend a Loom/model-routing call or delegate it to another
|
|
19
|
+
agent. Judgment is limited to selecting relevant files and composing the
|
|
20
|
+
message.
|
|
21
|
+
|
|
22
|
+
## Before anything else
|
|
23
|
+
|
|
24
|
+
Resolve `BASE_BRANCH` through `bin/lib/config.sh` → `_get_base_branch` (pass the managed repo name when applicable). Check `git branch --show-current`. If on a protected branch (`$BASE_BRANCH`, `develop`, `main`, or `master`):
|
|
25
|
+
→ Use the resolved base branch (default `"develop"`)
|
|
26
|
+
→ Create a working branch: `git fetch origin $BASE_BRANCH --quiet && git checkout --no-track -b dev/{author}/{topic-slug} origin/$BASE_BRANCH`
|
|
27
|
+
→ Tell the user: "Creating a working branch for this..." — never mention git commands to the user.
|
|
28
|
+
→ Then proceed with the commit.
|
|
29
|
+
|
|
30
|
+
## What to do
|
|
31
|
+
|
|
32
|
+
1. Show modified and untracked files
|
|
33
|
+
2. Stage relevant files (ignore build artifacts)
|
|
34
|
+
3. Compose the message per the convention below — suggest one derived
|
|
35
|
+
from the diff, or take the user's and align it to the convention
|
|
36
|
+
4. Create the commit
|
|
37
|
+
|
|
38
|
+
## Message convention
|
|
39
|
+
|
|
40
|
+
Full spec: `.claude/context/commit-format.md`. Wording:
|
|
41
|
+
`.claude/context/git-language.md`. The short form:
|
|
42
|
+
|
|
43
|
+
- Subject `type(scope): imperative summary` — ≤ 72 chars (aim ≤ 50),
|
|
44
|
+
lowercase, no trailing period. Same grammar and type set as PR
|
|
45
|
+
titles. It completes "if applied, this commit will ___".
|
|
46
|
+
- Body (when the diff cannot explain its own motivation): blank line
|
|
47
|
+
after the subject, wrapped at 72, what and why — never how.
|
|
48
|
+
- Agent-authored commits end with a trailer block as the final
|
|
49
|
+
paragraph:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
SID=$(cat .egregore-session-id 2>/dev/null)
|
|
53
|
+
git commit -m "feat(mcp): add API key authentication" -m "Egregore-Session: $SID
|
|
54
|
+
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Omit the `Egregore-Session` line when the file is absent; use your
|
|
58
|
+
harness's own identity line. Humans committing by hand skip
|
|
59
|
+
trailers.
|
|
60
|
+
- One logical change per commit — split when the parts are
|
|
61
|
+
independently revertable.
|
|
62
|
+
|
|
63
|
+
## Example
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
> /commit
|
|
67
|
+
|
|
68
|
+
Checking changes...
|
|
69
|
+
|
|
70
|
+
Modified files:
|
|
71
|
+
src/mcp/auth.py (+42, -3)
|
|
72
|
+
src/mcp/server.py (+8, -2)
|
|
73
|
+
tests/test_auth.py (+28, new file)
|
|
74
|
+
|
|
75
|
+
Untracked:
|
|
76
|
+
src/mcp/__pycache__/ (ignored ✓)
|
|
77
|
+
|
|
78
|
+
Staging modified files...
|
|
79
|
+
git add src/mcp/auth.py src/mcp/server.py tests/test_auth.py
|
|
80
|
+
|
|
81
|
+
Enter commit message (or I can suggest one):
|
|
82
|
+
> feat(mcp): add API key authentication
|
|
83
|
+
|
|
84
|
+
git commit -m "feat(mcp): add API key authentication" # + trailer block
|
|
85
|
+
✓ Committed (abc1234)
|
|
86
|
+
|
|
87
|
+
Changes committed locally. Run /push to share, or /pr when ready for review.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## With message argument
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
> /commit docs(readme): fix typo
|
|
94
|
+
|
|
95
|
+
Staging and committing...
|
|
96
|
+
git add -A
|
|
97
|
+
git commit -m "docs(readme): fix typo"
|
|
98
|
+
✓ Committed (def5678)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Next
|
|
102
|
+
|
|
103
|
+
Run `/push` to share, or keep working and commit again.
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: contribute
|
|
3
|
+
description: "Contribute an improvement back to the upstream Egregore framework as a cross-fork pull request. Use for /contribute, or submitting a framework fix upstream — not saving org work (/save) or filing a bug (/issue)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Contribute an improvement back to the upstream Egregore framework.
|
|
7
|
+
|
|
8
|
+
Arguments: $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
## When to invoke
|
|
11
|
+
|
|
12
|
+
User says: "I want to improve this command", "submit a fix upstream", "contribute back",
|
|
13
|
+
"send this to egregore", "contribute to the framework", "upstream PR", "fix in upstream"
|
|
14
|
+
Not this: saving work to org repo → `/save` · filing a bug → `/issue` · syncing from upstream → `/update`
|
|
15
|
+
|
|
16
|
+
## Argument routing
|
|
17
|
+
|
|
18
|
+
Parse `$ARGUMENTS`:
|
|
19
|
+
|
|
20
|
+
- **Empty** → Interactive mode (ask what they want to improve)
|
|
21
|
+
- `submit` → Submit mode (push changes + create cross-fork PR)
|
|
22
|
+
- `status` → Show current contribution state
|
|
23
|
+
- **Anything else** → Interactive mode with topic pre-seeded from arguments
|
|
24
|
+
|
|
25
|
+
## Step 0: Gate check
|
|
26
|
+
|
|
27
|
+
Resolve the contribution target through the shared executable guard. This is
|
|
28
|
+
mandatory for every mode, including `status`, and replaces any hand-written
|
|
29
|
+
interpretation of `upstream_url`:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
UPSTREAM_REPO=$(bash bin/contribute-guard.sh) || exit $?
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If the guard refuses because `upstream_url` is `"none"`, tell the user:
|
|
36
|
+
|
|
37
|
+
> This is the framework source repository. Use `/save` to push changes to its configured integration branch.
|
|
38
|
+
|
|
39
|
+
Stop.
|
|
40
|
+
|
|
41
|
+
For malformed configuration, unsupported URLs, or any other guard failure,
|
|
42
|
+
show its error and stop. Never substitute a public target after a guard error.
|
|
43
|
+
|
|
44
|
+
## Step 1: Check auth + get username
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
GH_USER=$(gh api user --jq '.login' 2>/dev/null)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If empty: "Run `bash bin/github-auth.sh` first — you need GitHub access to contribute." Stop.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Interactive mode (default / topic provided)
|
|
55
|
+
|
|
56
|
+
### Step 2: Understand intent
|
|
57
|
+
|
|
58
|
+
If `$ARGUMENTS` is non-empty (and not `submit`/`status`), use as the topic description.
|
|
59
|
+
|
|
60
|
+
If empty, use AskUserQuestion:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
header: "Contribute"
|
|
64
|
+
question: "What do you want to improve in the Egregore framework?"
|
|
65
|
+
options:
|
|
66
|
+
- label: "A command"
|
|
67
|
+
description: "Improve or fix a slash command"
|
|
68
|
+
- label: "A script"
|
|
69
|
+
description: "Improve or fix a bin/ script"
|
|
70
|
+
- label: "CLAUDE.md"
|
|
71
|
+
description: "Update framework behavior"
|
|
72
|
+
- label: "Something else"
|
|
73
|
+
description: "I'll describe what I want to change"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
If freeform or "Something else" → ask the user to describe the change.
|
|
77
|
+
|
|
78
|
+
### Step 3: Set up infrastructure (silent — no output to user)
|
|
79
|
+
|
|
80
|
+
All three steps in one bash call:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Revalidate immediately before the first external mutation. A target change
|
|
84
|
+
# or source-repository config stops the entire command block.
|
|
85
|
+
bash bin/contribute-guard.sh --expect "$UPSTREAM_REPO" >/dev/null || exit $?
|
|
86
|
+
|
|
87
|
+
# 3a: Fork upstream (idempotent — no-ops if fork exists)
|
|
88
|
+
gh repo fork "$UPSTREAM_REPO" --clone=false 2>/dev/null || true
|
|
89
|
+
|
|
90
|
+
# 3b: Add contribute remote (skip if exists)
|
|
91
|
+
if ! git remote get-url contribute &>/dev/null; then
|
|
92
|
+
REPO_NAME=$(echo "$UPSTREAM_REPO" | cut -d'/' -f2)
|
|
93
|
+
git remote add contribute "https://github.com/${GH_USER}/${REPO_NAME}.git" 2>/dev/null
|
|
94
|
+
fi
|
|
95
|
+
git fetch contribute --quiet 2>/dev/null || true
|
|
96
|
+
|
|
97
|
+
# 3c: Create contribution branch from upstream/main
|
|
98
|
+
git fetch upstream main --quiet 2>/dev/null || true
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Derive topic slug:
|
|
102
|
+
```bash
|
|
103
|
+
SLUG=$(echo "$DESCRIPTION" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g; s/--*/-/g; s/^-//; s/-$//' | cut -c1-40)
|
|
104
|
+
CONTRIBUTE_BRANCH="contribute/${SLUG}"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Save current branch for later return:
|
|
108
|
+
```bash
|
|
109
|
+
PREVIOUS_BRANCH=$(git branch --show-current)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Check if branch exists:
|
|
113
|
+
```bash
|
|
114
|
+
if git show-ref --verify --quiet "refs/heads/$CONTRIBUTE_BRANCH" 2>/dev/null; then
|
|
115
|
+
# Branch exists — ask: resume or start fresh?
|
|
116
|
+
fi
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
If new:
|
|
120
|
+
```bash
|
|
121
|
+
git checkout -b "$CONTRIBUTE_BRANCH" upstream/main --quiet
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Step 4: Confirm setup
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Contributing to {UPSTREAM_REPO}
|
|
128
|
+
|
|
129
|
+
Fork: github.com/{GH_USER}/{repo_name}
|
|
130
|
+
Branch: {CONTRIBUTE_BRANCH}
|
|
131
|
+
Scope: bin/ · .claude/commands/ · .claude/agents/ · loom/ · CLAUDE.md · skills/
|
|
132
|
+
|
|
133
|
+
Make your changes, then run /contribute submit.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Step 5: Telemetry
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
bash bin/telemetry.sh emit "command" '{"command":"contribute","subcommand":"start"}' 2>/dev/null &
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The user now works on their changes. Claude assists normally. When ready, they run `/contribute submit`.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Submit mode (`/contribute submit`)
|
|
147
|
+
|
|
148
|
+
### Step 6: Validate state
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**If not on a `contribute/*` branch**: Check for framework changes vs upstream:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
FRAMEWORK_CHANGES=$(git diff upstream/main --name-only -- bin/ .claude/commands/ .claude/agents/ loom/ CLAUDE.md skills/ 2>/dev/null)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
- If changes exist on a non-contribute branch: offer to cherry-pick into a contribution branch
|
|
161
|
+
- If no changes: "No framework changes found. Make changes first, then `/contribute submit`." Stop.
|
|
162
|
+
|
|
163
|
+
**If on a `contribute/*` branch**: Proceed.
|
|
164
|
+
|
|
165
|
+
### Step 7: Show changes for review
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
DIFF_STAT=$(git diff upstream/main --stat -- bin/ .claude/commands/ .claude/agents/ loom/ CLAUDE.md skills/)
|
|
169
|
+
DIFF_FILES=$(git diff upstream/main --name-only -- bin/ .claude/commands/ .claude/agents/ loom/ CLAUDE.md skills/)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Show the diff. Also warn about out-of-scope changes:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
NON_FRAMEWORK=$(git diff upstream/main --name-only | grep -v '^bin/' | grep -v '^\.claude/commands/' | grep -v '^\.claude/agents/' | grep -v '^loom/' | grep -v '^CLAUDE\.md$' | grep -v '^skills/' | head -5)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
If non-empty:
|
|
179
|
+
> These files are outside framework scope and won't be included:
|
|
180
|
+
> {list}
|
|
181
|
+
|
|
182
|
+
### Step 8: Stage framework files only
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
git add bin/ .claude/commands/ .claude/agents/ loom/ CLAUDE.md skills/ 2>/dev/null
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
If nothing staged: "No framework changes to submit." Stop.
|
|
189
|
+
|
|
190
|
+
Commit message — per `.claude/context/commit-format.md`; use AskUserQuestion:
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
header: "Message"
|
|
194
|
+
question: "Describe your contribution:"
|
|
195
|
+
options:
|
|
196
|
+
- label: "{auto-derived from diff — e.g. 'fix(save): improve error handling'}"
|
|
197
|
+
description: "Based on your changes"
|
|
198
|
+
- label: "I'll write my own"
|
|
199
|
+
description: "Enter a custom message"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
git commit -m "$COMMIT_MESSAGE"
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Step 9: Safety scan
|
|
207
|
+
|
|
208
|
+
Check for org-specific content that shouldn't go upstream:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
ORG_NAME=$(jq -r '.org_name // empty' egregore.json 2>/dev/null)
|
|
212
|
+
GITHUB_ORG=$(jq -r '.github_org // empty' egregore.json 2>/dev/null)
|
|
213
|
+
SLUG=$(jq -r '.slug // empty' egregore.json 2>/dev/null)
|
|
214
|
+
|
|
215
|
+
LEAKS=""
|
|
216
|
+
for f in $DIFF_FILES; do
|
|
217
|
+
FOUND=$(grep -n "$ORG_NAME\|$GITHUB_ORG\|$SLUG" "$f" 2>/dev/null)
|
|
218
|
+
[ -n "$FOUND" ] && LEAKS="${LEAKS}\n${f}:\n${FOUND}"
|
|
219
|
+
done
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
If leaks found, use AskUserQuestion:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
header: "Safety"
|
|
226
|
+
question: "Your changes contain org-specific references. Clean up before submitting?"
|
|
227
|
+
options:
|
|
228
|
+
- label: "Fix first"
|
|
229
|
+
description: "I'll clean these up"
|
|
230
|
+
- label: "It's fine"
|
|
231
|
+
description: "False positives or intentional"
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If "Fix first" → Stop.
|
|
235
|
+
|
|
236
|
+
### Step 10: Push to fork
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
bash bin/contribute-guard.sh --expect "$UPSTREAM_REPO" >/dev/null || exit $?
|
|
240
|
+
git push contribute "$CONTRIBUTE_BRANCH" -u --quiet 2>&1
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
If push fails: "Push failed. Your changes are saved locally. Check your network and try `/contribute submit` again." Stop.
|
|
244
|
+
|
|
245
|
+
### Step 11: Create cross-fork PR
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
bash bin/contribute-guard.sh --expect "$UPSTREAM_REPO" >/dev/null || exit $?
|
|
249
|
+
PR_URL=$(gh pr create \
|
|
250
|
+
--repo "$UPSTREAM_REPO" \
|
|
251
|
+
--head "${GH_USER}:${CONTRIBUTE_BRANCH}" \
|
|
252
|
+
--base main \
|
|
253
|
+
--title "$COMMIT_MESSAGE" \
|
|
254
|
+
--body "$(cat <<EOF
|
|
255
|
+
$DESCRIPTION
|
|
256
|
+
|
|
257
|
+
### Changes
|
|
258
|
+
$(git diff upstream/main --stat -- bin/ .claude/commands/ .claude/agents/ loom/ CLAUDE.md skills/)
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
Contributed via \`/contribute\` from an Egregore instance.
|
|
262
|
+
EOF
|
|
263
|
+
)" 2>&1)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
If PR creation fails: "PR creation failed, but your branch is pushed to your fork. Create the PR manually at github.com/{GH_USER}/{repo_name}." Stop.
|
|
267
|
+
|
|
268
|
+
Extract PR number from URL.
|
|
269
|
+
|
|
270
|
+
### Step 12: Confirmation
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
┌──────────────────────────────────────────────────────────────────────┐
|
|
274
|
+
│ ↑ CONTRIBUTED {author} · {date} │
|
|
275
|
+
├──────────────────────────────────────────────────────────────────────┤
|
|
276
|
+
│ │
|
|
277
|
+
│ {PR title} │
|
|
278
|
+
│ → {UPSTREAM_REPO} · PR #{number} │
|
|
279
|
+
│ │
|
|
280
|
+
├──────────────────────────────────────────────────────────────────────┤
|
|
281
|
+
│ ✓ Pushed to fork · PR created │
|
|
282
|
+
│ {PR URL} │
|
|
283
|
+
└──────────────────────────────────────────────────────────────────────┘
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Step 13: Return to working branch
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
git checkout "$PREVIOUS_BRANCH" 2>/dev/null || git checkout develop 2>/dev/null || true
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Step 14: Telemetry
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
bash bin/telemetry.sh emit "command" '{"command":"contribute","subcommand":"submit"}' 2>/dev/null &
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Status mode (`/contribute status`)
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
CONTRIBUTE_BRANCHES=$(git branch --list "contribute/*" --format="%(refname:short)")
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
For each branch, check:
|
|
307
|
+
- Diff stat vs upstream/main
|
|
308
|
+
- Whether pushed to fork (`git log contribute/$branch --oneline -1 2>/dev/null`)
|
|
309
|
+
- Whether PR exists (`gh pr list --repo "$UPSTREAM_REPO" --head "${GH_USER}:${branch}" --json number,state --jq '.[0]' 2>/dev/null`)
|
|
310
|
+
|
|
311
|
+
Display:
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
↑ Contributions to {UPSTREAM_REPO}
|
|
315
|
+
|
|
316
|
+
contribute/improve-save-command
|
|
317
|
+
+42/-8, 3 files · pushed · PR #17 (open)
|
|
318
|
+
|
|
319
|
+
contribute/fix-graph-sync
|
|
320
|
+
+8/-2, 1 file · local only · no PR
|
|
321
|
+
|
|
322
|
+
/contribute submit to push the current branch.
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
If no contribute branches: "No contributions in progress. Run `/contribute` to start one."
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Edge cases
|
|
330
|
+
|
|
331
|
+
| Scenario | Handling |
|
|
332
|
+
|----------|----------|
|
|
333
|
+
| `upstream_url` is `"none"` | Executable guard refuses all contribution operations and redirects to `/save` |
|
|
334
|
+
| `upstream_url` is empty | Executable guard selects `egregore-labs/egregore` |
|
|
335
|
+
| Config is invalid or target changes | Executable guard fails closed before fork, push, or PR |
|
|
336
|
+
| Fork already exists | `gh repo fork` is idempotent |
|
|
337
|
+
| `contribute` remote exists | Skip adding |
|
|
338
|
+
| No framework changes | "Make changes first, then `/contribute submit`" |
|
|
339
|
+
| Org-specific refs in changes | Safety scan warns |
|
|
340
|
+
| Already on `contribute/*` branch | Offer to submit or start new |
|
|
341
|
+
| PR exists for this branch | Show existing PR URL, don't create duplicate |
|
|
342
|
+
| Push fails | Preserve local changes, suggest retry |
|
|
343
|
+
| PR creation fails | Branch is pushed, suggest manual PR |
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-skill
|
|
3
|
+
description: Create a skill your org owns — scaffolded in this Egregore, protected from framework updates, shared with teammates via /save.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Create an org-owned skill. Owned skills live in `.claude/skills/<name>/` like
|
|
7
|
+
framework skills, but they belong to the org: `/update` never overwrites them,
|
|
8
|
+
and if upstream ever ships a skill with the same name, the org's version wins
|
|
9
|
+
and the collision is reported.
|
|
10
|
+
|
|
11
|
+
Arguments: an optional skill name and/or a description of what the skill
|
|
12
|
+
should do.
|
|
13
|
+
|
|
14
|
+
## When to invoke
|
|
15
|
+
|
|
16
|
+
User says: "create a skill", "make a skill for X", "I want a /foo command for
|
|
17
|
+
our team", "turn this workflow into a skill", `/create-skill <name>`
|
|
18
|
+
Not this: installing someone else's published skill → `find-skills` · changing
|
|
19
|
+
a framework skill's behavior → `/contribute` (upstream owns it)
|
|
20
|
+
|
|
21
|
+
## Step 1: Name and scope
|
|
22
|
+
|
|
23
|
+
Derive a kebab-case name from the request. Rules:
|
|
24
|
+
|
|
25
|
+
- Lowercase letters, digits, hyphens only. No slashes, no leading dot.
|
|
26
|
+
- **Must not collide with a framework skill.** Check both the local tree and
|
|
27
|
+
upstream when available:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
NAME="<kebab-name>"
|
|
31
|
+
if [ -d ".claude/skills/$NAME" ]; then
|
|
32
|
+
echo "exists locally"
|
|
33
|
+
fi
|
|
34
|
+
git fetch upstream main --quiet 2>/dev/null || true
|
|
35
|
+
git ls-tree -d upstream/main ".claude/skills/$NAME" 2>/dev/null | grep -q . && echo "exists upstream"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If the name exists locally or upstream, propose 2–3 alternatives via
|
|
39
|
+
AskUserQuestion instead of silently picking one. An org CAN deliberately own a
|
|
40
|
+
name upstream also uses (their version then always wins), but that is an
|
|
41
|
+
explicit choice — never a default.
|
|
42
|
+
|
|
43
|
+
If the user gave only a name and no behavior, ask what the skill should do
|
|
44
|
+
before scaffolding — a skill with an empty body helps nobody.
|
|
45
|
+
|
|
46
|
+
## Step 2: Scaffold
|
|
47
|
+
|
|
48
|
+
Write `.claude/skills/$NAME/SKILL.md`:
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
---
|
|
52
|
+
name: <name>
|
|
53
|
+
description: <one line — what it does and when an agent should reach for it>
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
<What this skill does, in 1–3 sentences.>
|
|
57
|
+
|
|
58
|
+
## When to invoke
|
|
59
|
+
|
|
60
|
+
User says: <trigger phrases>
|
|
61
|
+
Not this: <adjacent intents that route elsewhere>
|
|
62
|
+
|
|
63
|
+
## Steps
|
|
64
|
+
|
|
65
|
+
1. <concrete step — commands in fenced bash blocks>
|
|
66
|
+
2. <...>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Fill it with real content derived from the user's description — trigger
|
|
70
|
+
phrases an agent can match, concrete steps, actual commands. Follow
|
|
71
|
+
`product-voice` for any user-facing copy the skill emits.
|
|
72
|
+
|
|
73
|
+
**Cross-runtime adapter (mandatory).** Codex invokes skills as `$<name>` from
|
|
74
|
+
`.codex/skills/`, and Pi consumes the same tree — one adapter serves both.
|
|
75
|
+
Write `.codex/skills/$NAME/SKILL.md`:
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
---
|
|
79
|
+
name: <name>
|
|
80
|
+
description: '<same one line>'
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
<!-- org-owned skill adapter — created by /create-skill -->
|
|
84
|
+
|
|
85
|
+
# <name> (org skill)
|
|
86
|
+
|
|
87
|
+
This org-owned skill is defined once in `.claude/skills/<name>/SKILL.md`.
|
|
88
|
+
|
|
89
|
+
1. Read `.claude/skills/<name>/SKILL.md` for the full workflow.
|
|
90
|
+
2. Run any referenced `bin/` scripts directly from this shell.
|
|
91
|
+
3. Translate interactive choices to this runtime's question tooling when
|
|
92
|
+
available; otherwise render compact numbered choices with an `Other:`
|
|
93
|
+
option and wait for the user.
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The runtime installer only removes files it installed itself (hash-tracked),
|
|
97
|
+
so this adapter survives Codex/Pi runtime upgrades. Without it, the skill
|
|
98
|
+
exists for Claude Code teammates only — always write both files.
|
|
99
|
+
|
|
100
|
+
## Step 3: Register ownership
|
|
101
|
+
|
|
102
|
+
Add the name to `owned_skills` in `egregore.json` (create the array if
|
|
103
|
+
absent):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
jq --arg n "$NAME" '.owned_skills = ((.owned_skills // []) + [$n] | unique)' \
|
|
107
|
+
egregore.json > egregore.json.tmp && mv egregore.json.tmp egregore.json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This is what makes the skill org-owned: `/update` runs
|
|
111
|
+
`bin/restore-owned-skills.sh` after every framework sync, which keeps every
|
|
112
|
+
listed skill at the org's committed version.
|
|
113
|
+
|
|
114
|
+
## Step 4: Share it
|
|
115
|
+
|
|
116
|
+
Tell the user the skill is ready to try now (`/<name>` in Claude Code,
|
|
117
|
+
`$<name>` in Codex, `/<name>` in Pi), then run `/save` so it reaches the team —
|
|
118
|
+
teammates get it on `/pull` or their next session start. The skill directory,
|
|
119
|
+
the `.codex/skills/` adapter, and the `egregore.json` change must all land in
|
|
120
|
+
the same PR, or the ownership guarantee ships half-finished.
|
|
121
|
+
|
|
122
|
+
Telemetry (fire-and-forget):
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
bash bin/telemetry.sh emit "command" '{"command":"create-skill"}' 2>/dev/null &
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Edge cases
|
|
129
|
+
|
|
130
|
+
| Scenario | Handling |
|
|
131
|
+
|---|---|
|
|
132
|
+
| Name collides with a framework skill | Propose alternatives; owning a colliding name is explicit opt-in only. |
|
|
133
|
+
| User wants to modify a framework skill | Route to `/contribute` — or, if they explicitly want an org-local fork, copy it under a NEW name, register ownership, and note the fork won't receive upstream improvements. |
|
|
134
|
+
| Skill already in `owned_skills` | Editing an existing owned skill needs no re-registration — just edit and `/save`. |
|
|
135
|
+
| No `jq` | Tell the user to add the name to `owned_skills` in `egregore.json` manually. |
|