Molecule lifecycle commands
These commands use physics-inspired names (nucleate, evolve, decay, spore, …). New to the vocabulary? See The physics vocabulary.
cs spark
Spark — capture a one-line operator intent into the Inbox (ADR-061)
Usage: cs spark [OPTIONS] <TEXT>
EXAMPLES: cs spark "réunion demain : revoir le pitch" cs spark "debug the flaky test" --kind task cs spark "CI broken on macOS" --kind issue --tag temp:warm cs spark "constellation idea" --nucleon operator-demo@example.com
A spark is the pre-task — a one-line operator intent dropped into the Inbox (HOT bucket by default) with the sparker's identity attached. The demo criterion: operator-demo on her iPhone via Blink Shell SSH types a single spark and the operator sees it on the next 'cs peek' refresh. No Claude Code in the chain.
DEFAULTS: --kind idea # 💡 one-line Inbox shape --tag temp:hot # surfaces in 'cs inbox' HOT bucket nucleon_id: git user.email, else $USER@$(hostname)
SACRIFICES: offline fails, auth ≡ SSH access, no push (next refresh), raw Blink terminal UX, v1 is one-way (no pilot reply from Inbox).
SEE ALSO: cs inbox (where sparks land), cs tackle (promote to work), cs transform (re-kind), cs collapse (reject with reason).
Arguments:
-
<TEXT>— The spark text itself — what appeared in the operator's head.Captured verbatim into the molecule's
topicvariable and thus intoprompt.md(sealed by the usual nucleate path). Quote the argument if it contains spaces.
Options:
-
--kind <KIND>— Override the molecule kind. Defaults toidea(💡) — the Jobs §2 shape. Acceptsidea,task,issue, or any other [cosmon_core::kind::MoleculeKind] string the operator cares to pass; the actual validation happens innucleateDefault value:
idea -
--tag <TAG>— Tag to attach (repeatable). When no--tagis supplied the spark lands withtemp:hotso it surfaces immediately incs inbox(HOT bucket) andcs ensemble --tag temp:hot -
--fleet <FLEET>— Fleet to nucleate into. Defaults todefaultDefault value:
default -
--nucleon <NUCLEON>— Override the auto-derivednucleon_id(sparker identity).Normally derived from
git config user.emailwith a$USER@$(hostname)fallback. Pass this when scripting a test demo or when the git email is not the identity you want to record. -
--sparked-by <SESSION_ID>— Currently-open pilot-session molecule id (ADR-061 §SparkedBy).Recorded as a variable only in v1 — the
SparkedBytyped link is reserved until ADR-061 is markedaccepted. Passed verbatim intoprompt.mdso later migrations can recover the edge. -
--formula <FORMULA>— Override the formula name (defaults tospark). Exists for tests and for exotic deployments that vendor their own capture formula; normal callers leave this unsetDefault value:
spark -
--formulas-dir <DIR>— Path to the formulas directory (defaults to walk-up discovery) -
--store-dir <DIR>— Path to the state store root (defaults to walk-up discovery)
cs drop
Drop — universal Inbox gesture (hotkey / zsh widget / menubar) → cs spark
Usage: cs drop [OPTIONS] [TEXT]...
EXAMPLES: cs drop # universal Inbox gesture — captures whatever is in scope
Equivalent of cs spark reachable from hotkey / zsh widget / menubar.
SEE ALSO: cs spark (canonical), cs nucleate spark (formula form).
Arguments:
-
<TEXT>— The drop text itself. When absent or empty, the text is read from stdin — supportscs drop < fileand pipe chains.Multiple words are joined with single spaces so callers can pass raw command-line tokens (
cs drop hello there) without quoting. Leading/trailing whitespace is trimmed.
Options:
-
--galaxy <NAME>— Galaxy name to drop into. Resolved via~/.config/cosmon/galaxies.toml([TomlGalaxyIndex]).When set, the resolved
Galaxy.pathbecomes the store root (<path>/.cosmon/state/) for this nucleation. Without it, cosmon's usual walk-up discovery picks the galaxy from the current working directory. -
--kind <KIND>— Molecule kind override. Defaults toidea— same ascs spark.The briefing names
spark | idea | taskas common choices; any valid [cosmon_core::kind::MoleculeKind] token is accepted (validated innucleate).Default value:
idea -
--tag <TAG>— Additional tag to attach (repeatable).temp:hotandsource:dropare always added;--tagextends the list.Callers use this to stamp the drop's origin surface (e.g.
--tag source:shortcutfrom the iPhone SSH wrapper, which supplements rather than replacessource:drop). -
--fleet <FLEET>— Fleet to nucleate into. Defaults todefaultDefault value:
default -
--nucleon <NUCLEON>— Override the auto-derivednucleon_id(drop author identity). Same semantics ascs spark --nucleon -
--sparked-by <SESSION_ID>— Currently-open pilot-session molecule id (ADR-061 §SparkedBy). Same semantics ascs spark --sparked-by -
--formula <FORMULA>— Override the formula name (defaults tospark). Exists for tests and exotic deployments; normal callers leave this unsetDefault value:
spark -
--formulas-dir <DIR>— Path to the formulas directory (default: walk-up discovery) -
--store-dir <DIR>— Path to the state store root (default: walk-up discovery, or the galaxy-registry lookup when--galaxyis set)
cs listen
Listen — voice → whisper.cpp → cs nucleate spark (MVP)
Usage: cs listen [OPTIONS]
EXAMPLES: cs listen # voice-driven spark capture (whisper.cpp) cs listen --once # single utterance, then exit
Voice ingress to the fleet. Wraps whisper.cpp transcription and
produces a spark molecule per utterance.
SEE ALSO: cs spark, cs drop.
Options:
-
--seconds <SECONDS>— Seconds to record before cutting off (no VAD in v0).Ignored when
--transcriptor--audiois supplied. Keep the value short: whisper-cli on CPU runs near 1× realtime on thesmallmodel, so 15 s of speech costs ~15 s of wall-clock.Default value:
10 -
--transcript <TEXT>— Skip recording + transcription and use this text directly.Useful for scripting (end-to-end dry-runs without a microphone) and for isolating the spark pipeline from the audio stack when debugging. Incompatible with
--audio. -
--audio <PATH>— Transcribe an existing audio file instead of recording.Accepted formats are whatever the configured
whisper-cliwas built with (WAV/FLAC/MP3 on the default homebrew build). Incompatible with--transcript. -
--whisper-bin <PATH>— Path to the whisper-cli binary (defaults towhisper-cliin $PATH).This is the
whisper.cppCLI (brew install whisper-cpp), not theOpenAIPython package — the latter is slower and violates the local-first constraint (it bundlesPyTorch).Default value:
whisper-cli -
--model <PATH>— Path to the whisper model (e.g.ggml-small.bin).Can also be set via the
COSMON_WHISPER_MODELenv var. Required for actual transcription — if absent and--transcriptwas not supplied the command fails loudly instead of silently producing an empty spark. -
--language <LANG>— Whisper language hint:auto,fr,en, …The whisper-cpp flag accepts ISO 639-1 codes.
autoasks whisper to detect the language itself.Default value:
auto -
--ffmpeg-bin <PATH>— Path to the ffmpeg binary used for recordingDefault value:
ffmpeg -
--device <SPEC>— ffmpegAVFoundationinput device specifier.On macOS the default microphone is
":0". Runffmpeg -f avfoundation -list_devices true -i ""to enumerate.Default value:
:0 -
--dry-run— Skip nucleation — print the transcript only.Use this when validating the audio path on a fresh machine so you do not pollute the Inbox with test utterances.
-
--kind <KIND>— Molecule kind for the resulting spark (delegated tocs spark)Default value:
idea -
--tag <TAG>— Tag to attach (repeatable, defaults totemp:hot) -
--fleet <FLEET>— Fleet to nucleate intoDefault value:
default -
--nucleon <NUCLEON>— Override the auto-derivednucleon_id(sparker identity) -
--formulas-dir <DIR>— Path to the formulas directory (defaults to walk-up discovery) -
--store-dir <DIR>— Path to the state store root (defaults to walk-up discovery)
cs nucleate
Nucleate a new molecule from a formula template
Usage: cs nucleate [OPTIONS] [FORMULA]
EXAMPLES:
cs nucleate task-work --var topic="refactor CLI help"
cs nucleate deep-think --kind deliberation --var question="..."
cs nucleate patrol --blocks root-mol # add a DAG edge
cs nucleate constellation --kind constellation
--var pattern="three molecules re-invent the same missing primitive"
--var citations="delib-example-0001,task-example-0002,idea-example-0003"
cs nucleate --from molecules/ # hydrate from TOML declarations
KINDS (--kind): idea 💡, task 🔧, decision 📐, issue 🐛, signal ⚡, deliberation 🧠 (use with the deep-think formula), constellation 🌌 (fil-rouge artifact; see cs help guide).
LINK FLAGS:
--blocks
SEE ALSO: cs tackle (launch a worker on the molecule you just nucleated). docs/guides/constellation-pattern.md (when to use 🌌 vs 🧠).
Arguments:
-
<FORMULA>— Formula name (looks for{name}.formula.tomlin the formulas directory).Required unless
--fromis supplied.
Options:
-
--from <PATH>— Hydrate molecule(s) from a TOML declaration file or directory.When
PATHis a directory, every*.tomlfile inside (non-recursive, sorted) is loaded as a [MoleculeDeclaration]. The positionalformulaargument is ignored in this mode — each declaration carries its ownformulafield. -
--blocks <MOLECULE_REF>— Target molecule(s) that this new molecule blocks — each target cannot progress until this one completes.Accepts two forms: -
<molecule-id>— same-galaxy edge. AddsBlockshere and a symmetricBlockedByon the target. Targets must already exist. -<galaxy-alias>:<molecule-id>(or<galaxy-alias>@<molecule-id>) — cross-galaxy edge (Phase 1, ADR-035). The remote target is resolved best-effort via configured galaxy aliases or the cluster root. The reciprocal edge is not filed on the target galaxy (one-writer-per-galaxy, ADR-052) — the edge is recorded locally and a stderr warning is emitted if the target is unreachable. -
--blocked-by <MOLECULE_REF>— Source molecule(s) that block this new molecule — this new molecule cannot progress until each source completes.Same syntax as
--blocks, including the<alias>:<mol_id>cross-galaxy form (Phase 1, ADR-035). -
--decayed-from <MOLECULE_ID>— Declare that the new molecule decayed fromPARENT_ID— an information edge (not a progression edge): the parent is the cognitive source this molecule emerged from, but the parent is free to keep advancing independently. Symmetric counterpart: the parent gains aDecayProductlink to the new molecule.This is the explicit form of the auto-parent contract: when a worker
cs tackles a molecule,COSMON_PARENT_MOL_IDis injected into its environment, and any subsequentcs nucleatefrom that worker auto-populates this flag unless one of--blocks,--blocked-by,--decayed-from, or--no-parentis already set. Passing it explicitly wins over the env var. -
--no-parent— Disable the env-driven auto-parent contract for this invocation.When set, the
COSMON_PARENT_MOL_IDenvironment variable is ignored and noDecayedFromedge is synthesized. Use this for legitimate orphan nucleations (e.g., a worker that intentionally spawns an unrelated top-level molecule). -
--refines <MOLECULE_ID>— Cited molecule(s) that this new molecule refines (semantic citation edge — does NOT carry progression semantics, unlike--blocks).For every target, the new molecule gets a
Refineslink and the target gets a symmetricRefinedBylink. Intended forConstellationmolecules that name a fil-rouge across N existing molecules. Repeat the flag per citation; targets must already exist.Also auto-populated for
--kind constellationfrom a comma-separated--var citations=mol1,mol2,mol3. -
--refutes <MOLECULE_ID>— Diagnosis molecule(s) that this new molecule refutes (semantic refutation edge — no progression semantics, unlike--blocks).For every target, the new molecule gets a
Refuteslink and the target gets a symmetricRefutedBylink. This is the DAG-native form of the ADR-143 diagnosis-verify gate: acmb-verifymolecule that reproduces a relayed symptom but finds the stated mechanism describes a nonexistent code path records the divergence by refuting the diagnosis molecule. Repeat the flag per refuted diagnosis; targets must already exist. -
--fleet <FLEET>— Fleet to nucleate the molecule into (default: "default")Default value:
default -
--kind <KIND>— Molecule kind: idea, task, decision, issue, signal, deliberation, constellation (seedocs/guides/constellation-pattern.md) -
--class <CLASS>— Operational class —standard(default),stress-test, orinfra(ADR-085 §1).stress-testopts the molecule into the two-layer pre-commitment seal at dispatch (Layer 1 runtime precondition + Layer 2 witness-quorum, ADR-085 §2-§3) and out of autopilot drain. The remaining classes are gate-equivalent to the legacy default; this flag is a marker, not a runtime mode. -
--assign <ASSIGN>— Assign a worker to the new molecule -
--var <KEY=VALUE>— Set a variable (repeatable: --var key=value) -
--formulas-dir <DIR>— Path to the formulas directory (default: ./formulas) -
--role <ROLE>— Agent role for the worker that will tackle this molecule.Valid roles: orchestration, research, implementation, infrastructure, advisory, validation. When set,
cs tackleuses this role instead of the defaultimplementation. -
--store-dir <DIR>— Path to the state store root (default: .cosmon) -
--tag <TAG>— Typed label to attach to the new molecule (repeatable).Format:
keyorkey:value. Keys are kebab-case; values exclude whitespace and:. Duplicate tags are deduplicated. -
--interaction-mode <MODE>— Static interaction-mode discriminant posed at nucleation.One of
operator-requiredorbackground. Recorded as theinteraction-mode:<mode>tag. Posed by the molecule's author — often an agent — and read at dispatch ; survives the operator's present state. Default explicit, not implicit : when absent, the tag is simply not set, and consumers (the graceful degradation controller, in particular) decide what to do.Conflicts with
--tag interaction-mode:*to keep the discriminant single-sourced. -
--may-block-on-operator <BOUNDARY>— Grant the operator-block capability at an irreversibility boundary (ADR-123 Q5).One of
signature,external-send,publish,authoritative-value. Recorded as theop-block:<boundary>tag. A worker reads this single typed capability to decide whether it MAY pause for an operator (cs await-operator) at that boundary — or, when absent, MUST surface-and-continue. The capability is granted here at nucleation and never self-asserted by the worker.Conflicts with
--tag op-block:*to keep the grant single-sourced. -
--ttl <DURATION>— Relative TTL — deadline is now + duration (ADR-029).Grammar:
<N><unit>where unit ∈ {s,m,h,d,w}. Examples:7d,24h,2w. Mutually exclusive with--expires-at. -
--expires-at <WHEN>— Absolute expiry instant (ADR-029).Accepts RFC3339 (
2026-07-02T00:00:00Z) or a plainYYYY-MM-DDdate (anchored at end-of-day 23:59:59Z). Mutually exclusive with--ttl. -
--expiry-policy <POLICY>— Expiry policy — what to do whenexpires_atis in the past.One of
warn,collapse,escalate. Defaults to the per-kind default from config (orwarn) when unset. Only meaningful when--ttlor--expires-atis also provided. -
--energy-budget <N>— Per-molecule step counter circuit breaker (THESIS Part XI).cs evolvedecrements this once per step. At zero, the next attempt transitions the molecule toFrozenwith reason"energy-exhausted". Default comes from.cosmon/config.toml[energy] default_step_budget(100 if absent). Pass0to disable the breaker for this molecule. -
--require-galaxy— Refuse to nucleate into the host-global~/.cosmon/statefleet.By default, running
cs nucleatefrom a directory with no.cosmon/config.tomlin cwd or any ancestor falls back to the host-global state dir ($HOME/.cosmon/state) and prints a warning to stderr — the molecule is born into a fleet invisible to every galaxy.--require-galaxyturns that warning into a hard error (exit ≠ 0), so scripts and tooling that must write galaxy-scoped state can fail fast instead of silently leaking orphans. -
--adapter <NAME>— Durable per-molecule adapter pin — the rung-1 provider-family intent stamped at nucleation (ADR-097 / C6; committee-20260723-c0a1).Unlike the transient
cs tackle --adapterflag (which routes a single dispatch), this pin is persisted toMoleculeData::adapterand survives any later run directive. Acs run --resident --adapter <X>owns a run-wide directive that stamps every pin-less molecule with<X>; a molecule nucleated with--adapter <Y>keeps<Y>because the per-molecule pin beats the run directive (cosmon_runtime::resident). This is what lets a cross-provider committee pin a seat's distinct family (e.g.mistral) so a resident loop driving the generator's family (e.g.claude) cannot auto-tackle the seat into aFamilyCollision.Values are validated against the adapter-name grammar (the same check
cs tackle --adapterapplies); an empty or malformed name aborts the nucleation.None(the default) stamps no pin — the molecule resolves its adapter through the canonicalcs tacklechain at dispatch.
cs observe
Observe a molecule's current state and history
Usage: cs observe [OPTIONS] [MOLECULE_ID]
EXAMPLES: cs observe task-example-0001 # one-shot snapshot (never poll!) cs observe task-example-0001 --json # for scripts
SEE ALSO: cs wait (block until terminal), cs peek (fractal TUI).
Arguments:
<MOLECULE_ID>— Molecule ID (or prefix) to inspect. Omit to list all molecules
Options:
-
--status <STATUS>— Filter by status (active, frozen, completed, collapsed) -
--worker <WORKER>— Filter by assigned worker -
--formula <FORMULA>— Filter by formula -
--search <SEARCH>— Free-text search across molecule fields -
--all— Include completed and collapsed molecules (excluded by default in list mode) -
--tag <GLOB>— Filter by tag glob pattern (repeatable, any-match) -
--notes <N>— Number of trailing notes to show in detail mode (default: 3)Default value:
3
cs evolve
Evolve a molecule to its next lifecycle state
Usage: cs evolve [OPTIONS] --evidence <EVIDENCE> --formula <FORMULA> <MOLECULE>
EXAMPLES:
cs evolve
--formula .cosmon/formulas/task-work.formula.toml
Worker-callable. Advances the molecule one step per invocation.
Arguments:
<MOLECULE>— Molecule ID to evolve
Options:
--evidence <EVIDENCE>— Evidence documenting why the current step is complete--ops-dir <OPS_DIR>— Path to the state store root (overrides walk-up discovery)--formula <FORMULA>— Path to the formula TOML file
cs complete
Complete a molecule — idempotent Active→Completed transition (worker-callable)
Usage: cs complete [OPTIONS] [MOLECULE]
EXAMPLES:
cs complete
Idempotent Active→Completed transition. Worker-callable. Does NOT merge
the branch or teardown the tmux session — use cs done for that.
SEE ALSO: cs done (merge + teardown), cs evolve (advance one step).
Arguments:
<MOLECULE>— Molecule ID to complete (single mode)
Options:
-
--batch <BATCH>— Complete multiple molecules at once -
--reason <REASON>— Reason for completion (recorded in the log)Default value:
completed via cs complete -
--ops-dir <OPS_DIR>— Path to the state store root (overrides walk-up discovery) -
--override-mindguard-down— Bypass mindguard only when the gate machinery itself is unreachable. Requires--justification. Lands a record in the append-only ledger at~/.cosmon/audit/mindguard-overrides.jsonlbefore the completion proceeds. NEVER use this to bypass aMindguardRefused— the remedy for that is to runcs nucleate verify-surface --var target=<MOL> -
--justification <JUSTIFICATION>— Justification for--override-mindguard-down. Required when the override flag is set. Recorded write-once in the audit ledger
cs collapse
Collapse a molecule — terminate with final state recording
Usage: cs collapse [OPTIONS] --reason <REASON> <MOLECULE>
EXAMPLES:
cs collapse
--cause rate_limit --account default --kind max_rolling_5h
Terminal transition. Use instead of leaving stale pending molecules.
Pass --cause to attribute the failure with a structured tag (ADR-062): rate_limit — quota refused; pair with --account ALIAS --kind CURRENCY (max_rolling_5h, max_weekly, api_key_org_monthly, …). Surfaces as ghost: quota-exhausted in cs peek. inference_stall — worker alive but stopped emitting tokens. manual — operator decision (default if --reason alone). process_death — worker process died (OOM, signal). unknown — could not be classified.
Arguments:
<MOLECULE>— Molecule ID to collapse
Options:
--reason <REASON>— Reason for the collapse--cause <CAUSE>— Structured cause attribution (ADR-062):rate_limit,inference_stall,manual,process_death,unknown. Withrate_limit, pair--accountand--kindfor the K3 fixture shape--account <ALIAS>— Account alias for--cause rate_limit(e.g.default)--kind <KIND>— Quota currency name for--cause rate_limit(e.g.max_rolling_5h,max_weekly,api_key_org_monthly,financial_usd,custody_scoped). Free-form to remain extensible across providers--reason-kind <REASON_KIND>— Operator-facing collapse classification forcs errorsaggregation: one ofworker_crashed,gate_failed,blocker_stuck,manual_abort,resource_exhausted. Any other value lands in [CollapseReason::Other] verbatim--ops-dir <OPS_DIR>— Path to the state store root (overrides walk-up discovery)
cs stuck
Stuck — freeze a molecule and record the blocker
Usage: cs stuck --reason <REASON> <MOLECULE>
EXAMPLES:
cs stuck
Terminal-ish: freezes the molecule with a recorded blocker. Consider
cs tag <mol> --add temp:frozen for backlog hygiene.
Arguments:
<MOLECULE>— Molecule ID that is stuck
Options:
--reason <REASON>— What is blocking progress
cs await-operator
Await-operator — the only sanctioned way to block on an operator decision at an irreversibility boundary (ADR-123). Routes on the molecule's op-block:* capability: block-and-emit, or surface-and-continue
Usage: cs await-operator --question <TEXT> <MOLECULE_ID>
EXAMPLES:
cs await-operator
Worker-callable (ADR-123). The ONLY sanctioned way to block on an operator decision at an IRREVERSIBLE boundary (signature transmitted, push to a shared remote, publish, an authoritative value downstream consumers act on). NEVER raise an off-cosmon modal (AskUserQuestion) — it is invisible to cosmon and the DAG stalls silently.
Routes on the molecule's op-block:<boundary> capability (granted at nucleation
via cs nucleate --may-block-on-operator <boundary>):
• capability present → BLOCK: writes blocked_on.json, emits
worker_blocked_on_operator, tags temp:awaiting-op, and yields. Molecule
stays Running.
• capability absent → SURFACE-AND-CONTINUE: writes responses/needs-review.md
and tells you to pick a sensible default and keep working (reversible).
SEE ALSO: cs nucleate --may-block-on-operator, cs patrol --event-age.
Arguments:
<MOLECULE_ID>— Molecule ID whose worker is blocking
Options:
--question <TEXT>— A decision the operator is being asked to make (repeatable). At least one is required
cs freeze
Freeze a worker — suspend with state preservation (preemption)
Usage: cs freeze [OPTIONS] <WORKER>
EXAMPLES: cs freeze worker-3 # suspend, keep state for later thaw cs freeze worker-3 --reason "rotating OOM" # graceful shutdown with recorded intent
--reason <str> is the canonical replacement for the former cs quench
verb (ADR-052 §D3): graceful shutdown with state preservation IS freeze,
and the reason captures operator intent on the audit event.
SEE ALSO: cs thaw (resume a frozen worker), cs tackle (launch replacement after freezing an incumbent — priority inversion = freeze + tackle).
Arguments:
<WORKER>— ID of the worker to freeze
Options:
-
--by <BY>— ID of the worker that is preempting this one (optional metadata) -
--reason <REASON>— Operator-supplied reason for the freeze, recorded on the event.Under ADR-052 §D3,
cs freeze --reason <str>subsumes the formercs quenchverb: "graceful shutdown with state preservation" is what freeze already does, and the reason is the missing metadata that distinguished quench's intent. -
--timeout <TIMEOUT>— Grace period in seconds before force-killing (default: 15)Default value:
15 -
--no-tmux— Skip tmux interaction (state-only transition, for testing)
cs thaw
Thaw a worker — resume a frozen worker's Claude session
Usage: cs thaw [OPTIONS] <WORKER>
EXAMPLES: cs thaw worker-3 # resume a previously frozen worker
SEE ALSO: cs freeze (counterpart), cs resume (nudge idle workers).
Arguments:
<WORKER>— ID of the worker to thaw
Options:
-
-c,--continue <CONTINUE_MSG>— Custom message to send after respawn instead of the default resume prompt.Useful for hot-restart scenarios: e.g. "A new MCP server X is now available. Continue your work on molecule Y."
-
--no-tmux— Skip tmux interaction (state-only transition, for testing)
cs decay
Decay a molecule into child molecules (1 → N)
Usage: cs decay [OPTIONS] --formula <FORMULA> --reason <REASON> <SOURCE>
EXAMPLES:
cs decay
1 → N. Children get a DecayProduct link back to parent. Remember to
cs tag <child> --add temp:warm so backlog curation works.
Arguments:
<SOURCE>— Source molecule ID to decay
Options:
-
--formula <FORMULA>— Formula for the product molecules -
--count <COUNT>— Number of products to create (or provide --product-vars multiple times)Default value:
1 -
--product-kind <PRODUCT_KIND>— Kind for the product molecules (default: task)Default value:
task -
--reason <REASON>— Reason for the decay -
--chain— Wire consecutive decay products with Blocks/BlockedBy links (A→B→C) -
--blocks <BLOCKS>— Explicit Blocks edges: the i-th product blocks the given molecule IDs. Repeatable; applied to each product in order
cs merge
Merge molecules into a synthesis (N → 1)
Usage: cs merge [OPTIONS] --formula <FORMULA> --reason <REASON> [SOURCES]...
EXAMPLES:
cs merge
N → 1. Inverse of decay.
Arguments:
<SOURCES>— Source molecule IDs to merge (space-separated)
Options:
-
--formula <FORMULA>— Formula for the product molecule -
--product-kind <PRODUCT_KIND>— Kind for the product molecule (default: decision)Default value:
decision -
--reason <REASON>— Reason for the merge
cs transform
Transform a molecule's kind (idea → task, etc.)
Usage: cs transform --to <TO> --reason <REASON> <MOLECULE>
EXAMPLES:
cs transform
Preserves molecule ID; rewrites kind + formula bindings.
Arguments:
<MOLECULE>— Molecule ID to transform
Options:
--to <TO>— Target kind: idea, task, decision, issue--reason <REASON>— Reason for the transform
cs tag
Tag — add or remove typed labels on a molecule
Usage: cs tag [OPTIONS] <MOLECULE_ID>
EXAMPLES:
cs tag
Temperature tags govern backlog curation — see CLAUDE.md § Molecule Temperature Tags.
Arguments:
<MOLECULE_ID>— Molecule ID to retag
Options:
--add <TAG>— Tag to add (repeatable). Format:keyorkey:value--remove <TAG>— Tag to remove (repeatable). Matched by exact string