#!/usr/bin/env bash set -euo pipefail # # prdy-update.sh — Update an existing PRD via guided runtime session # # Usage: # prdy-update.sh [--project ] # # Launches a dedicated runtime session in yolo mode with a specialized # system prompt that reads the existing PRD and guides targeted modifications. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/_lib.sh" # ─── Parse arguments ───────────────────────────────────────────────────────── PROJECT="." while [[ $# -gt 0 ]]; do case "$1" in --project) PROJECT="$2"; shift 2 ;; -h|--help) cat <<'USAGE' prdy-update.sh — Update an existing PRD via guided runtime session Usage: prdy-update.sh [--project ] Options: --project Project directory (default: CWD) Launches the selected runtime in yolo mode with a PRD-update prompt. The agent will read the existing docs/PRD.md, summarize its state, and ask what changes are needed. Examples: mosaic prdy update mosaic prdy update --project ~/src/my-app USAGE exit 0 ;; *) echo "Unknown option: $1" >&2; exit 1 ;; esac done # Expand tilde if passed literally (e.g., --project ~/src/foo) PROJECT="${PROJECT/#\~/$HOME}" # ─── Preflight checks ─────────────────────────────────────────────────────── RUNTIME_CMD="$(prdy_runtime_command)" _require_cmd "$RUNTIME_CMD" # Require existing PRD EXISTING="$(find_prd "$PROJECT")" if [[ -z "$EXISTING" ]]; then fail "No PRD found in $PROJECT/docs/" echo -e " Run ${C_CYAN}mosaic prdy init${C_RESET} to create one first." exit 1 fi # ─── Build system prompt ───────────────────────────────────────────────────── step "Launching PRD update session" SYSTEM_PROMPT="$(build_prdy_system_prompt "update")" KICKOFF="Read the existing PRD at ${EXISTING}, summarize its current state, then ask what changes or additions are needed." # ─── Launch runtime ────────────────────────────────────────────────────────── info "Updating: $EXISTING" info "Mode: PRD Update (yolo, runtime: $RUNTIME_CMD)" echo "" cd "$PROJECT" if [[ "$RUNTIME_CMD" == "claude" ]]; then exec claude --dangerously-skip-permissions --append-system-prompt "$SYSTEM_PROMPT" "$KICKOFF" fi if [[ "$RUNTIME_CMD" == "codex" ]]; then CODEX_PROMPT="$(cat <