Egregore Harvest
SkillDev toolsRun an adaptive Egregore harvest from Codex when the user invokes /harvest or $harvest to elicit tacit context, preferences, positions, and team judgment.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Egregore Harvest skill
What this skill tells your AI
The instructions your AI receives, as published by egregore-labs/egregore in .codex/skills/harvest/SKILL.md and read by ahel’s review.
Native Codex Egregore skill. A harvest is a structured elicitation process that turns tacit context into durable organizational memory.
Parse
Accept a topic plus optional flags:
--respondents a,b--seed path--resume id--mode blind|disclosed|comparative
Resolve the initiator from .egregore-state.json, then git config. Mint IDs as
harvest-YYYY-MM-DD-topic-slug and
harvest-YYYY-MM-DD-topic-slug-respondent.
State
Markdown is canonical. Persist under:
memory/knowledge/harvests/{date}-{slug}/
manifest.md
sessions/{handle}.md
synthesis.md
Single-respondent harvests may use one flat markdown file when that is simpler. Every manifest records topic, intent, initiator, respondents, disclosure mode, status, seed paths, and role-sheet assumptions.
Connected mode may also call bin/graph-op.sh helpers, but graph writes are
best-effort and must never block markdown state.
Process
- Sync memory with
bin/agent.sh sync. - If
--resumeis present, reload the manifest, sessions, and prior evaluations before asking anything new. - Build a role sheet for each respondent from
memory/people/*.md, recent handoffs, wraps, quests, and optionally graph context. - Clarify the harvest intent when topic, respondents, dimensions, or
disclosure mode are under-specified. Use structured Codex question tooling
when available; otherwise ask one numbered question at a time with
Other:. - Read
QUESTION_PALETTE.mdcompletely. Ask situated questions with an explicitquestion_intent, an answer shape that fits it, and grounding in the role sheet, seed, the respondent's own prior answers, or attributed positions allowed by the disclosure setting. Blind mode must not use another respondent's answer content, even invisibly. Record a one-sentence reason when departing from the palette's closest intent row. - Persist every turn immediately with turn number, question, intent, answer, and evaluation. Apply the palette's satisficing and sycophancy guards when evaluating. For absent respondents, create async questions with:
bin/agent.sh ask --from "$INITIATOR" --to "$RESPONDENT" --topic "$TOPIC" --question "$QUESTION" --harvest-id "$HARVEST_ID" --harvest-session-id "$HARVEST_SESSION_ID" --turn "$TURN" --question-intent "$QUESTION_INTENT" --context-mode "$DISCLOSURE_MODE"
- In connected mode, follow
.claude/context/notification-consent.mdfor each async respondent: prepare one direct notification, show its exact recipient/channel/message in a separate checkpoint, and dispatch once only after that approval. Selecting respondents is not notification consent and approvals cannot be batched. - Continue until present respondents reach diminishing returns and async respondents are either answered, pending, or explicitly skipped.
Multi-respondent rounds
Preference, estimate, and position intents default to blind. When everyone
should answer the same inquiry, freeze one source version and question set
before collection and send the identical artifact to each respondent.
While collection is open, a respondent may correct their own response. Append the correction, use their latest finalized response as canonical, and count distinct finalized respondents rather than submissions. After the declared completion condition seals the evidence, it is immutable; a changed position starts a new round. There is no automatic second pass after disclosure.
Attribute disclosed positions and preserve their reasoning. Never turn them into an anonymous aggregate such as "most of the team thinks." A majority may be named with its respondents, but it is not collective alignment.
Synthesis
Write synthesis.md with:
- L0: compact portrait of the harvest.
- L1: useful patterns, preferences, constraints, and positions.
- L2: respondent or theme slices, chosen based on the material.
- L3: decisions, open questions, follow-ups, and reusable context.
Evidence should be attributed. Quotes support synthesized positions; they do not replace them.
After synthesis, mark the manifest complete, commit and push memory:
git -C memory add knowledge/harvests
git -C memory commit -m "harvest: $TOPIC" --quiet
git -C memory push origin main --quiet
Emit telemetry best-effort in the background.
Output
Structured UX parity is required. When a harvest completes or checkpoints, render the Egregore harvest TUI instead of a prose-only recap:
- Use a 72-column outer box with standard top/separator/content/bottom lines.
- Header:
HARVEST, initiator, and date. - Body: topic, respondents, disclosure mode, synthesis path, and a one-line layer summary when available.
- Footer: harvested/synthesized/saved/pushed state and
Visible in /activity. - If graph writes are skipped or unavailable, reflect that in the footer without saying the harvest failed when markdown was saved.
Rules
- Ask one question at a time for present respondents.
- Never impose an answer-shape quota or preset question flow.
- Make low-confidence role assumptions visible when they shape questions.
- Local mode skips graph and notification calls.
- Do not use Claude Code commands.
Signals
- GitHub stars
- 289
- Forks
- 21
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
harvest-egregore-labs- Source
- github.com/egregore-labs/egregore