From claude-discipline
ALWAYS fires when the user invokes /bootstrap-project, /scaffold, /init-project, or asks "set up a new project with this discipline", "scaffold a new <something>", "let's start a fresh project". Drives an interactive Q&A flow (project name, stack, architecture, rigor) then writes a tailored .claude/ + docs/ + root-config scaffold to the current working directory. End state: a project that runs the spec→plan→TDD→verify→review→compound loop out of the box, with stack-specific rules + hooks already filled in (zero TODO stubs for covered stacks).
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-discipline:bootstrap-projectWhen to use
Use ONCE per new project, at init time. Run from inside an empty directory (where the new project should live). The skill writes files to the cwd; it does not create the directory.
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Interactive scaffolder. Asks the user about their project (name, stack, architecture, rigor), then writes a fully-tailored Claude-discipline scaffold to the current working directory.
Interactive scaffolder. Asks the user about their project (name, stack, architecture, rigor), then writes a fully-tailored Claude-discipline scaffold to the current working directory.
Before asking any questions, verify and report:
cwd is empty (or only contains .git/). If not, STOP and tell the user: "This directory contains files. Bootstrap into an empty directory (or remove existing files first)." List the conflicting top-level entries.cwd is a real path (not a temp/scratch dir Claude is running from). Confirm with the user: "Bootstrapping into <absolute-path>. Correct?" Wait for confirmation.Skip pre-flight only if the user has explicitly said "yes, overwrite" or "I know what I'm doing — proceed".
Use AskUserQuestion for each step. Ask ONE question per AskUserQuestion call (max 4 questions per call, but each step is conceptually one decision). Don't bundle unrelated questions.
Ask the user for, in a single message:
If the user invoked the skill with these already inline ("/bootstrap-project for a music manager called Altune"), parse and confirm rather than re-asking.
Compute slug: lowercase, kebab-case, alnum + dashes only.
question: "What's the primary backend language?"
header: "Backend"
options:
- "Python (FastAPI + uv + ruff + mypy + pytest)"
- "TypeScript / Node (Fastify or Hono + tsx + ESLint + Vitest)"
- "Go (stdlib + go vet + golangci-lint + go test)" # v0.1: TODO-stub fallback
- "Rust (axum or actix + cargo clippy + cargo test)" # v0.1: TODO-stub fallback
- "None / frontend-only project"
Note in your reasoning which stacks are fully covered (Python, TypeScript) vs stub-only (Go, Rust) in this v0.1. Tell the user when you fill in the stub case that some hooks will have TODOs they'll need to wire later.
question: "Frontend?"
header: "Frontend"
options:
- "Expo (React Native + TypeScript)"
- "Next.js (React + TypeScript)"
- "Vite + React"
- "None / backend-only project"
question: "Database?"
header: "Database"
options:
- "Postgres (recommended for prod)"
- "SQLite (recommended for solo / local-first)"
- "MongoDB"
- "None / decide later (writes a deferred-decision ADR)"
Skip if backend is "None / frontend-only".
question: "Backend architecture pattern?"
header: "Architecture"
options:
- "Hexagonal / Ports & Adapters (Recommended for production-grade)"
- "Layered (Controller → Service → Repository)"
- "Vertical-slice (feature folders end-to-end)"
- "None / decide manually (I'll write ADR-0001 myself)"
Pull the recommendation text from [vault: wiki/concepts/Hexagonal Architecture.md] if the user has the software-architecture-design vault MCP connected.
question: "How strict should the workflow guardrails be?"
header: "Rigor"
options:
- "Maximum (TDD-Guard hook BLOCKS edits without failing test; mandatory plan mode for non-trivial work)"
- "Pragmatic (TDD-Guard WARNS but doesn't block; plan mode encouraged not forced) (Recommended)"
- "Lean (no TDD-Guard, no plan-mode pressure; just spec → implement → verify)"
Summarize all answers back to the user as a single confirmation: "Going to write a <name> project with <stack> backend, <frontend>, <db>, <arch> layout, <rigor> rigor. Total files: ~X. Proceed? (yes / change Y to Z)"
Wait for explicit "yes" / "proceed" / "go". If user wants to change something, return to that step.
After confirmation, write files in this order:
CLAUDE.md, README.md, .gitignore, .gitattributes, .editorconfig, .gitmessage, commitlint.config.js, package.json, .husky/{commit-msg,pre-commit})..claude/ core (settings.json, skill-rules.json, generic rules: vault-consultation.md + tests.md)..claude/skills/ — all 13 generic skills..claude/agents/ — all 10 generic agents..claude/hooks/ — all generic hooks + the stack-specific hooks (typecheck/lint/test) filled in for the chosen language..claude/rules/{language}-frontend.md or {language}-backend.md..claude/agents/{language}-expert.md..claude/hooks/post-tool-typecheck.sh, post-tool-lint.sh, post-tool-test-changed.sh with real commands..claude/rules/{domain,application,adapters}-layer.md for hexagonal; equivalents for other patterns)..claude/agents/domain-modeler.md for hexagonal/DDD-friendly architectures.docs/architecture.md reflecting the chosen pattern (not the template stub).docs/adr/0001-<pattern-name>.md documenting the choice with rationale..claude/hooks/pre-tool-tdd-guard.sh is wired to BLOCK (exit 2).additionalContext).pre-tool-tdd-guard.sh entirely.docs/ — workflows, templates, glossary stub, brainstorm/notes placeholders.docs/adr/000N-deferred-<topic>.md.commitlint.config.js — pre-populate scope-enum with layer scopes from the chosen architecture (e.g., domain, application, adapters, platform for hexagonal).After writing, run git init and chmod +x on hooks if on Unix-like.
Templates live in this skill's bundle at ${CLAUDE_PLUGIN_ROOT}/content/:
${CLAUDE_PLUGIN_ROOT}/content/core/ — always-copied${CLAUDE_PLUGIN_ROOT}/content/stacks/<stack>/ — stack-specific overlay${CLAUDE_PLUGIN_ROOT}/content/architectures/<pattern>/ — architecture-specific overlay${CLAUDE_PLUGIN_ROOT}/content/rigor/<level>/ — rigor-specific overlayUse Read to read each template file, substitute placeholders ({{PROJECT_NAME}}, {{PROJECT_NAME_SLUG}}, {{PROJECT_DESCRIPTION}}, plus stack/arch-specific ones like {{LANG_TYPECHECK_CMD}}), then Write to the user's cwd.
After all writes:
✓ Bootstrap complete.
Created: <total> files across <core / stack / arch / rigor> overlays
Stack: <chosen>
Architecture: <chosen>
Rigor: <chosen>
Deferred decisions logged as ADRs:
- docs/adr/0001-<pattern>.md (Accepted)
- docs/adr/0002-deferred-database.md (Proposed) [if applicable]
- docs/adr/0003-deferred-auth.md (Proposed) [if applicable]
Next steps:
1. Review and customize docs/architecture.md
2. Set git identity: git config user.name "..." && git config user.email "..."
3. Install: pnpm install (wires husky hooks)
4. First commit: git add -A && git commit
5. Your first feature: type "let's spec out <feature-name>" → /feature-spec auto-fires
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub aleburrascano/claude-discipline-template --plugin bootstrap