Agent skill

Incubation Loop

by Abilityai in Abilityai/cornelius

Autonomous iterative thinking loop - processes active topics using rotating analytical moves (ACH, Bayesian updating, steelmanning, cross-domain bridging, implication checks) and persists reasoning…

MITAuto-check: notes

Install Incubation Loop

skills CLI
$ npx skills add Abilityai/cornelius --skill incubation-loop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Abilityai/cornelius incubation-loop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Abilityai/cornelius.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/incubation-loop .claude/skills/incubation-loop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
incubation-loop
GitHub stars
109
Token cost
~10k tokens
SKILL.md length
3,867 words
Files
1
Skills in repo
56
Repo updated
First seen
Licence
MIT

At a glance

Autonomous iterative thinking loop - processes active topics using rotating analytical moves (ACH, Bayesian updating, steelmanning, cross-domain bridging, implication checks) and persists reasoning…

  • Works in 9 steps: Get Date and Load Registry → For Each Active Topic - Load State → Determine Next Thinking Move → …
  • SKILL.md covers Purpose, State Dependencies, Prerequisites and Composes, plus 6 more sections
  • Calls python3 and git

What it does

Incubation Loop is an agent skill from Abilityai/cornelius. Autonomous iterative thinking loop - processes active topics using rotating analytical moves (ACH, Bayesian updating, steelmanning, cross-domain bridging, implication checks) and persists reasoning state across scheduled runs

Its SKILL.md is about 10k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: AI-powered second brain template for Claude Code + Obsidian. The licence is MIT.

Example prompts

  • “/incubation-loop”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Grep, Glob, Bash, WebSearch, Skill

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Get Date and Load Registry
  2. For Each Active Topic - Load State
  3. Determine Next Thinking Move
  4. Run KB Search for Evidence
  5. Apply the Thinking Move
  6. Write Updated Thinking File
  7. Check Convergence
  8. Update Registry
  9. Write Session Changelog

What it can do on your machine

Read from SKILL.md and the folder at commit fd5e9a4. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Grep
    • Glob
    • Bash
    • WebSearch
    • Skill

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Incubation Loop loads about 10k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 3,867 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~10k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Grep, Glob, Bash, WebSearch, Skill

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Abilityai/cornelius at commit fd5e9a4, republished under its MIT licence (© Abilityai). 3,867 words, ~10,304 tokens.

Download SKILL.mdSave it as .claude/skills/incubation-loop/SKILL.md (or your agent's skills folder).
name
incubation-loop
description
Autonomous iterative thinking loop - processes active topics using rotating analytical moves (ACH, Bayesian updating, steelmanning, cross-domain bridging, implication checks) and persists reasoning state across scheduled runs
allowed-tools
Read, Write, Grep, Glob, Bash, WebSearch, Skill
automation
autonomous
schedule
0 7 * * *
user-invocable
true
argument-hint
[topic-slug] (optional - processes all active topics if omitted)
metadata.version
1.22
metadata.updated
2026-07-18
metadata.changelog
1.22: Assumption Audit trigger-definition rule — when a committed fork/leg has committed EFFECTS but its TRIGGER lacks a wire-class definition (e.g. a 'did…

Incubation Loop

ℹ️ First, set expectations: before anything else, print one short line with this skill's version and its most recent change — the top entry of metadata.changelog above — e.g. incubation-loop vX.Y — recent: <summary>. Then proceed.

Autonomous thinking engine. Each scheduled run advances all active thinking topics by one analytical move, persisting reasoning state across runs until convergence.

Purpose

Continuous intellectual iteration on open questions. Uses a rotating set of research-validated analytical moves (ACH, Bayesian updating, dialectical steelmanning, cross-domain bridging) to build toward well-grounded conclusions - without requiring human presence in each cycle.

Design principle: Each run does one move per topic. Depth accumulates across runs. No single run tries to "solve" the question.

State Dependencies

SourceLocationReadWriteDescription
Thinking RegistryBrain/05-Meta/Thinking/THINKING-REGISTRY.md✓✓Active topics + status
Thinking FilesBrain/05-Meta/Thinking/[topic-slug].md✓✓Per-topic reasoning journal
Local Brain Searchresources/local-brain-search/✓Semantic search for KB evidence
Permanent NotesBrain/02-Permanent/✓Primary evidence source
Session ChangelogsBrain/05-Meta/Changelogs/✓Run log

Prerequisites

  • Registry file exists at Brain/05-Meta/Thinking/THINKING-REGISTRY.md
  • At least one active topic seeded (see Seeding section below) - or none, in which case the Starvation Floor (Step 1a) self-seeds one from the watched domains
  • Local Brain Search index up-to-date

Composes

  • /domain-watch - invoked by the Starvation Floor (Step 1a) when the active queue is empty, to formulate and activate a new topic from the domains under surveillance. Called by its unversioned name so its fixes propagate.

Process

Step 1: Get Date and Load Registry
bash
date '+%Y-%m-%d'

Read Brain/05-Meta/Thinking/THINKING-REGISTRY.md. Parse all topics with status: active.

If registry does not exist, create it:

markdown
---
created: YYYY-MM-DD
updated: YYYY-MM-DD
created_by: claude-sonnet-4-6
updated_by: claude-sonnet-4-6
agent_version: 01.25
---

# Thinking Registry

Active questions under continuous analysis.

| Topic Slug | Central Question | Status | Runs | Last Run |
|------------|-----------------|--------|------|----------|

If no active topics found, do NOT exit - run the Starvation Floor (Step 1a) so the thinking engine never idles.

Step 1a: Starvation Floor (only if zero active topics)

The thinking engine must never sit idle. If Step 1 found no active topics:

  1. Invoke /domain-watch (cross-skill). Its Starvation Floor guarantees at least one new topic is activated into the Thinking Registry, formulated from the domains under surveillance.
  2. Re-read Brain/05-Meta/Thinking/THINKING-REGISTRY.md and parse status: active topics again.
  3. If one or more active topics now exist, continue to Step 2 and process them this run.
  4. Only if /domain-watch still produced no topic (e.g. no domains configured), log to changelog and exit cleanly.

This makes topic generation autonomous: when human-seeded questions run out, the agent proactively formulates its own next question from the watched domains rather than going quiet. Crystallization of any resulting conclusion stays manual (human judgment).

Step 2: For Each Active Topic - Load State

Read Brain/05-Meta/Thinking/[topic-slug].md.

Parse frontmatter fields:

  • run_count (required) - how many iterations completed; drives move rotation
  • last_run (required) - date of last iteration
  • status (required) - active / converged / crystallized / retired
  • last_move (optional, written by loop) - which move was applied in the most recent run; informational
  • convergence_count (optional, written by loop) - number of consecutive runs at or near convergence criteria; used by framework-exhaustion detection in Step 7
  • topic (set at seeding) - the central question being analyzed

Parse from body:

  • current_hypotheses - list with confidence scores (from the most recent run's "Updated Hypotheses" table)
  • Last run's "Current Best Answer" and "Open Questions"
Step 3: Determine Next Thinking Move

Rotate through this sequence. Position = run_count mod 6:

PositionMoveResearch Basis
0ACH AuditHeuer (CIA) - Analysis of Competing Hypotheses
1Bayesian UpdateInformation theory - explicit confidence tracking
2Steelman OppositionSocratic dialectic - steel-man the opposite
3Cross-Domain BridgeConsilience method - what does an unrelated field say?
4Implication CheckFalsificationism (Popper) - if true, what follows? Is that true?
5Assumption AuditIntelligence SAT - which premises are load-bearing and shakiest?
Step 4: Run KB Search for Evidence

Use Local Brain Search to find relevant notes:

bash
cd $PROJECT_ROOT
# --no-track: this is an autonomous loop; its reads must NOT train q-values (scope-primitive learning hygiene)
python3 resources/local-brain-search/search.py "[central question]" --limit 8 --mode spreading --no-track 2>/dev/null
python3 resources/local-brain-search/search.py "[leading hypothesis]" --limit 5 --mode spreading --no-track 2>/dev/null

Environment note (Trinity container): the bare python3 .../search.py form fails on hosts without system-level faiss (ModuleNotFoundError: No module named 'faiss') - e.g. the Trinity scheduled-run container. Use the wrapper ./resources/local-brain-search/run_search.sh "[query]" [same flags] instead; it routes through the running daemon (or a venv fallback) and honors BRAIN_READ_SCOPE (defaults fail-closed to core). Same flags apply (--mode static|spreading, --threshold, --no-track, --limit).

Mode fallback for narrow technical topics: Spreading activation propagates through the graph's highest-centrality hubs, so for narrow/technical questions (e.g. AI-architecture, distributed-systems topics) it can return the emotional/neuroscience mega-hubs ([[Dopamine]], [[Flow is a selfless state]], [[In Buddhism - Self is an Illusion]]) as top hits - noise, not evidence. If spreading results are dominated by off-topic hubs, re-run the same queries with --mode static (vector similarity), which surfaces the precise topical notes. Use whichever mode yields on-topic evidence; static is often better for technical clusters, spreading for cross-domain/synthesis topics.

Threshold note (post-2026-06-25 cosine correction): The corrected cosine_ip index lowered raw query→note similarity scores, so the default --threshold 0.5 now frequently returns "No results found" even for on-topic queries (abstract/technical questions especially). If a search comes back empty, re-run with --threshold 0.25 and shorter, keyword-style queries before concluding the KB has no evidence. Treat 0.25-0.35 hits as candidate evidence to read and judge, not as automatic relevance.

Watch-derived topics (geopolitics/current events): core-scoped LBS predictably returns off-topic core notes for these - their evidence lives OUTSIDE core scope, in Brain/05-Meta/Watching/WATCH-LOG.md (recent scan entries) and predecessor/related thinking files in Brain/05-Meta/Thinking/. Go to those directly (grep by slug/keyword) instead of burning search retries; a full read of the predecessor's run history often surfaces evidence its Final Synthesis omits. Exception that DOES work on core: search for the analytical method the current move needs rather than the subject matter (e.g. "evidence diagnosticity competing hypotheses" for an ACH/Assumption Audit) - the core KB's decision-science notes (Bernoulli's Fallacy, base-rate blindness, framework-exhaustion guard) are on-topic for the reasoning, even when nothing is on-topic for the subject.

Read the top 3-4 most relevant notes in full. These are the evidence base for this iteration.

Step 5: Apply the Thinking Move

Execute the move based on what was determined in Step 3. For each move:

Injection adjudication precedence (all moves): if the topic file carries a domain-watch evidence injection (<24h) containing arrivals OUTSIDE the pre-registered event space (candidate structural breaks, actor inversions) or with an explicit adjudication order, execute those adjudications FIRST - void-vs-map against the stationarity caveat, partial-trigger splits per the v1.7 rule - and book them as argued arrivals BEFORE applying the rotation move. The rotation move then runs against the post-adjudication posterior. Never let a steelman/bridge/audit consume ambiguous arrivals implicitly - adjudication is a separate, ordered act (interpretation is where confirmation bias operates).

Guard-interaction rule (all moves): pre-registered ratio/laundering guards (e.g. "no lower-regime event may move the H1:H3 ratio") bind EVENT bookings. An analytical move that wants to revise a PRIOR booking (a steelman deflating an over-determined evidence credit, an assumption audit weakening a premise) may do so only as an explicit booking-audit: name the original booking being revised, and either (a) apply the revision jointly so the guarded ratio is preserved (correct when the revised credit was booked jointly to the guarded hypotheses), or (b) document why a ratio-moving revision is not the laundering the guard polices. Silent re-interpretation that drifts a guarded ratio is procedurally indistinguishable from the confirmation bias the guard exists to catch.

ACH Audit
  • List all current competing hypotheses
  • For each piece of KB evidence found: does it support, contradict, or not apply to each hypothesis?
  • Build a simple diagnostic matrix (evidence × hypotheses)
  • Eliminate any hypothesis that is contradicted by multiple pieces of evidence
  • Update confidence scores for surviving hypotheses
  • Matrix-integrity pass (repeat-ACH rule): when the rotation returns ACH to a topic whose posterior has NOT moved since the standing matrix was built, do not rebuild - run an integrity pass instead: (i) elimination check (does any hypothesis now face multiple independent full-weight contraries? NEVER eliminate a hypothesis inside the pre-arrival window of its own committed discriminator), (ii) tether check (does every row still map to a live committed stream? inter-run annotations enter as weight footnotes, not row changes), (iii) new-evidence placement (context-class arrivals get an explicit diagnosticity verdict on the live partition - "non-diagnostic" is a recordable finding). A rebuild without a moved posterior manufactures precision the evidence has not paid for (framework-exhaustion guard).
  • Output: Pruned hypothesis list with updated confidence levels
Bayesian Update
  • State prior confidence in leading hypothesis (from last run)
  • Identify new evidence from KB search
  • Explicitly reason: "Given this evidence, should I be more or less confident? By how much?"
  • Use rough likelihood ratios (e.g., "this evidence is 3x more likely if H1 is true than if H2 is true")
  • Compute and record updated posterior confidence
  • Empty arrival window: if no genuinely new evidence has arrived since the prior run (common when the run slot lands between domain-watch scans), the honest output is posterior = prior with zero drift - do NOT manufacture 1-2pp movement from re-read evidence. Spend the run on the second half of Bayesian discipline instead: pre-register likelihood ratios and posterior bands for the topic's named watch events, so future updates are mechanical against a committed table rather than post-hoc. If pre-registration is already complete, CONSOLIDATE instead: gather commitments scattered across prior runs into one standing table (event / state: live-consumed-dormant / committed effect) so future updates read one reference, not a multi-run reconstruction. Consolidation is REPEATABLE: when a previously consolidated ledger has itself accreted amendments across subsequent runs, a later empty window re-consolidates into a superseding version (v2, v3, ...) - cite per-cell the run that committed each rule, and state explicitly that the new version supersedes the old ledger plus its scattered amendments for scoring purposes. Successor-topic rule: when the topic inherits a predecessor's event labels (P-table continuity), the labels do NOT carry their old committed effects - re-derive every LR/band against the successor's own hypothesis field, and commit any cross-hypothesis coupling earlier moves discovered (e.g. talks-collapse is simultaneously H1-down AND H2-up under an option-value finding) into the table itself, so no future arrival can be post-hoc scored as moving only the convenient hypothesis. Slow-accrual evidence (e.g. continued silence on a watched channel) is booked at its natural granularity (weekly), not re-scored every slot.
  • Partial-trigger adjudication (applies to ANY move consuming a pre-registered event): when a committed event fires partially - some legs satisfied, the literal trigger not met - do not binarize (neither "not fired, ignore" nor "fired, book the full band"). Split the committed effect: book its epistemic component in full (which future observables discriminate; table restructuring), book its evidential component at the LOWER band edge, mark the event PARTIALLY CONSUMED with an explicit re-fire condition for the remainder, and record all resulting movement as a P-table event (not framework drift) so the exhaustion-guard test stays honest. Named-flag variant: a flag (a pre-named arrival with no committed bands) that partially executes has NO evidential component to book; its epistemic component books in full as a RE-ARM of the remainder with a sharpened class test, and repeated same-class executions accrue grade within their booked stream, never fresh spread.
  • Output: New confidence scores with explicit reasoning for the change
Steelman Opposition
  • State the current leading hypothesis clearly
  • Construct the strongest possible argument AGAINST it - not a strawman
  • Search KB explicitly for evidence supporting the opposing view
  • Assess: does the steelman change the leading hypothesis, or does it survive?
  • If the steelman reveals a genuine weakness, revise the hypothesis
  • Survivorship rule (steelman targets that are STANDING RULES): when the steelman's target is a standing rule (a binding, guard, or booking convention) rather than a hypothesis, and the rule survives, do not leave it defended-by-argument only - arm an explicit falsifier: name the future observable that would re-open the question as a v1.10 booking-audit candidate at its own arrival (color instrument, never booking). A rule that survives its steelman must exit the run more falsifiable than it entered, not merely re-affirmed.
  • Output: Steel-manned opposition + response + any hypothesis revision
Cross-Domain Bridge
  • Identify the core mechanism or pattern in the current question
  • Run KB search from an unrelated domain (e.g., if topic is about AI, search neuroscience or Buddhism)
  • Find analogous patterns or contradictory evidence from that domain
  • Extract what the foreign domain implies about the current question
  • Pre-fire annotation rule: when the bridge's insight concerns a pre-registered event that has NOT yet fired, do not leave it as loose narrative - convert it into a pre-committed interpretive annotation on that event's committed legs (color, never weights), fixed BEFORE the outcome is known. This is the bridge-move analog of the steelman survivorship rule: it forecloses post-arrival framing inflation (e.g. a manufactured announcable being half-promoted toward a movement leg because coverage narrates it as historic).
  • Output: Cross-domain insight + revised framing of the question (if warranted)
Implication Check
  • Take the current leading hypothesis as given (temporarily)
  • Derive 3-5 concrete, testable implications that should be true if the hypothesis holds
  • Search KB and reason about whether those implications are actually supported
  • External probe (this move only — no other move uses WebSearch): If an implication concerns time-sensitive empirical state the KB cannot resolve, run up to 2 web searches per topic per run to test it. Restrict queries to reputable sources via site: filtering — peer-reviewed (arxiv.org, nature.com, science.org, pubmed.ncbi.nlm.nih.gov), established outlets (economist.com, ft.com, reuters.com, apnews.com, bloomberg.com), analytical (hbr.org, quantamagazine.org). (This is a subset of the canonical allowlist in resources/SOURCE-AUTHORITY.md — kept inline for in-query reliability; keep in sync with that file.) Crawler caveat: several of these domains (reuters.com, apnews.com, ft.com, economist.com) are not accessible to the WebSearch user-agent and an allowed_domains probe restricted to them returns a 400 error — wasting one of the 2 probes. Do NOT pass those as a hard allowed_domains filter; instead run the query unrestricted (or allow only the crawlable reputable domains: bloomberg.com, nature.com, arxiv.org, hbr.org, and analytical trackers like CSIS/RUSI/AEI/Jamestown) and judge source quality manually. Tag each external finding as [EXTERNAL: source — date] in the run output so KB-grounded vs. web-augmented evidence is auditable.
  • If an implication is clearly false, that is disconfirming evidence for the hypothesis
  • Decomposition pre-commitment rule: when the implications accrue ASYMMETRICALLY across separable components of the hypothesis (e.g. its mechanism/propensity supported while its location or timing contrary-accrues), do not leave the asymmetry as loose narrative - commit the component decomposition and the post-arrival reading of the relevant committed leg BEFORE that discriminator fires (color, never weights). This forecloses both post-hoc escapes at the arrival: inflating the leg's committed firing into full refutation of the hypothesis, or discounting the firing because the disconfirmed component "moved elsewhere."
  • Injection-first rule: if a recent domain-watch evidence injection in the topic file already observed the implications this run would probe (check for an ### Domain-Watch Evidence Injection block dated within ~24h), score against the injection's tagged [EXTERNAL] items instead of firing new web probes - re-probing freshly-observed state duplicates rather than tests. Note the banked budget explicitly in the run output.
  • Sensor-validity probes (exempt from the injection-first bar): a probe may target the INSTITUTIONAL VALIDITY of a committed observable surface - does the named microphone/institution currently exist and function (a parliament that sits, an agency that publishes, a data series still produced)? Scans observe wires, not institutional status, so a certified-empty scan does NOT cover this question: surface silence is ambiguous between "no event" and "no institution." A validity finding books as framework structure (sensor re-scope, committed-leg surface reassignment, named re-open condition on restoration), never as event weights - and any silence previously read as informative color from an institutionally-dark surface is retroactively voided as color.
  • Output: Implications assessed as supported/unsupported/unknown + impact on hypothesis confidence
Show full SKILL.md (1,365 more words)Show less
Assumption Audit
  • List the 3-5 key assumptions the current reasoning rests on
  • Rank by: (a) how load-bearing for the conclusion, and (b) how uncertain/shaky
  • Focus scrutiny on high load-bearing + high uncertainty assumptions
  • For the shakiest assumption: search KB for evidence bearing on it
  • Trigger-definition rule: when a committed fork/leg has committed EFFECTS but its TRIGGER lacks a wire-class definition (an undefined "did it happen" test is post-hoc latitude in both directions - premature firing on filtered silence, or indefinite withholding), the audit's product is the committed trigger definition: (i) a positive-wire path firing at its arrival with stale-guards binding; (ii) a silence-based path gated to the natural read-point PLUS one news-cycle allowance (bare read-point firing barred where the observability filter is readout lag, not event absence); (iii) a provisionality/unwind rider on any silence-based firing - a later wire proving the event occurred supersedes-and-replaces in full (unwind, not booking-audit, because the firing was made on certified absence). Committed effects are never changed - only the trigger machinery is supplied.
  • Attribution-vs-booking separation: when the audit challenges the INTERPRETIVE basis of a committed leg (choice vs inability, deliberate vs stray) but the leg's hypothesis is scoped such that the outcome disconfirms it under ALL readings (e.g. window-scoped), the leg stands at full weight and no booking-audit opens - the challenge's real content books as attribution structure on DOWNSTREAM machinery (re-arm/decay schedules, successor readings), committed pre-arrival with a named wire-class re-open condition. This keeps committed bookings robust while giving genuine audit findings a home that isn't leader-protective dilution.
  • Output: Assumption vulnerability map + revised conclusion if key assumption weakens
Step 6: Write Updated Thinking File

Append to Brain/05-Meta/Thinking/[topic-slug].md:

markdown
### Run [N]: [Move Name] - [YYYY-MM-DD]

**KB Evidence Consulted:**
- [[Note A]] - [one line on relevance]
- [[Note B]] - [one line on relevance]

**Analysis:**
[2-4 paragraphs of actual reasoning from the move]

**Updated Hypotheses:**
| Hypothesis | Confidence | Change |
|-----------|------------|--------|
| H1: [statement] | X% | ↑/↓/→ from Y% |
| H2: [statement] | X% | ↑/↓/→ from Y% |

**Current Best Answer:** [1-2 sentences - the leading position after this run]

**Open Questions for Next Run:** [What remains unresolved or most worth probing]

Update the frontmatter: updated, updated_by, run_count, last_run.

Step 7: Check Convergence

A topic has converged when ANY of the following holds:

Standard convergence (all four must be true):

  • run_count >= 4 (minimum 4 cycles)
  • Same hypothesis has led for 3+ consecutive runs
  • Confidence delta between last two runs < 5 percentage points
  • No major open questions flagged in last run

Framework exhaustion (alternate path - triggers automatic convergence):

  • run_count >= 10 AND
  • The top two hypotheses have not changed relative order for 5+ consecutive runs AND
  • Neither leading hypothesis's confidence has moved by more than 2pp across those 5 runs

(The 5-run window INCLUDES the current run, evaluated after its move completes - a flip at run N makes the trigger first testable at run N+4, not N+5. Empty-arrival-window zero-drift runs do NOT count toward the 5-run window: a run that booked posterior = prior under the Bayesian empty-window rule - because nothing arrived, not because evidence failed to discriminate - is stasis by discipline, not by exhaustion. Gated-arrival zero-drift runs are the same case: a run where an arrival DID land but booked nothing because its entire booking authority sits at a committed future read-point (e.g. a day-N leg) is also stasis by discipline and does not count toward the window. Context-class arrivals are the same case too: a run whose only arrivals belong to streams the ledger commits to never booking (context-only rows, rhetoric-class items under a cheap-talk rule) books zero drift by discipline, not by exhaustion, and does not count toward the window.)

When framework exhaustion is detected:

  1. Apply one final Assumption Audit move on the framework itself (not the evidence). Ask: is the analytical framework (hypothesis structure, key distinctions) discriminating between meaningfully different world-states, or producing precision on an empirically-indistinct difference?
  2. Note the assessment in the run output explicitly
  3. The step-1 audit is determinative, not ceremonial. If the topic carries pre-registered discriminators (committed P-table legs with materially separated effects) scheduled to land within its own committed window, the audit answers "still discriminating" and the trigger DEFERS - converging days before the topic's own committed discrimination events would discard the mechanical scoring the pre-registration built. Log the deferral explicitly and name the run where the audit re-runs with teeth (typically after the committed window closes with every leg modal/silent).
  4. If the audit instead finds the distinction empirically indistinct: converge regardless of whether external "open questions" remain — those questions belong to a different topic (often: a parameter or timing question, not the structural question that was asked)

This guards against the "Confirmation Bias as Hyper-Precise Prior" failure mode: an analysis that produces ever-finer confidence scores on a distinction that the evidence has already shown to be analytically empty.

If converged (either path):

  • Set status: converged in the thinking file frontmatter
  • Append the canonical Final Synthesis block (see below)
  • Add note: **CONVERGED** - Ready for crystallization via /manage-thinking-topics crystallize [slug]
  • Update registry status to converged

If not converged: continue to next topic.

Canonical Final Synthesis block (appended once when status flips to converged):

markdown
---

## Final Synthesis

**Conclusion:** [1-2 paragraphs in plain prose - the substantive answer]

**Confidence:** X% on H[N] (and any co-leading hypotheses)

**Key evidence:**
- [[Note A]] - [why it mattered]
- [[Note B]] - [why it mattered]
- [[Note C]] - [why it mattered]

**Convergence path:** [Standard | Framework exhaustion] after [N] runs

**Remaining uncertainty:** [1 paragraph - what's known to be unknown; what could change this]

**Related topics:** [[other-converged-slug]] (if causally connected)

This block is the authoritative source for crystallization. Crystallize mode reads this section first, falls back to scanning the last run's "Current Best Answer" only if absent (legacy topics).

Step 8: Update Registry

Update Brain/05-Meta/Thinking/THINKING-REGISTRY.md:

  • Increment run count for each processed topic

  • Update last_run date

  • Update status (active → converged where applicable)

  • On convergence, MOVE the topic's row from Active Topics to Converged (Ready for Crystallization) using this exact row shape:

    | [slug] | [runs] | [one-sentence conclusion, ≤200 chars] → [[slug]] | [YYYY-MM-DD] |

Registry size discipline (hard rules — the registry is an index, not a journal):

  1. Registry frontmatter may contain ONLY: created, updated, created_by, updated_by, agent_version, and a single last_incubation_run field of AT MOST one line (~200 chars): timestamp + topic(s) + move + resulting status. Example: last_incubation_run: 2026-07-03 07:00 UTC — agent-zero-trust-primitive Run 1 ACH Audit, still active
  2. OVERWRITE last_incubation_run in place each run. NEVER append last_incubation_run_prior_* or any other run-history keys.
  3. NEVER write analytical narrative into the registry — full reasoning already lives in the topic file (Step 6) and the session changelog (Step 9). Duplicating it in the registry made it unreadable (~100k tokens) and taxes every skill that loads it.
  4. Converged-table conclusion cells stay at ONE sentence; the authoritative synthesis is the topic file's ## Final Synthesis block, which crystallize mode reads directly.
  5. If legacy oversized fields or rows exist in the registry, do NOT imitate them — follow this format.
Step 9: Write Session Changelog

Write to Brain/05-Meta/Changelogs/CHANGELOG - Incubation Loop YYYY-MM-DD-HHMM.md (UTC run-slot suffix, e.g. -1000 — the loop runs multiple times per day, so date-only names collide; this matches the existing files on disk):

Run-slot clock caveat (Trinity container): the container's date can lag the platform's scheduled-run timestamp by hours. Take HHMM from the Execution Context timestamp (or the next 2h slot after the newest existing changelog for today), not from date — otherwise the suffix collides with an already-written file.

markdown
---
created: YYYY-MM-DD
updated: YYYY-MM-DD
created_by: claude-sonnet-4-6
updated_by: claude-sonnet-4-6
agent_version: 01.25
---

# Incubation Loop Session: YYYY-MM-DD

## Topics Processed

| Topic | Move Applied | Confidence Shift | Status |
|-------|-------------|-----------------|--------|
| [slug] | [move name] | [leading H]: Y% → Z% | active/converged |

## Notable Shifts
[Any hypothesis revisions, convergences, or surprising KB evidence]

## Converged Topics (Ready for Crystallization)
[List any topics that reached convergence this run]

Seeding a New Topic

To add a topic to the loop, create Brain/05-Meta/Thinking/[topic-slug].md:

markdown
---
created: YYYY-MM-DD
updated: YYYY-MM-DD
created_by: claude-sonnet-4-6
updated_by: claude-sonnet-4-6
agent_version: 01.25
topic: "[exact question being analyzed]"
run_count: 0
last_run: null
last_move: null            # optional - written by loop after each run
convergence_count: 0       # optional - written by loop; tracks consecutive runs meeting convergence criteria
status: active
---

# Thinking: [Topic Title]

## Central Question
[The exact question. Precise framing matters - ambiguous questions stay ambiguous.]

## Why This Question Matters
[1-2 sentences on stakes or relevance]

## Initial Hypotheses
| Hypothesis | Initial Confidence | Basis |
|-----------|-------------------|-------|
| H1: [statement] | X% | [prior knowledge or intuition] |
| H2: [statement] | X% | [prior knowledge or intuition] |

## Known Evidence (Pre-Run)
[Any notes or sources already known to be relevant]

## Constraints and Assumptions
[What are you taking as given? What's out of scope?]

---
*[Analytical runs will be appended below by the incubation loop]*

Then add to THINKING-REGISTRY.md:

| [topic-slug] | [central question] | active | 0 | null |

Crystallization (Manual)

When a topic reaches status: converged, the human should:

  1. Read the full thinking file
  2. Run /synthesize-insights [topic-slug] to graduate conclusions to a permanent note
  3. Archive thinking file: set status: crystallized
  4. The permanent note becomes part of the KB for future searches

Do not automate crystallization - judgment calls about what conclusions deserve permanence belong to the human.


Error Handling

ErrorRecovery
Registry missingCreate empty registry, log, exit cleanly
No active topicsRun Starvation Floor (Step 1a) - invoke /domain-watch to self-seed a topic from watched domains; only log and exit cleanly if it too produces nothing
KB search returns emptyTry alternate search terms from hypothesis text; if still empty, note in run log and skip KB-grounding for this move
Thinking file missing for active topicLog warning in registry, skip topic
Run exceeds 45 minutesProcess topics in order; skip remaining, log which were skipped

Completion Checklist

  • Registry read - active topics identified
  • Each active topic: KB searched with relevant queries
  • Each active topic: correct move in rotation applied
  • Each active topic: thinking file updated with reasoning + confidence scores
  • Convergence checked for each topic
  • Registry updated (run counts, dates, status changes)
  • Session changelog written to Brain/05-Meta/Changelogs/

Self-Improvement

After completing this skill's primary task, consider tactical improvements:

  • Review execution: Were there friction points, unclear steps, or inefficiencies?
  • Identify improvements: Could the thinking moves, convergence criteria, or file structure be sharper?
  • Scope check: Only execution changes - NOT changes to the ACH/Bayesian/dialectic framework itself
  • Apply improvement (if identified):
    • Edit this SKILL.md with the specific improvement
    • Keep changes minimal and focused
  • Version control:
    • git add .claude/skills/incubation-loop/SKILL.md
    • git commit -m "refactor(incubation-loop): <brief improvement>"

© Abilityai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/incubation-loop of Abilityai/cornelius.

Open the folder on GitHubat commit fd5e9a4

Compare with similar skills

Incubation Loop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Incubation Loop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Incubation Loop this skillAbilityai/cornelius109—~10kAutomated safety check: NotesMIT
Process Inboxtelegramdesktop/tdesktop33k2 repos~4.5kAutomated safety check: PassGPL-3.0
Nutrient Document Processingaffaan-m/ECC274k4 repos~1.5kAutomated safety check: PassMIT
Process Mapperalirezarezvani/claude-skills28k—~2.2kAutomated safety check: PassMIT
Iterative Retrievalaffaan-m/ECC274k7 repos~1.6kAutomated safety check: PassMIT
Iterative Retrievalaffaan-m/ECC274k2 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Process Inbox

    telegramdesktop/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    33k GitHub starsUsed in 2 repos~4.5k tokens
    Productivity & AutomationAuto-check passed
  • Process, convert, OCR, extract, redact, sign, and fill documents using the Nutrient DWS API.

    274k GitHub starsUsed in 4 repos~1.5k tokens
    Documents & OfficeAuto-check passed
  • Process Mapper

    alirezarezvani/claude-skills

    A skill your agent uses when a BizOps lead, COO, or process-improvement owner needs to document an end-to-end business process (procurement, employee onboarding, incident handoff…

    28k GitHub stars~2.2k tokensUpdated 1 mo ago
    Business, Finance & HRAuto-check passed
  • Pattern for progressively refining context retrieval to solve the subagent context problem.

    274k GitHub starsUsed in 7 repos~1.6k tokens
    Agent WorkflowsAuto-check passed
  • サブエージェントのコンテキスト問題を解決するために、コンテキスト取得を段階的に洗練するパターン. An agent skill from affaan-m/ECC.

    274k GitHub starsUsed in 2 repos~1.1k tokens
    Auto-check passed
  • 서브에이전트 컨텍스트 문제를 해결하기 위한 점진적 컨텍스트 검색 개선 패턴. An agent skill from affaan-m/ECC.

    274k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check passed

More from Abilityai/cornelius

All 56 skills in this repo
  • Nano Banana Image Generator

    Abilityai/cornelius

    Generate images using Google's Nano Banana (Gemini 2.5 Flash Image).

    109 GitHub stars~1.2k tokensUpdated 15 days ago
    Auto-check: notes
  • Changelog Protocol

    Abilityai/cornelius

    Protocol for creating dated changelog files after significant agent sessions.

    109 GitHub stars~555 tokensUpdated 15 days ago
    Auto-check passed
  • Create Article

    Abilityai/cornelius

    Create long-form articles from knowledge base insights. An agent skill from Abilityai/cornelius.

    109 GitHub stars~2.1k tokensUpdated 15 days ago
    Auto-check: notes
  • Epistemic Classification

    Abilityai/cornelius

    Framework for distinguishing research findings from hypotheses and speculative synthesis.

    109 GitHub stars~1.5k tokensUpdated 15 days ago
    Auto-check passed
  • Get Youtube Transcript

    Abilityai/cornelius

    Extract the transcript from a YouTube video by URL or video ID.

    109 GitHub stars~525 tokensUpdated 15 days ago
    Auto-check: notes
  • Insight Capture Format

    Abilityai/cornelius

    Standard format for capturing and documenting insights in the knowledge base.

    109 GitHub stars~616 tokensUpdated 15 days ago
    Auto-check passed

Questions about Incubation Loop

What does Incubation Loop do?

Autonomous iterative thinking loop - processes active topics using rotating analytical moves (ACH, Bayesian updating, steelmanning, cross-domain bridging, implication checks) and persists reasoning…. Incubation Loop is an agent skill from Abilityai/cornelius.

How do I install Incubation Loop in Claude Code?

Run `npx skills add Abilityai/cornelius --skill incubation-loop -a claude-code`. Or copy the skill folder (.claude/skills/incubation-loop in Abilityai/cornelius) into .claude/skills/incubation-loop in your project. Claude Code loads it when a task matches its description.

How do I install Incubation Loop in Codex?

Run `npx skills add Abilityai/cornelius --skill incubation-loop -a codex`. Or copy the skill folder (.claude/skills/incubation-loop in Abilityai/cornelius) into .agents/skills/incubation-loop in your project. Codex loads it when a task matches its description.

Can I use Incubation Loop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Abilityai/cornelius --skill incubation-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/incubation-loop, .gemini/skills/incubation-loop, .github/skills/incubation-loop and .opencode/skills/incubation-loop in your project.

What does Incubation Loop need to run?

Going by SKILL.md and its folder, Incubation Loop needs the command-line tools its instructions call (python3 and git). Its frontmatter pre-approves these tools: Read, Write, Grep, Glob, Bash, WebSearch, Skill.

Does Incubation Loop access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Incubation Loop safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Incubation Loop use?

Incubation Loop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Incubation Loop use?

About 10k tokens (SKILL.md is roughly 41k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Incubation Loop?

Skills that share tags, products or a category with Incubation Loop: Process Inbox (telegramdesktop/tdesktop, 33k stars), Nutrient Document Processing (affaan-m/ECC, 274k stars), Process Mapper (alirezarezvani/claude-skills, 28k stars) and Iterative Retrieval (affaan-m/ECC, 274k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Incubation Loop?

Abilityai (a GitHub organization) maintains it in Abilityai/cornelius, which has 109 GitHub stars. The repository holds 56 skills in this directory. The repository was last updated on September 22, 2026.

Source: Abilityai/cornelius on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.