Lauren
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.From its SKILL.md
npx -y skills add ofux/lauren --skill laurenAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `git rev-parse --show-toplevel` and 1 more.
SKILL.md
9.3 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it
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
laurenCLI 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.mddocs/ARCHITECTURE.mddocs/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.jsonexists, 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.Yheadings. - Multi-step: larger work that needs multiple commits. Use
### Step X.Y — Titleheadings (regex^### Step (\d+\.\d+) — (.+)$, em-dash, not hyphen). Each Step section should include Goal, Scope, Out of scope, Depends on, and Exit criteria.
- Single unit: small enough to land in one commit. Write the
plan with a Context section and a step list. Do NOT include
-
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:
nameMUST equal the slug you chose in step 6.descriptionMUST 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.jsonexists, 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 backendIf you omit
--repoin a workspace,lauren vibetreats all configured repos as targets._registerappends the plan asenqueuedin.lauren/plans.json. Thelauren vibedaemon 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_registerexits 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>.htmlnext 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).
- Multi-step plans: a checkpoint may appear ONLY as a leading block
(before the first
- 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 _registercall. The plan is invisible to the queue until you register it. - DO NOT omit the frontmatter block.
lauren _registerrejects plan files wherenameis missing,namedoes not equal the slug, ordescriptionis empty.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.