scaffold
Scaffold a new Solana project with programs, frontend, tests, and CI
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/solanabr/solana-ai-kit/HEAD/.claude/commands/scaffold.md -o ~/.claude/commands/scaffold.mdscaffold.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 | `crAnchor 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 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.
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.
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.
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.
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 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.
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.