Skip to content

feat: multi-framework frontend-engineering and Angular, Vue, Svelte, Solid, vanilla JS skills - #19

Merged
emmadal merged 9 commits into
mainfrom
feat/frontend-frameworks
Nov 12, 2026
Merged

emmadal merged 9 commits into
mainfrom
feat/frontend-frameworks

Conversation

@emmadal

@emmadal emmadal commented Nov 12, 2026

Copy link
Copy Markdown
Owner

Summary

frontend-engineering was React 19 only. It now covers every major web framework with no legacy patterns, and five framework skills are added: angular, vue, svelte, solidjs, vanilla-js. APIs checked against official docs (Context7) and npm latest on 2026-11-12: Angular 22, Vue 3.5, Svelte 5 + SvelteKit 3, Solid 1.9 + SolidStart 2, Preact 11, React 19.

Changes

  • frontend-engineering: reads framework and version from package.json, targets npm latest stable, keeps shared rules, adds React 19 and Preact 11 rules, routes to the framework skill. New references/frameworks.md maps legacy APIs to modern ones per framework.
  • New skills, each with a short SKILL.md and a references/guide.md (patterns, pitfalls, legacy-to-modern table with official migrations):
    • angular: signals, zoneless + OnPush defaults, Signal Forms, httpResource, control flow, SSR with incremental hydration, Vitest, migration schematics.
    • vue: <script setup>, defineModel, Pinia setup stores, Vue Router 5 typed routes, Nuxt 4. Vue 3.6 / Vapor excluded until stable.
    • svelte: runes, snippets, {@attach}, SvelteKit 3 config, $app/state, #lib. Remote functions only behind their experimental flag.
    • solidjs: props without destructuring, query + createAsync, actions, SolidStart 2. Solid 2 RC APIs only if already adopted.
    • vanilla-js: ES modules, custom elements, AbortController, <dialog>, popover, Navigation API, dated Baseline snapshot from web-features.
  • frontend-engineer agent loads the framework skill.
  • 22 existing descriptions tightened so the catalog stays within the 9,000-character budget without raising it (8,983 now). Three trims that hurt routing were reverted.
  • README, benchmarks, compatibility doc, manifest highlights updated; version 1.4.0.

Testing

  • pytest -q --cov=agent --cov=scripts --cov-fail-under=80: 162 passed, 94.25% coverage (gate run on every commit).
  • route_eval --min-rank1 95: 160 prompts, rank-1 100%, top-3 100%, negatives 55/55.
  • validate_skills, sync_agents --check, ruff check, ruff format --check: clean. bandit: no findings. pip-audit: no known vulnerabilities.
  • Budgets: always-loaded 3,139 tokens (< 3,300), body average 440 (< 450), descriptions 8,983 / 9,000.
  • Not run: independent reviewer sub-agent pass; skills not exercised against a live project in each framework.

… budget

The catalog sits at 8,992 of its 9,000-character description budget.
Drop low-signal words (for example "device testing" in expo, "boot,
install, launch" in mobile-device-testing) so five new web framework
skills fit without raising the budget. Routing stays green: rank-1
99.3%, top-3 100%, 49/49 negatives.
Standalone components, signals and linkedSignal, input()/output()/model(),
built-in control flow, zoneless and OnPush defaults, httpResource,
Signal Forms, route-level SSR with incremental hydration, Vitest. The
guide maps every legacy API (NgModules, *ngIf, decorators, zone.js,
Karma) to its replacement and the official migration schematic.
Checked against angular.dev for Angular 22.
<script setup> with the Composition API, reactive props destructure,
defineModel, useTemplateRef, useId, composables, Pinia setup stores,
Vue Router file-based typed routes, Nuxt 4 data fetching and lazy
hydration. The guide maps Vue 2, Options API, mixins, Vuex and Vue CLI
patterns to their replacements. Vue 3.6 and Vapor mode stay out until
they reach the npm latest tag.
Runes ($state, $derived, $props, $bindable), $effect only for outside
sync, event attributes and callback props, snippets, {@Attach}, shared
state in .svelte.ts modules, SvelteKit load and form actions, and the
SvelteKit 3 configuration ($app/state, #lib, resolve/asset, shallow
goto). Remote functions are used only behind their experimental flag.
The guide maps Svelte 4 and SvelteKit 2 syntax to the sv migrate
commands.
Components run once: props read through props.x, splitProps and
mergeProps, never destructured. Signals, memos and stores, control-flow
components, router query + createAsync + action with useSubmission and
revalidation, SolidStart 2 configured through solidStart() and nitro()
in vite.config.ts. Solid 2 pre-release APIs are used only when a
project already adopted them. The guide maps routeData, cache(),
createServerData$ and SolidStart 1 config to their replacements.
…patterns

The skill was React 19 only. It now reads the framework and version
from package.json, targets the npm latest stable, keeps the shared
rules (accessibility, states, performance, security, platform first),
holds the React 19 and Preact 11 rules, and routes to angular, vue,
svelte, solidjs, vanilla-js or nextjs-app-router. A new
references/frameworks.md maps the legacy APIs of each framework to
their modern replacements so none of them land in new code. The
frontend-engineer agent loads the framework skill too.
Plain JavaScript without legacy: module scripts and import maps, DOM
creation with textContent and <template>, AbortController listener
cleanup, small EventTarget stores, custom elements with declarative
shadow DOM and ElementInternals, fetch with AbortSignal.timeout, and
platform UI (<dialog>, popover, invoker commands, Navigation API)
chosen by Baseline status. The guide holds a dated Baseline snapshot
from the web-features dataset and maps jQuery-era patterns to their
replacements.
README gains rows for angular, vue, svelte, solidjs and vanilla-js and
a new frontend-engineering summary; the skill count moves to 51. The
benchmark table and routing line use the fresh measurements (3,139
always-loaded tokens, 440 per loaded skill, rank-1 100% on 160
prompts). Plugin manifests mention web frameworks and gain a web
keyword.
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@emmadal
emmadal merged commit 343a5a4 into main Nov 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant