@einja/dev-cli 0.1.9 → 0.1.11
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/README.md +30 -2
- package/dist/cli.js +3 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +69 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/sync.test.js +11 -25
- package/dist/commands/sync.test.js.map +1 -1
- package/dist/commands/task-loop/index.d.ts.map +1 -1
- package/dist/commands/task-loop/index.js +5 -2
- package/dist/commands/task-loop/index.js.map +1 -1
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts +227 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js +351 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts +46 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.js +224 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.js.map +1 -0
- package/dist/commands/task-loop/lib/branch-manager.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/branch-manager.js +14 -8
- package/dist/commands/task-loop/lib/branch-manager.js.map +1 -1
- package/dist/commands/task-loop/lib/branch-manager.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/branch-manager.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/branch-manager.test.js +539 -0
- package/dist/commands/task-loop/lib/branch-manager.test.js.map +1 -0
- package/dist/commands/task-loop/lib/conflict-handler.js +1 -1
- package/dist/commands/task-loop/lib/conflict-handler.js.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js +1129 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -0
- package/dist/commands/task-loop/lib/gh-setup.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/gh-setup.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/github-client.js +3 -3
- package/dist/commands/task-loop/lib/github-client.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/github-client.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/github-client.test.js +377 -0
- package/dist/commands/task-loop/lib/github-client.test.js.map +1 -0
- package/dist/commands/task-loop/lib/issue-parser.js +4 -4
- package/dist/commands/task-loop/lib/issue-parser.js.map +1 -1
- package/dist/commands/task-loop/lib/issue-parser.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/issue-parser.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/issue-parser.test.js +854 -0
- package/dist/commands/task-loop/lib/issue-parser.test.js.map +1 -0
- package/dist/commands/task-loop/lib/pull-request-manager.d.ts +35 -0
- package/dist/commands/task-loop/lib/pull-request-manager.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/pull-request-manager.js +150 -0
- package/dist/commands/task-loop/lib/pull-request-manager.js.map +1 -0
- package/dist/commands/task-loop/lib/task-number-utils.d.ts +10 -4
- package/dist/commands/task-loop/lib/task-number-utils.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/task-number-utils.js +19 -10
- package/dist/commands/task-loop/lib/task-number-utils.js.map +1 -1
- package/dist/commands/task-loop/lib/task-number-utils.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.js +379 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.js.map +1 -0
- package/dist/commands/task-loop/lib/task-state-manager.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.js +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.js.map +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.js +541 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.js.map +1 -0
- package/dist/lib/file-system.js +1 -1
- package/dist/lib/file-system.js.map +1 -1
- package/dist/lib/mcp-config.d.ts.map +1 -1
- package/dist/lib/mcp-config.js +8 -4
- package/dist/lib/mcp-config.js.map +1 -1
- package/dist/lib/mcp-config.test.js +2 -2
- package/dist/lib/mcp-config.test.js.map +1 -1
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.js +12 -8
- package/dist/lib/preset-update/file-copier.js.map +1 -1
- package/dist/lib/preset-update/file-copier.test.js +36 -5
- package/dist/lib/preset-update/file-copier.test.js.map +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset-update/preset-finder.js +1 -1
- package/dist/lib/preset-update/preset-finder.js.map +1 -1
- package/dist/lib/preset-update/preset-finder.test.js +11 -11
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -1
- package/dist/lib/preset.js +3 -3
- package/dist/lib/preset.js.map +1 -1
- package/dist/lib/sync/backup-manager.d.ts.map +1 -1
- package/dist/lib/sync/backup-manager.js +1 -1
- package/dist/lib/sync/backup-manager.js.map +1 -1
- package/dist/lib/sync/backup-manager.test.js +2 -2
- package/dist/lib/sync/backup-manager.test.js.map +1 -1
- package/dist/lib/sync/batch-processor.d.ts.map +1 -1
- package/dist/lib/sync/batch-processor.js.map +1 -1
- package/dist/lib/sync/batch-processor.test.js.map +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +2 -11
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/conflict-reporter.js +1 -2
- package/dist/lib/sync/conflict-reporter.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.test.js +2 -7
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.js +2 -4
- package/dist/lib/sync/diff-engine.js.map +1 -1
- package/dist/lib/sync/diff-engine.test.js.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +26 -3
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/file-filter.test.js +26 -2
- package/dist/lib/sync/file-filter.test.js.map +1 -1
- package/dist/lib/sync/hash-cache.d.ts.map +1 -1
- package/dist/lib/sync/hash-cache.js.map +1 -1
- package/dist/lib/sync/hash-cache.test.js +2 -2
- package/dist/lib/sync/hash-cache.test.js.map +1 -1
- package/dist/lib/sync/integration.test.js +289 -2
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +34 -10
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +142 -41
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +134 -1
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +4 -6
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/performance.test.js +2 -2
- package/dist/lib/sync/performance.test.js.map +1 -1
- package/dist/lib/sync/seed-synchronizer.d.ts +27 -0
- package/dist/lib/sync/seed-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/seed-synchronizer.js +72 -0
- package/dist/lib/sync/seed-synchronizer.js.map +1 -0
- package/dist/lib/sync/seed-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/seed-synchronizer.test.js +147 -0
- package/dist/lib/sync/seed-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/preset-update.d.ts +1 -1
- package/dist/types/sync.d.ts +4 -2
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js.map +1 -1
- package/package.json +1 -2
- package/presets/default/.claude/agents/einja/backend-architect.md +1131 -0
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/design-engineer.md +1 -1
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-architect.md +1 -1
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-coder.md +1 -37
- package/presets/{minimal → default}/.claude/agents/einja/task/task-committer.md +12 -6
- package/presets/{minimal → default}/.claude/agents/einja/task/task-executer.md +9 -9
- package/presets/{minimal → default}/.claude/commands/einja/frontend-implement.md +1 -1
- package/presets/{minimal → default}/.claude/commands/einja/update-docs-by-task-specs.md +6 -6
- package/presets/{minimal/.claude/skills/einja/api-development → default/.claude/skills/einja-api-development}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/backend-architecture → default/.claude/skills/einja-backend-architecture}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/SKILL.md +6 -6
- package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/SKILL.md +6 -6
- package/presets/{minimal/.claude/skills/einja/frontend-development → default/.claude/skills/einja-frontend-development}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/output-format → default/.claude/skills/einja-output-format}/SKILL.md +54 -5
- package/presets/{minimal → default}/preset.yaml +1 -1
- package/presets/{minimal → default}/symlinks.json +10 -10
- package/scaffolds/cli/preset.yaml +110 -0
- package/scaffolds/example/README.md +35 -0
- package/scaffolds/example/specs/issues/issue999-example-task/design.md +879 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/README.md +150 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +268 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +179 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +392 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +459 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +125 -0
- package/scaffolds/example/specs/issues/issue999-example-task/requirements.md +494 -0
- package/scaffolds/example/specs/issues/issue999-example-task/tasks.md +212 -0
- package/scaffolds/instructions/deployment-setup.md +458 -0
- package/scaffolds/instructions/environment-setup.md +509 -0
- package/scaffolds/instructions/local-server-environment-and-worktree.md +539 -0
- package/scaffolds/instructions/task-execute.md +649 -0
- package/scaffolds/instructions/task-vibe-kanban-loop.md +495 -0
- package/scaffolds/memory/archive/.gitkeep +0 -0
- package/scaffolds/memory/decisions.md +35 -0
- package/scaffolds/memory/patterns.md +37 -0
- package/scaffolds/steering/README.md +42 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +11 -0
- package/scaffolds/steering/architecture.md +11 -0
- package/scaffolds/steering/branch-strategy.md +11 -0
- package/scaffolds/steering/commit-rules.md +12 -1
- package/scaffolds/steering/db-schema-design.md +11 -0
- package/scaffolds/steering/development/api-development.md +15 -4
- package/scaffolds/steering/development/backend-architecture.md +11 -0
- package/scaffolds/steering/development/frontend-development.md +11 -0
- package/scaffolds/steering/development/review-guidelines.md +11 -0
- package/scaffolds/steering/development/testing-strategy.md +85 -0
- package/scaffolds/steering/development-workflow.md +11 -0
- package/scaffolds/steering/infrastructure/deployment.md +11 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +11 -0
- package/scaffolds/steering/product.md +11 -0
- package/scaffolds/steering/task-management.md +11 -0
- package/scaffolds/CLAUDE.md.template +0 -386
- /package/presets/{minimal → default}/.claude/agents/einja/docs/docs-updater.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/git/conflict-resolver.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-design-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-qa-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-requirements-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-tasks-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-modification-analyzer.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-qa.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-reviewer.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/spec-create.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/start-dev.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/sync-cursor-commands.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/task-exec.md +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/biome-format.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/design-doc-check.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/detect-secrets.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/large-file-warning.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/playwright-resize.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/typecheck.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/unset-volta-recursion.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/validate-git-commit.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/warn-index-ts.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/warn-relative-import.sh +0 -0
- /package/presets/{minimal → default}/.claude/settings.json +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/naming-conventions.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/prohibited-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/typescript-rules.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/directory-structure.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/props-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/styling-guide.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/conflict-resolver → default/.claude/skills/einja-conflict-resolver}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/general-context-loader → default/.claude/skills/einja-general-context-loader}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/spec-context-loader → default/.claude/skills/einja-spec-context-loader}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-commit → default/.claude/skills/einja-task-commit}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/failure-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/troubleshooting.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/usage-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/templates/qa-test-template.md +0 -0
- /package/{templates → scaffolds/templates}/README.md +0 -0
- /package/{templates → scaffolds/templates}/design-simple.md.template +0 -0
- /package/{templates → scaffolds/templates}/design.md.template +0 -0
- /package/{templates → scaffolds/templates}/qa-test.md.template +0 -0
- /package/{templates → scaffolds/templates}/requirements.md.template +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# コミットルール
|
|
2
3
|
|
|
3
|
-
##
|
|
4
|
+
## 重要:コミット分割ルールの厳守について
|
|
4
5
|
|
|
5
6
|
- コミット分割ルールに違反した場合、重大なレビュープロセス阻害・履歴管理上の問題となるため、**絶対に違反しないこと**
|
|
6
7
|
- 万一違反が発生した場合は、必ず即座に報告し、再発防止策(作業前の分割計画明示・コミット粒度の事前確認など)を徹底すること
|
|
@@ -215,3 +216,13 @@ git push
|
|
|
215
216
|
## まとめ
|
|
216
217
|
|
|
217
218
|
コミットルールの遵守は、プロジェクトの履歴管理とレビュープロセスの効率化に直結します。全ての開発者・AIアシスタントは、これらのルールを例外なく厳守してください。
|
|
219
|
+
<!-- @einja:managed:end -->
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
<!-- @einja:seed:start id="commit-rules-project" -->
|
|
224
|
+
## プロジェクト固有の設定
|
|
225
|
+
|
|
226
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
227
|
+
<!-- einja syncで上書きされません -->
|
|
228
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# スキーマ設計
|
|
2
3
|
|
|
3
4
|
TODO
|
|
@@ -607,3 +608,13 @@ pnpm db:seed
|
|
|
607
608
|
5. **スケーラビリティ**: PostgreSQLとPrismaの組み合わせによる高いスケーラビリティ
|
|
608
609
|
|
|
609
610
|
すべてのスキーマ変更は、このガイドラインに従って実装してください。
|
|
611
|
+
<!-- @einja:managed:end -->
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
<!-- @einja:seed:start id="db-schema-design-project" -->
|
|
616
|
+
## プロジェクト固有の設定
|
|
617
|
+
|
|
618
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
619
|
+
<!-- einja syncで上書きされません -->
|
|
620
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# API開発ガイド
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -41,8 +42,8 @@ apps/admin/app/api/[[...route]]/route.ts # Admin API
|
|
|
41
42
|
|
|
42
43
|
**ルート定義の配置**:
|
|
43
44
|
```
|
|
44
|
-
apps/web/server/routes/
|
|
45
|
-
apps/admin/server/routes/
|
|
45
|
+
apps/web/server/presentation/routes/ # Webアプリ用ルート定義(Presentation層)
|
|
46
|
+
apps/admin/server/presentation/routes/ # 管理画面用ルート定義(Presentation層)
|
|
46
47
|
```
|
|
47
48
|
|
|
48
49
|
### メソッドチェーンパターン
|
|
@@ -102,7 +103,7 @@ apiClient.posts.$get() // ❌ NG(型エラー)
|
|
|
102
103
|
**使用例**:
|
|
103
104
|
|
|
104
105
|
```typescript
|
|
105
|
-
// apps/web/server/routes/postRoutes.ts
|
|
106
|
+
// apps/web/server/presentation/routes/postRoutes.ts
|
|
106
107
|
import { Hono } from 'hono'
|
|
107
108
|
import { zValidator } from '@hono/zod-validator'
|
|
108
109
|
import { createPostSchema } from '@repo/server-core/domain/validators/post'
|
|
@@ -701,7 +702,7 @@ Worktreeごとに異なるポートを使用するため、MD5ハッシュベー
|
|
|
701
702
|
**ルート定義**:
|
|
702
703
|
|
|
703
704
|
```typescript
|
|
704
|
-
// apps/web/server/routes/postRoutes.ts
|
|
705
|
+
// apps/web/server/presentation/routes/postRoutes.ts
|
|
705
706
|
import { Hono } from 'hono'
|
|
706
707
|
import { zValidator } from '@hono/zod-validator'
|
|
707
708
|
import { createPostSchema } from '@repo/server-core/domain/validators/post'
|
|
@@ -781,3 +782,13 @@ export type AppType = typeof app
|
|
|
781
782
|
4. **柔軟性**: Server ActionsとHono Client + Tanstack Queryの使い分け
|
|
782
783
|
|
|
783
784
|
すべてのAPI実装は、このガイドラインに従って実装してください。
|
|
785
|
+
<!-- @einja:managed:end -->
|
|
786
|
+
|
|
787
|
+
---
|
|
788
|
+
|
|
789
|
+
<!-- @einja:seed:start id="api-development-project" -->
|
|
790
|
+
## プロジェクト固有の設定
|
|
791
|
+
|
|
792
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
793
|
+
<!-- einja syncで上書きされません -->
|
|
794
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# バックエンドアーキテクチャ
|
|
2
3
|
|
|
3
4
|
## タスク: Turborepo Next.js モノレポ構築 (20251104)
|
|
@@ -729,3 +730,13 @@ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma
|
|
|
729
730
|
✅ **index.ts不使用**: シンプルで拡張しやすいモジュール管理
|
|
730
731
|
|
|
731
732
|
すべての開発者は、この設計原則に従ってバックエンド開発を行ってください。
|
|
733
|
+
<!-- @einja:managed:end -->
|
|
734
|
+
|
|
735
|
+
---
|
|
736
|
+
|
|
737
|
+
<!-- @einja:seed:start id="backend-architecture-project" -->
|
|
738
|
+
## プロジェクト固有の設定
|
|
739
|
+
|
|
740
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
741
|
+
<!-- einja syncで上書きされません -->
|
|
742
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# フロントエンド開発ガイド
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -1535,3 +1536,13 @@ export function PostCreateForm() {
|
|
|
1535
1536
|
- バンドルサイズを最小限に抑える
|
|
1536
1537
|
|
|
1537
1538
|
このガイドラインに従うことで、高速で保守性の高いモダンなWebアプリケーションを構築できます。
|
|
1539
|
+
<!-- @einja:managed:end -->
|
|
1540
|
+
|
|
1541
|
+
---
|
|
1542
|
+
|
|
1543
|
+
<!-- @einja:seed:start id="frontend-development-project" -->
|
|
1544
|
+
## プロジェクト固有の設定
|
|
1545
|
+
|
|
1546
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
1547
|
+
<!-- einja syncで上書きされません -->
|
|
1548
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# 実装レビューガイドライン
|
|
2
3
|
|
|
3
4
|
このドキュメントは、task-reviewerエージェントおよび開発者が実装レビューを行う際の観点を定義します。
|
|
@@ -363,3 +364,13 @@ task-reviewerエージェントは以下の4観点を**Taskツールで並列に
|
|
|
363
364
|
- **継続的改善**: 完璧ではなく、システム全体の健全性向上を重視
|
|
364
365
|
- **好みと良し悪しの区別**: 客観的な改善提案と主観的な好みを明確に区別
|
|
365
366
|
- **トレードオフの考慮**: パフォーマンス、可読性、保守性のバランスを考慮
|
|
367
|
+
<!-- @einja:managed:end -->
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
<!-- @einja:seed:start id="review-guidelines-project" -->
|
|
372
|
+
## プロジェクト固有の設定
|
|
373
|
+
|
|
374
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
375
|
+
<!-- einja syncで上書きされません -->
|
|
376
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# テスト戦略
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -72,6 +73,80 @@ TDD採用が推奨される場合(ビジネスロジック、データ変換
|
|
|
72
73
|
- **Red-Green-Refactor**: TDDの実施サイクル(どう進めるか)
|
|
73
74
|
- 組み合わせ: 「Red-Green-RefactorサイクルでGiven-When-Then形式のテストを書く」
|
|
74
75
|
|
|
76
|
+
### テストコードスタイル
|
|
77
|
+
|
|
78
|
+
テストコードの一貫性と可読性を確保するため、以下のスタイルルールに従ってください。
|
|
79
|
+
|
|
80
|
+
#### describe構造
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
describe('対象クラス/関数名', () => {
|
|
84
|
+
describe('メソッド名', () => {
|
|
85
|
+
// 正常系テスト
|
|
86
|
+
it('条件を満たすと、期待する結果になる', () => {})
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
describe('メソッド名 - 異常系', () => {
|
|
90
|
+
// 異常系テスト
|
|
91
|
+
it('不正な条件の場合、エラーが発生する', () => {})
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### describe分類ルール
|
|
97
|
+
|
|
98
|
+
| レベル | 分類基準 | 例 |
|
|
99
|
+
|--------|---------|-----|
|
|
100
|
+
| 1階層 | 対象クラス/関数名 | `describe('UserRepository', ...)` |
|
|
101
|
+
| 2階層 | メソッド名 or 機能名 | `describe('create', ...)` |
|
|
102
|
+
| 2階層 | 正常系/異常系 | `describe('create - 異常系', ...)` |
|
|
103
|
+
| 3階層 | 着眼点ごと(任意) | `describe('バリデーション', ...)` |
|
|
104
|
+
|
|
105
|
+
#### it説明文のフォーマット
|
|
106
|
+
|
|
107
|
+
**必須形式**: 「〜すると、〜になる」(条件 → 結果)
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// ✅ 良い例
|
|
111
|
+
it('有効なメールアドレスを渡すと、ユーザーが作成される', () => {})
|
|
112
|
+
it('存在しないIDで検索すると、nullが返る', () => {})
|
|
113
|
+
it('重複したメールアドレスの場合、エラーが返る', () => {})
|
|
114
|
+
|
|
115
|
+
// ❌ 悪い例
|
|
116
|
+
it('ユーザー作成', () => {}) // 条件・結果が不明
|
|
117
|
+
it('should create user', () => {}) // 英語(日本語プロジェクト)
|
|
118
|
+
it('createが動作する', () => {}) // 結果が曖昧
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Given-When-Thenコメント
|
|
122
|
+
|
|
123
|
+
**必須**: テストコード内部は `// Given:` `// When:` `// Then:` コメントで構造化する
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
it('有効なユーザーデータを渡すと、ユーザーが作成される', async () => {
|
|
127
|
+
// Given: 有効なユーザーデータ
|
|
128
|
+
const userData = {
|
|
129
|
+
email: 'test@example.com',
|
|
130
|
+
name: 'Test User',
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// When: createメソッドを呼び出す
|
|
134
|
+
const result = await userRepository.create(userData)
|
|
135
|
+
|
|
136
|
+
// Then: 成功結果が返る
|
|
137
|
+
expect(result.isSuccess).toBe(true)
|
|
138
|
+
})
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### チェックリスト
|
|
142
|
+
|
|
143
|
+
新しいテストを書く際の確認事項:
|
|
144
|
+
|
|
145
|
+
- [ ] describe が適切に階層化されている
|
|
146
|
+
- [ ] it 説明文が「〜すると、〜になる」形式
|
|
147
|
+
- [ ] Given-When-Then コメントで構造化されている
|
|
148
|
+
- [ ] 正常系と異常系が分離されている
|
|
149
|
+
|
|
75
150
|
---
|
|
76
151
|
|
|
77
152
|
## 2. ユニットテスト
|
|
@@ -817,3 +892,13 @@ describe('UserUseCase', () => {
|
|
|
817
892
|
5. **効率性**: Vitestによる高速なテスト実行
|
|
818
893
|
|
|
819
894
|
すべてのテストは、このガイドラインに従って実装してください。
|
|
895
|
+
<!-- @einja:managed:end -->
|
|
896
|
+
|
|
897
|
+
---
|
|
898
|
+
|
|
899
|
+
<!-- @einja:seed:start id="testing-strategy-project" -->
|
|
900
|
+
## プロジェクト固有の設定
|
|
901
|
+
|
|
902
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
903
|
+
<!-- einja syncで上書きされません -->
|
|
904
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# 開発ワークフロー
|
|
2
3
|
|
|
3
4
|
このドキュメントでは、仕様書作成からタスク実行・レビュー・マージまでの開発フロー全体を説明します。
|
|
@@ -427,3 +428,13 @@ PRがマージされるとタスクは自動的にDoneになります。
|
|
|
427
428
|
[後続処理の説明]
|
|
428
429
|
\`\`\`
|
|
429
430
|
```
|
|
431
|
+
<!-- @einja:managed:end -->
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
<!-- @einja:seed:start id="development-workflow-project" -->
|
|
436
|
+
## プロジェクト固有の設定
|
|
437
|
+
|
|
438
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
439
|
+
<!-- einja syncで上書きされません -->
|
|
440
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# デプロイメント・CI/CD設計方針
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -275,3 +276,13 @@ sequenceDiagram
|
|
|
275
276
|
- [環境変数設計方針](./environment-variables.md)
|
|
276
277
|
- [デプロイセットアップ手順](../../instructions/deployment-setup.md)
|
|
277
278
|
- [環境変数セットアップ手順](../../instructions/environment-setup.md)
|
|
279
|
+
<!-- @einja:managed:end -->
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
<!-- @einja:seed:start id="deployment-project" -->
|
|
284
|
+
## プロジェクト固有の設定
|
|
285
|
+
|
|
286
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
287
|
+
<!-- einja syncで上書きされません -->
|
|
288
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# 環境変数設計方針
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -296,3 +297,13 @@ dotenvx採用により、GitHub Secretsは**環境ごとに1つの秘密鍵の
|
|
|
296
297
|
- [デプロイメント・CI/CD設計方針](./deployment.md)
|
|
297
298
|
- [環境変数セットアップ手順](../../instructions/environment-setup.md)
|
|
298
299
|
- [デプロイセットアップ手順](../../instructions/deployment-setup.md)
|
|
300
|
+
<!-- @einja:managed:end -->
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
<!-- @einja:seed:start id="environment-variables-project" -->
|
|
305
|
+
## プロジェクト固有の設定
|
|
306
|
+
|
|
307
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
308
|
+
<!-- einja syncで上書きされません -->
|
|
309
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# 製品ビジョン
|
|
2
3
|
|
|
3
4
|
TODO
|
|
@@ -538,3 +539,13 @@ describe('UserRepository', () => {
|
|
|
538
539
|
- ✅ 開発者満足度: **4.5/5以上**
|
|
539
540
|
|
|
540
541
|
すべての開発活動は、このビジョンと原則に従って実施してください。
|
|
542
|
+
<!-- @einja:managed:end -->
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
<!-- @einja:seed:start id="product-project" -->
|
|
547
|
+
## プロジェクト固有の設定
|
|
548
|
+
|
|
549
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
550
|
+
<!-- einja syncで上書きされません -->
|
|
551
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# タスク管理ガイドライン
|
|
2
3
|
|
|
3
4
|
このドキュメントでは、プロジェクトのタスク管理における階層構造、GitHub Issue管理、用語定義を説明します。
|
|
@@ -365,3 +366,13 @@ pnpm task:loop <issue番号> --branch <ブランチ> # ベースブランチ指
|
|
|
365
366
|
/update-docs-by-task-specs [タスク仕様書ディレクトリパス]
|
|
366
367
|
```
|
|
367
368
|
- タスク仕様書の内容をfeature仕様書とsteering仕様書に反映
|
|
369
|
+
<!-- @einja:managed:end -->
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
<!-- @einja:seed:start id="task-management-project" -->
|
|
374
|
+
## プロジェクト固有の設定
|
|
375
|
+
|
|
376
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
377
|
+
<!-- einja syncで上書きされません -->
|
|
378
|
+
<!-- @einja:seed:end -->
|