build-extensions
Create new skills, rules, and hooks for your world. Checks plugin compatibility, writes to the human's space (not plugin cache), validates against the system,…
Create, share, and graduate bundles — the unit of focused work within a walnut. Manages the full bundle lifecycle from creation through sharing to graduation.
$ npx -y skills add alivecontext/alive --skill bundle --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/bundleContext preview
The summary Claude sees to decide when to auto-load this skill.
Create, share, and graduate bundles — the unit of focused work within a walnut. Manages the full bundle lifecycle from creation through sharing to graduation.
name: alive:bundle description: "Create, share, and graduate bundles — the unit of focused work within a walnut. Manages the full bundle lifecycle from creation through sharing to graduation." user-invocable: true
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:
1. Ask for the goal — one sentence. "What are you building?" 2. Determine bundle type — outcome (default) or evergreen 3. Derive the bundle name from the goal (kebab-case, descriptive) 4. Confirm:
╭─ 🐿️ 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 ╰─
5. Read `templates/bundle/context.manifest.yaml` 6. Fill placeholders: `{{name}}`, `{{goal}}`, `{{species}}`, `{{sensitivity}}`, `{{date}}`, `{{session_id}}` 7. Create `{walnut}/{name}/context.manifest.yaml` 8. Create `{walnut}/{name}/raw/` (empty directory) 9. Note: `project.py` will pick up the new bundle on next save — no manual now.json update needed 10. Stash: "Created bundle: {name}" (type: note)
Do 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 goal: "Evaluate radiation shielding vendors for habitat module" species: outcome # outcome | evergreen phase: draft # draft | prototype | published | done | active | maintaining sensitivity: normal # normal | private | shared version: "0.1" created: 2026-03-28 session: abc123 parent_bundle: # name of parent bundle, if nested tags: [] people: [] shared: [] context_routes: [] # list of captured source file entries discovered: # mining extraction state status: none last_mined: processed: [] unprocessed: []
**Key fields:**
---
When the human shares a bundle with someone (email, Slack, in person):
1. Check `sensitivity` — if `private`, warn before proceeding 2. Identify: who received it, how (method), which version file 3. Update the bundle's `context.manifest.yaml` `shared:` field:
shared:
- to: Sue Chen
method: email
date: 2026-03-15
version: shielding-review-draft-02.md4. Dispatch to the person's walnut at save (stash with destination tag `-> [[person-name]]`) 5. If bundle status is `draft` and it's been shared externally -> advance to `published` 6. Update sensitivity to `shared` 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:
1. Check `sensitivity` — block if `private` 2. Confirm the human wants public sharing 3. Package the bundle content for walnut.world 4. Update `context.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:**
1. Detect: scan `{walnut}/{name}/` for files matching `*-v1.md` or `*-v1.html` 2. Confirm with the human:
╭─ 🐿️ graduation ready │ shielding-review has a v1. Mark as done? │ │ ▸ Graduate? │
Repo: alivecontext/alive
Create new skills, rules, and hooks for your world. Checks plugin compatibility, writes to the human's space (not plugin cache), validates against the system,…
Use when external content arrives in the session — emails, transcripts, screenshots, documents, files, or in-session research worth keeping. Also use when…
Something new is emerging. A venture, an experiment, a person entering the orbit, a life area getting serious. It needs its own walnut — its own identity,…
Generate a believable, lived-in ALIVE world from a free-text persona description (custom path) or a deterministic sandbox preset. Routes the…
Report a bug, request a feature, or send general feedback to the ALIVE team. Collects safe system metadata, shows a preview, and creates a GitHub Issue.…
The human mentions a walnut to work on, asks about a specific venture/experiment/project, or wants to check status — not just explicit 'load X'. Load the brief…