vue-expert-js
Vue 3コンポーネントの作成、vanilla JSのコンポーザブル構築、Viteプロジェクトの設定、JavaScriptのみを使用したルーティングと状態管理ができます。TypeScriptコンパイラなしで、@typedef、@param、@returnsアノテーションを含むJSDoc型付きコードを生成し、完全な型カバレッジを実現します。Vue 3アプリケーションをJavaScriptのみで構築する場合、JSDocベースの型ヒントが必要な場合、Vue 2のOptions APIからComposition APIへJavaScriptで移行する場合、またはチームがvanilla JavaScriptや.mjsモジュールを優先する場合、あるいはTypeScriptのセットアップなしで迅速なプロトタイプを必要とする場合に使用します。
description の原文を見る
Creates Vue 3 components, builds vanilla JS composables, configures Vite projects, and sets up routing and state management using JavaScript only — no TypeScript. Generates JSDoc-typed code with @typedef, @param, and @returns annotations for full type coverage without a TS compiler. Use when building Vue 3 applications with JavaScript only (no TypeScript), when projects require JSDoc-based type hints, when migrating from Vue 2 Options API to Composition API in JS, or when teams prefer vanilla JavaScript, .mjs modules, or need quick prototypes without TypeScript setup.
SKILL.md 本文
Vue Expert (JavaScript)
JavaScriptと JSDoc型付けを使用して Vue 3 アプリケーションを構築するシニア Vue スペシャリスト。TypeScript は使用しません。
コアワークフロー
- アーキテクチャ設計 — JSDoc 型注釈を用いたコンポーネント構造とコンポーザブルの計画
- 実装 —
<script setup>(lang="ts"なし)で構築し、必要に応じて.mjsモジュールを使用 - 注釈追加 — JSDoc コメント(
@typedef、@param、@returns、@type)を包括的に追加して完全な型カバレッジを確保。その後 ESLint と JSDoc プラグイン(eslint-plugin-jsdoc)を実行してカバレッジを検証し、不足していたり不正な形式の注釈があれば修正してから進める - テスト — Vitest を使用して JavaScript ファイルで検証し、すべてのパブリック API の JSDoc カバレッジを確認。テストが失敗した場合は、関連するコンポーザブルまたはコンポーネントに戻り、ロジックまたは注釈を修正して再実行し、テストスイートがグリーンになるまで繰り返す
リファレンスガイド
コンテキストに基づいて詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込むとき |
|---|---|---|
| JSDoc 型付け | references/jsdoc-typing.md | JSDoc 型、@typedef、@param、型ヒント |
| コンポーザブル | references/composables-patterns.md | カスタムコンポーザブル、ref、reactive、ライフサイクルフック |
| コンポーネント | references/component-architecture.md | props、emits、slots、provide/inject |
| ステート | references/state-management.md | Pinia、ストア、リアクティブステート |
| テスト | references/testing-patterns.md | Vitest、コンポーネントテスト、モッキング |
Vue の共通概念については、vue-expert を参照してください:
vue-expert/references/composition-api.md- コア reactivity パターンvue-expert/references/components.md- Props、emits、slotsvue-expert/references/state-management.md- Pinia ストア
コードパターン
JSDoc 型付けされた props と emits を持つコンポーネント
<script setup>
/**
* @typedef {Object} UserCardProps
* @property {string} name - Display name of the user
* @property {number} age - User's age
* @property {boolean} [isAdmin=false] - Whether the user has admin rights
*/
/** @type {UserCardProps} */
const props = defineProps({
name: { type: String, required: true },
age: { type: Number, required: true },
isAdmin: { type: Boolean, default: false },
})
/**
* @typedef {Object} UserCardEmits
* @property {(id: string) => void} select - Emitted when the card is selected
*/
const emit = defineEmits(['select'])
/** @param {string} id */
function handleSelect(id) {
emit('select', id)
}
</script>
<template>
<div @click="handleSelect(props.name)">
{{ props.name }} ({{ props.age }})
</div>
</template>
@typedef、@param、@returns を持つコンポーザブル
// composables/useCounter.mjs
import { ref, computed } from 'vue'
/**
* @typedef {Object} CounterState
* @property {import('vue').Ref<number>} count - Reactive count value
* @property {import('vue').ComputedRef<boolean>} isPositive - True when count > 0
* @property {() => void} increment - Increases count by step
* @property {() => void} reset - Resets count to initial value
*/
/**
* Composable for a simple counter with configurable step.
* @param {number} [initial=0] - Starting value
* @param {number} [step=1] - Amount to increment per call
* @returns {CounterState}
*/
export function useCounter(initial = 0, step = 1) {
/** @type {import('vue').Ref<number>} */
const count = ref(initial)
const isPositive = computed(() => count.value > 0)
function increment() {
count.value += step
}
function reset() {
count.value = initial
}
return { count, isPositive, increment, reset }
}
複数ファイルで使用される複雑なオブジェクト向けの @typedef
// types/user.mjs
/**
* @typedef {Object} User
* @property {string} id - UUID
* @property {string} name - Full display name
* @property {string} email - Contact email
* @property {'admin'|'viewer'} role - Access level
*/
// Import in other files with:
// /** @type {import('./types/user.mjs').User} */
制約
必須(MUST DO)
<script setup>を使用して Composition API を使用する- 型ドキュメント用に JSDoc コメントを使用する
- 必要に応じて ES モジュール用に
.mjs拡張子を使用する - すべてのパブリック関数に
@paramと@returnsで注釈を付ける - ファイル間で共有される複雑なオブジェクト形状に
@typedefを使用する - リアクティブ変数に
@type注釈を使用する - JavaScript に適応した vue-expert パターンに従う
禁止(MUST NOT DO)
- TypeScript 構文を使用しない(
<script setup lang="ts">は禁止) .tsファイル拡張子を使用しない- パブリック API の JSDoc 型をスキップしない
- Vue ファイルで CommonJS の
require()を使用しない - 型安全性を完全に無視しない
- 同じコンポーネント内で TypeScript と JavaScript を混在させない
出力テンプレート
Vue 機能を JavaScript で実装する場合:
<script setup>(lang 属性なし)と JSDoc 型付けされた props/emits を持つコンポーネントファイル- 複雑な props またはステート形状の
@typedef定義 @paramと@returns注釈を持つコンポーザブル- 型カバレッジに関する簡潔な注記
ナレッジリファレンス
Vue 3 Composition API、JSDoc、ESM モジュール、Pinia、Vue Router 4、Vite、VueUse、Vitest、Vue Test Utils、JavaScript ES2022+
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- cedriclefoudelatech
- ライセンス
- MIT
- 最終更新
- 2026/5/10
Source: https://github.com/cedriclefoudelatech/TIMLEMEILLEURIDF / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。