add-feature
Install a ready-made feature pack from packs/ into the app (chat, scan-barcode, payments, feed-reels, nav, profile-settings, auth-screens, tabbars). Use when the user says "add <feature>", "install th
SKILL.md.claude/skills/add-feature/SKILL.md
GitHubContext
- Available packs: !
ls -1 packs 2>/dev/null | grep -v '^_' | grep -v README
Task
Install the feature pack $ARGUMENTS from packs/<name>/ into the app. Packs are logic-first:
they ship working background (data + state + services + migrations + hooks) and a minimal,
swappable UI that the Claude Design pass replaces later. Catalog + philosophy: packs/README.md.
- Pick the pack. If
$ARGUMENTSis empty or ambiguous, listpacks/and ask which one (AskUserQuestion). Read itspacks/<name>/pack.jsonandREADME.md. - Copy the code from
packs/<name>/src/into theinstallTopath (defaultsrc/features/<name>/). Preserve structure (model/,data/,ui/, services,index.ts). - Migrations. If
pack.json.migrationsexist, copy them intosupabase/migrations/with the next free number, then tell the user to runsupabase db reset && supabase test db. - Routes/tabs. If
pack.json.routesexist, create the thin route file(s) undersrc/app/and (if relevant) add a tab entry. Keep routes THIN (wire to the feature's screen). - Dependencies. Print the exact install command from
pack.json.deps/expoInstall(e.g.npx expo install expo-camera). Do NOT assume they're installed. - Config / env. Print every
pack.json.enventry and whether it's needed for dev vs ship. Reassure: dev works key-free unlessdevKeysNeededis true. - Verify boundaries. The copied feature must only import
@/shared/*and its own folder. Fix any stray imports. Run nothing heavy — just confirm it slots into theapp → features → sharedrule. - Report: what was copied, the deps to install, the migration to run, and a one-line reminder that the UI is a placeholder to replace after the design pass.
Never wire a pack the user didn't ask for, and never paste real API keys.