Skip to content
Development
Command

/start

Start session - restore context, show tasks, select work item

From plugin
lets-workflow
1622 skills15 agents22 commands
Install
$ npx -y skills add restarter/lets-workflow --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/start

Context preview

What this command does when you run it.

Start session - restore context, show tasks, select work item

Command definition

start.md
description: Start session - restore context, show tasks, select work item
argument-hint: "[task-id|--continue|--main]"

Session Start

Restore context and prepare for work. **User MUST select a task before working.**

> **LETS Notice — surface it.** If a `## LETS Notice` block is present in the injected context (a one-time message the SessionStart hook emits — e.g. workflow rules outdated/missing, a migration result), it MUST be the **first line of your output** for `/lets:start` (`⚠️ <notice text>`), before the session summary. Don't omit it — it tells the user a `/lets:update` or `/lets:init` is needed. Mention it once, then continue with the steps below; don't repeat it in later turns.

Usage

/lets:start                # Full flow - show history, tasks, select work
/lets:start <task-id>      # Quick start - jump to specific task
/lets:start --continue     # Resume last in_progress task with session context
/lets:start --main         # Project-assistant / PM mode - no task, read + triage on merge-branch
/lets:start --assistant    # Alias of --main

Step 0: Argument Parsing

**If `<task-id>` provided** (e.g., `/lets:start lets-rmcwo`):

  • Skip Steps 1, 3, 5 (session history, orient, task selection)
  • Run Step 2 (git state) briefly
  • the tracker's `show` + `comment-list` for `<task-id>` — read the FULL description and ALL comments, never truncate
  • Jump to Step 6 (branch) with this task

**If `--continue`:**

  • Run Step 1 (session history) - important for context recovery
  • the tracker's `list-by-status` (in_progress) - find task(s)
  • If exactly 1 in_progress -> use it, skip Step 5
  • If multiple -> show selection with context from recent sessions
  • If none -> fall through to full flow

**If `--main` or `--assistant` provided** (project-assistant / PM mode):

  • Deliberate **NO-TASK** session stance. Do NOT select, claim, or auto-create a task.
  • **Precedence:** mutually exclusive with `<task-id>` and `--continue`. If an explicit task-id or `--continue` is ALSO present, the explicit task **wins** (run the normal task flow) and `--main` is ignored - tell the user it was dropped because a task was specified.
  • **Skip** Step 5 (Task Selection), Step 6 (Take Task), Step 8 (Task Size Assessment) - all task-bound.
  • **Run** Step 1 (session history), Step 2 (git state). The orient snapshot is rendered once by Main Mode M1 (below), AFTER the session-boundary write - do NOT also run Step 3 (that would render orient twice).
  • Then go to `## Main Mode` (below) instead of Steps 4-9.

**If no arguments** -> full flow (Steps 1-9 as below)

Step 1: Previous Session Context

LETS_PROJECT_ROOT=$(git rev-parse --show-toplevel)
BRANCH=$(git branch --show-current)
BRANCH_SLUG=$(echo "$BRANCH" | tr '/' '-')
mkdir -p "$LETS_PROJECT_ROOT/.lets/sessions"

# Read last 3 sessions for this branch (or all branches if none found)
SESSIONS=$(ls -t "$LETS_PROJECT_ROOT/.lets/sessions/"*"-${BRANCH_SLUG}.md" 2>/dev/null | head -3)
if [ -z "$SESSIONS" ]; then
  SESSIONS=$(ls -t "$LETS_PROJECT_ROOT/.lets/sessions/"*.md 2>/dev/null | head -3)
fi

**Read EACH session file** found above using the Read tool (up to 3 files in parallel). Then present a compact summary of all sessions. Focus on: what was done, key decisions, next steps suggested.

Step 2: Git State

git branch --show-current
git status --short
if git rev-parse --verify --quiet HEAD >/dev/null; then
  git log --oneline -3
else
  echo "(no commits yet — fresh repo)"
fi

# Unfinished PR-review restore. /lets:review keys its record by session id, so the session that
# could act on it is gone - a fresh session is exactly where a stray must be surfaced.
LETS_PROJECT_ROOT=$(git rev-parse --show-toplevel)
for f in "$LETS_PROJECT_ROOT"/.lets/sessions/.review-restore-*; do
  [ -e "$f" ] || continue
  printf 'STRAY REVIEW RESTORE %s -> ref: %s | pr: %s | stash: %s\n' "${f##*/}" \
    "$(sed -n 's/^ref: //p' "$f" | head -1)" \
    "$(sed -n 's/^pr: //p' "$f" | head -1)" \
    "$(sed -n 's/^stash: //p' "$f" | head -1)"
done

Report: branch, uncommitted changes, recent commits. **On a `STRAY REVIEW RESTORE` line**, tell the user in one line: a PR review did not finish restoring, `git checkout <ref>` returns them, and a listed `stash:` is still in `git stash list`. Report only - never act: `.lets/` is shared by every worktree of this repo, so the stray may belong to a session that is still running. **If the repo has no commits yet** (the `else` branch above fires), that's fine — say so in plain text; offer `git commit --allow-empty -m "chore: initial setup"` if the user wants an anchor for `git log` to work later. **Don't** raise `/lets:init` here (it's a separate concern) and **don't** treat the missing HEAD as a fatal error.

Step 3: Orient

Invoke `Skill(skill: "lets:orient")` - it renders Where you are / In flight / Next up (and the Project counts if the tracker provides them). This is the same snapshot `/lets:status` shows; start reuses it, then drives task selection below.

Step 4: Present

The orient snapshot (Step 3) already shows In flight + Next up - don't repeat them. Present the recovery line, then the snapshot:

## Recent Sessions
{1-2 line recovery from the recent session file(s)}

{orient snapshot from Step 3 - Where you are / In flight / Next up / Project}

Step 5: What do we do? (task selection - MANDATORY)

**Every session needs a task.** From the orient snapshot, offer the moves:

> - **Resume** the active task if In flight shows one you want to continue. > - **Pick** one from Next up (the top 5 ready - for the full list, `/lets:backlog`). > - **Create** a new task (the `create-task` skill - tracker `create` verb), or claim an existing one (tracker `set-status=in_progress`).

**If user doesn't want to pick a task** but describes work (e.g., "just want to fix proxy config"):

  • Auto-create via the `create-task` skill (e.g. "Fix proxy config", a P3 task)
  • Inform user: "Created task XX, work
Read more
Ships withlets-workflow

A development workflow plugin for Claude Code Stop babysitting your AI. Start shipping with it.

Get the whole plugin, auto-invoked
Stats
16
Stars
1
Views
3
Forks
Active
Maintenance
Go
Language
MIT
License
3d ago
Last commit
5mo ago
Created

Repo: restarter/lets-workflow