Skip to main content
ClaudeWave
Slash Command89 estrellas del repoactualizado 1mo ago

init-preferences

Interactive wizard to configure user preferences for command defaults and behavior

Instalar en Claude Code
Copiar
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/marcusgoll/Spec-Flow/HEAD/.claude/commands/project/init-preferences.md -o ~/.claude/commands/init-preferences.md
Después abre una sesión nueva de Claude Code; el slash command carga automáticamente.

init-preferences.md

<objective>
Guide users through interactive preference configuration to customize Spec-Flow command defaults and behavior.

**What it configures:**
- Command default modes (/epic, /tasks, /init-project, /run-prompt)
- UI preferences (usage stats, last-used recommendations)
- Automation behavior (CI/CD defaults)
- Git worktree preferences (parallel development)
- Prototype workflow preferences
- E2E and visual regression testing (v10.4)
- Database migration safety (v10.5)
- Perpetual learning system

**Output:**
- Creates/updates `.spec-flow/config/user-preferences.yaml`
- Provides configuration summary
- Shows example commands using new preferences

**Flags:**
- `--reset`: Reset all preferences to defaults (interactive confirmation)
</objective>

<context>
Existing preferences: @.spec-flow/config/user-preferences.yaml
Preference schema: @.spec-flow/config/user-preferences-schema.yaml
</context>

<process>
### Step 0: Check for Reset Flag

**If $ARGUMENTS contains "--reset":**

1. Read existing preferences to show what will be reset
2. Use AskUserQuestion to confirm:
   ```
   Question: "Reset all preferences to defaults?"
   Options:
     - "Yes, reset everything" - All preferences will be set to defaults
     - "No, keep current preferences" - Cancel reset operation
   ```

3. If confirmed:
   - Copy `.spec-flow/config/user-preferences.example.yaml` to `.spec-flow/config/user-preferences.yaml`
   - Display: "✓ Preferences reset to defaults"
   - End command

4. If cancelled: End command

### Step 1: Welcome and Introduction

Display welcome message:

```
╔════════════════════════════════════════════════════════════════╗
║  Spec-Flow Preference Configuration Wizard                     ║
╚════════════════════════════════════════════════════════════════╝

This wizard will help you configure default behavior for Spec-Flow commands.

Your preferences are saved to: .spec-flow/config/user-preferences.yaml

You can always:
- Re-run this wizard to update preferences
- Edit the config file directly
- Override preferences with command-line flags
- Reset with: /init-preferences --reset

Let's get started! 🚀
```

### Step 2: Command Preferences (Round 1 - Epic & Tasks)

**Use AskUserQuestion with 2 questions:**

**Question 1: Epic Command Default Mode**
```json
{
  "question": "What default mode should /epic use?",
  "header": "/epic mode",
  "multiSelect": false,
  "options": [
    {
      "label": "Interactive (recommended for new users)",
      "description": "Pause at spec review and plan review for manual approval. Safer for learning the workflow."
    },
    {
      "label": "Auto (recommended for experienced users)",
      "description": "Skip all prompts and run until blocker. Faster for experienced users who trust the workflow."
    }
  ]
}
```

**Question 2: Tasks Command Default Mode**
```json
{
  "question": "What default mode should /tasks use?",
  "header": "/tasks mode",
  "multiSelect": false,
  "options": [
    {
      "label": "Standard (recommended for most projects)",
      "description": "Generate TDD tasks for direct implementation. Best for API-heavy or backend-focused features."
    },
    {
      "label": "UI-first (recommended for design-heavy projects)",
      "description": "Generate HTML mockups first, then implementation tasks. Best for UI-heavy features requiring design approval."
    }
  ]
}
```

### Step 3: Command Preferences (Round 2 - Init-Project & Run-Prompt)

**Use AskUserQuestion with 2 questions:**

**Question 3: Init-Project Command Default Mode**
```json
{
  "question": "What default mode should /init-project use?",
  "header": "/init-project mode",
  "multiSelect": false,
  "options": [
    {
      "label": "Interactive (recommended)",
      "description": "Run questionnaire (15-48 questions depending on --with-design). Best for most users."
    },
    {
      "label": "CI (for automation only)",
      "description": "Non-interactive mode using environment variables. Only use if you're automating project initialization in CI/CD."
    }
  ]
}
```

**Question 4: Should /init-project include design system by default?**
```json
{
  "question": "Include design system setup (--with-design) by default?",
  "header": "Design system",
  "multiSelect": false,
  "options": [
    {
      "label": "No (recommended for most projects)",
      "description": "Skip design system setup. You can always add it later with /init-project --with-design --update."
    },
    {
      "label": "Yes (for design-focused projects)",
      "description": "Always include design tokens, brand guidelines, and accessibility standards. Adds ~30 questions to initialization."
    }
  ]
}
```

### Step 4: Command Preferences (Round 3 - Run-Prompt)

**Use AskUserQuestion with 1 question:**

**Question 5: Run-Prompt Command Default Strategy**
```json
{
  "question": "What execution strategy should /run-prompt use for multiple prompts?",
  "header": "/run-prompt strategy",
  "multiSelect": false,
  "options": [
    {
      "label": "Auto-detect (recommended)",
      "description": "Analyze prompt dependencies and choose parallel or sequential automatically. Safest and usually fastest."
    },
    {
      "label": "Parallel (fast but risky)",
      "description": "Always run prompts simultaneously. Faster but can cause conflicts if prompts modify the same files."
    },
    {
      "label": "Sequential (safe but slow)",
      "description": "Always run prompts one-by-one. Slowest but guarantees no conflicts."
    }
  ]
}
```

### Step 5: UI Preferences

**Use AskUserQuestion with 2 questions:**

**Question 6: Show Usage Statistics**
```json
{
  "question": "Show usage statistics in command prompts?",
  "header": "Usage stats",
  "multiSelect": false,
  "options": [
    {
      "label": "Yes (recommended)",
      "description": "Display 'used 8/10 times' in mode selection prompts. Helps you see your own patterns."
    },
    {
      "label": "No (minimal UI)",
      "description": "Hide usage stat