takt 0.32.0 → 0.32.2
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.
- package/builtins/en/facets/instructions/e2e-coverage-implement.md +26 -0
- package/builtins/en/facets/instructions/e2e-coverage-plan.md +38 -0
- package/builtins/en/facets/instructions/e2e-coverage-supervise.md +21 -0
- package/builtins/en/facets/instructions/fix.md +4 -0
- package/builtins/en/facets/instructions/loop-monitor-ai-fix.md +4 -3
- package/builtins/en/facets/instructions/loop-monitor-reviewers-fix.md +4 -2
- package/builtins/en/facets/instructions/plan.md +2 -0
- package/builtins/en/facets/instructions/review-frontend.md +9 -0
- package/builtins/en/facets/instructions/security-audit-plan.md +12 -0
- package/builtins/en/facets/instructions/security-audit-review.md +22 -0
- package/builtins/en/facets/instructions/security-audit-supervise.md +20 -0
- package/builtins/en/facets/instructions/security-audit-team-leader.md +27 -0
- package/builtins/en/facets/knowledge/e2e-testing.md +89 -0
- package/builtins/en/facets/knowledge/frontend.md +46 -0
- package/builtins/en/facets/knowledge/react.md +90 -0
- package/builtins/en/facets/knowledge/unit-testing.md +108 -0
- package/builtins/en/facets/output-contracts/e2e-coverage-plan.md +33 -0
- package/builtins/en/facets/output-contracts/plan-frontend.md +41 -0
- package/builtins/en/facets/output-contracts/plan.md +8 -0
- package/builtins/en/facets/output-contracts/security-audit.md +31 -0
- package/builtins/en/facets/personas/coder.md +1 -0
- package/builtins/en/facets/personas/frontend-reviewer.md +4 -0
- package/builtins/en/facets/policies/ai-antipattern.md +43 -0
- package/builtins/en/facets/policies/coding.md +90 -1
- package/builtins/en/facets/policies/design-fidelity.md +51 -0
- package/builtins/en/facets/policies/design-planning.md +52 -0
- package/builtins/en/facets/policies/qa.md +15 -0
- package/builtins/en/facets/policies/testing.md +54 -1
- package/builtins/en/piece-categories.yaml +3 -2
- package/builtins/en/pieces/backend-cqrs.yaml +5 -0
- package/builtins/en/pieces/backend.yaml +5 -0
- package/builtins/en/pieces/default.yaml +2 -0
- package/builtins/en/pieces/dual-cqrs-mini.yaml +8 -1
- package/builtins/en/pieces/dual-cqrs.yaml +10 -2
- package/builtins/en/pieces/dual-mini.yaml +8 -1
- package/builtins/en/pieces/dual.yaml +14 -2
- package/builtins/en/pieces/{e2e-test.yaml → fill-e2e.yaml} +41 -61
- package/builtins/en/pieces/{unit-test.yaml → fill-unit.yaml} +12 -2
- package/builtins/en/pieces/frontend-mini.yaml +8 -1
- package/builtins/en/pieces/frontend.yaml +25 -3
- package/builtins/en/pieces/review-default.yaml +3 -0
- package/builtins/en/pieces/review-dual-cqrs.yaml +3 -1
- package/builtins/en/pieces/review-dual.yaml +3 -1
- package/builtins/en/pieces/review-fix-default.yaml +3 -0
- package/builtins/en/pieces/review-fix-dual-cqrs.yaml +5 -1
- package/builtins/en/pieces/review-fix-dual.yaml +5 -1
- package/builtins/en/pieces/review-fix-frontend.yaml +5 -1
- package/builtins/en/pieces/review-fix-takt-default.yaml +5 -2
- package/builtins/en/pieces/review-frontend.yaml +3 -1
- package/builtins/en/pieces/review-takt-default.yaml +3 -0
- package/builtins/en/pieces/security-audit.yaml +68 -0
- package/builtins/en/pieces/takt-default.yaml +7 -2
- package/builtins/en/pieces/terraform.yaml +0 -5
- package/builtins/ja/INSTRUCTION_STYLE_GUIDE.md +9 -10
- package/builtins/ja/KNOWLEDGE_STYLE_GUIDE.md +4 -4
- package/builtins/ja/OUTPUT_CONTRACT_STYLE_GUIDE.md +4 -4
- package/builtins/ja/PERSONA_STYLE_GUIDE.md +8 -8
- package/builtins/ja/POLICY_STYLE_GUIDE.md +5 -5
- package/builtins/ja/STYLE_GUIDE.md +8 -26
- package/builtins/ja/facets/instructions/e2e-coverage-implement.md +26 -0
- package/builtins/ja/facets/instructions/e2e-coverage-plan.md +38 -0
- package/builtins/ja/facets/instructions/e2e-coverage-supervise.md +21 -0
- package/builtins/ja/facets/instructions/fix.md +4 -0
- package/builtins/ja/facets/instructions/loop-monitor-ai-fix.md +4 -3
- package/builtins/ja/facets/instructions/loop-monitor-reviewers-fix.md +4 -2
- package/builtins/ja/facets/instructions/plan.md +2 -0
- package/builtins/ja/facets/instructions/review-frontend.md +9 -0
- package/builtins/ja/facets/instructions/security-audit-plan.md +12 -0
- package/builtins/ja/facets/instructions/security-audit-review.md +22 -0
- package/builtins/ja/facets/instructions/security-audit-supervise.md +20 -0
- package/builtins/ja/facets/instructions/security-audit-team-leader.md +27 -0
- package/builtins/ja/facets/knowledge/e2e-testing.md +89 -0
- package/builtins/ja/facets/knowledge/frontend.md +46 -0
- package/builtins/ja/facets/knowledge/react.md +90 -0
- package/builtins/ja/facets/knowledge/unit-testing.md +108 -0
- package/builtins/ja/facets/output-contracts/e2e-coverage-plan.md +33 -0
- package/builtins/ja/facets/output-contracts/plan-frontend.md +41 -0
- package/builtins/ja/facets/output-contracts/plan.md +8 -0
- package/builtins/ja/facets/output-contracts/security-audit.md +31 -0
- package/builtins/ja/facets/personas/coder.md +1 -0
- package/builtins/ja/facets/personas/frontend-reviewer.md +2 -0
- package/builtins/ja/facets/policies/ai-antipattern.md +43 -0
- package/builtins/ja/facets/policies/coding.md +90 -1
- package/builtins/ja/facets/policies/design-fidelity.md +51 -0
- package/builtins/ja/facets/policies/design-planning.md +52 -0
- package/builtins/ja/facets/policies/qa.md +15 -0
- package/builtins/ja/facets/policies/testing.md +54 -1
- package/builtins/ja/piece-categories.yaml +3 -2
- package/builtins/ja/pieces/backend-cqrs.yaml +5 -0
- package/builtins/ja/pieces/backend.yaml +5 -0
- package/builtins/ja/pieces/default.yaml +2 -0
- package/builtins/ja/pieces/dual-cqrs-mini.yaml +8 -1
- package/builtins/ja/pieces/dual-cqrs.yaml +10 -2
- package/builtins/ja/pieces/dual-mini.yaml +8 -1
- package/builtins/ja/pieces/dual.yaml +14 -2
- package/builtins/ja/pieces/{e2e-test.yaml → fill-e2e.yaml} +40 -60
- package/builtins/ja/pieces/{unit-test.yaml → fill-unit.yaml} +12 -2
- package/builtins/ja/pieces/frontend-mini.yaml +8 -1
- package/builtins/ja/pieces/frontend.yaml +25 -3
- package/builtins/ja/pieces/review-default.yaml +3 -0
- package/builtins/ja/pieces/review-dual-cqrs.yaml +3 -1
- package/builtins/ja/pieces/review-dual.yaml +3 -1
- package/builtins/ja/pieces/review-fix-default.yaml +3 -0
- package/builtins/ja/pieces/review-fix-dual-cqrs.yaml +5 -1
- package/builtins/ja/pieces/review-fix-dual.yaml +5 -1
- package/builtins/ja/pieces/review-fix-frontend.yaml +5 -1
- package/builtins/ja/pieces/review-fix-takt-default.yaml +5 -2
- package/builtins/ja/pieces/review-frontend.yaml +3 -1
- package/builtins/ja/pieces/review-takt-default.yaml +3 -0
- package/builtins/ja/pieces/security-audit.yaml +68 -0
- package/builtins/ja/pieces/takt-default.yaml +7 -2
- package/builtins/ja/pieces/terraform.yaml +0 -5
- package/dist/app/cli/routing.js +1 -1
- package/dist/app/cli/routing.js.map +1 -1
- package/dist/core/models/config-types.d.ts +4 -0
- package/dist/core/models/config-types.d.ts.map +1 -1
- package/dist/core/models/schemas.d.ts +4 -0
- package/dist/core/models/schemas.d.ts.map +1 -1
- package/dist/core/models/schemas.js +4 -0
- package/dist/core/models/schemas.js.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.d.ts +1 -0
- package/dist/core/piece/engine/MovementExecutor.d.ts.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.js +8 -4
- package/dist/core/piece/engine/MovementExecutor.js.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.d.ts.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.js +4 -1
- package/dist/core/piece/engine/OptionsBuilder.js.map +1 -1
- package/dist/features/config/deploySkillInternal.d.ts.map +1 -1
- package/dist/features/config/deploySkillInternal.js +2 -6
- package/dist/features/config/deploySkillInternal.js.map +1 -1
- package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
- package/dist/features/interactive/conversationLoop.js +4 -15
- package/dist/features/interactive/conversationLoop.js.map +1 -1
- package/dist/features/pipeline/steps.d.ts.map +1 -1
- package/dist/features/pipeline/steps.js +5 -1
- package/dist/features/pipeline/steps.js.map +1 -1
- package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
- package/dist/features/tasks/execute/resolveTask.js +11 -3
- package/dist/features/tasks/execute/resolveTask.js.map +1 -1
- package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigCore.js +11 -8
- package/dist/infra/config/global/globalConfigCore.js.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfigSerializer.js +6 -0
- package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
- package/dist/infra/config/pathExpansion.d.ts +3 -0
- package/dist/infra/config/pathExpansion.d.ts.map +1 -0
- package/dist/infra/config/pathExpansion.js +15 -0
- package/dist/infra/config/pathExpansion.js.map +1 -0
- package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
- package/dist/infra/config/project/projectConfig.js +15 -2
- package/dist/infra/config/project/projectConfig.js.map +1 -1
- package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
- package/dist/infra/config/resolveConfigValue.js +4 -1
- package/dist/infra/config/resolveConfigValue.js.map +1 -1
- package/dist/infra/cursor/client.js +1 -1
- package/dist/infra/cursor/client.js.map +1 -1
- package/dist/infra/github/pr.d.ts.map +1 -1
- package/dist/infra/github/pr.js +36 -8
- package/dist/infra/github/pr.js.map +1 -1
- package/dist/infra/resources/index.d.ts +5 -6
- package/dist/infra/resources/index.d.ts.map +1 -1
- package/dist/infra/resources/index.js +5 -6
- package/dist/infra/resources/index.js.map +1 -1
- package/dist/infra/task/autoCommit.d.ts.map +1 -1
- package/dist/infra/task/autoCommit.js +5 -1
- package/dist/infra/task/autoCommit.js.map +1 -1
- package/dist/infra/task/clone.d.ts +2 -1
- package/dist/infra/task/clone.d.ts.map +1 -1
- package/dist/infra/task/clone.js +5 -2
- package/dist/infra/task/clone.js.map +1 -1
- package/dist/infra/task/git.d.ts +5 -1
- package/dist/infra/task/git.d.ts.map +1 -1
- package/dist/infra/task/git.js +51 -3
- package/dist/infra/task/git.js.map +1 -1
- package/dist/infra/task/index.d.ts +1 -1
- package/dist/infra/task/index.d.ts.map +1 -1
- package/dist/infra/task/index.js +1 -1
- package/dist/infra/task/index.js.map +1 -1
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/shared/utils/index.d.ts.map +1 -1
- package/dist/shared/utils/index.js +1 -0
- package/dist/shared/utils/index.js.map +1 -1
- package/dist/shared/utils/pathBoundary.d.ts +2 -0
- package/dist/shared/utils/pathBoundary.d.ts.map +1 -0
- package/dist/shared/utils/pathBoundary.js +10 -0
- package/dist/shared/utils/pathBoundary.js.map +1 -0
- package/package.json +2 -2
- package/builtins/en/facets/instructions/implement-e2e-test.md +0 -51
- package/builtins/en/facets/instructions/plan-e2e-test.md +0 -11
- package/builtins/en/templates/instructions/ai-fix.md +0 -74
- package/builtins/en/templates/instructions/ai-review-standalone.md +0 -47
- package/builtins/en/templates/instructions/arbitrate.md +0 -45
- package/builtins/en/templates/instructions/architect.md +0 -48
- package/builtins/en/templates/instructions/fix.md +0 -86
- package/builtins/en/templates/instructions/implement.md +0 -102
- package/builtins/en/templates/instructions/plan.md +0 -55
- package/builtins/en/templates/instructions/review.md +0 -101
- package/builtins/en/templates/instructions/supervise.md +0 -106
- package/builtins/en/templates/personas/character.md +0 -45
- package/builtins/en/templates/personas/expert.md +0 -68
- package/builtins/en/templates/personas/simple.md +0 -22
- package/builtins/en/templates/policies/policy.md +0 -49
- package/builtins/en/templates/reports/architecture-design.md +0 -31
- package/builtins/en/templates/reports/plan.md +0 -70
- package/builtins/en/templates/reports/review.md +0 -143
- package/builtins/en/templates/reports/security-review.md +0 -43
- package/builtins/en/templates/reports/summary.md +0 -52
- package/builtins/en/templates/reports/validation.md +0 -31
- package/builtins/ja/facets/instructions/implement-e2e-test.md +0 -51
- package/builtins/ja/facets/instructions/plan-e2e-test.md +0 -11
- package/builtins/ja/templates/instructions/ai-fix.md +0 -74
- package/builtins/ja/templates/instructions/ai-review-standalone.md +0 -47
- package/builtins/ja/templates/instructions/arbitrate.md +0 -45
- package/builtins/ja/templates/instructions/architect.md +0 -48
- package/builtins/ja/templates/instructions/fix.md +0 -86
- package/builtins/ja/templates/instructions/implement.md +0 -102
- package/builtins/ja/templates/instructions/plan.md +0 -55
- package/builtins/ja/templates/instructions/review.md +0 -101
- package/builtins/ja/templates/instructions/supervise.md +0 -106
- package/builtins/ja/templates/knowledge/knowledge.md +0 -39
- package/builtins/ja/templates/output-contracts/architecture-design.md +0 -31
- package/builtins/ja/templates/output-contracts/plan.md +0 -70
- package/builtins/ja/templates/output-contracts/review.md +0 -143
- package/builtins/ja/templates/output-contracts/security-review.md +0 -43
- package/builtins/ja/templates/output-contracts/summary.md +0 -52
- package/builtins/ja/templates/output-contracts/validation.md +0 -31
- package/builtins/ja/templates/personas/character.md +0 -43
- package/builtins/ja/templates/personas/expert.md +0 -21
- package/builtins/ja/templates/personas/simple.md +0 -22
- package/builtins/ja/templates/policies/policy.md +0 -49
|
@@ -204,13 +204,35 @@ return storage.upload(file, options)
|
|
|
204
204
|
- 50行超のUI/ロジック → 分離
|
|
205
205
|
- 複数の責務がある → 分離
|
|
206
206
|
|
|
207
|
+
### 機能追加時の到達経路
|
|
208
|
+
|
|
209
|
+
新しい機能や画面を追加したら、実装と同じ変更セットで利用者が到達する経路も更新する。フレームワーク固有の配線方法は各ドメイン知識に従う。
|
|
210
|
+
|
|
211
|
+
| 基準 | 判定 |
|
|
212
|
+
|------|------|
|
|
213
|
+
| 新機能の実装だけ追加し、呼び出し側・導線・到達経路の更新を忘れる | REJECT |
|
|
214
|
+
| 利用者がどこから到達するか未定義のまま公開機能を追加する | REJECT |
|
|
215
|
+
| 実装追加と同じ変更セットで導線と到達経路を更新する | OK |
|
|
216
|
+
| 一時導線を追加した場合、その用途と除去条件を記録する | OK |
|
|
217
|
+
|
|
207
218
|
### 依存の方向
|
|
208
219
|
|
|
209
220
|
- 上位層 → 下位層(逆方向禁止)
|
|
210
221
|
- データ取得はルート(View/Controller)で行い、子に渡す
|
|
211
222
|
- 子は親のことを知らない
|
|
212
223
|
|
|
213
|
-
###
|
|
224
|
+
### 実行条件と依存条件の一致
|
|
225
|
+
|
|
226
|
+
依存やトリガーは、実際にその処理を再実行したい条件と一致させる。静的ルールや実装都合のためだけに依存を増やし、意図しない再実行を起こさない。
|
|
227
|
+
|
|
228
|
+
| 基準 | 判定 |
|
|
229
|
+
|------|------|
|
|
230
|
+
| lint や実装都合だけで依存やトリガーを増やし、再実行ループを生む | REJECT |
|
|
231
|
+
| 無関係な state 変化や callback 再生成で初期処理が再実行される | REJECT |
|
|
232
|
+
| 再実行条件が URL・フィルタ・明示的更新操作などの仕様に対応している | OK |
|
|
233
|
+
| 初期化と再取得のトリガーを分けて設計している | OK |
|
|
234
|
+
|
|
235
|
+
## 状態管理
|
|
214
236
|
|
|
215
237
|
- 状態は使う場所に閉じ込める
|
|
216
238
|
- 子は状態を直接変更しない(イベントを親に通知)
|
|
@@ -305,6 +327,73 @@ function formatDate(date: Date): string { ... }
|
|
|
305
327
|
function formatPercentage(value: number): string { ... }
|
|
306
328
|
```
|
|
307
329
|
|
|
330
|
+
## 同一実装の別名関数(DRY 違反)
|
|
331
|
+
|
|
332
|
+
AIは同じ処理を異なる関数名で複数定義しがちである。
|
|
333
|
+
|
|
334
|
+
| パターン | 例 | 判定 |
|
|
335
|
+
|---------|-----|------|
|
|
336
|
+
| 同一実装の別名関数 | `copyFacets()` と `placeFacetFiles()` が同じ処理 | REJECT |
|
|
337
|
+
| 引数シグネチャが同一で本体も同一 | 2つの関数が同じパラメータを受け取り同じ処理を行う | REJECT |
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
// REJECT - 同じ実装が別名で存在
|
|
341
|
+
function copyFiles(src: string, dest: string): void {
|
|
342
|
+
for (const f of readdirSync(src)) {
|
|
343
|
+
copyFileSync(join(src, f), join(dest, f));
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
function placeFiles(src: string, dest: string): void {
|
|
347
|
+
for (const f of readdirSync(src)) {
|
|
348
|
+
copyFileSync(join(src, f), join(dest, f));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// OK - 1つの関数にまとめる
|
|
353
|
+
function copyFiles(src: string, dest: string): void {
|
|
354
|
+
for (const f of readdirSync(src)) {
|
|
355
|
+
copyFileSync(join(src, f), join(dest, f));
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
検証アプローチ:
|
|
361
|
+
1. 新規追加された関数の本体が、既存関数と同一または酷似していないか確認
|
|
362
|
+
2. 同じファイル内の関数同士、および同じモジュール内の関数同士を比較
|
|
363
|
+
3. 重複があれば1つにまとめ、呼び出し元を統一
|
|
364
|
+
|
|
365
|
+
## Stateful Regex の危険なパターン
|
|
366
|
+
|
|
367
|
+
`/g` フラグ付き正規表現はステートフル(`lastIndex` を保持する)。モジュールスコープに定義して `test()` と `replace()` を混用すると予期しない結果になる。
|
|
368
|
+
|
|
369
|
+
| パターン | 例 | 判定 |
|
|
370
|
+
|---------|-----|------|
|
|
371
|
+
| モジュールスコープの `/g` 正規表現を `test()` で使用 | `const RE = /x/g; if (RE.test(s)) ...` | REJECT |
|
|
372
|
+
| `/g` 正規表現を `test()` と `replace()` で使い回し | `RE.test(s)` の後に `s.replace(RE, ...)` | REJECT |
|
|
373
|
+
|
|
374
|
+
```typescript
|
|
375
|
+
// REJECT - モジュールスコープの /g 正規表現を test() で使用
|
|
376
|
+
const PATTERN = /\{\{facet:(\w+)\}\}/g;
|
|
377
|
+
function hasFacetRef(text: string): boolean {
|
|
378
|
+
return PATTERN.test(text); // lastIndex が進み、次回の呼び出しで結果が変わる
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// OK - test() には /g を付けない、または関数内で new RegExp
|
|
382
|
+
const PATTERN_CHECK = /\{\{facet:(\w+)\}\}/; // /g なし
|
|
383
|
+
const PATTERN_REPLACE = /\{\{facet:(\w+)\}\}/g; // replace 用は /g
|
|
384
|
+
function hasFacetRef(text: string): boolean {
|
|
385
|
+
return PATTERN_CHECK.test(text);
|
|
386
|
+
}
|
|
387
|
+
function replaceFacetRefs(text: string): string {
|
|
388
|
+
return text.replace(PATTERN_REPLACE, ...);
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
検証アプローチ:
|
|
393
|
+
1. モジュールスコープの正規表現に `/g` フラグがあるか確認
|
|
394
|
+
2. `/g` 付き正規表現が `test()` で使われていないか確認
|
|
395
|
+
3. 同一の正規表現が `test()` と `replace()` の両方で使われていないか確認
|
|
396
|
+
|
|
308
397
|
## 禁止事項
|
|
309
398
|
|
|
310
399
|
- **フォールバックは原則禁止** - `?? 'unknown'`、`|| 'default'`、`try-catch` で握りつぶすフォールバックを書かない。エラーは上位に伝播させる。どうしても必要な場合はコメントで理由を明記する
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# デザイン忠実再現ポリシー
|
|
2
|
+
|
|
3
|
+
デザイン参照が指定されている場合、UIの見た目・構造・文言をデザインに一致させる。
|
|
4
|
+
|
|
5
|
+
## 原則
|
|
6
|
+
|
|
7
|
+
| 原則 | 基準 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| デザインが正 | デザイン参照が指定されている場合、それがUIの唯一のソース・オブ・トゥルース |
|
|
10
|
+
| 要素の一致 | デザインに存在する要素はすべて実装する。省略しない |
|
|
11
|
+
| 独自追加の禁止 | デザインにない要素を独自判断で追加しない |
|
|
12
|
+
| 文言の一致 | ラベル・ボタン文言・プレースホルダーはデザインの文言をそのまま使う |
|
|
13
|
+
| レイアウトの一致 | 要素の配置順序・並び方向・階層構造をデザインに合わせる |
|
|
14
|
+
| 色・間隔の一致 | 色値・余白・角丸・フォントサイズはデザインの指定に従う |
|
|
15
|
+
|
|
16
|
+
## 適用条件
|
|
17
|
+
|
|
18
|
+
このポリシーはタスク指示書またはその参照資料にデザイン参照(UIサンプル、モックアップ、デザインファイル等)が含まれている場合に適用する。デザイン参照がない場合、このポリシーは適用されない。
|
|
19
|
+
|
|
20
|
+
## 判定基準
|
|
21
|
+
|
|
22
|
+
| 基準 | 判定 |
|
|
23
|
+
|------|------|
|
|
24
|
+
| デザインにある要素が実装から欠落 | REJECT |
|
|
25
|
+
| デザインにない要素が独自に追加されている | REJECT |
|
|
26
|
+
| 文言がデザインと異なる | REJECT |
|
|
27
|
+
| 要素の配置順序がデザインと異なる | REJECT |
|
|
28
|
+
| 色値がデザインと異なる | REJECT |
|
|
29
|
+
| 余白・間隔がデザインと明らかに異なる | REJECT |
|
|
30
|
+
| デザインにないエッジケースUI(ローディング、エラー、空状態)の追加 | OK |
|
|
31
|
+
| デザインが曖昧な箇所の解釈(判断根拠を記録すること) | OK |
|
|
32
|
+
|
|
33
|
+
## 実装時の手順
|
|
34
|
+
|
|
35
|
+
1. デザイン参照の要素を列挙する(画面単位・セクション単位)
|
|
36
|
+
2. 各要素のレイアウト・文言・色・間隔を確認する
|
|
37
|
+
3. 実装がデザインと一致していることを要素単位で照合する
|
|
38
|
+
4. デザインが曖昧な箇所は判断根拠を決定ログに記録する
|
|
39
|
+
|
|
40
|
+
## レビュー時の手順
|
|
41
|
+
|
|
42
|
+
1. デザイン参照と実装を要素単位で比較する
|
|
43
|
+
2. 差分がある場合、各差分について「デザインの指定」と「実装の状態」を具体的に記述する
|
|
44
|
+
3. 差分が意図的かどうかを決定ログで確認する
|
|
45
|
+
4. 意図的でない差分はブロッキング問題として報告する
|
|
46
|
+
|
|
47
|
+
## 許容されるケース
|
|
48
|
+
|
|
49
|
+
- デザインに含まれないエッジケースのUI(ローディング状態、エラー表示、データが空の場合の表示)
|
|
50
|
+
- プラットフォーム固有の制約による代替実装(判断根拠を記録すること)
|
|
51
|
+
- デザインの解像度が不十分な箇所の合理的な解釈(判断根拠を記録すること)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# デザイン計画ポリシー
|
|
2
|
+
|
|
3
|
+
デザイン参照が指定されている計画では、要素の棚卸しとスコープ判断を曖昧にしない。
|
|
4
|
+
|
|
5
|
+
## 原則
|
|
6
|
+
|
|
7
|
+
| 原則 | 基準 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| 参照優先 | デザイン参照がある場合、計画は参照資料を一次情報として扱う |
|
|
10
|
+
| 要素単位の棚卸し | 画面単位ではなく要素単位で差分を確認する |
|
|
11
|
+
| 変更要否の明示 | 各要素について変更要/不要を根拠付きで示す |
|
|
12
|
+
| スコープ外の説明責任 | デザインにある要素を外す場合は除外理由を明示する |
|
|
13
|
+
| 実装境界の明確化 | 実装対象と非対象の境界を計画段階で固定する |
|
|
14
|
+
|
|
15
|
+
## 適用条件
|
|
16
|
+
|
|
17
|
+
このポリシーはタスク指示書または参照資料にデザイン参照が含まれている計画に適用する。デザイン参照がない計画には適用しない。
|
|
18
|
+
|
|
19
|
+
## 判定基準
|
|
20
|
+
|
|
21
|
+
| 基準 | 判定 |
|
|
22
|
+
|------|------|
|
|
23
|
+
| デザイン参照の主要要素を列挙せず計画している | REJECT |
|
|
24
|
+
| 要素ごとの変更要/不要がない | REJECT |
|
|
25
|
+
| 「今回は一覧のみ」など、要素名なしにスコープを狭めている | REJECT |
|
|
26
|
+
| スコープ外要素の除外理由がない | REJECT |
|
|
27
|
+
| デザイン参照の解釈が曖昧だが、判断根拠を残している | OK |
|
|
28
|
+
|
|
29
|
+
## 計画時の判断
|
|
30
|
+
|
|
31
|
+
計画では、デザイン参照に含まれる要素を落とさず棚卸しする。
|
|
32
|
+
|
|
33
|
+
棚卸し時の観点:
|
|
34
|
+
- 主要セクションだけでなく、詳細導線、モーダル、操作要素、状態表示まで確認する
|
|
35
|
+
- 各要素ごとに、現行実装との差分と変更要否を記録する
|
|
36
|
+
- 既存実装を維持する場合も、対象ファイルと根拠を示す
|
|
37
|
+
|
|
38
|
+
## スコープ判断
|
|
39
|
+
|
|
40
|
+
デザイン参照の要素をスコープ外にする場合は、少なくとも以下を計画に残す。
|
|
41
|
+
|
|
42
|
+
- 除外する要素名
|
|
43
|
+
- 除外理由
|
|
44
|
+
- 今回代替実装を採らない理由
|
|
45
|
+
|
|
46
|
+
デザイン参照に含まれる要素を、根拠なく「別タスク」とみなして切り離さない。
|
|
47
|
+
|
|
48
|
+
## 禁止事項
|
|
49
|
+
|
|
50
|
+
- **画面単位の雑な要約だけで計画すること** - 要素の抜け漏れが発生する
|
|
51
|
+
- **根拠なしに参照資料の意図を狭めること** - 実装とレビューの前提がずれる
|
|
52
|
+
- **スコープ外の説明を省略すること** - 後続ムーブメントで判断不能になる
|
|
@@ -26,3 +26,18 @@
|
|
|
26
26
|
| 理由なしの @ts-ignore, @ts-expect-error | 警告 |
|
|
27
27
|
| 理由なしの eslint-disable | 警告 |
|
|
28
28
|
| 非推奨APIの使用 | 警告 |
|
|
29
|
+
|
|
30
|
+
## 書き込み後の副作用チェック
|
|
31
|
+
|
|
32
|
+
ファイルやディレクトリへの書き込み後にスキャン・読み取りを行う処理がある場合、書き込んだファイルが意図せずスキャン対象に含まれていないか確認する。
|
|
33
|
+
|
|
34
|
+
| パターン | 例 | 判定 |
|
|
35
|
+
|---------|-----|------|
|
|
36
|
+
| 出力先ディレクトリのスキャン | facets をコピーした後に同ディレクトリを走査して構文を検出 | REJECT |
|
|
37
|
+
| 一時ファイルの読み戻し | 一時ディレクトリに書き込み後、同ディレクトリの全ファイルを処理 | REJECT |
|
|
38
|
+
| 自己参照的な処理 | 生成したファイルが次の処理パイプラインの入力になる | 警告 |
|
|
39
|
+
|
|
40
|
+
検証アプローチ:
|
|
41
|
+
1. ファイル書き込み後にディレクトリスキャン(readdir, glob 等)を行う箇所を確認
|
|
42
|
+
2. スキャン対象に書き込み先が含まれていないか確認
|
|
43
|
+
3. 含まれている場合、除外フィルタが存在するか確認
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
|--------|------|
|
|
29
29
|
| 高 | ビジネスロジック、状態遷移 |
|
|
30
30
|
| 中 | エッジケース、エラーハンドリング |
|
|
31
|
-
| 低 | 単純なCRUD
|
|
31
|
+
| 低 | 単純なCRUD |
|
|
32
|
+
|
|
33
|
+
**注意:** デザイン参照が指定されている場合、UIの見た目の検証は中優先度に格上げする。デザイン忠実再現ポリシーを参照。
|
|
32
34
|
|
|
33
35
|
## テスト構造: Given-When-Then
|
|
34
36
|
|
|
@@ -64,6 +66,37 @@ test('ユーザーが存在しない場合、NotFoundエラーを返す', async
|
|
|
64
66
|
- Arrange-Act-Assert パターン(Given-When-Then と同義)
|
|
65
67
|
- マジックナンバー・マジックストリングを避ける
|
|
66
68
|
|
|
69
|
+
## 再取得ループのリグレッション
|
|
70
|
+
|
|
71
|
+
画面の初期取得がある場合、無関係な再レンダ、loading 切替、Context callback の参照変化で API が再実行されないことをテストで担保する。
|
|
72
|
+
|
|
73
|
+
| 基準 | 判定 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| 初期取得バグ修正に対し、重複 API 呼び出しの回帰テストがない | REJECT |
|
|
76
|
+
| 1回呼ばれたことだけを確認し、再レンダ後の安定性を見ていない | 警告 |
|
|
77
|
+
| rerender や state 更新後も呼び出し回数が増えないことを検証している | OK |
|
|
78
|
+
|
|
79
|
+
## 到達経路のリグレッション
|
|
80
|
+
|
|
81
|
+
利用者向け機能や画面を追加・変更した場合、利用者がその機能へ到達できることをテストまたは同等の検証で担保する。
|
|
82
|
+
|
|
83
|
+
| 基準 | 判定 |
|
|
84
|
+
|------|------|
|
|
85
|
+
| 新規の画面・機能を追加したのに、到達経路や起動条件の検証がない | REJECT |
|
|
86
|
+
| 画面ファイル単体の描画だけを見て、入口からの到達確認をしていない | 警告 |
|
|
87
|
+
| route、メニュー、ボタン、リンク、外部呼び出しなど実際の入口から対象機能へ到達できることを確認している | OK |
|
|
88
|
+
|
|
89
|
+
## UIライブラリ統合のリグレッション
|
|
90
|
+
|
|
91
|
+
DataGrid、日付ピッカー、仮想リスト、チャートなど、外部 UI ライブラリの主要コンポーネントを導入・変更した場合は、実コンポーネントをマウントするテストでクラッシュしないことを担保する。
|
|
92
|
+
|
|
93
|
+
| 基準 | 判定 |
|
|
94
|
+
|------|------|
|
|
95
|
+
| 外部 UI ライブラリの主要コンポーネントを追加・変更したのに、実マウントの回帰テストがない | REJECT |
|
|
96
|
+
| ライブラリの props 整合性を、浅いモックや存在確認だけで済ませている | 警告 |
|
|
97
|
+
| route から対象画面を描画し、主要 UI が例外なくマウントされることを確認している | OK |
|
|
98
|
+
| 主要 UI コンポーネント単体でも、代表的な props で実 render している | OK |
|
|
99
|
+
|
|
67
100
|
## テスト戦略
|
|
68
101
|
|
|
69
102
|
- ロジックにはユニットテスト、境界にはインテグレーションテストを優先
|
|
@@ -81,6 +114,26 @@ test('ユーザーが存在しない場合、NotFoundエラーを返す', async
|
|
|
81
114
|
| 新しいオプションが呼び出しチェーンを通じて末端まで伝搬する | チェーン全体の結合テスト必須 |
|
|
82
115
|
| 各モジュールのユニットテストが全てパスしている | ユニットテストのみで十分(上記に該当しない場合) |
|
|
83
116
|
|
|
117
|
+
## ユニットテスト基準
|
|
118
|
+
|
|
119
|
+
| 基準 | 判定 |
|
|
120
|
+
|------|------|
|
|
121
|
+
| テスト対象の内部実装をモックする(振る舞いではなく実装を検証) | REJECT |
|
|
122
|
+
| テスト間でフィクスチャを共有して変更する | REJECT。テスト独立性の喪失 |
|
|
123
|
+
| モックの戻り値が実際の型と乖離している | 警告。型安全なモックを使う |
|
|
124
|
+
| 正常系のみテストして境界値がない | 警告 |
|
|
125
|
+
|
|
126
|
+
## E2Eテスト基準
|
|
127
|
+
|
|
128
|
+
| 基準 | 判定 |
|
|
129
|
+
|------|------|
|
|
130
|
+
| 外部API呼び出しをモックせず本番APIを叩く | REJECT。テストの再現性が失われる |
|
|
131
|
+
| テスト対象のコア処理をモックする | REJECT。E2Eの意味がなくなる |
|
|
132
|
+
| 固定 sleep でタイミングを合わせる | REJECT。状態ベースの待機を使う |
|
|
133
|
+
| テスト間で共有状態を持つ | 警告。テストの独立性が損なわれる |
|
|
134
|
+
| 正常フローだけテストして異常フローがない | 警告 |
|
|
135
|
+
| ユニットテストでカバーできるロジック検証をE2Eで書く | 警告 |
|
|
136
|
+
|
|
84
137
|
## テスト環境の分離
|
|
85
138
|
|
|
86
139
|
テストインフラの設定はテストシナリオのパラメータに連動させる。ハードコードされた前提は別シナリオで壊れる。
|
|
@@ -70,6 +70,8 @@ movements:
|
|
|
70
70
|
- backend
|
|
71
71
|
- cqrs-es
|
|
72
72
|
- architecture
|
|
73
|
+
- unit-testing
|
|
74
|
+
- e2e-testing
|
|
73
75
|
provider_options:
|
|
74
76
|
claude:
|
|
75
77
|
allowed_tools:
|
|
@@ -244,6 +246,9 @@ movements:
|
|
|
244
246
|
policy:
|
|
245
247
|
- review
|
|
246
248
|
- testing
|
|
249
|
+
knowledge:
|
|
250
|
+
- unit-testing
|
|
251
|
+
- e2e-testing
|
|
247
252
|
provider_options:
|
|
248
253
|
claude:
|
|
249
254
|
allowed_tools:
|
|
@@ -68,6 +68,8 @@ movements:
|
|
|
68
68
|
knowledge:
|
|
69
69
|
- backend
|
|
70
70
|
- architecture
|
|
71
|
+
- unit-testing
|
|
72
|
+
- e2e-testing
|
|
71
73
|
provider_options:
|
|
72
74
|
claude:
|
|
73
75
|
allowed_tools:
|
|
@@ -240,6 +242,9 @@ movements:
|
|
|
240
242
|
policy:
|
|
241
243
|
- review
|
|
242
244
|
- testing
|
|
245
|
+
knowledge:
|
|
246
|
+
- unit-testing
|
|
247
|
+
- e2e-testing
|
|
243
248
|
provider_options:
|
|
244
249
|
claude:
|
|
245
250
|
allowed_tools:
|
|
@@ -25,6 +25,8 @@ movements:
|
|
|
25
25
|
- name: plan
|
|
26
26
|
edit: false
|
|
27
27
|
persona: planner
|
|
28
|
+
policy:
|
|
29
|
+
- design-planning
|
|
28
30
|
knowledge:
|
|
29
31
|
- frontend
|
|
30
32
|
- backend
|
|
@@ -51,13 +53,14 @@ movements:
|
|
|
51
53
|
output_contracts:
|
|
52
54
|
report:
|
|
53
55
|
- name: plan.md
|
|
54
|
-
format: plan
|
|
56
|
+
format: plan-frontend
|
|
55
57
|
- name: implement
|
|
56
58
|
edit: true
|
|
57
59
|
persona: coder
|
|
58
60
|
policy:
|
|
59
61
|
- coding
|
|
60
62
|
- testing
|
|
63
|
+
- design-fidelity
|
|
61
64
|
knowledge:
|
|
62
65
|
- frontend
|
|
63
66
|
- backend
|
|
@@ -163,6 +166,7 @@ movements:
|
|
|
163
166
|
policy:
|
|
164
167
|
- coding
|
|
165
168
|
- testing
|
|
169
|
+
- design-fidelity
|
|
166
170
|
knowledge:
|
|
167
171
|
- frontend
|
|
168
172
|
- backend
|
|
@@ -191,6 +195,7 @@ movements:
|
|
|
191
195
|
policy:
|
|
192
196
|
- coding
|
|
193
197
|
- testing
|
|
198
|
+
- design-fidelity
|
|
194
199
|
knowledge:
|
|
195
200
|
- frontend
|
|
196
201
|
- backend
|
|
@@ -223,6 +228,7 @@ movements:
|
|
|
223
228
|
policy:
|
|
224
229
|
- coding
|
|
225
230
|
- testing
|
|
231
|
+
- design-fidelity
|
|
226
232
|
knowledge:
|
|
227
233
|
- frontend
|
|
228
234
|
- backend
|
|
@@ -256,6 +262,7 @@ movements:
|
|
|
256
262
|
policy:
|
|
257
263
|
- coding
|
|
258
264
|
- testing
|
|
265
|
+
- design-fidelity
|
|
259
266
|
knowledge:
|
|
260
267
|
- frontend
|
|
261
268
|
- backend
|
|
@@ -37,6 +37,8 @@ movements:
|
|
|
37
37
|
- name: plan
|
|
38
38
|
edit: false
|
|
39
39
|
persona: planner
|
|
40
|
+
policy:
|
|
41
|
+
- design-planning
|
|
40
42
|
knowledge:
|
|
41
43
|
- frontend
|
|
42
44
|
- backend
|
|
@@ -60,13 +62,14 @@ movements:
|
|
|
60
62
|
output_contracts:
|
|
61
63
|
report:
|
|
62
64
|
- name: plan.md
|
|
63
|
-
format: plan
|
|
65
|
+
format: plan-frontend
|
|
64
66
|
- name: implement
|
|
65
67
|
edit: true
|
|
66
68
|
persona: coder
|
|
67
69
|
policy:
|
|
68
70
|
- coding
|
|
69
71
|
- testing
|
|
72
|
+
- design-fidelity
|
|
70
73
|
session: refresh
|
|
71
74
|
knowledge:
|
|
72
75
|
- frontend
|
|
@@ -133,6 +136,7 @@ movements:
|
|
|
133
136
|
policy:
|
|
134
137
|
- coding
|
|
135
138
|
- testing
|
|
139
|
+
- design-fidelity
|
|
136
140
|
session: refresh
|
|
137
141
|
knowledge:
|
|
138
142
|
- frontend
|
|
@@ -204,7 +208,9 @@ movements:
|
|
|
204
208
|
- name: frontend-review
|
|
205
209
|
edit: false
|
|
206
210
|
persona: frontend-reviewer
|
|
207
|
-
policy:
|
|
211
|
+
policy:
|
|
212
|
+
- review
|
|
213
|
+
- design-fidelity
|
|
208
214
|
knowledge: frontend
|
|
209
215
|
provider_options:
|
|
210
216
|
claude:
|
|
@@ -276,6 +282,7 @@ movements:
|
|
|
276
282
|
policy:
|
|
277
283
|
- coding
|
|
278
284
|
- testing
|
|
285
|
+
- design-fidelity
|
|
279
286
|
knowledge:
|
|
280
287
|
- frontend
|
|
281
288
|
- backend
|
|
@@ -333,6 +340,7 @@ movements:
|
|
|
333
340
|
policy:
|
|
334
341
|
- coding
|
|
335
342
|
- testing
|
|
343
|
+
- design-fidelity
|
|
336
344
|
knowledge:
|
|
337
345
|
- frontend
|
|
338
346
|
- backend
|
|
@@ -25,6 +25,8 @@ movements:
|
|
|
25
25
|
- name: plan
|
|
26
26
|
edit: false
|
|
27
27
|
persona: planner
|
|
28
|
+
policy:
|
|
29
|
+
- design-planning
|
|
28
30
|
knowledge:
|
|
29
31
|
- frontend
|
|
30
32
|
- backend
|
|
@@ -50,13 +52,14 @@ movements:
|
|
|
50
52
|
output_contracts:
|
|
51
53
|
report:
|
|
52
54
|
- name: plan.md
|
|
53
|
-
format: plan
|
|
55
|
+
format: plan-frontend
|
|
54
56
|
- name: implement
|
|
55
57
|
edit: true
|
|
56
58
|
persona: coder
|
|
57
59
|
policy:
|
|
58
60
|
- coding
|
|
59
61
|
- testing
|
|
62
|
+
- design-fidelity
|
|
60
63
|
knowledge:
|
|
61
64
|
- frontend
|
|
62
65
|
- backend
|
|
@@ -160,6 +163,7 @@ movements:
|
|
|
160
163
|
policy:
|
|
161
164
|
- coding
|
|
162
165
|
- testing
|
|
166
|
+
- design-fidelity
|
|
163
167
|
knowledge:
|
|
164
168
|
- frontend
|
|
165
169
|
- backend
|
|
@@ -187,6 +191,7 @@ movements:
|
|
|
187
191
|
policy:
|
|
188
192
|
- coding
|
|
189
193
|
- testing
|
|
194
|
+
- design-fidelity
|
|
190
195
|
knowledge:
|
|
191
196
|
- frontend
|
|
192
197
|
- backend
|
|
@@ -218,6 +223,7 @@ movements:
|
|
|
218
223
|
policy:
|
|
219
224
|
- coding
|
|
220
225
|
- testing
|
|
226
|
+
- design-fidelity
|
|
221
227
|
knowledge:
|
|
222
228
|
- frontend
|
|
223
229
|
- backend
|
|
@@ -250,6 +256,7 @@ movements:
|
|
|
250
256
|
policy:
|
|
251
257
|
- coding
|
|
252
258
|
- testing
|
|
259
|
+
- design-fidelity
|
|
253
260
|
knowledge:
|
|
254
261
|
- frontend
|
|
255
262
|
- backend
|
|
@@ -37,6 +37,8 @@ movements:
|
|
|
37
37
|
- name: plan
|
|
38
38
|
edit: false
|
|
39
39
|
persona: planner
|
|
40
|
+
policy:
|
|
41
|
+
- design-planning
|
|
40
42
|
knowledge:
|
|
41
43
|
- frontend
|
|
42
44
|
- backend
|
|
@@ -63,7 +65,7 @@ movements:
|
|
|
63
65
|
output_contracts:
|
|
64
66
|
report:
|
|
65
67
|
- name: plan.md
|
|
66
|
-
format: plan
|
|
68
|
+
format: plan-frontend
|
|
67
69
|
- name: write_tests
|
|
68
70
|
edit: true
|
|
69
71
|
persona: coder
|
|
@@ -74,6 +76,8 @@ movements:
|
|
|
74
76
|
- frontend
|
|
75
77
|
- backend
|
|
76
78
|
- architecture
|
|
79
|
+
- unit-testing
|
|
80
|
+
- e2e-testing
|
|
77
81
|
provider_options:
|
|
78
82
|
claude:
|
|
79
83
|
allowed_tools:
|
|
@@ -110,6 +114,7 @@ movements:
|
|
|
110
114
|
policy:
|
|
111
115
|
- coding
|
|
112
116
|
- testing
|
|
117
|
+
- design-fidelity
|
|
113
118
|
session: refresh
|
|
114
119
|
knowledge:
|
|
115
120
|
- frontend
|
|
@@ -191,6 +196,7 @@ movements:
|
|
|
191
196
|
policy:
|
|
192
197
|
- coding
|
|
193
198
|
- testing
|
|
199
|
+
- design-fidelity
|
|
194
200
|
session: refresh
|
|
195
201
|
knowledge:
|
|
196
202
|
- frontend
|
|
@@ -263,7 +269,9 @@ movements:
|
|
|
263
269
|
- name: frontend-review
|
|
264
270
|
edit: false
|
|
265
271
|
persona: frontend-reviewer
|
|
266
|
-
policy:
|
|
272
|
+
policy:
|
|
273
|
+
- review
|
|
274
|
+
- design-fidelity
|
|
267
275
|
knowledge: frontend
|
|
268
276
|
provider_options:
|
|
269
277
|
claude:
|
|
@@ -288,6 +296,9 @@ movements:
|
|
|
288
296
|
policy:
|
|
289
297
|
- review
|
|
290
298
|
- testing
|
|
299
|
+
knowledge:
|
|
300
|
+
- unit-testing
|
|
301
|
+
- e2e-testing
|
|
291
302
|
provider_options:
|
|
292
303
|
claude:
|
|
293
304
|
allowed_tools:
|
|
@@ -389,6 +400,7 @@ movements:
|
|
|
389
400
|
policy:
|
|
390
401
|
- coding
|
|
391
402
|
- testing
|
|
403
|
+
- design-fidelity
|
|
392
404
|
knowledge:
|
|
393
405
|
- frontend
|
|
394
406
|
- backend
|