musubix 3.6.0 → 3.7.3
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/.github/AGENTS.md +949 -0
- package/.github/prompts/sdd-change-apply.prompt.md +283 -0
- package/.github/prompts/sdd-change-archive.prompt.md +241 -0
- package/.github/prompts/sdd-change-init.prompt.md +269 -0
- package/.github/prompts/sdd-design.prompt.md +250 -0
- package/.github/prompts/sdd-implement.prompt.md +387 -0
- package/.github/prompts/sdd-requirements.prompt.md +193 -0
- package/.github/prompts/sdd-review.prompt.md +155 -0
- package/.github/prompts/sdd-security.prompt.md +228 -0
- package/.github/prompts/sdd-steering.prompt.md +269 -0
- package/.github/prompts/sdd-tasks.prompt.md +255 -0
- package/.github/prompts/sdd-test.prompt.md +230 -0
- package/.github/prompts/sdd-validate.prompt.md +304 -0
- package/.github/skills/build-fix/SKILL.md +124 -0
- package/.github/skills/checkpoint/SKILL.md +131 -0
- package/.github/skills/codemap/SKILL.md +120 -0
- package/.github/skills/codemap/templates/codemap-index.md +142 -0
- package/.github/skills/codemap/templates/package-codemap.md +160 -0
- package/.github/skills/context-optimizer/SKILL.md +109 -0
- package/.github/skills/context-optimizer/contexts/dev.md +40 -0
- package/.github/skills/context-optimizer/contexts/research.md +55 -0
- package/.github/skills/context-optimizer/contexts/review.md +49 -0
- package/.github/skills/e2e-runner/SKILL.md +145 -0
- package/.github/skills/eval-harness/SKILL.md +111 -0
- package/.github/skills/eval-harness/examples/capability-eval.md +158 -0
- package/.github/skills/eval-harness/examples/human-grader-template.md +326 -0
- package/.github/skills/eval-harness/examples/regression-eval.md +228 -0
- package/.github/skills/learning-hooks/SKILL.md +101 -0
- package/.github/skills/learning-hooks/templates/learned-skill-template.md +79 -0
- package/.github/skills/musubix-adr-generation/SKILL.md +74 -0
- package/.github/skills/musubix-best-practices/SKILL.md +85 -0
- package/.github/skills/musubix-c4-design/SKILL.md +86 -0
- package/.github/skills/musubix-code-generation/SKILL.md +90 -0
- package/.github/skills/musubix-domain-inference/SKILL.md +82 -0
- package/.github/skills/musubix-ears-validation/SKILL.md +74 -0
- package/.github/skills/musubix-sdd-workflow/SKILL.md +95 -0
- package/.github/skills/musubix-technical-writing/SKILL.md +108 -0
- package/.github/skills/musubix-test-generation/SKILL.md +88 -0
- package/.github/skills/musubix-traceability/SKILL.md +94 -0
- package/.github/skills/refactor-cleaner/SKILL.md +105 -0
- package/.github/skills/session-manager/SKILL.md +119 -0
- package/.github/skills/session-manager/scripts/session-end.sh +175 -0
- package/.github/skills/session-manager/scripts/session-start.sh +87 -0
- package/.github/skills/verification-loop/SKILL.md +111 -0
- package/.github/skills/verification-loop/scripts/verify.sh +305 -0
- package/AGENTS.md +333 -0
- package/LICENSE +21 -0
- package/README.ja.md +313 -0
- package/README.md +315 -50
- package/bin/musubix-mcp.js +15 -0
- package/bin/musubix.js +9 -1
- package/docs/API-REFERENCE.md +1425 -0
- package/docs/CODEMAPS/CODEMAP.md +1 -0
- package/docs/GITHUB-ACTIONS-NPM-SETUP.md +132 -0
- package/docs/INSTALL-GUIDE.ja.md +459 -0
- package/docs/INSTALL-GUIDE.md +459 -0
- package/docs/MIGRATION-v3.0.md +324 -0
- package/docs/MUSUBI-enhancement_roadmap_20260105.md +651 -0
- package/docs/MUSUBIX-v3.0-User-Guide.md +1357 -0
- package/docs/MUSUBIXv2.2.0-Manual-outline.md +136 -0
- package/docs/MUSUBIXv2.2.0-Manual.md +3123 -0
- package/docs/MUSUBIXv2.3.5-Refactering.md +1310 -0
- package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +291 -0
- package/docs/MUSUBIv2.2.0-USERGUIDE.md +2079 -0
- package/docs/ROADMAP-v1.5.md +116 -0
- package/docs/SwarmCoding.md +1284 -0
- package/docs/Test-prompt.md +105 -0
- package/docs/USER-GUIDE-v1.8.0.md +2371 -0
- package/docs/USER-GUIDE.ja.md +2147 -0
- package/docs/USER-GUIDE.md +3022 -0
- package/docs/YATA-GLOBAL-GUIDE.ja.md +750 -0
- package/docs/YATA-GLOBAL-GUIDE.md +595 -0
- package/docs/YATA-LOCAL-GUIDE.ja.md +989 -0
- package/docs/YATA-LOCAL-GUIDE.md +730 -0
- package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +75 -0
- package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +79 -0
- package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +90 -0
- package/docs/adr/ADR-v3.4.0-001-deep-research-architecture.md +217 -0
- package/docs/adr/ADR-v3.4.0-002-search-provider-selection.md +308 -0
- package/docs/adr/ADR-v3.4.0-003-lm-api-integration.md +475 -0
- package/docs/adr/ADR-v3.7.0-001-everything-claude-code-integration.md +102 -0
- package/docs/enterprise-knowledge-management.md +1737 -0
- package/docs/evolution-from-musubi-to-musubix.md +2170 -0
- package/docs/experiments/EXPERIMENT-ASSISTANT-AXIS-DRIFT-DETECTION.md +155 -0
- package/docs/getting-started-with-sdd.md +1602 -0
- package/docs/moodle-refactering-codegraph-musubix.md +391 -0
- package/docs/moodle-refactering-codegraph.md +278 -0
- package/docs/overview/MUSUBIX-CodeGraph.md +322 -0
- package/docs/overview/MUSUBIX-Core.md +671 -0
- package/docs/overview/MUSUBIX-Decisions.md +494 -0
- package/docs/overview/MUSUBIX-FormalVerify.md +566 -0
- package/docs/overview/MUSUBIX-Knowledge.md +1231 -0
- package/docs/overview/MUSUBIX-Learning.md +837 -0
- package/docs/overview/MUSUBIX-MCP-Server.md +535 -0
- package/docs/overview/MUSUBIX-Overview.md +264 -0
- package/docs/overview/MUSUBIX-Phase1-Complete.md +271 -0
- package/docs/overview/MUSUBIX-Phase2-Complete.md +310 -0
- package/docs/overview/MUSUBIX-Policy.md +477 -0
- package/docs/overview/MUSUBIX-Roadmap-v2.md +399 -0
- package/docs/overview/MUSUBIX-Security-Plan.md +939 -0
- package/docs/overview/MUSUBIX-Security-v2.1.md +668 -0
- package/docs/overview/MUSUBIX-Security.md +891 -0
- package/docs/overview/MUSUBIX-YATA.md +666 -0
- package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +513 -0
- package/docs/overview/Neuro-SymbolicAI.md +159 -0
- package/docs/packages/knowledge.md +594 -0
- package/docs/qiita/musubix-v3.6.0-fastrender-insights.md +625 -0
- package/docs/qiita-linux-kernel-knowledge-graph.md +596 -0
- package/docs/qiita-musubix-assistant-axis.md +380 -0
- package/package.json +58 -52
- package/scripts/generate-quality-gate-report.ts +106 -0
- package/scripts/postinstall.js +94 -0
- package/scripts/register-release-knowledge.ts +127 -0
- package/steering/.musubi-version +1 -0
- package/steering/product.ja.md +572 -0
- package/steering/project.yml +66 -0
- package/steering/rules/constitution.md +491 -0
- package/steering/structure.ja.md +503 -0
- package/steering/tech.ja.md +208 -0
- package/dist/index.d.ts +0 -25
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -74
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refactor-cleaner
|
|
3
|
+
description: デッドコード検出・安全な削除。knip/depcheck/ts-pruneと連携。
|
|
4
|
+
license: MIT
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
triggers:
|
|
7
|
+
- /refactor
|
|
8
|
+
- /cleanup
|
|
9
|
+
- /deadcode
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Refactor Cleaner
|
|
13
|
+
|
|
14
|
+
> **要約**: デッドコードを検出し、安全に削除。すべての削除操作をログに記録。
|
|
15
|
+
|
|
16
|
+
## 📌 コマンド
|
|
17
|
+
|
|
18
|
+
| コマンド | 説明 |
|
|
19
|
+
|---------|------|
|
|
20
|
+
| `/refactor analyze` | デッドコード検出 |
|
|
21
|
+
| `/refactor clean [--safe-only]` | 安全な削除 |
|
|
22
|
+
| `/refactor report` | レポート表示 |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 🔍 検出ツール (REQ-RC-001)
|
|
27
|
+
|
|
28
|
+
| ツール | 検出内容 | コマンド |
|
|
29
|
+
|--------|---------|---------|
|
|
30
|
+
| **knip** | 未使用ファイル/エクスポート/依存 | `npx knip` |
|
|
31
|
+
| **depcheck** | 未使用npm依存 | `npx depcheck` |
|
|
32
|
+
| **ts-prune** | 未使用TSエクスポート | `npx ts-prune` |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## ⚠️ 安全な削除 (REQ-RC-002)
|
|
37
|
+
|
|
38
|
+
**BEFORE** 削除実行
|
|
39
|
+
**DO** 以下を検証
|
|
40
|
+
|
|
41
|
+
| チェック | コマンド |
|
|
42
|
+
|---------|---------|
|
|
43
|
+
| 動的インポート | `grep -rn "import(" src/` |
|
|
44
|
+
| テスト参照 | `grep -rn "<name>" tests/` |
|
|
45
|
+
| ドキュメント参照 | `grep -rn "<name>" docs/` |
|
|
46
|
+
|
|
47
|
+
**検出された場合**: 削除対象から除外
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 📊 リスク分類 (REQ-RC-004)
|
|
52
|
+
|
|
53
|
+
| レベル | 説明 | アクション |
|
|
54
|
+
|--------|------|----------|
|
|
55
|
+
| 🟢 **SAFE** | 静的解析で参照なし | 自動削除可 |
|
|
56
|
+
| 🟡 **CAUTION** | 動的参照の可能性 | 確認必要 |
|
|
57
|
+
| 🔴 **DANGER** | 公開API/エントリーポイント | 自動削除禁止 |
|
|
58
|
+
|
|
59
|
+
**出力例**:
|
|
60
|
+
```
|
|
61
|
+
🔍 Dead Code Analysis
|
|
62
|
+
━━━━━━━━━━━━━━━━━━━━━━━━
|
|
63
|
+
🟢 SAFE (5):
|
|
64
|
+
• src/utils/deprecated.ts
|
|
65
|
+
• src/helpers/old.ts
|
|
66
|
+
|
|
67
|
+
🟡 CAUTION (2):
|
|
68
|
+
• src/lib/maybe-used.ts
|
|
69
|
+
|
|
70
|
+
🔴 DANGER (1):
|
|
71
|
+
• src/index.ts (entry point)
|
|
72
|
+
━━━━━━━━━━━━━━━━━━━━━━━━
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 📝 Deletion Log (REQ-RC-003)
|
|
78
|
+
|
|
79
|
+
**WHEN** コード削除
|
|
80
|
+
**DO** `docs/DELETION_LOG.md`に記録
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## [日付]
|
|
84
|
+
|
|
85
|
+
### Deleted
|
|
86
|
+
- `src/utils/deprecated.ts`
|
|
87
|
+
- `src/helpers/old.ts`
|
|
88
|
+
|
|
89
|
+
### Reason
|
|
90
|
+
knip検出: 未使用エクスポート
|
|
91
|
+
|
|
92
|
+
### Restore
|
|
93
|
+
`git checkout abc1234 -- <file>`
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**レポート保存**: `.reports/dead-code-analysis.md`
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## トレーサビリティ
|
|
101
|
+
|
|
102
|
+
- REQ-RC-001: Dead Code Detection
|
|
103
|
+
- REQ-RC-002: Safe Deletion
|
|
104
|
+
- REQ-RC-003: Deletion Log
|
|
105
|
+
- REQ-RC-004: Risk Classification
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session-manager
|
|
3
|
+
description: セッション開始時にコンテキスト復元、終了時に状態保存。TodoWrite統合でタスク追跡。
|
|
4
|
+
license: MIT
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
triggers:
|
|
7
|
+
- セッション開始
|
|
8
|
+
- セッション終了
|
|
9
|
+
- /session
|
|
10
|
+
- マルチステップタスク
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Session Manager
|
|
14
|
+
|
|
15
|
+
> **要約**: セッション間の継続性を提供。開始時に過去コンテキストを復元、終了時に状態を永続化。
|
|
16
|
+
|
|
17
|
+
## 🔄 トリガーと即時アクション
|
|
18
|
+
|
|
19
|
+
### セッション開始時
|
|
20
|
+
|
|
21
|
+
**WHEN** 新しいセッションが開始される
|
|
22
|
+
**DO** 以下を順に実行:
|
|
23
|
+
|
|
24
|
+
1. `~/.musubix/sessions/` から過去7日間のファイルを検索
|
|
25
|
+
2. 直近セッションの「Notes for Next Session」を読む
|
|
26
|
+
3. ユーザーに引き継ぎ内容を通知
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
find ~/.musubix/sessions/ -name "*.md" -mtime -7 2>/dev/null | head -5
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**出力フォーマット**:
|
|
33
|
+
```
|
|
34
|
+
📋 前回セッションからの引き継ぎ
|
|
35
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
36
|
+
📅 日時: [YYYY-MM-DD HH:MM]
|
|
37
|
+
📝 未完了: [タスクリスト]
|
|
38
|
+
💡 メモ: [重要コンテキスト]
|
|
39
|
+
📂 推奨ファイル: [パスリスト]
|
|
40
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
41
|
+
続きから再開しますか?
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### セッション終了時
|
|
47
|
+
|
|
48
|
+
**WHEN** セッション終了/長時間中断
|
|
49
|
+
**DO** 状態を `~/.musubix/sessions/YYYY-MM-DD-HH-MM.md` に保存
|
|
50
|
+
|
|
51
|
+
**保存フォーマット**:
|
|
52
|
+
```markdown
|
|
53
|
+
# Session: [日付]
|
|
54
|
+
**Project:** [名前] | **Started:** [HH:MM] | **Updated:** [HH:MM]
|
|
55
|
+
|
|
56
|
+
## Completed
|
|
57
|
+
- [x] 完了タスク
|
|
58
|
+
|
|
59
|
+
## In Progress
|
|
60
|
+
- [ ] 進行中タスク
|
|
61
|
+
|
|
62
|
+
## Notes for Next Session
|
|
63
|
+
- 重要コンテキスト
|
|
64
|
+
|
|
65
|
+
## Context to Load
|
|
66
|
+
- `path/to/file`
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### コンテキスト圧縮前
|
|
72
|
+
|
|
73
|
+
**WHEN** コンテキスト圧縮がトリガーされる
|
|
74
|
+
**DO** 圧縮前に重要な状態をセッションファイルに追記
|
|
75
|
+
|
|
76
|
+
**保存項目**: 現在のタスク状態、重要な変数/設定、次のアクション
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## ✅ TodoWrite統合
|
|
81
|
+
|
|
82
|
+
**WHEN** マルチステップタスク(3ステップ以上)を開始
|
|
83
|
+
**DO** TodoWriteツールで進捗を追跡
|
|
84
|
+
|
|
85
|
+
### ベストプラクティス
|
|
86
|
+
|
|
87
|
+
| やること | 理由 |
|
|
88
|
+
|---------|------|
|
|
89
|
+
| タスク開始時にリスト作成 | 実行順序を明示 |
|
|
90
|
+
| 完了ごとにチェック | 進捗を可視化 |
|
|
91
|
+
| 欠落ステップを検出 | 抜け漏れ防止 |
|
|
92
|
+
| 終了時に未完了を記録 | 次回引き継ぎ |
|
|
93
|
+
|
|
94
|
+
**例**:
|
|
95
|
+
```
|
|
96
|
+
□ 1. 要件定義の確認
|
|
97
|
+
□ 2. 設計ドキュメント作成
|
|
98
|
+
☑ 3. 実装(完了)
|
|
99
|
+
□ 4. テスト作成
|
|
100
|
+
□ 5. レビュー依頼
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 📁 ストレージ
|
|
106
|
+
|
|
107
|
+
| パス | 内容 |
|
|
108
|
+
|------|------|
|
|
109
|
+
| `~/.musubix/sessions/` | セッションファイル(30日保持) |
|
|
110
|
+
| `~/.musubix/sessions/YYYY-MM-DD-HH-MM.md` | 個別セッション |
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## トレーサビリティ
|
|
115
|
+
|
|
116
|
+
- REQ-SM-001: SessionStart Hook
|
|
117
|
+
- REQ-SM-002: SessionEnd Hook
|
|
118
|
+
- REQ-SM-003: Pre-Compact State Saving
|
|
119
|
+
- REQ-SM-004: TodoWrite統合
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# MUSUBIX Session End Hook
|
|
3
|
+
# REQ-SM-002: SessionEnd Hook
|
|
4
|
+
#
|
|
5
|
+
# Usage: ./session-end.sh [--project PROJECT_NAME]
|
|
6
|
+
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
# Configuration
|
|
10
|
+
SESSIONS_DIR="${HOME}/.musubix/sessions"
|
|
11
|
+
MAX_FILE_SIZE=1048576 # 1MB
|
|
12
|
+
RETENTION_DAYS=30
|
|
13
|
+
MAX_FILES=100
|
|
14
|
+
|
|
15
|
+
# Colors
|
|
16
|
+
GREEN='\033[0;32m'
|
|
17
|
+
YELLOW='\033[1;33m'
|
|
18
|
+
BLUE='\033[0;34m'
|
|
19
|
+
RED='\033[0;31m'
|
|
20
|
+
NC='\033[0m'
|
|
21
|
+
|
|
22
|
+
# Parse arguments
|
|
23
|
+
PROJECT_NAME=""
|
|
24
|
+
while [[ "$#" -gt 0 ]]; do
|
|
25
|
+
case $1 in
|
|
26
|
+
--project) PROJECT_NAME="$2"; shift ;;
|
|
27
|
+
*) echo "Unknown parameter: $1"; exit 1 ;;
|
|
28
|
+
esac
|
|
29
|
+
shift
|
|
30
|
+
done
|
|
31
|
+
|
|
32
|
+
# Create sessions directory if it doesn't exist
|
|
33
|
+
mkdir -p "$SESSIONS_DIR"
|
|
34
|
+
|
|
35
|
+
# Generate filename
|
|
36
|
+
TIMESTAMP=$(date +"%Y-%m-%d-%H-%M")
|
|
37
|
+
SESSION_FILE="${SESSIONS_DIR}/${TIMESTAMP}.md"
|
|
38
|
+
|
|
39
|
+
echo -e "${BLUE}📋 MUSUBIX Session Manager - Session End${NC}"
|
|
40
|
+
echo "================================================"
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
# Detect project name if not provided
|
|
44
|
+
if [ -z "$PROJECT_NAME" ]; then
|
|
45
|
+
if [ -f "package.json" ]; then
|
|
46
|
+
PROJECT_NAME=$(grep -o '"name": *"[^"]*"' package.json | head -1 | cut -d'"' -f4)
|
|
47
|
+
elif [ -d ".git" ]; then
|
|
48
|
+
PROJECT_NAME=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null)
|
|
49
|
+
fi
|
|
50
|
+
PROJECT_NAME="${PROJECT_NAME:-Unknown Project}"
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Get start time (approximate based on shell history or use current)
|
|
54
|
+
START_TIME=$(date -d "2 hours ago" +"%H:%M" 2>/dev/null || date +"%H:%M")
|
|
55
|
+
CURRENT_TIME=$(date +"%H:%M")
|
|
56
|
+
CURRENT_DATE=$(date +"%Y-%m-%d")
|
|
57
|
+
|
|
58
|
+
# Interactive prompts for session data
|
|
59
|
+
echo -e "${YELLOW}セッション情報を入力してください:${NC}"
|
|
60
|
+
echo ""
|
|
61
|
+
|
|
62
|
+
# Completed tasks
|
|
63
|
+
echo "✅ 完了したタスク (空行で終了):"
|
|
64
|
+
COMPLETED_TASKS=""
|
|
65
|
+
while IFS= read -r line; do
|
|
66
|
+
[ -z "$line" ] && break
|
|
67
|
+
COMPLETED_TASKS="${COMPLETED_TASKS}\n- [x] ${line}"
|
|
68
|
+
done
|
|
69
|
+
|
|
70
|
+
# In progress tasks
|
|
71
|
+
echo ""
|
|
72
|
+
echo "⏳ 進行中のタスク (空行で終了):"
|
|
73
|
+
IN_PROGRESS_TASKS=""
|
|
74
|
+
while IFS= read -r line; do
|
|
75
|
+
[ -z "$line" ] && break
|
|
76
|
+
IN_PROGRESS_TASKS="${IN_PROGRESS_TASKS}\n- [ ] ${line}"
|
|
77
|
+
done
|
|
78
|
+
|
|
79
|
+
# Notes for next session
|
|
80
|
+
echo ""
|
|
81
|
+
echo "📝 次回向けメモ (空行で終了):"
|
|
82
|
+
NOTES=""
|
|
83
|
+
while IFS= read -r line; do
|
|
84
|
+
[ -z "$line" ] && break
|
|
85
|
+
NOTES="${NOTES}\n- ${line}"
|
|
86
|
+
done
|
|
87
|
+
|
|
88
|
+
# Context files to load
|
|
89
|
+
echo ""
|
|
90
|
+
echo "📂 次回読み込むべきファイル (空行で終了):"
|
|
91
|
+
CONTEXT_FILES=""
|
|
92
|
+
while IFS= read -r line; do
|
|
93
|
+
[ -z "$line" ] && break
|
|
94
|
+
CONTEXT_FILES="${CONTEXT_FILES}\n${line}"
|
|
95
|
+
done
|
|
96
|
+
|
|
97
|
+
# Count completed tasks
|
|
98
|
+
COMPLETED_COUNT=$(echo -e "$COMPLETED_TASKS" | grep -c "\[x\]" 2>/dev/null || echo 0)
|
|
99
|
+
IN_PROGRESS_COUNT=$(echo -e "$IN_PROGRESS_TASKS" | grep -c "\[ \]" 2>/dev/null || echo 0)
|
|
100
|
+
NOTES_COUNT=$(echo -e "$NOTES" | grep -c "^-" 2>/dev/null || echo 0)
|
|
101
|
+
|
|
102
|
+
# Generate session file
|
|
103
|
+
cat > "$SESSION_FILE" << EOF
|
|
104
|
+
# Session: ${CURRENT_DATE}
|
|
105
|
+
|
|
106
|
+
**Date:** ${CURRENT_DATE}
|
|
107
|
+
**Started:** ${START_TIME}
|
|
108
|
+
**Last Updated:** ${CURRENT_TIME}
|
|
109
|
+
**Project:** ${PROJECT_NAME}
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Current State
|
|
114
|
+
|
|
115
|
+
### Completed
|
|
116
|
+
$(echo -e "$COMPLETED_TASKS" | sed '/^$/d')
|
|
117
|
+
|
|
118
|
+
### In Progress
|
|
119
|
+
$(echo -e "$IN_PROGRESS_TASKS" | sed '/^$/d')
|
|
120
|
+
|
|
121
|
+
### Blocked
|
|
122
|
+
- [ ] (なし)
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Notes for Next Session
|
|
127
|
+
$(echo -e "$NOTES" | sed '/^$/d')
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Context to Load
|
|
132
|
+
|
|
133
|
+
\`\`\`
|
|
134
|
+
$(echo -e "$CONTEXT_FILES" | sed '/^$/d')
|
|
135
|
+
\`\`\`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Session Summary
|
|
140
|
+
|
|
141
|
+
- **タスク完了数**: ${COMPLETED_COUNT}
|
|
142
|
+
- **未完了タスク**: ${IN_PROGRESS_COUNT}
|
|
143
|
+
- **次回向けメモ**: ${NOTES_COUNT}項目
|
|
144
|
+
- **セッション時間**: ${START_TIME} - ${CURRENT_TIME}
|
|
145
|
+
|
|
146
|
+
EOF
|
|
147
|
+
|
|
148
|
+
# Check file size
|
|
149
|
+
FILE_SIZE=$(stat -f%z "$SESSION_FILE" 2>/dev/null || stat -c%s "$SESSION_FILE" 2>/dev/null)
|
|
150
|
+
if [ "$FILE_SIZE" -gt "$MAX_FILE_SIZE" ]; then
|
|
151
|
+
echo -e "${RED}⚠️ 警告: セッションファイルが1MBを超えています${NC}"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# Cleanup old sessions
|
|
155
|
+
echo ""
|
|
156
|
+
echo -e "${YELLOW}🧹 古いセッションのクリーンアップ...${NC}"
|
|
157
|
+
find "$SESSIONS_DIR" -name "*.md" -mtime +"$RETENTION_DAYS" -delete 2>/dev/null || true
|
|
158
|
+
|
|
159
|
+
# Check file count
|
|
160
|
+
FILE_COUNT=$(find "$SESSIONS_DIR" -name "*.md" -type f | wc -l)
|
|
161
|
+
if [ "$FILE_COUNT" -gt "$MAX_FILES" ]; then
|
|
162
|
+
echo -e "${YELLOW}ℹ️ ファイル数が${MAX_FILES}を超えています。古いファイルを削除します。${NC}"
|
|
163
|
+
find "$SESSIONS_DIR" -name "*.md" -type f -printf '%T+ %p\n' | sort | head -n "$((FILE_COUNT - MAX_FILES))" | cut -d' ' -f2- | xargs rm -f 2>/dev/null || true
|
|
164
|
+
fi
|
|
165
|
+
|
|
166
|
+
echo ""
|
|
167
|
+
echo "================================================"
|
|
168
|
+
echo -e "${GREEN}✅ セッションを保存しました: ${SESSION_FILE}${NC}"
|
|
169
|
+
echo ""
|
|
170
|
+
echo -e "${BLUE}サマリー:${NC}"
|
|
171
|
+
echo " - 完了タスク: ${COMPLETED_COUNT}件"
|
|
172
|
+
echo " - 未完了タスク: ${IN_PROGRESS_COUNT}件"
|
|
173
|
+
echo " - 次回向けメモ: ${NOTES_COUNT}項目"
|
|
174
|
+
echo ""
|
|
175
|
+
echo -e "${GREEN}セッションを正常に終了しました。お疲れ様でした!${NC}"
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# MUSUBIX Session Start Hook
|
|
3
|
+
# REQ-SM-001: SessionStart Hook
|
|
4
|
+
#
|
|
5
|
+
# Usage: source session-start.sh
|
|
6
|
+
# Or run directly: ./session-start.sh
|
|
7
|
+
|
|
8
|
+
set -e
|
|
9
|
+
|
|
10
|
+
# Configuration
|
|
11
|
+
SESSIONS_DIR="${HOME}/.musubix/sessions"
|
|
12
|
+
RETENTION_DAYS=7
|
|
13
|
+
MAX_SESSIONS_TO_SHOW=5
|
|
14
|
+
|
|
15
|
+
# Colors
|
|
16
|
+
GREEN='\033[0;32m'
|
|
17
|
+
YELLOW='\033[1;33m'
|
|
18
|
+
BLUE='\033[0;34m'
|
|
19
|
+
NC='\033[0m' # No Color
|
|
20
|
+
|
|
21
|
+
# Create sessions directory if it doesn't exist
|
|
22
|
+
mkdir -p "$SESSIONS_DIR"
|
|
23
|
+
|
|
24
|
+
echo -e "${BLUE}📋 MUSUBIX Session Manager - Session Start${NC}"
|
|
25
|
+
echo "================================================"
|
|
26
|
+
echo ""
|
|
27
|
+
|
|
28
|
+
# Find recent sessions (within RETENTION_DAYS days)
|
|
29
|
+
recent_sessions=$(find "$SESSIONS_DIR" -name "*.md" -mtime -"$RETENTION_DAYS" -type f 2>/dev/null | sort -r | head -"$MAX_SESSIONS_TO_SHOW")
|
|
30
|
+
|
|
31
|
+
if [ -z "$recent_sessions" ]; then
|
|
32
|
+
echo -e "${YELLOW}ℹ️ 過去${RETENTION_DAYS}日間のセッションは見つかりませんでした。${NC}"
|
|
33
|
+
echo ""
|
|
34
|
+
echo "新しいセッションを開始します。"
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
echo -e "${GREEN}✅ 過去${RETENTION_DAYS}日間のセッションが見つかりました:${NC}"
|
|
39
|
+
echo ""
|
|
40
|
+
|
|
41
|
+
# Process each session
|
|
42
|
+
for session_file in $recent_sessions; do
|
|
43
|
+
filename=$(basename "$session_file")
|
|
44
|
+
date_part="${filename%.md}"
|
|
45
|
+
|
|
46
|
+
# Extract info from session file
|
|
47
|
+
echo -e "${BLUE}📄 $filename${NC}"
|
|
48
|
+
|
|
49
|
+
# Extract Notes for Next Session
|
|
50
|
+
notes=$(sed -n '/^## Notes for Next Session/,/^##/p' "$session_file" 2>/dev/null | grep -v "^##" | head -5)
|
|
51
|
+
if [ -n "$notes" ]; then
|
|
52
|
+
echo " 📝 次回向けメモ:"
|
|
53
|
+
echo "$notes" | sed 's/^/ /'
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# Extract In Progress tasks
|
|
57
|
+
in_progress=$(sed -n '/^### In Progress/,/^###/p' "$session_file" 2>/dev/null | grep "^\- \[ \]" | head -5)
|
|
58
|
+
if [ -n "$in_progress" ]; then
|
|
59
|
+
echo " ⏳ 未完了タスク:"
|
|
60
|
+
echo "$in_progress" | sed 's/^/ /'
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
echo ""
|
|
64
|
+
done
|
|
65
|
+
|
|
66
|
+
# Get the most recent session
|
|
67
|
+
most_recent=$(echo "$recent_sessions" | head -1)
|
|
68
|
+
|
|
69
|
+
if [ -n "$most_recent" ]; then
|
|
70
|
+
echo "================================================"
|
|
71
|
+
echo -e "${YELLOW}💡 最新セッション: $(basename "$most_recent")${NC}"
|
|
72
|
+
echo ""
|
|
73
|
+
echo "前回のセッションから続けますか?"
|
|
74
|
+
echo " - 'yes' または 'y' で前回のコンテキストを読み込み"
|
|
75
|
+
echo " - 'no' または 'n' で新規セッション開始"
|
|
76
|
+
echo ""
|
|
77
|
+
|
|
78
|
+
# Extract Context to Load
|
|
79
|
+
context_files=$(sed -n '/^## Context to Load/,/^##/p' "$most_recent" 2>/dev/null | grep -v "^##" | grep -v "^\`\`\`" | grep -v "^$")
|
|
80
|
+
if [ -n "$context_files" ]; then
|
|
81
|
+
echo "📂 読み込み推奨ファイル:"
|
|
82
|
+
echo "$context_files" | sed 's/^/ /'
|
|
83
|
+
fi
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
echo ""
|
|
87
|
+
echo -e "${GREEN}セッション開始の準備が完了しました。${NC}"
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-loop
|
|
3
|
+
description: 6フェーズ検証ループ(Build→Type→Lint→Test→Security→Diff)でPRレディネスを判定。
|
|
4
|
+
license: MIT
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
triggers:
|
|
7
|
+
- /verify
|
|
8
|
+
- /verify quick
|
|
9
|
+
- PRレビュー前
|
|
10
|
+
- セッション終了
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Verification Loop
|
|
14
|
+
|
|
15
|
+
> **要約**: 6フェーズの総合検証でPRレディネスを判定。quick/fullモードとStop Hook監査をサポート。
|
|
16
|
+
|
|
17
|
+
## 🔄 /verify コマンド
|
|
18
|
+
|
|
19
|
+
### Full検証 (REQ-VL-001)
|
|
20
|
+
|
|
21
|
+
**WHEN** `/verify` 実行
|
|
22
|
+
**DO** 6フェーズを順次実行
|
|
23
|
+
|
|
24
|
+
| # | フェーズ | コマンド | 失敗時 |
|
|
25
|
+
|---|---------|---------|--------|
|
|
26
|
+
| 1 | **Build** | `npm run build` | 即停止・修正 |
|
|
27
|
+
| 2 | **Type** | `npx tsc --noEmit` | 重大エラー修正 |
|
|
28
|
+
| 3 | **Lint** | `npm run lint` | 報告(--fix可) |
|
|
29
|
+
| 4 | **Test** | `npm test` | 報告 |
|
|
30
|
+
| 5 | **Security** | `npm audit` | 報告 |
|
|
31
|
+
| 6 | **Diff** | `git diff --stat` | レビュー |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### Quick検証 (REQ-VL-004)
|
|
36
|
+
|
|
37
|
+
**WHEN** `/verify quick` 実行
|
|
38
|
+
**DO** 最小セットを実行
|
|
39
|
+
|
|
40
|
+
- Type Check(可能なら)
|
|
41
|
+
- Tests(差分関連 or `test:unit`)
|
|
42
|
+
- Diff Review(サマリーのみ)
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 📋 Verification Report (REQ-VL-002)
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
╔════════════════════════════════════════════╗
|
|
50
|
+
║ VERIFICATION REPORT ║
|
|
51
|
+
╠════════════════════════════════════════════╣
|
|
52
|
+
║ Build: [PASS] ✅ ║
|
|
53
|
+
║ Types: [PASS] ✅ (0 errors) ║
|
|
54
|
+
║ Lint: [PASS] ⚠️ (3 warnings) ║
|
|
55
|
+
║ Tests: [PASS] ✅ (42/42, 85%) ║
|
|
56
|
+
║ Security: [PASS] ✅ (0 critical) ║
|
|
57
|
+
║ Diff: [INFO] 📝 (5 files, +120 -45) ║
|
|
58
|
+
╠════════════════════════════════════════════╣
|
|
59
|
+
║ Overall: [READY] ✅ for PR ║
|
|
60
|
+
╚════════════════════════════════════════════╝
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**NOT READY時**:
|
|
64
|
+
```
|
|
65
|
+
Issues to Fix:
|
|
66
|
+
1. src/user.ts:45 - Type error TS2322
|
|
67
|
+
2. tests/api.test.ts - 2 failed tests
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## ⏱️ Continuous Verification (REQ-VL-003)
|
|
73
|
+
|
|
74
|
+
**WHEN** 長時間セッション(15分以上)または大きな変更後
|
|
75
|
+
**DO** 自動検証を提案
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
💡 検証を実行しますか?
|
|
79
|
+
最後の検証から15分経過しました。
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 🔍 Stop Hook監査 (REQ-VL-005)
|
|
85
|
+
|
|
86
|
+
**WHEN** セッション終了
|
|
87
|
+
**DO** 編集ファイルに対して監査
|
|
88
|
+
|
|
89
|
+
| チェック | 対象 | アクション |
|
|
90
|
+
|---------|------|----------|
|
|
91
|
+
| `console.log` | `.ts`, `.tsx`, `.js` | 警告 |
|
|
92
|
+
| `debugger` | `.ts`, `.tsx`, `.js` | 警告 |
|
|
93
|
+
| TODO/FIXME | 全ファイル | リスト化 |
|
|
94
|
+
| 未コミット | Git管理 | コミット提案 |
|
|
95
|
+
|
|
96
|
+
**検出コマンド**:
|
|
97
|
+
```bash
|
|
98
|
+
grep -rn "console.log\|debugger" --include="*.ts" --include="*.tsx" src/
|
|
99
|
+
grep -rn "TODO\|FIXME" --include="*.ts" src/
|
|
100
|
+
git status --short
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## トレーサビリティ
|
|
106
|
+
|
|
107
|
+
- REQ-VL-001: Multi-Phase Verification
|
|
108
|
+
- REQ-VL-002: Verification Report
|
|
109
|
+
- REQ-VL-003: Continuous Verification
|
|
110
|
+
- REQ-VL-004: Verification Modes
|
|
111
|
+
- REQ-VL-005: Stop Hook監査
|