Best for
- Processing one or more work items through the full
- Resuming an interrupted egregore session (manifest already
- Running autonomously under a watchdog that relaunches on
athola/claude-night-market/plugins/egregore/skills/summon/SKILL.md
Autonomous orchestrator for manifest work items through the development lifecycle. Use when running egregore to process a backlog automatically.
Decision brief
Autonomous orchestrator for manifest work items through the development lifecycle.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/athola/claude-night-market --skill "plugins/egregore/skills/summon"Inspect the Agent Skill "summon" from https://github.com/athola/claude-night-market/blob/6720bb5cdeadeea6de6e4786a449126b3d417536/plugins/egregore/skills/summon/SKILL.md at commit 6720bb5cdeadeea6de6e4786a449126b3d417536. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Look up item.pipelinestage and item.pipelinestep in the Pipeline-to-Skill Mapping table below. Determine the skill name or action to invoke.
Summon is the egregore orchestration loop. It reads the manifest (.egregore/manifest.json), selects the next active work item, maps the current pipeline step to a specialist skill, and invokes that skill. After each step it advances the pipeline, checks context and token budgets…
Processing one or more work items through the full
Running a single skill in isolation (call the skill
Always launch the orchestrator agent in the FOREGROUND. Do not use runinbackground: true. The main session becomes the egregore: it blocks on the orchestrator agent until the egregore finishes or is dismissed.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 331 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Summon is the egregore orchestration loop.
It reads the manifest (.egregore/manifest.json), selects
the next active work item, maps the current pipeline step to
a specialist skill, and invokes that skill.
After each step it advances the pipeline, checks context and
token budgets, and repeats until all items are completed or
the budget is exhausted.
The orchestrator never re-implements phase logic.
Each pipeline step delegates to an existing skill via
Skill() calls.
Summon only manages state transitions, retries, and budget
guards.
Always launch the orchestrator agent in the FOREGROUND.
Do not use run_in_background: true. The main session
becomes the egregore: it blocks on the orchestrator agent
until the egregore finishes or is dismissed.
Agent(
subagent_type: "egregore:orchestrator",
prompt: "<context about work items and current state>",
run_in_background: false // Required
)
If you launch the orchestrator in the background, the main session will have nothing to do and will stop. This defeats the entire purpose of the egregore. The stop hook cannot prevent this because background agents are detached.
Before launching the orchestrator, ensure the manifest has the correct run mode:
--bounded flag): set "indefinite": true
in the manifest. The egregore will scan for new work after
completing all items and run until dismissed.--bounded flag: set "mode": "bounded" in the
manifest. The egregore stops after all items are completed
or failed.If the manifest already exists and has "mode": "bounded"
but the user did NOT pass --bounded, update the manifest
to "indefinite": true before launching.
After launching, do NOT produce any summary, status table, or "what's happening" output. The orchestrator IS the session now. Let it run.
Follow these steps exactly. Each iteration processes one pipeline step for one work item.
manifest = Read(".egregore/manifest.json")
config = Read(".egregore/config.json")
budget = Read(".egregore/budget.json")
If manifest.json does not exist, stop with an error:
"No manifest found. Run egregore init first."
item = manifest.next_active_item()
If item is None, all work is done.
Save the manifest, report completion, and exit.
Look up item.pipeline_stage and item.pipeline_step in the
Pipeline-to-Skill Mapping table below.
Determine the skill name or action to invoke.
Call Skill() or execute the mapped action.
Pass any required context (branch name, issue ref, etc.)
from the work item.
On success:
manifest.advance(item.id) to move to the next step.item.attempts to 0.On failure:
manifest.fail_current_step(item.id, reason).item.attempts < item.max_attempts, retry the same
step on the next iteration.item.status is now "failed", log the failure and
move to the next work item.Estimate context window usage. If usage exceeds 80%:
.egregore/continuation.json with the current item ID,
stage, and step.Skill(conserve:clear-context).If the last skill call returned a rate limit error:
budget.json via
budget.record_rate_limit(cooldown_minutes).budget.json.notify.py).CronCreate for a one-shot resume at the
cooldown expiry. Its jobs live only in the running
session, so this works only when that session is still
alive and idle when the window renews.window.plan_resume() rather than choosing by hand.Go back to step 2. Continue until all items are completed, all items are failed, or a budget limit is reached.
| Stage | Step | Skill/Action |
|---|---|---|
| intake | parse | Parse prompt or fetch issue via gh issue view |
| intake | validate | Validate requirements are actionable |
| intake | prioritize | Order by complexity (single item = skip) |
| build | brainstorm | Skill(attune:project-brainstorming) |
| build | specify | Skill(attune:project-specification) |
| build | blueprint | Skill(attune:project-planning) |
| build | execute | Skill(attune:project-execution) |
| quality | code-review | Skill(pensive:code-refinement) |
| quality | unbloat | Skill(conserve:bloat-detector) |
| quality | code-refinement | Skill(pensive:code-refinement) |
| quality | update-tests | Skill(sanctum:test-updates) |
| quality | update-docs | Skill(sanctum:doc-updates) |
| ship | prepare-pr | Skill(sanctum:pr-prep) |
| ship | pr-review | Skill(sanctum:pr-review) |
| ship | fix-pr | Apply review fixes |
| ship | merge | gh pr merge (if auto_merge enabled) |
The intake stage steps (parse, validate, prioritize) are
handled inline by the orchestrator.
See modules/intake.md for details.
The build and quality stages delegate execution by default through
Skill(conjure:delegation-core).
An unattended loop is where the default earns most: nobody is present to
notice that an external CLI was available and unused.
The orchestrator does not decide per task. It invokes the mapped skill, and that skill applies the delegation posture with its own Keep Local clauses.
A providers_exhausted result is not a step failure.
The orchestrator must not retry the step or mark the work item failed on
it. The skill completes the work locally and the pipeline advances.
Treating it as a failure would burn the retry budget on a machine where
nothing is broken.
To run the egregore with no external models, export
CONJURE_DELEGATION=off in the environment that launches it.
The orchestrator runs inside a finite context window. To avoid losing state when the window fills:
.egregore/continuation.json with a snapshot of
the current position.Skill(conserve:clear-context).continuation.json and resume from
the saved position. The manifest on disk is the source of
truth for pipeline progress.manifest.continuation_count each time a
context-overflow handoff occurs.This protocol ensures zero lost progress across context boundaries.
After loading state (step 1), schedule a recurring heartbeat that both reports status and recovers stalled pipelines:
CronCreate(
cron: "*/5 * * * *",
prompt: "Check .egregore/manifest.json. If there are pending or active items that are not being processed, resume the orchestration loop by invoking Skill(egregore:summon). Otherwise, report status via /egregore:status.",
recurring: true
)
This serves two purposes:
Both depend on the session staying alive: a recurring job also lives only in the session that created it, and it fires only while the REPL is idle. Recurring jobs auto-expire after 7 days, firing one last time before they are deleted, so a run longer than a week needs the heartbeat rescheduled.
durable: true does not persist the job across restarts.
The parameter is accepted, but the tool's description says
it "has no effect" and that durable persistence is not
available. Use CronDelete to cancel a job early, and the
watchdog for anything that must survive the session.
Egregore sessions consume API tokens across a budget window (default: 5 hours). The budget protocol prevents runaway spending:
budget.json for an
active cooldown. If is_in_cooldown(budget) returns
true, exit and let the watchdog retry later.budget.record_rate_limit(cooldown_minutes).
The cooldown duration equals the API retry-after header
plus config.budget.cooldown_padding_minutes.budget.json, alert the
overseer, and exit with code 0.budget.json before relaunching.
It will not start a new session until the cooldown
expires.See modules/budget.md for the full calculation and state
schema.
Each work item allows up to max_attempts retries per step
(default: 3, configurable in config.json).
attempts < max_attempts,
the orchestrator retries the same step on the next
iteration. The manifest is saved between retries.attempts >= max_attempts, the item
status changes to "failed" and failure_reason is set.
The orchestrator moves to the next active item.modules/decisions.md) and proceed with the best
available option..egregore/manifest.json is read successfully before the
orchestration loop starts; if absent, skill halts with "No
manifest found. Run egregore init first."item.pipeline_stage
in the manifest and the manifest is saved to disk.egregore/continuation.json
with current item ID, stage, and step before handoffbudget.json is updated with cooldown
duration before the session exits with code 0Frequently asked questions
Autonomous orchestrator for manifest work items through the development lifecycle.
The source record exposes this install command: npx skills add https://github.com/athola/claude-night-market --skill "plugins/egregore/skills/summon". Inspect the command and pinned source before running it.