From kjgarza-base
Scaffold new software projects with best practices. This skill should be used when the user wants to create a new project, initialize a codebase, scaffold an application, start a new repo, set up a project from scratch, or generate a boilerplate/starter template. Supports frontend (React, Vue, vanilla), CLI tools, REST APIs, and monorepos in TypeScript/JavaScript or Python.
npx claudepluginhub kjgarza/marketplace-claude --plugin kjgarza-baseThis skill uses the workspace's default tool permissions.
references/feature-matrix.mdreferences/project-types.mdscripts/validate_name.pytemplates/api/node-js/package.json.tmpltemplates/api/node-js/src/index.js.tmpltemplates/api/node-js/src/middleware/error-handler.js.tmpltemplates/api/node-js/src/routes/health.js.tmpltemplates/api/node-ts/package.json.tmpltemplates/api/node-ts/src/index.ts.tmpltemplates/api/node-ts/src/middleware/error-handler.ts.tmpltemplates/api/node-ts/src/routes/health.ts.tmpltemplates/api/node-ts/tsconfig.json.tmpltemplates/api/python/pyproject.toml.tmpltemplates/api/python/src/__init__.py.tmpltemplates/api/python/src/main.py.tmpltemplates/api/python/src/routes/__init__.py.tmpltemplates/api/python/src/routes/health.py.tmpltemplates/cli/node-js/package.json.tmpltemplates/cli/node-js/src/cli.js.tmpltemplates/cli/node-js/src/index.js.tmplDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Scaffold production-ready projects with modern tooling and configurable features.
Follow these steps in order. Use the AskUserQuestion tool for each step.
Ask for the project name. Validate that it:
Example prompt:
What would you like to name your project?
(Use lowercase with hyphens, e.g., my-awesome-app)
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 |
Based on project type, present these options:
Frontend:
CLI:
API:
Monorepo:
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 |
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)
After confirmation, generate the project:
Create project directory at the specified path (default: current directory)
Copy base templates from the appropriate templates/[type]/[language]/ directory
Process template variables - Replace these placeholders in all .tmpl files:
{{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}} - From git config user.name or "Your Name"{{YEAR}} - Current yearAdd feature files from templates/features/[feature]/ for each selected feature
Create .gitignore appropriate for the language
Initialize git with git init
Display 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]
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 workspacesFeature 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, LICENSETemplate files use .tmpl extension. When copying:
.tmpl extension (e.g., package.json.tmpl → package.json)All generated projects include: