Skip to main content
ClaudeWave
Slash Command65 estrellas del repoactualizado yesterday

scaffold

Scaffold a new Solana project with programs, frontend, tests, and CI

Instalar en Claude Code
Copiar
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/solanabr/solana-ai-kit/HEAD/.claude/commands/scaffold.md -o ~/.claude/commands/scaffold.md
Después abre una sesión nueva de Claude Code; el slash command carga automáticamente.

scaffold.md

You are scaffolding a new Solana project. Detect the project type and generate appropriate structure with this config pre-installed.

## Related Skills

- [ext/solana-dev/skill/references/programs/anchor.md](../skills/ext/solana-dev/skill/references/programs/anchor.md) - Anchor program patterns
- [ext/solana-dev/skill/references/frontend-framework-kit.md](../skills/ext/solana-dev/skill/references/frontend-framework-kit.md) - Frontend scaffolding
- [ext/solana-dev/skill/references/testing.md](../skills/ext/solana-dev/skill/references/testing.md) - Test setup

## Step 1: Determine Project Type

Ask the user or detect from context. Options:

1. **Anchor program only** - On-chain program with tests
2. **Fullstack** - Anchor program + Next.js frontend + tests
3. **Frontend only** - Next.js/React app connecting to existing programs
4. **Native program** - Pinocchio/solana-program with tests

```bash
echo "Checking existing project indicators..."

[ -f "Anchor.toml" ] && echo "Anchor project detected"
[ -f "Cargo.toml" ] && echo "Rust project detected"
[ -f "package.json" ] && echo "Node project detected"
[ -f "next.config.js" ] || [ -f "next.config.mjs" ] && echo "Next.js detected"

# Check for Solana CLI
solana --version 2>/dev/null || echo "WARNING: Solana CLI not installed"
anchor --version 2>/dev/null || echo "WARNING: Anchor CLI not installed"
```

## Step 2: Scaffold - Anchor Program

```bash
PROJECT_NAME="${1:-my-solana-program}"

echo "Scaffolding Anchor program: $PROJECT_NAME"

# Initialize Anchor project
anchor init "$PROJECT_NAME"
cd "$PROJECT_NAME"

# Verify structure
echo ""
echo "Project structure:"
ls -la
ls -la programs/*/src/
```

## Step 3: Scaffold - Fullstack (Anchor + Frontend)

```bash
PROJECT_NAME="${1:-my-solana-dapp}"

echo "Scaffolding fullstack project: $PROJECT_NAME"

# Option A: Use create-solana-dapp (recommended)
if command -v npx >/dev/null 2>&1; then
    npx create-solana-dapp@latest "$PROJECT_NAME"
    cd "$PROJECT_NAME"
else
    echo "npx not available. Manual scaffold..."
    anchor init "$PROJECT_NAME"
    cd "$PROJECT_NAME"

    # Add frontend manually
    mkdir -p app
    cd app
    npx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
    npm install @solana/kit @solana/wallet-standard @wallet-standard/react
    cd ..
fi

echo "Fullstack project created."
```

## Step 4: Scaffold - Frontend Only

```bash
PROJECT_NAME="${1:-my-solana-frontend}"

echo "Scaffolding frontend: $PROJECT_NAME"

npx create-next-app@latest "$PROJECT_NAME" --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
cd "$PROJECT_NAME"

# Install Solana dependencies (Kit-first)
npm install @solana/kit @solana/wallet-standard @wallet-standard/react

echo "Frontend project created with @solana/kit."
```

## Step 5: Copy Claude Config

```bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CONFIG_SOURCE="${SCRIPT_DIR}/../../.."  # Adjust path to solana-claude-config root

echo "Installing Claude Code configuration..."

# Copy .claude directory
if [ -d "$CONFIG_SOURCE/.claude" ]; then
    cp -r "$CONFIG_SOURCE/.claude" .
    echo "Copied .claude/ config"
else
    echo "WARNING: Could not find .claude config source at $CONFIG_SOURCE"
    echo "Manually copy from solana-claude-config:"
    echo "  cp -r /path/to/solana-claude-config/.claude ."
    echo "  cp /path/to/solana-claude-config/CLAUDE-solana.md ./CLAUDE.md"
fi

# Copy CLAUDE.md
if [ -f "$CONFIG_SOURCE/CLAUDE-solana.md" ]; then
    cp "$CONFIG_SOURCE/CLAUDE-solana.md" ./CLAUDE.md
    echo "Copied CLAUDE.md"
fi

# Initialize submodules for skills
if [ -f ".gitmodules" ]; then
    git submodule update --init --recursive
    echo "Initialized skill submodules"
fi
```

## Step 6: Setup Git and Branch Workflow

```bash
echo "Setting up git..."

# Initialize git if not already
if [ ! -d ".git" ]; then
    git init
fi

# Create .gitignore if missing
if [ ! -f ".gitignore" ]; then
    cat > .gitignore << 'GITIGNORE'
# Dependencies
node_modules/
.yarn/

# Build
target/
.next/
out/
dist/

# Environment
.env
.env.local
.env*.local

# IDE
.idea/
.vscode/
*.swp

# Solana
test-ledger/
.anchor/

# OS
.DS_Store
Thumbs.db
GITIGNORE
    echo "Created .gitignore"
fi

# Initial commit
git add -A
git commit -m "feat: scaffold $PROJECT_NAME with solana-claude-config"

echo ""
echo "Git initialized with initial commit."
echo "Branch workflow: git checkout -b <type>/<scope>-<description>-<DD-MM-YYYY>"
```

## Step 7: Add Test Infrastructure

```bash
echo "Setting up test infrastructure..."

# For Anchor projects
if [ -f "Anchor.toml" ]; then
    # Ensure test dependencies
    if [ -f "package.json" ]; then
        npm install --save-dev @coral-xyz/anchor mocha chai @types/mocha @types/chai ts-mocha
    fi

    # Create test template if tests dir is empty
    if [ ! "$(ls -A tests/ 2>/dev/null)" ]; then
        mkdir -p tests
        echo "// Test file will be generated after first anchor build"
        echo "// Run: anchor test"
    fi
fi

# For frontend projects
if [ -f "next.config.js" ] || [ -f "next.config.mjs" ]; then
    npm install --save-dev vitest @testing-library/react @testing-library/jest-dom
fi

echo "Test infrastructure ready."
```

## Step 8: Verify Scaffold

```bash
echo ""
echo "=== Scaffold Complete ==="
echo ""
echo "Project: $PROJECT_NAME"
echo "Structure:"
find . -maxdepth 3 -not -path './node_modules/*' -not -path './.git/*' -not -path './target/*' -not -path './.next/*' | head -40

echo ""
echo "Next steps:"
echo "  1. cd $PROJECT_NAME"
echo "  2. Review CLAUDE.md for development guidelines"
echo "  3. Run: anchor build (if Anchor project)"
echo "  4. Run: anchor test (to verify setup)"
echo "  5. Start building with Claude Code"
```

## Project Type Reference

| Type | Command | Includes |
|------|---------|----------|
| Anchor only | `anchor init` | Program, tests, Anchor.toml |
| Fullstack | `create-solana-dapp` | Program, Next.js app, tests, wallet UI |
| Frontend only | `cr
anchor-engineerSubagent

Anchor framework specialist for rapid Solana program development. Use for building programs with Anchor macros, IDL generation, account validation, and standardized patterns. Prioritizes developer experience while maintaining security.\\n\\nUse when: Building new programs quickly, team projects needing standardization, projects requiring IDL for client generation, or when developer experience is prioritized over maximum CU optimization.

defi-engineerSubagent

DeFi integration specialist for composing with Solana protocols including Jupiter, Drift, Kamino, Raydium, Orca, Meteora, Marginfi, and Sanctum. Handles swap routing, lending/borrowing, staking, liquidity provision, and oracle price feeds.\n\nUse when: Integrating DeFi protocols, building swap interfaces, implementing lending/borrowing, setting up yield strategies, working with Pyth/Switchboard oracles, or composing multi-protocol transactions.

devops-engineerSubagent

CI/CD, infrastructure, and deployment specialist for Solana projects. Handles GitHub Actions, Docker, monitoring, RPC management, and Cloudflare Workers edge deployment.\n\nUse when: Setting up CI/CD pipelines, containerizing Solana validators or programs, configuring monitoring and alerting, managing RPC infrastructure, deploying edge workers, or automating build and deploy workflows.

game-architectSubagent

Senior Solana game architect for game system design, Unity/C# architecture, on-chain game state, player progression, NFT integration, and PlaySolana ecosystem. Use for high-level game design decisions, architecture reviews, and planning complex game systems.\n\nUse when: Designing new Solana games from scratch, planning game state on-chain, Unity project architecture, integrating with PlaySolana/PSG1, or deciding between implementation approaches.

mobile-engineerSubagent

React Native and Expo specialist for building Solana mobile dApps. Handles mobile wallet adapter integration, transaction signing UX, deep linking, and mobile-specific performance optimization.\n\nUse when: Building React Native or Expo mobile apps with Solana integration, implementing mobile wallet adapter flows, setting up deep links for transaction signing, or optimizing mobile dApp performance.

pinocchio-engineerSubagent

CU optimization specialist using Pinocchio framework. Use for performance-critical programs requiring 80-95% CU reduction vs Anchor. Specializes in zero-copy access, manual validation, and minimal binary size.\\n\\nUse when: CU limits are being hit, transaction costs are significant at scale, binary size must be minimized, or maximum throughput is required.

rust-backend-engineerSubagent

Rust backend specialist for building async services that interact with Solana blockchain. Builds APIs, indexing services, and off-chain processing using Axum, Tokio, and modern async patterns.\n\nUse when: Building REST/WebSocket APIs for Solana dApps, implementing transaction indexers, creating webhook services, or any Rust backend that interacts with Solana.

solana-architectSubagent

Senior Solana program architect for system design, account structures, PDA schemes, token economics, and cross-program composability. Use for high-level design decisions, architecture reviews, and planning complex multi-program systems.\n\nUse when: Designing new programs from scratch, planning account structures, optimizing PDA schemes, reviewing architecture for security, or deciding between implementation approaches.