| name | sasu-setup |
| description | Project-local PRD pipeline configuration. Use when the user invokes
"$sasu-setup", asks to enable or change PR delivery mode, configure
worktree/secrets sync for implement, configure the agents/ namespace
gitignore policy, inspect the current PRD pipeline settings, or diagnose why
implement/ship delivery is not working.
|
sasu-setup
Use this skill to inspect or configure how the PRD pipeline
(implement and ship) behaves in the current repository.
This skill owns project setup files only:
agents/config.json
.gitignore entries that control which agents/ artifacts are tracked
It never touches PRDs, implementation state, or delivery branches.
Match the user's language by default.
Inspect First
Always start with the doctor:
sasu doctor
It reports the effective delivery config (config file plus defaults), unknown or
misspelled config keys, git/origin/gh readiness, worktree sync source problems,
ship availability, hook registration, sasu gate
CLI readiness (binary contract version, judge backends, verify commands), and
any active run with its ship-pending state.
If the user only asked "what is the current setting", report the doctor output
and stop.
Configure
When the user wants to change settings, interview briefly with defaults, write
agents/config.json, and keep .gitignore aligned.
On first setup in a project, also seed the agent-facing structure notes before
the config interview:
sasu setup seed-agents-md
This writes (or updates, marker-based and idempotent) a Harness Namespace
section in AGENTS.md explaining agents/prd, agents/rules,
agents/runs, the gitignore policy, and how to consult learned rules,
and it creates the CLAUDE.md -> AGENTS.md symlink.
If CLAUDE.md already exists as a regular file, the command refuses; show the
user the content, get confirmation, and rerun with --adopt-claude-md.
Then interview:
- Delivery mode:
local (default) or pr.
Local means a complete receipt ends with one semantic local commit and no
push, PR, or CI side effect.
Remind the user that pr means implement runs end into ship
(branch, PR, CI) automatically after the receipt, and that per-PRD approval
still happens in the PRD Summary checklist.
- When mode is
pr: base branch and branch prefix (default gen-prd).
Always write baseBranch explicitly: when it is omitted, the harness
defaults to whatever branch is current at implement init time, not
main, so a run started from a feature branch would open its PR against
that feature branch.
- Worktree isolation:
worktree.enabled (default false).
The harness always isolates a run whose target tree already hosts an
active in-place run; enabled: true additionally isolates every run from
the start (the human keeps using the main checkout while runs work in
worktrees). Either way ask which gitignored local files the app needs:
link: read-only shared files (.env, certs).
copy: files the app writes to (.dev.vars, local DBs).
setup: install commands to run once in the new worktree
(for example pnpm install).
Warn that dev servers in two checkouts share ports and linked local DBs.
- CI:
ci.maxFixAttempts (default 2), ci.timeoutSeconds (default 240).
agents/ tracking policy:
- Human-approved assets are committed and reviewable:
agents/prd/**,
agents/rules/**, agents/config.json.
- Generated run state is ignored:
agents/runs/** (one run dir per slug
holding gate verdicts and implement state) and agents/quick/** (a quick
lane's generated contract, receipt, verify verdict and evidence blobs),
plus the legacy agents/implement/** and agents/gates/** in projects
that still carry old-layout runs.
- Any sasu command auto-provisions both runtime roots into
.git/info/exclude; a committed .gitignore line is the project's
decision and is what a team shares.
- Sasu judge gates (optional; defaults work without config):
Recommended .gitignore block:
# PRD pipeline runtime state
agents/runs/
agents/quick/
agents/interview/*/.cadence.json
The qa-log itself stays tracked; .cadence.json beside it is per-machine
decision-write cadence bookkeeping and never belongs in review.
Projects that still carry legacy-layout runs also keep the old lines
(agents/implement/, agents/gates/) until those runs are gone.
agents/ is the only harness namespace. Do not add contradictory duplicate
ignore rules for it.
Reference shape:
{
"delivery": {
"mode": "pr",
"baseBranch": "main",
"branchPrefix": "prd",
"staging": { "include": [], "exclude": [] },
"ci": { "watch": true, "maxFixAttempts": 2, "timeoutSeconds": 240 }
},
"worktree": {
"enabled": true,
"link": [".env"
Preserve unrelated keys that already exist in the file.
Commit the config change like normal project work.
Validate
After writing setup files, rerun doctor and resolve every error before
finishing. Resolve gitignore warnings unless the user explicitly wants a
different tracking policy. Report remaining warn items to the user with a
one-line judgment each (fix now, fix later, or intentional).
Hard Stops
- Do not flip an in-flight run's delivery mode by editing state.json; config
changes apply from the next
init.
- Do not enable
pr mode when the user has not confirmed the repository may
receive automated pushes and PRs.