validating-environment
Use to validate spectacular environment - checks superpowers plugin, git-spice, git repo, and project structure before running spectacular workflows
What this skill does
# Validating Environment
## Overview
This skill validates that all required dependencies and configuration are in place for spectacular workflows. It checks for the superpowers plugin, git-spice installation, git repository status, and project structure. It also detects whether the workspace is single-repo or multi-repo.
## When to Use
Use this skill when:
- Starting a new spectacular session
- Running `/spectacular:init` command
- Before beginning any spectacular workflow to ensure prerequisites are met
- Troubleshooting spectacular setup issues
**Announce:** "I'm using validating-environment to check the spectacular setup."
## The Process
### Step 1: Check Superpowers Plugin
Check if superpowers is installed (handles both direct and marketplace installs):
```bash
# Check both possible install locations:
# - Direct: ~/.claude/plugins/cache/superpowers
# - Marketplace: ~/.claude/plugins/cache/superpowers-marketplace/superpowers
SUPERPOWERS_PATH=""
if [ -d ~/.claude/plugins/cache/superpowers ]; then
SUPERPOWERS_PATH=~/.claude/plugins/cache/superpowers
elif [ -d ~/.claude/plugins/cache/superpowers-marketplace/superpowers ]; then
SUPERPOWERS_PATH=~/.claude/plugins/cache/superpowers-marketplace/superpowers
fi
if [ -n "$SUPERPOWERS_PATH" ]; then
echo "Superpowers plugin is installed"
SUPERPOWERS_VERSION=$(cd "$SUPERPOWERS_PATH" && git describe --tags 2>/dev/null || echo "unknown")
echo " Version: $SUPERPOWERS_VERSION"
echo " Path: $SUPERPOWERS_PATH"
else
echo "Superpowers plugin NOT installed"
echo ""
echo "Spectacular requires the superpowers plugin for core skills:"
echo " - brainstorming"
echo " - subagent-driven-development"
echo " - requesting-code-review"
echo " - verification-before-completion"
echo " - finishing-a-development-branch"
echo ""
echo "Install with:"
echo " /plugin install superpowers@superpowers-marketplace"
echo ""
SUPERPOWERS_MISSING=true
fi
```
### Step 2: Check Git-Spice
Verify git-spice is installed and accessible:
```bash
if command -v gs &> /dev/null; then
echo "Git-spice is installed"
GS_VERSION=$(gs --version 2>&1 | head -1)
echo " $GS_VERSION"
# Check if we're in a git repo
if git rev-parse --git-dir > /dev/null 2>&1; then
# Check if git-spice is initialized
if gs ls &> /dev/null; then
echo "Git-spice is initialized for this repo"
else
echo "Git-spice not initialized for this repo"
echo ""
echo "Initialize with:"
echo " gs repo init"
echo ""
GS_NOT_INITIALIZED=true
fi
fi
else
echo "Git-spice NOT installed"
echo ""
echo "Spectacular uses git-spice for stacked branch management."
echo ""
echo "Install instructions:"
echo " macOS: brew install git-spice"
echo " Linux: See https://github.com/abhinav/git-spice"
echo ""
GS_MISSING=true
fi
```
### Step 3: Configure Gitignore
Ensure .gitignore has spectacular-specific entries:
```bash
if [ -f .gitignore ]; then
echo ".gitignore exists"
# Check for .worktrees/ entry
if grep -q "^\.worktrees/" .gitignore 2>/dev/null; then
echo " .worktrees/ already in .gitignore"
else
echo " Adding .worktrees/ to .gitignore"
echo "" >> .gitignore
echo "# Spectacular parallel execution worktrees" >> .gitignore
echo ".worktrees/" >> .gitignore
echo " Added .worktrees/ to .gitignore"
fi
# Check for specs/ is NOT ignored (we want specs tracked)
if grep -q "^specs/" .gitignore 2>/dev/null; then
echo " WARNING: specs/ is gitignored - you probably want to track specs"
echo " Remove 'specs/' from .gitignore to track your specifications"
else
echo " specs/ will be tracked (not in .gitignore)"
fi
else
echo "No .gitignore found - creating one"
cat > .gitignore << 'EOF'
# Spectacular parallel execution worktrees
.worktrees/
# Common patterns
node_modules/
.DS_Store
*.log
EOF
echo " Created .gitignore with spectacular patterns"
fi
```
### Step 4: Check Git Repository
Validate git setup:
```bash
if git rev-parse --git-dir > /dev/null 2>&1; then
echo "Git repository detected"
# Check current branch
CURRENT_BRANCH=$(git branch --show-current)
echo " Current branch: $CURRENT_BRANCH"
# Check if there's a remote
if git remote -v | grep -q .; then
echo " Remote configured"
git remote -v | head -2 | sed 's/^/ /'
else
echo " No remote configured"
echo " You may want to add a remote for PR submission"
fi
# Check working directory status
if git diff --quiet && git diff --cached --quiet; then
echo " Working directory clean"
else
echo " Uncommitted changes present"
fi
else
echo "NOT a git repository"
echo ""
echo "Initialize git with:"
echo " git init"
echo " git add ."
echo " git commit -m 'Initial commit'"
echo ""
NOT_GIT_REPO=true
fi
```
### Step 5: Validate Project Structure
Check for expected directories:
```bash
echo ""
echo "Checking project structure..."
# Check/create specs directory
if [ -d specs ]; then
echo "specs/ directory exists"
SPEC_COUNT=$(find specs -name "spec.md" 2>/dev/null | wc -l | tr -d ' ')
echo " Found $SPEC_COUNT specification(s)"
else
echo "Creating specs/ directory"
mkdir -p specs
echo " Created specs/ directory"
fi
# Check for .worktrees (should NOT exist yet, just checking)
if [ -d .worktrees ]; then
echo ".worktrees/ directory exists"
WORKTREE_COUNT=$(ls -1 .worktrees 2>/dev/null | wc -l | tr -d ' ')
if [ "$WORKTREE_COUNT" -gt 0 ]; then
echo " Contains $WORKTREE_COUNT worktree(s) - may be leftover from previous execution"
echo " Clean up with: git worktree list && git worktree remove <path>"
fi
else
echo "No .worktrees/ directory (will be created during parallel execution)"
fi
```
### Step 6: Multi-Repo Detection and Validation
Detect whether the workspace is single-repo or multi-repo, and validate per-repo requirements:
```bash
echo ""
echo "Detecting workspace mode..."
# Detect workspace mode by looking for multiple .git directories
# In multi-repo setups, there are typically multiple repos in the parent directory
REPO_COUNT=$(find . -maxdepth 2 -name ".git" -type d 2>/dev/null | wc -l | tr -d ' ')
if [ "$REPO_COUNT" -gt 1 ]; then
echo "Multi-repo workspace detected ($REPO_COUNT repos)"
WORKSPACE_MODE="multi-repo"
# List and validate each repo
REPOS=$(find . -maxdepth 2 -name ".git" -type d | xargs -I{} dirname {} | sed 's|^\./||' | sort)
for REPO in $REPOS; do
echo ""
echo "Checking repo: $REPO"
# Check for CLAUDE.md with setup commands
if [ -f "$REPO/CLAUDE.md" ]; then
if grep -q "**install**:" "$REPO/CLAUDE.md"; then
echo " CLAUDE.md with setup commands found"
else
echo " Warning: CLAUDE.md exists but missing setup commands"
echo " Add '**install**: \`your-install-command\`' to $REPO/CLAUDE.md"
fi
else
echo " Warning: No CLAUDE.md found in $REPO"
echo " Create $REPO/CLAUDE.md with setup commands for worktree support"
fi
# Check for constitution (optional)
if [ -d "$REPO/docs/constitutions/current" ]; then
echo " Constitution found"
else
echo " Note: No constitution at docs/constitutions/current/"
fi
done
else
echo "Single-repo mode"
WORKSPACE_MODE="single-repo"
fi
```
**Create workspace-level specs directory (multi-repo only):**
```bash
if [ "$WORKSPACE_MODE" = "multi-repo" ]; then
echo ""
if [ ! -d "specs" ]; then
echo "Creating specs/ directory at workspace root"
mkdir -p specs
echo " Created specs/ for cross-repo specifications"
else
echo "specs/ directory exists at workspace root"
SPEC_COUNT=$(find specs -name "spec.md" 2>/dev/null | wc -l | tr -d ' ')
echo " Found $SPEC_COUNT specification(s)"
fi
fi
```
### Step 7: Report Summary
Generate final status report:
```bash
echo ""
echo "========================================="
echo "Spectacular IniRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.