Skip to main content

setup-workflow

一鍵配置 multi-agent-workflow 規範執行機制

Source facts

Repository
miles990/multi-agent-workflow
Last source activity
May 12, 2026 at 10:52
Detected SKILL.md language
Chinese
Stars
4
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
100 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
setup-workflow
version
1.0.0
description
一鍵配置 multi-agent-workflow 規範執行機制
triggers
["setup-workflow","setup-wf"]
allowed-tools
["Bash","Read","Write","Edit","Glob"]
# Setup Workflow 為當前專案配置 multi-agent-workflow 的規範執行機制。 ## 使用方式 ```bash /setup-workflow # 完整設置 /setup-workflow --check # 僅檢查配置狀態 /setup-workflow --minimal # 最小設置(僅權限) ``` ## 配置內容 ### 1. Hook 腳本 自動 commit、驗證檢查的 Python 腳本。 ### 2. 權限預設 常用命令預先允許(git, pnpm, npm, pytest 等)。 ### 3. Memory 結構 研究/計劃/實作記錄目錄(可選)。 ## 執行步驟 ### Step 1: 檢查現有配置 ```bash # 檢查 settings.local.json 是否存在 cat .claude/settings.local.json 2>/dev/null || echo "{}" ``` 檢查項目: - [ ] `hooks.PostToolUse` 是否包含 Task matcher - [ ] `hooks.SubagentStop` 是否存在 - [ ] `permissions.allow` 是否包含常用命令 ### Step 2: 創建 Hook 腳本 創建 `scripts/hooks/workflow_hooks.py`: ```python #!/usr/bin/env python3 """ Workflow Hooks - 統一的 hook 處理入口 支援多種觸發類型:post_task, subagent_stop, pre_commit """ import json import subprocess import sys import os from pathlib import Path def get_project_dir(): return os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd()) def auto_commit(project_dir: str, message: str): """自動 commit 變更""" result = subprocess.run( ["git", "status", "--porcelain"], capture_output=True, text=True, cwd=project_dir ) if not result.stdout.strip(): return False subprocess.run( ["git", "add", "-A", ":!node_modules/", ":!dist/", ":!*.log", ":!.env*"], cwd=project_dir, capture_output=True ) full_msg = f"{message}\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>" result = subprocess.run( ["git", "commit", "-m", full_msg], cwd=project_dir, capture_output=True ) return result.returncode == 0 def run_verification(project_dir: str) -> tuple[bool, str]: """運行驗證(測試)""" package_json = Path(project_dir) / "package.json" pyproject = Path(project_dir) / "pyproject.toml" if package_json.exists(): result = subprocess.run( ["pnpm", "test", "--passWithNoTests"], capture_output=True, text=True, cwd=project_dir, timeout=300 ) elif pyproject.exists(): result = subprocess.run( ["pytest", "-x", "--tb=short"], capture_output=True, text=True, cwd=project_dir, timeout=300 ) else: return True, "No test framework detected" if result.returncode == 0: return True, "All tests passed" else: return False, result.stdout + result.stderr def handle_post_task(input_data: dict): """Task 完成後處理""" project_dir = input_data.get("cwd", get_project_dir()) tool_input = input_data.get("tool_input", {}) description = tool_input.get("description", "task completed")[:50] committed = auto_commit(project_dir, f"chore(task): {description}") if committed: passed, output = run_verification(project_dir) if not passed: print(f"\n⚠️ 測試失敗,請修復後再 commit:\n{output[:500]}", file=sys.stderr) def handle_subagent_stop(input_data: dict): """Subagent 結束處理""" project_dir = input_data.get("cwd", get_project_dir()) memory_dir = Path(project_dir) / ".claude" / "memory" if not memory_dir.exists(): return result = subprocess.run( ["git", "status", "--porcelain", str(memory_dir)], capture_output=True, text=True, cwd=project_dir ) if result.stdout.strip(): print(f"\n📝 偵測到 memory 變更,建議執行 /memory-commit", file=sys.stderr) def main(): if len(sys.argv) < 2: print("Usage: workflow_hooks.py <hook_type>", file=sys.stderr) return hook_type = sys.argv[1] try: input_data = json.load(sys.stdin) except: input_data = {} handlers = { "post_task": handle_post_task, "subagent_stop": handle_subagent_stop, } handler = handlers.get(hook_type) if handler: handler(input_data) if __name__ == "__main__": main() ``` ### Step 3: 更新 settings.local.json 合併以下配置到現有 settings: ```json { "permissions": { "allow": [ "Bash(git add:*)", "Bash(git commit:*)", "Bash(git push:*)", "Bash(git status:*)", "Bash(git diff:*)", "Bash(git log:*)", "Bash(pnpm:*)", "Bash(npm:*)", "Bash(npx:*)", "Bash(python3:*)", "Bash(pytest:*)", "Bash(vitest:*)" ] }, "hooks": { "PostToolUse": [ { "matcher": "Task", "hooks": [ { "type": "command", "command": "python3 \"$CLAUDE_PROJECT_DIR/scripts/hooks/workflow_hooks.py\" post_task" } ] } ], "SubagentStop": [ { "hooks": [ { "type": "command", "command": "python3 \"$CLAUDE_PROJECT_DIR/scripts/hooks/workflow_hooks.py\" subagent_stop" } ] } ] } } ``` ### Step 4: 創建 Memory 結構(可選) ```bash mkdir -p .claude/memory/{tasks,research,plans,implement,review,workflows} ``` ### Step 5: 顯示配置摘要 ``` ✅ Workflow 設置完成! 配置項目: ✓ Hook 腳本:scripts/hooks/workflow_hooks.py ✓ 權限:12 個常用命令已允許 ✓ Hooks:PostToolUse(Task), SubagentStop ⚠️ 重要規範: • 所有程式碼修改必須使用 Task 工具(確保自動 commit) • 禁止主對話直接 Edit/Write 程式碼 功能說明: • Task 完成後自動 commit 並運行測試 • Subagent 結束時檢測 memory 變更 • 測試失敗會提示修復 相關命令: • /memory-commit - 手動 commit memory 變更 • /orchestrate - 端到端工作流(會自動使用這些 hooks) ``` ## 注意事項 - 會保留現有的 settings.local.json 配置 - Hook 腳本需要 Python 3.8+ - 如果專案沒有測試框架,驗證步驟會跳過 - 可以用 `--minimal` 只設置權限,不啟用 hooks
View on GitHub