Aurelia ecosystem
Skill Expert-Vision-Software/aurelia-expert/skills/aurelia-ecosystem
Aurelia v2 MVVM SPA expertise skill package — 5 router-routed skills (foundation, runtime, largespa, migration) for AI coding agents.
npx -y skills add Expert-Vision-Software/aurelia-expert --skill aurelia-ecosystemAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 23 days oldThe repository was created 23 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Wire first-party Aurelia v2 plugins and ecosystem concerns into an app — picks the right reference for HTTP/fetch-client, validation, dialog, state, i18n, forms, testing, and SSR/prerendering. Use when adding @aurelia/fetch-client, @aurelia/validation, @aurelia/dialog, @aurelia/state, or @aurelia/i18n; writing Vitest + @aurelia/testing component tests; binding forms with model.bind/matcher.bind; or configuring server-side rendering, prerendering, hydration, sitemap/robots, and client takeover. Leading word — wire.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.9 KB, as published. Nobody here has run it
Aurelia Ecosystem — First-Party Plugins, SSR, Testing, Forms
Wire the runtime ecosystem into an app: the first-party plugins (@aurelia/fetch-client,
@aurelia/validation, @aurelia/dialog, @aurelia/state, @aurelia/i18n), forms, component
testing, and server-side rendering. Each concern has a focused reference — read the relevant one
before writing code against that package, and only register a package when the app actually needs it.
Version & ground truth
- Aurelia 2.x only. v1 patterns are gone; every prohibition defers to
aurelia-migration/reference/v1-removals.md, the single source of truth for severity (REMOVED / DEPRECATED / error code). https://docs.aurelia.iois authoritative. DeepWiki deep-links follow the formaurelia/aurelia/blob/master/packages/<pkg>/docs/<file>.md.
Pick a reference
Match the request to exactly one branch. Every branch lives in reference/ and links back here.
| Request shape | Reference |
|---|---|
| "SSR", "prerender", "hydrate", "SEO render", "sitemap/robots", "client takeover" | reference/ssr.md |
"HTTP client", "fetch-client", IHttpClient, interceptors, retry, cancellation | reference/fetch-client.md |
"validation", IValidationController, & validate, fluent rules | reference/validation.md |
"dialog", "modal", IDialogService.open(), IDialogController | reference/dialog.md |
"state store", @aurelia/state, .state/.dispatch, @fromState, Redux-style | reference/state.md |
"i18n", "translate", "locale", @aurelia/i18n, t attribute, nf/df/rt | reference/i18n.md |
"form", "checkbox", "radio", "select", model.bind, matcher.bind, submit.trigger | reference/forms.md |
"test", "Vitest", createFixture, @aurelia/testing, mocks, router tests, Storybook | reference/testing.md |
If the request spans two references (e.g. "a validated form"), start with forms.md and follow its outbound link to validation.md.
Hard guardrails (apply to every branch)
These extend the package-wide guardrails (.trigger, kebab-case, import type, .style, singleton
DI over Event Aggregator, Models not DTOs) with ecosystem-specific rules:
resolve()for DI. Inject plugin services (IHttpClient,IDialogService,IStore,I18N,IValidationController) as class-field initializers.@injectis DEPRECATED — still valid, butresolve()is the package default. Seev1-removals.md.- Scoped controllers via
newInstanceForScope. A form'sIValidationControllermust be created withresolve(newInstanceForScope(IValidationController))so& validatebindings find it. - Dispose
IEventAggregatorsubscriptions indispose, notunbinding.disposeis the mandatory permanent-teardown hook;unbindingruns before potential reactivation. The i18n locale-change subscription and any EA listener follow this rule. - Register the
-html/ Standard configuration. Validation: registerValidationHtmlConfiguration(pulls in the core). Dialog: preferDialogConfigurationStandard(native<dialog>, modal by default). submit.triggerdoes NOTpreventDefault. Usesubmit.trigger:prevent="..."or the form reloads the page. See forms.md..styleproperty binding when a value can be falsy. Inlinestyle="width: ${value}%"is safe only for guaranteed non-falsy values; the prod optimizer drops falsy placeholders. Preferwidth.style="expr". Narrow rule — seeaurelia-migration/reference/debugging.md.- Peer dependencies are real.
@aurelia/i18nneedsi18nextinstalled;aurelia2-ssrneedsjsdom. Theaureliameta-package already bundles@aurelia/fetch-client.
SSR is a first-class branch
SSR/prerendering is the largest single gap this pillar closes. Before editing any SSR code —
renderAureliaToString, takeover, hydration, sitemap — read reference/ssr.md.
Default to prerender + mode: 'remount' takeover unless a core-compatible SSR manifest and
AOT-ready definitions are present (true hydrate requires matching marker comments, an ISSRScope
tree, and compatible definitions).
Defers to sibling skills
- Authoring a custom element / lifecycle / DI token from scratch →
aurelia-foundationandaurelia-runtime. - Structuring a large app that consumes these plugins (feature slices, shared registration) →
aurelia-largespa. - v1 → v2 API translation and removed-API troubleshooting →
aurelia-migration. - Packaging any of these plugins (or a library built on them) for npm →
aurelia-plugin.
Lead with wire
Use the verb wire to anchor each ecosystem action: wire the HTTP client, wire validation, wire the dialog service, wire the store, wire i18n, wire SSR, wire the test harness. The shared vocabulary keeps the agent inside Aurelia's first-party surface, not a generic fetch/Zod stack.