foundruu 0.1.0
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/LICENSE +21 -0
- package/README.md +119 -0
- package/assets/templates/ai/_common/company/coding-standard.md +35 -0
- package/assets/templates/ai/_common/company/git-workflow.md +40 -0
- package/assets/templates/ai/_common/company/review-policy.md +30 -0
- package/assets/templates/ai/_common/company/security.md +25 -0
- package/assets/templates/ai/_common/project/architecture.md.hbs +29 -0
- package/assets/templates/ai/_common/project/conventions.md +24 -0
- package/assets/templates/ai/_common/project/overview.md.hbs +37 -0
- package/assets/templates/ai/_common/project/testing.md +32 -0
- package/assets/templates/ai/claude/CLAUDE.md.hbs +65 -0
- package/assets/templates/ai/codex/CODEX.md.hbs +60 -0
- package/assets/templates/base/.env.example +4 -0
- package/assets/templates/base/README.md.hbs +73 -0
- package/assets/templates/features/discord/.env.example.patch +3 -0
- package/assets/templates/features/discord/package.json.patch +5 -0
- package/assets/templates/features/docker/Dockerfile.hbs +38 -0
- package/assets/templates/features/docker/docker-compose.yml.hbs +11 -0
- package/assets/templates/features/eslint/eslint.config.js +14 -0
- package/assets/templates/features/eslint/package.json.patch +11 -0
- package/assets/templates/features/github-actions/.github/workflows/ci.yml.hbs +51 -0
- package/assets/templates/features/lark/.env.example.patch +3 -0
- package/assets/templates/features/lark/package.json.patch +5 -0
- package/assets/templates/features/line-bot/.env.example.patch +2 -0
- package/assets/templates/features/line-bot/package.json.patch +5 -0
- package/assets/templates/features/prettier/.prettierignore +3 -0
- package/assets/templates/features/prettier/.prettierrc +7 -0
- package/assets/templates/features/prettier/package.json.patch +9 -0
- package/assets/templates/features/react/index.html.hbs +12 -0
- package/assets/templates/features/react/package.json.patch +17 -0
- package/assets/templates/features/react/src/web/App.tsx.hbs +8 -0
- package/assets/templates/features/react/src/web/main.tsx +9 -0
- package/assets/templates/features/react/vite.config.ts +6 -0
- package/assets/templates/features/react-laravel/package.json.patch +19 -0
- package/assets/templates/features/react-laravel/resources/js/app.jsx.hbs +17 -0
- package/assets/templates/features/react-laravel/vite.config.js +13 -0
- package/assets/templates/features/vitest/package.json.patch +10 -0
- package/assets/templates/features/vitest/tests/index.test.ts.hbs +7 -0
- package/assets/templates/features/vitest/vitest.config.ts +11 -0
- package/assets/templates/languages/laravel/.env.example.patch +12 -0
- package/assets/templates/languages/laravel/composer.json.hbs +41 -0
- package/assets/templates/languages/laravel/docs/SETUP.md.hbs +24 -0
- package/assets/templates/languages/typescript/package.json.patch +20 -0
- package/assets/templates/languages/typescript/src/index.ts.hbs +1 -0
- package/assets/templates/languages/typescript/tsconfig.json +17 -0
- package/assets/workflow/.ai/prompts/session-workflow.md +72 -0
- package/assets/workflow/.ai/templates/session/design.md +21 -0
- package/assets/workflow/.ai/templates/session/questions.md +34 -0
- package/assets/workflow/.ai/templates/session/requirements.md +25 -0
- package/assets/workflow/.ai/templates/session/summary.md +21 -0
- package/assets/workflow/.ai/templates/session/tasks.md +13 -0
- package/assets/workflow/.ai/templates/session/test.md +15 -0
- package/assets/workflow/.ai/workflows/bugfix.md +19 -0
- package/assets/workflow/.ai/workflows/development.md +27 -0
- package/assets/workflow/.ai/workflows/feature.md +20 -0
- package/assets/workflow/.ai/workflows/review.md +19 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +89 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.js +64 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.js +94 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/session.d.ts +8 -0
- package/dist/commands/session.js +96 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.js +64 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/workflow.d.ts +7 -0
- package/dist/commands/workflow.js +64 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/core/assets.d.ts +8 -0
- package/dist/core/assets.js +29 -0
- package/dist/core/assets.js.map +1 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.js +31 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/copier.d.ts +25 -0
- package/dist/core/copier.js +103 -0
- package/dist/core/copier.js.map +1 -0
- package/dist/core/fetcher.d.ts +10 -0
- package/dist/core/fetcher.js +56 -0
- package/dist/core/fetcher.js.map +1 -0
- package/dist/core/logger.d.ts +7 -0
- package/dist/core/logger.js +15 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/sync.d.ts +26 -0
- package/dist/core/sync.js +69 -0
- package/dist/core/sync.js.map +1 -0
- package/dist/doctor/checks.d.ts +5 -0
- package/dist/doctor/checks.js +97 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/deep.d.ts +39 -0
- package/dist/doctor/deep.js +144 -0
- package/dist/doctor/deep.js.map +1 -0
- package/dist/doctor/rc.d.ts +13 -0
- package/dist/doctor/rc.js +31 -0
- package/dist/doctor/rc.js.map +1 -0
- package/dist/doctor/runner.d.ts +3 -0
- package/dist/doctor/runner.js +39 -0
- package/dist/doctor/runner.js.map +1 -0
- package/dist/doctor/types.d.ts +32 -0
- package/dist/doctor/types.js +3 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/registry/templates.d.ts +18 -0
- package/dist/registry/templates.js +45 -0
- package/dist/registry/templates.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
ci:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
{{#eq language "typescript"}}
|
|
17
|
+
- uses: actions/setup-node@v4
|
|
18
|
+
with:
|
|
19
|
+
node-version: '20'
|
|
20
|
+
cache: 'npm'
|
|
21
|
+
|
|
22
|
+
- run: npm ci
|
|
23
|
+
|
|
24
|
+
- run: npm run typecheck
|
|
25
|
+
{{#if (hasFeature "eslint")}}
|
|
26
|
+
- run: npm run lint
|
|
27
|
+
{{/if}}
|
|
28
|
+
{{#if (hasFeature "vitest")}}
|
|
29
|
+
- run: npm test
|
|
30
|
+
{{/if}}
|
|
31
|
+
- run: npm run build
|
|
32
|
+
{{/eq}}
|
|
33
|
+
|
|
34
|
+
{{#eq language "python"}}
|
|
35
|
+
- uses: actions/setup-python@v5
|
|
36
|
+
with:
|
|
37
|
+
python-version: '3.12'
|
|
38
|
+
|
|
39
|
+
- run: pip install -r requirements.txt
|
|
40
|
+
- run: python -m pytest
|
|
41
|
+
{{/eq}}
|
|
42
|
+
|
|
43
|
+
{{#eq language "laravel"}}
|
|
44
|
+
- uses: shivammathur/setup-php@v2
|
|
45
|
+
with:
|
|
46
|
+
php-version: '8.3'
|
|
47
|
+
|
|
48
|
+
- run: composer install --no-interaction
|
|
49
|
+
- run: cp .env.example .env && php artisan key:generate
|
|
50
|
+
- run: php artisan test
|
|
51
|
+
{{/eq}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="ja">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>{{projectName}}</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="root"></div>
|
|
10
|
+
<script type="module" src="/src/web/main.tsx"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scripts": {
|
|
3
|
+
"dev:web": "vite",
|
|
4
|
+
"build:web": "vite build",
|
|
5
|
+
"preview": "vite preview"
|
|
6
|
+
},
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"react": "^18.3.0",
|
|
9
|
+
"react-dom": "^18.3.0"
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@types/react": "^18.3.0",
|
|
13
|
+
"@types/react-dom": "^18.3.0",
|
|
14
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
15
|
+
"vite": "^5.4.0"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "vite",
|
|
7
|
+
"build": "vite build"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"react": "^18.3.0",
|
|
11
|
+
"react-dom": "^18.3.0"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
15
|
+
"axios": "^1.7.0",
|
|
16
|
+
"laravel-vite-plugin": "^1.0.0",
|
|
17
|
+
"vite": "^5.4.0"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ReactDOM from "react-dom/client";
|
|
3
|
+
|
|
4
|
+
function App() {
|
|
5
|
+
return (
|
|
6
|
+
<main>
|
|
7
|
+
<h1>{{projectName}}</h1>
|
|
8
|
+
<p>FoundRuu で初期化された Laravel + React プロジェクトです。</p>
|
|
9
|
+
</main>
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
ReactDOM.createRoot(document.getElementById("app")).render(
|
|
14
|
+
<React.StrictMode>
|
|
15
|
+
<App />
|
|
16
|
+
</React.StrictMode>
|
|
17
|
+
);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from "vite";
|
|
2
|
+
import laravel from "laravel-vite-plugin";
|
|
3
|
+
import react from "@vitejs/plugin-react";
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
plugins: [
|
|
7
|
+
laravel({
|
|
8
|
+
input: ["resources/js/app.jsx"],
|
|
9
|
+
refresh: true,
|
|
10
|
+
}),
|
|
11
|
+
react(),
|
|
12
|
+
],
|
|
13
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "app/{{projectName}}",
|
|
3
|
+
"description": "{{description}}",
|
|
4
|
+
"type": "project",
|
|
5
|
+
"require": {
|
|
6
|
+
"php": "^8.2",
|
|
7
|
+
"laravel/framework": "^11.0",
|
|
8
|
+
"laravel/tinker": "^2.9"
|
|
9
|
+
},
|
|
10
|
+
"require-dev": {
|
|
11
|
+
"fakerphp/faker": "^1.23",
|
|
12
|
+
"laravel/pint": "^1.13",
|
|
13
|
+
"mockery/mockery": "^1.6",
|
|
14
|
+
"nunomaduro/collision": "^8.0",
|
|
15
|
+
"phpunit/phpunit": "^11.0"
|
|
16
|
+
},
|
|
17
|
+
"autoload": {
|
|
18
|
+
"psr-4": {
|
|
19
|
+
"App\\": "app/",
|
|
20
|
+
"Database\\Factories\\": "database/factories/",
|
|
21
|
+
"Database\\Seeders\\": "database/seeders/"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"autoload-dev": {
|
|
25
|
+
"psr-4": {
|
|
26
|
+
"Tests\\": "tests/"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"post-autoload-dump": [
|
|
31
|
+
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"config": {
|
|
35
|
+
"optimize-autoloader": true,
|
|
36
|
+
"preferred-install": "dist",
|
|
37
|
+
"sort-packages": true
|
|
38
|
+
},
|
|
39
|
+
"minimum-stability": "stable",
|
|
40
|
+
"prefer-stable": true
|
|
41
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# {{projectName}} セットアップ
|
|
2
|
+
|
|
3
|
+
このプロジェクトは FoundRuu の Laravel テンプレートで初期化されています。
|
|
4
|
+
Laravel 本体のスケルトンはまだ含まれていないため、初回のみ以下を実行してください。
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
# Laravel スケルトンを現在のディレクトリへ展開(既存ファイルは保持される)
|
|
8
|
+
composer create-project laravel/laravel /tmp/laravel-skeleton
|
|
9
|
+
rsync -a --ignore-existing /tmp/laravel-skeleton/ ./
|
|
10
|
+
rm -rf /tmp/laravel-skeleton
|
|
11
|
+
|
|
12
|
+
composer install
|
|
13
|
+
cp .env.example .env
|
|
14
|
+
php artisan key:generate
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 開発
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
php artisan serve # バックエンド
|
|
21
|
+
npm run dev # フロントエンド (Vite)
|
|
22
|
+
php artisan test # テスト
|
|
23
|
+
./vendor/bin/pint # フォーマッタ
|
|
24
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{projectName}}",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "{{description}}",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "tsx src/index.ts",
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "node dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@types/node": "^22.0.0",
|
|
14
|
+
"tsx": "^4.0.0",
|
|
15
|
+
"typescript": "^5.5.0"
|
|
16
|
+
},
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=20.0.0"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.log('Hello from {{projectName}}')
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"lib": ["ES2022"],
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"rootDir": "./src",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"declaration": true,
|
|
13
|
+
"sourceMap": true
|
|
14
|
+
},
|
|
15
|
+
"include": ["src"],
|
|
16
|
+
"exclude": ["node_modules", "dist"]
|
|
17
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# AI開発セッション ワークフロー
|
|
2
|
+
|
|
3
|
+
このドキュメントは、Claude Code / Codex などのAI開発エージェントが
|
|
4
|
+
1つの開発セッションを進めるためのルールです。
|
|
5
|
+
作業を始める前に必ずこの内容に従ってください。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
あなたはAI開発セッションの作業者です。
|
|
10
|
+
|
|
11
|
+
最初に `requirements.md` またはユーザーから与えられた要件を確認してください。
|
|
12
|
+
|
|
13
|
+
要件が実装可能なレベルまで具体的であれば、そのまま設計・実装を開始してください。
|
|
14
|
+
|
|
15
|
+
ただし、以下に該当する場合は実装を開始してはいけません。
|
|
16
|
+
|
|
17
|
+
- 実装方法が複数考えられ、判断によって仕様が変わる
|
|
18
|
+
- 画面やAPIの挙動が曖昧
|
|
19
|
+
- DB変更の有無や内容が判断できない
|
|
20
|
+
- 権限・認可条件が不明
|
|
21
|
+
- 既存仕様への影響が大きそう
|
|
22
|
+
- テスト観点を作れない
|
|
23
|
+
- 仕様を推測しないと実装できない
|
|
24
|
+
|
|
25
|
+
この場合は `questions.md` に確認事項を書き出してください。
|
|
26
|
+
|
|
27
|
+
質問は重要度順に最大5件までにしてください。
|
|
28
|
+
|
|
29
|
+
ユーザーから回答を受けたら `requirements.md` を更新し、要件が十分になったと
|
|
30
|
+
判断できた時点で設計・実装へ進んでください。
|
|
31
|
+
|
|
32
|
+
要件が十分な場合は、過剰に確認せず作業を進めてください。
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 進め方(要件ゲート)
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
requirements.md / ユーザーの要件を読む
|
|
40
|
+
│
|
|
41
|
+
▼
|
|
42
|
+
要件は実装可能か?
|
|
43
|
+
├─ はい → そのまま design.md → tasks.md → 実装 → test.md → summary.md
|
|
44
|
+
└─ いいえ → questions.md に確認事項(最大5件)
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
ユーザーの回答を待つ
|
|
48
|
+
│
|
|
49
|
+
▼
|
|
50
|
+
requirements.md を更新 → 十分なら実装へ
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- 要件確認は **最初の1回** を基本とします。
|
|
54
|
+
- 要件が十分なら、**ユーザー確認を挟まずに** 作業を進めてかまいません。
|
|
55
|
+
- 曖昧で実装方法が複数考えられる場合のみ、実装を開始せず質問します。
|
|
56
|
+
- 大げさなワークフロー管理にはしないでください。必要なファイルだけ埋めます。
|
|
57
|
+
|
|
58
|
+
## 各ファイルの役割
|
|
59
|
+
|
|
60
|
+
| ファイル | いつ書くか | 内容 |
|
|
61
|
+
| --- | --- | --- |
|
|
62
|
+
| `requirements.md` | 最初 | 要件。ここが判定の起点 |
|
|
63
|
+
| `questions.md` | 要件が不足しているときだけ | 確認事項(最大5件、重要度順) |
|
|
64
|
+
| `design.md` | 要件が十分になった後 | 実装方針・変更対象・DB/API/UI・影響範囲 |
|
|
65
|
+
| `tasks.md` | 設計後 | 実装/確認タスクと完了条件 |
|
|
66
|
+
| `test.md` | 設計〜実装 | テスト観点・手動/自動テスト・リグレッション |
|
|
67
|
+
| `summary.md` | 完了時 | 実施内容・変更ファイル・残課題・振り返り |
|
|
68
|
+
|
|
69
|
+
## 注意
|
|
70
|
+
|
|
71
|
+
- セッション成果物(`.ai/sessions/`)は Git 管理しません。作業メモとして自由に使ってください。
|
|
72
|
+
- テンプレートは `.ai/templates/session/` にあります。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 設計 (Design)
|
|
2
|
+
|
|
3
|
+
> 要件が十分だと判断できた後に記入します。
|
|
4
|
+
|
|
5
|
+
## 実装方針
|
|
6
|
+
<!-- どうアプローチするか。全体の方針 -->
|
|
7
|
+
|
|
8
|
+
## 変更対象ファイル
|
|
9
|
+
<!-- 追加 / 変更 / 削除するファイルの一覧 -->
|
|
10
|
+
|
|
11
|
+
## DB変更
|
|
12
|
+
<!-- テーブル・カラム・マイグレーションの有無と内容。なければ「なし」 -->
|
|
13
|
+
|
|
14
|
+
## API変更
|
|
15
|
+
<!-- エンドポイント・リクエスト/レスポンス・互換性。なければ「なし」 -->
|
|
16
|
+
|
|
17
|
+
## UI変更
|
|
18
|
+
<!-- 画面・コンポーネント・挙動の変更。なければ「なし」 -->
|
|
19
|
+
|
|
20
|
+
## 影響範囲
|
|
21
|
+
<!-- 既存機能への影響、リグレッションが起きうる箇所 -->
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 確認事項 (Questions)
|
|
2
|
+
|
|
3
|
+
> 要件が曖昧で実装方法が複数考えられる場合のみ記入します。
|
|
4
|
+
> 質問は重要度順に最大5件まで。要件が十分なら空のままで構いません。
|
|
5
|
+
|
|
6
|
+
## 質問 1
|
|
7
|
+
- **確認が必要な理由**:
|
|
8
|
+
- **質問**:
|
|
9
|
+
- **回答**:
|
|
10
|
+
- **回答後の反映先**: <!-- requirements.md / design.md など -->
|
|
11
|
+
|
|
12
|
+
## 質問 2
|
|
13
|
+
- **確認が必要な理由**:
|
|
14
|
+
- **質問**:
|
|
15
|
+
- **回答**:
|
|
16
|
+
- **回答後の反映先**:
|
|
17
|
+
|
|
18
|
+
## 質問 3
|
|
19
|
+
- **確認が必要な理由**:
|
|
20
|
+
- **質問**:
|
|
21
|
+
- **回答**:
|
|
22
|
+
- **回答後の反映先**:
|
|
23
|
+
|
|
24
|
+
## 質問 4
|
|
25
|
+
- **確認が必要な理由**:
|
|
26
|
+
- **質問**:
|
|
27
|
+
- **回答**:
|
|
28
|
+
- **回答後の反映先**:
|
|
29
|
+
|
|
30
|
+
## 質問 5
|
|
31
|
+
- **確認が必要な理由**:
|
|
32
|
+
- **質問**:
|
|
33
|
+
- **回答**:
|
|
34
|
+
- **回答後の反映先**:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 要件 (Requirements)
|
|
2
|
+
|
|
3
|
+
> AIエージェントは作業開始前にこのファイルを確認します。
|
|
4
|
+
> ここが「実装可能なレベルまで具体的か」を判定する起点です。
|
|
5
|
+
|
|
6
|
+
## 目的
|
|
7
|
+
<!-- この作業で最終的に達成したいこと -->
|
|
8
|
+
|
|
9
|
+
## 背景
|
|
10
|
+
<!-- なぜこの作業が必要か。現状の課題や経緯 -->
|
|
11
|
+
|
|
12
|
+
## 対象範囲
|
|
13
|
+
<!-- どこまでを対象にするか(画面 / API / モジュール / 機能単位など) -->
|
|
14
|
+
|
|
15
|
+
## 実装内容
|
|
16
|
+
<!-- 具体的に何を作る・変えるか。箇条書きで -->
|
|
17
|
+
|
|
18
|
+
## やらないこと
|
|
19
|
+
<!-- 今回スコープ外にすること。誤解を避けるため明示する -->
|
|
20
|
+
|
|
21
|
+
## 前提条件
|
|
22
|
+
<!-- 使用技術・既存仕様・依存関係・制約など -->
|
|
23
|
+
|
|
24
|
+
## 未確定事項
|
|
25
|
+
<!-- まだ決まっていない点。ここが残っている場合は questions.md へ -->
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# サマリ (Summary)
|
|
2
|
+
|
|
3
|
+
> 作業完了時に記入します。次回のセッション改善に使います。
|
|
4
|
+
|
|
5
|
+
## 実施内容
|
|
6
|
+
<!-- 実際に行ったこと -->
|
|
7
|
+
|
|
8
|
+
## 変更ファイル
|
|
9
|
+
<!-- 追加/変更/削除したファイル -->
|
|
10
|
+
|
|
11
|
+
## 確認結果
|
|
12
|
+
<!-- テスト・動作確認の結果 -->
|
|
13
|
+
|
|
14
|
+
## 残課題
|
|
15
|
+
<!-- やり残し・別途対応が必要なこと -->
|
|
16
|
+
|
|
17
|
+
## AI作業で詰まった点
|
|
18
|
+
<!-- AIエージェントが判断に迷った点、手戻りが発生した点 -->
|
|
19
|
+
|
|
20
|
+
## 次回改善したい指示
|
|
21
|
+
<!-- 次回セッションで指示や要件をどう改善するか -->
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Bugfix Workflow
|
|
2
|
+
|
|
3
|
+
バグ修正のフロー。原因特定を修正より先に行う。
|
|
4
|
+
|
|
5
|
+
## ステップ
|
|
6
|
+
|
|
7
|
+
1. **再現** — バグを再現する手順・入力・環境を特定する。再現できない場合は `questions.md` に確認事項を書く
|
|
8
|
+
2. **原因特定** — ログ・コードを追い、根本原因を特定する。症状への対処(パッチ)と根本修正を区別する
|
|
9
|
+
3. **影響範囲確認** — 同じ原因による他の不具合、修正による副作用を洗い出す
|
|
10
|
+
4. **失敗するテストを書く** — 修正前にバグを再現するテストを書き、失敗することを確認する
|
|
11
|
+
5. **修正** — 最小限の変更で根本原因を修正する。無関係なリファクタリングを混ぜない
|
|
12
|
+
6. **検証** — 追加したテストが通ること、既存テストが壊れていないことを確認する
|
|
13
|
+
7. **サマリ** — 原因 / 修正内容 / 影響範囲 / 再発防止策を `summary.md` に書く
|
|
14
|
+
|
|
15
|
+
## ルール
|
|
16
|
+
|
|
17
|
+
- 原因が特定できていない状態で修正を始めない
|
|
18
|
+
- 修正とリファクタリングを同じ変更に混ぜない
|
|
19
|
+
- 「なぜ既存テストで検出できなかったか」を振り返りに書く
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Development Workflow
|
|
2
|
+
|
|
3
|
+
AIエージェント(Claude Code / Codex 等)が開発を行うときの基本フロー。
|
|
4
|
+
詳細な要件ゲートのルールは `.ai/prompts/session-workflow.md` を参照すること。
|
|
5
|
+
|
|
6
|
+
## フロー
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
要件を読む → 実装可能か判定
|
|
10
|
+
├─ 不足 → questions.md に質問(重要度順・最大5件)→ 回答待ち
|
|
11
|
+
└─ 十分 → 設計 → タスク分解 → 実装 → テスト → サマリ
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## ステップ
|
|
15
|
+
|
|
16
|
+
1. **要件確認** — `requirements.md`(またはユーザーの指示)を読み、目的・対象範囲・完了条件が実装可能なレベルか判定する
|
|
17
|
+
2. **設計** — `design.md` に方針 / 変更対象 / DB / API / UI / 影響範囲を書く
|
|
18
|
+
3. **タスク分解** — `tasks.md` に実装タスク・確認タスク・完了条件を書く
|
|
19
|
+
4. **実装** — タスク単位で進め、既存コードの規約・スタイルに合わせる
|
|
20
|
+
5. **テスト** — `test.md` の観点(正常系 / 異常系 / 境界値 / 既存影響)に沿って確認し、自動テストを実行する
|
|
21
|
+
6. **サマリ** — `summary.md` に実施内容 / 変更ファイル / 残課題 / 振り返りを書く
|
|
22
|
+
|
|
23
|
+
## ルール
|
|
24
|
+
|
|
25
|
+
- 要件が曖昧なまま実装を始めない
|
|
26
|
+
- 大量の変更を一度に行わず、タスク単位でコミット可能な状態を保つ
|
|
27
|
+
- 破壊的変更・スキーマ変更・認証/決済まわりは必ず設計に明記する
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Feature Workflow
|
|
2
|
+
|
|
3
|
+
新機能を追加するときのフロー。Development Workflow をベースに、新機能特有の確認を加える。
|
|
4
|
+
|
|
5
|
+
## ステップ
|
|
6
|
+
|
|
7
|
+
1. **要件確認** — 何を作る / 作らないの境界、正常系・異常系、権限、完了条件を確認する。不足があれば `questions.md` へ
|
|
8
|
+
2. **既存調査** — 類似機能・共通化できる既存コード・影響を受ける既存仕様を洗い出す
|
|
9
|
+
3. **設計** — 新規/変更ファイル、API入出力、DBスキーマ変更(と理由)、UI、エラーケースを `design.md` に書く
|
|
10
|
+
4. **タスク分解** — 動作確認可能な単位に分割する
|
|
11
|
+
5. **実装** — 既存の規約・アーキテクチャに従う。新しい依存の追加は理由を明記する
|
|
12
|
+
6. **テスト** — 新機能のテストを追加し、既存テストが全て通ることを確認する
|
|
13
|
+
7. **ドキュメント** — README / API ドキュメント等、影響するドキュメントを更新する
|
|
14
|
+
|
|
15
|
+
## チェックリスト
|
|
16
|
+
|
|
17
|
+
- [ ] 既存機能への影響を設計に明記した
|
|
18
|
+
- [ ] 異常系・境界値のテストを書いた
|
|
19
|
+
- [ ] `.env.example` / 設定ファイルの追記漏れがない
|
|
20
|
+
- [ ] ドキュメントを更新した
|