Aurelia foundation
Skill Expert-Vision-Software/aurelia-expert/skills/aurelia-foundation
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-foundationAssembled 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
Scaffold an Aurelia v2 project from zero. Picks the right foundation step — philosophy, hello-world quickstart, component naming, lifecycle hooks, or AI-assisted scaffolding. Use when starting an Aurelia 2 app, asking "what is Aurelia", creating a custom element, wiring binding/attached/unbinding, or generating the first main.ts and pair.
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
4.3 KB, as published. Nobody here has run it
aurelia-foundation
Scaffold the first decision for any Aurelia v2 task: pick the right foundation reference. Aurelia's reference documentation is opinionated; the wrong pillar at the wrong time costs more than picking the right one.
Version & ground truth
- Aurelia 2.x only. v1 patterns are gone (details in each reference).
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 |
|---|---|
| "What is Aurelia?", "why Aurelia over React?", "is Aurelia stable?" | reference/philosophy.md |
"Scaffold a new project", "hello world", "first main.ts", "make aurelia my-app" | reference/quickstart.md |
"npx makes feature flags", "silent select -s", "scaffold with Tailwind/Vitest/Playwright/Storybook" | reference/cli.md |
| "Create a custom element", "kebab-case name", "bindable", "dependencies array" | reference/components.md |
"binding / attached / unbinding", "lifecycle order", "dispose subscriptions" | reference/lifecycle.md |
| "Use an AI to scaffold this", "DHB prompts", "NotebookLM ground truth" | reference/ai-tooling.md |
If the request spans two pillars (e.g. "scaffold a custom element with lifecycle"), start with the scaffolding reference (quickstart or components) and follow its outbound links to the second.
Hard guardrails (apply to every branch)
These are non-negotiable across all seven pillars. Each is enforced by the runtime or build pipeline; ignoring any of them is a runtime error or a silent prod bug.
.triggerfor custom events..delegateon a custom event throwsAUR0713(template compilation error). Use.delegateonly on native DOM events.- Kebab-case element names. Every custom element name must contain a hyphen (
user-profile, notuserProfile). import type/export typefor interfaces. Interfaces are type-only; runtime values use regularimport/export. Project enforces viaverbatimModuleSyntax: trueintsconfig.json..styleproperty binding for dynamic CSS when the value can be falsy. Inlinestyle="width: ${value}%"is safe when the value is guaranteed non-falsy; it compiles tostyle="width:{};"only when the value is0/false/''in production builds. Preferwidth.style="expr"in any component where the interpolated value may be falsy.- Singleton DI services over Event Aggregator. Prefer typed, constructor-injected services for cross-component state.
IEventAggregatorexists but is a last resort; thedisposehook is the mandatory permanent cleanup site if you subscribe —detachingis only for temporary teardown andunbindingruns before potential reactivation. - Models, not DTOs, cross the service boundary. Services return Model classes (camelCase,
*.model.ts). DTOs (PascalCase,*-dto.ts) live insrc/models/and convert viaModel.fromDTO(). Components consume Models, never DTOs.
Each guardrail is expanded in the reference file closest to it (template/binding → components; naming → components; state → lifecycle).
Lead with scaffold
Use the verb scaffold to anchor each foundation action: scaffold the project, scaffold a custom element, scaffold the lifecycle, scaffold the agent prompt. The shared vocabulary keeps the agent's mental model inside Aurelia's, not React's.