Help us improve
Share bugs, ideas, or general feedback.
From hero-skills
Scaffolds new projects: Python (FastAPI/CLI/library), full-stack (FastAPI+Next.js/Vite), Node.js services. Supports standalone repos or monorepo subprojects. Sets up CLAUDE.md.
npx claudepluginhub ai-hero/hero-skills --plugin hero-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/hero-skills:create-project PROJECT_NAME [description]PROJECT_NAME [description]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scaffold a new project, either standalone or as a subproject in an existing repo.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Scaffold a new project, either standalone or as a subproject in an existing repo.
This skill owns Pipeline 1 (init-project) from PIPELINES.md:
scaffold → setup-dev → init-hero → first-commit
Print the DAG line at the start of each step. Format:
[N/4] (✓) scaffold → (▶) setup-dev → ( ) init-hero → ( ) first-commit
Now running: setup-dev
This skill drives the scaffold step and then invokes hero-skills:setup-dev, then hero-skills:init-hero, and finally a git commit of HERO.md + CLAUDE.md. Each chained skill renders its own internal DAG when it has one.
Naming note for first-commit: When scaffolding a standalone repo, Step 6 below already creates the literal first commit (the scaffold). The pipeline's first-commit node refers specifically to the commit that lands HERO.md and CLAUDE.md — that's a follow-up commit on standalone repos, or simply the next commit when adding to an existing repo. See PIPELINES.md for the canonical definition.
$ARGUMENTS — Project name (required) and optional descriptionROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
cat "$ROOT/HERO.md" 2>/dev/null || echo "NO_HERO_CONFIG"
Read HERO.md for repo type (single vs monorepo), code quality tools, and coding conventions. If missing, suggest hero-skills:init-hero and proceed with defaults.
git rev-parse --is-inside-work-tree 2>/dev/null && echo "IN_REPO" || echo "STANDALONE"
ls */pyproject.toml */package.json 2>/dev/null | head -5
Ask based on context:
| Context | Question |
|---|---|
| Not in a repo | Create standalone repo, or add to an existing one? |
| In a repo with siblings | Add as a new subproject? |
| Empty repo | Initialize this repo with the new project? |
Ask the user:
Read uv FastAPI guide at https://docs.astral.sh/uv/guides/integration/fastapi/
uv init PROJECT_NAME
cd PROJECT_NAME
uv add fastapi uvicorn[standard]
Structure:
PROJECT_NAME/
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── routers/__init__.py
│ ├── services/__init__.py
│ └── schemas/__init__.py
├── pyproject.toml
└── uv.lock
uv init --lib PROJECT_NAME
uv init PROJECT_NAME
Add entry point in pyproject.toml:
[project.scripts]
PROJECT_NAME = "project_name:main"
PROJECT_NAME/
├── backend/ # FastAPI
└── frontend/ # Next.js or Vite
Backend: same as Python Backend above.
Frontend (ask Next.js or Vite):
Next.js: Follow https://ui.shadcn.com/docs/installation/next
npx create-next-app@latest frontend --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
cd frontend && npx shadcn@latest init -d
Add API proxy in next.config.js:
async rewrites() {
return [{ source: '/api/:path*', destination: 'http://localhost:8000/api/:path*' }];
}
Vite: Follow https://ui.shadcn.com/docs/installation/vite
Add API proxy in vite.config.ts:
server: {
proxy: { '/api': { target: 'http://localhost:8000', changeOrigin: true } }
}
Same as full-stack frontend, at project root instead of frontend/.
mkdir PROJECT_NAME && cd PROJECT_NAME
npm init -y
npm install express typescript @types/node @types/express tsx
npx tsc --init
# PROJECT_NAME
DESCRIPTION
## Development
### Prerequisites
- [Python 3.12+ and uv | Node.js 20+]
### Setup
[How to install dependencies]
### Run
[How to start dev servers]
### Test
[How to run tests]
## Project Structure
[Brief description of key directories]
git init
git add -A
git commit -m "$(cat <<'EOF'
chore: initialize PROJECT_NAME
DESCRIPTION
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
The init-project pipeline does not stop at scaffolding. After Step 6, render the DAG:
[2/4] (✓) scaffold → (▶) setup-dev → ( ) init-hero → ( ) first-commit
Now running: setup-dev
Then run hero-skills:setup-dev to install required CLIs and authenticate. After that completes, render:
[3/4] (✓) scaffold → (✓) setup-dev → (▶) init-hero → ( ) first-commit
Now running: init-hero
Run hero-skills:init-hero to investigate the freshly scaffolded project and write HERO.md. (Pipeline 3 runs as a nested DAG inside this step.)
Finally render:
[4/4] (✓) scaffold → (✓) setup-dev → (✓) init-hero → (▶) first-commit
Now running: first-commit
If the repo was initialized standalone in Step 6 with an initial commit, the first-commit step folds HERO.md and CLAUDE.md (written by init-hero) into a follow-up commit:
git add HERO.md CLAUDE.md
git commit -m "chore: add HERO.md and CLAUDE.md from hero-skills:init-hero"
If the project was added to an existing repo, defer the commit to hero-skills:commit-changes (the user's normal flow).
Create Project Summary
======================
Project: PROJECT_NAME
Type: [Python Backend | Full-stack | ...]
Location: PATH
Pipeline:
(✓) scaffold → (✓) setup-dev → (✓) init-hero → (✓) first-commit
Created:
- Project structure
- CLAUDE.md
- HERO.md
- [Git repo initialized]
Next steps:
cd PROJECT_NAME
hero-skills:preflight # Step 0.3 — sanity-check tooling, .env, ports
hero-skills:plan-work # Steps 1–2 — plan and implement the first task
hero-skills:one-shot # …or chain Steps 1–12 in a single invocation