| name | feature-scaffolding |
| description | BoxLogの新しいFeatureモジュールを作成。stores, hooks, components, types の統一構造を生成。 |
Feature Scaffolding Skill
BoxLogプロジェクトの新しいFeatureモジュールを規約に沿って作成するスキルです。
このスキルを使用するタイミング
以下のキーワードが含まれる場合に自動的に起動:
- 「新しい機能を作成」「feature作成」
- 「〇〇機能を追加」
- 「モジュールを作成」
- 「src/features/xxx を作って」
Feature構造
src/features/{feature-name}/
├── index.ts # Public API(バレルファイル)
├── types/
│ └── index.ts # 型定義
├── stores/
│ └── index.ts # Zustand stores
├── hooks/
│ └── index.ts # カスタムフック
├── components/
│ └── index.ts # UIコンポーネント
├── constants/ # (optional)
│ └── index.ts
└── contexts/ # (optional)
└── {Feature}Context.tsx
作成手順
1. ディレクトリ作成
FEATURE_NAME="your-feature"
mkdir -p src/features/${FEATURE_NAME}/{types,stores,hooks,components}
2. types/index.ts
export interface {Entity} {
id: string
user_id: string
created_at: Date
updated_at: Date
}
export interface Create{Entity}Input {
}
export interface Update{Entity}Input {
}
3. stores/index.ts
export { use{Feature}Store } from './use{Feature}Store'
4. stores/use{Feature}Store.ts
import { create } from 'zustand'
import { devtools, persist } from 'zustand/middleware'
interface {Feature}State {
items: {Entity}[]
addItem: (item: Create{Entity}Input) => Promise<boolean>
updateItem: (id: string, updates: Update{Entity}Input) => Promise<boolean>
deleteItem: (id: string) => Promise<boolean>
getItemById: (id: string) => {Entity} | undefined
}
export const use{Feature}Store = create<{Feature}State>()(
devtools(
persist(
(set, get) => ({
: [],
: (data) => {
},
: (id, updates) => {
},
: (id) => {
},
: {
()..( item. === id)
},
}),
{
: ,
: ({ : state. }),
}
),
{ : }
)
)
5. hooks/index.ts
export { use{Feature}s } from './use-{feature}s'
export { use{Feature}Operations } from './use-{feature}-operations'
6. components/index.ts
export { {Feature}List } from './{Feature}List'
export { {Feature}Item } from './{Feature}Item'
7. index.ts(Public API)
export { } from './components'
export { } from './hooks'
export { use{Feature}Store } from './stores'
export type { } from './types'
命名規則
| 種類 | 命名規則 | 例 |
|---|
| ディレクトリ | kebab-case | user-settings |
| コンポーネント | PascalCase | UserSettingsList |
| フック | camelCase (use prefix) | useUserSettings |
| ストア | camelCase (use prefix) | useUserSettingsStore |
| 型 | PascalCase | UserSettings |
チェックリスト
参考: 既存Feature
src/features/
├── tags/ # 参考実装(最も完成度が高い)
├── plans/ # 複雑なFeatureの例
├── calendar/ # 大規模Featureの例
├── settings/ # シンプルなFeatureの例
└── auth/ # 認証関連