Hub rules-vue

rules-vue

v4 public Verified

Vue.js

Vue.js is a progressive JavaScript framework for building user interfaces. These rules govern component structure, reactivity safety, and security best practices for AI agents.

@sigmashakeinc 3 pulls 21 rules published Apr 8, 2026 synced Oct 11, 2026 sigmashakeinc/rules/rulesets/rules-vue →
Severity
12 error 9 warn 0 info
demo.cast
Vue.js is a progressive JavaScript framework for building user interfaces. These rules govern component structure, reactivity safety, and security best practices for AI agents.

Rules index

21 governance rules

Indexed from the repository's .rules files, grouped by technology. Expand any rule to read the raw source.

vue

vue-ask-dynamic-component-is warning ask

RISK: <component :is> resolving to a user-controlled value lets an attacker mount arbitrary registered components, including ones with dangerous side effects. FIX: restrict :is to an allow-listed map of known components.

Rule source requires an active Pro or Enterprise subscription.
vue-ask-vite-host-exposed warning ask

RISK: Binding the Vite dev server to 0.0.0.0 exposes it to the LAN; combined with DNS-rebind (CVE-2025-32395) this leaks source. FIX: keep host on localhost, or set an explicit server.allowedHosts array (never true or wildcard).

Rule source requires an active Pro or Enterprise subscription.
vue-block-unsafe-patterns warning ask

RISK: v-html renders raw HTML and is a direct XSS sink when bound to any non-static value. FIX: render as text with {{ }}, or sanitize with DOMPurify before passing to a computed property.

Rule source requires an active Pro or Enterprise subscription.
vue-block-vue2-dependency error block

RISK: Vue 2 reached end-of-life on 2023-12-31 and receives no free security patches (vue-template-compiler CVE-2024-6783 unfixed upstream). FIX: upgrade to vue@^3.4, or purchase HeroDevs Never-Ending Support if migration is infeasible.

Rule source requires an active Pro or Enterprise subscription.
vue-block-vulnerable-nuxt error block

RISK: Nuxt < 3.16 is affected by SSR payload cache poisoning CVE-2025-27415 and devtools file-read CVE-2024-34343. FIX: upgrade to nuxt@^3.16.0.

Rule source requires an active Pro or Enterprise subscription.
vue-block-vulnerable-vite error block

RISK: Vite versions prior to 6.2.5 / 5.4.15 are vulnerable to server.fs.deny bypass chain CVE-2025-30208, CVE-2025-31125, CVE-2025-31486, CVE-2025-32395 (arbitrary file read from dev server). FIX: upgrade to vite@^6.2.5 or ^5.4.15.

Rule source requires an active Pro or Enterprise subscription.
vue-block-vulnerable-vue-i18n error block

RISK: vue-i18n < 9.14.2 / < 10.0.5 has template-compilation XSS (CVE-2024-52809) when translation strings contain untrusted interpolation. FIX: upgrade to vue-i18n@^9.14.2 or ^10.0.5 and prefer precompiled message bundles.

Rule source requires an active Pro or Enterprise subscription.
vue-block-vulnerable-vue-router error block

RISK: vue-router < 4.1.4 open-redirect (GHSA-m69q-h4x2-7vxp) when router.push receives a user-controlled string starting with //. FIX: upgrade to vue-router@^4.1.4 and validate target paths against an allow-list.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-javascript-href error block

RISK: javascript: URLs in :href execute script when the link is clicked, bypassing Vue's text-escaping. FIX: restrict hrefs to http/https/mailto and validate the protocol before binding.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-nuxt-public-env-secret error block

RISK: NUXT_PUBLIC_* env vars auto-populate runtimeConfig.public and ship to the browser. FIX: rename without the PUBLIC_ prefix so the value stays server-only.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-nuxt-public-secret error block

RISK: Keys under runtimeConfig.public are shipped in the client bundle — placing a secret there leaks it to every visitor. FIX: move secrets to runtimeConfig (server-only); public keys must be non-sensitive identifiers.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-pinia-persist-sensitive error block

RISK: pinia-plugin-persistedstate writes state to localStorage by default, which is readable by any injected script and persists indefinitely. FIX: exclude auth tokens from persisted paths, or use httpOnly cookies for session material.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-runtime-template-compile error block

RISK: Compiling templates from untrusted input (@vue/compiler-dom compile(userInput)) is arbitrary script execution — the root cause of CVE-2024-6783 class bugs. FIX: never pass user data to compile(); use the runtime-only Vue build and render with text interpolation.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-vite-fs-allow-root error block

RISK: server.fs.allow containing '/' gives the dev server read access to the entire filesystem. FIX: list only the specific project subdirectories that must be served.

Rule source requires an active Pro or Enterprise subscription.
vue-deny-vite-fs-strict-false error block

RISK: server.fs.strict: false lets the dev server read files outside the project root, amplifying every server.fs.deny bypass CVE. FIX: remove the flag (default true) and list required directories in server.fs.allow.

Rule source requires an active Pro or Enterprise subscription.
vue-force-updated-api warning log

RISK: $scopedSlots was removed in Vue 3; code using it will break on upgrade. FIX: replace with this.$slots (all slots are now scoped).

Rule source requires an active Pro or Enterprise subscription.
vue-log-deprecated-listeners-children warning log

RISK: $listeners and $children were removed in Vue 3. FIX: $listeners is merged into $attrs; traverse children via template refs or provide/inject instead of $children.

Rule source requires an active Pro or Enterprise subscription.
vue-log-deprecated-new-vue warning log

RISK: new Vue() was removed in Vue 3; it silently becomes dead code after upgrade. FIX: use createApp(App).mount('#app') from 'vue'.

Rule source requires an active Pro or Enterprise subscription.
vue-log-deprecated-sync-modifier warning log

RISK: The .sync modifier was removed in Vue 3. FIX: use v-model:propName on the parent and defineEmits(['update:propName']) on the child.

Rule source requires an active Pro or Enterprise subscription.
vue-log-deprecated-vue-extend warning log

RISK: Vue.extend was removed in Vue 3 and is a migration blocker. FIX: use defineComponent({...}) from 'vue'.

Rule source requires an active Pro or Enterprise subscription.
vue-log-deprecated-vue-set warning log

RISK: Vue.set/Vue.delete/$set/$delete were removed in Vue 3 — reactivity is Proxy-based and direct assignment works. FIX: replace with plain assignment (obj.key = val) or delete obj.key.

Rule source requires an active Pro or Enterprise subscription.

Version metadata

Published metadata

The hash-locked record of this published ruleset. When source contents change, the maintainer resyncs and the version bumps.

Version
v4
Published
Apr 8, 2026
Source commits
0
Synced
Oct 11, 2026
Hash
7a3917d4eee39c5b7c83da4f5938d3686e0e7857860283b5c36dc69177c5e526
Signature
Verified (publisher key)
Tested with
claude-code@current
Plan
Starter (free)
Visibility
Public

Source history

Recent commits

Latest commits touching rulesets/rules-vue/.sigmashake/rules in sigmashakeinc/rules/rulesets/rules-vue. The published version only bumps when a maintainer resyncs.

No commit history available.