Scaffold new software projects with best practices. Use this skill when users want to create a new project, initialize a codebase, scaffold an application, start a new repo, or set up a project from scratch. Supports frontend (React, Vue, vanilla), CLI tools, REST APIs, and monorepos in TypeScript/JavaScript or Python.
Resources
3Install
npx skillscat add kjgarza/marketplace-claude/project-scaffold Install via the SkillsCat registry.
This skill scaffolds new software projects by initializing codebases with best practices and modern tooling. It automates the setup of frontend applications, CLI tools, REST APIs, and monorepos in TypeScript, JavaScript, or Python. Use this skill to quickly generate structured project templates and boilerplate code from scratch.
Project Scaffolder
Scaffold production-ready projects with modern tooling and configurable features.
Trigger Conditions
Use this skill when the user:
- Wants to "create a new project" or "start a new app"
- Asks to "scaffold" or "initialize" a project
- Says "set up a new [frontend/CLI/API/monorepo]"
- Requests a "boilerplate" or "starter template"
Interactive Workflow
Follow these steps in order. Use the AskUserQuestion tool for each step.
Step 1: Project Name
Ask for the project name. Validate that it:
- Uses lowercase letters, numbers, and hyphens only (kebab-case)
- Starts with a letter
- Is between 2-50 characters
- Does not start with a number
Example prompt:
What would you like to name your project?
(Use lowercase with hyphens, e.g., my-awesome-app)Step 2: Project Type
Ask which type of project to create:
| Type | Description |
|---|---|
| Frontend | Static site or single-page application |
| CLI | Command-line tool |
| API | REST API server |
| Monorepo | Multi-package workspace |
Step 3: Language/Framework
Based on project type, present these options:
Frontend:
- React with TypeScript (Recommended)
- React with JavaScript
- Vue with TypeScript
- Vue with JavaScript
- Vanilla (no framework)
CLI:
- TypeScript/Node.js with Commander (Recommended)
- JavaScript/Node.js with Commander
- Python with Click
API:
- TypeScript/Express (Recommended)
- JavaScript/Express
- Python/FastAPI
Monorepo:
- Node.js with pnpm + Turborepo (Recommended)
- Python with uv workspaces
Step 4: Features
Ask which features to include (allow multiple selections):
| Feature | Node.js | Python |
|---|---|---|
| Testing | Vitest / Jest | Pytest |
| Linting | ESLint + Prettier | Ruff |
| CI/CD | GitHub Actions | GitHub Actions |
| Docker | Dockerfile + compose | Dockerfile + compose |
| Documentation | README, CONTRIBUTING, LICENSE | README, CONTRIBUTING, LICENSE |
Step 5: Confirmation
Summarize all selections and ask for confirmation:
I'll create a [LANGUAGE] [TYPE] project named '[NAME]' with:
- [Feature 1]
- [Feature 2]
- ...
Proceed? (yes to confirm, or specify changes)Generation Process
After confirmation, generate the project:
Create project directory at the specified path (default: current directory)
Copy base templates from the appropriate
templates/[type]/[language]/directoryProcess template variables - Replace these placeholders in all
.tmplfiles:{{PROJECT_NAME}}- kebab-case name (e.g.,my-app){{PROJECT_NAME_PASCAL}}- PascalCase (e.g.,MyApp){{PROJECT_NAME_SNAKE}}- snake_case (e.g.,my_app){{AUTHOR}}- Fromgit config user.nameor "Your Name"{{YEAR}}- Current year
Add feature files from
templates/features/[feature]/for each selected featureCreate .gitignore appropriate for the language
Initialize git with
git initDisplay next steps:
Project created successfully! Next steps: cd [project-name] [install command] # npm install / pip install -e . [dev command] # npm run dev / python -m [name]
Template Locations
Base project templates:
templates/frontend/react-ts/- React + TypeScript + Vitetemplates/frontend/react-js/- React + JavaScript + Vitetemplates/frontend/vue-ts/- Vue + TypeScript + Vitetemplates/frontend/vue-js/- Vue + JavaScript + Vitetemplates/frontend/vanilla/- Vanilla JS + Vitetemplates/cli/node-ts/- Node.js + TypeScript + Commandertemplates/cli/node-js/- Node.js + JavaScript + Commandertemplates/cli/python/- Python + Clicktemplates/api/node-ts/- Express + TypeScripttemplates/api/node-js/- Express + JavaScripttemplates/api/python/- FastAPI + Uvicorntemplates/monorepo/node/- pnpm + Turborepotemplates/monorepo/python/- uv workspaces
Feature templates:
templates/features/testing/- Test configs (vitest, jest, pytest)templates/features/linting/- Lint configs (eslint, prettier, ruff)templates/features/ci-cd/- GitHub Actions workflowstemplates/features/docker/- Dockerfile and docker-composetemplates/features/docs/- README, CONTRIBUTING, LICENSE
File Naming
Template files use .tmpl extension. When copying:
- Remove
.tmplextension (e.g.,package.json.tmpl→package.json) - Process variable substitutions
- Preserve directory structure
Best Practices Applied
All generated projects include:
- Modern tooling: Vite for frontend, tsx for Node, uv for Python
- Type safety: TypeScript by default, type hints for Python
- Sensible defaults: Works out of the box with minimal config
- Clean structure: Organized src/ directory, clear separation of concerns
- Git-ready: Appropriate .gitignore, ready for version control