Skill · App builder

The skill /hub:create loads to turn natural language into a working scaffold. It handles detection, stack selection, template matching, and agent handoff.

When it activates

Automatically, whenever /hub:create or hub:project-planner decides to scaffold a greenfield app. You rarely invoke it directly.

What it teaches

The skill has four sub-references, each loaded when relevant:

  • project-detection — empty folder vs. existing repo, framework fingerprints, monorepo markers.
  • tech-stack — pick Next.js vs. Nuxt vs. SvelteKit based on prompt + existing config.
  • scaffolding — 13 built-in templates: Next.js static/SaaS/fullstack, Nuxt, Astro, Flutter, React Native, Electron, Chrome extension, Express API, FastAPI, Turborepo, CLI tool.
  • agent-coordination — the hand-off order: planner → db → backend → frontend → devops.

The template picker

When you run /hub:create a SaaS with auth and billing, the skill maps:

match:
  keywords:   SaaS, auth, billing
  signals:    no framework declared → default to Next.js (team's primary)
  template:   nextjs-saas
  extras:     Prisma (from stack), Resend (from prompt implies email), Stripe

The chosen template is a directory of TEMPLATE.md instructions, not a pre-built repo. The scaffolding step writes files based on those instructions so each scaffold matches your prompt — not a frozen cookiecutter.

Example: what it refuses

Running /hub:create in a folder that already has package.json triggers a refusal:

This folder already contains a Next.js project (package.json detected).
/hub:create is for greenfield. For changes to an existing app, use:

  /hub:enhance <change to make>
or
  /hub:plan <what to add>

Where it lives

skills/app-builder/ — SKILL.md plus 4 sub-references and a templates/ folder with one directory per supported stack. Add a new template by dropping a TEMPLATE.md into templates/<name>/ and adding a keyword map to tech-stack.md.

Pro tips

  • Name your stack in the prompt if you care. “using Astro + Svelte” beats “static site.”
  • Mention constraints upfront: “no Prisma, we use Drizzle” saves a rework.
  • Contribute a template if yours isn't in the 13. PRs welcome.

Next steps