/bundle
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.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/bundle
Context 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.
SKILL.md
bundle.SKILL.mdname: 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
Bundle
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`.
---
Detection — When to Invoke
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.
---
Bundle Types
Outcome Bundle
The default. A body of work with a deliverable — a document, a plan, a shipped feature. Has drafts, versions, a finish line.
Evergreen Bundle
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`.
---
Bundle Location
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/`.
---
Operations
Create
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.
---
context.manifest.yaml
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:**
- `species` — outcome or evergreen. Drives lifecycle behavior.
- `phase` — outcome bundles: draft -> prototype -> published -> done. Evergreen bundles: active <-> maintaining.
- `sensitivity` — controls sharing and export behavior:
- `normal` — can be shared freely
- `private` — excluded from walnut.world publishing, flagged on share attempts
- `shared` — actively published or shared with specific people
- `parent_bundle` — if this bundle is nested inside another, records the parent's name
- `discovered` — populated by `alive:mine-for-context` with extraction tracking
- `sources` — paths to raw material or linked references from other bundles
---
Share
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
╰─
Publishing to walnut.world
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)
╰─
---
Graduate
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?
│
Read more
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
Bundle
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`.
---
Detection — When to Invoke
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.
---
Bundle Types
Outcome Bundle
The default. A body of work with a deliverable — a document, a plan, a shipped feature. Has drafts, versions, a finish line.
Evergreen Bundle
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`.
---
Bundle Location
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/`.
---
Operations
Create
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.
---
context.manifest.yaml
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:**
- `species` — outcome or evergreen. Drives lifecycle behavior.
- `phase` — outcome bundles: draft -> prototype -> published -> done. Evergreen bundles: active <-> maintaining.
- `sensitivity` — controls sharing and export behavior:
- `normal` — can be shared freely
- `private` — excluded from walnut.world publishing, flagged on share attempts
- `shared` — actively published or shared with specific people
- `parent_bundle` — if this bundle is nested inside another, records the parent's name
- `discovered` — populated by `alive:mine-for-context` with extraction tracking
- `sources` — paths to raw material or linked references from other bundles
---
Share
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 ╰─
Publishing to walnut.world
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) ╰─
---
Graduate
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? │
Showing the first part of this file.
Personal Context Manager for Claude Code. Your life in walnuts.
Repo: alivecontext/alive
Other skills on alive.
- /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, and suggests when repeated work should become a skill. For marketplace-ready plugins, hands off to the contributor
Open skill - /capture-context
Use when external content arrives in the session — emails, transcripts, screenshots, documents, files, or in-session research worth keeping. Also use when there's nothing obvious to capture — the skill checks 03_Inbox/ for unrouted files and enters inbox scan mode. Stores raw
Open skill - /create-walnut
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, history, and future. Scaffolds the full structure, maps existing context sources, and optionally migrates files across.
Open skill - /demo
Generate a believable, lived-in ALIVE world from a free-text persona description (custom path) or a deterministic sandbox preset. Routes the create/list/activate/deactivate/delete/status surface and orchestrates the 5-stage subagent generation pipeline.
Open skill - /feedback
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. Nothing personal leaves the machine, only what you type and anonymous system info.
Open skill - /load-context
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 pack (3 files), resolve the people involved, check the active bundle — then surface one observation and ask what to
Open skill

