skills/create-ionic-app/SKILL.md
Create a new Ionic Angular app inside this monorepo with tabs baseline, settings integration through @sheldrapps/settings-kit, config.json persistence wiring pattern, and ui-theme integration. Use when adding a new app under apps/*.
npx skillsauth add sheldrapps/sheldrapps create-ionic-appInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
apps/<new-app>.apps/<new-app>/package.json:
@sheldrapps/settings-kit@sheldrapps/ui-themefile-kit, ads-kit, image-workflow, i18n-kit).epub-cover-changer and cover-creator-for-kindle into apps/<new-app>/package.json scripts:
ngstartprebuild (node ../../scripts/ensure-stencil-entry.cjs && node ../../scripts/patch-capacitor-status-bar.cjs && node ../../scripts/patch-capacitor-admob.cjs)buildwatchtestlintassets:androiddebugApkreleaseApkbundleReleaseapps/epub-cover-changer/package.jsonapps/cover-creator-for-kindle/package.jsontsconfig.json and tsconfig.app.json using existing apps as reference:
../../packages/settings-kit/src/public-api.ts../../packages/ui-theme/src/index.ts../../packages/ui-theme/styles/*src/app/tabs/tabs.page.htmlsrc/app/tabs/tabs.routes.ts<ion-tab-button> should map to settings tab id.settings.src/app/settings/<app>-settings.schema.tssrc/main.ts:
provideSettingsKit({ appId, schema, ... })ConfigJsonFileAdapter for persistent config.json pattern (see below).src/global.scss -> @use "@sheldrapps/ui-theme/styles/index" as *;src/theme/variables.scss -> same baseline import.package.json if needed (dev:*, build:*, lint:*).Use real wiring pattern from:
apps/cover-creator-for-kindle/src/main.tsapps/epub-cover-changer/src/main.tsExpected pieces:
ConfigJsonFileAdapter({ primaryKey: "<app>.settings", fallbackAdapter: new WebLocalStorageAdapter() })CompositeStorageAdapter([new CapacitorPreferencesAdapter(), new WebLocalStorageAdapter()])If app intentionally does not use ConfigJsonFileAdapter, document that as a TODO in app bootstrap.
pnpm ipnpm --filter <new-app> startpnpm --filter <new-app> lintpnpm --filter <new-app> buildpnpm testpnpm lintpnpm builddevelopment
--- name: add-ui-component description: Add or update a reusable UI component following this monorepo standard: search ui-theme first, implement component in @sheldrapps/ui-theme when reusable, export it, then consume from app without creating new app-level SCSS unless justified. --- # Add Reusable UI Component ## Checklist 1. Search existing ui-theme assets before creating anything: - `packages/ui-theme/src/lib/components` - `packages/ui-theme/styles` 2. Reuse existing tokens/styles if
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------