From alive
Scaffolds new walnut structures for ventures, experiments, life areas, persons, projects, or campaigns in ALIVE system. Maps context sources and optionally migrates files.
npx claudepluginhub alivecontext/alive --plugin aliveThis skill uses the workspace's default tool permissions.
Scaffold a new walnut — any type, any ALIVE domain. Understand it first, map where its context lives, then scaffold. Optionally bring in existing content (Step 7 — only if the human has files to migrate).
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.
Guides first-time users through multi-phase conversational onboarding to collect preferences, life areas, integrations, and create full vault structure. Multilingual triggers.
Adds knowledge domains to file-based systems via conversation: derives configs, generates folders/templates/vocabulary, preserves existing architecture.
Share bugs, ideas, or general feedback.
Scaffold a new walnut — any type, any ALIVE domain. Understand it first, map where its context lives, then scaffold. Optionally bring in existing content (Step 7 — only if the human has files to migrate).
Not a setup wizard (that's world/setup.md — first-time only). Not opening an existing walnut (that's alive:load-context).
The squirrel MUST read these templates before writing — not reconstruct from memory. Templates live relative to the plugin install path.
templates/walnut/key.md → _kernel/key.md
templates/walnut/log.md → _kernel/log.md
templates/walnut/insights.md → _kernel/insights.md
templates/squirrel/entry.yaml → .alive/_squirrels/{session_id}.yaml
| Placeholder | Source |
|---|---|
{{type}} | Step 1 selection |
{{goal}} | Extracted from Step 2 free text |
{{name}} | Kebab-case slug derived from Step 2 |
{{date}} | Current ISO date (YYYY-MM-DD) |
{{next}} | Set to the goal initially |
{{session_id}} | Current session ID |
{{engine}} | Current model (e.g. claude-opus-4-6) |
{{walnut}} | Same as {{name}} |
{{description}} | The human's free text from Step 2, lightly cleaned |
| Type | ALIVE folder | Notes |
|---|---|---|
| venture | 04_Ventures/{name}/ | |
| experiment | 05_Experiments/{name}/ | |
| life | 02_Life/{name}/ | Under goals/ if it's a goal |
| person | 02_Life/people/{name}/ | Legacy subfolder conventions (professional/, inner/, orbit/) still recognized. |
| project | Inside parent walnut folder | Requires parent selection |
| campaign | Inside parent walnut folder | Requires parent selection |
-> AskUserQuestion: "What type of walnut?"
- Venture — revenue intent (business, client, product)
- Experiment — testing ground (idea, prototype, exploration)
- Life area — personal (goal, habit, health, identity)
- Person — someone who matters
- Project — scoped work inside a venture or experiment
- Campaign — time-bound push with a deadline
Free text prompt: "Describe it in a sentence or two — what is it and what's the goal?"
The squirrel infers name (kebab-case slug), goal, and domain from the response.
If type is project or campaign:
-> AskUserQuestion: "Which walnut does this belong under?"
- [list active ventures/experiments by scanning _kernel/key.md frontmatter across ALIVE folders]
- Standalone (no parent)
To build the parent list: scan 04_Ventures/*/_kernel/key.md and 05_Experiments/*/_kernel/key.md — read frontmatter only (type, goal). Check _kernel/key.md first, fall back to walnut root. Present as options with goal as description.
If the description mentions code, a repo, a website, an app, or anything that lives in a git repository:
╭─ 🐿️ sounds like this has a codebase. That right?
│
│ ▸ Does this walnut track a code repo?
│ 1. Yes
│ 2. No — context only
╰─
If yes, ASK explicitly for each required field — do not infer from the description:
╭─ 🐿️ codebase details
│
│ ▸ What's the repo? (e.g., github.com/org/repo)
│ ▸ Where's it cloned locally? (e.g., ~/code/my-project)
│ ▸ Any of these apply?
│ - GitHub account (if you use multiple)
│ - Deploy platform (Vercel, Netlify, etc.)
│ - Database (Supabase, Postgres, etc.)
╰─
Even if the human gave repo/path in their description, confirm them here. This step is the only place codebase info is collected — don't skip it.
Set has_codebase: true — Step 6 will use templates/walnut/key-codebase.md instead of the standard template.
Five minutes of conversation here saves ten sessions of backfilling. Don't rush past this.
Ask follow-ups adapted to the type. Use natural conversation, not an interrogation — if they gave a rich answer in Step 2, skip questions you can already infer.
| Type | Ask about |
|---|---|
| Venture | Who's involved — names, roles, how you work with them? What's the business model or revenue path? What phase — idea, building, launched? Any hard deadlines or external commitments? |
| Experiment | What exactly are you testing? Who else is involved? What would make you kill it vs double down? |
| Person | How do you know them? What do you work on together? How do you usually communicate? |
| Life area | Why now? What does progress look like? Who else is involved or affected? |
| Project / Campaign | Who's on it? What's the deadline? What does done look like? |
From the answers, extract and hold for scaffolding:
_kernel/key.md people: frontmatter + ## Key People_kernel/now.json phase:_kernel/key.md bodyMost new walnuts already have context scattered across tools. Map it now so the squirrel knows where to look later.
╭─ 🐿️ context map
│ Where does context for this currently live outside
│ your head? Knowing this helps me find things later
│ and reminds the human what to bring in.
│
│ Think about:
│ - Email threads (Gmail, Outlook)
│ - Chat history (Slack, WhatsApp, iMessage, Discord)
│ - Documents (Google Drive, Notion, Dropbox)
│ - Meeting recordings (Otter, Fathom, Zoom recordings)
│ - Notes (Apple Notes, Obsidian, paper notebook)
│ - Code or repos (GitHub, local projects)
│ - Social / public (Twitter, LinkedIn, website)
│ - Anything else — spreadsheets, Figma, Trello, etc.
╰─
-> AskUserQuestion (multiSelect): "Email (Gmail/Outlook)" / "Chat (Slack/WhatsApp/Discord)" / "Docs (Drive/Notion/Dropbox)" / "Other (tell me)"
Follow up briefly on each selected source — which channels, which folders, key threads. Not exhaustive, just enough to know where shadow context lives.
This becomes a ## Context Map section in _kernel/key.md:
## Context Map
| Source | Details | Status |
|--------|---------|--------|
| Gmail | Thread with jax@example.com re: shielding specs | Not captured |
| Slack | #nova-engineering channel | Ongoing |
| Google Drive | "Nova Station" shared folder | Not captured |
| Fathom | 3 recorded calls with engineering team | Not captured |
Status: Not captured - Partially captured - Ongoing (live channels) - Captured
This map is a living reminder. When the squirrel opens this walnut later, it can prompt: "Your context map shows 3 Fathom recordings marked 'Not captured' — want to bring those in?"
Present everything gathered so far:
╭─ 🐿️ new walnut
│
│ Name: flux-engine
│ Type: experiment
│ Goal: Build a propulsion flux simulator for orbital testing
│ Path: 05_Experiments/flux-engine/
│ Parent: none
│ Rhythm: weekly (default)
│ People: 2 (Jax Stellara, Dr. Elara Voss)
│ Repo: github.com/org/flux-engine -> ~/code/flux-engine (if codebase)
│ Context: 4 sources mapped (Gmail, Slack, Drive, Fathom)
│
│ ▸ create / change name / change type / change rhythm / cancel
╰─
If the human picks "change name" / "change type" / "change rhythm", ask once, then re-present the confirmation.
Structure is flat: everything lives directly in _kernel/. No _generated/ subdirectory. No bundles/ directory at creation time — bundles are created on demand by alive:bundle.
_kernel/ directory (flat — NO _generated/ subdirectory)templates/walnut/, fill {{placeholders}}, write to _kernel/ inside the walnut. If has_codebase: true, use templates/walnut/key-codebase.md instead of templates/walnut/key.md — fill the dev: block with repo, local_path, and any optional fields collected in Step 2b_kernel/key.md frontmatter: type, goal, created (today), rhythm, people (from Step 3), tags (from Step 3)_kernel/key.md body: description from Step 3, ## Key People with roles, ## Context Map from Step 4, ## Connections with any wikilinks to existing walnuts_kernel/tasks.json with contents: {"tasks": []}_kernel/completed.json with contents: {"completed": []}_kernel/now.json — run project.py --walnut {path} (located at scripts/project.py relative to plugin install). If project.py is unavailable or fails, write a minimal now.json manually:
{
"phase": "starting",
"updated": "YYYY-MM-DDTHH:MM:SSZ",
"squirrel": null,
"next": {"action": "{goal}", "bundle": null, "why": null},
"bundles": {"active": {}, "recent": {}, "summary": {"total": 0, "done": 0, "draft": 0, "prototype": 0, "published": 0}},
"unscoped_tasks": {"urgent": [], "active": [], "todo": [], "counts": {"urgent": 0, "active": 0, "todo": 0, "blocked": 0}},
"recent_sessions": [],
"children": {},
"blockers": [],
"context": ""
}
parent: [[parent-name]] in _kernel/key.md frontmatter[[new-walnut-name]] to parent's _kernel/key.md links: frontmatter field.alive/key.md — add the new walnut to ## Connections: - [[new-walnut-name]] -- {goal}. If .alive/_index.yaml exists, regenerate it too.╭─ 🐿️ scaffolding...
│
│ > 05_Experiments/flux-engine/
│ > _kernel/key.md — type: experiment, goal set, 2 people, 4 context sources
│ > _kernel/log.md — first entry signed
│ > _kernel/insights.md — empty, ready
│ > _kernel/tasks.json — empty task list
│ > _kernel/completed.json — empty completed list
│ > _kernel/now.json — phase: starting
│
│ Walnut is alive.
╰─
DO NOT read create/migrate.md until the human answers "yes" below. It is a large file that must not be loaded into context unless needed. Most walnut creations will skip this step entirely.
╭─ 🐿️ got files to bring in?
│
│ If you have docs, notes, or a project folder on your
│ computer for this — I can pull them in now.
│
│ Tip: if you've got a bunch of scattered files, throw
│ them all into one folder first and point me at it.
│ I'll work through each one — manifests, frontmatter,
│ the lot.
╰─
-> AskUserQuestion: "Yes — I have files to bring across" / "No — starting fresh"
If "No" — done. Offer: "Say open {name} to start working."
If "Yes" — NOW read create/migrate.md and follow it from the Entry Point section. The migrate skill handles everything from here: asking what kind of content, detecting whether it's a light seed or full project migration, and running the appropriate flow.
Bundle scaffolding is handled by alive:bundle. When the human says "create a bundle" or when stash routing identifies a new body of work, invoke the bundle skill — it handles the full create flow including manifest template, raw/ directory, and now.json update.
Do NOT create a bundles/ directory during walnut scaffolding. Bundles are created on demand by the bundle skill, which handles directory creation itself.
When a bundle grows too big for its container (needs its own sessions, log, lifecycle):
_kernel/key.md from bundle manifest (goal, tags, people carry over)[[new-walnut]] to parent's _kernel/key.md links:| File | Template source |
|---|---|
{domain}/{name}/_kernel/key.md | templates/walnut/key.md (or key-codebase.md) |
{domain}/{name}/_kernel/log.md | templates/walnut/log.md |
{domain}/{name}/_kernel/insights.md | templates/walnut/insights.md |
{domain}/{name}/_kernel/tasks.json | Literal: {"tasks": []} |
{domain}/{name}/_kernel/completed.json | Literal: {"completed": []} |
{domain}/{name}/_kernel/now.json | scripts/project.py --walnut {path} (or minimal fallback) |
Parent's _kernel/key.md | Updated links: field (if sub-walnut) |
| File | Why |
|---|---|
templates/walnut/key.md | Template — read before writing key.md |
templates/walnut/key-codebase.md | Template — read before writing key.md (codebase variant) |
templates/walnut/log.md | Template — read before writing log.md |
templates/walnut/insights.md | Template — read before writing insights.md |
templates/squirrel/entry.yaml | Schema for squirrel entry |
rules/world.md | The walnut scaffolding process — follow exactly |
Active walnuts' _kernel/key.md frontmatter | For parent list (project/campaign types only) |