Entrevista profunda greenfield + decide stack (priorizando Luana: FastAPI + Next.js + Clerk + Postgres + Qdrant) + scaffold inicial + PROJECT-MAP. Para proyectos VACÍOS o casi vacíos. NO ejecutar en proyectos con código existente — usar /project-audit en su lugar. Activa cuando Chris dice: '/project-bootstrap', 'arrancamos proyecto nuevo', 'greenfield', 'desde cero', 'bootstrap proyecto', 'crear scaffold', 'iniciá proyecto'.
66
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Cuándo se usa: Chris arranca un proyecto completamente nuevo. Sin código, sin docs, solo idea. Cuándo NO se usa: proyecto con código existente — usar
/project-audit.
ROOT=$(pwd)
TRACKED=$(git ls-files 2>/dev/null | wc -l)
[ "$TRACKED" -gt 5 ] && {
echo "⚠️ Proyecto NO está vacío ($TRACKED archivos tracked). Considera /project-audit en su lugar."
echo "¿Continuar bootstrap igual (overwrite risk) o switch a /project-audit?"
exit 1
}
# Verify cwd target
[ -d ".luana-method-cache" ] && KIT_PATH=".luana-method-cache/luana" || KIT_PATH="${LUANA_METHOD_PATH:-../luana-method/luana}"
[ -d "$KIT_PATH" ] && echo "Method kit found at $KIT_PATH" || echo "❌ Method kit not found. Set LUANA_METHOD_PATH env var or clone luana-method first."Style: complete sentences, batched, wait response between batches.
Una vez recibidas todas las respuestas, presentar las decisiones agrupadas con racional explícito. Formato:
# Tech decisions — propuesta
## Decisión 1 — Runtime + framework backend
**Propuesta:** Python 3.12 + FastAPI async (Pydantic v2 + SQLAlchemy 2.0 async)
**Por qué:**
- Alineado con Luana know-how → transfer learning inmediato
- Async-first nativo (importante para LLM/agentic Phase 1 Batch 3)
- Type hints + Pydantic v2 maduros (rigor type-safe sin TS server-side)
- ORM SQLA 2.0 con async ergonómico
**Alternativa considerada:** NestJS (TS unificado FE+BE)
**Descartada porque:** {razón basada en Phase 1 respuestas — ej. "preferencia stack Luana confirmada en Batch 3.1"}
## Decisión 2 — Frontend
**Propuesta:** Next.js 16 App Router + React 19 + Shadcn UI + Tailwind CSS v4
**Por qué:**
- Server Components default = performance + SEO + bundle reduction
- Shadcn baseline cubre 90% UI sin reinventar (Phase 1 Batch 4.2)
- Tailwind v4 con tokens semantic (no hex hardcoded)
- App Router maduro 2026
**Alternativa considerada:** Vite SPA (más liviano, sin SSR)
**Descartada porque:** {razón}
## Decisión 3 — Auth
**Propuesta:** Clerk
**Por qué:**
- B2B SaaS-ready (Organizations cuando escale)
- Webhooks + JWT + middleware Next.js + FastAPI listos
- HIPAA-eligible (relevant si Phase 1 Batch 2.1 = HIPAA)
- Luana know-how (Phase 1 Batch 3.1)
**Alternativas consideradas:**
- Auth0 (caro a escala)
- Supabase Auth (acoplado a Supabase DB)
- Lucia / custom (esfuerzo + audit risk)
**Descartada(s) porque:** {razón}
## Decisión 4 — Database
**Propuesta:** PostgreSQL 16+ + Alembic migrations idempotentes
**Por qué:**
- JSONB rich (sirve para schema-flex en bounded contexts evolucionando)
- Async driver maduro (asyncpg)
- Luana know-how
**Alternativa:** PlanetScale (MySQL-compat) — descartada si needed pg features
**Vector DB (si LLM/agentic Phase 1 Batch 3.4):** Qdrant
**Cache layer:** Redis (sessions, rate-limit, queues)
## Decisión 5 — LLM provider (solo si agentic)
**Propuesta:** Anthropic Claude API con prompt caching (5min/1h TTL)
**Modelo routing:**
- Architect/auditor: Opus 4.7 (rigor + cost OK)
- Builder/synth: Sonnet 4.6 (balance)
- Reader/grep: Haiku 4.5 (cheap)
**Framework agentic:** LangGraph 2.0 + deepagents (SubAgentMiddleware isolation)
**Alternativa:** OpenAI GPT-4 + LangChain — descartada por prompt caching superior Anthropic + know-how Luana
## Decisión 6 — CI/CD
**Propuesta:** {match Phase 1 Batch 5.3}
**Workflows:** ci.yml (full gates) + ci-wip.yml (light) + cd-staging.yml + cd-prod.yml
**Triple-branch:** wip/{slug} → main (staging deploy) → release/vX.Y.Z (prod)
**Quality gates:** lint + arch fitness + tests + coverage + jscpd + interrogate + pip-audit
## Decisión 7 — Deploy target
**Propuesta:** {match Phase 1 Batch 5.4}
**Containerization:** Docker compose dev + Dockerfiles per service
**Production:** {depends — Vercel para FE + AWS/Fly.io para BE / Cloudflare para FE+workers / etc.}
## Decisión 8 — Worktrees + parallel sessions
**Propuesta:** {match Phase 1 Batch 5.2 — paralelos por default si Chris confirma}
**Topology:** PRINCIPAL (main) + CANÓNICO (wip/{slug} long-lived) + EFÍMERO (wip/{slug-story} por feature)
**Sync KISS:** scripts/git/sync-from-main.sh + scripts/git/check-sync.sh
## Decisión 9 — Testing strategy
**Propuesta:**
- BE: pytest + pytest-asyncio + coverage 43% threshold
- FE: Vitest (unit) + Playwright (E2E, Clerk testing token lifecycle)
- Arch fitness: tests/architecture/ ratchet (allowlists shrink-only)
## Decisión 10 — Observability + cost recording
**Propuesta:**
- structlog para BE logs (no print/logging)
- copilot_trace_event + copilot_llm_call tables (si agentic)
- pricing_snapshot_repository.py
- PII sanitization en payloads (sanitize_payload helper)
**Alternativa:** Sentry + Datadog APM — sumar en Phase 2 si scale lo amerita
---
Chris, ¿ratificás esta propuesta o ajustamos alguna decisión?Loop hasta Chris ratifica todas las decisions. Captura overrides explícitos en notas.
Una vez ratificado, ejecutar scaffold completo. Plantillas vienen del kit Luana en $KIT_PATH/init/.
KIT="$KIT_PATH"
PROJECT_NAME="${1:-$(basename $(pwd))}"
# 1. Backend scaffold (si stack incluye BE)
if [ "$BACKEND_LANG" = "python" ]; then
mkdir -p backend/src/{modules,core,main.py}
mkdir -p backend/{tests/{architecture,modules},alembic/versions}
cp -r $KIT/init/backend-scaffold/python-fastapi/* backend/
fi
# 2. Frontend scaffold (si stack incluye FE)
if [ "$FRONTEND_FRAMEWORK" = "nextjs" ]; then
mkdir -p frontend/src/{app,components/{ui,shared},features,lib,hooks}
mkdir -p frontend/{e2e/{specs,fixtures,pages},public}
cp -r $KIT/init/frontend-scaffold/nextjs/* frontend/
fi
# 3. Docs scaffold
mkdir -p docs/{product/{outcomes,stories,capabilities,modules},architecture/ADR,domains,learnings,process,specs/templates,rules-detail,archive}
cp -r $KIT/docs/specs/templates/* docs/specs/templates/
cp -r $KIT/docs/rules-detail/* docs/rules-detail/
cp -r $KIT/docs/process/* docs/process/
cp $KIT/docs/architecture/ADR/* docs/architecture/ADR/
# 4. Claude scaffold
cp -r $KIT/claude/. .claude/
# 5. Scripts
cp -r $KIT/scripts/. scripts/
chmod +x scripts/git/*.sh scripts/git-hooks/*
# 6. Root files (templates con placeholders interpolados)
sed "s/{PROJECT_NAME}/$PROJECT_NAME/g" $KIT/init/root-files/CLAUDE.md.template > CLAUDE.md
sed "s/{PROJECT_NAME}/$PROJECT_NAME/g" $KIT/init/root-files/AGENTS.md.template > AGENTS.md
sed "s/{PROJECT_NAME}/$PROJECT_NAME/g" $KIT/init/root-files/Makefile.template > Makefile
sed "s/{PROJECT_NAME}/$PROJECT_NAME/g" $KIT/init/root-files/docker-compose.dev.yml.template > docker-compose.dev.yml
sed "s/{PROJECT_NAME}/$PROJECT_NAME/g" $KIT/init/root-files/pyproject.toml.template > pyproject.toml
sed "s/{PROJECT_NAME}/$PROJECT_NAME/g" $KIT/init/root-files/.env.dev.template > .env.dev.template
cp $KIT/init/root-files/.gitignore.template .gitignore
# 7. GitHub workflows
mkdir -p .github/workflows
cp $KIT/init/github-workflows/*.yml .github/workflows/
# 8. Initial git commit
git init 2>/dev/null
git add .
git commit -m "chore: bootstrap proyecto via /project-bootstrap (Luana method v0.1)"
# 9. Install hooks
ln -sf $(pwd)/scripts/git-hooks/pre-commit .git/hooks/pre-commit
ln -sf $(pwd)/scripts/git-hooks/pre-push .git/hooks/pre-push 2>/dev/null
# 10. Bootstrap deps
[ -f pyproject.toml ] && uv sync
[ -f package.json ] && pnpm install
echo "✅ Scaffold complete. Próximo paso: /pm para crear primer outcome."Genera docs/PROJECT-MAP.md con scaffold inicial:
# PROJECT-MAP.md
> Auto-gen via `python scripts/generate_project_map.py`. NO editar manual.
> Last regen: {date}
## Overview
- **Project:** {PROJECT_NAME}
- **Stack:** {detected from Phase 2 decisions}
- **Topology:** {DDD modular BE + FSD-Lite FE}
- **Phase:** bootstrap
- **Last touched:** {today}
- **Method version:** Luana method v0.1
## Architecture snapshot{PROJECT_NAME}/ ├── backend/ ← FastAPI async + SQLA 2.0 + Pydantic v2 │ ├── src/ │ │ ├── main.py ← FastAPI app (redirect_slashes=False) │ │ ├── core/ ← config, db, deps, middleware │ │ └── modules/ ← DDD modules (vacío — primer outcome lo poblará) │ └── tests/ ├── frontend/ ← Next.js 16 + Shadcn + Tailwind v4 + FSD-Lite │ ├── src/ │ │ ├── app/ ← App Router │ │ ├── components/ ← ui + shared │ │ ├── features/ ← FSD-Lite (vacío) │ │ └── lib/ │ └── e2e/ ├── docs/ │ ├── product/ ← outcomes + stories + capabilities + modules │ ├── architecture/ ← ADRs │ ├── domains/ ← tools/workflows registry (agentic) │ ├── learnings/ │ └── PROJECT-MAP.md ├── scripts/ ├── .claude/ └── docker-compose.dev.yml
## Modules
(vacío — primer outcome lo poblará via /pm → /po-ux → /architect → /dev-team)
## Active stories
(ninguna — /pm te ayuda a crear la primera)
## Conventions (target, no checked yet)
- Tenant isolation: pattern definido en `.claude/rules/tenant-isolation.md`
- DDD layering: ratchet en `backend/tests/architecture/` (cuando primer módulo nazca)
- FSD boundaries: ratchet en `frontend/src/__tests__/architecture/`
- Tests coverage targets: BE 43%, FE 20%
- Spanish neutro UI: opt-in via pre-commit hook
- Conventional Commits: ✅/pmSpawn /pm skill via Skill tool inline:
{ skill: "pm", args: "" }Con mensaje al user:
✅ Bootstrap complete.
Scaffold creado:
- backend/ (FastAPI + SQLA + DDD)
- frontend/ (Next.js + Shadcn + FSD-Lite)
- docs/ (story-folder schema + ADRs)
- .claude/ (skills + rules + agents + hooks)
- scripts/ (git + git-hooks + generators)
- .github/workflows/ (CI/CD)
Tech stack ratificado:
{stack summary}
Próximo paso: spawn /pm para crear primer outcome.
{Skill invocation inline}/pm necesita ese archivo en bootstrap/pm sin handoff Phase 5 explícitoPhase 1 (entrevista): Opus 4.7 — judgment-heavy. Phase 2 (decisions): Opus 4.7 — razonamiento técnico. Phase 3 (scaffold): Haiku 4.5 — bash execution. Phase 4 (PROJECT-MAP): Haiku 4.5 — templating.
Total: ~40-60k tokens. Caro pero one-shot por proyecto.
.claude/skills/project-audit/SKILL.md — el complemento (legacy adoption).claude/skills/pm/SKILL.md — destino post-bootstrapinit/backend-scaffold/, init/frontend-scaffold/, init/root-files/ — templates fuentedocs/process/paradigm-v4.md — método que el scaffold instaladocs/architecture/ADR/ — ADRs del método (worktree-policy, paradigm-v4.1, etc.)caa08df
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.