From 61ea9d47a6488f18405001f3906cd72278df40cd Mon Sep 17 00:00:00 2001 From: catlog22 Date: Sun, 8 Mar 2026 23:43:44 +0800 Subject: [PATCH] Enhance UX and Coordinator Role Constraints in Skills Documentation - Added detailed constraints for the Coordinator role in the team UX improvement skill, emphasizing orchestration responsibilities and workflow management. - Updated test cases in DashboardToolbar, useIssues, and useWebSocket to improve reliability and clarity. - Introduced new tests for configStore and ignore patterns in Codex Lens to ensure proper functionality and configuration handling. - Enhanced smart search functionality with improved embedding selection logic and added tests for various scenarios. - Updated installation and usage documentation to reflect changes in directory structure and role specifications. --- .claude/agents/team-worker.md | 4 +- .claude/skills/team-arch-opt/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .../team-arch-opt/specs/team-config.json | 2 +- .claude/skills/team-brainstorm/SKILL.md | 4 +- .../roles/coordinator/commands/monitor.md | 2 +- .claude/skills/team-designer/SKILL.md | 4 +- .../phases/03-content-generation.md | 4 +- .claude/skills/team-edict/SKILL.md | 2 +- .../skills/team-edict/role-specs/xingbu.md | 2 +- .../team-edict/roles/coordinator/role.md | 8 +- .claude/skills/team-frontend-debug/SKILL.md | 2 +- .../roles/coordinator/commands/dispatch.md | 22 +-- .claude/skills/team-frontend/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .claude/skills/team-issue/SKILL.md | 4 +- .../roles/coordinator/commands/monitor.md | 4 +- .claude/skills/team-iterdev/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .claude/skills/team-lifecycle-v4/SKILL.md | 4 +- .../roles/coordinator/commands/dispatch.md | 4 +- .claude/skills/team-perf-opt/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .../team-perf-opt/roles/coordinator/role.md | 2 +- .../team-perf-opt/specs/team-config.json | 2 +- .claude/skills/team-planex/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .../skills/team-quality-assurance/SKILL.md | 2 +- .../roles/coordinator/commands/dispatch.md | 2 +- .../roles/coordinator/commands/monitor.md | 6 +- .claude/skills/team-review/SKILL.md | 2 +- .../roles/coordinator/commands/dispatch.md | 2 +- .../roles/coordinator/commands/monitor.md | 8 +- .claude/skills/team-roadmap-dev/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 8 +- .../team-roadmap-dev/specs/pipelines.md | 6 +- .../team-roadmap-dev/specs/team-config.json | 2 +- .claude/skills/team-tech-debt/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .claude/skills/team-testing/SKILL.md | 2 +- .../roles/coordinator/commands/dispatch.md | 2 +- .../roles/coordinator/commands/monitor.md | 14 +- .claude/skills/team-uidesign/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .claude/skills/team-ultra-analyze/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 10 +- .../roles/coordinator/role.md | 2 +- .claude/skills/team-ux-improve/SKILL.md | 2 +- .../roles/coordinator/commands/monitor.md | 2 +- .../team-ux-improve/roles/coordinator/role.md | 4 +- .../skills/team-ux-improve/specs/pipelines.md | 2 +- .../team-ux-improve/specs/team-config.json | 2 +- .codex/skills/team-arch-opt/SKILL.md | 38 +++++ .../instructions/agent-instruction.md | 2 +- .codex/skills/team-brainstorm/SKILL.md | 42 +++++- .codex/skills/team-coordinate/SKILL.md | 38 +++++ .codex/skills/team-designer/SKILL.md | 40 +++++- .../team-designer/schemas/tasks-schema.md | 6 +- .codex/skills/team-edict/SKILL.md | 67 +++++++-- .codex/skills/team-edict/agents/aggregator.md | 2 +- .../skills/team-edict/agents/qa-verifier.md | 2 +- .../team-edict/agents/shangshu-dispatcher.md | 2 +- .../team-edict/agents/zhongshu-planner.md | 2 +- .../instructions/agent-instruction.md | 4 +- .codex/skills/team-executor/SKILL.md | 38 +++++ .codex/skills/team-frontend-debug/SKILL.md | 38 +++++ .codex/skills/team-frontend/SKILL.md | 38 +++++ .codex/skills/team-issue/SKILL.md | 44 +++++- .codex/skills/team-iterdev/SKILL.md | 44 +++++- .codex/skills/team-lifecycle-v4/SKILL.md | 44 +++++- .codex/skills/team-lifecycle/SKILL.md | 38 +++++ .../skills/team-lifecycle/agents/analyst.md | 12 +- .../team-lifecycle/agents/discuss-agent.md | 2 +- .../team-lifecycle/agents/explore-agent.md | 6 +- .codex/skills/team-lifecycle/agents/writer.md | 6 +- .../phases/01-requirement-clarification.md | 2 +- .../phases/02-team-initialization.md | 2 +- .../phases/03-task-chain-creation.md | 2 +- .../phases/04-pipeline-coordination.md | 2 +- .../phases/05-completion-report.md | 2 +- .codex/skills/team-perf-opt/SKILL.md | 38 +++++ .../instructions/agent-instruction.md | 2 +- .codex/skills/team-planex-v2/SKILL.md | 40 +++++- .codex/skills/team-planex/SKILL.md | 38 +++++ .codex/skills/team-quality-assurance/SKILL.md | 38 +++++ .codex/skills/team-review/SKILL.md | 38 +++++ .codex/skills/team-roadmap-dev/SKILL.md | 38 +++++ .codex/skills/team-tech-debt/SKILL.md | 38 +++++ .codex/skills/team-testing/SKILL.md | 38 +++++ .codex/skills/team-uidesign/SKILL.md | 38 +++++ .codex/skills/team-ultra-analyze/SKILL.md | 42 +++++- .codex/skills/team-ux-improve/SKILL.md | 38 +++++ .../DashboardToolbar.test.tsx | 2 +- ccw/frontend/src/hooks/useIssues.test.tsx | 30 ++-- ccw/frontend/src/hooks/useWebSocket.test.tsx | 2 + .../OrchestrationPlanBuilder.test.ts | 7 +- ccw/frontend/src/stores/configStore.test.ts | 67 +++++++++ ccw/frontend/src/test/i18n.tsx | 33 ++++- ccw/src/tools/smart-search.ts | 60 ++++++-- ccw/tests/smart-search-mcp-usage.test.js | 60 ++++++++ codex-lens/src/codexlens/config.py | 32 +++++ .../src/codexlens/storage/index_tree.py | 134 +++++++++++++----- .../tests/test_config_ignore_patterns.py | 24 ++++ .../tests/test_index_tree_ignore_dirs.py | 86 +++++++++++ docs/CCW-CODEX-COMMANDS-SKILLS-GUIDE.md | 2 +- docs/guide/installation.md | 2 +- docs/skills/custom.md | 2 +- docs/workflows/examples.md | 8 +- docs/zh/guide/installation.md | 2 +- docs/zh/skills/custom.md | 2 +- 110 files changed, 1516 insertions(+), 218 deletions(-) create mode 100644 ccw/frontend/src/stores/configStore.test.ts create mode 100644 codex-lens/tests/test_config_ignore_patterns.py create mode 100644 codex-lens/tests/test_index_tree_ignore_dirs.py diff --git a/.claude/agents/team-worker.md b/.claude/agents/team-worker.md index a3a8a01f..840bce26 100644 --- a/.claude/agents/team-worker.md +++ b/.claude/agents/team-worker.md @@ -8,12 +8,12 @@ description: | Examples: - Context: Coordinator spawns analyst worker - user: "role: analyst\nrole_spec: .claude/skills/team-lifecycle/role-specs/analyst.md\nsession: .workflow/.team/TLS-xxx" + user: "role: analyst\nrole_spec: ~ or /.claude/skills/team-lifecycle/role-specs/analyst.md\nsession: .workflow/.team/TLS-xxx" assistant: "Loading role spec, discovering RESEARCH-* tasks, executing Phase 2-4 domain logic" commentary: Agent parses prompt, loads role spec, runs built-in Phase 1 then role-specific Phase 2-4 then built-in Phase 5 - Context: Coordinator spawns writer worker with inner loop - user: "role: writer\nrole_spec: .claude/skills/team-lifecycle/role-specs/writer.md\ninner_loop: true" + user: "role: writer\nrole_spec: ~ or /.claude/skills/team-lifecycle/role-specs/writer.md\ninner_loop: true" assistant: "Loading role spec, processing all DRAFT-* tasks in inner loop" commentary: Agent detects inner_loop=true, loops Phase 1-5 for each same-prefix task color: green diff --git a/.claude/skills/team-arch-opt/SKILL.md b/.claude/skills/team-arch-opt/SKILL.md index ba91a44e..dc59beec 100644 --- a/.claude/skills/team-arch-opt/SKILL.md +++ b/.claude/skills/team-arch-opt/SKILL.md @@ -66,7 +66,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-arch-opt/roles//role.md +role_spec: ~ or /.claude/skills/team-arch-opt/roles//role.md session: session_id: team_name: arch-opt diff --git a/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md b/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md index b38487aa..f3ed4a01 100644 --- a/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md @@ -95,7 +95,7 @@ Find ready tasks, spawn workers, STOP. run_in_background: true, prompt: `## Role Assignment role: - role_spec: .claude/skills/team-arch-opt/roles//role.md + role_spec: ~ or /.claude/skills/team-arch-opt/roles//role.md session: session_id: team_name: arch-opt diff --git a/.claude/skills/team-arch-opt/specs/team-config.json b/.claude/skills/team-arch-opt/specs/team-config.json index 73265da8..b29e16d1 100644 --- a/.claude/skills/team-arch-opt/specs/team-config.json +++ b/.claude/skills/team-arch-opt/specs/team-config.json @@ -3,7 +3,7 @@ "team_name": "arch-opt", "team_display_name": "Architecture Optimization", "skill_name": "team-arch-opt", - "skill_path": ".claude/skills/team-arch-opt/", + "skill_path": "~ or /.claude/skills/team-arch-opt/", "pipeline_type": "Linear with Review-Fix Cycle (Parallel-Capable)", "completion_action": "interactive", "has_inline_discuss": true, diff --git a/.claude/skills/team-brainstorm/SKILL.md b/.claude/skills/team-brainstorm/SKILL.md index 95d88538..492b77ea 100644 --- a/.claude/skills/team-brainstorm/SKILL.md +++ b/.claude/skills/team-brainstorm/SKILL.md @@ -65,7 +65,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-brainstorm/roles//role.md +role_spec: ~ or /.claude/skills/team-brainstorm/roles//role.md session: session_id: team_name: brainstorm @@ -89,7 +89,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: ideator -role_spec: .claude/skills/team-brainstorm/roles/ideator/role.md +role_spec: ~ or /.claude/skills/team-brainstorm/roles/ideator/role.md session: session_id: team_name: brainstorm diff --git a/.claude/skills/team-brainstorm/roles/coordinator/commands/monitor.md b/.claude/skills/team-brainstorm/roles/coordinator/commands/monitor.md index 07a2e592..1e1faf08 100644 --- a/.claude/skills/team-brainstorm/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-brainstorm/roles/coordinator/commands/monitor.md @@ -91,7 +91,7 @@ Find ready tasks, spawn workers, STOP. run_in_background: true, prompt: `## Role Assignment role: - role_spec: .claude/skills/team-brainstorm/roles//role.md + role_spec: ~ or /.claude/skills/team-brainstorm/roles//role.md session: session_id: team_name: brainstorm diff --git a/.claude/skills/team-designer/SKILL.md b/.claude/skills/team-designer/SKILL.md index 7d11c5c7..c17f0f0e 100644 --- a/.claude/skills/team-designer/SKILL.md +++ b/.claude/skills/team-designer/SKILL.md @@ -32,7 +32,7 @@ Generate complete team skills following the team-lifecycle-v4 architecture: SKIL ## Key Design Principles 1. **v4 Architecture Compliance**: Generated skills follow team-lifecycle-v4 pattern — SKILL.md = pure router, beat model = coordinator-only, unified structure (roles/ + specs/ + templates/) -2. **Golden Sample Reference**: Uses `team-lifecycle-v4` as reference implementation at `.claude/skills/team-lifecycle-v4/` +2. **Golden Sample Reference**: Uses `team-lifecycle-v4` as reference implementation at `~ or /.claude/skills/team-lifecycle-v4/` 3. **Intelligent Commands Distribution**: Auto-determines which roles need `commands/` (2+ commands) vs inline logic (1 command) 4. **team-worker Compatibility**: Role.md files include correct YAML frontmatter for team-worker agent parsing @@ -76,7 +76,7 @@ Return: ## Golden Sample -Generated skills follow the architecture of `.claude/skills/team-lifecycle-v4/`: +Generated skills follow the architecture of `~ or /.claude/skills/team-lifecycle-v4/`: ``` .claude/skills// diff --git a/.claude/skills/team-designer/phases/03-content-generation.md b/.claude/skills/team-designer/phases/03-content-generation.md index b891db51..11a811a4 100644 --- a/.claude/skills/team-designer/phases/03-content-generation.md +++ b/.claude/skills/team-designer/phases/03-content-generation.md @@ -12,7 +12,7 @@ Generate all role files, specs, and templates based on `teamConfig` and the gene ## Golden Sample Reference -Read the golden sample at `.claude/skills/team-lifecycle-v4/` for each file type before generating. This ensures pattern fidelity. +Read the golden sample at `~ or /.claude/skills/team-lifecycle-v4/` for each file type before generating. This ensures pattern fidelity. ## Step 3.1: Generate Coordinator @@ -305,7 +305,7 @@ For each additional spec in `teamConfig.specs` (beyond pipelines), generate doma For each template in `teamConfig.templates`: -1. Check if golden sample has matching template at `.claude/skills/team-lifecycle-v4/templates/` +1. Check if golden sample has matching template at `~ or /.claude/skills/team-lifecycle-v4/templates/` 2. If exists: copy and adapt for new domain 3. If not: generate domain-appropriate template structure diff --git a/.claude/skills/team-edict/SKILL.md b/.claude/skills/team-edict/SKILL.md index 5592305b..05dcdeb7 100644 --- a/.claude/skills/team-edict/SKILL.md +++ b/.claude/skills/team-edict/SKILL.md @@ -193,7 +193,7 @@ Agent({ name: "", team_name: "", prompt: `role: -role_spec: .claude/skills/team-edict/role-specs/.md +role_spec: ~ or /.claude/skills/team-edict/role-specs/.md session: session_id: team_name: diff --git a/.claude/skills/team-edict/role-specs/xingbu.md b/.claude/skills/team-edict/role-specs/xingbu.md index 71ea293e..b77f3e85 100644 --- a/.claude/skills/team-edict/role-specs/xingbu.md +++ b/.claude/skills/team-edict/role-specs/xingbu.md @@ -24,7 +24,7 @@ team_msg(operation="log", session_id=, from="xingbu", 1. 读取当前任务(QA-* task description) 2. 读取 `/plan/dispatch-plan.md` 获取验收标准 -3. 读取 `.claude/skills/team-edict/specs/quality-gates.md` 获取质量门标准 +3. 读取 `~ or /.claude/skills/team-edict/specs/quality-gates.md` 获取质量门标准 4. 读取被测部门(通常为工部)的产出报告 ## Phase 3: 质量审查 diff --git a/.claude/skills/team-edict/roles/coordinator/role.md b/.claude/skills/team-edict/roles/coordinator/role.md index 5408f355..800df8b9 100644 --- a/.claude/skills/team-edict/roles/coordinator/role.md +++ b/.claude/skills/team-edict/roles/coordinator/role.md @@ -18,7 +18,7 @@ ```javascript // Phase 0/1 启动时执行 -Read(".claude/skills/team-edict/specs/team-config.json") // 加载路由规则和artifact路径 +Read("~ or /.claude/skills/team-edict/specs/team-config.json") // 加载路由规则和artifact路径 ``` --- @@ -106,7 +106,7 @@ Read(".claude/skills/team-edict/specs/team-config.json") // 加载路由规则 name: "zhongshu", team_name: , prompt: `role: zhongshu -role_spec: .claude/skills/team-edict/role-specs/zhongshu.md +role_spec: ~ or /.claude/skills/team-edict/role-specs/zhongshu.md session: session_id: team_name: @@ -138,7 +138,7 @@ inner_loop: false`, name: "menxia", team_name: , prompt: `role: menxia -role_spec: .claude/skills/team-edict/role-specs/menxia.md +role_spec: ~ or /.claude/skills/team-edict/role-specs/menxia.md session: session_id: team_name: @@ -177,7 +177,7 @@ inner_loop: false`, name: "shangshu", team_name: , prompt: `role: shangshu -role_spec: .claude/skills/team-edict/role-specs/shangshu.md +role_spec: ~ or /.claude/skills/team-edict/role-specs/shangshu.md session: session_id: team_name: diff --git a/.claude/skills/team-frontend-debug/SKILL.md b/.claude/skills/team-frontend-debug/SKILL.md index c8d977cc..a21234c6 100644 --- a/.claude/skills/team-frontend-debug/SKILL.md +++ b/.claude/skills/team-frontend-debug/SKILL.md @@ -99,7 +99,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-frontend-debug/roles//role.md +role_spec: ~ or /.claude/skills/team-frontend-debug/roles//role.md session: session_id: team_name: diff --git a/.claude/skills/team-frontend-debug/roles/coordinator/commands/dispatch.md b/.claude/skills/team-frontend-debug/roles/coordinator/commands/dispatch.md index 55b6f2d5..45d7119d 100644 --- a/.claude/skills/team-frontend-debug/roles/coordinator/commands/dispatch.md +++ b/.claude/skills/team-frontend-debug/roles/coordinator/commands/dispatch.md @@ -29,7 +29,7 @@ EXPECTED: + CONSTRAINTS: --- InnerLoop: -RoleSpec: .claude/skills/team-frontend-debug/roles//role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles//role.md ``` --- @@ -55,7 +55,7 @@ EXPECTED: /artifacts/TEST-001-report.md + /artifacts/TEST-001- CONSTRAINTS: Use Chrome DevTools MCP only | Do not modify any code | Test all listed features --- InnerLoop: true -RoleSpec: .claude/skills/team-frontend-debug/roles/tester/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/tester/role.md ``` ### ANALYZE-001 (Test Mode): Analyze Discovered Issues @@ -75,7 +75,7 @@ EXPECTED: /artifacts/ANALYZE-001-rca.md with root causes for all issues CONSTRAINTS: Read-only analysis | Skip low-severity warnings unless user requests --- InnerLoop: false -RoleSpec: .claude/skills/team-frontend-debug/roles/analyzer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/analyzer/role.md ``` **Conditional**: If TEST-001 reports zero issues → skip ANALYZE-001, FIX-001, VERIFY-001. Pipeline completes. @@ -96,7 +96,7 @@ EXPECTED: Modified source files + /artifacts/FIX-001-changes.md CONSTRAINTS: Minimal changes per issue | Follow existing code style --- InnerLoop: true -RoleSpec: .claude/skills/team-frontend-debug/roles/fixer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/fixer/role.md ``` ### VERIFY-001 (Test Mode): Re-Test After Fix @@ -117,7 +117,7 @@ EXPECTED: /artifacts/VERIFY-001-report.md with pass/fail per previously CONSTRAINTS: Only re-test failed scenarios | Use Chrome DevTools MCP only --- InnerLoop: false -RoleSpec: .claude/skills/team-frontend-debug/roles/verifier/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/verifier/role.md ``` --- @@ -143,7 +143,7 @@ EXPECTED: /evidence/ directory with all captures + reproduction report CONSTRAINTS: Use Chrome DevTools MCP only | Do not modify any code --- InnerLoop: false -RoleSpec: .claude/skills/team-frontend-debug/roles/reproducer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/reproducer/role.md ``` ### ANALYZE-001 (Debug Mode): Root Cause Analysis @@ -164,7 +164,7 @@ EXPECTED: /artifacts/ANALYZE-001-rca.md with root cause, file:line, fix CONSTRAINTS: Read-only analysis | Request more evidence if inconclusive --- InnerLoop: false -RoleSpec: .claude/skills/team-frontend-debug/roles/analyzer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/analyzer/role.md ``` ### FIX-001 (Debug Mode): Code Fix @@ -183,7 +183,7 @@ EXPECTED: Modified source files + /artifacts/FIX-001-changes.md CONSTRAINTS: Minimal changes | Follow existing code style | No breaking changes --- InnerLoop: true -RoleSpec: .claude/skills/team-frontend-debug/roles/fixer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/fixer/role.md ``` ### VERIFY-001 (Debug Mode): Fix Verification @@ -203,7 +203,7 @@ EXPECTED: /artifacts/VERIFY-001-report.md with pass/fail verdict CONSTRAINTS: Use Chrome DevTools MCP only | Same steps as reproduction --- InnerLoop: false -RoleSpec: .claude/skills/team-frontend-debug/roles/verifier/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/verifier/role.md ``` --- @@ -219,7 +219,7 @@ TASK: CONTEXT: Session + Analyzer request --- InnerLoop: false -RoleSpec: .claude/skills/team-frontend-debug/roles/reproducer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/reproducer/role.md ``` ### FIX-002 (Either Mode): Re-Fix After Failed Verification @@ -231,7 +231,7 @@ TASK: Review VERIFY-001 failure details, apply corrective fix CONTEXT: Session + VERIFY-001-report.md --- InnerLoop: true -RoleSpec: .claude/skills/team-frontend-debug/roles/fixer/role.md +RoleSpec: ~ or /.claude/skills/team-frontend-debug/roles/fixer/role.md ``` ## Conditional Skip Rules diff --git a/.claude/skills/team-frontend/SKILL.md b/.claude/skills/team-frontend/SKILL.md index a365cecf..5a8dad1f 100644 --- a/.claude/skills/team-frontend/SKILL.md +++ b/.claude/skills/team-frontend/SKILL.md @@ -66,7 +66,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-frontend/roles//role.md +role_spec: ~ or /.claude/skills/team-frontend/roles//role.md session: session_id: team_name: frontend diff --git a/.claude/skills/team-frontend/roles/coordinator/commands/monitor.md b/.claude/skills/team-frontend/roles/coordinator/commands/monitor.md index c64a127f..b181a002 100644 --- a/.claude/skills/team-frontend/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-frontend/roles/coordinator/commands/monitor.md @@ -129,7 +129,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-frontend/roles//role.md +role_spec: ~ or /.claude/skills/team-frontend/roles//role.md session: session_id: team_name: frontend diff --git a/.claude/skills/team-issue/SKILL.md b/.claude/skills/team-issue/SKILL.md index 1ab6d4d8..3ddfeeba 100644 --- a/.claude/skills/team-issue/SKILL.md +++ b/.claude/skills/team-issue/SKILL.md @@ -67,7 +67,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-issue/roles//role.md +role_spec: ~ or /.claude/skills/team-issue/roles//role.md session: session_id: team_name: issue @@ -89,7 +89,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-issue/roles//role.md +role_spec: ~ or /.claude/skills/team-issue/roles//role.md session: session_id: team_name: issue diff --git a/.claude/skills/team-issue/roles/coordinator/commands/monitor.md b/.claude/skills/team-issue/roles/coordinator/commands/monitor.md index b1001454..a03ddfe3 100644 --- a/.claude/skills/team-issue/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-issue/roles/coordinator/commands/monitor.md @@ -101,7 +101,7 @@ Find ready tasks, spawn workers, STOP. run_in_background: true, prompt: `## Role Assignment role: - role_spec: .claude/skills/team-issue/roles//role.md + role_spec: ~ or /.claude/skills/team-issue/roles//role.md session: session_id: team_name: issue @@ -133,7 +133,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-issue/roles//role.md +role_spec: ~ or /.claude/skills/team-issue/roles//role.md session: session_id: team_name: issue diff --git a/.claude/skills/team-iterdev/SKILL.md b/.claude/skills/team-iterdev/SKILL.md index 942f5fb8..6aa7a59d 100644 --- a/.claude/skills/team-iterdev/SKILL.md +++ b/.claude/skills/team-iterdev/SKILL.md @@ -66,7 +66,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-iterdev/roles//role.md +role_spec: ~ or /.claude/skills/team-iterdev/roles//role.md session: session_id: team_name: iterdev diff --git a/.claude/skills/team-iterdev/roles/coordinator/commands/monitor.md b/.claude/skills/team-iterdev/roles/coordinator/commands/monitor.md index 39c776e4..573fa0ef 100644 --- a/.claude/skills/team-iterdev/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-iterdev/roles/coordinator/commands/monitor.md @@ -101,7 +101,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-iterdev/roles//role.md +role_spec: ~ or /.claude/skills/team-iterdev/roles//role.md session: session_id: team_name: iterdev diff --git a/.claude/skills/team-lifecycle-v4/SKILL.md b/.claude/skills/team-lifecycle-v4/SKILL.md index ed3c2c2a..b30e753c 100644 --- a/.claude/skills/team-lifecycle-v4/SKILL.md +++ b/.claude/skills/team-lifecycle-v4/SKILL.md @@ -71,7 +71,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-lifecycle-v4/roles//role.md +role_spec: ~ or /.claude/skills/team-lifecycle-v4/roles//role.md session: session_id: team_name: @@ -98,7 +98,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: supervisor -role_spec: .claude/skills/team-lifecycle-v4/roles/supervisor/role.md +role_spec: ~ or /.claude/skills/team-lifecycle-v4/roles/supervisor/role.md session: session_id: team_name: diff --git a/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md b/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md index f32856a1..358ac886 100644 --- a/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +++ b/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md @@ -29,7 +29,7 @@ EXPECTED: + CONSTRAINTS: --- InnerLoop: -RoleSpec: .claude/skills/team-lifecycle-v4/roles//role.md +RoleSpec: ~ or /.claude/skills/team-lifecycle-v4/roles//role.md ``` ## InnerLoop Flag Rules @@ -45,7 +45,7 @@ CHECKPOINT tasks are dispatched like regular tasks but handled differently at sp - Owner: supervisor - **NOT spawned as team-worker** — coordinator wakes the resident supervisor via SendMessage - If `supervision: false` in team-session.json, skip creating CHECKPOINT tasks entirely -- RoleSpec in description: `.claude/skills/team-lifecycle-v4/roles/supervisor/role.md` +- RoleSpec in description: `~ or /.claude/skills/team-lifecycle-v4/roles/supervisor/role.md` ## Dependency Validation diff --git a/.claude/skills/team-perf-opt/SKILL.md b/.claude/skills/team-perf-opt/SKILL.md index e2ef8261..a7476dd9 100644 --- a/.claude/skills/team-perf-opt/SKILL.md +++ b/.claude/skills/team-perf-opt/SKILL.md @@ -78,7 +78,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-perf-opt/roles//role.md +role_spec: ~ or /.claude/skills/team-perf-opt/roles//role.md session: session_id: team_name: perf-opt diff --git a/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md b/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md index c474ca92..c435fc27 100644 --- a/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md @@ -73,7 +73,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-perf-opt/role-specs/.md +role_spec: ~ or /.claude/skills/team-perf-opt/role-specs/.md session: session_id: team_name: perf-opt diff --git a/.claude/skills/team-perf-opt/roles/coordinator/role.md b/.claude/skills/team-perf-opt/roles/coordinator/role.md index c083e6aa..e74a6cb3 100644 --- a/.claude/skills/team-perf-opt/roles/coordinator/role.md +++ b/.claude/skills/team-perf-opt/roles/coordinator/role.md @@ -112,7 +112,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol). ### Initial Spawn Find first unblocked task and spawn its worker using SKILL.md Worker Spawn Template with: -- `role_spec: .claude/skills/team-perf-opt/roles//role.md` +- `role_spec: ~ or /.claude/skills/team-perf-opt/roles//role.md` - `team_name: perf-opt` **STOP** after spawning. Wait for worker callback. diff --git a/.claude/skills/team-perf-opt/specs/team-config.json b/.claude/skills/team-perf-opt/specs/team-config.json index c535794a..9352e30f 100644 --- a/.claude/skills/team-perf-opt/specs/team-config.json +++ b/.claude/skills/team-perf-opt/specs/team-config.json @@ -3,7 +3,7 @@ "team_name": "perf-opt", "team_display_name": "Performance Optimization", "skill_name": "team-perf-opt", - "skill_path": ".claude/skills/team-perf-opt/", + "skill_path": "~ or /.claude/skills/team-perf-opt/", "worker_agent": "team-worker", "pipeline_type": "Linear with Review-Fix Cycle (Parallel-Capable)", "completion_action": "interactive", diff --git a/.claude/skills/team-planex/SKILL.md b/.claude/skills/team-planex/SKILL.md index 68d988e5..50de5157 100644 --- a/.claude/skills/team-planex/SKILL.md +++ b/.claude/skills/team-planex/SKILL.md @@ -65,7 +65,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-planex/roles//role.md +role_spec: ~ or /.claude/skills/team-planex/roles//role.md session: session_id: team_name: planex diff --git a/.claude/skills/team-planex/roles/coordinator/commands/monitor.md b/.claude/skills/team-planex/roles/coordinator/commands/monitor.md index e26cec58..fe8d9118 100644 --- a/.claude/skills/team-planex/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-planex/roles/coordinator/commands/monitor.md @@ -125,7 +125,7 @@ Collect task states from TaskList() run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-planex/roles//role.md +role_spec: ~ or /.claude/skills/team-planex/roles//role.md session: session_id: team_name: diff --git a/.claude/skills/team-quality-assurance/SKILL.md b/.claude/skills/team-quality-assurance/SKILL.md index e2def671..23193da7 100644 --- a/.claude/skills/team-quality-assurance/SKILL.md +++ b/.claude/skills/team-quality-assurance/SKILL.md @@ -68,7 +68,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-quality-assurance/roles//role.md +role_spec: ~ or /.claude/skills/team-quality-assurance/roles//role.md session: session_id: team_name: quality-assurance diff --git a/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md b/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md index 7140c475..e5b9765b 100644 --- a/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +++ b/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md @@ -30,7 +30,7 @@ EXPECTED: + CONSTRAINTS: --- InnerLoop: -RoleSpec: .claude/skills/team-quality-assurance/roles//role.md +RoleSpec: ~ or /.claude/skills/team-quality-assurance/roles//role.md ``` ## Pipeline Task Registry diff --git a/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md b/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md index 668c4aac..0e9bb888 100644 --- a/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md @@ -59,7 +59,7 @@ EXPECTED: Fixed test files | Improved coverage CONSTRAINTS: Only modify test files | No source changes --- InnerLoop: false -RoleSpec: .claude/skills/team-quality-assurance/roles/generator/role.md" +RoleSpec: ~ or /.claude/skills/team-quality-assurance/roles/generator/role.md" }) TaskCreate({ subject: "QARUN-gc-: Re-execute (GC #)", @@ -72,7 +72,7 @@ EXPECTED: /results/run--gc-.json CONSTRAINTS: Read-only execution --- InnerLoop: false -RoleSpec: .claude/skills/team-quality-assurance/roles/executor/role.md", +RoleSpec: ~ or /.claude/skills/team-quality-assurance/roles/executor/role.md", blockedBy: ["QAGEN-fix-"] }) ``` @@ -149,7 +149,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-quality-assurance/roles//role.md +role_spec: ~ or /.claude/skills/team-quality-assurance/roles//role.md session: session_id: team_name: quality-assurance diff --git a/.claude/skills/team-review/SKILL.md b/.claude/skills/team-review/SKILL.md index be5140b6..0a32a43e 100644 --- a/.claude/skills/team-review/SKILL.md +++ b/.claude/skills/team-review/SKILL.md @@ -66,7 +66,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-review/roles//role.md +role_spec: ~ or /.claude/skills/team-review/roles//role.md session: session_id: team_name: review diff --git a/.claude/skills/team-review/roles/coordinator/commands/dispatch.md b/.claude/skills/team-review/roles/coordinator/commands/dispatch.md index a7025873..93c7d121 100644 --- a/.claude/skills/team-review/roles/coordinator/commands/dispatch.md +++ b/.claude/skills/team-review/roles/coordinator/commands/dispatch.md @@ -30,7 +30,7 @@ EXPECTED: + CONSTRAINTS: --- InnerLoop: -RoleSpec: .claude/skills/team-review/roles//role.md +RoleSpec: ~ or /.claude/skills/team-review/roles//role.md ``` ## Pipeline Task Registry diff --git a/.claude/skills/team-review/roles/coordinator/commands/monitor.md b/.claude/skills/team-review/roles/coordinator/commands/monitor.md index 5f35ed14..782ec336 100644 --- a/.claude/skills/team-review/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-review/roles/coordinator/commands/monitor.md @@ -24,9 +24,9 @@ Event-driven pipeline coordination. Beat model: coordinator wake -> process -> s | Prefix | Role | Role Spec | inner_loop | |--------|------|-----------|------------| -| SCAN-* | scanner | `.claude/skills/team-review/roles/scanner/role.md` | false | -| REV-* | reviewer | `.claude/skills/team-review/roles/reviewer/role.md` | false | -| FIX-* | fixer | `.claude/skills/team-review/roles/fixer/role.md` | true | +| SCAN-* | scanner | `~ or /.claude/skills/team-review/roles/scanner/role.md` | false | +| REV-* | reviewer | `~ or /.claude/skills/team-review/roles/reviewer/role.md` | false | +| FIX-* | fixer | `~ or /.claude/skills/team-review/roles/fixer/role.md` | true | ## handleCallback @@ -123,7 +123,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-review/roles//role.md +role_spec: ~ or /.claude/skills/team-review/roles//role.md session: session_id: team_name: review diff --git a/.claude/skills/team-roadmap-dev/SKILL.md b/.claude/skills/team-roadmap-dev/SKILL.md index fbe8a607..807f0b37 100644 --- a/.claude/skills/team-roadmap-dev/SKILL.md +++ b/.claude/skills/team-roadmap-dev/SKILL.md @@ -72,7 +72,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-roadmap-dev/roles//role.md +role_spec: ~ or /.claude/skills/team-roadmap-dev/roles//role.md session: session_id: team_name: roadmap-dev diff --git a/.claude/skills/team-roadmap-dev/roles/coordinator/commands/monitor.md b/.claude/skills/team-roadmap-dev/roles/coordinator/commands/monitor.md index 5f534eac..49664d3c 100644 --- a/.claude/skills/team-roadmap-dev/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-roadmap-dev/roles/coordinator/commands/monitor.md @@ -15,9 +15,9 @@ Handle all coordinator monitoring events for the roadmap-dev pipeline using the | Prefix | Role | Role Spec | inner_loop | |--------|------|-----------|------------| -| PLAN | planner | `.claude/skills/team-roadmap-dev/roles/planner/role.md` | true (cli_tools: gemini --mode analysis) | -| EXEC | executor | `.claude/skills/team-roadmap-dev/roles/executor/role.md` | true (cli_tools: gemini --mode write) | -| VERIFY | verifier | `.claude/skills/team-roadmap-dev/roles/verifier/role.md` | true | +| PLAN | planner | `~ or /.claude/skills/team-roadmap-dev/roles/planner/role.md` | true (cli_tools: gemini --mode analysis) | +| EXEC | executor | `~ or /.claude/skills/team-roadmap-dev/roles/executor/role.md` | true (cli_tools: gemini --mode write) | +| VERIFY | verifier | `~ or /.claude/skills/team-roadmap-dev/roles/verifier/role.md` | true | ### Pipeline Structure @@ -247,7 +247,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-roadmap-dev/roles//role.md +role_spec: ~ or /.claude/skills/team-roadmap-dev/roles//role.md session: session_id: team_name: roadmap-dev diff --git a/.claude/skills/team-roadmap-dev/specs/pipelines.md b/.claude/skills/team-roadmap-dev/specs/pipelines.md index 21d602ee..d75333d5 100644 --- a/.claude/skills/team-roadmap-dev/specs/pipelines.md +++ b/.claude/skills/team-roadmap-dev/specs/pipelines.md @@ -88,6 +88,6 @@ Phase N: PLAN-N01 --> EXEC-N01 --> VERIFY-N01 | Prefix | Role | Role Spec | Inner Loop | |--------|------|-----------|------------| -| PLAN | planner | `.claude/skills/team-roadmap-dev/roles/planner/role.md` | true | -| EXEC | executor | `.claude/skills/team-roadmap-dev/roles/executor/role.md` | true | -| VERIFY | verifier | `.claude/skills/team-roadmap-dev/roles/verifier/role.md` | true | +| PLAN | planner | `~ or /.claude/skills/team-roadmap-dev/roles/planner/role.md` | true | +| EXEC | executor | `~ or /.claude/skills/team-roadmap-dev/roles/executor/role.md` | true | +| VERIFY | verifier | `~ or /.claude/skills/team-roadmap-dev/roles/verifier/role.md` | true | diff --git a/.claude/skills/team-roadmap-dev/specs/team-config.json b/.claude/skills/team-roadmap-dev/specs/team-config.json index 2970744f..c29f5099 100644 --- a/.claude/skills/team-roadmap-dev/specs/team-config.json +++ b/.claude/skills/team-roadmap-dev/specs/team-config.json @@ -2,7 +2,7 @@ "team_name": "roadmap-dev", "team_display_name": "Roadmap Dev", "skill_name": "team-roadmap-dev", - "skill_path": ".claude/skills/team-roadmap-dev/", + "skill_path": "~ or /.claude/skills/team-roadmap-dev/", "design_source": "roadmap-driven development workflow design (2026-02-24)", "pipeline_type": "Phased", "pipeline": { diff --git a/.claude/skills/team-tech-debt/SKILL.md b/.claude/skills/team-tech-debt/SKILL.md index fcf9afc1..7de7819f 100644 --- a/.claude/skills/team-tech-debt/SKILL.md +++ b/.claude/skills/team-tech-debt/SKILL.md @@ -68,7 +68,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-tech-debt/roles//role.md +role_spec: ~ or /.claude/skills/team-tech-debt/roles//role.md session: session_id: team_name: tech-debt diff --git a/.claude/skills/team-tech-debt/roles/coordinator/commands/monitor.md b/.claude/skills/team-tech-debt/roles/coordinator/commands/monitor.md index bd064881..9b081052 100644 --- a/.claude/skills/team-tech-debt/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-tech-debt/roles/coordinator/commands/monitor.md @@ -123,7 +123,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-tech-debt/roles//role.md +role_spec: ~ or /.claude/skills/team-tech-debt/roles//role.md session: session_id: team_name: tech-debt diff --git a/.claude/skills/team-testing/SKILL.md b/.claude/skills/team-testing/SKILL.md index e37d0365..640f51ab 100644 --- a/.claude/skills/team-testing/SKILL.md +++ b/.claude/skills/team-testing/SKILL.md @@ -67,7 +67,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-testing/roles//role.md +role_spec: ~ or /.claude/skills/team-testing/roles//role.md session: session_id: team_name: testing diff --git a/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md b/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md index 15407b71..3944e2db 100644 --- a/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md +++ b/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md @@ -31,7 +31,7 @@ EXPECTED: + CONSTRAINTS: --- InnerLoop: -RoleSpec: .claude/skills/team-testing/roles//role.md +RoleSpec: ~ or /.claude/skills/team-testing/roles//role.md ``` ## Pipeline Task Registry diff --git a/.claude/skills/team-testing/roles/coordinator/commands/monitor.md b/.claude/skills/team-testing/roles/coordinator/commands/monitor.md index f0a6b0c9..9fff14ae 100644 --- a/.claude/skills/team-testing/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-testing/roles/coordinator/commands/monitor.md @@ -25,10 +25,10 @@ Event-driven pipeline coordination. Beat model: coordinator wake -> process -> s | Prefix | Role | Role Spec | inner_loop | |--------|------|-----------|------------| -| STRATEGY-* | strategist | `.claude/skills/team-testing/roles/strategist/role.md` | false | -| TESTGEN-* | generator | `.claude/skills/team-testing/roles/generator/role.md` | true | -| TESTRUN-* | executor | `.claude/skills/team-testing/roles/executor/role.md` | true | -| TESTANA-* | analyst | `.claude/skills/team-testing/roles/analyst/role.md` | false | +| STRATEGY-* | strategist | `~ or /.claude/skills/team-testing/roles/strategist/role.md` | false | +| TESTGEN-* | generator | `~ or /.claude/skills/team-testing/roles/generator/role.md` | true | +| TESTRUN-* | executor | `~ or /.claude/skills/team-testing/roles/executor/role.md` | true | +| TESTANA-* | analyst | `~ or /.claude/skills/team-testing/roles/analyst/role.md` | false | ## handleCallback @@ -68,7 +68,7 @@ EXPECTED: Revised test files in /tests// CONSTRAINTS: Only modify test files --- InnerLoop: true -RoleSpec: .claude/skills/team-testing/roles/generator/role.md" +RoleSpec: ~ or /.claude/skills/team-testing/roles/generator/role.md" }) TaskCreate({ subject: "TESTRUN--fix-: Re-execute (GC #)", @@ -80,7 +80,7 @@ CONTEXT: EXPECTED: /results/run--gc.json --- InnerLoop: true -RoleSpec: .claude/skills/team-testing/roles/executor/role.md", +RoleSpec: ~ or /.claude/skills/team-testing/roles/executor/role.md", blockedBy: ["TESTGEN--fix-"] }) ``` @@ -150,7 +150,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-testing/roles//role.md +role_spec: ~ or /.claude/skills/team-testing/roles//role.md session: session_id: team_name: testing diff --git a/.claude/skills/team-uidesign/SKILL.md b/.claude/skills/team-uidesign/SKILL.md index b86f839e..7c5f4b99 100644 --- a/.claude/skills/team-uidesign/SKILL.md +++ b/.claude/skills/team-uidesign/SKILL.md @@ -67,7 +67,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-uidesign/roles//role.md +role_spec: ~ or /.claude/skills/team-uidesign/roles//role.md session: session_id: team_name: uidesign diff --git a/.claude/skills/team-uidesign/roles/coordinator/commands/monitor.md b/.claude/skills/team-uidesign/roles/coordinator/commands/monitor.md index 0e706cb2..ed8c8dd2 100644 --- a/.claude/skills/team-uidesign/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-uidesign/roles/coordinator/commands/monitor.md @@ -127,7 +127,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-uidesign/roles//role.md +role_spec: ~ or /.claude/skills/team-uidesign/roles//role.md session: session_id: team_name: uidesign diff --git a/.claude/skills/team-ultra-analyze/SKILL.md b/.claude/skills/team-ultra-analyze/SKILL.md index a10b7b3f..3f0839b3 100644 --- a/.claude/skills/team-ultra-analyze/SKILL.md +++ b/.claude/skills/team-ultra-analyze/SKILL.md @@ -75,7 +75,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-ultra-analyze/roles//role.md +role_spec: ~ or /.claude/skills/team-ultra-analyze/roles//role.md session: session_id: team_name: ultra-analyze diff --git a/.claude/skills/team-ultra-analyze/roles/coordinator/commands/monitor.md b/.claude/skills/team-ultra-analyze/roles/coordinator/commands/monitor.md index 2be49e34..91a1129f 100644 --- a/.claude/skills/team-ultra-analyze/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-ultra-analyze/roles/coordinator/commands/monitor.md @@ -211,10 +211,10 @@ Find and spawn the next ready tasks. | Task Prefix | Role | Role Spec | |-------------|------|-----------| -| `EXPLORE-*` | explorer | `.claude/skills/team-ultra-analyze/role-specs/explorer.md` | -| `ANALYZE-*` | analyst | `.claude/skills/team-ultra-analyze/role-specs/analyst.md` | -| `DISCUSS-*` | discussant | `.claude/skills/team-ultra-analyze/role-specs/discussant.md` | -| `SYNTH-*` | synthesizer | `.claude/skills/team-ultra-analyze/role-specs/synthesizer.md` | +| `EXPLORE-*` | explorer | `~ or /.claude/skills/team-ultra-analyze/role-specs/explorer.md` | +| `ANALYZE-*` | analyst | `~ or /.claude/skills/team-ultra-analyze/role-specs/analyst.md` | +| `DISCUSS-*` | discussant | `~ or /.claude/skills/team-ultra-analyze/role-specs/discussant.md` | +| `SYNTH-*` | synthesizer | `~ or /.claude/skills/team-ultra-analyze/role-specs/synthesizer.md` | 3. Spawn team-worker for each ready task: @@ -227,7 +227,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-ultra-analyze/role-specs/.md +role_spec: ~ or /.claude/skills/team-ultra-analyze/role-specs/.md session: session_id: team_name: ultra-analyze diff --git a/.claude/skills/team-ultra-analyze/roles/coordinator/role.md b/.claude/skills/team-ultra-analyze/roles/coordinator/role.md index cb26e511..9823c642 100644 --- a/.claude/skills/team-ultra-analyze/roles/coordinator/role.md +++ b/.claude/skills/team-ultra-analyze/roles/coordinator/role.md @@ -152,7 +152,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol): ### Initial Spawn Find first unblocked tasks and spawn their workers. Use SKILL.md Worker Spawn Template with: -- `role_spec: .claude/skills/team-ultra-analyze/roles//role.md` +- `role_spec: ~ or /.claude/skills/team-ultra-analyze/roles//role.md` - `team_name: ultra-analyze` - `inner_loop: false` diff --git a/.claude/skills/team-ux-improve/SKILL.md b/.claude/skills/team-ux-improve/SKILL.md index db7bad68..87d90922 100644 --- a/.claude/skills/team-ux-improve/SKILL.md +++ b/.claude/skills/team-ux-improve/SKILL.md @@ -76,7 +76,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-ux-improve/roles//role.md +role_spec: ~ or /.claude/skills/team-ux-improve/roles//role.md session: session_id: team_name: ux-improve diff --git a/.claude/skills/team-ux-improve/roles/coordinator/commands/monitor.md b/.claude/skills/team-ux-improve/roles/coordinator/commands/monitor.md index eff2e10d..048fb69b 100644 --- a/.claude/skills/team-ux-improve/roles/coordinator/commands/monitor.md +++ b/.claude/skills/team-ux-improve/roles/coordinator/commands/monitor.md @@ -102,7 +102,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-ux-improve/roles//role.md +role_spec: ~ or /.claude/skills/team-ux-improve/roles//role.md session: session_id: team_name: ux-improve diff --git a/.claude/skills/team-ux-improve/roles/coordinator/role.md b/.claude/skills/team-ux-improve/roles/coordinator/role.md index dbfd827b..d810a291 100644 --- a/.claude/skills/team-ux-improve/roles/coordinator/role.md +++ b/.claude/skills/team-ux-improve/roles/coordinator/role.md @@ -76,7 +76,7 @@ TEXT-LEVEL ONLY. No source code reading. ├── explorations/ └── wisdom/contributions/ ``` -3. **Wisdom Initialization**: Copy `.claude/skills/team-ux-improve/wisdom/` to `/wisdom/` +3. **Wisdom Initialization**: Copy `~ or /.claude/skills/team-ux-improve/wisdom/` to `/wisdom/` 4. Initialize `.msg/meta.json` via team_msg state_update with pipeline metadata 5. TeamCreate(team_name="ux-improve") 6. Do NOT spawn workers yet - deferred to Phase 4 @@ -110,7 +110,7 @@ Delegate to `commands/monitor.md#handleSpawnNext`: 3. **Wisdom Consolidation**: Check `/wisdom/contributions/` for worker contributions - If contributions exist -> AskUserQuestion to merge to permanent wisdom - - If approved -> copy to `.claude/skills/team-ux-improve/wisdom/` + - If approved -> copy to `~ or /.claude/skills/team-ux-improve/wisdom/` 4. Calculate: completed_tasks, total_issues_found, issues_fixed, test_pass_rate 5. Output pipeline summary with [coordinator] prefix diff --git a/.claude/skills/team-ux-improve/specs/pipelines.md b/.claude/skills/team-ux-improve/specs/pipelines.md index fa5c5b34..b0bed67b 100644 --- a/.claude/skills/team-ux-improve/specs/pipelines.md +++ b/.claude/skills/team-ux-improve/specs/pipelines.md @@ -44,7 +44,7 @@ UX improvement pipeline modes and task registry. ## Wisdom System -Workers contribute learnings to `/wisdom/contributions/`. On pipeline completion, coordinator asks user to merge approved contributions to permanent wisdom at `.claude/skills/team-ux-improve/wisdom/`. +Workers contribute learnings to `/wisdom/contributions/`. On pipeline completion, coordinator asks user to merge approved contributions to permanent wisdom at `~ or /.claude/skills/team-ux-improve/wisdom/`. | Directory | Purpose | |-----------|---------| diff --git a/.claude/skills/team-ux-improve/specs/team-config.json b/.claude/skills/team-ux-improve/specs/team-config.json index 53efc366..c0e0e776 100644 --- a/.claude/skills/team-ux-improve/specs/team-config.json +++ b/.claude/skills/team-ux-improve/specs/team-config.json @@ -4,7 +4,7 @@ "team_display_name": "UX Improve", "team_purpose": "Systematically discover and fix UI/UX interaction issues including unresponsive buttons, missing feedback, and state refresh problems", "skill_name": "team-ux-improve", - "skill_path": ".claude/skills/team-ux-improve/", + "skill_path": "~ or /.claude/skills/team-ux-improve/", "worker_agent": "team-worker", "pipeline_type": "Standard", "completion_action": "interactive", diff --git a/.codex/skills/team-arch-opt/SKILL.md b/.codex/skills/team-arch-opt/SKILL.md index ed6aaefb..ef8c4231 100644 --- a/.codex/skills/team-arch-opt/SKILL.md +++ b/.codex/skills/team-arch-opt/SKILL.md @@ -658,3 +658,41 @@ All agents (csv-wave and interactive) share a single `discoveries.ndjson` file f 8. **Max 3 Fix Cycles**: Review-fix cycle capped at 3 iterations; escalate to user after 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-arch-opt/instructions/agent-instruction.md b/.codex/skills/team-arch-opt/instructions/agent-instruction.md index 04acee19..683c62e0 100644 --- a/.codex/skills/team-arch-opt/instructions/agent-instruction.md +++ b/.codex/skills/team-arch-opt/instructions/agent-instruction.md @@ -3,7 +3,7 @@ ### MANDATORY FIRST STEPS 1. Read shared discoveries: {session_folder}/discoveries.ndjson (if exists, skip if not) 2. Read project context: .workflow/project-tech.json (if exists) -3. Read task schema: .codex/skills/team-arch-opt/schemas/tasks-schema.md +3. Read task schema: ~ or /.codex/skills/team-arch-opt/schemas/tasks-schema.md --- diff --git a/.codex/skills/team-brainstorm/SKILL.md b/.codex/skills/team-brainstorm/SKILL.md index 878f4333..d115ae2a 100644 --- a/.codex/skills/team-brainstorm/SKILL.md +++ b/.codex/skills/team-brainstorm/SKILL.md @@ -233,7 +233,7 @@ const clarifier = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-brainstorm/agents/topic-clarifier.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-brainstorm/agents/topic-clarifier.md (MUST read first) 2. Read: .workflow/project-tech.json (if exists) --- @@ -478,7 +478,7 @@ for (let wave = 1; wave <= maxWave; wave++) { ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-brainstorm/agents/gc-controller.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-brainstorm/agents/gc-controller.md (MUST read first) 2. Read: ${sessionFolder}/discoveries.ndjson (shared discoveries) --- @@ -685,3 +685,41 @@ When the challenger returns critique results with severity-graded verdicts: 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-coordinate/SKILL.md b/.codex/skills/team-coordinate/SKILL.md index 07cffded..2ea1057c 100644 --- a/.codex/skills/team-coordinate/SKILL.md +++ b/.codex/skills/team-coordinate/SKILL.md @@ -627,3 +627,41 @@ See `instructions/agent-instruction.md` for the base instruction template that i 8. **Dynamic Roles**: All worker roles are generated at runtime from task analysis -- no static role registry 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-designer/SKILL.md b/.codex/skills/team-designer/SKILL.md index 3cc984db..2d7b64d9 100644 --- a/.codex/skills/team-designer/SKILL.md +++ b/.codex/skills/team-designer/SKILL.md @@ -595,7 +595,7 @@ All agents (csv-wave and interactive) share a single `discoveries.ndjson` file f **Format**: One JSON object per line (NDJSON): ```jsonl -{"ts":"2026-03-08T10:00:00Z","worker":"SCAFFOLD-001","type":"dir_created","data":{"path":".codex/skills/team-code-review/","description":"Created skill directory structure"}} +{"ts":"2026-03-08T10:00:00Z","worker":"SCAFFOLD-001","type":"dir_created","data":{"path":"~ or /.codex/skills/team-code-review/","description":"Created skill directory structure"}} {"ts":"2026-03-08T10:05:00Z","worker":"ROLE-001","type":"file_generated","data":{"file":"roles/coordinator/role.md","gen_type":"role-bundle","sections":["entry-router","commands"]}} {"ts":"2026-03-08T10:10:00Z","worker":"SPEC-001","type":"pattern_found","data":{"pattern_name":"full-lifecycle","description":"Pipeline with analyst -> writer -> executor -> tester"}} ``` @@ -651,3 +651,41 @@ All agents (csv-wave and interactive) share a single `discoveries.ndjson` file f 8. **Golden Sample Fidelity**: Generated files must match existing team skill patterns 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-designer/schemas/tasks-schema.md b/.codex/skills/team-designer/schemas/tasks-schema.md index c8e3cee3..3757428e 100644 --- a/.codex/skills/team-designer/schemas/tasks-schema.md +++ b/.codex/skills/team-designer/schemas/tasks-schema.md @@ -78,8 +78,8 @@ Interactive tasks appear in master CSV for dependency tracking but are NOT inclu ```csv id,title,description,role,file_target,gen_type,deps,context_from,exec_mode,wave,status,findings,files_produced,error -"SCAFFOLD-001","Create directory structure","Create complete directory structure for team-code-review skill:\n- .codex/skills/team-code-review/\n- roles/coordinator/ + commands/\n- roles/analyst/\n- roles/reviewer/\n- specs/\n- templates/","scaffolder","skill-dir","directory","","","csv-wave","1","pending","","","" -"ROUTER-001","Generate SKILL.md","Generate .codex/skills/team-code-review/SKILL.md with:\n- Frontmatter (name, description, allowed-tools)\n- Architecture diagram\n- Role registry table\n- CSV schema reference\n- Session structure\n- Wave execution engine\nUse teamConfig.json for role list and pipeline definitions","router-writer","SKILL.md","router","SCAFFOLD-001","SCAFFOLD-001","csv-wave","2","pending","","","" +"SCAFFOLD-001","Create directory structure","Create complete directory structure for team-code-review skill:\n- ~ or /.codex/skills/team-code-review/\n- roles/coordinator/ + commands/\n- roles/analyst/\n- roles/reviewer/\n- specs/\n- templates/","scaffolder","skill-dir","directory","","","csv-wave","1","pending","","","" +"ROUTER-001","Generate SKILL.md","Generate ~ or /.codex/skills/team-code-review/SKILL.md with:\n- Frontmatter (name, description, allowed-tools)\n- Architecture diagram\n- Role registry table\n- CSV schema reference\n- Session structure\n- Wave execution engine\nUse teamConfig.json for role list and pipeline definitions","router-writer","SKILL.md","router","SCAFFOLD-001","SCAFFOLD-001","csv-wave","2","pending","","","" "SPEC-001","Generate pipelines spec","Generate specs/pipelines.md with:\n- Pipeline definitions from teamConfig\n- Task registry with PREFIX-NNN format\n- Conditional routing rules\n- Dynamic specialist injection\nRoles: analyst(ANALYSIS-*), reviewer(REVIEW-*)","spec-writer","specs/pipelines.md","spec","SCAFFOLD-001","SCAFFOLD-001","csv-wave","2","pending","","","" "ROLE-001","Generate coordinator","Generate roles/coordinator/role.md with entry router and commands/analyze.md, commands/dispatch.md, commands/monitor.md. Coordinator orchestrates the analysis pipeline","role-writer","roles/coordinator/","role-bundle","SCAFFOLD-001;SPEC-001","SPEC-001","csv-wave","3","pending","","","" "ROLE-002","Generate analyst role","Generate roles/analyst/role.md with Phase 2 (context loading), Phase 3 (analysis execution), Phase 4 (output). Prefix: ANALYSIS, inner_loop: false","role-writer","roles/analyst/role.md","role-inline","SCAFFOLD-001;SPEC-001","SPEC-001","csv-wave","3","pending","","","" @@ -144,7 +144,7 @@ Interactive tasks output via structured text or JSON written to `interactive/{id ### Discovery NDJSON Format ```jsonl -{"ts":"2026-03-08T10:00:00Z","worker":"SCAFFOLD-001","type":"dir_created","data":{"path":".codex/skills/team-code-review/roles/","description":"Created roles directory with coordinator, analyst, reviewer subdirs"}} +{"ts":"2026-03-08T10:00:00Z","worker":"SCAFFOLD-001","type":"dir_created","data":{"path":"~ or /.codex/skills/team-code-review/roles/","description":"Created roles directory with coordinator, analyst, reviewer subdirs"}} {"ts":"2026-03-08T10:05:00Z","worker":"ROLE-001","type":"file_generated","data":{"file":"roles/coordinator/role.md","gen_type":"role-bundle","sections":["entry-router","phase-0","phase-1","phase-2","phase-3"]}} {"ts":"2026-03-08T10:10:00Z","worker":"SPEC-001","type":"config_decision","data":{"decision":"full-lifecycle pipeline","rationale":"Both analyst and reviewer roles present","impact":"4-tier dependency graph"}} ``` diff --git a/.codex/skills/team-edict/SKILL.md b/.codex/skills/team-edict/SKILL.md index 64291736..85d221af 100644 --- a/.codex/skills/team-edict/SKILL.md +++ b/.codex/skills/team-edict/SKILL.md @@ -217,8 +217,8 @@ Each wave generates a temporary `wave-{N}.csv` with extra `prev_context` column 4. Create subdirectories: plan/, review/, artifacts/, interactive/, agents/ 5. Initialize registry.json: { "active": [], "closed": [] } 6. Initialize discoveries.ndjson (empty file) -7. Read specs: .codex/skills/team-edict/specs/team-config.json -8. Read quality gates: .codex/skills/team-edict/specs/quality-gates.md +7. Read specs: ~ or /.codex/skills/team-edict/specs/team-config.json +8. Read quality gates: ~ or /.codex/skills/team-edict/specs/quality-gates.md 9. Log session start to context.md ``` @@ -236,9 +236,9 @@ const zhongshu = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-edict/agents/zhongshu-planner.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-edict/agents/zhongshu-planner.md (MUST read first) 2. Read: ${sessionDir}/discoveries.ndjson (shared discoveries, skip if not exists) -3. Read: .codex/skills/team-edict/specs/team-config.json (routing rules) +3. Read: ~ or /.codex/skills/team-edict/specs/team-config.json (routing rules) --- @@ -285,7 +285,7 @@ while (!approved && reviewRound < 3) { ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-edict/agents/menxia-reviewer.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-edict/agents/menxia-reviewer.md (MUST read first) 2. Read: ${sessionDir}/plan/zhongshu-plan.md (plan to review) 3. Read: ${sessionDir}/discoveries.ndjson (shared discoveries) @@ -336,10 +336,10 @@ const shangshu = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-edict/agents/shangshu-dispatcher.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-edict/agents/shangshu-dispatcher.md (MUST read first) 2. Read: ${sessionDir}/plan/zhongshu-plan.md (approved plan) 3. Read: ${sessionDir}/review/menxia-review.md (review conditions) -4. Read: .codex/skills/team-edict/specs/team-config.json (routing rules) +4. Read: ~ or /.codex/skills/team-edict/specs/team-config.json (routing rules) --- @@ -416,8 +416,8 @@ For each wave W in 1..max_wave: 5. EXECUTE csv-wave tasks: spawn_agents_on_csv({ task_csv_path: "${sessionDir}/wave-{W}.csv", - instruction_path: ".codex/skills/team-edict/instructions/agent-instruction.md", - schema_path: ".codex/skills/team-edict/schemas/tasks-schema.md", + instruction_path: "~ or /.codex/skills/team-edict/instructions/agent-instruction.md", + schema_path: "~ or /.codex/skills/team-edict/schemas/tasks-schema.md", additional_instructions: "Session directory: ${sessionDir}. Department: {department}. Priority: {priority}.", concurrency: CONCURRENCY }) @@ -457,10 +457,10 @@ const aggregator = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-edict/agents/aggregator.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-edict/agents/aggregator.md (MUST read first) 2. Read: ${sessionDir}/tasks.csv (master state) 3. Read: ${sessionDir}/discoveries.ndjson (all discoveries) -4. Read: .codex/skills/team-edict/specs/quality-gates.md (quality standards) +4. Read: ~ or /.codex/skills/team-edict/specs/quality-gates.md (quality standards) --- @@ -472,7 +472,7 @@ Deliverables: ${sessionDir}/context.md (final report) ${listAllArtifacts()} ### Quality Gate Standards -Read from: .codex/skills/team-edict/specs/quality-gates.md +Read from: ~ or /.codex/skills/team-edict/specs/quality-gates.md ` }) @@ -609,9 +609,9 @@ const agent = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-edict/agents/qa-verifier.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-edict/agents/qa-verifier.md (MUST read first) 2. Read: ${sessionDir}/discoveries.ndjson (shared discoveries) -3. Read: .codex/skills/team-edict/specs/quality-gates.md (quality standards) +3. Read: ~ or /.codex/skills/team-edict/specs/quality-gates.md (quality standards) --- @@ -740,3 +740,42 @@ spawn_agent({ 12. **Rejection Loop Max 3**: Menxia can reject max 3 times before escalating to user 13. **Kanban is Mandatory**: All agents must report state transitions via discoveries.ndjson 14. **Quality Gates Apply**: Phase 3 aggregator validates all outputs against specs/quality-gates.md + +--- + +## Coordinator Role Constraints (Crown Prince / Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned agents (Three Departments and Six Ministries). The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results into master CSV + - Coordinates workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms (600s for planning, 300s for execution) + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages (e.g., jumping from Zhongshu directly to Shangshu) + - Bypass the Three Departments serial pipeline + - Execute wave N before wave N-1 completes + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time: 30-90 minutes for typical edicts + - Phase 0 (Three Departments): 15-30 minutes + - Phase 2 (Wave Execution): 10-20 minutes per wave + - Phase 3 (Aggregation): 5-10 minutes + - The coordinator must remain active and attentive throughout the entire process + diff --git a/.codex/skills/team-edict/agents/aggregator.md b/.codex/skills/team-edict/agents/aggregator.md index 690a9e4c..b311b7b9 100644 --- a/.codex/skills/team-edict/agents/aggregator.md +++ b/.codex/skills/team-edict/agents/aggregator.md @@ -68,7 +68,7 @@ Post-wave aggregation agent -- collects all ministry outputs, validates against 4. Use Glob to find all files in `/interactive/` 5. Read each interactive result file 6. Read `/discoveries.ndjson` (all entries) -7. Read `.codex/skills/team-edict/specs/quality-gates.md` +7. Read `~ or /.codex/skills/team-edict/specs/quality-gates.md` **Output**: All artifacts and status data collected diff --git a/.codex/skills/team-edict/agents/qa-verifier.md b/.codex/skills/team-edict/agents/qa-verifier.md index 45dc2399..e51d3d66 100644 --- a/.codex/skills/team-edict/agents/qa-verifier.md +++ b/.codex/skills/team-edict/agents/qa-verifier.md @@ -64,7 +64,7 @@ Xingbu (Ministry of Justice / Quality Assurance) -- executes quality verificatio **Steps**: -1. Read `.codex/skills/team-edict/specs/quality-gates.md` +1. Read `~ or /.codex/skills/team-edict/specs/quality-gates.md` 2. Read `/plan/dispatch-plan.md` for acceptance criteria 3. Read implementation artifacts from `/artifacts/` 4. Read `/discoveries.ndjson` for implementation notes diff --git a/.codex/skills/team-edict/agents/shangshu-dispatcher.md b/.codex/skills/team-edict/agents/shangshu-dispatcher.md index 816ea584..36970e8a 100644 --- a/.codex/skills/team-edict/agents/shangshu-dispatcher.md +++ b/.codex/skills/team-edict/agents/shangshu-dispatcher.md @@ -62,7 +62,7 @@ Shangshu (Department of State Affairs / Dispatch) -- parses the approved plan, r 1. Read `/plan/zhongshu-plan.md` 2. Read `/review/menxia-review.md` -3. Read `.codex/skills/team-edict/specs/team-config.json` +3. Read `~ or /.codex/skills/team-edict/specs/team-config.json` 4. Extract subtask list from plan 5. Extract conditions from review 6. Report state "Doing": diff --git a/.codex/skills/team-edict/agents/zhongshu-planner.md b/.codex/skills/team-edict/agents/zhongshu-planner.md index 72faad66..be268a53 100644 --- a/.codex/skills/team-edict/agents/zhongshu-planner.md +++ b/.codex/skills/team-edict/agents/zhongshu-planner.md @@ -64,7 +64,7 @@ Zhongshu (Central Secretariat) -- analyzes the edict, explores the codebase, and **Steps**: 1. Parse the edict text from the spawn message -2. Read `.codex/skills/team-edict/specs/team-config.json` for routing rules +2. Read `~ or /.codex/skills/team-edict/specs/team-config.json` for routing rules 3. If revision round: Read `/review/menxia-review.md` for rejection feedback 4. Read `/discoveries.ndjson` if it exists diff --git a/.codex/skills/team-edict/instructions/agent-instruction.md b/.codex/skills/team-edict/instructions/agent-instruction.md index 27acd0f4..b80c9ef0 100644 --- a/.codex/skills/team-edict/instructions/agent-instruction.md +++ b/.codex/skills/team-edict/instructions/agent-instruction.md @@ -4,8 +4,8 @@ 1. Read shared discoveries: .workflow/.csv-wave/{session-id}/discoveries.ndjson (if exists, skip if not) 2. Read dispatch plan: .workflow/.csv-wave/{session-id}/plan/dispatch-plan.md (task details and acceptance criteria) 3. Read approved plan: .workflow/.csv-wave/{session-id}/plan/zhongshu-plan.md (overall strategy and context) -4. Read quality gates: .codex/skills/team-edict/specs/quality-gates.md (quality standards) -5. Read team config: .codex/skills/team-edict/specs/team-config.json (routing rules and artifact paths) +4. Read quality gates: ~ or /.codex/skills/team-edict/specs/quality-gates.md (quality standards) +5. Read team config: ~ or /.codex/skills/team-edict/specs/team-config.json (routing rules and artifact paths) > **Note**: The session directory path is provided by the orchestrator in `additional_instructions`. Use it to resolve the paths above. diff --git a/.codex/skills/team-executor/SKILL.md b/.codex/skills/team-executor/SKILL.md index 415d4bf1..ecc90f06 100644 --- a/.codex/skills/team-executor/SKILL.md +++ b/.codex/skills/team-executor/SKILL.md @@ -475,3 +475,41 @@ if (action === "Archive & Clean") { 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent (tracked in registry.json) 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-frontend-debug/SKILL.md b/.codex/skills/team-frontend-debug/SKILL.md index 9b5dde75..25042fe2 100644 --- a/.codex/skills/team-frontend-debug/SKILL.md +++ b/.codex/skills/team-frontend-debug/SKILL.md @@ -781,3 +781,41 @@ After TEST-001 completes, evaluate issues: 9. **Iteration Bounds**: Max 2 reproduction rounds, max 3 fix rounds 10. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 11. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-frontend/SKILL.md b/.codex/skills/team-frontend/SKILL.md index d234c11d..a3950962 100644 --- a/.codex/skills/team-frontend/SKILL.md +++ b/.codex/skills/team-frontend/SKILL.md @@ -710,3 +710,41 @@ Convergence: qa.score >= 8 && qa.critical_count === 0 8. **GC Loop Cap**: Max 2 generator-critic rounds between developer and qa 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-issue/SKILL.md b/.codex/skills/team-issue/SKILL.md index 231261f3..aee4bf43 100644 --- a/.codex/skills/team-issue/SKILL.md +++ b/.codex/skills/team-issue/SKILL.md @@ -389,7 +389,7 @@ for (let wave = 1; wave <= maxWave; wave++) { spawn_agents_on_csv({ csv_path: `${sessionFolder}/wave-${wave}.csv`, id_column: "id", - instruction: Read(".codex/skills/team-issue/instructions/agent-instruction.md"), + instruction: Read("~ or /.codex/skills/team-issue/instructions/agent-instruction.md"), max_concurrency: maxConcurrency, max_runtime_seconds: 1200, output_csv_path: `${sessionFolder}/wave-${wave}-results.csv`, @@ -420,7 +420,7 @@ for (let wave = 1; wave <= maxWave; wave++) { const pendingInteractive = interactiveTasks.filter(t => t.status === 'pending') for (const task of pendingInteractive) { // Read agent definition - const agentDef = Read(`.codex/skills/team-issue/agents/reviewer.md`) + const agentDef = Read(`~ or /.codex/skills/team-issue/agents/reviewer.md`) // Build context from upstream tasks const contextIds = (task.context_from || '').split(';').filter(Boolean) @@ -434,7 +434,7 @@ for (let wave = 1; wave <= maxWave; wave++) { message: `## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-issue/agents/reviewer.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-issue/agents/reviewer.md (MUST read first) 2. Read: ${sessionFolder}/discoveries.ndjson (shared discoveries) 3. Read: .workflow/project-tech.json (if exists) @@ -700,3 +700,41 @@ Both csv-wave and interactive agents share the same discoveries.ndjson file: 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-iterdev/SKILL.md b/.codex/skills/team-iterdev/SKILL.md index fa4b9cb6..4f17f241 100644 --- a/.codex/skills/team-iterdev/SKILL.md +++ b/.codex/skills/team-iterdev/SKILL.md @@ -290,7 +290,7 @@ const analyzer = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-iterdev/agents/task-analyzer.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-iterdev/agents/task-analyzer.md (MUST read first) 2. Read: .workflow/project-tech.json (if exists) --- @@ -484,7 +484,7 @@ for (let wave = 1; wave <= maxWave; wave++) { const waveResult = spawn_agents_on_csv({ csv_path: `${sessionFolder}/wave-${wave}.csv`, id_column: "id", - instruction: Read(`.codex/skills/team-iterdev/instructions/agent-instruction.md`), + instruction: Read(`~ or /.codex/skills/team-iterdev/instructions/agent-instruction.md`), max_concurrency: maxConcurrency, max_runtime_seconds: 900, output_csv_path: `${sessionFolder}/wave-${wave}-results.csv`, @@ -533,7 +533,7 @@ for (let wave = 1; wave <= maxWave; wave++) { ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-iterdev/agents/gc-controller.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-iterdev/agents/gc-controller.md (MUST read first) 2. Read: ${sessionFolder}/discoveries.ndjson (shared discoveries) --- @@ -786,3 +786,41 @@ When the reviewer returns review results with severity-graded verdicts: 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-lifecycle-v4/SKILL.md b/.codex/skills/team-lifecycle-v4/SKILL.md index 85dedf90..29903229 100644 --- a/.codex/skills/team-lifecycle-v4/SKILL.md +++ b/.codex/skills/team-lifecycle-v4/SKILL.md @@ -254,7 +254,7 @@ const clarifier = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md (MUST read first) 2. Read: .workflow/project-tech.json (if exists) --- @@ -436,7 +436,7 @@ for (let wave = 1; wave <= maxWave; wave++) { const waveResult = spawn_agents_on_csv({ csv_path: `${sessionFolder}/wave-${wave}.csv`, id_column: "id", - instruction: Read(`.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md`) + instruction: Read(`~ or /.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md`) .replace(/{session-id}/g, sessionId), max_concurrency: maxConcurrency, max_runtime_seconds: 900, @@ -486,7 +486,7 @@ for (let wave = 1; wave <= maxWave; wave++) { ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-lifecycle-v4/agents/supervisor.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-lifecycle-v4/agents/supervisor.md (MUST read first) 2. Read: ${sessionFolder}/discoveries.ndjson (shared discoveries) --- @@ -735,3 +735,41 @@ All agents across all waves share `discoveries.ndjson`. This enables cross-role 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-lifecycle/SKILL.md b/.codex/skills/team-lifecycle/SKILL.md index 8db21c52..76367c6b 100644 --- a/.codex/skills/team-lifecycle/SKILL.md +++ b/.codex/skills/team-lifecycle/SKILL.md @@ -866,3 +866,41 @@ The orchestrator dynamically adds DEV-FE-NNN and QA-FE-NNN tasks to the state fi | Requirements Template | templates/requirements-prd.md | DRAFT-002 | | Architecture Template | templates/architecture-doc.md | DRAFT-003 | | Epics Template | templates/epics-template.md | DRAFT-004 | + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-lifecycle/agents/analyst.md b/.codex/skills/team-lifecycle/agents/analyst.md index 0291734c..03e5778e 100644 --- a/.codex/skills/team-lifecycle/agents/analyst.md +++ b/.codex/skills/team-lifecycle/agents/analyst.md @@ -5,7 +5,7 @@ Seed analysis, codebase exploration (via shared explore subagent), and multi-dim ## Identity - **Type**: `produce` -- **Role File**: `~/.codex/skills/team-lifecycle/agents/analyst.md` +- **Role File**: `~/~ or /.codex/skills/team-lifecycle/agents/analyst.md` - **Prefix**: `RESEARCH-*` - **Tag**: `[analyst]` - **Responsibility**: Seed Analysis -> Codebase Exploration -> Context Packaging -> Inline Discuss -> Report @@ -168,7 +168,7 @@ if (cached) { // Cache MISS - spawn explore subagent const explorer = spawn_agent({ message: `### MANDATORY FIRST STEPS -1. Read: ~/.codex/skills/team-lifecycle/agents/explore-agent.md +1. Read: ~/~ or /.codex/skills/team-lifecycle/agents/explore-agent.md --- @@ -253,7 +253,7 @@ After packaging, spawn discuss subagent (Pattern 2.8): ```javascript const critic = spawn_agent({ message: `### MANDATORY FIRST STEPS -1. Read: ~/.codex/skills/team-lifecycle/agents/discuss-agent.md +1. Read: ~/~ or /.codex/skills/team-lifecycle/agents/discuss-agent.md ## Multi-Perspective Critique: DISCUSS-001 @@ -297,7 +297,7 @@ This agent spawns two utility subagents during its execution: ### Explore Subagent (Phase 3) **When**: After seed analysis, when project files detected -**Agent File**: `~/.codex/skills/team-lifecycle/agents/explore-agent.md` +**Agent File**: `~/~ or /.codex/skills/team-lifecycle/agents/explore-agent.md` **Pattern**: 2.9 (Cache-Aware Exploration) See Phase 3 code block above. Cache is checked before spawning. If cache hit, the spawn is skipped entirely. @@ -305,7 +305,7 @@ See Phase 3 code block above. Cache is checked before spawning. If cache hit, th ### Discuss Subagent (Phase 4b) **When**: After context packaging (spec-config.json + discovery-context.json written) -**Agent File**: `~/.codex/skills/team-lifecycle/agents/discuss-agent.md` +**Agent File**: `~/~ or /.codex/skills/team-lifecycle/agents/discuss-agent.md` **Pattern**: 2.8 (Inline Subagent) See Phase 4b code block above. @@ -342,7 +342,7 @@ if (cached) { // Cache MISS - spawn explore subagent, result cached by explore-agent const explorer = spawn_agent({ message: `### MANDATORY FIRST STEPS -1. Read: ~/.codex/skills/team-lifecycle/agents/explore-agent.md +1. Read: ~/~ or /.codex/skills/team-lifecycle/agents/explore-agent.md --- diff --git a/.codex/skills/team-lifecycle/agents/discuss-agent.md b/.codex/skills/team-lifecycle/agents/discuss-agent.md index abe19025..1611f5cc 100644 --- a/.codex/skills/team-lifecycle/agents/discuss-agent.md +++ b/.codex/skills/team-lifecycle/agents/discuss-agent.md @@ -5,7 +5,7 @@ Lightweight multi-perspective critique engine. Called inline by produce agents ( ## Identity - **Type**: `utility` -- **Role File**: `~/.codex/skills/team-lifecycle/agents/discuss-agent.md` +- **Role File**: `~/~ or /.codex/skills/team-lifecycle/agents/discuss-agent.md` - **Tag**: `[discuss]` - **Responsibility**: Read Artifact -> Multi-CLI Perspective Analysis -> Divergence Detection -> Consensus Determination -> Write Discussion Record -> Return Verdict diff --git a/.codex/skills/team-lifecycle/agents/explore-agent.md b/.codex/skills/team-lifecycle/agents/explore-agent.md index a8b821c7..61df2cb1 100644 --- a/.codex/skills/team-lifecycle/agents/explore-agent.md +++ b/.codex/skills/team-lifecycle/agents/explore-agent.md @@ -5,7 +5,7 @@ Shared codebase exploration utility with centralized caching. Callable by any ag ## Identity - **Type**: `utility` -- **Role File**: `~/.codex/skills/team-lifecycle/agents/explore-agent.md` +- **Role File**: `~/~ or /.codex/skills/team-lifecycle/agents/explore-agent.md` - **Tag**: `[explore]` - **Responsibility**: Cache Check -> Codebase Exploration -> Cache Update -> Return Structured Results @@ -382,7 +382,7 @@ if (cached && !forceRefresh) { // After seed analysis, explore codebase context (Pattern 2.9 in analyst) const explorer = spawn_agent({ message: `### MANDATORY FIRST STEPS -1. Read: ~/.codex/skills/team-lifecycle/agents/explore-agent.md +1. Read: ~/~ or /.codex/skills/team-lifecycle/agents/explore-agent.md --- @@ -405,7 +405,7 @@ for (const angle of angles) { // Cache check happens inside explore-agent const explorer = spawn_agent({ message: `### MANDATORY FIRST STEPS -1. Read: ~/.codex/skills/team-lifecycle/agents/explore-agent.md +1. Read: ~/~ or /.codex/skills/team-lifecycle/agents/explore-agent.md --- diff --git a/.codex/skills/team-lifecycle/agents/writer.md b/.codex/skills/team-lifecycle/agents/writer.md index 2118ef1b..8a04422d 100644 --- a/.codex/skills/team-lifecycle/agents/writer.md +++ b/.codex/skills/team-lifecycle/agents/writer.md @@ -5,7 +5,7 @@ Product Brief, Requirements/PRD, Architecture, and Epics & Stories document gene ## Identity - **Type**: `produce` -- **Role File**: `~/.codex/skills/team-lifecycle/agents/writer.md` +- **Role File**: `~/~ or /.codex/skills/team-lifecycle/agents/writer.md` - **Prefix**: `DRAFT-*` - **Tag**: `[writer]` - **Responsibility**: Load Context -> Generate Document -> Self-Validation -> Inline Discuss -> Report @@ -382,7 +382,7 @@ After validation, spawn discuss subagent (Pattern 2.8) for this task's discuss r ```javascript const critic = spawn_agent({ message: `### MANDATORY FIRST STEPS -1. Read: ~/.codex/skills/team-lifecycle/agents/discuss-agent.md +1. Read: ~/~ or /.codex/skills/team-lifecycle/agents/discuss-agent.md ## Multi-Perspective Critique: @@ -435,7 +435,7 @@ This agent spawns the discuss subagent during Phase 4b: ### Discuss Subagent (Phase 4b) **When**: After self-validation of generated document -**Agent File**: `~/.codex/skills/team-lifecycle/agents/discuss-agent.md` +**Agent File**: `~/~ or /.codex/skills/team-lifecycle/agents/discuss-agent.md` **Pattern**: 2.8 (Inline Subagent) See Phase 4b code block above. The round ID and perspectives vary per doc type -- use the Inline Discuss Mapping table. diff --git a/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md b/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md index c5790c2a..d1d40377 100644 --- a/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md +++ b/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md @@ -1,6 +1,6 @@ # Phase 1: Requirement Clarification -> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md")` before continuing. Never execute based on summaries. +> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/~ or /.codex/skills/team-lifecycle/phases/01-requirement-clarification.md")` before continuing. Never execute based on summaries. ## Objective diff --git a/.codex/skills/team-lifecycle/phases/02-team-initialization.md b/.codex/skills/team-lifecycle/phases/02-team-initialization.md index 0bb07ab9..c6516279 100644 --- a/.codex/skills/team-lifecycle/phases/02-team-initialization.md +++ b/.codex/skills/team-lifecycle/phases/02-team-initialization.md @@ -1,6 +1,6 @@ # Phase 2: Team Initialization -> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/.codex/skills/team-lifecycle/phases/02-team-initialization.md")` before continuing. Never execute based on summaries. +> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/~ or /.codex/skills/team-lifecycle/phases/02-team-initialization.md")` before continuing. Never execute based on summaries. ## Objective diff --git a/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md b/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md index 566241f9..feb756aa 100644 --- a/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md +++ b/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md @@ -1,6 +1,6 @@ # Phase 3: Task Chain Creation -> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md")` before continuing. Never execute based on summaries. +> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/~ or /.codex/skills/team-lifecycle/phases/03-task-chain-creation.md")` before continuing. Never execute based on summaries. ## Objective diff --git a/.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md b/.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md index 061c67fd..6d3010e9 100644 --- a/.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md +++ b/.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md @@ -1,6 +1,6 @@ # Phase 4: Pipeline Coordination -> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md")` before continuing. Never execute based on summaries. +> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/~ or /.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md")` before continuing. Never execute based on summaries. ## Objective diff --git a/.codex/skills/team-lifecycle/phases/05-completion-report.md b/.codex/skills/team-lifecycle/phases/05-completion-report.md index 3231ff92..c68feb48 100644 --- a/.codex/skills/team-lifecycle/phases/05-completion-report.md +++ b/.codex/skills/team-lifecycle/phases/05-completion-report.md @@ -1,6 +1,6 @@ # Phase 5: Completion Report -> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/.codex/skills/team-lifecycle/phases/05-completion-report.md")` before continuing. Never execute based on summaries. +> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/~ or /.codex/skills/team-lifecycle/phases/05-completion-report.md")` before continuing. Never execute based on summaries. ## Objective diff --git a/.codex/skills/team-perf-opt/SKILL.md b/.codex/skills/team-perf-opt/SKILL.md index 72908fb5..f46916bf 100644 --- a/.codex/skills/team-perf-opt/SKILL.md +++ b/.codex/skills/team-perf-opt/SKILL.md @@ -657,3 +657,41 @@ All agents (csv-wave and interactive) share a single `discoveries.ndjson` file f 8. **Max 3 Fix Cycles**: Review-fix cycle capped at 3 iterations; escalate to user after 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-perf-opt/instructions/agent-instruction.md b/.codex/skills/team-perf-opt/instructions/agent-instruction.md index af6c5bcf..5e42c138 100644 --- a/.codex/skills/team-perf-opt/instructions/agent-instruction.md +++ b/.codex/skills/team-perf-opt/instructions/agent-instruction.md @@ -3,7 +3,7 @@ ### MANDATORY FIRST STEPS 1. Read shared discoveries: {session_folder}/discoveries.ndjson (if exists, skip if not) 2. Read project context: .workflow/project-tech.json (if exists) -3. Read task schema: .codex/skills/team-perf-opt/schemas/tasks-schema.md +3. Read task schema: ~ or /.codex/skills/team-perf-opt/schemas/tasks-schema.md --- diff --git a/.codex/skills/team-planex-v2/SKILL.md b/.codex/skills/team-planex-v2/SKILL.md index 77692668..09c23570 100644 --- a/.codex/skills/team-planex-v2/SKILL.md +++ b/.codex/skills/team-planex-v2/SKILL.md @@ -429,7 +429,7 @@ for (let wave = 1; wave <= maxWave; wave++) { spawn_agents_on_csv({ csv_path: `${sessionFolder}/wave-${wave}.csv`, id_column: "id", - instruction: Read(".codex/skills/team-planex/instructions/agent-instruction.md"), + instruction: Read("~ or /.codex/skills/team-planex/instructions/agent-instruction.md"), max_concurrency: maxConcurrency, max_runtime_seconds: 1200, output_csv_path: `${sessionFolder}/wave-${wave}-results.csv`, @@ -597,3 +597,41 @@ Both planner and executor agents share the same discoveries.ndjson file: 8. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 9. **Two-Wave Pipeline**: Wave 1 = Planning (PLAN-*), Wave 2 = Execution (EXEC-*) 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-planex/SKILL.md b/.codex/skills/team-planex/SKILL.md index 193f8e60..a7de7641 100644 --- a/.codex/skills/team-planex/SKILL.md +++ b/.codex/skills/team-planex/SKILL.md @@ -501,3 +501,41 @@ if (plannerAgent) { |---------|--------| | `check` / `status` | Show progress: planned / executing / completed / failed counts | | `resume` / `continue` | Re-enter loop from Phase 2 | + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-quality-assurance/SKILL.md b/.codex/skills/team-quality-assurance/SKILL.md index 9be579d4..c9ecd5e3 100644 --- a/.codex/skills/team-quality-assurance/SKILL.md +++ b/.codex/skills/team-quality-assurance/SKILL.md @@ -774,3 +774,41 @@ QAGEN -> QARUN -> (if coverage < target) -> GC Loop Handler 9. **Scout Feeds Strategy**: Scout findings flow into strategist via prev_context and discoveries.ndjson 10. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 11. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-review/SKILL.md b/.codex/skills/team-review/SKILL.md index a7e7e4be..bb8a09f3 100644 --- a/.codex/skills/team-review/SKILL.md +++ b/.codex/skills/team-review/SKILL.md @@ -493,3 +493,41 @@ send_input({ 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent (tracked in registry.json) 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-roadmap-dev/SKILL.md b/.codex/skills/team-roadmap-dev/SKILL.md index 2e1cbd02..0dde327f 100644 --- a/.codex/skills/team-roadmap-dev/SKILL.md +++ b/.codex/skills/team-roadmap-dev/SKILL.md @@ -643,3 +643,41 @@ const discoveries = Read(`${sessionDir}/discoveries.ndjson`) 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent (tracked in registry.json) 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-tech-debt/SKILL.md b/.codex/skills/team-tech-debt/SKILL.md index 48678f38..ae0b2feb 100644 --- a/.codex/skills/team-tech-debt/SKILL.md +++ b/.codex/skills/team-tech-debt/SKILL.md @@ -668,3 +668,41 @@ Wave 3: TDVAL-001 (validator) -> 4-layer validation 8. **GC Loop Bounded**: Maximum 3 fix-verify rounds before accepting current state 9. **Worktree Isolation**: All fix execution happens in git worktree, not main branch 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-testing/SKILL.md b/.codex/skills/team-testing/SKILL.md index d1595ca7..e41b2e61 100644 --- a/.codex/skills/team-testing/SKILL.md +++ b/.codex/skills/team-testing/SKILL.md @@ -730,3 +730,41 @@ TESTGEN -> TESTRUN -> (if pass_rate < 0.95 OR coverage < target) -> GC Loop Hand 8. **GC Loop Discipline**: Max 3 rounds per layer; never infinite-loop on coverage 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-uidesign/SKILL.md b/.codex/skills/team-uidesign/SKILL.md index 1c74b8da..b031a9d6 100644 --- a/.codex/skills/team-uidesign/SKILL.md +++ b/.codex/skills/team-uidesign/SKILL.md @@ -727,3 +727,41 @@ Convergence: audit.score >= 8 AND audit.critical_count === 0 8. **GC Loop Cap**: Max 2 generator-critic rounds between designer and reviewer 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-ultra-analyze/SKILL.md b/.codex/skills/team-ultra-analyze/SKILL.md index 5f6ce301..752e3f01 100644 --- a/.codex/skills/team-ultra-analyze/SKILL.md +++ b/.codex/skills/team-ultra-analyze/SKILL.md @@ -237,7 +237,7 @@ const analyzer = spawn_agent({ ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-ultra-analyze/agents/topic-analyzer.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-ultra-analyze/agents/topic-analyzer.md (MUST read first) 2. Read: .workflow/project-tech.json (if exists) --- @@ -497,7 +497,7 @@ for (let wave = 1; wave <= maxWave; wave++) { ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) -1. **Read role definition**: .codex/skills/team-ultra-analyze/agents/discussion-feedback.md (MUST read first) +1. **Read role definition**: ~ or /.codex/skills/team-ultra-analyze/agents/discussion-feedback.md (MUST read first) 2. Read: ${sessionFolder}/discoveries.ndjson (shared discoveries) --- @@ -747,3 +747,41 @@ All agents across all waves share `discoveries.ndjson`. This enables cross-role 8. **Lifecycle Balance**: Every spawn_agent MUST have a matching close_agent 9. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged 10. **DO NOT STOP**: Continuous execution until all waves complete or all remaining tasks are skipped + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/.codex/skills/team-ux-improve/SKILL.md b/.codex/skills/team-ux-improve/SKILL.md index ca895689..243ef4fa 100644 --- a/.codex/skills/team-ux-improve/SKILL.md +++ b/.codex/skills/team-ux-improve/SKILL.md @@ -599,3 +599,41 @@ All agents share `discoveries.ndjson` for UX findings. 8. **Lifecycle Balance**: Every spawn_agent has matching close_agent 9. **Cleanup Temp Files**: Remove wave-{N}.csv after merge 10. **DO NOT STOP**: Continuous execution until all waves complete + + +--- + +## Coordinator Role Constraints (Main Agent) + +**CRITICAL**: The coordinator (main agent executing this skill) is responsible for **orchestration only**, NOT implementation. + +15. **Coordinator Does NOT Execute Code**: The main agent MUST NOT write, modify, or implement any code directly. All implementation work is delegated to spawned team agents. The coordinator only: + - Spawns agents with task assignments + - Waits for agent callbacks + - Merges results and coordinates workflow + - Manages workflow transitions between phases + +16. **Patient Waiting is Mandatory**: Agent execution takes significant time (typically 10-30 minutes per phase, sometimes longer). The coordinator MUST: + - Wait patiently for `wait()` calls to complete + - NOT skip workflow steps due to perceived delays + - NOT assume agents have failed just because they're taking time + - Trust the timeout mechanisms defined in the skill + +17. **Use send_input for Clarification**: When agents need guidance or appear stuck, the coordinator MUST: + - Use `send_input()` to ask questions or provide clarification + - NOT skip the agent or move to next phase prematurely + - Give agents opportunity to respond before escalating + - Example: `send_input({ id: agent_id, message: "Please provide status update or clarify blockers" })` + +18. **No Workflow Shortcuts**: The coordinator MUST NOT: + - Skip phases or stages defined in the workflow + - Bypass required approval or review steps + - Execute dependent tasks before prerequisites complete + - Assume task completion without explicit agent callback + - Make up or fabricate agent results + +19. **Respect Long-Running Processes**: This is a complex multi-agent workflow that requires patience: + - Total execution time may range from 30-90 minutes or longer + - Each phase may take 10-30 minutes depending on complexity + - The coordinator must remain active and attentive throughout the entire process + - Do not terminate or skip steps due to time concerns diff --git a/ccw/frontend/src/components/terminal-dashboard/DashboardToolbar.test.tsx b/ccw/frontend/src/components/terminal-dashboard/DashboardToolbar.test.tsx index 63889390..a43aaa16 100644 --- a/ccw/frontend/src/components/terminal-dashboard/DashboardToolbar.test.tsx +++ b/ccw/frontend/src/components/terminal-dashboard/DashboardToolbar.test.tsx @@ -105,7 +105,7 @@ describe('DashboardToolbar', () => { /> ); - fireEvent.click(screen.getByTitle('Click to configure and launch a CLI session')); + fireEvent.click(screen.getByRole('button', { name: 'New Session' })); expect(screen.getByTestId('cli-config-modal')).toBeInTheDocument(); mockState.currentProjectPath = 'D:/workspace-b'; diff --git a/ccw/frontend/src/hooks/useIssues.test.tsx b/ccw/frontend/src/hooks/useIssues.test.tsx index 86130d29..96b45181 100644 --- a/ccw/frontend/src/hooks/useIssues.test.tsx +++ b/ccw/frontend/src/hooks/useIssues.test.tsx @@ -4,7 +4,7 @@ // Tests for issue-related hooks with queue and discovery import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { renderHook, waitFor } from '@testing-library/react'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { useIssueQueue, @@ -203,14 +203,18 @@ describe('useIssueDiscovery', () => { }); // Select a session to load findings - result.current.selectSession('1'); + act(() => { + result.current.selectSession('1'); + }); await waitFor(() => { expect(result.current.findings).toHaveLength(2); }); // Apply severity filter - result.current.setFilters({ severity: 'critical' as const }); + act(() => { + result.current.setFilters({ severity: 'critical' as const }); + }); await waitFor(() => { expect(result.current.filteredFindings).toHaveLength(1); @@ -239,14 +243,18 @@ describe('useIssueDiscovery', () => { }); // Select a session to load findings - result.current.selectSession('1'); + act(() => { + result.current.selectSession('1'); + }); await waitFor(() => { expect(result.current.findings).toHaveLength(2); }); // Apply type filter - result.current.setFilters({ type: 'bug' }); + act(() => { + result.current.setFilters({ type: 'bug' }); + }); await waitFor(() => { expect(result.current.filteredFindings).toHaveLength(1); @@ -275,14 +283,18 @@ describe('useIssueDiscovery', () => { }); // Select a session to load findings - result.current.selectSession('1'); + act(() => { + result.current.selectSession('1'); + }); await waitFor(() => { expect(result.current.findings).toHaveLength(2); }); // Apply search filter - result.current.setFilters({ search: 'authentication' }); + act(() => { + result.current.setFilters({ search: 'authentication' }); + }); await waitFor(() => { expect(result.current.filteredFindings).toHaveLength(1); @@ -310,7 +322,9 @@ describe('useIssueDiscovery', () => { }); // Select a session to load findings - result.current.selectSession('1'); + act(() => { + result.current.selectSession('1'); + }); await waitFor(() => { expect(result.current.findings).toHaveLength(1); diff --git a/ccw/frontend/src/hooks/useWebSocket.test.tsx b/ccw/frontend/src/hooks/useWebSocket.test.tsx index dccf1d95..b59b4737 100644 --- a/ccw/frontend/src/hooks/useWebSocket.test.tsx +++ b/ccw/frontend/src/hooks/useWebSocket.test.tsx @@ -77,6 +77,7 @@ describe('useWebSocket workspace scoping', () => { useSessionManagerStore.getState().resetState(); useWorkflowStore.setState({ projectPath: 'D:\\workspace-a' }); + vi.spyOn(console, 'log').mockImplementation(() => {}); vi.stubGlobal('WebSocket', MockWebSocket as unknown as typeof WebSocket); }); @@ -84,6 +85,7 @@ describe('useWebSocket workspace scoping', () => { useCliSessionStore.getState().resetState(); useExecutionMonitorStore.getState().resetState(); useSessionManagerStore.getState().resetState(); + vi.restoreAllMocks(); vi.unstubAllGlobals(); }); diff --git a/ccw/frontend/src/orchestrator/__tests__/OrchestrationPlanBuilder.test.ts b/ccw/frontend/src/orchestrator/__tests__/OrchestrationPlanBuilder.test.ts index 2b11b377..eafda430 100644 --- a/ccw/frontend/src/orchestrator/__tests__/OrchestrationPlanBuilder.test.ts +++ b/ccw/frontend/src/orchestrator/__tests__/OrchestrationPlanBuilder.test.ts @@ -137,6 +137,7 @@ describe('OrchestrationPlanBuilder', () => { }); it('should detect cycles and throw an error', () => { + const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); const flow: Flow = { id: 'flow-cycle', name: 'Cyclic Flow', @@ -156,7 +157,11 @@ describe('OrchestrationPlanBuilder', () => { metadata: {}, }; - expect(() => OrchestrationPlanBuilder.fromFlow(flow)).toThrow('Cycle detected in flow graph. Cannot build orchestration plan from cyclic flow.'); + try { + expect(() => OrchestrationPlanBuilder.fromFlow(flow)).toThrow('Cycle detected in flow graph. Cannot build orchestration plan from cyclic flow.'); + } finally { + consoleErrorSpy.mockRestore(); + } }); it('should correctly map sessionStrategy and executionType from node data', () => { diff --git a/ccw/frontend/src/stores/configStore.test.ts b/ccw/frontend/src/stores/configStore.test.ts new file mode 100644 index 00000000..92253c11 --- /dev/null +++ b/ccw/frontend/src/stores/configStore.test.ts @@ -0,0 +1,67 @@ +// ======================================== +// Config Store Tests +// ======================================== + +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +const CONFIG_STORE_MODULE_PATH = './configStore'; + +describe('configStore backend sync', () => { + beforeEach(() => { + vi.resetModules(); + vi.clearAllMocks(); + localStorage.clear(); + window.history.replaceState({}, '', '/'); + }); + + afterEach(() => { + vi.unstubAllGlobals(); + }); + + it('does not fetch backend config during module import', async () => { + const fetchMock = vi.fn(); + vi.stubGlobal('fetch', fetchMock); + + await import(CONFIG_STORE_MODULE_PATH); + + expect(fetchMock).not.toHaveBeenCalled(); + }); + + it('syncs backend config explicitly with an absolute URL', async () => { + const fetchMock = vi.fn().mockResolvedValue({ + json: vi.fn().mockResolvedValue({ + config: { + tools: { + codex: { + enabled: true, + primaryModel: 'gpt-5', + secondaryModel: 'gpt-5-mini', + tags: ['analysis', 'debug'], + type: 'builtin', + envFile: '.env.codex', + settingsFile: 'codex.settings.json', + availableModels: ['gpt-5', 'gpt-5-mini'], + }, + }, + }, + }), + }); + vi.stubGlobal('fetch', fetchMock); + + const { syncConfigStoreFromBackend, useConfigStore } = await import(CONFIG_STORE_MODULE_PATH); + + await syncConfigStoreFromBackend(true); + + expect(fetchMock).toHaveBeenCalledWith(`${window.location.origin}/api/cli/config`); + expect(useConfigStore.getState().cliTools.codex).toMatchObject({ + enabled: true, + primaryModel: 'gpt-5', + secondaryModel: 'gpt-5-mini', + tags: ['analysis', 'debug'], + type: 'builtin', + envFile: '.env.codex', + settingsFile: 'codex.settings.json', + availableModels: ['gpt-5', 'gpt-5-mini'], + }); + }); +}); diff --git a/ccw/frontend/src/test/i18n.tsx b/ccw/frontend/src/test/i18n.tsx index bef3b073..e48ade88 100644 --- a/ccw/frontend/src/test/i18n.tsx +++ b/ccw/frontend/src/test/i18n.tsx @@ -10,6 +10,8 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { MemoryRouter } from 'react-router-dom'; import { vi } from 'vitest'; import type { Locale } from '../types/store'; +import enMessages from '../locales/en/index'; +import zhMessages from '../locales/zh/index'; // Mock translation messages for testing const mockMessages: Record> = { @@ -677,13 +679,36 @@ interface I18nWrapperProps { locale?: Locale; } +const testMessages: Record> = { + en: { ...enMessages, ...mockMessages.en }, + zh: { ...zhMessages, ...mockMessages.zh }, +}; + +function handleIntlTestError(error: unknown): void { + const intlError = error as { code?: string } | undefined; + if (intlError?.code === 'MISSING_TRANSLATION') { + return; + } + + console.error(error); +} + +const testRouterFutureConfig = { + v7_startTransition: true, + v7_relativeSplatPath: true, +} as const; + function I18nWrapper({ children, locale = 'en' }: I18nWrapperProps) { const queryClient = createTestQueryClient(); return ( - + - + {children} @@ -726,9 +751,9 @@ export const mockLocaleUtils = { export function mockI18nContext(locale: Locale = 'en') { return { locale, - messages: mockMessages[locale], + messages: testMessages[locale], formatMessage: (id: string, values?: Record) => { - const message = mockMessages[locale][id]; + const message = testMessages[locale][id]; if (!message) return id; if (!values) return message; diff --git a/ccw/src/tools/smart-search.ts b/ccw/src/tools/smart-search.ts index b5e5d17c..ab948765 100644 --- a/ccw/src/tools/smart-search.ts +++ b/ccw/src/tools/smart-search.ts @@ -85,8 +85,8 @@ const ParamsSchema = z.object({ maxResults: z.number().default(5), // Default 5 with full content includeHidden: z.boolean().default(false), languages: z.array(z.string()).optional(), - embeddingBackend: z.string().optional().describe('Embedding backend for action="embed": fastembed/local or litellm/api.'), - embeddingModel: z.string().optional().describe('Embedding model/profile for action="embed". Examples: "code", "fast", "qwen3-embedding-sf".'), + embeddingBackend: z.string().optional().describe('Embedding backend for action="embed": fastembed/local or litellm/api. Default bulk preset: local-fast.'), + embeddingModel: z.string().optional().describe('Embedding model/profile for action="embed". Examples: "code", "fast", "qwen3-embedding-sf". Default bulk preset uses "fast".'), apiMaxWorkers: z.number().int().min(1).optional().describe('Max concurrent API embedding workers for action="embed". Recommended: 8-16 for litellm/api when multiple endpoints are configured.'), force: z.boolean().default(false).describe('Force regeneration for action="embed".'), limit: z.number().default(5), // Default 5 with full content @@ -328,6 +328,7 @@ interface SearchMetadata { use_gpu?: boolean; cascade_strategy?: string; staged_stage2_mode?: string; + preset?: string; } interface SearchResult { @@ -951,6 +952,42 @@ function normalizeEmbeddingBackend(backend?: string): string | undefined { return normalized; } +function resolveEmbeddingSelection( + requestedBackend: string | undefined, + requestedModel: string | undefined, + config: CodexLensConfig | null | undefined, +): { backend?: string; model?: string; preset: 'explicit' | 'config' | 'bulk-local-fast'; note?: string } { + const normalizedRequestedBackend = normalizeEmbeddingBackend(requestedBackend); + const normalizedRequestedModel = requestedModel?.trim() || undefined; + + if (normalizedRequestedBackend) { + return { + backend: normalizedRequestedBackend, + model: normalizedRequestedModel || config?.embedding_model, + preset: 'explicit', + }; + } + + if (normalizedRequestedModel) { + const inferredBackend = config?.embedding_backend + || (['fast', 'code'].includes(normalizedRequestedModel) ? 'fastembed' : undefined); + return { + backend: inferredBackend, + model: normalizedRequestedModel, + preset: inferredBackend ? 'config' : 'explicit', + }; + } + + return { + backend: 'fastembed', + model: 'fast', + preset: 'bulk-local-fast', + note: config?.embedding_backend && config.embedding_backend !== 'fastembed' + ? `Using recommended bulk indexing preset: local-fast instead of configured ${config.embedding_backend}. Pass embeddingBackend="api" to force remote API embeddings.` + : 'Using recommended bulk indexing preset: local-fast. Pass embeddingBackend="api" to force remote API embeddings.', + }; +} + const EMBED_PROGRESS_PREFIX = '__CCW_EMBED_PROGRESS__'; function resolveEmbeddingEndpoints(backend?: string): RotationEndpointConfig[] { @@ -1214,8 +1251,9 @@ async function executeEmbedAction(params: Params): Promise { } const currentStatus = await checkIndexStatus(scope.workingDirectory); - const normalizedBackend = normalizeEmbeddingBackend(embeddingBackend) || currentStatus.config?.embedding_backend; - const trimmedModel = embeddingModel?.trim() || currentStatus.config?.embedding_model; + const embeddingSelection = resolveEmbeddingSelection(embeddingBackend, embeddingModel, currentStatus.config); + const normalizedBackend = embeddingSelection.backend; + const trimmedModel = embeddingSelection.model; const endpoints = resolveEmbeddingEndpoints(normalizedBackend); const configuredApiMaxWorkers = currentStatus.config?.api_max_workers; const effectiveApiMaxWorkers = typeof apiMaxWorkers === 'number' @@ -1261,12 +1299,13 @@ async function executeEmbedAction(params: Params): Promise { path: scope.workingDirectory, backend: normalizedBackend || indexStatus?.config?.embedding_backend, embeddings_coverage_percent: coverage, - api_max_workers: effectiveApiMaxWorkers, + api_max_workers: normalizedBackend === 'litellm' ? effectiveApiMaxWorkers : undefined, endpoint_count: endpoints.length, use_gpu: true, cascade_strategy: currentStatus.config?.cascade_strategy, staged_stage2_mode: currentStatus.config?.staged_stage2_mode, - note: progressMessage, + note: [embeddingSelection.note, progressMessage].filter(Boolean).join(' | ') || undefined, + preset: embeddingSelection.preset, }, status: indexStatus, }; @@ -2590,8 +2629,8 @@ Recommended MCP flow: use **action=\"search\"** for lookups, **action=\"init\"** * **embed**: Generate semantic/vector embeddings for an indexed project. * *path* (string): Directory to embed (default: current). - * *embeddingBackend* (string): 'litellm'/'api' for remote API embeddings, 'fastembed'/'local' for local embeddings. - * *embeddingModel* (string): Embedding model/profile to use. + * *embeddingBackend* (string): 'litellm'/'api' for remote API embeddings, 'fastembed'/'local' for local embeddings. Default bulk preset: local-fast. + * *embeddingModel* (string): Embedding model/profile to use. Default bulk preset uses 'fast'. * *apiMaxWorkers* (number): Max concurrent API embedding workers. Defaults to auto-sizing from the configured endpoint pool. * *force* (boolean): Regenerate embeddings even if they already exist. @@ -2693,11 +2732,11 @@ Recommended MCP flow: use **action=\"search\"** for lookups, **action=\"init\"** }, embeddingBackend: { type: 'string', - description: 'Embedding backend for action="embed": litellm/api (remote API) or fastembed/local (local GPU/CPU).', + description: 'Embedding backend for action="embed": litellm/api (remote API) or fastembed/local (local GPU/CPU). Default bulk preset: local-fast.', }, embeddingModel: { type: 'string', - description: 'Embedding model/profile for action="embed". Examples: "code", "fast", "qwen3-embedding-sf".', + description: 'Embedding model/profile for action="embed". Examples: "code", "fast", "qwen3-embedding-sf". Default bulk preset uses "fast".', }, apiMaxWorkers: { type: 'number', @@ -3163,6 +3202,7 @@ export const __testables = { parseCodexLensJsonOutput, parsePlainTextFileMatches, hasCentralizedVectorArtifacts, + resolveEmbeddingSelection, }; export async function executeInitWithProgress( diff --git a/ccw/tests/smart-search-mcp-usage.test.js b/ccw/tests/smart-search-mcp-usage.test.js index 827b3538..df071c3a 100644 --- a/ccw/tests/smart-search-mcp-usage.test.js +++ b/ccw/tests/smart-search-mcp-usage.test.js @@ -121,6 +121,66 @@ describe('Smart Search MCP usage defaults and path handling', async () => { assert.ok(toolResult.result.results.length >= 1); }); + it('defaults embed selection to local-fast for bulk indexing', () => { + if (!smartSearchModule) return; + + const selection = smartSearchModule.__testables.resolveEmbeddingSelection(undefined, undefined, { + embedding_backend: 'litellm', + embedding_model: 'qwen3-embedding-sf', + }); + + assert.equal(selection.backend, 'fastembed'); + assert.equal(selection.model, 'fast'); + assert.equal(selection.preset, 'bulk-local-fast'); + assert.match(selection.note, /local-fast/i); + }); + + it('keeps explicit api embedding selection when requested', () => { + if (!smartSearchModule) return; + + const selection = smartSearchModule.__testables.resolveEmbeddingSelection('api', 'qwen3-embedding-sf', { + embedding_backend: 'fastembed', + embedding_model: 'fast', + }); + + assert.equal(selection.backend, 'litellm'); + assert.equal(selection.model, 'qwen3-embedding-sf'); + assert.equal(selection.preset, 'explicit'); + }); + + it('parses warning-prefixed JSON and plain-text file lists for semantic fallback', () => { + if (!smartSearchModule) return; + + const dir = createWorkspace(); + const target = join(dir, 'target.ts'); + writeFileSync(target, 'export const target = 1;\n'); + + const parsed = smartSearchModule.__testables.parseCodexLensJsonOutput([ + 'RuntimeWarning: compatibility shim', + JSON.stringify({ results: [{ file: 'target.ts', score: 0.25, excerpt: 'target' }] }), + ].join('\n')); + assert.equal(Array.isArray(parsed.results), true); + assert.equal(parsed.results[0].file, 'target.ts'); + + const matches = smartSearchModule.__testables.parsePlainTextFileMatches(target, { + workingDirectory: dir, + searchPaths: ['.'], + }); + assert.equal(matches.length, 1); + assert.match(String(matches[0].file).replace(/\\/g, '/'), /target\.ts$/); + }); + + it('detects centralized vector artifacts as full embedding coverage evidence', () => { + if (!smartSearchModule) return; + + const dir = createWorkspace(); + writeFileSync(join(dir, '_vectors.hnsw'), 'hnsw'); + writeFileSync(join(dir, '_vectors_meta.db'), 'meta'); + writeFileSync(join(dir, '_binary_vectors.mmap'), 'mmap'); + + assert.equal(smartSearchModule.__testables.hasCentralizedVectorArtifacts(dir), true); + }); + it('surfaces backend failure details when fuzzy search fully fails', async () => { if (!smartSearchModule) return; diff --git a/codex-lens/src/codexlens/config.py b/codex-lens/src/codexlens/config.py index 8548dcfe..d6d59a34 100644 --- a/codex-lens/src/codexlens/config.py +++ b/codex-lens/src/codexlens/config.py @@ -114,6 +114,8 @@ class Config: # Indexing/search optimizations global_symbol_index_enabled: bool = True # Enable project-wide symbol index fast path enable_merkle_detection: bool = True # Enable content-hash based incremental indexing + ignore_patterns: List[str] = field(default_factory=list) # Additional directory ignore patterns for indexing + extension_filters: List[str] = field(default_factory=list) # Reserved for file-level filtering config # Graph expansion (search-time, uses precomputed neighbors) enable_graph_expansion: bool = False @@ -342,6 +344,8 @@ class Config: "batch_size_max": self.api_batch_size_max, "chars_per_token_estimate": self.chars_per_token_estimate, }, + "ignore_patterns": self.ignore_patterns, + "extension_filters": self.extension_filters, } with open(self.settings_path, "w", encoding="utf-8") as f: json.dump(settings, f, indent=2) @@ -638,6 +642,34 @@ class Config: raw_types, ) + raw_ignore_patterns = settings.get("ignore_patterns") + if raw_ignore_patterns is not None: + if isinstance(raw_ignore_patterns, list): + self.ignore_patterns = [ + str(item).strip() for item in raw_ignore_patterns + if str(item).strip() + ] + else: + log.warning( + "Invalid ignore_patterns in %s: %r (expected list)", + self.settings_path, + raw_ignore_patterns, + ) + + raw_extension_filters = settings.get("extension_filters") + if raw_extension_filters is not None: + if isinstance(raw_extension_filters, list): + self.extension_filters = [ + str(item).strip() for item in raw_extension_filters + if str(item).strip() + ] + else: + log.warning( + "Invalid extension_filters in %s: %r (expected list)", + self.settings_path, + raw_extension_filters, + ) + # Load API settings api = settings.get("api", {}) if "max_workers" in api: diff --git a/codex-lens/src/codexlens/storage/index_tree.py b/codex-lens/src/codexlens/storage/index_tree.py index 696ec573..2d475e05 100644 --- a/codex-lens/src/codexlens/storage/index_tree.py +++ b/codex-lens/src/codexlens/storage/index_tree.py @@ -6,6 +6,7 @@ Each directory maintains its own _index.db with files and subdirectory links. from __future__ import annotations +import fnmatch import logging import os import re @@ -24,6 +25,46 @@ from codexlens.storage.path_mapper import PathMapper from codexlens.storage.registry import ProjectInfo, RegistryStore +DEFAULT_IGNORE_DIRS: Set[str] = { + ".git", + ".svn", + ".hg", + ".venv", + "venv", + "env", + "node_modules", + "bower_components", + "__pycache__", + ".pytest_cache", + ".mypy_cache", + ".ruff_cache", + ".npm", + ".yarn", + ".codexlens", + ".idea", + ".vscode", + ".vs", + ".eclipse", + "dist", + "build", + "out", + "target", + "bin", + "obj", + "_build", + "coverage", + "htmlcov", + ".cache", + ".parcel-cache", + ".turbo", + ".next", + ".nuxt", + "logs", + "tmp", + "temp", +} + + @dataclass class BuildResult: """Complete build operation result.""" @@ -67,16 +108,7 @@ class IndexTreeBuilder: """ # Directories to skip during indexing - IGNORE_DIRS: Set[str] = { - ".git", - ".venv", - "venv", - "node_modules", - "__pycache__", - ".codexlens", - ".idea", - ".vscode", - } + IGNORE_DIRS: Set[str] = DEFAULT_IGNORE_DIRS def __init__( self, registry: RegistryStore, mapper: PathMapper, config: Config = None, incremental: bool = True @@ -95,6 +127,37 @@ class IndexTreeBuilder: self.parser_factory = ParserFactory(self.config) self.logger = logging.getLogger(__name__) self.incremental = incremental + self.ignore_patterns = self._resolve_ignore_patterns() + + def _resolve_ignore_patterns(self) -> Tuple[str, ...]: + configured_patterns = getattr(self.config, "ignore_patterns", None) + raw_patterns = configured_patterns if configured_patterns else list(DEFAULT_IGNORE_DIRS) + cleaned: List[str] = [] + for item in raw_patterns: + pattern = str(item).strip().replace('\\', '/').rstrip('/') + if pattern: + cleaned.append(pattern) + return tuple(dict.fromkeys(cleaned)) + + def _is_ignored_dir(self, dir_path: Path, source_root: Optional[Path] = None) -> bool: + name = dir_path.name + if name.startswith('.'): + return True + + rel_path: Optional[str] = None + if source_root is not None: + try: + rel_path = dir_path.relative_to(source_root).as_posix() + except ValueError: + rel_path = None + + for pattern in self.ignore_patterns: + if pattern == name or fnmatch.fnmatch(name, pattern): + return True + if rel_path and (pattern == rel_path or fnmatch.fnmatch(rel_path, pattern)): + return True + + return False def build( self, @@ -377,10 +440,11 @@ class IndexTreeBuilder: for root, dirnames, _ in os.walk(source_root): # Filter out ignored directories + root_path = Path(root) dirnames[:] = [ d for d in dirnames - if d not in self.IGNORE_DIRS and not d.startswith(".") + if not self._is_ignored_dir(root_path / d, source_root) ] root_path = Path(root) @@ -390,7 +454,7 @@ class IndexTreeBuilder: continue # Check if this directory should be indexed - if not self._should_index_dir(root_path, languages): + if not self._should_index_dir(root_path, languages, source_root=source_root): continue # Calculate depth relative to source_root @@ -406,7 +470,7 @@ class IndexTreeBuilder: return dirs_by_depth - def _should_index_dir(self, dir_path: Path, languages: List[str] = None) -> bool: + def _should_index_dir(self, dir_path: Path, languages: List[str] = None, source_root: Optional[Path] = None) -> bool: """Check if directory should be indexed. A directory is indexed if: @@ -423,7 +487,7 @@ class IndexTreeBuilder: True if directory should be indexed """ # Check directory name - if dir_path.name in self.IGNORE_DIRS or dir_path.name.startswith("."): + if self._is_ignored_dir(dir_path, source_root): return False # Check for supported files in this directory @@ -436,15 +500,15 @@ class IndexTreeBuilder: for item in dir_path.iterdir(): if not item.is_dir(): continue - if item.name in self.IGNORE_DIRS or item.name.startswith("."): + if self._is_ignored_dir(item, source_root): continue # Recursively check subdirectories - if self._has_indexable_files_recursive(item, languages): + if self._has_indexable_files_recursive(item, languages, source_root=source_root): return True return False - def _has_indexable_files_recursive(self, dir_path: Path, languages: List[str] = None) -> bool: + def _has_indexable_files_recursive(self, dir_path: Path, languages: List[str] = None, source_root: Optional[Path] = None) -> bool: """Check if directory or any subdirectory has indexable files. Args: @@ -464,9 +528,9 @@ class IndexTreeBuilder: for item in dir_path.iterdir(): if not item.is_dir(): continue - if item.name in self.IGNORE_DIRS or item.name.startswith("."): + if self._is_ignored_dir(item, source_root): continue - if self._has_indexable_files_recursive(item, languages): + if self._has_indexable_files_recursive(item, languages, source_root=source_root): return True except PermissionError: pass @@ -520,6 +584,7 @@ class IndexTreeBuilder: "static_graph_enabled": self.config.static_graph_enabled, "static_graph_relationship_types": self.config.static_graph_relationship_types, "use_astgrep": getattr(self.config, "use_astgrep", False), + "ignore_patterns": list(getattr(self.config, "ignore_patterns", [])), } worker_args = [ @@ -666,8 +731,7 @@ class IndexTreeBuilder: d.name for d in dir_path.iterdir() if d.is_dir() - and d.name not in self.IGNORE_DIRS - and not d.name.startswith(".") + and not self._is_ignored_dir(d) ] store.update_merkle_root() @@ -963,6 +1027,19 @@ def _compute_graph_neighbors( # === Worker Function for ProcessPoolExecutor === +def _matches_ignore_patterns(path: Path, patterns: List[str]) -> bool: + name = path.name + if name.startswith('.'): + return True + for pattern in patterns: + normalized = str(pattern).strip().replace('\\', '/').rstrip('/') + if not normalized: + continue + if normalized == name or fnmatch.fnmatch(name, normalized): + return True + return False + + def _build_dir_worker(args: tuple) -> DirBuildResult: """Worker function for parallel directory building. @@ -986,6 +1063,7 @@ def _build_dir_worker(args: tuple) -> DirBuildResult: static_graph_enabled=bool(config_dict.get("static_graph_enabled", False)), static_graph_relationship_types=list(config_dict.get("static_graph_relationship_types", ["imports", "inherits"])), use_astgrep=bool(config_dict.get("use_astgrep", False)), + ignore_patterns=list(config_dict.get("ignore_patterns", [])), ) parser_factory = ParserFactory(config) @@ -1064,21 +1142,11 @@ def _build_dir_worker(args: tuple) -> DirBuildResult: _compute_graph_neighbors(store) # Get subdirectories - ignore_dirs = { - ".git", - ".venv", - "venv", - "node_modules", - "__pycache__", - ".codexlens", - ".idea", - ".vscode", - } - + ignore_patterns = list(config_dict.get("ignore_patterns", [])) or list(DEFAULT_IGNORE_DIRS) subdirs = [ d.name for d in dir_path.iterdir() - if d.is_dir() and d.name not in ignore_dirs and not d.name.startswith(".") + if d.is_dir() and not _matches_ignore_patterns(d, ignore_patterns) ] store.update_merkle_root() diff --git a/codex-lens/tests/test_config_ignore_patterns.py b/codex-lens/tests/test_config_ignore_patterns.py new file mode 100644 index 00000000..9db62d49 --- /dev/null +++ b/codex-lens/tests/test_config_ignore_patterns.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +import json +from pathlib import Path + +from codexlens.config import Config + + +def test_load_settings_reads_ignore_patterns_and_extension_filters(tmp_path: Path) -> None: + settings_path = tmp_path / "settings.json" + settings_path.write_text( + json.dumps( + { + "ignore_patterns": ["frontend/dist", "coverage"], + "extension_filters": ["*.min.js", "*.map"], + } + ), + encoding="utf-8", + ) + + config = Config(data_dir=tmp_path) + + assert config.ignore_patterns == ["frontend/dist", "coverage"] + assert config.extension_filters == ["*.min.js", "*.map"] diff --git a/codex-lens/tests/test_index_tree_ignore_dirs.py b/codex-lens/tests/test_index_tree_ignore_dirs.py new file mode 100644 index 00000000..c83488ed --- /dev/null +++ b/codex-lens/tests/test_index_tree_ignore_dirs.py @@ -0,0 +1,86 @@ +from __future__ import annotations + +from pathlib import Path +from unittest.mock import MagicMock + +from codexlens.config import Config +from codexlens.storage.index_tree import IndexTreeBuilder + + +def _relative_dirs(source_root: Path, dirs_by_depth: dict[int, list[Path]]) -> set[str]: + return { + path.relative_to(source_root).as_posix() + for paths in dirs_by_depth.values() + for path in paths + if path != source_root + } + + +def test_collect_dirs_by_depth_skips_common_build_artifact_dirs(tmp_path: Path) -> None: + src_dir = tmp_path / "src" + src_dir.mkdir() + (src_dir / "app.py").write_text("print('ok')\n", encoding="utf-8") + + for artifact_dir in ["dist", "build", "coverage", ".next", "out", ".turbo", ".parcel-cache", "target"]: + target_dir = tmp_path / artifact_dir + target_dir.mkdir(parents=True, exist_ok=True) + (target_dir / "generated.py").write_text("print('artifact')\n", encoding="utf-8") + + builder = IndexTreeBuilder( + registry=MagicMock(), + mapper=MagicMock(), + config=Config(data_dir=tmp_path / "data"), + incremental=False, + ) + + dirs_by_depth = builder._collect_dirs_by_depth(tmp_path) + discovered_dirs = _relative_dirs(tmp_path, dirs_by_depth) + + assert "src" in discovered_dirs + assert "dist" not in discovered_dirs + assert "build" not in discovered_dirs + assert "coverage" not in discovered_dirs + assert ".next" not in discovered_dirs + assert "out" not in discovered_dirs + assert ".turbo" not in discovered_dirs + assert ".parcel-cache" not in discovered_dirs + assert "target" not in discovered_dirs + + +def test_should_index_dir_ignores_transitive_build_only_subtrees(tmp_path: Path) -> None: + package_dir = tmp_path / "package" + dist_dir = package_dir / "dist" + dist_dir.mkdir(parents=True) + (dist_dir / "bundle.py").write_text("print('compiled')\n", encoding="utf-8") + + builder = IndexTreeBuilder( + registry=MagicMock(), + mapper=MagicMock(), + config=Config(data_dir=tmp_path / "data"), + incremental=False, + ) + + assert builder._should_index_dir(package_dir) is False + + +def test_collect_dirs_by_depth_respects_relative_ignore_patterns_from_config(tmp_path: Path) -> None: + src_dir = tmp_path / "frontend" / "src" + src_dir.mkdir(parents=True) + (src_dir / "app.ts").write_text("export const app = 1\n", encoding="utf-8") + + dist_dir = tmp_path / "frontend" / "dist" + dist_dir.mkdir(parents=True) + (dist_dir / "bundle.ts").write_text("export const bundle = 1\n", encoding="utf-8") + + builder = IndexTreeBuilder( + registry=MagicMock(), + mapper=MagicMock(), + config=Config(data_dir=tmp_path / "data", ignore_patterns=["frontend/dist"]), + incremental=False, + ) + + dirs_by_depth = builder._collect_dirs_by_depth(tmp_path) + discovered_dirs = _relative_dirs(tmp_path, dirs_by_depth) + + assert "frontend/src" in discovered_dirs + assert "frontend/dist" not in discovered_dirs diff --git a/docs/CCW-CODEX-COMMANDS-SKILLS-GUIDE.md b/docs/CCW-CODEX-COMMANDS-SKILLS-GUIDE.md index 946c903b..7b03926c 100644 --- a/docs/CCW-CODEX-COMMANDS-SKILLS-GUIDE.md +++ b/docs/CCW-CODEX-COMMANDS-SKILLS-GUIDE.md @@ -379,7 +379,7 @@ Agent({ run_in_background: true, prompt: `## Role Assignment role: -role_spec: .claude/skills/team-planex/roles//role.md +role_spec: ~ or /.claude/skills/team-planex/roles//role.md session: session_id: inner_loop: true` diff --git a/docs/guide/installation.md b/docs/guide/installation.md index 3ea43a80..40bf1569 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -240,7 +240,7 @@ rm -rf ~/.claude/commands/cli rm -rf ~/.claude/commands/memory rm -rf ~/.claude/commands/idaw rm -rf ~/.claude/skills/workflow-* -rm -rf ~/.claude/skills/team-* +rm -rf ~/~ or /.claude/skills/team-* rm -rf ~/.claude/skills/review-* rm -rf ~/.claude/agents/team-worker.md rm -rf ~/.claude/agents/cli-*-agent.md diff --git a/docs/skills/custom.md b/docs/skills/custom.md index 71a697bf..af220113 100644 --- a/docs/skills/custom.md +++ b/docs/skills/custom.md @@ -221,7 +221,7 @@ git push -u origin main Team members install: ```bash -git clone ~/.claude/skills/team-skills +git clone ~/~ or /.claude/skills/team-skills ``` ### Public Skills diff --git a/docs/workflows/examples.md b/docs/workflows/examples.md index b3b8ce4e..51777f17 100644 --- a/docs/workflows/examples.md +++ b/docs/workflows/examples.md @@ -88,22 +88,22 @@ This is an output from `team-coordinate` with a team of specialists. { "name": "architect", "type": "team-worker", - "role_spec": ".claude/skills/team-lifecycle/role-specs/architect.md" + "role_spec": "~ or /.claude/skills/team-lifecycle/role-specs/architect.md" }, { "name": "frontend-dev", "type": "team-worker", - "role_spec": ".claude/skills/team-lifecycle/role-specs/frontend-dev.md" + "role_spec": "~ or /.claude/skills/team-lifecycle/role-specs/frontend-dev.md" }, { "name": "backend-dev", "type": "team-worker", - "role_spec": ".claude/skills/team-lifecycle/role-specs/backend-dev.md" + "role_spec": "~ or /.claude/skills/team-lifecycle/role-specs/backend-dev.md" }, { "name": "qa-engineer", "type": "team-worker", - "role_spec": ".claude/skills/team-lifecycle/role-specs/qa.md" + "role_spec": "~ or /.claude/skills/team-lifecycle/role-specs/qa.md" } ], "deliverables": [ diff --git a/docs/zh/guide/installation.md b/docs/zh/guide/installation.md index 7b6f4399..106e4d07 100644 --- a/docs/zh/guide/installation.md +++ b/docs/zh/guide/installation.md @@ -177,7 +177,7 @@ rm -rf ~/.claude/commands/cli rm -rf ~/.claude/commands/memory rm -rf ~/.claude/commands/idaw rm -rf ~/.claude/skills/workflow-* -rm -rf ~/.claude/skills/team-* +rm -rf ~/~ or /.claude/skills/team-* rm -rf ~/.claude/skills/review-* rm -rf ~/.claude/agents/team-worker.md rm -rf ~/.claude/agents/cli-*-agent.md diff --git a/docs/zh/skills/custom.md b/docs/zh/skills/custom.md index 4e16e4e1..d6fca16d 100644 --- a/docs/zh/skills/custom.md +++ b/docs/zh/skills/custom.md @@ -221,7 +221,7 @@ git push -u origin main 团队成员安装: ```bash -git clone ~/.claude/skills/team-skills +git clone ~/~ or /.claude/skills/team-skills ``` ### 公共技能