First-run setup tool to adapt the kit to your specific project stack.
Install
mkdir -p .claude/skills/wizard && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16756" && unzip -o skill.zip -d .claude/skills/wizard && rm skill.zipInstalls to .claude/skills/wizard
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
First-run onboarding — detect the host project's framework + stack, confirm via checkbox prompts, sync CLAUDE.md to the real project (structure, commands), then offer /prune (opt-in — removes nothing itself). Use after copying the kit into a repo, or re-run after a stack change.Key capabilities
- →Detect the host project's framework and stack
- →Confirm detected stack details with the user via prompts
- →Sync `CLAUDE.md` with the project's structure and commands
- →Update `CLAUDE.md` with confirmed package manager and styling choices
- →Offer to install a native git pre-commit hook
How it works
The skill detects the project's stack, confirms details with the user, and then surgically edits `CLAUDE.md` to reflect the project's specific framework, package manager, styling, and command structure.
Inputs & outputs
When to use wizard
- →Onboard kit to new repo
- →Resync stack configuration
- →Adapt rules to current project
About this skill
Onboarding wizard
Adapts the kit to this project: detect the stack, confirm it with the user, sync CLAUDE.md to the real project, then optionally hand off to /prune. The wizard itself deletes no agents/skills/rules — pruning happens only if the user opts in at the end (step 10).
Work through the steps in order. Stop and ask whenever a value is ambiguous; never guess a stack choice silently. Prefer AskUserQuestion (checkbox/radio prompts) over asking the user to type "1, 2, 3".
-
Refresh the facts. Run
node .claude/scripts/detect-stack.mjs(cheap, fail-open), then read.claude/.wizard/facts.json.- If
isProjectisfalse, there is no host project here — this is the kit repo itself or an empty dir. Stop, say so, edit nothing. - Read
isVueandmetaFramework(nuxtornull). The kit is Vue-3-only:isVue: true→ proceed.isVue: false→ tell the user the kit's rules, skills, and agents are written for Vue 3 and won't fit another framework; stop unless they explicitly confirm they want to onboard anyway (e.g. Vue lives in a workspace package the detector can't see).
- If
kit.onboardedis alreadytrue, this is a re-sync — say so and continue (re-running is supported). Cross-checkkit.claudeMdHasPlaceholders:onboarded: truetogether with placeholders still present means a previous run was interrupted or CLAUDE.md was replaced — treat it as a first run. - Surface every entry in
warningsto the user — they flag ambiguous or conflicting detection.
- If
-
Guard the working tree. Run
git status --short. If it is not clean, tell the user the wizard will edit CLAUDE.md and ask whether to proceed anyway or stop to commit/stash first. Never edit a dirty tree without an explicit go-ahead (git is the only undo). -
Confirm the stack — use
AskUserQuestion, not free text. Present each value as a radio question (multiSelect: false) with the detected value first, labelled(detected); rely on the automatic "Other" for the long tail. The tool caps each call at 4 questions and each question at 4 authored options — the "Other" free-text choice is added automatically on top and costs no slot. Split into two calls:- Call 1 — basics:
- Package manager —
npm|pnpm|yarn|bun. IfpackageManagerAmbiguousis true or it isnull, the user must choose (surface anywarnings). - Language — TypeScript or JavaScript (default
language). - Styling — Tailwind / Sass-SCSS / CSS Modules / scoped
<style>(defaultstyling).
- Package manager —
- Call 2 — layout:
- Structure — layer-first or feature-first (default
structure; cross-check against the realsrcDirs). - Project name — detected
projectNamefirst, the repo folder name second.
- Structure — layer-first or feature-first (default
- Skip a question only when the value is certain and there's nothing to confirm; when in doubt, ask.
- Call 1 — basics:
-
Apply the confirmed values to CLAUDE.md. Surgical edits only — the file may already be hand-edited (see CLAUDE.md → Working principles):
- Title
# <PROJECT_NAME>→ the project name. - Package manager — keep the
<pm>token wherever it appears. The kit is PM-agnostic by design (README: the config never hardcodes npm/pnpm/yarn/bun): the agent substitutes<pm>from the lockfile. In the Package-manager section, just state the detected manager (e.g. "Detected: pnpm (frompnpm-lock.yaml)") and drop the generic lockfile table. Do not rewrite<pm>to the concrete manager anywhere — in CLAUDE.md or the rules. - JavaScript projects: drop the TypeScript-only guidance wherever it appears — the
typecheckstep in Quality gate, and thetypescript-6 pin incode-style.md. Match on meaning, not on a remembered sentence; the wording changes between kit releases. - Leave every other line untouched (surgical edits only).
- Do not re-add what CLAUDE.md deliberately dropped — a Stack list, a Commands list, a project-structure tree, or a TypeScript-vs-JavaScript line. All four are readable from
package.json,tsconfig.json, and the source tree, and a copy in always-loaded memory only drifts (the old Commands block had already gone stale against the gate's own script resolution). The file's own header states this rule; don't work around it. One exception: add a curated Commands block if this repo'sscriptsare numerous or non-obvious enough that a short list genuinely helps — and say in the summary that you did.
The confirmed styling choice goes in
.claude/rules/styling.md, not CLAUDE.md — that rule owns the topic, and it's the one confirmed valuepackage.jsoncan't reveal (CSS Modules and scoped<style>are both built in, so no dependency distinguishes them). State the chosen approach in its opening line and drop the "if the project uses …" alternatives once decided. - Title
-
Verify the rules actually attach — mechanically, then by eye. A
paths:glob that matches nothing is not an error: it fails silently and takes its whole rule with it, which is the one failure mode onboarding must not leave behind.- Run
node .claude/scripts/check-rule-globs.mjsand show the user the output. Every rule it flags with!would never load in this project. For each one, decide with the user which it is: the rule doesn't apply here (note it for the/prunehandoff in step 10) or its globs don't fit this layout (this project's source root isn't in the enumerated brace prefix — add it to that rule'spaths:, and say which rules you edited). - Then confirm by eye, because the script's matcher is not Claude Code's: open one real file per shape this repo has (a component, a composable/store, a test, the build config) and check
/context→ Memory files.srcRootin facts says where those live (src,app,resources/js,.for a flat Nuxt layout, or a monorepo package path) — scan that root, not a hardcodedsrc. - Re-run the script after any
paths:edit and don't finish this step while a rule the project needs is still flagged.
- Run
-
Confirm the machine-local paths are ignored. Running
detect-stack.mjsin step 1 auto-adds.claude/.wizard/to.gitignore(ensureWizardIgnored) — confirm it, and append it manually only if it's missing (it holds the machine-local detection cache, which must not be committed). Also ensure the other two machine-local entries from the README quick-start:.claude/settings.local.jsonand.claude/worktrees/— append any that are missing. Do not ignore.claude/.onboarded(it's the committed marker teammates rely on). -
Offer the native pre-commit gate (opt-in). The shipped
PreToolUsehook gates only commits made through Claude Code — a commit from a plain terminal bypasses it. Ask viaAskUserQuestion(yes/no) whether to install the same gate as a native git hook. If yes: when the repo already uses a hook manager (husky/lefthook — checkpackage.jsonand existing hook dirs), addnode .claude/hooks/pre-commit-gate.mjs --nativeto its pre-commit config instead of fighting it; otherwise write.git/hooks/pre-commit(#!/bin/sh+exec node "$(git rev-parse --show-toplevel)/.claude/hooks/pre-commit-gate.mjs" --native) andchmod +xit. Note that.git/hooks/is machine-local — teammates re-run/wizardor copy the snippet from the README. If no, mention the README documents the one-liner. -
Drop the marker. Write
.claude/.onboarded— one short line: the date and the resolved stack (e.g.2026-06-26 · vue · pnpm · TypeScript · Tailwind · layer-first). It is committed, so teammates can see the repo is onboarded and skip/wizard. -
Summarize. Tell the user exactly what changed in CLAUDE.md — placeholders resolved, structure synced, commands reconciled. Suggest they review
git diff CLAUDE.mdand the new.claude/.onboarded, then commit on a branch (nevermain— see CLAUDE.md → Git). -
Offer to prune (opt-in). The kit still ships every agent, skill, and rule — nothing was removed. Ask the user via
AskUserQuestion(yes/no) whether to remove the capabilities this project won't use now. If yes, tell them to type/prune— it is user-invocable only (disable-model-invocation), so you cannot start it for them; that is deliberate for a destructive skill. Mention/prunewants a clean tree, so recommend committing the onboarding first. If no, remind them/pruneis available anytime later. Never remove anything without this explicit go-ahead.
When not to use it
- →When the project is not a Vue 3 project or compatible workspace
- →When the user does not want to adapt the kit to the current project
Limitations
- →The kit's rules, skills, and agents are written for Vue 3.
- →The skill does not remove any agents, skills, or rules unless explicitly opted into `/prune`.
How it compares
This skill automates the adaptation of the kit's configuration to a specific project, ensuring `CLAUDE.md` accurately reflects the project's environment, unlike manual configuration that is prone to errors.
Compared to similar skills
wizard side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| wizard (this skill) | 0 | 1mo | No flags | Beginner |
| webf-quickstart | 1 | 7mo | Review | Beginner |
| raw-app | 0 | 2mo | Review | Beginner |
| everhaven-state-pinia | 0 | — | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
webf-quickstart
openwebf
Get started with WebF development - setup WebF Go, create a React/Vue/Svelte project with Vite, and load your first app. Use when starting a new WebF project, onboarding new developers, or setting up development environment.
raw-app
windmill-labs
MUST use when creating raw apps.
everhaven-state-pinia
youmu10086
Use when creating or updating Pinia stores. Covers store structure, naming, and state rules. Trigger keywords: Pinia, store, 状态管理, defineStore.
new-composable
wesleyara
Use this skill when the user asks to create a new composable (useX) for the TrackGrowth app — reusable reactive logic such as frequency evaluation, streak calculation, theme, or backup. Triggers on "criar composable", "novo composable", "new composable", "useX".
resolve-conflicts
antinomyhq
Use this skill immediately when the user mentions merge conflicts that need to be resolved. Do not attempt to resolve conflicts directly - invoke this skill first. This skill specializes in providing a structured framework for merging imports, tests, lock files (regeneration), configuration files, and handling deleted-but-modified files with backup and analysis.
openspec-onboard
studyzy
Guided onboarding for OpenSpec - walk through a complete workflow cycle with narration and real codebase work.