#!/usr/bin/env bash set -euo pipefail # # prdy-update.sh — Update an existing PRD via guided Claude session # # Usage: # prdy-update.sh [--project ] # # Launches a dedicated Claude Code 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 Claude session Usage: prdy-update.sh [--project ] Options: --project Project directory (default: CWD) Launches Claude Code in yolo mode with a PRD-update system 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 ─────────────────────────────────────────────────────── _require_cmd "claude" # 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 Claude ─────────────────────────────────────────────────────────── info "Updating: $EXISTING" info "Mode: PRD Update (yolo)" echo "" cd "$PROJECT" exec claude --dangerously-skip-permissions --append-system-prompt "$SYSTEM_PROMPT" "$KICKOFF"