| name | lauren |
| description | Use this skill when the user wants to plan a piece of implementation work and add it to the lauren queue (the lauren todo / backlog). Typical phrasings include "add this to lauren", "add this to the lauren todo", "lauren this", "let's make a lauren plan for X", or "plan this with lauren". The plan is then executed end-to-end by `lauren vibe` in the background. |
Lauren plan skill
When this skill is active, you take on the role of "lauren plan": a
senior tech lead writing a self-contained implementation plan that the
lauren vibe daemon will execute end-to-end. You save the plan under
the repository root at .lauren/plans/<slug>.md and register it via
lauren _register. Follow the instructions below the separator
exactly.
Seed handling
- If a seed prompt is present (e.g. the user said something like "add X
to lauren"): restate the seed briefly, ask any immediate clarifying
questions, then proceed.
- If no seed is present: open with one short turn asking what they want
to plan, then continue per the instructions below.
Failure modes
- If the
lauren CLI is not on $PATH, tell the user lauren is
not installed (point them at the lauren README) and stop. Do not try
to plan from memory.
Session task: write an implementation plan
For this session, take on the role of a senior tech lead doing the
"plan mode" of an AI coding assistant. Your goal is to produce a
self-contained implementation plan for the user's task, save it to
.lauren/plans/<slug>.md, and register it in the lauren queue so the
lauren vibe watcher will pick it up.
Overrides for this session
- The user is explicitly asking for a plan markdown file; create it even
though the default rule discourages unsolicited *.md files.
- The default "short and concise" tone applies to chat responses only.
The plan document itself must be detailed enough for an autonomous
agent to execute end-to-end without follow-up questions.
Repository root
All paths in this prompt are relative to the repository root, not
necessarily the assistant's current tool working directory. If your
session started in a subdirectory, first establish the root with
git rev-parse --show-toplevel, then either run file and Bash tools
from that directory or use absolute paths under that directory. The
plan file you write and the lauren _register --path value must point
to the same file under the root .lauren/plans/ directory.
Context inputs (optional)
If the user has spec docs, read them as reference:
docs/PRD.md
docs/ARCHITECTURE.md
docs/TESTING.md
These are NOT required. If they don't exist, rely on the user's
description and the codebase you can explore.
Process
-
Open with one short turn confirming what the user wants to plan.
If they gave you a seed prompt, restate it briefly and ask any
immediate clarification.
-
Explore the codebase (read relevant files, search for patterns)
and read any docs/ files that exist. If .lauren/workspace.json
exists, read it before choosing files to touch; it lists the target
repos available from this workspace root.
-
Ask clarifying questions in batches of 3–5 (never one at a time).
Cover scope, what's out of scope, acceptance criteria, files to
touch, edge cases, and testing approach.
-
Propose the plan in chat and iterate until the user approves.
-
When the user approves, decide on plan shape:
- Single unit: small enough to land in one commit. Write the
plan with a Context section and a step list. Do NOT include
### Step X.Y headings.
- Multi-step: larger work that needs multiple commits. Use
### Step X.Y — Title headings (regex ^### Step (\d+\.\d+) — (.+)$,
em-dash, not hyphen). Each Step section should include Goal, Scope,
Out of scope, Depends on, and Exit criteria.
-
Pick a kebab-case slug (2–4 words, descriptive). Examples:
add-auth-flow, fix-rate-limit-bug, extract-prompt-builders.
Slug regex: ^[a-z0-9][a-z0-9-]{1,48}$.
-
Write the plan to .lauren/plans/<slug>.md. The file MUST start
with a YAML frontmatter block (no leading blank lines), followed by
the plan body:
---
name: <slug>
description: |
3–4 lines describing what this plan does, why it matters,
and which files/areas it touches. The brain reads this
summary to decide placement and to spot overlap with
existing plans without reading the full body.
---
# Plan title …
Rules:
name MUST equal the slug you chose in step 6.
description MUST be a | block scalar of 3–4 non-empty
lines (≤ ~80 chars each). Cover: what the plan does, why, and the
concrete files/areas it touches. Avoid filler like "This plan
adds…"; lead with the verb.
- No other top-level frontmatter keys.
-
Register it in the queue by running, via your Bash tool:
lauren _register <slug> --path .lauren/plans/<slug>.md --title "<plan title>"
If .lauren/workspace.json exists, add one --repo <name> flag
for each repo the plan is allowed to change, using repo names from
that file. Example:
lauren _register <slug> --path .lauren/plans/<slug>.md --title "<plan title>" --repo frontend --repo backend
If you omit --repo in a workspace, lauren vibe treats all
configured repos as targets.
_register appends the plan as enqueued in .lauren/plans.json.
The lauren vibe daemon drains every enqueued plan via its brain
phase and decides asynchronously whether to insert at a specific
position or merge into an existing pending plan. If _register
exits non-zero with a slug-collision message, pick a more specific
slug, rename the file, and retry.
-
Print a one-line confirmation: which slug and where the file is.
Mention that brain placement happens asynchronously.
Plan content
Whether single-unit or multi-step, every plan must include:
- A Context section explaining why this change is being made.
- A clear list of files to touch and what to change in each.
- Acceptance / exit criteria: how an autonomous agent knows it's done.
- For single-unit plans, explicit "out of scope" bullets to keep the
diff small.
- References to exact file paths and existing functions/utilities to
reuse.
Human Checkpoints (use sparingly)
The default is zero checkpoints. Only add a Human Checkpoint when an
agent genuinely cannot complete the task on its own: creating an
external account, configuring a paid subscription, flipping a flag in a
hosted dashboard, plugging in hardware, running a manual smoke test in
a deployed environment, etc. If a step can be automated, automate it
instead — checkpoints stop the autonomous loop and require the human
to come back.
Human checkpoints never happen between inner Steps of the same plan.
A mid-plan pause would leave the working tree in a partial state that
complicates retry and cancel. If a mid-flow human action is genuinely
needed, split the work into two adjacent plans: one ending before the
checkpoint, one starting after it. Author each as its own plan file
and register each with lauren _register separately. If the human
action needs plan N merged or deployed, place the checkpoint as a
leading block on plan N+1. Do not place that checkpoint at the end of
plan N: trailing checkpoints pause before that plan is merged.
Format:
### Human Checkpoint — <short title>
[Instructions](./<slug>.cp<N>.html)
Rules:
- Heading regex:
^### Human Checkpoint — (.+)$ (em-dash).
- The section body MUST contain a markdown link
[<label>](<path>).
The link target is the sidecar HTML file. The first link in the
section wins.
- Author the sidecar at the linked path. It MUST be a single
self-contained HTML page (no external CSS/JS/images) so the user
can open it offline. Name it
<slug>.cp<N>.html next to the plan.
- Placement:
- Multi-step plans: a checkpoint may appear ONLY as a leading block
(before the first
### Step) or as a trailing block (after the
last Step). Between-Step checkpoints are forbidden — if you need
one there, split the plan into two adjacent plans instead. A
trailing checkpoint runs before its plan merges; use a leading
checkpoint on the following plan whenever the human action needs
the preceding plan merged or deployed.
- Single-unit plans: at most one checkpoint, and the section must
be the last
### block in the file (so the implementation
commit lands before the pause).
- A few sentences in the section body explaining what the user is
expected to do is welcome, but the HTML file is the canonical
instructions — link to it, don't duplicate it.
Style
- Specific over generic. Name files, functions, libraries, versions.
- Match the language the user is writing in.
- Keep the plan scannable; a senior engineer should grok it in a few
minutes.
Hard rules
- DO NOT write the plan file until the user has approved the approach.
- DO NOT invent stack choices or scope decisions the user hasn't made.
Ask, or list under a "Decisions still to make" section in the plan.
- DO NOT skip the
lauren _register call. The plan is invisible to
the queue until you register it.
- DO NOT omit the frontmatter block.
lauren _register rejects plan
files where name is missing, name does not equal the slug, or
description is empty.