aizuchi 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 +149 -0
- package/dist/bin/aizuchi.js +546 -0
- package/dist/server/app.js +817 -0
- package/dist/server/board.js +248 -0
- package/dist/server/events.js +24 -0
- package/dist/server/lib/config-paths.js +91 -0
- package/dist/server/lib/docs.js +154 -0
- package/dist/server/lib/files.js +208 -0
- package/dist/server/lib/fs-safe.js +428 -0
- package/dist/server/lib/git.js +100 -0
- package/dist/server/lib/id.js +54 -0
- package/dist/server/lib/pinpoint.js +225 -0
- package/dist/server/lib/proposal.js +93 -0
- package/dist/server/lib/task-file.js +132 -0
- package/dist/server/lib/task-ops.js +206 -0
- package/dist/server/lib/time.js +24 -0
- package/dist/server/overview.js +119 -0
- package/dist/server/static.js +71 -0
- package/dist/server/watcher.js +38 -0
- package/dist/shared/critical-path.js +128 -0
- package/dist/shared/diff.js +46 -0
- package/dist/shared/digest.js +44 -0
- package/dist/shared/milestone.js +29 -0
- package/dist/shared/related-docs.js +77 -0
- package/dist/shared/schema.js +376 -0
- package/dist/shared/stats.js +167 -0
- package/dist/web/assets/index-BLN_aXBe.css +1 -0
- package/dist/web/assets/index-BS_n8d9B.js +82 -0
- package/dist/web/index.html +13 -0
- package/package.json +73 -0
- package/templates/claude-rules.md +85 -0
- package/templates/config.json +28 -0
|
@@ -0,0 +1,13 @@
|
|
|
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>AIzuchi — AI進捗管理ボード</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-BS_n8d9B.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BLN_aXBe.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aizuchi",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI進捗管理カンバンダッシュボード — CLI型AIエージェントのタスク進捗をローカルのカンバンボードで管理する",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"kanban",
|
|
7
|
+
"ai-agent",
|
|
8
|
+
"claude-code",
|
|
9
|
+
"task-management",
|
|
10
|
+
"cli",
|
|
11
|
+
"local-first",
|
|
12
|
+
"dashboard"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://github.com/megaphone-tokyo/AIzuchi#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/megaphone-tokyo/AIzuchi/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/megaphone-tokyo/AIzuchi.git"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": "Megaphone Tokyo",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20.1"
|
|
27
|
+
},
|
|
28
|
+
"bin": {
|
|
29
|
+
"aizuchi": "dist/bin/aizuchi.js"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"templates",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"dev": "vite --config web/vite.config.ts",
|
|
38
|
+
"build": "npm run build:web && npm run build:server",
|
|
39
|
+
"build:web": "vite build --config web/vite.config.ts",
|
|
40
|
+
"build:server": "tsc -p tsconfig.server.json",
|
|
41
|
+
"serve": "node dist/bin/aizuchi.js serve",
|
|
42
|
+
"test": "vitest run",
|
|
43
|
+
"test:watch": "vitest",
|
|
44
|
+
"typecheck": "npm run typecheck:server && npm run typecheck:web",
|
|
45
|
+
"typecheck:server": "tsc --noEmit",
|
|
46
|
+
"typecheck:web": "tsc -p web/tsconfig.json --noEmit"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@hono/node-server": "^1.13.0",
|
|
50
|
+
"chokidar": "^4.0.0",
|
|
51
|
+
"gray-matter": "^4.0.3",
|
|
52
|
+
"hono": "^4.6.0",
|
|
53
|
+
"js-yaml": "^4.2.0",
|
|
54
|
+
"zod": "^3.23.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@dnd-kit/core": "^6.1.0",
|
|
58
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
59
|
+
"@types/js-yaml": "^4.0.9",
|
|
60
|
+
"@types/node": "^20.14.0",
|
|
61
|
+
"@types/react": "^18.3.0",
|
|
62
|
+
"@types/react-dom": "^18.3.0",
|
|
63
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
64
|
+
"react": "^18.3.0",
|
|
65
|
+
"react-dom": "^18.3.0",
|
|
66
|
+
"react-markdown": "^9.0.0",
|
|
67
|
+
"remark-gfm": "^4.0.0",
|
|
68
|
+
"tsx": "^4.19.0",
|
|
69
|
+
"typescript": "^5.5.0",
|
|
70
|
+
"vite": "^6.0.0",
|
|
71
|
+
"vitest": "^3.0.0"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
## AIzuchi 運用規約
|
|
2
|
+
|
|
3
|
+
このプロジェクトは [AIzuchi](https://github.com/megaphone-tokyo/AIzuchi) でタスクを管理しています。
|
|
4
|
+
タスクは `.kanban/tasks/` 配下のプレーンテキスト (Markdown + YAML frontmatter) が唯一の正です。
|
|
5
|
+
|
|
6
|
+
**あなた (AI エージェント) のメンバー ID**: `{{MEMBER_ID}}`
|
|
7
|
+
(`.kanban/config.json` の `members` に登録された値。以下「自分の ID」はこの値を指します)
|
|
8
|
+
|
|
9
|
+
> Claude Code 以外の AI (codex 等) を併用する場合は、この規約セクションを各ツールの指示ファイル
|
|
10
|
+
> (例: `AGENTS.md`) へ転記し、メンバー ID だけ差し替えてください。
|
|
11
|
+
|
|
12
|
+
### 更新の 2 つの方法 (どちらでもよい)
|
|
13
|
+
|
|
14
|
+
タスクの更新は次のどちらでも参加できます。**CLI が使えるなら CLI を推奨**します (スキーマ検証・ID 採番・本文保全が自動で効くため安全)。
|
|
15
|
+
|
|
16
|
+
1. **CLI (推奨・任意)** — `npx aizuchi task <サブコマンド>` を使うと、スキーマ検証 / ID 採番 / status 行のピンポイント書換 / 作業ログ追記が安全に行われます。serve 起動は不要 (ファイルを直接更新し、開いていればボードにも反映)。
|
|
17
|
+
```bash
|
|
18
|
+
npx aizuchi task add --title "ログインAPIの検証追加" --created-by {{MEMBER_ID}} [--status backlog] [--priority high] [--labels backend,auth]
|
|
19
|
+
npx aizuchi task move TASK-013 in_progress # status 変更
|
|
20
|
+
npx aizuchi task done TASK-013 # 完了 (move のショートカット)
|
|
21
|
+
npx aizuchi task block TASK-013 --type decision --reason "RYU のレビュー待ち" # 保留
|
|
22
|
+
npx aizuchi task log TASK-013 "既存 validator を調査" --member {{MEMBER_ID}} # 作業ログ追記
|
|
23
|
+
npx aizuchi task comment TASK-013 "@member1 確認お願いします" --member {{MEMBER_ID}} # やりとり追記
|
|
24
|
+
```
|
|
25
|
+
`--json` で機械可読出力。終了コード: 0 成功 / 1 入力エラー / 2 タスク不在 / 3 競合。
|
|
26
|
+
`.kanban/config.json` の `aiTaskCreation` が `proposal` の場合、CLI の `task add` も `--status proposed` を付けて起票し、承認前に作業を進めないでください (規約 6 参照)。`--status` を省くと `todo` で起票されます。
|
|
27
|
+
2. **生ファイル編集 (従来どおり)** — `.kanban/tasks/<ID>.md` を直接編集してもかまいません。その場合は下記スキーマと規約を守ってください。
|
|
28
|
+
|
|
29
|
+
### 8 つの規約
|
|
30
|
+
|
|
31
|
+
1. **タスク参照** — 「TASK-xxx」と指示されたら `.kanban/tasks/TASK-xxx.md` を読む。無ければ `.kanban/archive/` を検索する。
|
|
32
|
+
2. **着手** — `status` を `in_progress` に変更し、`assignee` が未設定なら自分の ID を設定する。作業ログに `- YYYY-MM-DD HH:mm [{{MEMBER_ID}}] 着手。<方針>` の形式 (`{{MEMBER_ID}}` 部分は自分の ID) で追記する。
|
|
33
|
+
3. **進捗** — 重要な進展・判断・問題発生のたびに、作業ログへ時刻付きで 1 行追記する。
|
|
34
|
+
4. **完了** — 受け入れ条件のチェックボックスを更新し、`status` を `done` に変更する。結果サマリと成果物パスを作業ログへ追記する。
|
|
35
|
+
5. **ブロック** — `status` を `pending` に変更し、`blocked_type` (`decision` = 人の判断待ち / `external` = 外部待ち / `dependency` = 依存タスク待ち) を設定のうえ、`blocked_reason` に「誰の・何待ちか」を具体的に記入する。依存タスク待ちの場合は `depends_on` にタスク ID を記載する。
|
|
36
|
+
6. **起票** — 起票前に `.kanban/config.json` の `aiTaskCreation` を確認する。起票時は `created_by` に自分の ID を設定する。`proposal` なら `status: proposed` で起票し、承認前に作業を進めない。`free` なら `backlog` / `todo` へ直接起票してよい。
|
|
37
|
+
7. **書式** — 下記 frontmatter スキーマを厳守し、独自フィールドを追加しない。書込時に `updated` を更新する。ID は既存 (`archive/` 含む) の最大番号 + 1 をゼロ詰め 3 桁で採番する (1000 以上は桁あふれで 4 桁以上になる)。`created_by` / `assignee` には `members` に登録済みの ID のみを使う。
|
|
38
|
+
8. **やりとり** — 人間からのコメント・質問は本文の `## やりとり` セクションに `- YYYY-MM-DD HH:mm [member] メッセージ` 形式で書かれる。返信や相談は同セクションに同形式 (`[{{MEMBER_ID}}]` は自分の ID) で追記する。宛先は `@member` で示す。設計判断や進捗は引き続き `## 作業ログ` に書く (やりとり = 双方向の対話、作業ログ = 自分の行動記録)。
|
|
39
|
+
|
|
40
|
+
### frontmatter スキーマ
|
|
41
|
+
|
|
42
|
+
| フィールド | 必須 | 形式 |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| `id` | ✔ | `TASK-001` 形式。ファイル名 (拡張子除く) と一致させる |
|
|
45
|
+
| `title` | ✔ | 1 行タイトル |
|
|
46
|
+
| `status` | ✔ | `proposed` / `backlog` / `todo` / `in_progress` / `pending` / `done` |
|
|
47
|
+
| `assignee` | – | メンバー ID または `null` |
|
|
48
|
+
| `created_by` | ✔ | 起票者のメンバー ID |
|
|
49
|
+
| `priority` | – | `high` / `medium` / `low` (既定 `medium`) |
|
|
50
|
+
| `labels` | – | 文字列配列 (例: `[backend, auth]`) |
|
|
51
|
+
| `blocked_type` | △ | `pending` 時は必須。それ以外は `null` |
|
|
52
|
+
| `blocked_reason` | △ | `pending` 時は必須。それ以外は `null` |
|
|
53
|
+
| `depends_on` | – | 依存タスク ID の配列 |
|
|
54
|
+
| `milestone` | – | 所属マイルストーンの ID (`.kanban/config.json` の `milestones[]` に定義された値)。未所属は省略 or `null` |
|
|
55
|
+
| `related_docs` | – | 関連資料のパス配列 (プロジェクトルートからの相対パス、例: `[_plan/260611_design.md]`)。`.kanban/config.json` の `docsDirs` 配下を指す。無ければ省略 |
|
|
56
|
+
| `created` / `updated` | ✔ | ISO 8601 タイムゾーン付き (例: `2026-06-10T10:00:00+09:00`)。UTC に変換しない |
|
|
57
|
+
|
|
58
|
+
### ファイル例 (`.kanban/tasks/TASK-013.md`)
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
---
|
|
62
|
+
id: TASK-013
|
|
63
|
+
title: ログインAPIのバリデーション追加
|
|
64
|
+
status: in_progress
|
|
65
|
+
assignee: {{MEMBER_ID}}
|
|
66
|
+
created_by: member1
|
|
67
|
+
priority: high
|
|
68
|
+
labels: [backend, auth]
|
|
69
|
+
blocked_type: null
|
|
70
|
+
blocked_reason: null
|
|
71
|
+
created: 2026-06-10T10:00:00+09:00
|
|
72
|
+
updated: 2026-06-10T14:30:00+09:00
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 概要
|
|
76
|
+
(背景・目的・関連ファイル)
|
|
77
|
+
|
|
78
|
+
## 受け入れ条件
|
|
79
|
+
- [x] メール形式の検証
|
|
80
|
+
- [ ] エラーレスポンスの統一
|
|
81
|
+
|
|
82
|
+
## 作業ログ
|
|
83
|
+
- 2026-06-10 10:05 [{{MEMBER_ID}}] 着手。既存 validator の実装を調査
|
|
84
|
+
- 2026-06-10 14:30 [{{MEMBER_ID}}] zod でスキーマ定義完了。テスト作成中
|
|
85
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"projectName": "my-project",
|
|
3
|
+
"idPrefix": "TASK",
|
|
4
|
+
"port": 5151,
|
|
5
|
+
"aiTaskCreation": "free",
|
|
6
|
+
"members": [
|
|
7
|
+
{ "id": "member1", "type": "human" },
|
|
8
|
+
{ "id": "member2", "type": "human" },
|
|
9
|
+
{ "id": "claude", "type": "ai" },
|
|
10
|
+
{ "id": "codex", "type": "ai" }
|
|
11
|
+
],
|
|
12
|
+
"columns": [
|
|
13
|
+
{ "id": "proposed", "label": "提案", "hideWhenEmpty": true },
|
|
14
|
+
{ "id": "backlog", "label": "Backlog" },
|
|
15
|
+
{ "id": "todo", "label": "Todo" },
|
|
16
|
+
{ "id": "in_progress", "label": "In Progress", "wipLimit": 2 },
|
|
17
|
+
{ "id": "pending", "label": "Pending" },
|
|
18
|
+
{ "id": "done", "label": "Done" }
|
|
19
|
+
],
|
|
20
|
+
"instructionTemplate": "タスク {id} の内容を {path} で確認し、CLAUDE.md の運用規約に従って実行してください。",
|
|
21
|
+
"aiConfigPaths": {
|
|
22
|
+
"settingsFiles": [".claude/settings.json", ".claude/settings.local.json"],
|
|
23
|
+
"browseDirs": [".claude/skills", ".claude/rules", ".claude/agents"],
|
|
24
|
+
"rootFiles": ["CLAUDE.md"]
|
|
25
|
+
},
|
|
26
|
+
"taskTemplates": [],
|
|
27
|
+
"docsDirs": []
|
|
28
|
+
}
|