Setup Ionic App
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Scaffold a new Ionic (Angular or React) hybrid mobile app at the repository root using the real @ionic/cli
start schematic, then layer on this catalog’s house test/lint/e2e/Sonar conventions on top of the stock starter.
Purpose
iru-setup-ionic-app bootstraps a new Ionic 9 + Capacitor 8 app — no Cordova, no Ionic Appflow — using the
Ionic CLI’s own scaffold instead of a hand-rolled reimplementation of it, then wires in Vitest with v8 coverage
(the Angular flavor’s @angular/build:unit-test runner, or Vite’s own runner for React), the starter’s existing
ESLint flat config plus Prettier, a Playwright web-build smoke test, a Maestro on-device flow skeleton, and
sonar-project.properties when opted in. Following the catalog’s UI contract (see
Building user interfaces), the Playwright setup also gets a screen spec that
captures HomePage across left-to-right/right-to-left × light/dark into .ui-screenshots/ with an
@axe-core/playwright check at the level of a root .ui-quality.yml, and the stock starter is patched so it passes
its own accessibility check. Every command and quirk documented in its SKILL.md was confirmed by
actually running the exact sequence against both flavors (@ionic/cli 7.2.1, @ionic/angular/@ionic/react
9.0.4, Capacitor 8.5.2) rather than assumed from the tools' documentation alone.
Plugin
Shipped by the iru-typescript plugin of the ai-catalog marketplace (install with /plugin install iru-typescript@ai-catalog; see Plugins).
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
No |
Pre-resolved parameters passed by an orchestrating skill (e.g. a future |
None — if absent or unrecognized, every field is asked interactively. |
|
Yes (unless supplied via |
Which flavor to scaffold: |
None — user must choose |
|
Yes (unless supplied via |
Kebab-case project/directory name, used as |
None |
|
Yes (unless supplied via |
Reverse-DNS application id, e.g. |
None |
|
No |
One-line project description written into |
None |
|
Yes (unless supplied via |
Resolved via |
None — user must choose |
|
Yes (unless supplied via |
Populate |
None |
|
No |
Whether the repository is open source ( |
None — asked first when unresolved |
|
No |
How the app reaches real devices: |
|
|
No |
Whether/how to wire up |
|
|
No |
Whether to run |
Asked with Yes recommended |
|
No |
Whether to run |
Asked with Yes recommended (macOS only) |
|
No |
|
Resolved only when the |
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
Outputs
-
A scaffolded Ionic app at the repository root (
package.json,capacitor.config.ts,src/, framework config), moved up from a temporary sibling directory when the root wasn’t empty. -
capacitor.config.tsre-initialized with the realapp-idin place of the starter’sio.ionic.starter. -
Vitest coverage wired into
angular.json(Angular) orvite.config.ts(React), plus non-interactivetest/coveragepackage.jsonscripts. -
eslint.config.jsextended with build/coverageignoresandeslint-config-prettier;.prettierrc.jsonandformat/format:fixscripts added. -
playwright.config.tsande2e/smoke.spec.ts(optionally replacing the React starter’s Cypress setup), plus ane2escript. -
UI contract files:
.ui-quality.ymlat the repository root (accessibility,directions,themes),e2e/support/ui-screenshots.ts(copied from the skill’sreference/ui-screenshots.ts, with@axe-core/playwrightinstalled), and aHomePagematrix test ine2e/smoke.spec.tsthat writes.ui-screenshots/screen/HomePage/default--<ltr|rtl>--<light|dark>.png. The starter’sindex.htmlviewport, link underline, paragraph colour contrast and right-to-leftinset-inlineare fixed so it passes atenforce..ui-screenshots/must be gitignored (Setup TypeScript Gitignore adds it). -
.maestro/smoke.yaml, an unverified on-device smoke-flow skeleton. -
sonar-project.propertiesat the repository root, only whensonariscloudorself-hosted. -
android/and/orios/native platform folders, for whichever ofadd-android/add-ioswas Yes. -
A report that opens by repeating the announced mode (from scratch or updating an existing setup), lists per owned artifact the action taken (created / updated / replaced / kept as is / removed) and each mismatch a kept artifact leaves with this run’s choices, the
visibilityused for Sonar and where it came from, every resolved value, what was included versus omitted and why, and explicit warnings to review generated files and provision Sonar/store credentials before relying on CI.
Execution flow
Dependencies
Invokes
None — iru-setup-ionic-app is a leaf skill; it does not call any other skill in this catalog. It mentions
Check License, Setup TypeScript Gitignore, and
Setup TypeScript GitHub Workflows in its report/warnings only, as pointers for the user
to run afterward — it never calls them itself.
Invoked by
-
Setup TypeScript Repository — Step 5, flavor ionic scaffold, via the
iru-isolated-skill-executoragent.
Source
SKILL.md on GitHub — the file this page was generated from.