From alive
Creates, shares, and graduates bundles as units of focused work in walnuts. Manages full lifecycle for outcome or evergreen bundles with deliverables or future audiences.
npx claudepluginhub alivecontext/alive --plugin aliveThis skill uses the workspace's default tool permissions.
Manage the bundle lifecycle: create, share, graduate, status. Bundles are the unit of focused work — anything with a deliverable or a future audience.
Scaffolds new walnut structures for ventures, experiments, life areas, persons, projects, or campaigns in ALIVE system. Maps context sources and optionally migrates files.
Creates, opens, and manages project workspaces in LiveDocs for cross-session memory, long-term tracking like diets or investments, and saving key outputs.
Manages tasks-plans/ workspace by adding actionable items to backlog, ideas for exploration, or dated references. Organizes files by topic into subfolders, processes queued work via subcommands.
Share bugs, ideas, or general feedback.
Manage the bundle lifecycle: create, share, graduate, status. Bundles are the unit of focused work — anything with a deliverable or a future audience.
This skill is invoked by the bundle awareness injection, by the load skill's "what are you working on?" prompt, or directly by the human via /alive:bundle.
The spectrum:
| One-off | Bundle | Walnut | |
|---|---|---|---|
| Sessions | This session only | Likely >1, or worth returning to | Own ongoing lifecycle |
| Deliverable | No | Yes — ship, send, or reference later | Multiple deliverables |
| Audience | Just you, right now | Someone specific, or future-you | Has its own people |
Trigger: "Does this have a deliverable or a future audience?" If yes -> bundle.
The default. A body of work with a deliverable — a document, a plan, a shipped feature. Has drafts, versions, a finish line.
Living reference material that grows over time. No "done" state — it accumulates. Research collections, style guides, knowledge bases. Status cycles between active and maintaining rather than progressing to done.
Bundles live flat in the walnut root. A folder is a bundle if it contains context.manifest.yaml.
nova-station/ # walnut root
_kernel/
shielding-review/ # bundle
context.manifest.yaml
raw/
launch-checklist/ # another bundle
context.manifest.yaml
raw/
No bundles/ subdirectory. Every bundle sits directly in the walnut root alongside _kernel/.
When no active bundle matches the current work:
╭─ 🐿️ new bundle
│
│ Name: shielding-review
│ Type: outcome
│ Walnut: nova-station
│ Goal: Evaluate radiation shielding vendors for habitat module
│ Path: shielding-review/
│
│ ▸ Good?
│ 1. Create
│ 2. Change name
│ 3. Make it evergreen instead
│ 4. Cancel
╰─
templates/bundle/context.manifest.yaml{{goal}}, {{date}}, {{session_id}}, {{type}}{walnut}/{name}/context.manifest.yaml{walnut}/{name}/raw/ (empty directory)project.py will pick up the new bundle on next save — no manual now.json update neededDo NOT create tasks.md or tasks.json — tasks are created on demand via tasks.py add.
Do NOT create observations.md — removed in v3.
The first draft file is {name}-draft-01.md when the human starts writing.
Every bundle has a context.manifest.yaml at its root. This is the bundle's identity and state tracker.
name: shielding-review
type: outcome # outcome | evergreen
goal: "Evaluate radiation shielding vendors for habitat module"
status: draft # draft | prototype | published | done | active | maintaining
created: 2026-03-28
session: abc123
sensitivity: normal # normal | private | shared
shared: []
discovered: {}
parent_bundle: # name of parent bundle, if nested
tags: []
people: []
sources: []
Key fields:
type — outcome or evergreen. Drives lifecycle behavior.status — outcome bundles: draft -> prototype -> published -> done. Evergreen bundles: active <-> maintaining.sensitivity — controls sharing and export behavior:
normal — can be shared freelyprivate — excluded from walnut.world publishing, flagged on share attemptsshared — actively published or shared with specific peopleparent_bundle — if this bundle is nested inside another, records the parent's namediscovered — populated by alive:mine-for-context with extraction trackingsources — paths to raw material or linked references from other bundlesWhen the human shares a bundle with someone (email, Slack, in person):
sensitivity — if private, warn before proceedingcontext.manifest.yaml shared: field:shared:
- to: Sue Chen
method: email
date: 2026-03-15
version: shielding-review-draft-02.md
-> [[person-name]])draft and it's been shared externally -> advance to publishedshared if it was normal╭─ 🐿️ bundle shared
│ shielding-review draft-02 -> Sue Chen via email
│ Status: draft -> published
╰─
When the human wants to publish a bundle to walnut.world:
sensitivity — block if privatecontext.manifest.yaml with publication record╭─ 🐿️ bundle published to walnut.world
│ shielding-review v1 -> ben.walnut.world/shielding-review
│ Sensitivity: shared (public)
╰─
Graduation is a status flip, not a folder move. The bundle stays where it is.
Outcome bundle graduation:
{walnut}/{name}/ for files matching *-v1.md or *-v1.html╭─ 🐿️ graduation ready
│ shielding-review has a v1. Mark as done?
│
│ ▸ Graduate?
│ 1. Yes — mark done
│ 2. Not yet
╰─
context.manifest.yaml status to done (or published if shared)_kernel/now.json -> clear bundle if this was the active bundleBundle -> walnut graduation (when a bundle outgrows its container):
_kernel/key.md from bundle context.manifest.yaml (goal, tags, people carry over)[[new-walnut]] to parent's _kernel/key.md links:Bundles nest directly inside other bundle folders. No intermediate bundles/ directory.
ecosystem-launch/ # parent bundle
context.manifest.yaml # parent manifest (parent_bundle: blank)
raw/
website/ # sub-bundle
context.manifest.yaml # parent_bundle: ecosystem-launch
waitlist/ # sub-bundle
context.manifest.yaml # parent_bundle: ecosystem-launch
Deeper nesting works the same way:
research/
context.manifest.yaml
market-analysis/
context.manifest.yaml # parent_bundle: research
competitor-deep-dive/
context.manifest.yaml # parent_bundle: market-analysis
Sub-bundle rules:
parent_bundle: in the manifest records the relationshipsensitivity from parent unless overriddenBundle tasks are operated exclusively through tasks.py CLI. Never read or write tasks.json directly.
tasks.py add --walnut {path} --bundle {name} --title "Write vendor comparison"tasks.py done --walnut {path} --bundle {name} --id {task_id}tasks.py list --walnut {path} --bundle {name}tasks.json is created automatically on the first tasks.py add call. Do not scaffold an empty tasks file during bundle creation.
Show the current state of bundles in the active walnut:
╭─ 🐿️ bundles in nova-station
│
│ Active: shielding-review (outcome, draft, draft-02)
│ Goal: Evaluate radiation shielding vendors
│ Last worked: session:a8c95e9, 2 days ago
│
│ Others:
│ launch-checklist — outcome, prototype, draft-03
│ safety-brief — outcome, done, shared with FAA (2026-03-10)
│ vendor-database — evergreen, active
│
│ ▸ Work on one?
│ 1. shielding-review (continue)
│ 2. launch-checklist
│ 3. vendor-database
│ 4. Start new bundle
╰─
Scan the walnut root for directories containing context.manifest.yaml to build this view. Show type, status, current version, goal, last session, and shares.
{bundle-name}-draft-{nn}.md (e.g., shielding-review-draft-01.md){bundle-name}-v1.md.html extensionThe bundle name is in every filename. The bundle folder is self-documenting.
Load invokes this skill when prompting "what are you working on?" and the human picks "start something new."
Save checks bundle state in its integrity step — was a bundle worked on? Was one shared? This skill handles the actual context.manifest.yaml updates.
Tidy scans for *-v1.md in bundles still marked draft or prototype and surfaces graduation candidates (status flip, not folder move).
Create delegates bundle scaffolding to this skill rather than handling it inline.
Awareness injection triggers this skill when the squirrel detects bundle-worthy work mid-session.
Mine updates context.manifest.yaml discovered: field when processing raw sources within a bundle.