Claude
Skills
Sign in
Back

validating-setup-commands

Included with Lifetime
$97 forever

Use before creating worktrees or executing tasks - validates that CLAUDE.md defines required setup commands (install, optional postinstall) and provides clear error messages with examples if missing

General

What this skill does


# Validating Setup Commands

## Overview

**Worktrees require dependency installation before tasks can execute.** Projects MUST define setup commands in CLAUDE.md.

This skill validates setup commands exist BEFORE creating worktrees, preventing cryptic failures later.

## When to Use

Use this skill when:
- Creating new worktrees (spec, execute commands)
- Before executing tasks that need dependencies
- Any time you need to verify project setup is documented

**Use early:** Validate during setup phase, not during task execution.

## Why This Matters

**Without validation:**
- Worktrees get created
- Tasks start executing
- Fail with "command not found" errors
- User debugging nightmare: "Why is npm/pytest/cargo missing?"

**With validation:**
- Missing commands detected immediately
- Clear error with exact CLAUDE.md section to add
- User fixes once, all worktrees work

## The Validation Process

**Announce:** "Validating CLAUDE.md setup commands before creating worktrees."

### Step 1: Check File Exists

```bash
# Get repo root
REPO_ROOT=$(git rev-parse --show-toplevel)

# Check if CLAUDE.md exists
if [ ! -f "$REPO_ROOT/CLAUDE.md" ]; then
  echo "❌ Error: CLAUDE.md not found in repository root"
  echo ""
  echo "Spectacular requires CLAUDE.md to define setup commands."
  echo "See: https://docs.claude.com/claude-code"
  exit 1
fi
```

**Why fail fast:** No CLAUDE.md = no command configuration. Stop before creating any worktrees.

### Step 2: Parse Setup Section

```bash
# Parse CLAUDE.md for setup section
INSTALL_CMD=$(grep -A 10 "^### Setup" "$REPO_ROOT/CLAUDE.md" | grep "^- \*\*install\*\*:" | sed 's/.*: `\(.*\)`.*/\1/')

if [ -z "$INSTALL_CMD" ]; then
  echo "❌ Error: Setup commands not defined in CLAUDE.md"
  echo ""
  echo "Worktrees require dependency installation before tasks can execute."
  echo ""
  echo "Add this section to CLAUDE.md:"
  echo ""
  echo "## Development Commands"
  echo ""
  echo "### Setup"
  echo "- **install**: \`npm install\`  (or your package manager)"
  echo "- **postinstall**: \`npx prisma generate\`  (optional - any codegen)"
  echo ""
  echo "Example for different package managers:"
  echo "- Node.js: npm install, pnpm install, yarn, or bun install"
  echo "- Python: pip install -r requirements.txt"
  echo "- Rust: cargo build"
  echo "- Go: go mod download"
  echo ""
  echo "See: https://docs.claude.com/claude-code"
  echo ""
  echo "Execution stopped. Add setup commands to CLAUDE.md and retry."
  exit 1
fi

# Extract postinstall command (optional)
POSTINSTALL_CMD=$(grep -A 10 "^### Setup" "$REPO_ROOT/CLAUDE.md" | grep "^- \*\*postinstall\*\*:" | sed 's/.*: `\(.*\)`.*/\1/')
```

**Parsing logic:**
- Look for `### Setup` header
- Extract `**install**:` command (required)
- Extract `**postinstall**:` command (optional)
- Use sed to extract command from backticks

### Step 3: Report Success

```bash
# Report detected commands
echo "✅ Setup commands found in CLAUDE.md"
echo "   install: $INSTALL_CMD"
if [ -n "$POSTINSTALL_CMD" ]; then
  echo "   postinstall: $POSTINSTALL_CMD"
fi
```

**Store for later use:**
- Return `INSTALL_CMD` to caller
- Return `POSTINSTALL_CMD` (may be empty)
- Caller uses these in worktree dependency installation

## Expected CLAUDE.md Format

The skill expects this exact format:

```markdown
## Development Commands

### Setup
- **install**: `npm install`
- **postinstall**: `npx prisma generate`  (optional)
```

**Format requirements:**
- Section header: `### Setup` (exactly)
- Install line: `- **install**: `command`` (required)
- Postinstall line: `- **postinstall**: `command`` (optional)
- Commands must be in backticks

**Multi-language examples:**

```markdown
### Setup
- **install**: `npm install`           # Node.js
- **install**: `pip install -r requirements.txt`  # Python
- **install**: `cargo build`           # Rust
- **install**: `go mod download`       # Go
- **install**: `bundle install`        # Ruby
```

## Error Messages

### Error 1: CLAUDE.md Not Found

```
❌ Error: CLAUDE.md not found in repository root

Spectacular requires CLAUDE.md to define setup commands.
See: https://docs.claude.com/claude-code
```

**User action:** Create CLAUDE.md in repository root.

### Error 2: Setup Commands Missing

```
❌ Error: Setup commands not defined in CLAUDE.md

Worktrees require dependency installation before tasks can execute.

Add this section to CLAUDE.md:

## Development Commands

### Setup
- **install**: `npm install`  (or your package manager)
- **postinstall**: `npx prisma generate`  (optional - any codegen)

Example for different package managers:
- Node.js: npm install, pnpm install, yarn, or bun install
- Python: pip install -r requirements.txt
- Rust: cargo build
- Go: go mod download

See: https://docs.claude.com/claude-code

Execution stopped. Add setup commands to CLAUDE.md and retry.
```

**User action:** Add Setup section with at least `install` command.

## Integration Pattern

**How commands use this skill:**

```bash
# In execute.md or spec.md:

# Step 1.5: Validate Setup Commands
# Use validating-setup-commands skill to extract and verify
INSTALL_CMD=$(validate_setup_commands_install)
POSTINSTALL_CMD=$(validate_setup_commands_postinstall)

# Step 3: Create worktrees
git worktree add .worktrees/{runid}-task-1

# Step 4: Install dependencies using validated commands
cd .worktrees/{runid}-task-1
$INSTALL_CMD
if [ -n "$POSTINSTALL_CMD" ]; then
  $POSTINSTALL_CMD
fi
```

**Reusable across:**
- `/spectacular:spec` - Validates before creating main worktree
- `/spectacular:execute` - Validates before creating task worktrees
- Future commands that create worktrees

## Common Mistakes

### Mistake 1: Running Validation Too Late

**Wrong:** Create worktrees, then validate
**Right:** Validate BEFORE creating ANY worktrees

**Why:** Failed validation after worktrees exist leaves orphaned directories.

### Mistake 2: Not Providing Examples

**Wrong:** "Error: Add setup commands"
**Right:** "Error: Add setup commands. Here's the exact format: [example]"

**Why:** Users need to know WHAT to add and WHERE.

### Mistake 3: Requiring Postinstall

**Wrong:** Fail if postinstall missing
**Right:** Postinstall is optional (codegen only needed in some projects)

**Why:** Not all projects have codegen (Prisma, GraphQL, etc.).

## Quick Reference

**Validation sequence:**
1. Check CLAUDE.md exists (exit if missing)
2. Parse for `### Setup` section
3. Extract `install` command (exit if missing)
4. Extract `postinstall` command (optional)
5. Report success and return commands

**Exit points:**
- Missing CLAUDE.md → Error with creation instructions
- Missing setup section → Error with exact format example
- Success → Return INSTALL_CMD and POSTINSTALL_CMD

**Format validated:**
- `### Setup` header
- `- **install**: `command``
- `- **postinstall**: `command`` (optional)

## The Bottom Line

**Validate setup commands BEFORE creating worktrees.**

Early validation with clear error messages prevents confusing failures during task execution.

The skill provides users with exact examples of what to add, making fixes easy.

Related in General