diff --git a/commands/gsd/add-todo.md b/commands/gsd/add-todo.md
index c251e4216..c38d3f9cf 100644
--- a/commands/gsd/add-todo.md
+++ b/commands/gsd/add-todo.md
@@ -6,188 +6,37 @@ allowed-tools:
- Read
- Write
- Bash
- - Glob
+ - AskUserQuestion
---
Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work.
-Enables "thought → capture → continue" flow without losing context or derailing current work.
+Routes to the add-todo workflow which handles:
+- Directory structure creation
+- Content extraction from arguments or conversation
+- Area inference from file paths
+- Duplicate detection and resolution
+- Todo file creation with frontmatter
+- STATE.md updates
+- Git commits
-
+
@.planning/STATE.md
-
+@~/.claude/get-shit-done/workflows/add-todo.md
+
+**Follow the add-todo workflow** from `@~/.claude/get-shit-done/workflows/add-todo.md`.
-
-```bash
-mkdir -p .planning/todos/pending .planning/todos/done
-```
-
-
-
-```bash
-ls .planning/todos/pending/*.md 2>/dev/null | xargs -I {} grep "^area:" {} 2>/dev/null | cut -d' ' -f2 | sort -u
-```
-
-Note existing areas for consistency in infer_area step.
-
-
-
-**With arguments:** Use as the title/focus.
-- `/gsd:add-todo Add auth token refresh` → title = "Add auth token refresh"
-
-**Without arguments:** Analyze recent conversation to extract:
-- The specific problem, idea, or task discussed
-- Relevant file paths mentioned
-- Technical details (error messages, line numbers, constraints)
-
-Formulate:
-- `title`: 3-10 word descriptive title (action verb preferred)
-- `problem`: What's wrong or why this is needed
-- `solution`: Approach hints or "TBD" if just an idea
-- `files`: Relevant paths with line numbers from conversation
-
-
-
-Infer area from file paths:
-
-| Path pattern | Area |
-|--------------|------|
-| `src/api/*`, `api/*` | `api` |
-| `src/components/*`, `src/ui/*` | `ui` |
-| `src/auth/*`, `auth/*` | `auth` |
-| `src/db/*`, `database/*` | `database` |
-| `tests/*`, `__tests__/*` | `testing` |
-| `docs/*` | `docs` |
-| `.planning/*` | `planning` |
-| `scripts/*`, `bin/*` | `tooling` |
-| No files or unclear | `general` |
-
-Use existing area from step 2 if similar match exists.
-
-
-
-```bash
-grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
-```
-
-If potential duplicate found:
-1. Read the existing todo
-2. Compare scope
-
-If overlapping, use AskUserQuestion:
-- header: "Duplicate?"
-- question: "Similar todo exists: [title]. What would you like to do?"
-- options:
- - "Skip" — keep existing todo
- - "Replace" — update existing with new context
- - "Add anyway" — create as separate todo
-
-
-
-```bash
-timestamp=$(date "+%Y-%m-%dT%H:%M")
-date_prefix=$(date "+%Y-%m-%d")
-```
-
-Generate slug from title (lowercase, hyphens, no special chars in FILENAME only).
-
-Write to `.planning/todos/pending/${date_prefix}-${slug}.md`:
-
-```markdown
----
-created: [timestamp]
-title: [title]
-area: [area]
-files:
- - [file:lines]
----
-
-## Problem
-
-[problem description - enough context for future Claude to understand weeks later]
-
-## Solution
-
-[approach hints or "TBD"]
-```
-
-
-
-If `.planning/STATE.md` exists:
-
-1. Count todos: `ls .planning/todos/pending/*.md 2>/dev/null | wc -l`
-2. Update "### Pending Todos" under "## Accumulated Context"
-
-
-
-Commit the todo and any updated state:
-
-**Check planning config:**
-
-```bash
-COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
-git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
-```
-
-**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Todo saved (not committed - commit_docs: false)"
-
-**If `COMMIT_PLANNING_DOCS=true` (default):**
-
-```bash
-git add .planning/todos/pending/[filename]
-[ -f .planning/STATE.md ] && git add .planning/STATE.md
-git commit -m "$(cat <<'EOF'
-docs: capture todo - [title]
-
-Area: [area]
-EOF
-)"
-```
-
-Confirm: "Committed: docs: capture todo - [title]"
-
-
-
-```
-Todo saved: .planning/todos/pending/[filename]
-
- [title]
- Area: [area]
- Files: [count] referenced
-
----
-
-Would you like to:
-
-1. Continue with current work
-2. Add another todo
-3. View all todos (/gsd:check-todos)
-```
-
-
+The workflow handles all logic including:
+1. Directory ensuring
+2. Existing area checking
+3. Content extraction (arguments or conversation)
+4. Area inference
+5. Duplicate checking
+6. File creation with slug generation
+7. STATE.md updates
+8. Git commits
-
-
-
-
-- Don't create todos for work in current plan (that's deviation rule territory)
-- Don't create elaborate solution sections — captures ideas, not plans
-- Don't block on missing information — "TBD" is fine
-
-
-
-- [ ] Directory structure exists
-- [ ] Todo file created with valid frontmatter
-- [ ] Problem section has enough context for future Claude
-- [ ] No duplicates (checked and resolved)
-- [ ] Area consistent with existing todos
-- [ ] STATE.md updated if exists
-- [ ] Todo and state committed to git
-
diff --git a/commands/gsd/pause-work.md b/commands/gsd/pause-work.md
index d607e155c..005cae725 100644
--- a/commands/gsd/pause-work.md
+++ b/commands/gsd/pause-work.md
@@ -10,125 +10,26 @@ allowed-tools:
Create `.continue-here.md` handoff file to preserve complete work state across sessions.
-Enables seamless resumption in fresh session with full context restoration.
+Routes to the pause-work workflow which handles:
+- Current phase detection from recent files
+- Complete state gathering (position, completed work, remaining work, decisions, blockers)
+- Handoff file creation with all context sections
+- Git commit as WIP
+- Resume instructions
-
+
@.planning/STATE.md
-
+@~/.claude/get-shit-done/workflows/pause-work.md
+
+**Follow the pause-work workflow** from `@~/.claude/get-shit-done/workflows/pause-work.md`.
-
-Find current phase directory from most recently modified files.
-
-
-
-**Collect complete state for handoff:**
-
-1. **Current position**: Which phase, which plan, which task
-2. **Work completed**: What got done this session
-3. **Work remaining**: What's left in current plan/phase
-4. **Decisions made**: Key decisions and rationale
-5. **Blockers/issues**: Anything stuck
-6. **Mental context**: The approach, next steps, "vibe"
-7. **Files modified**: What's changed but not committed
-
-Ask user for clarifications if needed.
-
-
-
-**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
-
-```markdown
----
-phase: XX-name
-task: 3
-total_tasks: 7
-status: in_progress
-last_updated: [timestamp]
----
-
-
-[Where exactly are we? Immediate context]
-
-
-
-
-- Task 1: [name] - Done
-- Task 2: [name] - Done
-- Task 3: [name] - In progress, [what's done]
-
-
-
-
-- Task 3: [what's left]
-- Task 4: Not started
-- Task 5: Not started
-
-
-
-
-- Decided to use [X] because [reason]
-- Chose [approach] over [alternative] because [reason]
-
-
-
-- [Blocker 1]: [status/workaround]
-
-
-
-[Mental state, what were you thinking, the plan]
-
-
-
-Start with: [specific first action when resuming]
-
-```
-
-Be specific enough for a fresh Claude to understand immediately.
-
-
-
-**Check planning config:**
-
-```bash
-COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
-git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
-```
-
-**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
-
-**If `COMMIT_PLANNING_DOCS=true` (default):**
-
-```bash
-git add .planning/phases/*/.continue-here.md
-git commit -m "wip: [phase-name] paused at task [X]/[Y]"
-```
-
-
-
-```
-✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
-
-Current state:
-
-- Phase: [XX-name]
-- Task: [X] of [Y]
-- Status: [in_progress/blocked]
-- Committed as WIP
-
-To resume: /gsd:resume-work
-
-```
-
-
+The workflow handles all logic including:
+1. Phase directory detection
+2. State gathering with user clarifications
+3. Handoff file writing with timestamp
+4. Git commit
+5. Confirmation with resume instructions
-
-
-- [ ] .continue-here.md created in correct phase directory
-- [ ] All sections filled with specific content
-- [ ] Committed as WIP
-- [ ] User knows location and how to resume
-
-```
diff --git a/commands/gsd/set-profile.md b/commands/gsd/set-profile.md
index 74f13ae7c..ab24458d1 100644
--- a/commands/gsd/set-profile.md
+++ b/commands/gsd/set-profile.md
@@ -1,116 +1,34 @@
---
-name: set-profile
+name: gsd:set-profile
description: Switch model profile for GSD agents (quality/balanced/budget)
-arguments:
- - name: profile
- description: "Profile name: quality, balanced, or budget"
- required: true
+argument-hint:
+allowed-tools:
+ - Read
+ - Write
+ - Bash
---
-Switch the model profile used by GSD agents. This controls which Claude model each agent uses, balancing quality vs token spend.
+Switch the model profile used by GSD agents. Controls which Claude model each agent uses, balancing quality vs token spend.
+
+Routes to the set-profile workflow which handles:
+- Argument validation (quality/balanced/budget)
+- Config file creation if missing
+- Profile update in config.json
+- Confirmation with model table display
-
-| Profile | Description |
-|---------|-------------|
-| **quality** | Opus everywhere except read-only verification |
-| **balanced** | Opus for planning, Sonnet for execution/verification (default) |
-| **budget** | Sonnet for writing, Haiku for research/verification |
-
+
+@~/.claude/get-shit-done/workflows/set-profile.md
+
+**Follow the set-profile workflow** from `@~/.claude/get-shit-done/workflows/set-profile.md`.
-## 1. Validate argument
-
-```
-if $ARGUMENTS.profile not in ["quality", "balanced", "budget"]:
- Error: Invalid profile "$ARGUMENTS.profile"
- Valid profiles: quality, balanced, budget
- STOP
-```
-
-## 2. Ensure config exists
-
-```bash
-ls .planning/config.json 2>/dev/null
-```
-
-If `.planning/config.json` missing, create it with defaults:
-```bash
-mkdir -p .planning
-```
-```json
-{
- "model_profile": "balanced",
- "workflow": {
- "research": true,
- "plan_check": true,
- "verifier": true
- }
-}
-```
-Write this to `.planning/config.json`, then continue.
-
-## 3. Update config.json
-
-Read current config:
-```bash
-cat .planning/config.json
-```
-
-Update `model_profile` field:
-```json
-{
- "model_profile": "$ARGUMENTS.profile"
-}
-```
-
-Write updated config back to `.planning/config.json`.
-
-## 4. Confirm
-
-```
-✓ Model profile set to: $ARGUMENTS.profile
-
-Agents will now use:
-[Show table from model-profiles.md for selected profile]
-
-Next spawned agents will use the new profile.
-```
-
+The workflow handles all logic including:
+1. Profile argument validation
+2. Config file ensuring
+3. Config reading and updating
+4. Model table generation from MODEL_PROFILES
+5. Confirmation display
-
-
-
-**Switch to budget mode:**
-```
-/gsd:set-profile budget
-
-✓ Model profile set to: budget
-
-Agents will now use:
-| Agent | Model |
-|-------|-------|
-| gsd-planner | sonnet |
-| gsd-executor | sonnet |
-| gsd-verifier | haiku |
-| ... | ... |
-```
-
-**Switch to quality mode:**
-```
-/gsd:set-profile quality
-
-✓ Model profile set to: quality
-
-Agents will now use:
-| Agent | Model |
-|-------|-------|
-| gsd-planner | opus |
-| gsd-executor | opus |
-| gsd-verifier | sonnet |
-| ... | ... |
-```
-
-
diff --git a/commands/gsd/settings.md b/commands/gsd/settings.md
index bd9887f2f..95dcaa657 100644
--- a/commands/gsd/settings.md
+++ b/commands/gsd/settings.md
@@ -4,162 +4,33 @@ description: Configure GSD workflow toggles and model profile
allowed-tools:
- Read
- Write
+ - Bash
- AskUserQuestion
---
-Allow users to toggle workflow agents on/off and select model profile via interactive settings.
+Interactive configuration of GSD workflow agents and model profile via multi-question prompt.
-Updates `.planning/config.json` with workflow preferences and model profile selection.
+Routes to the settings workflow which handles:
+- Config existence ensuring
+- Current settings reading and parsing
+- Interactive 5-question prompt (model, research, plan_check, verifier, branching)
+- Config merging and writing
+- Confirmation display with quick command references
+
+@~/.claude/get-shit-done/workflows/settings.md
+
+
+**Follow the settings workflow** from `@~/.claude/get-shit-done/workflows/settings.md`.
-## 1. Ensure config exists
-
-```bash
-ls .planning/config.json 2>/dev/null
-```
-
-If `.planning/config.json` missing, create it with defaults:
-```bash
-mkdir -p .planning
-```
-```json
-{
- "model_profile": "balanced",
- "workflow": {
- "research": true,
- "plan_check": true,
- "verifier": true
- }
-}
-```
-Write this to `.planning/config.json`, then continue.
-
-## 2. Read Current Config
-
-```bash
-cat .planning/config.json
-```
-
-Parse current values (default to `true` if not present):
-- `workflow.research` — spawn researcher during plan-phase
-- `workflow.plan_check` — spawn plan checker during plan-phase
-- `workflow.verifier` — spawn verifier during execute-phase
-- `model_profile` — which model each agent uses (default: `balanced`)
-- `git.branching_strategy` — branching approach (default: `"none"`)
-
-## 3. Present Settings
-
-Use AskUserQuestion with current values shown:
-
-```
-AskUserQuestion([
- {
- question: "Which model profile for agents?",
- header: "Model",
- multiSelect: false,
- options: [
- { label: "Quality", description: "Opus everywhere except verification (highest cost)" },
- { label: "Balanced (Recommended)", description: "Opus for planning, Sonnet for execution/verification" },
- { label: "Budget", description: "Sonnet for writing, Haiku for research/verification (lowest cost)" }
- ]
- },
- {
- question: "Spawn Plan Researcher? (researches domain before planning)",
- header: "Research",
- multiSelect: false,
- options: [
- { label: "Yes", description: "Research phase goals before planning" },
- { label: "No", description: "Skip research, plan directly" }
- ]
- },
- {
- question: "Spawn Plan Checker? (verifies plans before execution)",
- header: "Plan Check",
- multiSelect: false,
- options: [
- { label: "Yes", description: "Verify plans meet phase goals" },
- { label: "No", description: "Skip plan verification" }
- ]
- },
- {
- question: "Spawn Execution Verifier? (verifies phase completion)",
- header: "Verifier",
- multiSelect: false,
- options: [
- { label: "Yes", description: "Verify must-haves after execution" },
- { label: "No", description: "Skip post-execution verification" }
- ]
- },
- {
- question: "Git branching strategy?",
- header: "Branching",
- multiSelect: false,
- options: [
- { label: "None (Recommended)", description: "Commit directly to current branch" },
- { label: "Per Phase", description: "Create branch for each phase (gsd/phase-{N}-{name})" },
- { label: "Per Milestone", description: "Create branch for entire milestone (gsd/{version}-{name})" }
- ]
- }
-])
-```
-
-**Pre-select based on current config values.**
-
-## 4. Update Config
-
-Merge new settings into existing config.json:
-
-```json
-{
- ...existing_config,
- "model_profile": "quality" | "balanced" | "budget",
- "workflow": {
- "research": true/false,
- "plan_check": true/false,
- "verifier": true/false
- },
- "git": {
- "branching_strategy": "none" | "phase" | "milestone"
- }
-}
-```
-
-Write updated config to `.planning/config.json`.
-
-## 5. Confirm Changes
-
-Display:
-
-```
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- GSD ► SETTINGS UPDATED
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
-| Setting | Value |
-|----------------------|-------|
-| Model Profile | {quality/balanced/budget} |
-| Plan Researcher | {On/Off} |
-| Plan Checker | {On/Off} |
-| Execution Verifier | {On/Off} |
-| Git Branching | {None/Per Phase/Per Milestone} |
-
-These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs.
-
-Quick commands:
-- /gsd:set-profile — switch model profile
-- /gsd:plan-phase --research — force research
-- /gsd:plan-phase --skip-research — skip research
-- /gsd:plan-phase --skip-verify — skip plan check
-```
-
+The workflow handles all logic including:
+1. Config file creation with defaults if missing
+2. Current config reading
+3. Interactive settings presentation with pre-selection
+4. Answer parsing and config merging
+5. File writing
+6. Confirmation display
-
-
-- [ ] Current config read
-- [ ] User presented with 5 settings (profile + 3 workflow toggles + git branching)
-- [ ] Config updated with model_profile, workflow, and git sections
-- [ ] Changes confirmed to user
-
diff --git a/get-shit-done/workflows/add-todo.md b/get-shit-done/workflows/add-todo.md
new file mode 100644
index 000000000..d0c4b8c20
--- /dev/null
+++ b/get-shit-done/workflows/add-todo.md
@@ -0,0 +1,153 @@
+
+Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
+
+
+
+Read all files referenced by the invoking prompt's execution_context before starting.
+
+
+
+
+
+```bash
+mkdir -p .planning/todos/pending .planning/todos/done
+```
+
+
+
+```bash
+node ~/.claude/get-shit-done/bin/gsd-tools.js list-todos | grep -oP '"area":\s*"\K[^"]+' | sort -u
+```
+
+Note existing areas for consistency in infer_area step.
+
+
+
+**With arguments:** Use as the title/focus.
+- `/gsd:add-todo Add auth token refresh` → title = "Add auth token refresh"
+
+**Without arguments:** Analyze recent conversation to extract:
+- The specific problem, idea, or task discussed
+- Relevant file paths mentioned
+- Technical details (error messages, line numbers, constraints)
+
+Formulate:
+- `title`: 3-10 word descriptive title (action verb preferred)
+- `problem`: What's wrong or why this is needed
+- `solution`: Approach hints or "TBD" if just an idea
+- `files`: Relevant paths with line numbers from conversation
+
+
+
+Infer area from file paths:
+
+| Path pattern | Area |
+|--------------|------|
+| `src/api/*`, `api/*` | `api` |
+| `src/components/*`, `src/ui/*` | `ui` |
+| `src/auth/*`, `auth/*` | `auth` |
+| `src/db/*`, `database/*` | `database` |
+| `tests/*`, `__tests__/*` | `testing` |
+| `docs/*` | `docs` |
+| `.planning/*` | `planning` |
+| `scripts/*`, `bin/*` | `tooling` |
+| No files or unclear | `general` |
+
+Use existing area from step 2 if similar match exists.
+
+
+
+```bash
+# Search for key words from title in existing todos
+grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
+```
+
+If potential duplicate found:
+1. Read the existing todo
+2. Compare scope
+
+If overlapping, use AskUserQuestion:
+- header: "Duplicate?"
+- question: "Similar todo exists: [title]. What would you like to do?"
+- options:
+ - "Skip" — keep existing todo
+ - "Replace" — update existing with new context
+ - "Add anyway" — create as separate todo
+
+
+
+```bash
+timestamp=$(node ~/.claude/get-shit-done/bin/gsd-tools.js current-timestamp full --raw)
+date_prefix=$(node ~/.claude/get-shit-done/bin/gsd-tools.js current-timestamp date --raw)
+slug=$(node ~/.claude/get-shit-done/bin/gsd-tools.js generate-slug "$title" --raw)
+```
+
+Write to `.planning/todos/pending/${date_prefix}-${slug}.md`:
+
+```markdown
+---
+created: [timestamp]
+title: [title]
+area: [area]
+files:
+ - [file:lines]
+---
+
+## Problem
+
+[problem description - enough context for future Claude to understand weeks later]
+
+## Solution
+
+[approach hints or "TBD"]
+```
+
+
+
+If `.planning/STATE.md` exists:
+
+1. Count todos: `node ~/.claude/get-shit-done/bin/gsd-tools.js list-todos --raw`
+2. Update "### Pending Todos" under "## Accumulated Context"
+
+
+
+Commit the todo and any updated state:
+
+```bash
+node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
+```
+
+Tool respects `commit_docs` config and gitignore automatically.
+
+Confirm: "Committed: docs: capture todo - [title]"
+
+
+
+```
+Todo saved: .planning/todos/pending/[filename]
+
+ [title]
+ Area: [area]
+ Files: [count] referenced
+
+---
+
+Would you like to:
+
+1. Continue with current work
+2. Add another todo
+3. View all todos (/gsd:check-todos)
+```
+
+
+
+
+
+- [ ] Directory structure exists
+- [ ] Todo file created with valid frontmatter
+- [ ] Problem section has enough context for future Claude
+- [ ] No duplicates (checked and resolved)
+- [ ] Area consistent with existing todos
+- [ ] STATE.md updated if exists
+- [ ] Todo and state committed to git
+
diff --git a/get-shit-done/workflows/pause-work.md b/get-shit-done/workflows/pause-work.md
new file mode 100644
index 000000000..3431d34cc
--- /dev/null
+++ b/get-shit-done/workflows/pause-work.md
@@ -0,0 +1,122 @@
+
+Create `.continue-here.md` handoff file to preserve complete work state across sessions. Enables seamless resumption with full context restoration.
+
+
+
+Read all files referenced by the invoking prompt's execution_context before starting.
+
+
+
+
+
+Find current phase directory from most recently modified files:
+
+```bash
+# Find most recent phase directory with work
+ls -lt .planning/phases/*/PLAN.md 2>/dev/null | head -1 | grep -oP 'phases/\K[^/]+'
+```
+
+If no active phase detected, ask user which phase they're pausing work on.
+
+
+
+**Collect complete state for handoff:**
+
+1. **Current position**: Which phase, which plan, which task
+2. **Work completed**: What got done this session
+3. **Work remaining**: What's left in current plan/phase
+4. **Decisions made**: Key decisions and rationale
+5. **Blockers/issues**: Anything stuck
+6. **Mental context**: The approach, next steps, "vibe"
+7. **Files modified**: What's changed but not committed
+
+Ask user for clarifications if needed via conversational questions.
+
+
+
+**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
+
+```markdown
+---
+phase: XX-name
+task: 3
+total_tasks: 7
+status: in_progress
+last_updated: [timestamp from current-timestamp]
+---
+
+
+[Where exactly are we? Immediate context]
+
+
+
+
+- Task 1: [name] - Done
+- Task 2: [name] - Done
+- Task 3: [name] - In progress, [what's done]
+
+
+
+
+- Task 3: [what's left]
+- Task 4: Not started
+- Task 5: Not started
+
+
+
+
+- Decided to use [X] because [reason]
+- Chose [approach] over [alternative] because [reason]
+
+
+
+- [Blocker 1]: [status/workaround]
+
+
+
+[Mental state, what were you thinking, the plan]
+
+
+
+Start with: [specific first action when resuming]
+
+```
+
+Be specific enough for a fresh Claude to understand immediately.
+
+Use `current-timestamp` for last_updated field:
+```bash
+timestamp=$(node ~/.claude/get-shit-done/bin/gsd-tools.js current-timestamp full --raw)
+```
+
+
+
+```bash
+node ~/.claude/get-shit-done/bin/gsd-tools.js commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md
+```
+
+
+
+```
+✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
+
+Current state:
+
+- Phase: [XX-name]
+- Task: [X] of [Y]
+- Status: [in_progress/blocked]
+- Committed as WIP
+
+To resume: /gsd:resume-work
+
+```
+
+
+
+
+
+- [ ] .continue-here.md created in correct phase directory
+- [ ] All sections filled with specific content
+- [ ] Committed as WIP
+- [ ] User knows location and how to resume
+
diff --git a/get-shit-done/workflows/set-profile.md b/get-shit-done/workflows/set-profile.md
new file mode 100644
index 000000000..83706fe4b
--- /dev/null
+++ b/get-shit-done/workflows/set-profile.md
@@ -0,0 +1,80 @@
+
+Switch the model profile used by GSD agents. Controls which Claude model each agent uses, balancing quality vs token spend.
+
+
+
+Read all files referenced by the invoking prompt's execution_context before starting.
+
+
+
+
+
+Validate argument:
+
+```
+if $ARGUMENTS.profile not in ["quality", "balanced", "budget"]:
+ Error: Invalid profile "$ARGUMENTS.profile"
+ Valid profiles: quality, balanced, budget
+ EXIT
+```
+
+
+
+```bash
+node ~/.claude/get-shit-done/bin/gsd-tools.js config-ensure-section
+```
+
+Creates `.planning/config.json` with defaults if missing.
+
+
+
+Read current config:
+```bash
+cat .planning/config.json
+```
+
+Update `model_profile` field:
+```json
+{
+ "model_profile": "$ARGUMENTS.profile"
+}
+```
+
+Write updated config back to `.planning/config.json`.
+
+
+
+Display confirmation with model table for selected profile:
+
+```
+✓ Model profile set to: $ARGUMENTS.profile
+
+Agents will now use:
+
+[Show table from MODEL_PROFILES in gsd-tools.js for selected profile]
+
+Example:
+| Agent | Model |
+|-------|-------|
+| gsd-planner | opus |
+| gsd-executor | sonnet |
+| gsd-verifier | haiku |
+| ... | ... |
+
+Next spawned agents will use the new profile.
+```
+
+Map profile names:
+- quality: use "quality" column from MODEL_PROFILES
+- balanced: use "balanced" column from MODEL_PROFILES
+- budget: use "budget" column from MODEL_PROFILES
+
+
+
+
+
+- [ ] Argument validated
+- [ ] Config file ensured
+- [ ] Config updated with new model_profile
+- [ ] Confirmation displayed with model table
+
diff --git a/get-shit-done/workflows/settings.md b/get-shit-done/workflows/settings.md
new file mode 100644
index 000000000..fd40f55a4
--- /dev/null
+++ b/get-shit-done/workflows/settings.md
@@ -0,0 +1,142 @@
+
+Interactive configuration of GSD workflow agents (research, plan_check, verifier) and model profile selection via multi-question prompt. Updates .planning/config.json with user preferences.
+
+
+
+Read all files referenced by the invoking prompt's execution_context before starting.
+
+
+
+
+
+```bash
+node ~/.claude/get-shit-done/bin/gsd-tools.js config-ensure-section
+```
+
+Creates `.planning/config.json` with defaults if missing.
+
+
+
+```bash
+cat .planning/config.json
+```
+
+Parse current values (default to `true` if not present):
+- `workflow.research` — spawn researcher during plan-phase
+- `workflow.plan_check` — spawn plan checker during plan-phase
+- `workflow.verifier` — spawn verifier during execute-phase
+- `model_profile` — which model each agent uses (default: `balanced`)
+- `git.branching_strategy` — branching approach (default: `"none"`)
+
+
+
+Use AskUserQuestion with current values pre-selected:
+
+```
+AskUserQuestion([
+ {
+ question: "Which model profile for agents?",
+ header: "Model",
+ multiSelect: false,
+ options: [
+ { label: "Quality", description: "Opus everywhere except verification (highest cost)" },
+ { label: "Balanced (Recommended)", description: "Opus for planning, Sonnet for execution/verification" },
+ { label: "Budget", description: "Sonnet for writing, Haiku for research/verification (lowest cost)" }
+ ]
+ },
+ {
+ question: "Spawn Plan Researcher? (researches domain before planning)",
+ header: "Research",
+ multiSelect: false,
+ options: [
+ { label: "Yes", description: "Research phase goals before planning" },
+ { label: "No", description: "Skip research, plan directly" }
+ ]
+ },
+ {
+ question: "Spawn Plan Checker? (verifies plans before execution)",
+ header: "Plan Check",
+ multiSelect: false,
+ options: [
+ { label: "Yes", description: "Verify plans meet phase goals" },
+ { label: "No", description: "Skip plan verification" }
+ ]
+ },
+ {
+ question: "Spawn Execution Verifier? (verifies phase completion)",
+ header: "Verifier",
+ multiSelect: false,
+ options: [
+ { label: "Yes", description: "Verify must-haves after execution" },
+ { label: "No", description: "Skip post-execution verification" }
+ ]
+ },
+ {
+ question: "Git branching strategy?",
+ header: "Branching",
+ multiSelect: false,
+ options: [
+ { label: "None (Recommended)", description: "Commit directly to current branch" },
+ { label: "Per Phase", description: "Create branch for each phase (gsd/phase-{N}-{name})" },
+ { label: "Per Milestone", description: "Create branch for entire milestone (gsd/{version}-{name})" }
+ ]
+ }
+])
+```
+
+
+
+Merge new settings into existing config.json:
+
+```json
+{
+ ...existing_config,
+ "model_profile": "quality" | "balanced" | "budget",
+ "workflow": {
+ "research": true/false,
+ "plan_check": true/false,
+ "verifier": true/false
+ },
+ "git": {
+ "branching_strategy": "none" | "phase" | "milestone"
+ }
+}
+```
+
+Write updated config to `.planning/config.json`.
+
+
+
+Display:
+
+```
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ GSD ► SETTINGS UPDATED
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+| Setting | Value |
+|----------------------|-------|
+| Model Profile | {quality/balanced/budget} |
+| Plan Researcher | {On/Off} |
+| Plan Checker | {On/Off} |
+| Execution Verifier | {On/Off} |
+| Git Branching | {None/Per Phase/Per Milestone} |
+
+These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs.
+
+Quick commands:
+- /gsd:set-profile — switch model profile
+- /gsd:plan-phase --research — force research
+- /gsd:plan-phase --skip-research — skip research
+- /gsd:plan-phase --skip-verify — skip plan check
+```
+
+
+
+
+
+- [ ] Current config read
+- [ ] User presented with 5 settings (profile + 3 workflow toggles + git branching)
+- [ ] Config updated with model_profile, workflow, and git sections
+- [ ] Changes confirmed to user
+