Lauren
Autonomous AI agent loop that keeps working through your project while you keep planning what comes next.
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.
One thing to look at
- 11 stars11 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
9.3 KB, 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.