From appgarden
Create and deploy a new AppGarden App for a Builder — generate the App from the Template, push it live, and start a local preview to build against. Fetches the Builder's Client coordinates from the AppGarden Client MCP (never guesses them). Use when someone wants to create, scaffold, or start a new app — triggers on "create an app", "new appgarden app", "make me an app", "scaffold an app", "start a new project".
How this skill is triggered — by the user, by Claude, or both
Slash command
/appgarden:create-appThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create a new AppGarden App for a Builder and get it live, then leave a local preview running so the
Create a new AppGarden App for a Builder and get it live, then leave a local preview running so the
two of you can start building it together. You run everything in the Builder's own environment using
their already-signed-in GitHub CLI (gh). This skill stores no GitHub or Cloudflare credentials — it
only fetches the Builder's Client coordinates from the AppGarden Client MCP and runs commands locally
under the Builder's own gh login.
The Builder is not a developer. Speak in plain, everyday, friendly language at all times.
Before anything else, call the MCP tool get_my_client. It returns the Client this Builder
belongs to, resolved from their AppGarden sign-in. You need its githubOrg and appsDomain to create
the app, and you must never guess, hardcode, or reuse coordinates from another app — they come only
from this tool.
Branch on the result:
{ status: "resolved", name, githubOrg, appsDomain } → continue to Step 2. Keep githubOrg
and appsDomain for later steps.{ status: "not_onboarded" } → app creation isn't switched on for this Builder's account yet.
Tell them plainly, in friendly language, that this feature isn't turned on for their account yet.
Then ask exactly one question — "Is this something you'd like to use?" — and stop and wait.
send_slack_to_appgarden with a single message field
registering their interest (see below), then tell them AppGarden will follow up. Do not send more
than once.Registering interest — the message is content only. Do not include the Builder's name, email, or
org; the AppGarden server attaches their identity itself. For example:
send_slack_to_appgarden({
message: "*App creation — access request*\nA Builder asked to create an AppGarden App, but their account isn't onboarded for app creation yet. They confirmed they'd like it switched on."
})
If send_slack_to_appgarden isn't available when you try to register interest, use the same fallback:
"Sorry, this isn't working at the moment. Please contact AppGarden ([email protected]) to get this set
up."
Have a short, friendly chat to understand what they want to build — enough to suggest a good name and to be sure there's a real thing to make. Keep it light: this is not the moment to design the whole app. The deep build conversation happens later, once a live preview is running (Step 6).
Ask the Builder what they'd like to call the app. The name becomes part of the app's web address, so it can only use lowercase letters, numbers, and hyphens, must start and end with a letter or number, and must be 1 to 63 characters long.
Run these commands yourself, silently — do not show or explain them to the Builder. Replace <name>
with the confirmed name and <githubOrg> with the value from get_my_client. The template is always
appgarden-io/internal-app-template.
gh repo create <githubOrg>/<name> --template appgarden-io/internal-app-template --private --clone
cd <name>
npm install
git commit --allow-empty -m "chore: initial deploy"
git push
./<name> folder; the second moves into it, so the rest run inside it —
including the live preview in Step 6. Stay in this folder; do not cd back out.Once it's pushed, tell the Builder — in plain language — that their app is being set up now and will be
ready in a few minutes at https://<name>.<appsDomain> (using the confirmed name and the
appsDomain from get_my_client). Then open their new project page for them at
https://github.com/<githubOrg>/<name> so they can find it later.
Start the app's local preview from inside the app's own folder — the ./<name> directory you
created and moved into in Step 4. Confirm that is your working directory before launching; never start
the preview from wherever the session happened to begin.
Read the launch configuration from the created app's own .claude/launch.json — resolved relative
to the app's root directory (./<name>/.claude/launch.json), not the current working directory or
any other app's launch.json. That file is the source of truth for how to run the preview: use its
dev configuration (currently npm run dev, port 5173 with autoPort). Start it and keep it running
in the background.
Then tell the Builder — in plain language — that a live preview of their app is now running on their
computer, and share the address it prints (for example http://localhost:5173). This is where the two
of you will build and improve the app together from here.
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 appgarden-io/plugin-marketplace --plugin appgarden