{"_id":"@elvah/vue-skills","_rev":"6-fdd8cb0bd4ab51e79ba09a20c9f5b6d5","name":"@elvah/vue-skills","dist-tags":{"latest":"0.4.2"},"versions":{"0.1.2":{"name":"@elvah/vue-skills","version":"0.1.2","author":{"name":"elvah GmbH"},"license":"MIT","_id":"@elvah/vue-skills@0.1.2","maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"dist":{"shasum":"3222bbe6443baae5e84f5755bf9c01dcb8d7373b","tarball":"https://registry.npmjs.org/@elvah/vue-skills/-/vue-skills-0.1.2.tgz","fileCount":10,"integrity":"sha512-sLRH/CRDFLj8hp05tpmFgvhGm++aTmd26U6CeGoD9BTlHdCAI8ukte+9o6MOsoFdgIzH09ty8ojE/0ugvcvp3g==","signatures":[{"sig":"MEYCIQCPHtlnmi3VC6B013aCnHrRwE6sfO7KbLLBx2WZTFa6JQIhAJgekyWFOzgaiNoVG2mlxb6ukr9XNePKDkXQcJiqWI/u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35850},"type":"module","_from":"file:elvah-vue-skills-0.1.2.tgz","engines":{"node":">=24"},"scripts":{"lint":"eslint . --fix","type-check":"tsc --noEmit","postinstall":"./scripts/install-skills.ts"},"_npmUser":{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},"_resolved":"/tmp/2ebd2835e7ca7f8703a4d985e38fabaf/elvah-vue-skills-0.1.2.tgz","_integrity":"sha512-sLRH/CRDFLj8hp05tpmFgvhGm++aTmd26U6CeGoD9BTlHdCAI8ukte+9o6MOsoFdgIzH09ty8ojE/0ugvcvp3g==","_npmVersion":"11.9.0","description":"Agent skill package for Vue development at elvah.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-skills_0.1.2_1772726583905_0.21426763567641038","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@elvah/vue-skills","version":"0.2.0","author":{"name":"elvah GmbH"},"license":"MIT","_id":"@elvah/vue-skills@0.2.0","maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"dist":{"shasum":"a5338eb0df9a1191fb282fd1161384a74094b531","tarball":"https://registry.npmjs.org/@elvah/vue-skills/-/vue-skills-0.2.0.tgz","fileCount":10,"integrity":"sha512-B24yYnxSIe0WptqqRVXCB16mFmCnip/sc6t/rxXWjoDPo7FfaElx5Ar/xhuCqhV23MQ0QDLrawUyayZux0oVIQ==","signatures":[{"sig":"MEYCIQD3djaZmUniaPgYqXhDhIwSfYSa4fbblxndNqhN4JiXuAIhALt9/mbOc2jqC3NsEg+XrKwFuTNs2WVQOPb6qjIaxZFY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35850},"type":"module","_from":"file:elvah-vue-skills-0.2.0.tgz","engines":{"node":">=24"},"scripts":{"lint":"eslint . --fix","type-check":"tsc --noEmit","postinstall":"./scripts/install-skills.ts"},"_npmUser":{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},"_resolved":"/tmp/49db79606e1f013498ff1f7076749615/elvah-vue-skills-0.2.0.tgz","_integrity":"sha512-B24yYnxSIe0WptqqRVXCB16mFmCnip/sc6t/rxXWjoDPo7FfaElx5Ar/xhuCqhV23MQ0QDLrawUyayZux0oVIQ==","_npmVersion":"11.9.0","description":"Agent skill package for Vue development at elvah.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-skills_0.2.0_1772727641393_0.8889284838689895","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@elvah/vue-skills","version":"0.3.0","author":{"name":"elvah GmbH"},"license":"MIT","_id":"@elvah/vue-skills@0.3.0","maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"dist":{"shasum":"ef92730e95d97ddd216aada1121a704169c5f25e","tarball":"https://registry.npmjs.org/@elvah/vue-skills/-/vue-skills-0.3.0.tgz","fileCount":11,"integrity":"sha512-WZ+KPYgzU6iuecBfqWtKEGFYkbaVrXEFZNH5S0ood8wzGFtP9OXUEztwKnp1U9BOW8hucpCE7fN5pB42foV2sQ==","signatures":[{"sig":"MEUCIQDLkykx+Bn1wplT/7RwoECcc6ej9k+ajoeqhLpWExOdtwIgW5Dtz9WdAOsQySoAOccJRWmosOzgEeU1+CEMHKBdv+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38129},"type":"module","_from":"file:elvah-vue-skills-0.3.0.tgz","engines":{"node":">=24"},"scripts":{"lint":"eslint . --fix","type-check":"tsc --noEmit","postinstall":"node ./scripts/install-skills.js"},"_npmUser":{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},"_resolved":"/tmp/a7c80a8be65412030e1204fe48b177a5/elvah-vue-skills-0.3.0.tgz","_integrity":"sha512-WZ+KPYgzU6iuecBfqWtKEGFYkbaVrXEFZNH5S0ood8wzGFtP9OXUEztwKnp1U9BOW8hucpCE7fN5pB42foV2sQ==","_npmVersion":"11.9.0","description":"Agent skill package for Vue development at elvah.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-skills_0.3.0_1772728186855_0.9196881907020886","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@elvah/vue-skills","version":"0.4.0","author":{"name":"elvah GmbH"},"license":"MIT","_id":"@elvah/vue-skills@0.4.0","maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"dist":{"shasum":"fec2931d6ac8f6af46913cc94e917bb693154c75","tarball":"https://registry.npmjs.org/@elvah/vue-skills/-/vue-skills-0.4.0.tgz","fileCount":13,"integrity":"sha512-4Ro9Lhkwxjx1nxnhiFscW9ShZmh+D4Pkz/FH/ikOrVDWvU4nzKmCVbg1DBmupVgq0uNDYZe7+tFzC+VdayhCvw==","signatures":[{"sig":"MEUCIQCnGbR3QOvYSbhvCDzZdXl4pU1bgKmqSnJdH5d6eOOZxAIgc7bAvmVsagyu3yWSFVCHR4gGRvZVVw8efp5qnjoVIJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61285},"type":"module","_from":"file:elvah-vue-skills-0.4.0.tgz","engines":{"node":">=24"},"scripts":{"lint":"eslint . --fix","type-check":"tsc --noEmit","postinstall":"node ./scripts/install-skills.js"},"_npmUser":{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},"_resolved":"/tmp/e2c5cf396c2134d6c118f849748186ce/elvah-vue-skills-0.4.0.tgz","_integrity":"sha512-4Ro9Lhkwxjx1nxnhiFscW9ShZmh+D4Pkz/FH/ikOrVDWvU4nzKmCVbg1DBmupVgq0uNDYZe7+tFzC+VdayhCvw==","_npmVersion":"11.9.0","description":"Agent skill package for Vue development at elvah.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-skills_0.4.0_1772729720513_0.6703521824522567","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@elvah/vue-skills","version":"0.4.1","author":{"name":"elvah GmbH"},"license":"MIT","_id":"@elvah/vue-skills@0.4.1","maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"dist":{"shasum":"626785367a18b9ecb87b4351f9fe7b860e43f823","tarball":"https://registry.npmjs.org/@elvah/vue-skills/-/vue-skills-0.4.1.tgz","fileCount":14,"integrity":"sha512-+YRSyKUwzFZVGS7NnxjJL70LAcIzjHzHS8xmbhO7GlVRK5HsA/Bk7795nVtqX1iTsny2wofLbO2vl2kjYakjWg==","signatures":[{"sig":"MEUCIECbQf1UsDapLdGCjx+UKk6p4o6ilGgvXpiSKspeNBaUAiEA2hdP5vfhaIppgxfszruzpeJ9QzQ5n/XQt/B8RKmdaKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63264},"type":"module","_from":"file:elvah-vue-skills-0.4.1.tgz","engines":{"node":">=24"},"scripts":{"lint":"eslint . --fix","type-check":"tsc --noEmit","postinstall":"node ./scripts/install-skills.js"},"_npmUser":{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},"_resolved":"/tmp/2ae309b89d02af96c9ecfa0f4b522db4/elvah-vue-skills-0.4.1.tgz","_integrity":"sha512-+YRSyKUwzFZVGS7NnxjJL70LAcIzjHzHS8xmbhO7GlVRK5HsA/Bk7795nVtqX1iTsny2wofLbO2vl2kjYakjWg==","_npmVersion":"11.9.0","description":"Agent skill package for Vue development at elvah.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue-skills_0.4.1_1772735139348_0.7537583857858601","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@elvah/vue-skills","type":"module","version":"0.4.2","author":{"name":"elvah GmbH"},"license":"MIT","publishConfig":{"access":"public"},"engines":{"node":">=24"},"devDependencies":{"@types/node":"25.3.0","typescript":"5.9.3"},"scripts":{"postinstall":"node ./scripts/install-skills.js","type-check":"tsc --noEmit","lint":"eslint . --fix"},"_id":"@elvah/vue-skills@0.4.2","description":"Agent skill package for Vue development at elvah.","_integrity":"sha512-vKQcMQ4WCHwYZd/jeklG5HanizMzFvhvtja5n6Ws9sRrnqU7+JjsR/I0ZNi0x3vLXRsXKc2YZ1HOXMy0+d2UzA==","_resolved":"/tmp/3993802e85ef8477c7176b48e11ab49d/elvah-vue-skills-0.4.2.tgz","_from":"file:elvah-vue-skills-0.4.2.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-vKQcMQ4WCHwYZd/jeklG5HanizMzFvhvtja5n6Ws9sRrnqU7+JjsR/I0ZNi0x3vLXRsXKc2YZ1HOXMy0+d2UzA==","shasum":"9a479194d55f7e435fe6357092b612437782d892","tarball":"https://registry.npmjs.org/@elvah/vue-skills/-/vue-skills-0.4.2.tgz","fileCount":15,"unpackedSize":68334,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDw1nV7+MeIMfB7a/+nVBOWChx5PqZUseYfwrLsPSvzXQIgTDnc1E9Qff67Sh4Vw5eoV0V9lu11W1bEUlMMpOhj/tM="}]},"_npmUser":{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},"directories":{},"maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue-skills_0.4.2_1772787667200_0.7239830417725197"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T16:03:03.782Z","modified":"2026-03-06T09:01:07.497Z","0.1.2":"2026-03-05T16:03:04.061Z","0.2.0":"2026-03-05T16:20:41.525Z","0.3.0":"2026-03-05T16:29:46.982Z","0.4.0":"2026-03-05T16:55:20.686Z","0.4.1":"2026-03-05T18:25:39.487Z","0.4.2":"2026-03-06T09:01:07.353Z"},"author":{"name":"elvah GmbH"},"license":"MIT","description":"Agent skill package for Vue development at elvah.","maintainers":[{"name":"schapka_elvah","email":"rene.schapka@elvah.de"},{"name":"applicationmanagers","email":"application-managers+npm@elvah.de"}],"readme":"# @elvah/vue-skills\n\nAgent skill package for Vue development at elvah.\n\n## Installation\n\n```bash\n# pnpm\npnpm add -D @elvah/vue-skills\n\n# npm\nnpm install --save-dev @elvah/vue-skills\n\n# yarn\nyarn add --dev @elvah/vue-skills\n```\n\nSkills are copied into `.claude/skills/` automatically via `postinstall`. No further setup needed — agents pick them up immediately.\n\n> **pnpm users:** pnpm blocks lifecycle scripts from dependencies by default. After installing, approve the build script by running:\n> ```bash\n> pnpm approve-builds\n> ```\n> Alternatively, add the package permanently to your `package.json` so it never needs manual approval again:\n> ```json\n> {\n>   \"pnpm\": {\n>     \"onlyBuiltDependencies\": [\"@elvah/vue-skills\"]\n>   }\n> }\n> ```\n\n## Requirements\n\n- Node.js >= 24\n- [Claude Code](https://claude.ai/code) (or any agent runtime that supports the `.claude/skills/` convention)\n\n## Skills\n\n### vue-core\n\nGuides agents through Vue feature development following elvah conventions. Covers component classification, general principles, type-specific implementation guidance, composables, data fetching, and forms.\n\n#### Component types\n\nA core idea in this skill is that not all Vue components are the same. Each type has distinct responsibilities — mixing them is the most common source of components that are hard to maintain.\n\n| Type                  | Responsibility                                                                          |\n|-----------------------|-----------------------------------------------------------------------------------------|\n| **View**              | Route-bound entry point for a page. Composes feature and domain components.             |\n| **Feature component** | Owns business logic or feature state. Coordinates child components.                     |\n| **Domain component**  | Adapts a single UI primitive to a domain concept. No business logic beyond the mapping. |\n| **UI component**      | Generic, fully reusable, zero business or domain knowledge. Self-contained styling.     |\n\n#### Decision flow\n\n```mermaid\nflowchart TD\n    Start([Start]) --> Triage\n\n    Triage{\"Step 0 · Scope?\"}\n    Triage -->|Targeted task| Touch\n    Triage -->|Full feature| Plan\n\n    subgraph planning [\"Full feature planning\"]\n        Plan[\"Map hierarchy · identify logic needs · audit existing\"]\n        Plan --> TokenAudit[\"Audit design tokens · design-tokens.md\"]\n        TokenAudit --> UIAudit[\"Audit required UI components · add missing ones to checklist first\"]\n        UIAudit --> BottomUp[\"Produce checklist · build bottom-up · UI → Domain → Feature / Logic → View\"]\n    end\n\n    BottomUp --> Touch\n\n    Touch{\"Step 1 · What are we touching?\"}\n    Touch -->|Component| CompMod\n    Touch -->|Logic unit| LogicMod\n\n    CompMod{\"Step 2A · Create or modify?\"}\n    CompMod -->|Create| CompType\n    CompMod -->|Modify| CompScope\n\n    CompScope{\"Stays focused?\"}\n    CompScope -->|\"Yes — extend\"| CompType\n    CompScope -->|\"No — create new\"| CompType\n\n    CompType{\"Step 3A · Component type? · component-types.md\"}\n    CompType --> CompPrinciples[\"Step 4A · Component principles · component-principles.md\"]\n\n    CompPrinciples -->|View| VR([views.md])\n    CompPrinciples -->|Feature| FR([feature-components.md])\n    CompPrinciples -->|Domain| DR([domain-components.md])\n    CompPrinciples -->|UI| UR([ui-components.md])\n\n    LogicMod{\"Step 2B · Create or modify?\"}\n    LogicMod -->|Create| CompUtil\n    LogicMod -->|Modify| LogicScope\n\n    LogicScope{\"Stays focused?\"}\n    LogicScope -->|\"Yes — extend\"| CompUtil\n    LogicScope -->|\"No — create new\"| CompUtil\n\n    CompUtil{\"Step 3B · Composable or util?\"}\n    CompUtil -->|Util| Done([Plain TypeScript])\n    CompUtil -->|Composable| CompLogicPrinciples[\"Step 4B · composable-principles.md · Feature-local or shared?\"]\n\n    CompLogicPrinciples --> WhatDoes{\"Step 5B · What does it do?\"}\n    WhatDoes -->|Data fetching| DF([data-fetching.md])\n    WhatDoes -->|Form logic| FM([forms.md])\n    WhatDoes -->|Other| CP([composable-principles.md])\n```\n\n#### Reference files\n\n- [`component-types.md`](skills/vue-core/component-types.md) — classification guide, decision questions for each component type, and where styling lives in the hierarchy\n- [`component-principles.md`](skills/vue-core/component-principles.md) — general principles: structure, state ownership, reactivity, v-model, API design, naming, and documentation\n- [`ui-components.md`](skills/vue-core/ui-components.md) — component categories, styling encapsulation, CVA variants, reka-ui primitives, modelValue patterns, accessibility, and icons\n- [`design-tokens.md`](skills/vue-core/design-tokens.md) — how to explore a project's token vocabulary (Tailwind config, CSS custom properties, shared constants) before applying any styling\n- [`reka-ui.md`](skills/vue-core/reka-ui.md) — how to explore reka-ui primitive type definitions before use; group roots, value shapes, and standalone vs. group context\n- [`domain-components.md`](skills/vue-core/domain-components.md) — domain-to-UI mapping, modelValue as domain value, state ownership, and naming\n- [`feature-components.md`](skills/vue-core/feature-components.md) — state ownership, child coordination, composable extraction, and data fetching\n- [`views.md`](skills/vue-core/views.md) — page-level composition and route-level concerns\n- [`composable-principles.md`](skills/vue-core/composable-principles.md) — naming, return shape, and patterns\n- [`data-fetching.md`](skills/vue-core/data-fetching.md) — TanStack Query patterns\n- [`forms.md`](skills/vue-core/forms.md) — TanStack Form + Zod patterns\n","readmeFilename":"README.md"}