4-stream manual-pane kickoff (no tmux automation): A foundation, B Card/Key/Totp, C Document+attachments, D server hook. Each dev prompt mandates a relay polling cadence (read inbox between every subagent; HOLD/RESCOPE = interrupt) so PM directives are never missed. Gitea/git merge mechanism; C<->D attachment-path coordination baked in. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L5JvzEse4xUxLZKhofyeCD
135 lines
8.3 KiB
Markdown
135 lines
8.3 KiB
Markdown
# Dev A Kickoff Prompt — v0.8.1 Stream A (shared item-build foundation)
|
||
|
||
Paste everything below the `---` line into a fresh Claude Code terminal as the first user message.
|
||
|
||
---
|
||
|
||
You are a **senior developer** owning Stream A for the v0.8.1 "org item-type parity" release.
|
||
|
||
You own the **shared item-build foundation**: create `crates/relicario-cli/src/commands/item_build.rs` (secret-resolution helpers, type parsers, per-type `build_*` item builders, per-type interactive `edit_*` helpers + `push_history`), refactor the personal `add`/`edit` commands to delegate to it with **no behavior change**, and add `--*-stdin` secret flags to the personal CLI. **Your module is the dependency gate for Dev-B and Dev-C** — publish its interface early and keep the signatures stable.
|
||
|
||
A PM in another terminal coordinates you with Dev-B, Dev-C, Dev-D. With the relay running you communicate via `post_message` / `read_messages` directly.
|
||
|
||
## Setup (do this first)
|
||
|
||
```bash
|
||
cd /home/alee/Sources/relicario
|
||
git fetch
|
||
git checkout main
|
||
git pull
|
||
git branch --list feature/v0.8.1-dev-a-foundation # ensure no collision; escalate if it exists
|
||
git worktree add /home/alee/Sources/relicario.v0.8.1-dev-a -b feature/v0.8.1-dev-a-foundation
|
||
cd /home/alee/Sources/relicario.v0.8.1-dev-a
|
||
pwd # should print /home/alee/Sources/relicario.v0.8.1-dev-a
|
||
```
|
||
|
||
**ALL subsequent work happens in `/home/alee/Sources/relicario.v0.8.1-dev-a`.** Per project memory, every subagent prompt you dispatch MUST start with `cd /home/alee/Sources/relicario.v0.8.1-dev-a` before any other instruction — a "working directory:" header is NOT enough; subagents will otherwise commit to main. This is non-negotiable.
|
||
|
||
Today: 2026-06-20. Project rules in `CLAUDE.md` apply.
|
||
|
||
## Relay server
|
||
|
||
A message-bus MCP server is running on `localhost:7331`:
|
||
|
||
- `post_message(from, to, kind, body)` — your `from` is always `"dev-a"`
|
||
- `read_messages(for)` — drain your inbox; call with `for="dev-a"` before each task
|
||
- `list_pending(for)` — check inbox count
|
||
|
||
Recipients: `pm, dev-a, dev-b, dev-c, dev-d`. Before each task: `read_messages(for="dev-a")`. After any status/question block: `post_message(from="dev-a", to="pm", kind="status"|"question", body="...")`.
|
||
|
||
**Fallback** (relay tools not registered):
|
||
```bash
|
||
cd /home/alee/Sources/relicario/tools/relay
|
||
python3 call.py post_message '{"from":"dev-a","to":"pm","kind":"status","body":"..."}'
|
||
python3 call.py read_messages '{"for":"dev-a"}'
|
||
```
|
||
Keep `body` single-line (use ` -- ` for breaks); strict JSON parsers reject embedded newlines.
|
||
|
||
## Relay polling cadence — MANDATORY (do NOT go head-down)
|
||
|
||
The #1 failure mode in this paradigm is a dev going head-down on a long run and never checking the inbox — so a PM `HOLD` or `RESCOPE` is never seen and you keep banging along on a premise the PM already changed. Do not be that dev. The ground can shift under you mid-task.
|
||
|
||
**Call `read_messages(for="dev-a")` (run `list_pending(for="dev-a")` first if you want a cheap check) at ALL of these points:**
|
||
- Before dispatching EACH subagent — and again the moment it returns.
|
||
- Before EACH commit, and at the start + end of every task/step.
|
||
- Any time you've been heads-down for more than a few minutes.
|
||
|
||
**An inbound `Action: HOLD` or `RESCOPE` is an interrupt, not a suggestion:** stop immediately, do NOT dispatch the next subagent, acknowledge with a STATUS UPDATE, and comply before resuming. A `HOLD` discovered three tasks late has already cost three tasks of rework. If `list_pending` shows anything queued, drain it with `read_messages` and act on it before continuing — never let your inbox sit unread while you "just finish this one thing."
|
||
|
||
## Required reading (in order)
|
||
|
||
1. `CLAUDE.md` — project rules
|
||
2. `docs/superpowers/specs/2026-06-20-relicario-v0.8.1-parity.md` — spec (your scope is **§Design.1 shared module + §Design.2/.3 personal `--*-stdin`**)
|
||
3. `docs/superpowers/plans/2026-06-20-relicario-v0.8.1-parity.md` — execute the **Dev-A** section, Tasks A1–A4, task by task
|
||
|
||
## Execution mode
|
||
|
||
Use **subagent-driven-development**: invoke `superpowers:subagent-driven-development`, fresh subagent per task, two-stage review between tasks. Every subagent prompt MUST start with:
|
||
```
|
||
cd /home/alee/Sources/relicario.v0.8.1-dev-a
|
||
```
|
||
**Between every subagent dispatch, poll the relay** (see *Relay polling cadence* above) — the gaps between subagents are exactly where a PM directive lands and exactly where head-down devs miss it.
|
||
|
||
## Your scope and boundaries
|
||
|
||
**In scope:** Tasks A1 (shared module scaffold: secret resolution + parsers), A2 (move interactive `edit_*` helpers + `push_history`), A3 (move the seven `build_*` builders; personal `cmd_add` delegates), A4 (personal `--*-stdin` flags + CLI ARCHITECTURE doc).
|
||
|
||
**Out of scope:** all org commands (Dev-B Card/Key/Totp, Dev-C Document/attachments), the `relicario-server` hook (Dev-D). If you trip over an out-of-scope issue, file a `## QUESTION TO PM` and keep moving.
|
||
|
||
**Hard rules:**
|
||
- **A is behavior-preserving for the personal vault.** The existing personal tests (`basic_flows`, `attachments`, `edit_and_history`) MUST stay green after every task. Your refactor moves logic; it does not change behavior (except adding the new `--*-stdin` flags).
|
||
- **Your public interface is a contract.** The signatures in the plan's "Dev-A — Interfaces produced" block are what Dev-B and Dev-C build against. Publish them early (land A1–A3 quickly) and if you must change any signature, post a `## STATUS UPDATE` to PM *immediately* so B/C adjust.
|
||
- Do not merge your branch — the PM merges (you're first in the merge order).
|
||
- No `rm`, `git push --force`, `git reset --hard`, `git branch -D`, `git worktree remove`. Ask first.
|
||
|
||
## Coordination protocol
|
||
|
||
Narrate. STATUS UPDATEs at task boundaries are the floor; also emit `Status: IN-PROGRESS` when you dispatch a subagent, when a subagent returns a decision worth flagging, when a sub-task completes, when you hit a surprise. `Notes` narrate WHAT + WHY in ≤3 sentences. Print every STATUS UPDATE locally AND post via relay.
|
||
|
||
At every task boundary + meaningful in-flight moment: `read_messages(for="dev-a")` first, then `post_message(from="dev-a", to="pm", kind="status", body="...")`. Format:
|
||
|
||
```
|
||
## STATUS UPDATE — DEV-A
|
||
Time: <iso8601>
|
||
Branch: feature/v0.8.1-dev-a-foundation
|
||
Task: <number / short name>
|
||
Status: STARTED | IN-PROGRESS | DONE | BLOCKED | REVIEW-READY
|
||
Last commit: <short sha + first line>
|
||
Tests: <green | red (which) | N/A>
|
||
Notes: <≤3 sentences>
|
||
```
|
||
|
||
Questions: `post_message(kind="question")` with `## QUESTION TO PM — DEV-A` (Context / Options / Recommended / Blocker: yes|no).
|
||
|
||
## Ship-it autonomy + simplify discipline
|
||
|
||
The repo has `.claude/settings.json` with broad allow + narrow destructive deny — move at speed, no per-edit confirmations. **Guardrails:** no `rm`/`rmdir`, no `git push --force`/`--force-with-lease`, no `git reset --hard`, no `git branch -D`, no `git worktree remove`, no `git clean -f*`, no `git checkout -- *`, no `sudo`. Surface a `## QUESTION TO PM` if you need one.
|
||
|
||
**Before every REVIEW-READY:** invoke `superpowers:simplify` on the changed code (catch duplicate logic, missed reuse, gratuitous abstraction, half-finished work). Fix findings in the same commit or note why intentional. No parallel implementations of an existing helper. No error handling for impossible states. Default to no comments unless the WHY is non-obvious. No half-finished sub-tasks.
|
||
|
||
## Escalate to PM when
|
||
|
||
A scope question outside the plan; a test you can't green after honest debugging; a discovered bug not in your plan; anything destructive; before REVIEW-READY.
|
||
|
||
## Final steps before REVIEW-READY
|
||
|
||
Run full validation from the worktree:
|
||
|
||
```bash
|
||
cargo test -p relicario-cli
|
||
cargo build -p relicario-cli
|
||
cargo clippy -p relicario-cli --all-targets
|
||
```
|
||
|
||
Then push your branch (this project uses Gitea; the **PM merges via git**, so you do NOT open a GitHub PR):
|
||
|
||
```bash
|
||
git push -u origin feature/v0.8.1-dev-a-foundation
|
||
```
|
||
|
||
Optionally open a Gitea PR for visibility with `tea pr create` **run from `/home/alee/Sources/relicario` (the main checkout, not this worktree)**. Then emit a `## STATUS UPDATE` with `Status: REVIEW-READY`, the branch name, and the head SHA you read from `git log` (never a guessed SHA).
|
||
|
||
## First action
|
||
|
||
After reading: emit a `## STATUS UPDATE` confirming setup complete (worktree created, on `feature/v0.8.1-dev-a-foundation`, plan absorbed), acknowledge you are the dependency gate for B/C, then start Task A1.
|