@einja/dev-cli 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/README.md +179 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +49 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/init.d.ts +3 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +243 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/list.d.ts +2 -0
  11. package/dist/commands/list.d.ts.map +1 -0
  12. package/dist/commands/list.js +23 -0
  13. package/dist/commands/list.js.map +1 -0
  14. package/dist/commands/sync.d.ts +7 -0
  15. package/dist/commands/sync.d.ts.map +1 -0
  16. package/dist/commands/sync.js +294 -0
  17. package/dist/commands/sync.js.map +1 -0
  18. package/dist/commands/sync.test.d.ts +2 -0
  19. package/dist/commands/sync.test.d.ts.map +1 -0
  20. package/dist/commands/sync.test.js +593 -0
  21. package/dist/commands/sync.test.js.map +1 -0
  22. package/dist/commands/task-loop.d.ts +11 -0
  23. package/dist/commands/task-loop.d.ts.map +1 -0
  24. package/dist/commands/task-loop.js +81 -0
  25. package/dist/commands/task-loop.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/file-system.d.ts +39 -0
  31. package/dist/lib/file-system.d.ts.map +1 -0
  32. package/dist/lib/file-system.js +79 -0
  33. package/dist/lib/file-system.js.map +1 -0
  34. package/dist/lib/mcp-config.d.ts +43 -0
  35. package/dist/lib/mcp-config.d.ts.map +1 -0
  36. package/dist/lib/mcp-config.js +109 -0
  37. package/dist/lib/mcp-config.js.map +1 -0
  38. package/dist/lib/mcp-config.test.d.ts +2 -0
  39. package/dist/lib/mcp-config.test.d.ts.map +1 -0
  40. package/dist/lib/mcp-config.test.js +285 -0
  41. package/dist/lib/mcp-config.test.js.map +1 -0
  42. package/dist/lib/merger.d.ts +41 -0
  43. package/dist/lib/merger.d.ts.map +1 -0
  44. package/dist/lib/merger.js +164 -0
  45. package/dist/lib/merger.js.map +1 -0
  46. package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
  47. package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
  48. package/dist/lib/preset-update/cli-repo-detector.js +83 -0
  49. package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
  50. package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
  51. package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
  52. package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
  53. package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
  54. package/dist/lib/preset-update/file-copier.d.ts +59 -0
  55. package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
  56. package/dist/lib/preset-update/file-copier.js +220 -0
  57. package/dist/lib/preset-update/file-copier.js.map +1 -0
  58. package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
  59. package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
  60. package/dist/lib/preset-update/file-copier.test.js +297 -0
  61. package/dist/lib/preset-update/file-copier.test.js.map +1 -0
  62. package/dist/lib/preset-update/preset-finder.d.ts +39 -0
  63. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
  64. package/dist/lib/preset-update/preset-finder.js +92 -0
  65. package/dist/lib/preset-update/preset-finder.js.map +1 -0
  66. package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
  67. package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
  68. package/dist/lib/preset-update/preset-finder.test.js +128 -0
  69. package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
  70. package/dist/lib/preset.d.ts +14 -0
  71. package/dist/lib/preset.d.ts.map +1 -0
  72. package/dist/lib/preset.js +52 -0
  73. package/dist/lib/preset.js.map +1 -0
  74. package/dist/lib/sync/backup-manager.d.ts +50 -0
  75. package/dist/lib/sync/backup-manager.d.ts.map +1 -0
  76. package/dist/lib/sync/backup-manager.js +117 -0
  77. package/dist/lib/sync/backup-manager.js.map +1 -0
  78. package/dist/lib/sync/backup-manager.test.d.ts +2 -0
  79. package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
  80. package/dist/lib/sync/backup-manager.test.js +155 -0
  81. package/dist/lib/sync/backup-manager.test.js.map +1 -0
  82. package/dist/lib/sync/batch-processor.d.ts +27 -0
  83. package/dist/lib/sync/batch-processor.d.ts.map +1 -0
  84. package/dist/lib/sync/batch-processor.js +46 -0
  85. package/dist/lib/sync/batch-processor.js.map +1 -0
  86. package/dist/lib/sync/batch-processor.test.d.ts +2 -0
  87. package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
  88. package/dist/lib/sync/batch-processor.test.js +110 -0
  89. package/dist/lib/sync/batch-processor.test.js.map +1 -0
  90. package/dist/lib/sync/category-validator.d.ts +36 -0
  91. package/dist/lib/sync/category-validator.d.ts.map +1 -0
  92. package/dist/lib/sync/category-validator.js +46 -0
  93. package/dist/lib/sync/category-validator.js.map +1 -0
  94. package/dist/lib/sync/category-validator.test.d.ts +2 -0
  95. package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
  96. package/dist/lib/sync/category-validator.test.js +89 -0
  97. package/dist/lib/sync/category-validator.test.js.map +1 -0
  98. package/dist/lib/sync/conflict-reporter.d.ts +57 -0
  99. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
  100. package/dist/lib/sync/conflict-reporter.js +81 -0
  101. package/dist/lib/sync/conflict-reporter.js.map +1 -0
  102. package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
  103. package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
  104. package/dist/lib/sync/conflict-reporter.test.js +132 -0
  105. package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
  106. package/dist/lib/sync/diff-engine.d.ts +28 -0
  107. package/dist/lib/sync/diff-engine.d.ts.map +1 -0
  108. package/dist/lib/sync/diff-engine.js +118 -0
  109. package/dist/lib/sync/diff-engine.js.map +1 -0
  110. package/dist/lib/sync/diff-engine.test.d.ts +2 -0
  111. package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
  112. package/dist/lib/sync/diff-engine.test.js +133 -0
  113. package/dist/lib/sync/diff-engine.test.js.map +1 -0
  114. package/dist/lib/sync/file-filter.d.ts +40 -0
  115. package/dist/lib/sync/file-filter.d.ts.map +1 -0
  116. package/dist/lib/sync/file-filter.js +171 -0
  117. package/dist/lib/sync/file-filter.js.map +1 -0
  118. package/dist/lib/sync/file-filter.test.d.ts +2 -0
  119. package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
  120. package/dist/lib/sync/file-filter.test.js +179 -0
  121. package/dist/lib/sync/file-filter.test.js.map +1 -0
  122. package/dist/lib/sync/hash-cache.d.ts +34 -0
  123. package/dist/lib/sync/hash-cache.d.ts.map +1 -0
  124. package/dist/lib/sync/hash-cache.js +51 -0
  125. package/dist/lib/sync/hash-cache.js.map +1 -0
  126. package/dist/lib/sync/hash-cache.test.d.ts +2 -0
  127. package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
  128. package/dist/lib/sync/hash-cache.test.js +110 -0
  129. package/dist/lib/sync/hash-cache.test.js.map +1 -0
  130. package/dist/lib/sync/integration.test.d.ts +2 -0
  131. package/dist/lib/sync/integration.test.d.ts.map +1 -0
  132. package/dist/lib/sync/integration.test.js +317 -0
  133. package/dist/lib/sync/integration.test.js.map +1 -0
  134. package/dist/lib/sync/marker-processor.d.ts +54 -0
  135. package/dist/lib/sync/marker-processor.d.ts.map +1 -0
  136. package/dist/lib/sync/marker-processor.js +208 -0
  137. package/dist/lib/sync/marker-processor.js.map +1 -0
  138. package/dist/lib/sync/marker-processor.test.d.ts +2 -0
  139. package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
  140. package/dist/lib/sync/marker-processor.test.js +245 -0
  141. package/dist/lib/sync/marker-processor.test.js.map +1 -0
  142. package/dist/lib/sync/metadata-manager.d.ts +46 -0
  143. package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
  144. package/dist/lib/sync/metadata-manager.js +129 -0
  145. package/dist/lib/sync/metadata-manager.js.map +1 -0
  146. package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
  147. package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
  148. package/dist/lib/sync/metadata-manager.test.js +137 -0
  149. package/dist/lib/sync/metadata-manager.test.js.map +1 -0
  150. package/dist/lib/sync/performance.test.d.ts +2 -0
  151. package/dist/lib/sync/performance.test.d.ts.map +1 -0
  152. package/dist/lib/sync/performance.test.js +126 -0
  153. package/dist/lib/sync/performance.test.js.map +1 -0
  154. package/dist/types/index.d.ts +59 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/types/index.js +2 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/types/preset-update.d.ts +106 -0
  159. package/dist/types/preset-update.d.ts.map +1 -0
  160. package/dist/types/preset-update.js +5 -0
  161. package/dist/types/preset-update.js.map +1 -0
  162. package/dist/types/sync.d.ts +169 -0
  163. package/dist/types/sync.d.ts.map +1 -0
  164. package/dist/types/sync.js +19 -0
  165. package/dist/types/sync.js.map +1 -0
  166. package/package.json +72 -0
  167. package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
  168. package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
  169. package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
  170. package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
  171. package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
  172. package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
  173. package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
  174. package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
  175. package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
  176. package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
  177. package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
  178. package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
  179. package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
  180. package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
  181. package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
  182. package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
  183. package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
  184. package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
  185. package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
  186. package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
  187. package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
  188. package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
  189. package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
  190. package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
  191. package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
  192. package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
  193. package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
  194. package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
  195. package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
  196. package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
  197. package/presets/minimal/.claude/settings.json +174 -0
  198. package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
  199. package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
  200. package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
  201. package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
  202. package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
  203. package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
  204. package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
  205. package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
  206. package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
  207. package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
  208. package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
  209. package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
  210. package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
  211. package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
  212. package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
  213. package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
  214. package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
  215. package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
  216. package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
  217. package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
  218. package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
  219. package/presets/minimal/preset.yaml +111 -0
  220. package/presets/minimal/symlinks.json +45 -0
  221. package/scaffolds/.mcp.json +45 -0
  222. package/scaffolds/CLAUDE.md.template +318 -0
  223. package/scaffolds/steering/README.md +170 -0
  224. package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
  225. package/scaffolds/steering/architecture.md +481 -0
  226. package/scaffolds/steering/branch-strategy.md +362 -0
  227. package/scaffolds/steering/commit-rules.md +217 -0
  228. package/scaffolds/steering/db-schema-design.md +609 -0
  229. package/scaffolds/steering/development/api-development.md +783 -0
  230. package/scaffolds/steering/development/backend-architecture.md +731 -0
  231. package/scaffolds/steering/development/frontend-development.md +1537 -0
  232. package/scaffolds/steering/development/review-guidelines.md +365 -0
  233. package/scaffolds/steering/development/testing-strategy.md +819 -0
  234. package/scaffolds/steering/development-workflow.md +429 -0
  235. package/scaffolds/steering/infrastructure/deployment.md +277 -0
  236. package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
  237. package/scaffolds/steering/product.md +540 -0
  238. package/scaffolds/steering/task-management.md +367 -0
  239. package/templates/README.md +159 -0
  240. package/templates/design-simple.md.template +172 -0
  241. package/templates/design.md.template +327 -0
  242. package/templates/qa-test.md.template +125 -0
  243. package/templates/requirements.md.template +254 -0
@@ -0,0 +1,327 @@
1
+ # [機能名] 設計書
2
+
3
+ <!-- このテンプレートは新規タスクの設計書作成時に使用してください -->
4
+
5
+ ## システムアーキテクチャ
6
+
7
+ ### システム構成図
8
+
9
+ ```mermaid
10
+ graph TD
11
+ A[コンポーネントA] --> B[コンポーネントB]
12
+ B --> C[コンポーネントC]
13
+ ```
14
+
15
+ ### データフロー
16
+
17
+ ```mermaid
18
+ sequenceDiagram
19
+ participant Client
20
+ participant Server
21
+ participant Database
22
+
23
+ Client->>Server: リクエスト
24
+ Server->>Database: データ取得
25
+ Database->>Server: データ返却
26
+ Server->>Client: レスポンス
27
+ ```
28
+
29
+ ## データモデル
30
+
31
+ ### ERD(Entity Relationship Diagram)
32
+
33
+ ```mermaid
34
+ erDiagram
35
+ USER ||--o{ ORDER : places
36
+ USER {
37
+ string id PK
38
+ string name
39
+ string email
40
+ }
41
+ ORDER {
42
+ string id PK
43
+ string userId FK
44
+ datetime createdAt
45
+ }
46
+ ```
47
+
48
+ ### Prismaスキーマ
49
+
50
+ ```prisma
51
+ // 主要なデータモデルを記載
52
+
53
+ model User {
54
+ id String @id @default(cuid())
55
+ name String
56
+ email String @unique
57
+ createdAt DateTime @default(now())
58
+ updatedAt DateTime @updatedAt
59
+ }
60
+ ```
61
+
62
+ ## API仕様
63
+
64
+ ### エンドポイント一覧
65
+
66
+ | メソッド | エンドポイント | 説明 | 認証 |
67
+ |---------|--------------|------|------|
68
+ | POST | /api/resource | リソース作成 | 必要 |
69
+ | GET | /api/resource/:id | リソース取得 | 必要 |
70
+ | PUT | /api/resource/:id | リソース更新 | 必要 |
71
+ | DELETE | /api/resource/:id | リソース削除 | 必要 |
72
+
73
+ ### API詳細
74
+
75
+ #### POST /api/resource
76
+
77
+ **リクエスト**:
78
+ ```typescript
79
+ {
80
+ "field1": "value1",
81
+ "field2": "value2"
82
+ }
83
+ ```
84
+
85
+ **レスポンス(成功時)**:
86
+ ```typescript
87
+ {
88
+ "success": true,
89
+ "data": {
90
+ "id": "resource_id",
91
+ "field1": "value1",
92
+ "field2": "value2",
93
+ "createdAt": "2024-01-01T00:00:00Z"
94
+ }
95
+ }
96
+ ```
97
+
98
+ **レスポンス(エラー時)**:
99
+ ```typescript
100
+ {
101
+ "success": false,
102
+ "error": {
103
+ "code": "ERROR_CODE",
104
+ "message": "エラーメッセージ"
105
+ }
106
+ }
107
+ ```
108
+
109
+ ### エラーハンドリング
110
+
111
+ | HTTPステータス | エラーコード | 説明 | 対処方法 |
112
+ |--------------|------------|------|---------|
113
+ | 400 | INVALID_REQUEST | リクエストが不正 | リクエストパラメータを確認 |
114
+ | 401 | UNAUTHORIZED | 認証エラー | 認証情報を確認 |
115
+ | 403 | FORBIDDEN | アクセス権限なし | 権限を確認 |
116
+ | 404 | NOT_FOUND | リソースが見つからない | リソースの存在を確認 |
117
+ | 429 | RATE_LIMIT_EXCEEDED | レート制限超過 | 時間を置いて再試行 |
118
+ | 500 | INTERNAL_ERROR | サーバーエラー | サポートに連絡 |
119
+
120
+ ## フロントエンドコンポーネント構造
121
+
122
+ ### コンポーネント階層
123
+
124
+ ```
125
+ Page
126
+ ├── Layout
127
+ │ ├── Header
128
+ │ ├── Sidebar
129
+ │ └── Footer
130
+ └── Content
131
+ ├── ComponentA
132
+ ├── ComponentB
133
+ └── ComponentC
134
+ ```
135
+
136
+ ### 主要コンポーネント仕様
137
+
138
+ #### ComponentA
139
+
140
+ **目的**: <!-- コンポーネントの目的を記載 -->
141
+
142
+ **Props**:
143
+ ```typescript
144
+ interface ComponentAProps {
145
+ prop1: string;
146
+ prop2: number;
147
+ onAction?: () => void;
148
+ }
149
+ ```
150
+
151
+ **状態管理**:
152
+ - useState: ローカル状態
153
+ - useContext: グローバル状態(該当する場合)
154
+
155
+ **主要な振る舞い**:
156
+ 1. 振る舞い1の説明
157
+ 2. 振る舞い2の説明
158
+
159
+ ### 状態管理戦略
160
+
161
+ **使用ライブラリ**: <!-- Zustand / React Context / その他 -->
162
+
163
+ **状態の種類**:
164
+ - ローカル状態: コンポーネント内で完結する状態
165
+ - 共有状態: 複数コンポーネント間で共有する状態
166
+ - サーバー状態: APIから取得するデータ
167
+
168
+ ## 技術選定
169
+
170
+ ### 使用技術スタック
171
+
172
+ | カテゴリ | 技術 | バージョン | 選定理由 |
173
+ |---------|-----|-----------|---------|
174
+ | フレームワーク | Next.js | 15.x | App Routerの活用、パフォーマンス |
175
+ | データベース | PostgreSQL | 16.x | リレーショナルデータモデルに適合 |
176
+ | ORM | Prisma | 5.x | 型安全性、開発効率 |
177
+ | 認証 | NextAuth.js | 5.x | 既存システムとの統合 |
178
+ | UI | Panda CSS + shadcn/ui | latest | デザインシステムとの統合 |
179
+
180
+ ### ライブラリ選定
181
+
182
+ #### [ライブラリ名]
183
+
184
+ **用途**: <!-- ライブラリの用途を記載 -->
185
+
186
+ **選定理由**:
187
+ - 理由1
188
+ - 理由2
189
+
190
+ **代替案との比較**:
191
+ - 代替案A: <!-- 採用しなかった理由 -->
192
+ - 代替案B: <!-- 採用しなかった理由 -->
193
+
194
+ ## セキュリティ考慮事項
195
+
196
+ ### 認証・認可
197
+
198
+ **認証方式**: <!-- JWT / Session / その他 -->
199
+
200
+ **認可モデル**: <!-- RBAC / ABAC / その他 -->
201
+
202
+ **実装方針**:
203
+ - 認証フロー: <!-- 認証フローを記載 -->
204
+ - トークン管理: <!-- トークン管理方法を記載 -->
205
+ - セッション管理: <!-- セッション管理方法を記載 -->
206
+
207
+ ### データ保護
208
+
209
+ **暗号化**:
210
+ - 通信: TLS 1.3
211
+ - 保存データ: <!-- 暗号化方法を記載 -->
212
+ - パスワード: bcrypt(コスト係数: 12)
213
+
214
+ **入力検証**:
215
+ - クライアントサイド: <!-- 検証方法を記載 -->
216
+ - サーバーサイド: <!-- 検証方法を記載 -->
217
+
218
+ ### 脆弱性対策
219
+
220
+ | 脆弱性 | 対策 |
221
+ |--------|------|
222
+ | XSS | エスケープ処理、Content Security Policy |
223
+ | CSRF | トークン検証 |
224
+ | SQLインジェクション | Prismaによるパラメータ化クエリ |
225
+ | 機密情報漏洩 | 環境変数による管理 |
226
+
227
+ ## パフォーマンス考慮事項
228
+
229
+ ### パフォーマンス目標
230
+
231
+ | 指標 | 目標値 | 測定方法 |
232
+ |------|--------|---------|
233
+ | First Contentful Paint | < 1.8秒 | Lighthouse |
234
+ | Time to Interactive | < 3.8秒 | Lighthouse |
235
+ | API レスポンス | < 200ms | サーバーログ |
236
+ | データベースクエリ | < 100ms | Prisma logs |
237
+
238
+ ### 最適化戦略
239
+
240
+ **フロントエンド**:
241
+ - React.memo / useMemo / useCallback による再レンダリング最適化
242
+ - 画像最適化(Next.js Image コンポーネント)
243
+ - コード分割(動的インポート)
244
+ - キャッシング戦略
245
+
246
+ **バックエンド**:
247
+ - データベースインデックスの最適化
248
+ - N+1問題の回避(Prisma include/select)
249
+ - レスポンスキャッシング
250
+ - CDN活用
251
+
252
+ ### データベース設計
253
+
254
+ **インデックス設計**:
255
+ ```sql
256
+ -- 主要なインデックスを記載
257
+ CREATE INDEX idx_user_email ON User(email);
258
+ CREATE INDEX idx_order_userId ON Order(userId);
259
+ ```
260
+
261
+ **クエリ最適化**:
262
+ - よく使われるクエリパターンを記載
263
+ - パフォーマンスボトルネックへの対策
264
+
265
+ ## テスト戦略
266
+
267
+ ### テストレベル
268
+
269
+ | レベル | 対象 | ツール | カバレッジ目標 |
270
+ |--------|------|--------|--------------|
271
+ | Unit | ロジック、ユーティリティ | Vitest | 80%以上 |
272
+ | Integration | API、データベース | Vitest | 70%以上 |
273
+ | E2E | ユーザーシナリオ | Playwright | クリティカルパス |
274
+
275
+ ### テストケース設計
276
+
277
+ **単体テスト**:
278
+ - 正常系
279
+ - 異常系
280
+ - 境界値
281
+
282
+ **統合テスト**:
283
+ - APIエンドポイント
284
+ - データベース操作
285
+ - 認証・認可
286
+
287
+ **E2Eテスト**:
288
+ - クリティカルパス(requirements.mdの受け入れ基準に基づく)
289
+ - ユーザーシナリオ
290
+
291
+ ## マイグレーション戦略(該当する場合)
292
+
293
+ ### データ移行
294
+
295
+ **移行対象**:
296
+ <!-- 移行するデータを記載 -->
297
+
298
+ **移行手順**:
299
+ 1. 手順1
300
+ 2. 手順2
301
+ 3. 手順3
302
+
303
+ **ロールバック手順**:
304
+ <!-- ロールバック方法を記載 -->
305
+
306
+ ### デプロイ戦略
307
+
308
+ **デプロイフロー**:
309
+ 1. ステージング環境でのテスト
310
+ 2. データベースマイグレーション
311
+ 3. アプリケーションデプロイ
312
+ 4. 動作確認
313
+
314
+ **モニタリング**:
315
+ - エラーログ監視
316
+ - パフォーマンスメトリクス
317
+ - ユーザー行動分析
318
+
319
+ ## 参考資料
320
+
321
+ ### 関連ドキュメント
322
+ - 要件定義書: `requirements.md`
323
+ - QAテスト: `qa-tests/`
324
+
325
+ ### 外部リソース
326
+ - [参考ドキュメント1のタイトル](URL)
327
+ - [参考ドキュメント2のタイトル](URL)
@@ -0,0 +1,125 @@
1
+ # Phase X-Y: [タスクグループ名] QAテスト結果
2
+
3
+ ## テスト対象タスク
4
+ - **タスクID**: X.Y.1〜X.Y.N
5
+ - **タスク名**: [タスクグループ名]
6
+ - **実装日**: YYYY-MM-DD
7
+ - **テスター**: task-qa
8
+ - **最終更新**: YYYY-MM-DD HH:MM
9
+
10
+ ## テストサマリー
11
+ | ステータス | 件数 |
12
+ |----------|-----|
13
+ | ✅ PASS | 0 |
14
+ | ❌ FAIL | 0 |
15
+ | ⚠️ PARTIAL | 0 |
16
+
17
+ ---
18
+
19
+ ## 必須自動テスト結果
20
+
21
+ ### 実行コマンド
22
+ ```bash
23
+ # 1. ユニットテスト
24
+ pnpm test
25
+
26
+ # 2. E2Eテスト(Playwrightコードによる自動テスト)
27
+ pnpm test:e2e
28
+
29
+ # 3. Lintチェック
30
+ pnpm lint
31
+
32
+ # 4. ビルドチェック
33
+ pnpm build
34
+
35
+ # 5. 型チェック(TypeScript)
36
+ pnpm typecheck
37
+ ```
38
+
39
+ > **Note**: E2Eテストは `pnpm test:e2e` で実行されるPlaywrightコードテストを指します。
40
+ > Playwright MCPを使用したブラウザテスト(Browser検証レベル)は、下記「タスク X.Y.N」セクションのテストシナリオで実施します。
41
+ > 詳細は `docs/einja/steering/terminology.md` を参照してください。
42
+
43
+ ### 結果
44
+ | テスト項目 | ステータス | 備考 |
45
+ |----------|----------|------|
46
+ | ユニットテスト | - | - |
47
+ | E2Eテスト | - | - |
48
+ | Lintチェック | - | - |
49
+ | ビルドチェック | - | - |
50
+ | 型チェック | - | - |
51
+
52
+ **重要**: 上記のいずれか1つでも失敗した場合、全体ステータスは**❌ FAIL**となります。
53
+
54
+ ---
55
+
56
+ ## タスク X.Y.1: [タスク名]
57
+
58
+ ### 受け入れ条件(requirements.md から抽出)
59
+ - AC1.1: Given [前提条件] When [操作] Then [期待結果]
60
+ - AC1.2: Given [前提条件] When [操作] Then [期待結果]
61
+
62
+ ### テストシナリオ
63
+
64
+ | No | 手順 | 確認項目 | 期待値 | 結果 | 備考 |
65
+ |----|------|---------|--------|------|------|
66
+ | 1 | [操作内容] | [確認する項目] | [期待される結果] | - | - |
67
+ | 2 | [操作内容] | [確認する項目] | [期待される結果] | - | - |
68
+
69
+ **重要**:
70
+ - 手順は自然言語で簡潔に記述(例: 「ログイン画面に移動」「メールアドレス入力: test@example.com」)
71
+ - 「-」は手順のみで確認項目がない場合に使用
72
+ - 備考欄はテストの区切りや注意事項を記載
73
+
74
+ ### 全体ステータス: - (未実施)
75
+
76
+ #### 主な問題点
77
+ - (実施後に記載)
78
+
79
+ #### 対応策
80
+ - (実施後に記載)
81
+
82
+ #### エビデンス
83
+ - ログファイル: `qa-tests/phaseX/evidence/X-Y-1-*.log`
84
+ - スクリーンショット: `qa-tests/phaseX/evidence/X-Y-1-*.png`
85
+
86
+ ---
87
+
88
+ ## 統合テスト結果サマリー
89
+
90
+ ### フェーズ X-Y 全体結果
91
+ - **全体ステータス**: - (未実施)
92
+ - **完了タスク**: 0/N
93
+ - **テスト合格率**: 0% (0/0)
94
+
95
+ ### 修正が必要な項目
96
+ - (実施後に記載)
97
+
98
+ ### 次フェーズへの引き継ぎ事項
99
+ - (実施後に記載)
100
+
101
+ ### 改善提案
102
+ - (実施後に記載)
103
+
104
+ ---
105
+
106
+ ## 報告と対応
107
+
108
+ ### 失敗原因分類
109
+ <!-- 該当する分類にチェック -->
110
+ - [ ] **A: 実装ミス** → task-executerへ差し戻し
111
+ - [ ] **B: 要件齟齬** → requirements.md修正 → task-executerへ差し戻し
112
+ - [ ] **C: 設計不備** → design.md修正 → task-executerへ差し戻し
113
+ - [ ] **D: 環境問題** → qa再実行
114
+
115
+ ### task-executerへの差し戻し(該当する場合)
116
+ 以下の項目について修正が必要:
117
+ - (実施後に記載)
118
+
119
+ ### 修正優先度
120
+ - **即座対応**: (実施後に記載)
121
+ - **1週間以内**: (実施後に記載)
122
+ - **2週間以内**: (実施後に記載)
123
+
124
+ ### 回避策(該当する場合)
125
+ - (実施後に記載)
@@ -0,0 +1,254 @@
1
+ # [機能名] 要件定義書
2
+
3
+ <!-- このテンプレートは新規タスクの要件定義書作成時に使用してください -->
4
+ <!-- QAエージェント(task-qa)は「受け入れ基準(Acceptance Criteria)」セクションを参照してテストシナリオを作成します -->
5
+
6
+ ## 概要
7
+ <!-- 1-2段落で機能の概要を説明 -->
8
+ <!-- 例: パスワードレス認証を実現するマジックリンク機能を実装し、ユーザーのログイン体験を向上させます。 -->
9
+
10
+ ## AS-IS(現状)
11
+
12
+ ### 現在の実装状況
13
+ <!-- 現在の実装状況を記載 -->
14
+
15
+ ### 現状の課題
16
+ <!-- 現在抱えている問題点や課題を記載 -->
17
+
18
+ ## TO-BE(目標状態)
19
+
20
+ ### 実現したい姿
21
+ <!-- この機能で実現したい理想的な状態を記載 -->
22
+
23
+ ### 期待される改善
24
+ <!-- 具体的な改善効果を記載(できれば数値目標) -->
25
+
26
+ ## ビジネス価値
27
+ - **問題**: <!-- 解決すべき問題を記載 -->
28
+ - **解決策**: <!-- その問題に対する解決策を記載 -->
29
+ - **期待効果**: <!-- 期待される効果を記載 -->
30
+
31
+ ## スコープ
32
+ ### 含まれるもの
33
+ <!-- このタスクで実装する機能のリスト -->
34
+ - 機能A
35
+ - 機能B
36
+ - 機能C
37
+
38
+ ### 含まれないもの
39
+ <!-- 明示的に対象外とする機能のリスト -->
40
+ - 機能X
41
+ - 機能Y
42
+
43
+ ## 画面要件(該当する場合)
44
+
45
+ ### 画面一覧と目的
46
+
47
+ #### 1. [画面名]
48
+ **目的**: <!-- この画面の目的を記載 -->
49
+
50
+ **主要UI要素**:
51
+ - UI要素1
52
+ - UI要素2
53
+
54
+ **表示条件**:
55
+ <!-- この画面が表示される条件を記載 -->
56
+
57
+ ### 画面遷移フロー(必要に応じてMermaid図を使用)
58
+
59
+ ```mermaid
60
+ graph TD
61
+ A[画面A] -->|操作| B[画面B]
62
+ B -->|操作| C[画面C]
63
+ ```
64
+
65
+ ### UIインタラクション要件
66
+
67
+ #### フォーム入力とバリデーション
68
+ **要件**:
69
+ <!-- フォームの動作要件を記載 -->
70
+
71
+ **バリデーションルール**:
72
+ <!-- バリデーションルールを記載 -->
73
+
74
+ #### ボタン操作
75
+ **要件**:
76
+ <!-- ボタンの動作要件を記載 -->
77
+
78
+ #### ローディング状態
79
+ **要件**:
80
+ <!-- ローディング状態の動作要件を記載 -->
81
+
82
+ #### エラーメッセージ表示
83
+ **要件**:
84
+ <!-- エラーメッセージの表示要件を記載 -->
85
+
86
+ #### 成功フィードバック
87
+ **要件**:
88
+ <!-- 成功フィードバックの表示要件を記載 -->
89
+
90
+ ## ユーザーストーリー
91
+
92
+ ### Story 1: [ストーリー名]
93
+ **As a** [ユーザー種別]
94
+ **I want to** [実現したいこと]
95
+ **So that** [ビジネス価値]
96
+
97
+ #### AC(受け入れ基準)の書き方
98
+
99
+ **AC番号体系**:
100
+ - AC1.1, AC1.2, ... : Story 1 の受け入れ基準
101
+ - AC2.1, AC2.2, ... : Story 2 の受け入れ基準
102
+ - ストーリー番号.連番 の形式で一意に識別
103
+
104
+ **検証レベル**:
105
+ - **Unit**: 単体テスト(task-executer が実装・実行)
106
+ - 例: バリデーション関数、ユーティリティ関数
107
+ - **Integration**: 統合テスト(task-qa が実行)
108
+ - 例: APIエンドポイント、データベース連携
109
+ - **E2E**: Playwrightコードによる自動テスト(CI/開発者 が実行)
110
+ - 例: `pnpm test:e2e` で実行されるリグレッションテスト
111
+ - **Browser**: Playwright MCPによるブラウザテスト(task-qa が実行)
112
+ - 例: 画面フロー、UIインタラクション確認
113
+
114
+ **検証者**:
115
+ - **task-executer**: 実装フェーズで Unit テストを作成・実行
116
+ - **CI/開発者**: E2E テスト(`pnpm test:e2e`)を実行
117
+ - **task-qa**: QA フェーズで Integration/Browser テストを実行
118
+
119
+ 詳細は `docs/einja/steering/terminology.md` および `docs/einja/steering/acceptance-criteria-and-qa-guide.md` を参照してください。
120
+
121
+ #### 受け入れ基準
122
+
123
+ <!-- ⚠️ 必須セクション: QAエージェント(task-qa)はこのセクションを参照してテストシナリオを作成します -->
124
+ <!-- AC(Acceptance Criteria)は AC番号、検証レベル、Given/When/Then を必ず含めてください -->
125
+
126
+ ##### 機能要件
127
+ <!-- Given/When/Then形式で記載 -->
128
+ <!-- 振る舞い・入力・観測可能な結果をセットで書く -->
129
+ <!-- ビジネス価値やユーザー影響が分かる文脈を添える -->
130
+ <!-- 正常系に加え、代表的な異常・境界ケースを列挙する -->
131
+ <!-- 観測手段(API レスポンス、イベント、DB 状態など)を明示する -->
132
+
133
+ - [ ] **AC1.1** [検証レベル: Unit] [検証者: task-executer]
134
+ Given: [前提条件]
135
+ When: [実行する操作]
136
+ Then: [期待される結果]
137
+
138
+ - [ ] **AC1.2** [検証レベル: Integration] [検証者: task-qa]
139
+ Given: [前提条件]
140
+ When: [実行する操作]
141
+ Then: [期待される結果]
142
+
143
+ - [ ] **AC1.3** [検証レベル: E2E] [検証者: task-qa]
144
+ Given: [前提条件(異常系または境界ケース)]
145
+ When: [実行する操作]
146
+ Then: [期待される結果]
147
+
148
+ ##### UIインタラクション要件
149
+ <!-- 画面操作に関する受け入れ基準(該当する場合) -->
150
+ <!-- Browser検証レベルはPlaywright MCPによるブラウザテストで確認します -->
151
+
152
+ - [ ] **AC1.4** [検証レベル: Browser] [検証者: task-qa]
153
+ Given: [前提条件(画面が表示されている状態)]
154
+ When: [ユーザー操作]
155
+ Then: [期待される画面の振る舞い]
156
+
157
+ - [ ] **AC1.5** [検証レベル: Browser] [検証者: task-qa]
158
+ Given: [前提条件]
159
+ When: [ユーザー操作]
160
+ Then: [期待される画面の振る舞い]
161
+
162
+ #### 実装の優先順位
163
+ <!-- P0 (必須) / P1 (重要) / P2 (推奨) のいずれかを選択 -->
164
+ P0 (必須)
165
+
166
+ ---
167
+
168
+ ### Story 2: [ストーリー名]
169
+ **As a** [ユーザー種別]
170
+ **I want to** [実現したいこと]
171
+ **So that** [ビジネス価値]
172
+
173
+ #### 受け入れ基準
174
+
175
+ <!-- ⚠️ 必須セクション: QAエージェント(task-qa)はこのセクションを参照してテストシナリオを作成します -->
176
+ <!-- AC(Acceptance Criteria)は AC番号、検証レベル、Given/When/Then を必ず含めてください -->
177
+
178
+ ##### 機能要件
179
+
180
+ - [ ] **AC2.1** [検証レベル: Unit] [検証者: task-executer]
181
+ Given: [前提条件]
182
+ When: [実行する操作]
183
+ Then: [期待される結果]
184
+
185
+ - [ ] **AC2.2** [検証レベル: Integration] [検証者: task-qa]
186
+ Given: [前提条件]
187
+ When: [実行する操作]
188
+ Then: [期待される結果]
189
+
190
+ ##### UIインタラクション要件
191
+ <!-- 画面操作に関する受け入れ基準(該当する場合) -->
192
+ <!-- Browser検証レベルはPlaywright MCPによるブラウザテストで確認します -->
193
+
194
+ - [ ] **AC2.3** [検証レベル: Browser] [検証者: task-qa]
195
+ Given: [前提条件]
196
+ When: [ユーザー操作]
197
+ Then: [期待される画面の振る舞い]
198
+
199
+ #### 実装の優先順位
200
+ P0 (必須) / P1 (重要) / P2 (推奨)
201
+
202
+ ---
203
+
204
+ ## 詳細なビジネス要件(該当する場合)
205
+
206
+ ### [要件カテゴリ名]
207
+ #### [要件サブカテゴリ名]
208
+ **要件内容**:
209
+ <!-- 要件の詳細を記載 -->
210
+
211
+ **OK例**:
212
+ <!-- 正しい実装例を記載 -->
213
+
214
+ **NG例**:
215
+ <!-- 誤った実装例を記載 -->
216
+
217
+ ## 非機能要件
218
+
219
+ ### パフォーマンス
220
+ <!-- パフォーマンス要件を記載 -->
221
+ - 処理A: XXms以内
222
+ - 処理B: YY秒以内
223
+
224
+ ### セキュリティ
225
+ <!-- セキュリティ要件を記載 -->
226
+
227
+ ### 可用性
228
+ <!-- 可用性要件を記載 -->
229
+
230
+ ### アクセシビリティ
231
+ <!-- アクセシビリティ要件を記載(該当する場合) -->
232
+
233
+ ## 技術的制約
234
+ <!-- 技術的制約を記載 -->
235
+
236
+ ## 依存関係
237
+ <!-- 外部サービスやライブラリへの依存関係を記載 -->
238
+
239
+ ## リスクと対策
240
+ | リスク | 影響度 | 発生確率 | 対策 |
241
+ |--------|--------|----------|------|
242
+ | リスク1 | 高/中/低 | 高/中/低 | 対策内容 |
243
+ | リスク2 | 高/中/低 | 高/中/低 | 対策内容 |
244
+
245
+ ## 成功指標
246
+ <!-- 機能の成功を測定する指標を記載 -->
247
+ - 指標1: 目標値
248
+ - 指標2: 目標値
249
+
250
+ ## タイムライン
251
+ <!-- 実装フェーズを記載(該当する場合) -->
252
+ - Phase 1: 基本機能(Story 1, 2)
253
+ - Phase 2: 高度な機能(Story 3)
254
+ - Phase 3: 分析とモニタリング機能