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.
Scanned 5/27/2026
Install via CLI
openskills install ofux/lauren---
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
1. 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.
2. 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.
3. 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.
4. Propose the plan in chat and iterate until the user approves.
5. 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.
6. 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}$`.
7. 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.
8. 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.
9. 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.
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 can appear before the first
`### Step`, between any two Steps, or after the last Step. Each
Step's commit must be authored to land before the checkpoint
triggers — checkpoints never run mid-Step.
- 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.
No comments yet. Be the first to comment!