From a3-plugin
A3 build system reference — Embroider, Vite, Babel, TypeScript, route splitting, PWA support, and build configuration
How this skill is triggered — by the user, by Claude, or both
Slash command
/a3-plugin:build-systemThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| Tool | Purpose |
| Tool | Purpose |
|---|---|
| Vite 7 | Dev server & bundler |
| Embroider 4 | Ember-to-Vite bridge |
| Babel | JavaScript/TypeScript transformation |
| TypeScript 5 | Type checking |
| Tailwind via @tailwindcss/vite | CSS processing |
| VitePWA | Progressive Web App support |
// vite.config.mjs
import { defineConfig } from 'vite';
import { embroider } from '@embroider/vite';
import tailwindcss from '@tailwindcss/vite';
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({
plugins: [
embroider(),
tailwindcss(),
VitePWA({ /* PWA config */ }),
],
});
Embroider is the modern build pipeline that converts Ember apps to standard Vite/webpack builds.
// ember-cli-build.js
const app = new EmberApp(defaults, {
// Embroider configuration
});
return require('@embroider/compat').compatBuild(app, {
splitAtRoutes: ['admin', 'authenticated', 'login'],
});
This means:
/admin/* routes load their own JS bundle/a3/* (authenticated) routes load their own JS bundle/login routes load their own JS bundle// tsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"noEmit": true,
"declaration": true,
"declarationDir": "declarations",
"experimentalDecorators": true,
"emitDecoratorMetadata": false
},
"include": ["app/**/*", "types/**/*", "tests/**/*"]
}
strict: true — Full strict modeexperimentalDecorators: true — Required for Ember decoratorsmoduleResolution: "bundler" — Modern module resolution// babel.config.cjs
module.exports = {
plugins: [
['@babel/plugin-transform-typescript', { allowDeclareFields: true }],
'@babel/plugin-transform-runtime',
'decorator-transforms',
'babel-plugin-ember-template-compilation',
],
};
Via vite-plugin-pwa, A3 can work as a Progressive Web App:
// eslint.config.mjs
import ember from 'eslint-plugin-ember';
import typescript from 'typescript-eslint';
export default [
...ember.configs['recommended'],
...typescript.configs['recommended'],
{ rules: { /* custom rules */ } },
];
// .prettierrc.mjs
export default {
singleQuote: true,
trailingComma: 'all',
printWidth: 100,
};
// .stylelintrc.cjs
module.exports = {
extends: [
'stylelint-config-standard',
'stylelint-config-tailwindcss',
],
};
// .template-lintrc.mjs
export default {
extends: 'recommended',
rules: { /* custom template rules */ },
};
| Command | Purpose |
|---|---|
ember serve / vite dev | Start dev server |
ember test | Run tests |
ember build --environment production | Production build |
firebase emulators:start | Start Firebase emulator |
firebase deploy --only functions | Deploy Cloud Functions |
firebase deploy --only firestore:rules | Deploy Firestore rules |
npx claudepluginhub trusted-american/marketplace --plugin a3-pluginConfigures Vite build tool, plugin API, SSR, and Vite 8 Rolldown migration. Auto-activates when working with vite.config.ts, Vite plugins, or building SSR apps.
Provides expertise in frontend build tooling including Vite, webpack, esbuild, SWC, Turbopack, Module Federation, monorepos (Nx, Turborepo), ESLint/Prettier/TS configs. Use for project setup, optimization, linting.
Provides Vue 3 + TypeScript project conventions: component boundaries, composables, Pinia state ownership, API/error handling, routing, and style isolation. Use when designing or reviewing Vue 3 project structure.