---
name: steer
description: Steer a running project by modifying its PRODUCT.md, initiative spec/constraints, backlog, or status. Use when the user wants to change direction, add feedback, check progress, or stop a project. Triggers on "change scope", "add constraint", "add feedback", "check status", "stop project", "steer". For creating new initiatives, use create-initiative instead.
---

# Steer a Running Project

Projects are autonomous — the builder loop continuously reviews, plans, and executes improvements. Steering is how you influence direction without stopping the loop.

All project files live in the project directory itself (e.g. `~/Projects/<project_id>/`).

## Deciding where to route feedback

When the user gives feedback, choose the right target:

| Feedback type | Target | Example |
|---|---|---|
| Bug report or urgent fix | `backlog.md` | "Login page crashes on Safari" |
| Change to current initiative scope | Initiative `spec.md` or `constraints.md` | "Add dark mode to the dashboard" |
| Project-wide direction change | `PRODUCT.md` (if exists) or initiative `spec.md` | "All text must be in Spanish" |
| New chunk of work | Use `create-initiative` skill | "Build a stock screener" |
| Multiple of the above | Do all applicable | "Fix the crash AND add dark mode" |

## Steering Controls

### PRODUCT.md — Project-level product context

**When:** Project-wide product definition needs updating — e.g. objectives shifted, design language changed, or a new global constraint applies.

**Where:** `<project_dir>/.autobuilder/PRODUCT.md`

**Notes:**
- Only exists after the 2nd initiative is created (by the `create-initiative` skill).
- For single-initiative projects, the initiative's `spec.md` is the sole source of truth.
- Can be edited manually, but the primary author is the `create-initiative` skill.
- Focus on product (what, who, objectives), NOT tech stack.

**Rules:**
- Preserve the existing structure (What, Who, Objectives, Design Language, Initiative History, Project-wide Constraints).
- Keep it concise — this is background context, not a detailed spec.
- The builder reads this every iteration when it exists — changes take effect on the next cycle.

### Initiative spec.md / constraints.md — Scope the current initiative

**When:** The scope, requirements, or constraints of the active initiative need to change.

**How:** Edit the active initiative's files:
- Spec: `<project_dir>/.autobuilder/initiatives/<active>/spec.md`
- Constraints: `<project_dir>/.autobuilder/initiatives/<active>/constraints.md`

**Rules:**
- The initiative spec is the builder's PRIMARY scope for each iteration.
- Add new requirements to the relevant section; mark removed features as `[REMOVED]`.
- Initiative constraints are specific to that initiative — for project-wide rules, use PRODUCT.md.

### backlog.md — One-time user feedback

**When:** You found a bug, want a specific fix, or have feedback from users.

**How:** Write to `<project_dir>/.autobuilder/backlog.md`. The builder consumes it on the next iteration (the file is deleted after reading).

```markdown
## Feedback
- The login page crashes on Safari
- Users want dark mode
- The chart tooltip shows wrong dates
```

**Rules:**
- Backlog items are the HIGHEST priority — they override the builder's own review findings
- The file is consumed (deleted) after reading, so it's one-shot
- For persistent requirements, use initiative constraints.md or PRODUCT.md instead
- Be as specific as possible: "the login page crashes on Safari when clicking submit" > "login broken"

### Initiatives — Focus the builder on a specific scope

Each initiative is a self-contained directory with its own spec, constraints, and tasks:

```
.autobuilder/initiatives/
  0001-eview/
    spec.md             ← initiative product spec
    constraints.md      ← optional per-initiative rules
    tasks/
      0001-root.md
      0002-auth.md
      ...
  0002-screener-v2/
    spec.md
    tasks/
      0001-root.md
      ...
```

#### Create a new initiative

Use the `create-initiative` skill — it handles PRODUCT.md creation/update, initiative directory setup, and activation.

#### Activate / switch initiative

```bash
echo "<NNNN>-<slug>" > <project_dir>/.autobuilder/active-initiative
```

Tasks from the previous initiative stay in their initiative directory. They resume if you switch back.

#### List initiatives

```bash
ls <project_dir>/.autobuilder/initiatives/
```

Each numbered directory with a `spec.md` is an initiative.

#### Check initiative tasks

```bash
ls <project_dir>/.autobuilder/initiatives/<NNNN>-<slug>/tasks/
```

### status.md — Check progress (read-only)

**When:** You want to know what's happening.

**How:** Read `<project_dir>/.autobuilder/status.md`. Updated automatically every iteration.

Contains: current iteration number, phase, deploy URL, recent improvements.

You can also:
- Read the log file: `tail -f <project_dir>/.autobuilder/loop.log`
- Check the active initiative's tasks directory for planned and executed work

### deploy_url — Check where the app is deployed

**How:** Read `<project_dir>/deploy_url`.

### Stopping a project

**How:** Create a stop file:

```bash
touch <project_dir>/.autobuilder/stop
```

The builder checks for this file at the start of each iteration and shuts down gracefully.

### Per-project skills

**When:** You want the builder to follow project-specific instructions (e.g. a custom testing methodology, design system rules).

**How:** Create `<project_dir>/skills/<skill-name>/SKILL.md`. The builder syncs these into Cursor's skills directory automatically.

## Quick Reference

| Goal | File | Action |
|---|---|---|
| Project-wide product update | `.autobuilder/PRODUCT.md` | Edit in place (exists after 2nd initiative) |
| Change initiative scope | `.autobuilder/initiatives/<active>/spec.md` | Edit in place |
| Add initiative constraint | `.autobuilder/initiatives/<active>/constraints.md` | Append |
| Report a bug / request | `.autobuilder/backlog.md` | Write (consumed once) |
| Create an initiative | — | Use `create-initiative` skill |
| Activate initiative | `.autobuilder/active-initiative` | Write initiative dir name |
| Switch initiative | `.autobuilder/active-initiative` | Overwrite with new dir name |
| Check progress | `.autobuilder/status.md` | Read |
| See initiative tasks | `.autobuilder/initiatives/<id>/tasks/` | Read |
| Stop the loop | `.autobuilder/stop` | `touch .autobuilder/stop` |
| Custom instructions | `skills/<name>/SKILL.md` | Create |
