From zstack-skills
Scaffold a new project from an archetype template — copies archetype files, merges the Project Manifest into a fresh CLAUDE.md, installs the portable skill library, and registers the project with the orchestrator so it picks up Linear issues automatically. Use this skill when the user says "bootstrap a new project", "start a new repo", "set up a new [Next.js / iOS / Node / content] project", or when `/bootstrap` is invoked directly. Replaces the manual "copy skills, edit CLAUDE.md, add to orchestrator" dance with a single guided flow. Available archetypes: `nextjs-web`, `ios-swiftui`, `node-service`, `content-site`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zstack-skills:bootstrap-projectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You scaffold a new project from a chosen archetype. The goal: a user starts with
You scaffold a new project from a chosen archetype. The goal: a user starts with an empty directory (or an existing repo) and ends with a fully-configured project that every other skill can work with out of the box.
The user typically invokes this via:
/bootstrap --archetype=<name> --path=<path>
If either arg is missing, ask interactively. Valid archetypes: nextjs-web,
ios-swiftui, node-service, content-site (validate against
~/.claude/archetypes/ directory listing before proceeding).
~/.claude/archetypes/<archetype>/ exists. If not, list available
archetypes and stop.<path> exists OR create it (ask the user first if creating).<path> already contains a CLAUDE.md or .claude/skills/, STOP and
ask the user whether to abort or overwrite. Do not silently clobber existing work.Ask the user for these values one at a time (OK to combine into a single
AskUserQuestion call with multiple questions). Reasonable defaults shown in brackets:
true/false) — are there LLM-powered features? If yes, quality gate
will chain in eval-framework automaticallyFor archetype-specific extras (Firebase project ID for iOS, Bundle ID for iOS,
Supabase URL for Next.js, etc.), ask only what the archetype's manifest.template.md
declares as placeholders.
Invoke the deterministic bootstrap script with the collected values:
~/.claude/repo-skill-template/bootstrap-project/scripts/bootstrap.sh \
--archetype=<name> \
--path=<path> \
--name=<project-name> \
--domain=<domain> \
--repo=<repo> \
--linear-project-id=<uuid> \
--linear-team-id=<uuid> \
--linear-keyword=<keyword> \
--ai-features=<bool> \
--phase=<phase>
The script does the mechanical work: copies archetype files, merges templates, substitutes placeholders, copies skills, creates knowledge/ and tasks/ directories.
Read its output. It reports what it did — if any step failed, stop and investigate before continuing. Do not mark the task complete on partial success.
Archetype-selective: install gstack only for nextjs-web and content-site.
Skip for ios-swiftui and node-service — these don't target web UIs and
don't benefit from the browser pillar.
If archetype ∈ {nextjs-web, content-site}:
cd <path>
if [ ! -d ".claude/skills/gstack" ]; then
cp -Rf ~/.claude/skills/gstack .claude/skills/gstack
rm -rf .claude/skills/gstack/.git
cd .claude/skills/gstack && ./setup
fi
If archetype ∈ {ios-swiftui, node-service}: skip entirely. Add a marker
comment to the project's CLAUDE.md so it's discoverable later:
<!-- gstack: skipped (archetype=<name>, non-web) -->
Record the install (or skip) outcome in the report (Step 7).
Invoke the orchestrator registration script:
~/.claude/repo-skill-template/bootstrap-project/scripts/register-orchestrator.sh \
--project-id=<linear-project-id> \
--team-id=<linear-team-id> \
--keyword=<linear-keyword> \
--path=<absolute-local-path>
This script:
~/.orchestrator/config.jsonprojects and projectKeywordsIf orchestrator registration fails, the scaffold is still valid — surface the error and note that the user can run the register script again later.
If <path> is a git repo (check for .git/), invoke the git-guardrails skill:
tell the user "I'm running /git-guardrails to set up pre-commit and pre-push
hooks". If <path> is NOT yet a git repo, offer to git init first, then run
the guardrails skill.
If the user has git init-ed, stage everything and commit:
cd <path>
git add -A
git commit -m "chore: bootstrap project from <archetype> archetype"
Do NOT push — let the user decide when to push and to which remote.
Tell the user, in a short report:
cd <path> and look at the new CLAUDE.md — confirm the Project Manifest
values are rightknowledge/UBIQUITOUS-LANGUAGE.md with the top 5–10 domain terms
as they emerge — don't try to complete it up frontgrep -n '\[PROJECT_NAME\]\|\[DOMAIN\]\|\[LINEAR_' <path>/CLAUDE.md
after step 3. If any match, a substitution was missed — fix it before proceeding.jq . ~/.orchestrator/config.json.~/.orchestrator/logs/. User may need to manually
launchctl unload && launchctl load.Mark the bootstrap complete ONLY when ALL of these are true:
<path>/CLAUDE.md exists, has a populated Project Manifest section, and
contains no [PLACEHOLDER] tokens.<path>/.claude/skills/ contains the full portable skill library.<path>/knowledge/ and <path>/docs/ and <path>/tasks/ directories exist.~/.orchestrator/config.json contains the new projects and
projectKeywords entries and parses as valid JSON.launchctl list com.your-org.orchestrator shows the service running.If any of these fail, report the specific failure to the user and leave the scaffold in whatever state it's in — don't try to "clean up" by deleting the partial scaffold.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub zaeem-rafiq/zstack-skills --plugin zstack-skills