Frameworki

Vue components

Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code.

fe-vuevue, nuxt12 regułładowane zawsze: 81 tokenów; przy użyciu: 1070 tokenów; w referencjach na żądanie: 1926 tokenów.

Instalacja

init instaluje ten skill, gdy projekt używa: vue, nuxt. Wybierz agenta, aby zobaczyć, gdzie trafią jego pliki.

Agent
npx github:dawidolko/frontend-skills init

Bez --agents polecenie init rozpoznaje agentów po tym, co projekt już ma, a gdy nie znajdzie żadnego, pyta:

Po czym init rozpoznaje każdego z agentów (17)
AgentRozpoznawany po
Claude CodeCLAUDE.md .claude CLAUDE.local.md
OpenAI Codex.codex AGENTS.override.md
Cursor.cursor .cursorrules
GitHub Copilot.github/copilot-instructions.md .github/instructions .github/skills .github/prompts
Gemini CLIGEMINI.md .gemini
Antigravity CLI.agents/rules .agent/rules
Devin / Windsurf.devin .windsurf .windsurfrules
OpenCodeopencode.json opencode.jsonc .opencode
Cline.clinerules .cline
Zed.rules .zed
JetBrains Junie.junie
Kiro.kiro
Augment.augment .augment-guidelines
Trae.trae
Continue.continue
Amazon Q Developer.amazonq
Aider.aider.conf.yml CONVENTIONS.md

Gdzie trafia fe-vue dla: Claude Code

  • .claude/skills/fe-vue/SKILL.mdskill
  • .claude/skills/fe-vue/references/vue.mdskill
  • .claude/rules/fe-vue.mdplik reguł
  • CLAUDE.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.claude/rules/fe-vue.md
---
paths:
  - "**/*.vue"
  - "src/composables/**/*.ts"
  - "src/composables/**/*.js"
---

# Vue components (frontend-skills)

Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code.

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.claude/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: OpenAI Codex

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

OpenAI Codex nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

AGENTS.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.
Prawdziwy plik

Gdzie trafia fe-vue dla: Cursor

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • .cursor/rules/fe-vue.mdcplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.cursor/rules/fe-vue.mdc
---
description: Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code.
globs: **/*.vue, src/composables/**/*.ts, src/composables/**/*.js
alwaysApply: false
---

# Vue components (frontend-skills)

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.agents/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: GitHub Copilot

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • .github/instructions/fe-vue.instructions.mdplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.github/instructions/fe-vue.instructions.md
---
applyTo: "**/*.vue,src/composables/**/*.ts,src/composables/**/*.js"
description: "Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code."
---

# Vue components (frontend-skills)

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.agents/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Gemini CLI

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • GEMINI.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Gemini CLI: Gemini CLI was replaced by Antigravity CLI for unpaid tiers on 2026-06-18; choose "antigravity" too if you use it.

Gemini CLI nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

GEMINI.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.
Prawdziwy plik

Gdzie trafia fe-vue dla: Antigravity CLI

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • .agents/rules/fe-vue.mdplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.agents/rules/fe-vue.md
---
trigger: glob
globs: "**/*.vue, src/composables/**/*.ts, src/composables/**/*.js"
description: "Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code."
---

# Vue components (frontend-skills)

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.agents/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Devin / Windsurf

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • .devin/rules/fe-vue.mdplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Devin / Windsurf: Devin CLI also reads .cursor/rules; with Cursor chosen too, the CLI sees both rule files of a skill.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.devin/rules/fe-vue.md
---
trigger: glob
globs: "**/*.vue,src/composables/**/*.ts,src/composables/**/*.js"
---

# Vue components (frontend-skills)

Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code.

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.agents/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: OpenCode

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

OpenCode nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

AGENTS.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.
Prawdziwy plik

Gdzie trafia fe-vue dla: Cline

  • .claude/skills/fe-vue/SKILL.mdskill
  • .claude/skills/fe-vue/references/vue.mdskill
  • .clinerules/fe-vue.mdplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Cline: If .clinerules is a single file rather than a folder, Cline rule files are not written; skills still are.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.clinerules/fe-vue.md
---
paths:
  - "**/*.vue"
  - "src/composables/**/*.ts"
  - "src/composables/**/*.js"
---

# Vue components (frontend-skills)

Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code.

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.claude/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Zed

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • CLAUDE.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zed: Zed reads only the first instruction file of its list; the block is placed in that file.

Zed nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

CLAUDE.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.
Prawdziwy plik

Gdzie trafia fe-vue dla: JetBrains Junie

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

JetBrains Junie: Junie reads .agents/skills only in a trusted project.

JetBrains Junie nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

AGENTS.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.
Prawdziwy plik

Gdzie trafia fe-vue dla: Kiro

  • .kiro/skills/fe-vue/SKILL.mdskill
  • .kiro/skills/fe-vue/references/vue.mdskill
  • .kiro/steering/fe-vue.mdplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.kiro/steering/fe-vue.md
---
inclusion: fileMatch
fileMatchPattern: ["**/*.vue", "src/composables/**/*.ts", "src/composables/**/*.js"]
---

# Vue components (frontend-skills)

Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code.

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.kiro/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Augment

  • .agents/skills/fe-vue/SKILL.mdskill
  • .agents/skills/fe-vue/references/vue.mdskill
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Augment nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

AGENTS.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.
Prawdziwy plik

Gdzie trafia fe-vue dla: Trae

  • .trae/skills/fe-vue/SKILL.mdskill
  • .trae/skills/fe-vue/references/vue.mdskill
  • .trae/rules/fe-vue.mdplik reguł
  • AGENTS.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Trae: Trae reads AGENTS.md only after it is enabled in its settings.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.trae/rules/fe-vue.md
---
description: "Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code."
globs: **/*.vue,src/composables/**/*.ts,src/composables/**/*.js
alwaysApply: false
---

# Vue components (frontend-skills)

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.trae/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Continue

  • .frontend-skills/skills/fe-vue/SKILL.mdskill
  • .frontend-skills/skills/fe-vue/references/vue.mdskill
  • .continue/rules/fe-vue.mdplik reguł

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.continue/rules/fe-vue.md
---
name: "Vue components"
description: "Writes and reviews Vue 3.5 single-file components with script setup and the Composition API - keyed lists, props and emits, refs and reactive, pure computeds, watchers with cleanup, navigation links - so they stay reactive, correct and accessible. Use when creating or editing a .vue file or a composable, fixing a value that does not update, or when asked to review Vue code."
globs: ["**/*.vue", "src/composables/**/*.ts", "src/composables/**/*.js"]
alwaysApply: false
---

# Vue components (frontend-skills)

- Key every `v-for` with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
- Never put `v-if` and `v-for` on one element; loop over a computed list (vue/no-v-if-with-v-for).
- Never change a prop; emit, use `defineModel()`, or copy to local state (vue/no-mutating-props).
- In script code read refs and computeds through `.value` (vue/ref-value-in-script).
- Never destructure or reassign a `reactive()` object; use `ref`, `toRefs` or `Object.assign` (vue/no-reactivity-loss).
- Computed getters only derive: no async, requests or writes (vue/computed-pure).
- Type props (`defineProps<{...}>()` or objects with `type`), never a bare name array (vue/detailed-props).
- Name components with two or more words (vue/multi-word-names).
- Navigate with `RouterLink`/`NuxtLink`, not a button that calls `router.push` (vue/link-for-navigation).
- Clicks go on `<button>` or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
- Register composables, `watch` and lifecycle hooks synchronously in setup; clean up what a watcher or `onMounted` starts.

Before larger changes, read the full skill: `.frontend-skills/skills/fe-vue/SKILL.md`. Explain any rule id with `npx github:dawidolko/frontend-skills explain <id>`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Amazon Q Developer

  • .frontend-skills/skills/fe-vue/SKILL.mdskill
  • .frontend-skills/skills/fe-vue/references/vue.mdskill
  • .amazonq/rules/frontend-skills.mdblok instrukcji

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Amazon Q Developer: Amazon Q Developer IDE plugins reach end of support on 2027-04-30; AWS points to Kiro.

Amazon Q Developer nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

.amazonq/rules/frontend-skills.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.

### Skills

- `fe-vue` (Vue components): when editing `**/*.vue`, `src/composables/**/*.ts`, `src/composables/**/*.js`, first read `.frontend-skills/skills/fe-vue/SKILL.md`.
Prawdziwy plik

Gdzie trafia fe-vue dla: Aider

  • .frontend-skills/skills/fe-vue/SKILL.mdskill
  • .frontend-skills/skills/fe-vue/references/vue.mdskill
  • CONVENTIONS.mdblok instrukcji
  • .aider.conf.ymlkonfiguracja

Dla każdego agenta także: .frontend-skills/profile.json, .frontend-skills/lessons.md i .frontend-skills/install.json.

Aider nie ma plików reguł zawężonych do typów plików; czyta skille i blok instrukcji.

Zaplanowane przez sam instalator dla przykładowego projektu React z repozytorium.

CONVENTIONS.md
## Front-end work (frontend-skills)

- Before front-end work, read `.frontend-skills/profile.json` (the stack) and `.frontend-skills/lessons.md` (confirmed conventions of this project; they win over any skill).
- Use the installed `fe-*` skill that matches the files you edit.
- After changing UI code, run `npx github:dawidolko/frontend-skills audit --changed --json` and fix findings at `serious` and above; `explain <rule id>` gives the reason, the source and the fix.
- Name rule ids (such as `a11y/img-alt`) in reviews and commit messages.

### Skills

- `fe-vue` (Vue components): when editing `**/*.vue`, `src/composables/**/*.ts`, `src/composables/**/*.js`, first read `.frontend-skills/skills/fe-vue/SKILL.md`.
Prawdziwy plik

Jak go używać

Po instalacji agent sam ładuje skill, gdy zadanie pasuje do jego opisu. Możesz też poprosić o niego własnymi słowami, na przykład:

A żeby sprawdzić i poprawić pracę:

  • Użyj skilla fe-vue na tym pliku.
  • Uruchom audyt front-endu na moich zmianach i popraw wszystko, co poważne.
  • Wyjaśnij vue/require-v-for-key i popraw to tutaj.

Reguły, których uczy

  • vue/require-v-for-key

    Every v-for gives its items a :key from the data; on a template v-for the key goes on the template tag.

    umiarkowanastatyczne

  • vue/no-index-key

    A v-for key comes from the item's data, not from the loop index, when the list can change.

    umiarkowanastatyczne

  • vue/no-v-if-with-v-for

    Never put v-if and v-for on the same element; filter in a computed list or move v-if to a wrapper.

    umiarkowanastatyczne

  • vue/no-mutating-props

    A component never changes its props (or objects and arrays inside them); it emits an event or keeps a local copy.

    umiarkowanastatyczne

  • vue/ref-value-in-script

    In script code, read and compare a ref or computed through .value; the ref object itself is always truthy.

    umiarkowanastatyczne

  • vue/no-reactivity-loss

    Never destructure or reassign a reactive() object; use toRefs, a ref, or change its properties.

    umiarkowanastatyczne

  • vue/computed-pure

    A computed getter only derives a value - no async work, no requests and no changes to other state.

    umiarkowanastatyczne

  • vue/detailed-props

    Declare props with their types (an object with type, or a TypeScript type), not as a bare array of names.

    drobnastatyczne

  • vue/multi-word-names

    Name components with two or more words (TodoItem, not Item); App, pages and layouts are exempt.

    drobnastatyczne

  • vue/link-for-navigation

    Navigate with RouterLink or NuxtLink, not a button whose click handler only calls router.push or navigateTo.

    umiarkowanastatyczneWCAG 4.1.2

  • a11y/no-click-on-static

    A click handler belongs on a button or link; a static element with one also needs a role, tabindex and a key handler.

    poważnastatyczneWCAG 2.1.1, 4.1.2

  • a11y/input-label

    Every form field has a programmatic label (label element, aria-label or aria-labelledby); a placeholder is not a label.

    krytycznastatyczneWCAG 1.3.1, 3.3.2, 4.1.2

Skrót reguł

Ta część jest kopiowana do zawężonego pliku reguł każdego agenta, więc musi być zrozumiała sama w sobie:

  • Key every v-for with an id from the item (vue/require-v-for-key), never the loop index for a list that changes (vue/no-index-key).
  • Never put v-if and v-for on one element; loop over a computed list (vue/no-v-if-with-v-for).
  • Never change a prop; emit, use defineModel(), or copy to local state (vue/no-mutating-props).
  • In script code read refs and computeds through .value (vue/ref-value-in-script).
  • Never destructure or reassign a reactive() object; use ref, toRefs or Object.assign (vue/no-reactivity-loss).
  • Computed getters only derive: no async, requests or writes (vue/computed-pure).
  • Type props (defineProps<{...}>() or objects with type), never a bare name array (vue/detailed-props).
  • Name components with two or more words (vue/multi-word-names).
  • Navigate with RouterLink/NuxtLink, not a button that calls router.push (vue/link-for-navigation).
  • Clicks go on <button> or links (a11y/no-click-on-static); every field has a label (a11y/input-label).
  • Register composables, watch and lifecycle hooks synchronously in setup; clean up what a watcher or onMounted starts.

Kroki, które wykonuje agent

  1. Check the profile: Vue 3.5 (useId, useTemplateRef, onWatcherCleanup, reactive props destructure, lazy hydration); Nuxt adds fe-nuxt; stores follow fe-state.
  2. Write <script setup lang="ts">; declare defineProps, defineEmits (typed) and defineModel for two-way bindings. Options API code stays Options API unless the task is a migration.
  3. Use ref for state, computed for derived values, watch with onWatcherCleanup or an AbortController for side effects; shallowRef for large data you replace.
  4. Extract reusable logic into useX() composables in composables/ that take refs or getters and return plain objects of refs.
  5. Use useId() for id/for/aria-describedby; move focus to the page heading after a route change; bind text with {{ }}; v-html only for sanitized HTML (see fe-security).
  6. Images and media: import them or use @/assets paths (js/asset-import); icons from the project set (html/project-icons, html/icon-from-set).
  7. Split routes and heavy widgets with () => import(...) and defineAsyncComponent.

Jak agent sprawdza swoją pracę

  • npx github:dawidolko/frontend-skills audit --changed reports missing and index keys, v-if with v-for, prop mutation, refs without .value, lost reactivity, impure computeds, untyped props and single-word names.
  • Run ESLint with eslint-plugin-vue flat/recommended and vue-tsc --noEmit; never silence a rule to pass.
  • Vue DevTools: watch the component tree and the timeline for components that re-render on unrelated changes.

Sprawdzane audytem

Testy statyczne tych reguł działają w audit; to prawdziwa sesja na przykładowym projekcie:

Nagranie terminala: audit wypisuje znaleziska według wagi z identyfikatorami reguł i miejscem plik:linia i kończy się błędem od progu serious.
audit: liczby według wagi, każda reguła z pierwszym miejscem, kod wyjścia.

Pliki referencyjne