build-extensions
Create new skills, rules, and hooks for your world. Checks plugin compatibility, writes to the human's space (not plugin cache),…
Create, share, and graduate bundles — the unit of focused work within a walnut. Manages the full bundle lifecycle from creation through sharing to graduation.
Claude Code
$ npx -y skills add alivecontext/alive --skill bundle --agent claude-code
Codex
$ npx skills add alivecontext/alive --skill bundle -a codex -y
Cursor
$ npx skills add alivecontext/alive --skill bundle -a cursor -y
Gemini CLI
$ npx skills add alivecontext/alive --skill bundle -a gemini-cli -y
GitHub Copilot
$ npx skills add alivecontext/alive --skill bundle -a github-copilot -y
OpenCode
$ npx skills add alivecontext/alive --skill bundle -a opencode -y
Windsurf
$ npx skills add alivecontext/alive --skill bundle -a windsurf -y
name: 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? > 1. Yes — mark done >
Create new skills, rules, and hooks for your world. Checks plugin compatibility, writes to the human's space (not plugin cache),…
Use when external content arrives in the session — emails, transcripts, screenshots, documents, files, or in-session research…
Something new is emerging. A venture, an experiment, a person entering the orbit, a life area getting serious. It needs its own…
Generate a believable, lived-in ALIVE world from a free-text persona description (custom path) or a deterministic sandbox preset.…
Report a bug, request a feature, or send general feedback to the ALIVE team. Collects safe system metadata, shows a preview, and…
The human mentions a walnut to work on, asks about a specific venture/experiment/project, or wants to check status — not just…
Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…
Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…