Skip to content
Back to skills

Init Project

ASecurity

Initialize a new project with guided configuration wizard. Checks for .parade/ scaffolding, creates comprehensive constitution, governance policies, design system, and custom agents. Supports single app and monorepo configurations. Use when setting up a new project or adding configuration to an existing one.

  • 27 stars
  • 0 votes
  • 0 copies
  • 27 views
  • Added June 14, 2026
developmentjavascripttypescriptpythongojavaswiftkotlinbashsqlreact

Works with

  • claude code
  • claude desktop
  • cli
  • mcp

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 5 files and shows the line behind each finding

Scanned June 14, 2026

npx -y skills add JeremyKalmus/parade --skill init-project --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Init Project?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Init Project
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremykalmus-init-project/badge)](https://www.skillsdirectory.com/skills/jeremykalmus-init-project)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: init-project
description: Initialize a new project with guided configuration wizard. Checks for .parade/ scaffolding, creates comprehensive constitution, governance policies, design system, and custom agents. Supports single app and monorepo configurations. Use when setting up a new project or adding configuration to an existing one.
---

# Init Project Skill

## Purpose

Guide users through comprehensive project configuration with progressive disclosure: check environment, capture project basics, create project constitution, configure stack and governance, optionally add design system and custom SME agents, then generate `project.yaml` and create directory scaffold.

## When to Use

- Starting a new project from scratch
- Adding Claude Code configuration to an existing codebase
- User says "init project", "set up project", "configure this project"
- No `project.yaml` exists at repository root
- **Enhancing an existing project.yaml** with scaffolding, agents, and design docs

## Arguments

```
/init-project [--minimal]
```

- `--minimal`: Skip optional sections, only ask required questions (6 questions, ~3-4 minutes)

---

## Auto-Detection Mode

When the skill starts, it checks for an existing `project.yaml` with pre-filled values. This allows projects that already have basic configuration to skip redundant questions and proceed directly to scaffolding enhancements.

### Step 0: Check for Existing Configuration

Before starting the wizard, check if project.yaml exists and parse its contents:

```bash
if [ -f "project.yaml" ]; then
  # Parse existing config
  # Skip questions for pre-filled sections
  # Inform user: "Detected existing project.yaml with pre-filled values"
fi
```

### Detection Logic

Read `project.yaml` and check for the following pre-filled sections:

| YAML Path | If Present | Action |
|-----------|------------|--------|
| `project.name` | Has non-empty value | Skip project name question (Phase 1.1) |
| `project.description` | Has non-empty value | Skip project description question (Phase 1.2) |
| `stacks` | Section exists with framework/language | Skip stack selection (Phase 2) |
| `vision.purpose` | Has non-empty value | Skip vision/purpose question (Phase 8.2) |
| `vision.target_users` | Has non-empty value | Skip target users question (Phase 8.2) |
| `vision.core_principles` | Has non-empty array/value | Skip core principles question (Phase 8.2) |
| `vision.boundaries` | Has non-empty array/value | Skip technical boundaries question (Phase 8.2) |
| `vision.success_metrics` | Has non-empty array/value | Skip success metrics question (Phase 8.2) |

### Display Detected Configuration

When existing config is found with values, display:

```
Detected existing project.yaml with:
- Project name: <name>
- Description: <description>
- Stack: <stack type> / <framework> / <language>
- Vision: <defined | not defined>
- [other pre-filled values]

Proceeding with scaffolding enhancements...
```

### Auto-Detection Workflow

1. **Read project.yaml** using Read tool
2. **Parse YAML** to identify pre-filled sections
3. **Store detected values** in wizard state
4. **Display summary** of what was detected
5. **Skip corresponding questions** in subsequent phases
6. **Proceed to enhancements** - create directories, agents, design docs, etc.

### Example: Partially Pre-filled Config

Given this existing `project.yaml`:
```yaml
version: "1.0"
project:
  name: "MyApp"
  description: "A fitness tracking application"
stacks:
  mobile:
    framework: "SwiftUI"
    language: "Swift"
```

The skill will:
1. Display: "Detected existing project.yaml with: Project name: MyApp, Stack: mobile / SwiftUI / Swift"
2. **Skip** Phase 1 (Project Basics) and Phase 2 (Primary Stack) questions
3. **Ask** Phase 3 (Optional Sections) questions
4. **Ask** Phase 8 (Constitution) questions if vision section is missing
5. **Proceed** to Phase 5 (Directory Scaffold) and Phase 6 (Generate Coding Agents)

### Example: Fully Pre-filled Config

If project.yaml has all required sections including vision:
```yaml
version: "1.0"
project:
  name: "MyApp"
  description: "A fitness tracking application"
stacks:
  mobile:
    framework: "SwiftUI"
    language: "Swift"
vision:
  purpose: "Help users track fitness goals"
  target_users: "Health-conscious individuals"
  core_principles:
    - "Privacy first"
    - "Offline capable"
  boundaries:
    - "No cloud sync required"
  success_metrics:
    - "Daily active users"
```

The skill will:
1. Display full summary of detected configuration
2. **Skip** all configuration questions
3. **Proceed directly** to scaffolding:
   - Create `.claude/`, `.beads/`, `.design/` directories
   - Generate coding agents based on detected stack
   - Create design system templates if enabled
   - Initialize beads if not already done

---

## Process Overview

```
┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐
| PHASE 0          | --> | PHASE 1          | --> | PHASE 2          | --> | PHASE 3          |
| Environment      |     | Project Basics   |     | Constitution     |     | Tech Stack       |
| Check .parade/   |     | - Name           |     | - Vision         |     | - Framework      |
| Check .beads/    |     | - Description    |     | - Target users   |     | - Language       |
| Suggest npx      |     | - Repo type      |     | - Success metrics|     | - Testing        |
└──────────────────┘     └──────────────────┘     | - Core principles|     └──────────────────┘
                                                  | - Boundaries     |
                                                  └──────────────────┘
         ↓                        ↓                        ↓                        ↓
┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐
| PHASE 3.5        | --> | PHASE 4          | --> | PHASE 5          | --> | PHASE 6          |
| MCP Setup        |     | Governance       |     | Design System    |     | Custom Agents    |
| - Detect config  |     | - Data gov       |     | - Enable/disable |     | - Domain experts |
| - Recommendations|     | - Code gov       |     | - Color scheme   |     | - Agent prompts  |
| - Configure MCPs |     | - Naming rules   |     | - Typography     |     | - Label mapping  |
└──────────────────┘     └──────────────────┘     └──────────────────┘     └──────────────────┘
         ↓
┌──────────────────┐
| PHASE 7          |
| First Feature    |
| Prompt /discover |
| - Guide next     |
| - Summarize      |
└──────────────────┘
```

**Target: Complete comprehensive setup in under 10 minutes**

---

## Execution Protocol

When this skill is invoked:

1. **Phase 0: Environment Check** - Verify .parade/ and .beads/ directories exist
2. **Run Auto-Detection**: Check if `project.yaml` exists with pre-filled values
   - If detected, display summary and skip questions for pre-filled sections
   - Store detected values in wizard state for use in later phases
3. **Phase 1: Project Basics** - Capture name, description, repo type
4. **Phase 2: Constitution Creation** - Build comprehensive project constitution
5. **Phase 3: Tech Stack** - Configure framework, language, testing
6. **Phase 3.5: MCP Setup** - Configure MCP servers for Claude Desktop (optional)
7. **Phase 4: Governance Policies** - Set data and code governance rules
8. **Phase 5: Design System** - Optional design system setup
9. **Phase 6: Custom Agents** - Define domain-specific expert agents
10. **Phase 7: First Feature Prompt** - Guide user to /discover
11. **Write final project.yaml** using Write tool
12. **Create directory scaffold** with templates
13. **Generate agents and constitution files**
14. **Show summary** with next steps

**Important**: Ask questions ONE AT A TIME, validate each response before proceeding.

---

## Phase 0: Environment Check

Before starting the configuration wizard, verify that the required directory structure has been created.

### 0.1 Check for .parade/ Directory

**Check:** Does `.parade/` directory exist at project root?

```bash
ls -d .parade/ 2>/dev/null && echo "EXISTS" || echo "NOT_FOUND"
```

**If NOT_FOUND:**
```
⚠️  .parade/ directory not found

The .parade/ directory contains essential templates and scaffolding.
It should be created by running:

  npx parade-init

This will create:
- .parade/templates/ (agent templates, constitution template)
- .parade/schemas/ (validation schemas)
- Basic directory structure

Would you like to:
[1] Exit and run npx parade-init first (recommended)
[2] Continue without .parade/ (limited functionality)
```

**If user selects [1]:** Exit skill with instructions
**If user selects [2]:** Log warning and continue

### 0.2 Check for .beads/ Directory

**Check:** Does `.beads/` directory exist at project root?

```bash
ls -d .beads/ 2>/dev/null && echo "EXISTS" || echo "NOT_FOUND"
```

**If NOT_FOUND:**
```
Note: Beads is not yet initialized. This will be handled later in the setup process.
```

**Continue to Phase 1**

### 0.3 Display Environment Summary

Once checks are complete, display:
```
Environment Check Complete:
- .parade/ directory: ✓ Found | ✗ Not found (limited functionality)
- .beads/ directory: ✓ Found | ○ Will initialize later

Proceeding with project configuration...
```

---

## Phase 1: Project Basics (Required)

### 1.1 Project Name
**Ask:** "What is the name of this project?"
**Validate:** Pattern `^[a-zA-Z][a-zA-Z0-9-_ ]*$`, max 100 chars
**Error:** "Project name must start with a letter and can only contain letters, numbers, spaces, dashes, and underscores."

### 1.2 Purpose/Description
**Ask:** "Describe the project in 1-2 sentences. What problem does it solve?"
**Validate:** Non-empty string

### 1.3 Repository Type
**Ask:** "Is this a single-app or monorepo project? [1] Single app [2] Monorepo"
**Store:** `repo_type = "single"` or `"monorepo"`

---

## Phase 2: Constitution Creation (Enhanced)

Create a comprehensive project constitution defining vision, principles, and boundaries.

### 2.1 Prompt for Constitution

**Ask:** "Would you like to create a project constitution? This defines your app's vision, principles, and boundaries. [Y/n]"

**Default:** Yes (press Enter to accept)

**If user declines:** Skip to Phase 3 (Tech Stack)

### 2.2 Vision Statement

**Ask:** "What is the vision statement for this project? Describe in 1-2 sentences what this project aims to achieve and why it matters."

**Validate:** Non-empty string, at least 20 characters
**Example:** "Empower individuals to take control of their health through simple, privacy-first fitness tracking."
**Store:** `constitution_vision`

### 2.3 Target Users

**Ask:** "Who are the target users? List the primary audience(s) for this project (comma-separated or one per line)."

**Validate:** Non-empty string
**Transform:** Format as bullet list
**Example Input:** "Health-conscious individuals, fitness beginners, personal trainers"
**Example Output:**
```
- Health-conscious individuals
- Fitness beginners
- Personal trainers
```
**Store:** `constitution_target_users`

### 2.4 Success Metrics

**Ask:** "How will you measure success? Define 2-4 measurable outcomes that indicate this project is successful."

**Validate:** Non-empty string
**Transform:** Format as bullet list
**Example Input:** "Daily active users > 1000, 4.5+ app store rating, <2s load time"
**Example Output:**
```
- Daily active users > 1000
- 4.5+ app store rating
- Page load time < 2 seconds
```
**Store:** `constitution_success_metrics`

### 2.5 Core Principles

**Ask:** "What are the core principles that guide this project? List 3-5 guiding values (comma-separated or one per line)."

**Validate:** Non-empty string, at least 3 items recommended
**Transform:** Format as bullet list
**Example Input:** "Privacy first, Offline capable, Simple and intuitive, Data ownership"
**Example Output:**
```
- Privacy first
- Offline capable
- Simple and intuitive
- Data ownership
```
**Store:** `constitution_core_principles`

### 2.6 Boundaries

**Ask:** "What are the boundaries of this project? What will this project NOT do or support?"

**Validate:** Non-empty string
**Transform:** Format as bullet list
**Example Input:** "No social features, No cloud sync required, No third-party tracking"
**Example Output:**
```
- No social features
- No cloud sync required
- No third-party tracking
```
**Store:** `constitution_boundaries`

### 2.7 Write Constitution File

1. **Check if `.parade/templates/CONSTITUTION.md.template` exists**
   - If exists: Read template
   - If not exists: Use fallback inline template

2. **Substitute placeholders:**
   - `{{PROJECT_NAME}}` → project_name (from Phase 1)
   - `{{VISION}}` → constitution_vision
   - `{{TARGET_USERS}}` → constitution_target_users (formatted list)
   - `{{SUCCESS_METRICS}}` → constitution_success_metrics (formatted list)
   - `{{CORE_PRINCIPLES}}` → constitution_core_principles (formatted list)
   - `{{BOUNDARIES}}` → constitution_boundaries (formatted list)

3. **Create `docs/` directory if needed:**
   ```bash
   mkdir -p docs
   ```

4. **Write to `docs/CONSTITUTION.md`** using Write tool

**If `docs/CONSTITUTION.md` already exists:**
- Offer: [1] View [2] Replace (backup to `.md.bak`) [3] Skip
- Backup logic: `cp docs/CONSTITUTION.md docs/CONSTITUTION.md.bak.TIMESTAMP`

---

## Phase 3: Tech Stack (Required)

### 3.1 Stack Type
**Ask:** "What type of stack? [1] Frontend [2] Backend [3] Mobile [4] Database"
**Store:** `stack_type = "frontend"/"backend"/"mobile"/"database"`

### 3.2 Framework
**Ask:** Framework options based on stack_type (Next.js, React, SwiftUI, Express, etc.)
**Offer:** Numbered menu with "Other (specify)" option

### 3.3 Language
**Ask:** "Primary language? [1] TypeScript [2] JavaScript [3] Swift [4] Python [5] Go [6] Other"

### 3.4 Testing Framework
**Ask:** "Unit testing framework? [1] Jest [2] Vitest [3] XCTest [4] pytest [5] None [6] Other"

### 3.5 Commands
**Ask:** Test, lint, and build commands
**Offer smart defaults** based on stack type (e.g., `npm test`, `swift test`, `pytest`)

---

## Phase 3.5: MCP Setup (Optional)

Configure Model Context Protocol (MCP) servers for enhanced Claude Desktop integration.

### 3.5.1 Prompt for MCP Setup

**Ask:** "Would you like to configure MCP servers for Claude Desktop? This enables Claude to interact with databases, file systems, and other services. [Y/n]"

**Default:** Yes (press Enter to accept)

**If user declines:** Skip to Phase 4 (Governance Policies)

### 3.5.2 Detect Claude Desktop Config

Check if Claude Desktop configuration exists:

**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%/Claude/claude_desktop_config.json`
**Linux:** `~/.config/claude/claude_desktop_config.json`

**If config not found:**
```
Note: Claude Desktop configuration not found at expected location.

This could mean:
1. Claude Desktop is not installed
2. Claude Desktop hasn't been run yet (config created on first launch)
3. Config is at a non-standard location

Options:
[1] Create new config file (will be used when Claude Desktop is installed)
[2] Skip MCP setup for now
```

**If user selects [1]:** Continue with MCP setup, create config directory if needed
**If user selects [2]:** Skip to Phase 4

### 3.5.3 Generate MCP Recommendations

Based on stack selection from Phase 3, generate MCP recommendations using the McpRecommendationEngine patterns:

**MCP Mapping (Framework → MCP Servers):**

| Framework Category | Frameworks | Recommended MCPs |
|-------------------|------------|------------------|
| Frontend | React, Next.js, Vue, Angular, Svelte, Electron | `filesystem` |
| Backend | Express, Fastify, NestJS, Koa | `filesystem` |
| Database (Supabase) | Supabase | `supabase` |
| Database (SQL) | PostgreSQL, MySQL | `postgres` |
| Database (Local) | SQLite, Prisma | `sqlite` |
| Mobile | Swift, Kotlin, Flutter | `filesystem` |
| All Projects | (default) | `github` (optional) |

**Priority Levels:**
- **required**: Essential for the selected stack to function properly
- **recommended**: Significantly enhances development experience
- **optional**: Nice-to-have, can be added later

### 3.5.4 Display Recommendations

**Display:**
```
Based on your stack (${framework} / ${language}), I recommend these MCP servers:

| Priority    | MCP Server  | Rationale                                           |
|-------------|-------------|-----------------------------------------------------|
| recommended | filesystem  | Enables file system operations for ${framework}    |
|             |             | development, allowing Claude to read, write, and   |
|             |             | manage project files.                              |
| recommended | supabase    | Provides direct integration with Supabase database |
|             |             | and auth services for seamless backend development.|
| optional    | github      | Allows Claude to interact with GitHub repositories,|
|             |             | issues, and pull requests for enhanced project     |
|             |             | management.                                        |

Select MCPs to configure:
[1] All recommended (default)
[2] All (including optional)
[3] Choose individually
[4] Skip MCP setup
```

**If user selects [3]:** Display checklist for each MCP server

### 3.5.5 Configure Selected MCPs

For each selected MCP server, collect required configuration:

#### filesystem MCP
```
Configuring filesystem MCP...

This MCP allows Claude to read and write files in specified directories.

**Ask:** "Which directories should Claude have access to? (comma-separated paths, or '.' for current project)"

**Default:** Current project directory
**Validate:** Paths exist or will be created
**Store:** `mcp_filesystem_paths`

**Config Example:**
{
  "command": "npx",
  "args": ["-y", "@anthropic/mcp-server-filesystem"],
  "env": {
    "ALLOWED_PATHS": "${mcp_filesystem_paths}"
  }
}
```

#### supabase MCP
```
Configuring Supabase MCP...

This MCP enables direct interaction with your Supabase project.

**Ask:** "Enter your Supabase project URL (e.g., https://xxx.supabase.co):"
**Validate:** URL format, starts with https://
**Store:** `mcp_supabase_url`

**Ask:** "Enter your Supabase anon/public key:"
**Validate:** Non-empty string
**Sensitive:** Do not log or display after entry
**Store:** `mcp_supabase_key`

**Config Example:**
{
  "command": "npx",
  "args": ["-y", "@supabase/mcp-server-supabase"],
  "env": {
    "SUPABASE_URL": "${mcp_supabase_url}",
    "SUPABASE_KEY": "${mcp_supabase_key}"
  }
}
```

#### postgres MCP
```
Configuring PostgreSQL MCP...

This MCP enables direct PostgreSQL database operations.

**Ask:** "Enter your PostgreSQL connection URL (e.g., postgresql://user:pass@localhost:5432/db):"
**Validate:** PostgreSQL URL format
**Sensitive:** Do not log or display after entry
**Store:** `mcp_postgres_url`

**Config Example:**
{
  "command": "npx",
  "args": ["-y", "@anthropic/mcp-server-postgres"],
  "env": {
    "DATABASE_URL": "${mcp_postgres_url}"
  }
}
```

#### sqlite MCP
```
Configuring SQLite MCP...

This MCP provides SQLite database access.

**Ask:** "Enter the path to your SQLite database file (e.g., ./database.sqlite):"
**Validate:** Path format (file doesn't need to exist yet)
**Store:** `mcp_sqlite_path`

**Config Example:**
{
  "command": "npx",
  "args": ["-y", "@anthropic/mcp-server-sqlite"],
  "env": {
    "DATABASE_PATH": "${mcp_sqlite_path}"
  }
}
```

#### github MCP
```
Configuring GitHub MCP...

This MCP enables GitHub repository interactions.

**Ask:** "Enter your GitHub personal access token (with repo scope):"
**Validate:** Non-empty string
**Sensitive:** Do not log or display after entry
**Store:** `mcp_github_token`

**Config Example:**
{
  "command": "npx",
  "args": ["-y", "@anthropic/mcp-server-github"],
  "env": {
    "GITHUB_TOKEN": "${mcp_github_token}"
  }
}
```

### 3.5.6 Write to Claude Desktop Config

**Step 1: Backup existing config (if exists)**

```bash
# Create timestamped backup
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
cp ~/Library/Application\ Support/Claude/claude_desktop_config.json \
   ~/Library/Application\ Support/Claude/claude_desktop_config.backup-${TIMESTAMP}.json
```

**Display:** "Backed up existing config to claude_desktop_config.backup-${TIMESTAMP}.json"

**Step 2: Read existing config or create new**

If config exists:
- Parse existing JSON
- Preserve all existing settings
- Merge new mcpServers entries

If config doesn't exist:
- Create parent directory if needed
- Initialize with empty mcpServers object

**Step 3: Add MCP server entries**

For each configured MCP, add entry to `mcpServers` object:

```json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-filesystem"],
      "env": {
        "ALLOWED_PATHS": "/path/to/project"
      }
    },
    "supabase": {
      "command": "npx",
      "args": ["-y", "@supabase/mcp-server-supabase"],
      "env": {
        "SUPABASE_URL": "https://xxx.supabase.co",
        "SUPABASE_KEY": "your-anon-key"
      }
    }
  }
}
```

**Step 4: Write atomically**

Write to temp file first, then rename to prevent corruption:

```bash
# Write to temp file
echo "${config_json}" > ~/Library/Application\ Support/Claude/claude_desktop_config.json.tmp

# Atomic rename
mv ~/Library/Application\ Support/Claude/claude_desktop_config.json.tmp \
   ~/Library/Application\ Support/Claude/claude_desktop_config.json
```

**Step 5: Handle existing server entries**

If a server name already exists in config:

**Ask:** "MCP server '${server_name}' already exists in config. [1] Keep existing [2] Replace with new [3] Skip this server"

**Default:** Keep existing (to preserve user customizations)

### 3.5.7 Display MCP Setup Summary

```
MCP Setup Complete!

Configured servers:
- filesystem: /path/to/project
- supabase: https://xxx.supabase.co
- github: configured

Config file: ~/Library/Application Support/Claude/claude_desktop_config.json
Backup: ~/Library/Application Support/Claude/claude_desktop_config.backup-20260105_143000.json

Note: Restart Claude Desktop for changes to take effect.
```

### 3.5.8 Error Handling

**Permission denied:**
```
Error: Cannot write to Claude Desktop config directory.

Please ensure you have write permissions to:
  ~/Library/Application Support/Claude/

You can manually add MCP servers by editing claude_desktop_config.json
or running this setup again with appropriate permissions.
```

**Invalid JSON in existing config:**
```
Error: Existing Claude Desktop config contains invalid JSON.

Options:
[1] View backup and continue (creates new config)
[2] Exit and fix manually

Backup location: ~/Library/Application Support/Claude/claude_desktop_config.backup-${TIMESTAMP}.json
```

**MCP server validation failed:**
```
Warning: Could not validate ${server_name} MCP configuration.

The server entry was added but may not work correctly.
Common issues:
- Missing environment variables
- Incorrect command or args
- Network connectivity (for remote services)

You can test by restarting Claude Desktop and checking for errors.
```

---

## Phase 4: Governance Policies (New/Enhanced)

Configure data and code governance policies for the project.

### 4.1 Data Governance

#### 4.1.1 Auth Provider

**Ask:** "What authentication provider will you use? [1] Supabase [2] Firebase [3] Custom [4] None [5] Other"

**Store:** `auth_provider = "supabase" | "firebase" | "custom" | "none" | "<other>"`

#### 4.1.2 Naming Conventions

**Ask:** "Preferred naming conventions:"

**Field naming:**
- **Ask:** "Database field naming? [1] snake_case (recommended) [2] camelCase [3] PascalCase"
- **Store:** `naming_fields = "snake_case" | "camelCase" | "PascalCase"`

**File naming:**
- **Ask:** "File naming? [1] kebab-case (recommended) [2] camelCase [3] PascalCase"
- **Store:** `naming_files = "kebab-case" | "camelCase" | "PascalCase"`

**Date fields:**
- **Offer smart default:** `created_at`, `updated_at` based on field naming convention
- **Store:** `naming_dates = "created_at" | "createdAt" | etc.`

### 4.2 Code Governance

#### 4.2.1 Linting Rules

**Ask:** "Linting configuration? [1] Strict (recommended) [2] Standard [3] Relaxed [4] Custom"

**Store:** `linting_mode = "strict" | "standard" | "relaxed" | "custom"`

**If custom:** Ask for specific linting command

#### 4.2.2 Testing Requirements

**Ask:** "Minimum test coverage? [1] 80% (strict) [2] 60% (standard) [3] 40% (relaxed) [4] None"

**Store:** `test_coverage_min = 80 | 60 | 40 | 0`

#### 4.2.3 Review Requirements

**Ask:** "Code review requirements? [1] Required for all changes [2] Required for critical files [3] Optional [4] None"

**Store:** `review_requirement = "all" | "critical" | "optional" | "none"`

### 4.3 Write Governance to project.yaml

All governance settings are written to the `data_governance` and `code_governance` sections of `project.yaml`:

```yaml
data_governance:
  auth_provider: "${auth_provider}"
  naming_conventions:
    fields: "${naming_fields}"
    files: "${naming_files}"
    directories: "kebab-case"
    dates: "${naming_dates}"
    enums: "SCREAMING_SNAKE"

code_governance:
  linting:
    mode: "${linting_mode}"
    command: "${lint_command}"
  testing:
    min_coverage: ${test_coverage_min}
    command: "${test_command}"
  review:
    requirement: "${review_requirement}"
```

---

## Phase 5: Design System (Enhanced)

### 5.1 Prompt for Design System

**Ask:** "Would you like to set up a design system for this project? [Y/n]"

**Default:** Yes (press Enter to accept)

**If user declines:** Skip to Phase 6 (Custom Agents)

### 5.2 Enable Design System

**Set:** `design_system_enabled = true`
**Set:** `design_system_path = ".design/"`

### 5.3 Color Scheme

**Ask:** "What color scheme will your design support? [1] Light only [2] Dark only [3] Both light and dark [4] Custom"

**Store:** `design_color_scheme = "light" | "dark" | "both" | "custom"`

### 5.4 Primary Colors

**Ask:** "What are your primary brand colors? (Enter hex codes, comma-separated, e.g., #3B82F6, #10B981)"

**Validate:** Hex color format `#[0-9A-Fa-f]{6}`
**Store:** `design_primary_colors` as array

**Example Input:** "#3B82F6, #10B981, #F59E0B"
**Example Output:**
```yaml
design_system:
  colors:
    primary:
      - "#3B82F6"
      - "#10B981"
      - "#F59E0B"
```

### 5.5 Typography Preferences

**Ask:** "Font family preference? [1] System fonts (recommended) [2] Google Fonts [3] Custom [4] Skip"

**Store:** `design_typography = "system" | "google" | "custom" | "none"`

**If Google Fonts or Custom:**
- **Ask:** "Font family name(s)? (comma-separated)"
- **Store:** `design_font_families` as array

### 5.6 Create Design System Files

If design system is enabled, create starter files in `.design/`:

1. **Create `.design/` directory:**
   ```bash
   mkdir -p .design
   ```

2. **Generate `Colors.md`** with actual content:
   - Use colors from 5.4
   - Include semantic colors (success, warning, error, info)
   - Include neutral palette (gray scale)

3. **Generate `Typography.md`** with actual content:
   - Use font families from 5.5
   - Include type scale (headings, body, captions)
   - Include font weights and line heights

4. **Generate `Components.md`** with starter patterns:
   - Button variants
   - Form inputs
   - Cards
   - Navigation

**Template location:** Check for `.parade/templates/design/` templates, or use inline fallbacks

**Write files using Write tool** to:
- `.design/Colors.md`
- `.design/Typography.md`
- `.design/Components.md`

### 5.7 Update project.yaml

Add design system configuration:

```yaml
design_system:
  enabled: true
  path: ".design/"
  color_scheme: "${design_color_scheme}"
  colors:
    primary: ${design_primary_colors}
  typography:
    mode: "${design_typography}"
    families: ${design_font_families}
  docs:
    - ".design/Colors.md"
    - ".design/Typography.md"
    - ".design/Components.md"
```

---

## Phase 6: Custom Agents (Enhanced)

### 6.1 Prompt for Custom Agents

**Ask:** "Does your project have domain-specific expertise that requires custom agents? (e.g., fitness domain, compliance, security) [Y/n]"

**Default:** No (press Enter to skip)

**If user declines:** Skip to Phase 7 (First Feature Prompt)

### 6.2 Custom Agent Definition Loop

For each custom agent the user wants to create:

#### 6.2.1 Agent Name

**Ask:** "What should this agent be called? Use kebab-case (e.g., 'fitness-domain', 'security-expert', 'compliance-sme')"

**Validate:** kebab-case format, no spaces
**Store:** `agent_label`

**Transform to display name:** Convert kebab-case to Title Case
- Example: "fitness-domain" → "Fitness Domain Expert"
- **Store:** `agent_name`

#### 6.2.2 Domain Expertise Description

**Ask:** "Describe the domain expertise this agent should have. What area does it specialize in?"

**Validate:** Non-empty string, 1-2 sentences
**Example:** "Expert in fitness tracking algorithms, workout plan validation, and health metrics analysis."
**Store:** `domain_expertise`

#### 6.2.3 Key Patterns and Focus Areas

**Ask:** "What key files, patterns, or areas of the codebase should this agent focus on when reviewing?"

**Validate:** Non-empty string
**Example:** "Workout calculation logic, health data models, fitness goal validation"
**Store:** `key_patterns`

#### 6.2.4 Generate Agent File

1. **Check for template:**
   - Try to read `.parade/templates/agents/custom-sme-agent.md.template`
   - If not found, use inline fallback template

2. **Substitute placeholders:**
   - `{{AGENT_NAME}}` → agent_name (Title Case: "Fitness Domain Expert")
   - `{{AGENT_LABEL}}` → agent_label (kebab-case: "fitness-domain")
   - `{{DOMAIN_DESCRIPTION}}` → domain_expertise
   - `{{DOMAIN_EXPERTISE}}` → domain_expertise (detailed description)
   - `{{KEY_PATTERNS}}` → key_patterns

3. **Create `.claude/agents/` directory if needed:**
   ```bash
   mkdir -p .claude/agents
   ```

4. **Write agent file** to `.claude/agents/<agent-label>.md` using Write tool

**Note:** The template includes standardized output format (findings as JSON, recommendations/concerns as plain text)

#### 6.2.5 Add to project.yaml

Add entry to `agents.custom[]` array:

```yaml
agents:
  custom:
    - name: "${agent_name}"
      label: "${agent_label}"
      prompt_file: ".claude/agents/${agent_label}.md"
```

### 6.3 Repeat or Continue

**Ask:** "Would you like to add another custom agent? [Y/n]"

- If yes: Return to 6.2.1
- If no: Continue to Phase 7

---

## Phase 7: First Feature Prompt (New)

### 7.1 Prompt for First Feature

**Display:**
```
Setup complete! Your project configuration is ready.

Would you like to walk through your first feature now? This will guide you
through the discovery process to capture a feature idea and generate a spec.

[Y] Yes, let's create a feature (recommended)
[N] No, I'll do this later
```

**Default:** Yes

### 7.2 If Yes - Guide to /discover

**Display:**
```
Great! Let's capture your first feature idea.

To start the discovery process, describe your feature idea in 1-2 sentences.
I'll use the /discover skill to:
1. Capture your feature brief
2. Run discovery with SME agents
3. Generate a detailed specification

What feature would you like to build?
```

**Wait for user input**, then:
- Invoke `/discover` skill with the user's feature description
- This transitions the user directly into the workflow

### 7.3 If No - Summarize Next Steps

**Display:**
```
No problem! Here's what you can do next:

1. **Start building a feature:**
   Run `/discover` and describe your feature idea

2. **Verify setup:**
   Run `/parade-doctor` to check everything is configured correctly

3. **Review your constitution:**
   Open `docs/CONSTITUTION.md` to review your project's guiding principles

4. **Review project config:**
   Open `project.yaml` to review or manually adjust settings

5. **Add more custom agents:**
   Run `/init-project` again to add more domain experts

6. **Review generated agents:**
   Check `.claude/agents/` for coding agents tailored to your stack

---

**Visual Dashboard (Optional)**

The Parade app provides a visual Kanban board for tracking briefs, epics, and tasks.

To install (one-time setup):
   git clone https://github.com/JeremyKalmus/parade.git ~/parade
   cd ~/parade && npm install

To run:
   cd ~/parade && npm run dev

Then open your project folder in the app.

---

Need help? Run `/help` for available commands.
```

---

## Generate Configuration and Scaffold

### YAML Generation

Use Write tool to create `project.yaml` at repository root with all collected values.

**Single-app structure:**
```yaml
version: "1.0"
project:
  name: "${project_name}"
  description: "${project_description}"
vision:
  purpose: "${constitution_vision}"
  target_users: "${constitution_target_users}"
  success_metrics: "${constitution_success_metrics}"
  core_principles: "${constitution_core_principles}"
  boundaries: "${constitution_boundaries}"
stacks:
  ${stack_type}:
    framework: "${framework}"
    language: "${language}"
    testing:
      unit: "${test_framework}"
      commands:
        test: "${test_command}"
        lint: "${lint_command}"
        build: "${build_command}"
design_system:
  enabled: ${design_system_enabled}
  path: "${design_system_path}"
  color_scheme: "${design_color_scheme}"
  colors:
    primary: ${design_primary_colors}
  typography:
    mode: "${design_typography}"
    families: ${design_font_families}
  docs:
    - ".design/Colors.md"
    - ".design/Typography.md"
    - ".design/Components.md"
data_governance:
  auth_provider: "${auth_provider}"
  naming_conventions:
    fields: "${naming_fields}"
    files: "${naming_files}"
    directories: "kebab-case"
    dates: "${naming_dates}"
    enums: "SCREAMING_SNAKE"
code_governance:
  linting:
    mode: "${linting_mode}"
    command: "${lint_command}"
  testing:
    min_coverage: ${test_coverage_min}
    command: "${test_command}"
  review:
    requirement: "${review_requirement}"
agents:
  custom: ${custom_agents_array}
```

**See:** `docs/project-yaml-spec.md` for validation checklist and complete examples

---

## Create Directory Scaffold

### Core Directories (always created)
```bash
mkdir -p .claude/skills .claude/agents .claude/schemas .claude/templates .beads
mkdir -p .design  # if design_system.enabled
```

### Template Files

**CLAUDE.md**: Project instructions with stack info
- Check if exists, offer: [1] Keep [2] Replace (backup) [3] Merge (add Stack section)
- Use templates from `.claude/templates/CLAUDE.md.template`
- Substitute: `{{PROJECT_NAME}}`, `{{FRAMEWORK}}`, `{{LANGUAGE}}`, etc.

**beads/config.yaml**: Beads CLI configuration
- Check if exists, offer: [1] Keep [2] Replace (backup)
- Use templates from `.claude/templates/beads-config.yaml.template`
- Substitute: `{{PROJECT_PREFIX}}` (lowercase, no spaces)

### Design System Templates (if enabled)

Create starter files in `.design/`:
- `Colors.md` - Color palette (primary, semantic, neutral)
- `Typography.md` - Font families and scale
- `Components.md` - Component patterns

### Check and Initialize Beads

Beads is a **required dependency** for Parade. Check if it's installed:

```bash
which bd
```

**If Beads is NOT installed:**

Display installation instructions:
```
⚠️  Beads CLI not found

Beads is required for task management. Install it with:

  npm install -g beads

Or visit: https://github.com/steveyegge/beads

Options:
1. Install now (I'll wait)
2. Continue without beads (limited functionality)
3. Exit and install manually
```

**If Beads IS installed:**

Initialize the project:
```bash
bd init --prefix "$PROJECT_PREFIX"
```

Verify initialization:
```bash
bd doctor
```

**See:** `docs/init-troubleshooting.md` for error handling scenarios

---

## Generate Coding Agents

After stack selection (Phase 3), generate stack-specific coding agents to assist with implementation tasks.

### Framework-to-Template Mapping

Based on the selected stack, copy and customize the appropriate agent template:

| Stack Type | Framework/Language | Template File | Output File |
|------------|-------------------|---------------|-------------|
| frontend | TypeScript, JavaScript, React, Next.js, Vue, Svelte | `typescript-agent.md.template` | `typescript-agent.md` |
| backend | TypeScript, JavaScript, Node.js, Express | `typescript-agent.md.template` | `typescript-agent.md` |
| mobile | Swift, SwiftUI, UIKit | `swift-agent.md.template` | `swift-agent.md` |
| database | PostgreSQL, Supabase, SQLite | `sql-agent.md.template` | `sql-agent.md` |

### Agent Generation Logic

For each applicable stack type:

1. **Detect framework type** from user responses in Phase 2
2. **Select template** based on mapping table above
3. **Read template** from `.claude/templates/agents/<template-name>`
4. **Substitute placeholders** with collected values:
   - `{{PROJECT_NAME}}` → project_name
   - `{{FRAMEWORK}}` → framework (e.g., "Vitest", "SwiftUI", "PostgreSQL")
   - `{{LANGUAGE}}` → language (e.g., "TypeScript", "Swift")
   - `{{TEST_COMMAND}}` → test_command
   - `{{BUILD_COMMAND}}` → build_command
5. **Write agent file** to `.claude/agents/<agent-name>.md`

### Placeholder Substitution Examples

**TypeScript Agent:**
- `{{PROJECT_NAME}}` → "MyAwesomeApp"
- `{{FRAMEWORK}}` → "Vitest"
- `{{LANGUAGE}}` → "TypeScript"
- `{{TEST_COMMAND}}` → "npm test"
- `{{BUILD_COMMAND}}` → "npm run build"

**Swift Agent:**
- `{{PROJECT_NAME}}` → "MyiOSApp"
- `{{FRAMEWORK}}` → "SwiftUI"
- `{{LANGUAGE}}` → "Swift"
- `{{TEST_COMMAND}}` → "swift test"
- `{{BUILD_COMMAND}}` → "swift build"

**SQL Agent:**
- `{{PROJECT_NAME}}` → "MyDatabaseProject"
- `{{FRAMEWORK}}` → "PostgreSQL"
- `{{LANGUAGE}}` → "SQL"
- `{{TEST_COMMAND}}` → "psql -f tests/schema_test.sql"
- `{{BUILD_COMMAND}}` → "supabase db reset"

### Multi-Stack Projects

For projects with multiple stack types (e.g., full-stack apps):
- Generate agents for each relevant stack
- Example: A Next.js + Supabase project generates:
  - `typescript-agent.md` (frontend/backend)
  - `sql-agent.md` (database)

### Agent File Handling

**If agent file exists:**
- Offer: [1] Keep [2] Replace (backup to `.md.bak`) [3] Skip
- Default: Keep existing agents to preserve customizations

**Backup naming:**
- `typescript-agent.md.bak`
- If backup exists, use timestamp: `typescript-agent.md.bak.20260102_143000`

---

## Existing Configuration Handling

### Detection
```bash
ls -la project.yaml 2>/dev/null && echo "EXISTS" || echo "NOT_FOUND"
```

### If EXISTS
**Offer options:**
1. **View** - Display current configuration
2. **Merge** - Add new sections while preserving existing
3. **Replace** - Backup to `project.yaml.bak` and start fresh

### Merge Strategy
- Use Edit tool to surgically add/update sections
- Preserve existing project name, description, stacks
- Add new optional sections (design_system, agents, etc.)
- Show diff before applying changes

### Backup Logic
```bash
# Always backup before replace
cp project.yaml project.yaml.bak
# If backup exists, create timestamped: project.yaml.bak.20260102_143000
```

**See:** `docs/config-merge-patterns.md` for detailed merge procedures and examples

---

## Output

### Success Summary

Display at the end of the wizard (only if NOT transitioning to /discover):

```
## Project Initialized Successfully!

### Files Created
- project.yaml (comprehensive project configuration)
- .claude/CLAUDE.md (project-specific instructions)
- .claude/agents/typescript-agent.md (TypeScript coding agent) [example]
- .claude/agents/fitness-domain.md (custom SME) [if created]
- docs/CONSTITUTION.md (project constitution) [if created]
- .design/Colors.md (color palette) [if design system enabled]
- .design/Typography.md (typography system) [if design system enabled]
- .design/Components.md (component patterns) [if design system enabled]

**Note:** All custom SME agents use the standardized output format (findings as JSON, recommendations/concerns as plain text).

### Directories Created
- .claude/skills/, .claude/agents/, .claude/schemas/, .claude/templates/
- .beads/ (task management)
- .design/ [if design system enabled]
- docs/ [if constitution created]

### Configuration Summary
Project: ${project_name}
Vision: ${constitution_vision} [if created]
Stack: ${framework} / ${language} / ${test_framework}
Auth Provider: ${auth_provider}
Design System: ${design_system_enabled ? "Enabled" : "Disabled"}
Governance: Data (${naming_fields} fields) + Code (${linting_mode} linting)
Coding Agents: ${generated_agents}
Custom SMEs: ${custom_agents} [if created]
Constitution: ${constitution_created ? "Created" : "Skipped"}

---

## What's Next?

[Content from Phase 7.3 - Next Steps]
```

---

## Quick Reference: Minimal Flow

For `--minimal` flag:

**Phase 0:** Environment check (always runs)

**Phase 1:** Project basics (3 questions)
1. Project name
2. Project description (1-2 sentences)
3. Repository type [1-2]

**Phase 2:** Skip constitution (auto-skip with --minimal)

**Phase 3:** Tech stack (4 questions)
1. Stack type [1-4]
2. Framework (based on stack)
3. Primary language [1-6]
4. Test command (with smart default)

**Phase 3.5:** Skip MCP setup (auto-skip with --minimal)

**Phase 4:** Skip governance (use smart defaults)

**Phase 5:** Skip design system (auto-skip with --minimal)

**Phase 6:** Skip custom agents (auto-skip with --minimal)

**Phase 7:** Skip first feature prompt (auto-skip with --minimal)

**Generate minimal YAML** with smart defaults, create directories, show success message.
**Total time: ~3-4 minutes** (7 questions + environment check)

---

## Reference Documentation

For detailed specifications, merge procedures, and troubleshooting:

- **docs/project-yaml-spec.md** - Complete YAML schema, validation rules, examples
- **docs/config-merge-patterns.md** - Merge/replace logic, backup procedures, existing config handling
- **docs/init-troubleshooting.md** - Error scenarios, validation failures, recovery procedures

Files in this skill

  • INTEGRATION_TESTS.md6.3 KB
  • SKILL.md41.9 KB
  • docs/config-merge-patterns.md9.6 KB
  • docs/init-troubleshooting.md8.7 KB
  • docs/project-yaml-spec.md5.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.