Back to Skills
    šŸ¦ž

    project-scaffold

    Scaffold new projects with best-practice structure

    By @cmanfre7
    View on GitHub
    SKILL.md
    # project-scaffold
    
    Scaffold new projects with best-practice structure, tooling, and configuration.
    
    ## Usage
    
    When Colt (or you) needs to start a new project, use this skill to generate the full boilerplate.
    
    ## Decision Tree
    
    Ask or infer the project type:
    
    ### Web App (React / Next.js)
    ```
    my-app/
    ā”œā”€ā”€ src/
    │   ā”œā”€ā”€ app/              # Next.js app router
    │   ā”œā”€ā”€ components/       # Reusable UI components
    │   ā”œā”€ā”€ lib/              # Utilities, helpers, API clients
    │   ā”œā”€ā”€ styles/           # Global styles, Tailwind config
    │   └── types/            # TypeScript type definitions
    ā”œā”€ā”€ public/               # Static assets
    ā”œā”€ā”€ tests/                # Test files
    ā”œā”€ā”€ .gitignore
    ā”œā”€ā”€ .eslintrc.json
    ā”œā”€ā”€ tailwind.config.ts
    ā”œā”€ā”€ tsconfig.json
    ā”œā”€ā”€ package.json
    └── README.md
    ```
    
    **Init commands:**
    ```bash
    npx create-next-app@latest my-app --typescript --tailwind --eslint --app --src-dir
    cd my-app && npm install
    ```
    
    ### API / Backend (FastAPI)
    ```
    my-api/
    ā”œā”€ā”€ app/
    │   ā”œā”€ā”€ __init__.py
    │   ā”œā”€ā”€ main.py           # FastAPI app entry
    │   ā”œā”€ā”€ routers/          # Route modules
    │   ā”œā”€ā”€ models/           # Pydantic models / DB models
    │   ā”œā”€ā”€ services/         # Business logic
    │   └── config.py         # Settings / env vars
    ā”œā”€ā”€ tests/
    ā”œā”€ā”€ .gitignore
    ā”œā”€ā”€ pyproject.toml
    ā”œā”€ā”€ requirements.txt
    └── README.md
    ```
    
    **Init commands:**
    ```bash
    mkdir my-api && cd my-api
    uv init && uv pip install fastapi uvicorn
    ```
    
    ### Mobile App (SwiftUI)
    ```
    MyApp/
    ā”œā”€ā”€ MyApp/
    │   ā”œā”€ā”€ App.swift
    │   ā”œā”€ā”€ ContentView.swift
    │   ā”œā”€ā”€ Models/
    │   ā”œā”€ā”€ Views/
    │   ā”œā”€ā”€ ViewModels/
    │   └── Services/
    ā”œā”€ā”€ MyAppTests/
    ā”œā”€ā”€ MyAppUITests/
    └── README.md
    ```
    
    **Init:** Use Xcode or `swift package init --type executable`
    
    ### CLI Tool (Node / Python)
    ```
    my-cli/
    ā”œā”€ā”€ src/
    │   └── index.ts          # Entry point
    ā”œā”€ā”€ bin/
    │   └── my-cli            # Executable wrapper
    ā”œā”€ā”€ tests/
    ā”œā”€ā”€ .gitignore
    ā”œā”€ā”€ tsconfig.json
    ā”œā”€ā”€ package.json
    └── README.md
    ```
    
    ### Browser Extension
    ```
    my-extension/
    ā”œā”€ā”€ src/
    │   ā”œā”€ā”€ background.ts
    │   ā”œā”€ā”€ content.ts
    │   ā”œā”€ā”€ popup/
    │   │   ā”œā”€ā”€ popup.html
    │   │   ā”œā”€ā”€ popup.ts
    │   │   └── popup.css
    │   └── options/
    ā”œā”€ā”€ icons/
    ā”œā”€ā”€ manifest.json
    ā”œā”€ā”€ .gitignore
    ā”œā”€ā”€ tsconfig.json
    ā”œā”€ā”€ package.json
    └── README.md
    ```
    
    ## Post-Scaffold Checklist
    
    After generating structure:
    1. `git init && git add -A && git commit -m "Initial scaffold"`
    2. Create `.gitignore` appropriate to the project type
    3. Set up linting config (ESLint / Ruff)
    4. Add a basic README with project name and setup instructions
    5. Add a basic test file to verify the test runner works
    
    ## Asset Templates
    
    ### .gitignore (universal base)
    ```
    node_modules/
    __pycache__/
    .env
    .env.local
    dist/
    build/
    .next/
    *.pyc
    .DS_Store
    *.log
    coverage/
    ```