[#320] move-allowed-tools-claude (#469)

* takt: move-allowed-tools-claude

* fix: E2Eフィクスチャの allowed_tools を provider_options.claude に移行

PR #469 で allowed_tools がムーブメント直下から provider_options.claude.allowed_tools に
移動されたが、E2Eフィクスチャとインラインピース定義が旧形式のままだった。
This commit is contained in:
nrs 2026-03-05 11:27:48 +09:00 committed by GitHub
parent 2ce51affd1
commit 2f268f6d43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
95 changed files with 5195 additions and 3847 deletions

View File

@ -30,6 +30,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +62,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +98,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -117,6 +123,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -182,6 +192,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -211,6 +223,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -241,6 +255,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -53,6 +55,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -75,6 +79,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -95,6 +101,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +124,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -148,6 +158,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -170,6 +182,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -202,6 +216,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -40,6 +42,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -62,6 +66,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -82,6 +88,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -103,6 +111,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -128,6 +138,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -29,6 +29,8 @@ movements:
- backend
- cqrs-es
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -58,6 +60,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -91,6 +95,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -119,6 +125,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -141,6 +149,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -160,6 +170,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -179,6 +191,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -199,6 +213,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -229,6 +245,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -250,6 +268,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -281,6 +301,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -29,6 +29,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -58,6 +60,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -92,6 +96,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -114,6 +120,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +161,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -177,6 +187,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -205,6 +217,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -234,6 +248,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -53,6 +55,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -73,6 +77,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +100,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -125,6 +133,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -147,6 +157,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -178,6 +190,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -40,6 +42,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +64,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -81,6 +87,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -106,6 +114,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -28,6 +28,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -56,6 +58,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -89,6 +93,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +122,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -138,6 +146,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +167,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -176,6 +188,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -196,6 +210,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -225,6 +241,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -246,6 +264,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -276,6 +296,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -17,6 +17,8 @@ movements:
provider: claude
session: refresh
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -56,6 +58,8 @@ movements:
provider: codex
session: refresh
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -95,6 +99,8 @@ movements:
- name: synthesize
edit: false
persona: supervisor
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -14,6 +14,8 @@ movements:
policy: research
knowledge: research
instruction: research-plan
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -43,6 +45,8 @@ movements:
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Write
@ -62,6 +66,8 @@ movements:
knowledge: research
instruction: research-analyze
edit: true
provider_options:
claude:
allowed_tools:
- Read
- Write
@ -79,6 +85,8 @@ movements:
policy: research
knowledge: research
instruction: research-supervise
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -50,6 +50,8 @@ movements:
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -81,6 +83,8 @@ movements:
- testing
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -118,6 +122,8 @@ movements:
session: refresh
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -152,6 +158,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -177,6 +185,8 @@ movements:
session: refresh
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -203,6 +213,8 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -221,6 +233,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -252,6 +266,8 @@ movements:
- testing
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -31,6 +31,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -62,6 +64,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -96,6 +100,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +126,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -161,6 +169,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -187,6 +197,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -217,6 +229,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -248,6 +262,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -54,6 +56,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -76,6 +80,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -96,6 +102,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +124,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -137,6 +147,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -170,6 +182,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -192,6 +206,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -225,6 +241,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -41,6 +43,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -63,6 +67,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -83,6 +89,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -103,6 +111,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -124,6 +134,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -149,6 +161,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -42,6 +42,8 @@ movements:
- backend
- cqrs-es
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -72,6 +74,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -105,6 +109,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -134,6 +140,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -156,6 +164,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -175,6 +185,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -194,6 +206,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -213,6 +227,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -233,6 +249,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -264,6 +282,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -285,6 +305,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -317,6 +339,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -30,6 +30,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +62,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +98,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -117,6 +123,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -182,6 +192,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -211,6 +223,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -241,6 +255,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -54,6 +56,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -74,6 +78,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +100,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -115,6 +123,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -147,6 +157,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -169,6 +181,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -201,6 +215,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -41,6 +43,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -61,6 +65,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -81,6 +87,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -102,6 +110,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -127,6 +137,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -41,6 +41,8 @@ movements:
- frontend
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -70,6 +72,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -103,6 +107,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -131,6 +137,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +161,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -172,6 +182,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -191,6 +203,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -210,6 +224,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -230,6 +246,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -260,6 +278,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -281,6 +301,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -312,6 +334,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -41,6 +41,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -74,6 +76,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -108,6 +112,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -134,6 +140,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -173,6 +183,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -199,6 +211,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -220,6 +234,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -29,6 +29,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -58,6 +60,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -92,6 +96,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -114,6 +120,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +161,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -177,6 +187,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -205,6 +217,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -234,6 +248,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -53,6 +55,8 @@ movements:
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -73,6 +77,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -93,6 +99,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -114,6 +122,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -145,6 +155,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -167,6 +179,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -198,6 +212,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -40,6 +42,8 @@ movements:
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +64,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -80,6 +86,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -101,6 +109,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -126,6 +136,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -28,6 +28,8 @@ movements:
knowledge:
- frontend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -56,6 +58,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -89,6 +93,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +122,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -138,6 +146,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +167,8 @@ movements:
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -176,6 +188,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -195,6 +209,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -215,6 +231,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -244,6 +262,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -265,6 +285,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -295,6 +317,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -2,6 +2,13 @@ name: magi
description: MAGI Deliberation System - Analyze from 3 perspectives and decide by majority
piece_config:
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
codex:
network_access: true
opencode:
@ -11,12 +18,6 @@ initial_movement: melchior
movements:
- name: melchior
persona: melchior
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System Initiated
@ -47,12 +48,6 @@ movements:
next: balthasar
- name: balthasar
persona: balthasar
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System Continuing
@ -87,12 +82,6 @@ movements:
next: casper
- name: casper
persona: casper
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System Final Deliberation

View File

@ -2,6 +2,13 @@ name: research
description: Research piece - autonomously executes research without asking questions
piece_config:
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
codex:
network_access: true
opencode:
@ -14,12 +21,6 @@ movements:
policy: research
knowledge: research
instruction: research-plan
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: Planning is complete
next: dig
@ -30,12 +31,6 @@ movements:
policy: research
knowledge: research
instruction: research-dig
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: Research is complete
next: supervise
@ -46,12 +41,6 @@ movements:
policy: research
knowledge: research
instruction: research-supervise
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: Research results adequately answer the original request
next: COMPLETE

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -55,6 +57,8 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -76,6 +80,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -98,6 +104,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +128,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -140,6 +150,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -171,6 +183,8 @@ movements:
knowledge:
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -193,6 +207,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -223,6 +239,8 @@ movements:
knowledge:
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -42,6 +44,8 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -63,6 +67,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -85,6 +91,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -107,6 +115,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -127,6 +137,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +165,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -57,6 +59,8 @@ movements:
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -78,6 +82,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -100,6 +106,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -122,6 +130,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -142,6 +152,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -174,6 +186,8 @@ movements:
- takt
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -196,6 +210,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -50,6 +50,8 @@ movements:
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -82,6 +84,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +124,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -168,6 +174,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -194,6 +202,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -217,6 +227,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -236,6 +248,8 @@ movements:
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -256,6 +270,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -277,6 +293,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -298,6 +316,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -317,6 +337,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -346,6 +368,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -367,6 +391,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -50,6 +50,8 @@ movements:
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -82,6 +84,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +124,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -154,6 +160,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -180,6 +188,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -203,6 +213,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -222,6 +234,8 @@ movements:
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -242,6 +256,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -263,6 +279,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -284,6 +302,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -303,6 +323,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -332,6 +354,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -353,6 +377,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
edit: false
persona: planner
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -38,6 +40,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -77,6 +81,8 @@ movements:
- review
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -98,6 +104,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -122,6 +130,8 @@ movements:
persona: supervisor
policy: review
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -156,6 +166,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -176,6 +188,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -200,6 +214,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -225,6 +241,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -41,6 +41,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -74,6 +76,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -108,6 +112,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -134,6 +140,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -173,6 +183,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -199,6 +211,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -220,6 +234,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -30,6 +30,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +62,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +98,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -117,6 +123,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -182,6 +192,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -211,6 +223,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -241,6 +255,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -53,6 +55,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -75,6 +79,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -95,6 +101,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +124,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -148,6 +158,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -170,6 +182,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -202,6 +216,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -40,6 +42,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -62,6 +66,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -82,6 +88,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -103,6 +111,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -128,6 +138,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -29,6 +29,8 @@ movements:
- backend
- cqrs-es
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -58,6 +60,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -91,6 +95,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -119,6 +125,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -141,6 +149,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -160,6 +170,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -179,6 +191,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -199,6 +213,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -229,6 +245,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -250,6 +268,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -281,6 +301,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -29,6 +29,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -58,6 +60,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -92,6 +96,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -114,6 +120,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +161,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -177,6 +187,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -205,6 +217,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -234,6 +248,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -53,6 +55,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -73,6 +77,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +100,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -125,6 +133,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -147,6 +157,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -178,6 +190,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -40,6 +42,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +64,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -81,6 +87,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -106,6 +114,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -28,6 +28,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -56,6 +58,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -89,6 +93,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +122,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -138,6 +146,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +167,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -176,6 +188,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -196,6 +210,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -225,6 +241,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -246,6 +264,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -276,6 +296,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -16,6 +16,8 @@ movements:
persona: coder
provider: claude
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -54,6 +56,8 @@ movements:
persona: coder
provider: codex
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -93,6 +97,8 @@ movements:
- name: synthesize
edit: false
persona: supervisor
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -14,6 +14,8 @@ movements:
policy: research
knowledge: research
instruction: research-plan
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -43,6 +45,8 @@ movements:
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Write
@ -62,6 +66,8 @@ movements:
knowledge: research
instruction: research-analyze
edit: true
provider_options:
claude:
allowed_tools:
- Read
- Write
@ -79,6 +85,8 @@ movements:
policy: research
knowledge: research
instruction: research-supervise
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -50,6 +50,8 @@ movements:
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -81,6 +83,8 @@ movements:
- testing
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -118,6 +122,8 @@ movements:
session: refresh
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -152,6 +158,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -177,6 +185,8 @@ movements:
session: refresh
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -203,6 +213,8 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -221,6 +233,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -252,6 +266,8 @@ movements:
- testing
knowledge:
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -31,6 +31,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -62,6 +64,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -96,6 +100,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +126,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -161,6 +169,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -187,6 +197,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -217,6 +229,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -248,6 +262,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -54,6 +56,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -76,6 +80,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -96,6 +102,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +124,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -137,6 +147,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -170,6 +182,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -192,6 +206,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -225,6 +241,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -41,6 +43,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -63,6 +67,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -83,6 +89,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -103,6 +111,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -124,6 +134,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -149,6 +161,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -42,6 +42,8 @@ movements:
- backend
- cqrs-es
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -72,6 +74,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -105,6 +109,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -134,6 +140,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -156,6 +164,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -175,6 +185,8 @@ movements:
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -194,6 +206,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -213,6 +227,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -233,6 +249,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -264,6 +282,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -285,6 +305,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -317,6 +339,8 @@ movements:
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -30,6 +30,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +62,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +98,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -117,6 +123,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -182,6 +192,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -211,6 +223,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -241,6 +255,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -54,6 +56,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -74,6 +78,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -94,6 +100,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -115,6 +123,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -147,6 +157,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -169,6 +181,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -201,6 +215,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -41,6 +43,8 @@ movements:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -61,6 +65,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -81,6 +87,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -102,6 +110,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -127,6 +137,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -41,6 +41,8 @@ movements:
- frontend
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -70,6 +72,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -103,6 +107,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -131,6 +137,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +161,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -172,6 +182,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -191,6 +203,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -210,6 +224,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -230,6 +246,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -260,6 +278,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -281,6 +301,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -312,6 +334,8 @@ movements:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -41,6 +41,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -74,6 +76,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -108,6 +112,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -134,6 +140,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -173,6 +183,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -199,6 +211,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -220,6 +234,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -29,6 +29,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -58,6 +60,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -92,6 +96,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -114,6 +120,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +161,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -177,6 +187,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -205,6 +217,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -234,6 +248,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -53,6 +55,8 @@ movements:
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -73,6 +77,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -93,6 +99,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -114,6 +122,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -145,6 +155,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -167,6 +179,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -198,6 +212,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -40,6 +42,8 @@ movements:
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -60,6 +64,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -80,6 +86,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -101,6 +109,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -126,6 +136,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -28,6 +28,8 @@ movements:
knowledge:
- frontend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -56,6 +58,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -89,6 +93,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -116,6 +122,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -138,6 +146,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +167,8 @@ movements:
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -176,6 +188,8 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -195,6 +209,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -215,6 +231,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -244,6 +262,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -265,6 +285,8 @@ movements:
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -295,6 +317,8 @@ movements:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -2,6 +2,13 @@ name: magi
description: MAGI合議システム - 3つの観点から分析し多数決で判定
piece_config:
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
codex:
network_access: true
opencode:
@ -11,12 +18,6 @@ initial_movement: melchior
movements:
- name: melchior
persona: melchior
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System 起動
@ -47,12 +48,6 @@ movements:
next: balthasar
- name: balthasar
persona: balthasar
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System 継続
@ -87,12 +82,6 @@ movements:
next: casper
- name: casper
persona: casper
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
# MAGI System 最終審議

View File

@ -2,6 +2,13 @@ name: research
description: 調査ピース - 質問せずに自律的に調査を実行
piece_config:
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
codex:
network_access: true
opencode:
@ -14,12 +21,6 @@ movements:
policy: research
knowledge: research
instruction: research-plan
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: 計画が完了した
next: dig
@ -30,12 +31,6 @@ movements:
policy: research
knowledge: research
instruction: research-dig
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: 調査が完了した
next: supervise
@ -46,12 +41,6 @@ movements:
policy: research
knowledge: research
instruction: research-supervise
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: 調査結果が元の依頼に対して十分である
next: COMPLETE

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -55,6 +57,8 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -76,6 +80,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -98,6 +104,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +128,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -140,6 +150,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -171,6 +183,8 @@ movements:
knowledge:
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -193,6 +207,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -223,6 +239,8 @@ movements:
knowledge:
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -42,6 +44,8 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -63,6 +67,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -85,6 +91,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -107,6 +115,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -127,6 +137,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -153,6 +165,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -26,6 +26,8 @@ movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -57,6 +59,8 @@ movements:
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -78,6 +82,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -100,6 +106,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -122,6 +130,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -142,6 +152,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -174,6 +186,8 @@ movements:
- takt
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -196,6 +210,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -50,6 +50,8 @@ movements:
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -82,6 +84,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +124,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -168,6 +174,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -194,6 +202,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -217,6 +227,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -236,6 +248,8 @@ movements:
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -256,6 +270,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -277,6 +293,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -298,6 +316,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -317,6 +337,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -346,6 +368,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -367,6 +391,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -50,6 +50,8 @@ movements:
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -82,6 +84,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -120,6 +124,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -154,6 +160,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -180,6 +188,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -203,6 +213,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -222,6 +234,8 @@ movements:
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -242,6 +256,8 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -263,6 +279,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -284,6 +302,8 @@ movements:
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -303,6 +323,8 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -332,6 +354,8 @@ movements:
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -353,6 +377,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -13,6 +13,8 @@ movements:
edit: false
persona: planner
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -38,6 +40,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -77,6 +81,8 @@ movements:
- review
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -98,6 +104,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -122,6 +130,8 @@ movements:
persona: supervisor
policy: review
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -156,6 +166,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -176,6 +188,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -200,6 +214,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -225,6 +241,8 @@ movements:
policy:
- terraform
knowledge: terraform-aws
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -41,6 +41,8 @@ movements:
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -74,6 +76,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -108,6 +112,8 @@ movements:
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -134,6 +140,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -157,6 +165,8 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -173,6 +183,8 @@ movements:
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -199,6 +211,8 @@ movements:
knowledge:
- backend
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -220,6 +234,8 @@ movements:
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -11,6 +11,8 @@ movements:
- name: execute
edit: true
persona: ../agents/test-coder.md
provider_options:
claude:
allowed_tools:
- Read
- Write

View File

@ -11,6 +11,8 @@ movements:
- name: execute
edit: true
persona: ../agents/test-reporter.md
provider_options:
claude:
allowed_tools:
- Read
- Write

View File

@ -11,6 +11,8 @@ movements:
- name: execute
edit: true
persona: ../agents/test-coder.md
provider_options:
claude:
allowed_tools:
- Read
- Write

View File

@ -25,6 +25,8 @@ describe('E2E: Codex permission mode readonly/full', () => {
'movements:',
' - name: write_check',
' agent: codex',
' provider_options:',
' claude:',
' allowed_tools:',
' - Bash',
' required_permission_mode: readonly',

View File

@ -32,6 +32,8 @@ function writeMinimalPiece(piecePath: string): void {
' - name: execute',
' edit: true',
' persona: ../agents/test-coder.md',
' provider_options:',
' claude:',
' allowed_tools:',
' - Read',
' - Write',

View File

@ -78,6 +78,8 @@ describe('E2E: runtime.prepare with provider', () => {
' - name: execute',
' edit: false',
' persona: ../fixtures/agents/test-coder.md',
' provider_options:',
' claude:',
' allowed_tools:',
' - Read',
' - Bash',

View File

@ -7,6 +7,7 @@ describe('denormalizeProviderOptions', () => {
codex: { networkAccess: true },
opencode: { networkAccess: false },
claude: {
allowedTools: ['Read', 'Edit'],
sandbox: {
allowUnsandboxedCommands: true,
excludedCommands: ['npm test'],
@ -18,6 +19,7 @@ describe('denormalizeProviderOptions', () => {
codex: { network_access: true },
opencode: { network_access: false },
claude: {
allowed_tools: ['Read', 'Edit'],
sandbox: {
allow_unsandboxed_commands: true,
excluded_commands: ['npm test'],
@ -33,4 +35,14 @@ describe('denormalizeProviderOptions', () => {
expect(result).toBeUndefined();
});
it('should persist claude allowedTools even when sandbox is omitted', () => {
const result = denormalizeProviderOptions({
claude: { allowedTools: ['Read', 'Bash'] },
});
expect(result).toEqual({
claude: { allowed_tools: ['Read', 'Bash'] },
});
});
});

View File

@ -133,4 +133,38 @@ describe('PieceEngine provider_options resolution', () => {
codex: { networkAccess: true },
});
});
it('should propagate merged claude allowedTools to runAgent options.allowedTools', async () => {
const movement = makeMovement('implement', {
providerOptions: {
claude: { allowedTools: ['Read', 'Edit', 'Bash'] },
},
rules: [makeRule('done', 'COMPLETE')],
});
const config: PieceConfig = {
name: 'provider-options-allowed-tools',
movements: [movement],
initialMovement: 'implement',
maxMovements: 1,
};
mockRunAgentSequence([
makeResponse({ persona: movement.persona, content: 'done' }),
]);
mockDetectMatchedRuleSequence([{ index: 0, method: 'phase1_tag' }]);
engine = new PieceEngine(config, tmpDir, 'test task', {
projectCwd: tmpDir,
provider: 'claude',
providerOptions: {
claude: { allowedTools: ['Read', 'Glob'] },
},
});
await engine.run();
const options = vi.mocked(runAgent).mock.calls[0]?.[2];
expect(options?.allowedTools).toEqual(['Read', 'Edit', 'Bash']);
});
});

View File

@ -529,6 +529,8 @@ movements:
playwright:
command: npx
args: ["-y", "@anthropic-ai/mcp-server-playwright"]
provider_options:
claude:
allowed_tools:
- Read
- Bash

View File

@ -8,6 +8,7 @@ import {
StatusSchema,
PermissionModeSchema,
PieceConfigRawSchema,
PieceMovementRawSchema,
McpServerConfigSchema,
CustomAgentConfigSchema,
GlobalConfigSchema,
@ -69,7 +70,11 @@ describe('PieceConfigRawSchema', () => {
{
name: 'step1',
persona: 'coder',
provider_options: {
claude: {
allowed_tools: ['Read', 'Grep'],
},
},
instruction: '{task}',
rules: [
{ condition: 'Task completed', next: 'COMPLETE' },
@ -81,7 +86,11 @@ describe('PieceConfigRawSchema', () => {
const result = PieceConfigRawSchema.parse(config);
expect(result.name).toBe('test-piece');
expect(result.movements).toHaveLength(1);
expect(result.movements![0]?.allowed_tools).toEqual(['Read', 'Grep']);
expect(result.movements![0]?.provider_options).toEqual({
claude: {
allowed_tools: ['Read', 'Grep'],
},
});
expect(result.max_movements).toBe(10);
});
@ -92,7 +101,11 @@ describe('PieceConfigRawSchema', () => {
{
name: 'implement',
persona: 'coder',
provider_options: {
claude: {
allowed_tools: ['Read', 'Edit', 'Write', 'Bash'],
},
},
required_permission_mode: 'edit',
instruction: '{task}',
rules: [
@ -340,7 +353,11 @@ describe('PieceConfigRawSchema', () => {
args: ['-y', '@anthropic-ai/mcp-server-playwright'],
},
},
provider_options: {
claude: {
allowed_tools: ['mcp__playwright__*'],
},
},
instruction: '{task}',
},
],
@ -462,6 +479,18 @@ describe('PieceConfigRawSchema', () => {
expect(() => PieceConfigRawSchema.parse(config)).toThrow();
});
it('should reject movement-level allowed_tools', () => {
const movement = {
name: 'step1',
persona: 'coder',
allowed_tools: ['Read'],
instruction: '{task}',
};
const result = PieceMovementRawSchema.safeParse(movement);
expect(result.success).toBe(false);
});
});
describe('McpServerConfigSchema', () => {

View File

@ -263,6 +263,34 @@ describe('option resolution order', () => {
);
});
it('should use custom agent allowedTools when run options do not provide allowedTools', async () => {
loadProjectConfigMock.mockReturnValue({ provider: 'claude' });
loadCustomAgentsMock.mockReturnValue(new Map([
['custom', { name: 'custom', prompt: 'agent prompt', allowedTools: ['Read', 'Grep'] }],
]));
await runAgent('custom', 'task', { cwd: '/repo' });
expect(providerCallMock).toHaveBeenLastCalledWith(
'task',
expect.objectContaining({ allowedTools: ['Read', 'Grep'] }),
);
});
it('should prioritize run options allowedTools over custom agent allowedTools', async () => {
loadProjectConfigMock.mockReturnValue({ provider: 'claude' });
loadCustomAgentsMock.mockReturnValue(new Map([
['custom', { name: 'custom', prompt: 'agent prompt', allowedTools: ['Read', 'Grep'] }],
]));
await runAgent('custom', 'task', { cwd: '/repo', allowedTools: ['Write'] });
expect(providerCallMock).toHaveBeenLastCalledWith(
'task',
expect.objectContaining({ allowedTools: ['Write'] }),
);
});
it('should resolve permission mode after provider resolution using provider profiles', async () => {
loadProjectConfigMock.mockReturnValue({});
loadGlobalConfigMock.mockReturnValue({

View File

@ -89,14 +89,17 @@ describe('OptionsBuilder.buildBaseOptions', () => {
const step = createMovement({
providerOptions: {
codex: { networkAccess: false },
claude: { sandbox: { excludedCommands: ['./gradlew'] } },
claude: {
sandbox: { excludedCommands: ['./gradlew'] },
allowedTools: ['Read', 'Edit', 'Bash'],
},
},
});
const builder = createBuilder(step, {
providerOptionsSource: 'project',
providerOptions: {
codex: { networkAccess: true },
claude: { sandbox: { allowUnsandboxedCommands: true } },
claude: { sandbox: { allowUnsandboxedCommands: true }, allowedTools: ['Read', 'Glob'] },
opencode: { networkAccess: true },
},
});
@ -111,6 +114,7 @@ describe('OptionsBuilder.buildBaseOptions', () => {
excludedCommands: ['./gradlew'],
allowUnsandboxedCommands: true,
},
allowedTools: ['Read', 'Edit', 'Bash'],
},
});
});
@ -227,3 +231,43 @@ describe('OptionsBuilder.buildResumeOptions', () => {
expect(options.sessionId).toBe('session-123');
});
});
describe('OptionsBuilder.buildAgentOptions', () => {
it('uses merged providerOptions.claude.allowedTools when movement.allowedTools is absent', () => {
// Given
const step = createMovement({
providerOptions: {
claude: { allowedTools: ['Read', 'Edit', 'Bash'] },
},
});
const builder = createBuilder(step, {
providerOptions: {
claude: { allowedTools: ['Read', 'Glob'] },
},
});
// When
const options = builder.buildAgentOptions(step);
// Then
expect(options.allowedTools).toEqual(['Read', 'Edit', 'Bash']);
});
it('removes Write when output contracts exist and edit is not enabled', () => {
// Given
const step = createMovement({
outputContracts: [{ name: 'report.md', format: 'markdown', useJudge: true }],
providerOptions: {
claude: { allowedTools: ['Read', 'Write', 'Bash'] },
},
edit: false,
});
const builder = createBuilder(step);
// When
const options = builder.buildAgentOptions(step);
// Then
expect(options.allowedTools).toEqual(['Read', 'Bash']);
});
});

View File

@ -37,7 +37,11 @@ describe('ParallelSubMovementRawSchema', () => {
name: 'full-sub-step',
persona: '~/.takt/agents/default/coder.md',
persona_name: 'Coder',
provider_options: {
claude: {
allowed_tools: ['Read', 'Grep'],
},
},
model: 'haiku',
edit: false,
instruction_template: 'Do work',
@ -49,7 +53,7 @@ describe('ParallelSubMovementRawSchema', () => {
expect(result.success).toBe(true);
if (result.success) {
expect(result.data.persona_name).toBe('Coder');
expect(result.data.allowed_tools).toEqual(['Read', 'Grep']);
expect(result.data.provider_options?.claude?.allowed_tools).toEqual(['Read', 'Grep']);
expect(result.data.edit).toBe(false);
}
});
@ -100,6 +104,17 @@ describe('ParallelSubMovementRawSchema', () => {
expect(result.data.rules).toHaveLength(2);
}
});
it('should reject movement-level allowed_tools on sub-movement', () => {
const raw = {
name: 'invalid-sub-step',
allowed_tools: ['Read'],
instruction_template: 'Review',
};
const result = ParallelSubMovementRawSchema.safeParse(raw);
expect(result.success).toBe(false);
});
});
describe('PieceMovementRawSchema with parallel', () => {

View File

@ -181,6 +181,8 @@ movements:
description: Planning
persona: Plan the task
instruction: "Create a plan for {task}"
provider_options:
claude:
allowed_tools:
- Read
- Glob
@ -192,6 +194,8 @@ movements:
persona: Implement the code
instruction: "Implement according to plan"
edit: true
provider_options:
claude:
allowed_tools:
- Read
- Edit
@ -658,6 +662,8 @@ movements:
persona: You are a planner.
persona_name: Planner
instruction: "Plan the task"
provider_options:
claude:
allowed_tools:
- Read
- Glob

View File

@ -93,6 +93,46 @@ describe('normalizePieceConfig provider_options', () => {
});
});
it('claude allowed_tools を piece-level で設定し movement で上書きできる', () => {
const raw = {
name: 'claude-allowed-tools',
piece_config: {
provider_options: {
claude: {
allowed_tools: ['Read', 'Glob'],
},
},
},
movements: [
{
name: 'inherit',
instruction: '{task}',
},
{
name: 'override',
provider_options: {
claude: {
allowed_tools: ['Read', 'Edit', 'Bash'],
},
},
instruction: '{task}',
},
],
};
const config = normalizePieceConfig(raw, process.cwd());
expect(config.providerOptions).toEqual({
claude: { allowedTools: ['Read', 'Glob'] },
});
expect(config.movements[0]?.providerOptions).toEqual({
claude: { allowedTools: ['Read', 'Glob'] },
});
expect(config.movements[1]?.providerOptions).toEqual({
claude: { allowedTools: ['Read', 'Edit', 'Bash'] },
});
});
it('piece-level runtime.prepare を正規化し重複を除去する', () => {
const raw = {
name: 'runtime-prepare',
@ -306,20 +346,27 @@ describe('normalizePieceConfig provider_options', () => {
describe('mergeProviderOptions', () => {
it('複数層を正しくマージする(後の層が優先)', () => {
const global = {
claude: { sandbox: { allowUnsandboxedCommands: false, excludedCommands: ['./gradlew'] } },
claude: {
sandbox: { allowUnsandboxedCommands: false, excludedCommands: ['./gradlew'] },
allowedTools: ['Read'],
},
codex: { networkAccess: true },
};
const local = {
claude: { sandbox: { allowUnsandboxedCommands: true } },
};
const step = {
claude: { allowedTools: ['Read', 'Edit'] },
codex: { networkAccess: false },
};
const result = mergeProviderOptions(global, local, step);
expect(result).toEqual({
claude: { sandbox: { allowUnsandboxedCommands: true, excludedCommands: ['./gradlew'] } },
claude: {
sandbox: { allowUnsandboxedCommands: true, excludedCommands: ['./gradlew'] },
allowedTools: ['Read', 'Edit'],
},
codex: { networkAccess: false },
});
});

View File

@ -63,18 +63,20 @@ describe('detectEditPieces', () => {
expect(detectEditPieces([])).toEqual([]);
});
it('should return empty array when piece has edit: false, no allowed_tools, and no required_permission_mode', () => {
it('should return empty array when piece has edit: false, no provider_options.claude.allowed_tools, and no required_permission_mode', () => {
const pieces = [
{ name: 'simple.yaml', content: 'movements:\n - name: run\n edit: false\n' },
];
expect(detectEditPieces(pieces)).toEqual([]);
});
it('should detect piece with edit: true and collect allowed_tools', () => {
it('should detect piece with edit: true and collect provider_options.claude.allowed_tools', () => {
const content = `
movements:
- name: implement
edit: true
provider_options:
claude:
allowed_tools: [Bash, Write, Edit]
`.trim();
const result = detectEditPieces([{ name: 'coder.yaml', content }]);
@ -84,14 +86,18 @@ movements:
expect(result[0]!.allowedTools).toHaveLength(3);
});
it('should merge allowed_tools from multiple edit movements', () => {
it('should merge provider_options.claude.allowed_tools from multiple edit movements', () => {
const content = `
movements:
- name: implement
edit: true
provider_options:
claude:
allowed_tools: [Bash, Write]
- name: fix
edit: true
provider_options:
claude:
allowed_tools: [Edit, Bash]
`.trim();
const result = detectEditPieces([{ name: 'coder.yaml', content }]);
@ -100,7 +106,7 @@ movements:
expect(result[0]!.allowedTools).toHaveLength(3);
});
it('should detect piece with edit: true and no allowed_tools', () => {
it('should detect piece with edit: true and no provider_options.claude.allowed_tools', () => {
const content = `
movements:
- name: implement
@ -133,7 +139,7 @@ movements:
const pieces = [
{
name: 'coder.yaml',
content: 'movements:\n - name: impl\n edit: true\n allowed_tools: [Write]\n',
content: 'movements:\n - name: impl\n edit: true\n provider_options:\n claude:\n allowed_tools: [Write]\n',
},
{
name: 'reviewer.yaml',
@ -141,7 +147,7 @@ movements:
},
{
name: 'fixer.yaml',
content: 'movements:\n - name: fix\n edit: true\n allowed_tools: [Edit]\n',
content: 'movements:\n - name: fix\n edit: true\n provider_options:\n claude:\n allowed_tools: [Edit]\n',
},
];
const result = detectEditPieces(pieces);
@ -150,7 +156,7 @@ movements:
});
it('should set hasEdit: true for pieces with edit: true', () => {
const content = 'movements:\n - name: impl\n edit: true\n allowed_tools: [Write]\n';
const content = 'movements:\n - name: impl\n edit: true\n provider_options:\n claude:\n allowed_tools: [Write]\n';
const result = detectEditPieces([{ name: 'coder.yaml', content }]);
expect(result).toHaveLength(1);
expect(result[0]!.hasEdit).toBe(true);
@ -176,6 +182,8 @@ movements:
movements:
- name: implement
edit: true
provider_options:
claude:
allowed_tools: [Write, Edit]
- name: plan
required_permission_mode: bypassPermissions
@ -200,16 +208,18 @@ movements:
expect(result[0]!.requiredPermissionModes).toEqual(['bypassPermissions']);
});
it('should return empty array when piece has edit: false, empty allowed_tools, and no required_permission_mode', () => {
it('should return empty array when piece has edit: false, empty provider_options.claude.allowed_tools, and no required_permission_mode', () => {
const content = 'movements:\n - name: review\n edit: false\n';
expect(detectEditPieces([{ name: 'reviewer.yaml', content }])).toEqual([]);
});
it('should detect piece with edit: false and non-empty allowed_tools', () => {
it('should detect piece with edit: false and non-empty provider_options.claude.allowed_tools', () => {
const content = `
movements:
- name: run
edit: false
provider_options:
claude:
allowed_tools: [Bash]
`.trim();
const result = detectEditPieces([{ name: 'runner.yaml', content }]);
@ -220,11 +230,33 @@ movements:
expect(result[0]!.requiredPermissionModes).toEqual([]);
});
it('should exclude piece with edit: false and empty allowed_tools', () => {
it('should detect piece using piece_config provider_options.claude.allowed_tools when movement does not define tools', () => {
const content = `
piece_config:
provider_options:
claude:
allowed_tools: [Read, Grep]
movements:
- name: plan
edit: false
- name: supervise
edit: true
`.trim();
const result = detectEditPieces([{ name: 'piece-level.yaml', content }]);
expect(result).toHaveLength(1);
expect(result[0]!.name).toBe('piece-level.yaml');
expect(result[0]!.hasEdit).toBe(true);
expect(result[0]!.allowedTools).toEqual(expect.arrayContaining(['Read', 'Grep']));
expect(result[0]!.allowedTools).toHaveLength(2);
});
it('should exclude piece with edit: false and empty provider_options.claude.allowed_tools', () => {
const content = `
movements:
- name: run
edit: false
provider_options:
claude:
allowed_tools: []
`.trim();
expect(detectEditPieces([{ name: 'runner.yaml', content }])).toEqual([]);
@ -250,7 +282,7 @@ movements:
// ---------------------------------------------------------------------------
describe('formatEditPieceWarnings', () => {
it('should format edit:true warning without allowed_tools', () => {
it('should format edit:true warning without provider_options.claude.allowed_tools', () => {
const warnings = formatEditPieceWarnings({
name: 'piece.yaml',
hasEdit: true,
@ -260,27 +292,27 @@ describe('formatEditPieceWarnings', () => {
expect(warnings).toEqual(['\n ⚠ piece.yaml: edit: true']);
});
it('should format edit:true warning with allowed_tools appended inline', () => {
it('should format edit:true warning with provider_options.claude.allowed_tools appended inline', () => {
const warnings = formatEditPieceWarnings({
name: 'piece.yaml',
hasEdit: true,
allowedTools: ['Bash', 'Edit'],
requiredPermissionModes: [],
});
expect(warnings).toEqual(['\n ⚠ piece.yaml: edit: true, allowed_tools: [Bash, Edit]']);
expect(warnings).toEqual(['\n ⚠ piece.yaml: edit: true, provider_options.claude.allowed_tools: [Bash, Edit]']);
});
it('should format allowed_tools-only warning when edit:false', () => {
it('should format provider_options.claude.allowed_tools-only warning when edit:false', () => {
const warnings = formatEditPieceWarnings({
name: 'runner.yaml',
hasEdit: false,
allowedTools: ['Bash'],
requiredPermissionModes: [],
});
expect(warnings).toEqual(['\n ⚠ runner.yaml: allowed_tools: [Bash]']);
expect(warnings).toEqual(['\n ⚠ runner.yaml: provider_options.claude.allowed_tools: [Bash]']);
});
it('should return empty array when edit:false and no allowed_tools and no required_permission_mode', () => {
it('should return empty array when edit:false and no provider_options.claude.allowed_tools and no required_permission_mode', () => {
const warnings = formatEditPieceWarnings({
name: 'review.yaml',
hasEdit: false,
@ -300,7 +332,7 @@ describe('formatEditPieceWarnings', () => {
expect(warnings).toEqual(['\n ⚠ planner.yaml: required_permission_mode: bypassPermissions']);
});
it('should combine allowed_tools and required_permission_mode warnings when edit:false', () => {
it('should combine provider_options.claude.allowed_tools and required_permission_mode warnings when edit:false', () => {
const warnings = formatEditPieceWarnings({
name: 'combo.yaml',
hasEdit: false,
@ -308,7 +340,7 @@ describe('formatEditPieceWarnings', () => {
requiredPermissionModes: ['bypassPermissions'],
});
expect(warnings).toEqual([
'\n ⚠ combo.yaml: allowed_tools: [Bash]',
'\n ⚠ combo.yaml: provider_options.claude.allowed_tools: [Bash]',
'\n ⚠ combo.yaml: required_permission_mode: bypassPermissions',
]);
});

View File

@ -5,7 +5,7 @@
* - Piece YAML files (EN/JA) load and pass schema validation
* - Piece structure: gather -> reviewers (parallel 5) -> supervise -> COMPLETE
* - All movements have edit: false
* - All 5 reviewers have Bash in allowed_tools
* - All 5 reviewers have Bash in provider_options.claude.allowed_tools
* - Routing rules for gather and reviewers
*/
@ -112,10 +112,10 @@ describe('review piece (EN)', () => {
}
});
it('should have Bash in allowed_tools for all 5 reviewers', () => {
it('should have Bash in provider_options.claude.allowed_tools for all 5 reviewers', () => {
const reviewers = raw.movements.find((s: { name: string }) => s.name === 'reviewers');
for (const sub of reviewers.parallel) {
expect(sub.allowed_tools).toContain('Bash');
expect(sub.provider_options?.claude?.allowed_tools).toContain('Bash');
}
});
@ -169,10 +169,10 @@ describe('review piece (JA)', () => {
}
});
it('should have Bash in allowed_tools for all 5 reviewers', () => {
it('should have Bash in provider_options.claude.allowed_tools for all 5 reviewers', () => {
const reviewers = raw.movements.find((s: { name: string }) => s.name === 'reviewers');
for (const sub of reviewers.parallel) {
expect(sub.allowed_tools).toContain('Bash');
expect(sub.provider_options?.claude?.allowed_tools).toContain('Bash');
}
});

View File

@ -0,0 +1,38 @@
import { describe, expect, it } from 'vitest';
import type { PartDefinition, PieceMovement } from '../core/models/types.js';
import { createPartMovement } from '../core/piece/engine/team-leader-common.js';
describe('createPartMovement', () => {
it('uses step.providerOptions.claude.allowedTools when part_allowed_tools is omitted', () => {
// Given
const step: PieceMovement = {
name: 'implement',
persona: 'coder',
personaDisplayName: 'Coder',
instructionTemplate: 'do work',
passPreviousResponse: false,
providerOptions: {
claude: {
allowedTools: ['Read', 'Edit', 'Bash'],
},
},
teamLeader: {
persona: 'leader',
maxParts: 3,
refillThreshold: 0,
timeoutMs: 600000,
},
};
const part: PartDefinition = {
id: 'part-1',
title: 'API',
instruction: 'implement api',
};
// When
const partMovement = createPartMovement(step, part);
// Then
expect(partMovement.providerOptions?.claude?.allowedTools).toEqual(['Read', 'Edit', 'Bash']);
});
});

View File

@ -101,7 +101,6 @@ export class AgentRunner {
options: RunAgentOptions,
localConfig: ReturnType<typeof loadProjectConfig>,
globalConfig: ReturnType<typeof loadGlobalConfig>,
agentConfig?: CustomAgentConfig,
): ProviderCallOptions {
const permissionMode = AgentRunner.resolvePermissionMode(
resolvedProvider,
@ -114,7 +113,7 @@ export class AgentRunner {
cwd: options.cwd,
abortSignal: options.abortSignal,
sessionId: options.sessionId,
allowedTools: options.allowedTools ?? agentConfig?.allowedTools,
allowedTools: options.allowedTools,
mcpServers: options.mcpServers,
maxTurns: options.maxTurns,
model: resolvedModel,
@ -174,13 +173,17 @@ export class AgentRunner {
claudeSkill: agentConfig.claudeSkill,
});
const customOptions: RunAgentOptions = {
...options,
allowedTools: options.allowedTools ?? agentConfig.allowedTools,
};
return agent.call(task, AgentRunner.buildCallOptions(
resolved.model,
providerType,
options,
customOptions,
resolved.localConfig,
resolved.globalConfig,
agentConfig,
));
}

View File

@ -107,6 +107,7 @@ export interface ClaudeSandboxSettings {
/** Claude provider-specific options */
export interface ClaudeProviderOptions {
allowedTools?: string[];
sandbox?: ClaudeSandboxSettings;
}
@ -128,8 +129,6 @@ export interface PieceMovement {
session?: 'continue' | 'refresh';
/** Display name for the persona (shown in output). Falls back to persona basename if not specified */
personaDisplayName: string;
/** Allowed tools for this movement (optional, passed to agent execution) */
allowedTools?: string[];
/** MCP servers configuration for this movement */
mcpServers?: Record<string, McpServerConfig>;
/** Resolved absolute path to persona prompt file (set by loader) */

View File

@ -74,6 +74,7 @@ export const MovementProviderOptionsSchema = z.object({
network_access: z.boolean().optional(),
}).optional(),
claude: z.object({
allowed_tools: z.array(z.string()).optional(),
sandbox: ClaudeSandboxSchema,
}).optional(),
}).optional();
@ -303,7 +304,7 @@ export const ParallelSubMovementRawSchema = z.object({
policy: z.union([z.string(), z.array(z.string())]).optional(),
/** Knowledge reference(s) — key name(s) from piece-level knowledge map */
knowledge: z.union([z.string(), z.array(z.string())]).optional(),
allowed_tools: z.array(z.string()).optional(),
allowed_tools: z.never().optional(),
mcp_servers: McpServersSchema,
provider: ProviderReferenceSchema.optional(),
model: z.string().optional(),
@ -336,7 +337,7 @@ export const PieceMovementRawSchema = z.object({
policy: z.union([z.string(), z.array(z.string())]).optional(),
/** Knowledge reference(s) — key name(s) from piece-level knowledge map */
knowledge: z.union([z.string(), z.array(z.string())]).optional(),
allowed_tools: z.array(z.string()).optional(),
allowed_tools: z.never().optional(),
mcp_servers: McpServersSchema,
provider: ProviderReferenceSchema.optional(),
model: z.string().optional(),

View File

@ -19,9 +19,12 @@ function mergeProviderOptions(
if (layer.opencode) {
result.opencode = { ...result.opencode, ...layer.opencode };
}
if (layer.claude?.sandbox) {
if (layer.claude?.sandbox || layer.claude?.allowedTools) {
result.claude = {
sandbox: { ...result.claude?.sandbox, ...layer.claude.sandbox },
sandbox: layer.claude.sandbox
? { ...result.claude?.sandbox, ...layer.claude.sandbox }
: result.claude?.sandbox,
allowedTools: layer.claude.allowedTools ?? result.claude?.allowedTools,
};
}
}
@ -64,7 +67,7 @@ export class OptionsBuilder {
}
/** Build common RunAgentOptions shared by all phases */
buildBaseOptions(step: PieceMovement): RunAgentOptions {
buildBaseOptions(step: PieceMovement, mergedProviderOptions?: MovementProviderOptions): RunAgentOptions {
const movements = this.getPieceMovements();
const currentIndex = movements.findIndex((m) => m.name === step.name);
const currentPosition = currentIndex >= 0 ? `${currentIndex + 1}/${movements.length}` : '?/?';
@ -83,7 +86,7 @@ export class OptionsBuilder {
requiredPermissionMode: step.requiredPermissionMode,
providerProfiles: this.engineOptions.providerProfiles,
},
providerOptions: resolveMovementProviderOptions(
providerOptions: mergedProviderOptions ?? resolveMovementProviderOptions(
this.engineOptions.providerOptionsSource,
this.engineOptions.providerOptions,
step.providerOptions,
@ -105,19 +108,26 @@ export class OptionsBuilder {
/** Build RunAgentOptions for Phase 1 (main execution) */
buildAgentOptions(step: PieceMovement): RunAgentOptions {
const mergedProviderOptions = resolveMovementProviderOptions(
this.engineOptions.providerOptionsSource,
this.engineOptions.providerOptions,
step.providerOptions,
);
// Phase 1: exclude Write from allowedTools when movement has output contracts AND edit is NOT enabled
// (If edit is enabled, Write is needed for code implementation even if output contracts exist)
// Note: edit defaults to undefined, so check !== true to catch both false and undefined
const hasOutputContracts = step.outputContracts && step.outputContracts.length > 0;
const resolvedAllowedTools = mergedProviderOptions?.claude?.allowedTools;
const allowedTools = hasOutputContracts && step.edit !== true
? step.allowedTools?.filter((t) => t !== 'Write')
: step.allowedTools;
? resolvedAllowedTools?.filter((t) => t !== 'Write')
: resolvedAllowedTools;
// Skip session resume when cwd !== projectCwd (worktree execution) to avoid cross-directory contamination
const shouldResumeSession = step.session !== 'refresh' && this.getCwd() === this.getProjectCwd();
return {
...this.buildBaseOptions(step),
...this.buildBaseOptions(step, mergedProviderOptions),
sessionId: shouldResumeSession ? this.getSessionId(buildSessionKey(step)) : undefined,
allowedTools,
mcpServers: step.mcpServers,

View File

@ -518,13 +518,17 @@ export class PieceEngine extends EventEmitter {
personaPath: monitor.judge.personaPath,
personaDisplayName: 'loop-judge',
edit: false,
providerOptions: {
claude: {
allowedTools: ['Read', 'Glob', 'Grep'],
},
},
instructionTemplate: processedTemplate,
rules: monitor.judge.rules.map((r) => ({
condition: r.condition,
next: r.next,
})),
passPreviousResponse: true,
allowedTools: ['Read', 'Glob', 'Grep'],
};
log.info('Running loop monitor judge', {

View File

@ -21,6 +21,17 @@ export function createPartMovement(step: PieceMovement, part: PartDefinition): P
throw new Error(`Movement "${step.name}" has no teamLeader configuration`);
}
const partAllowedTools = step.teamLeader.partAllowedTools ?? step.providerOptions?.claude?.allowedTools;
const partProviderOptions = partAllowedTools
? {
...step.providerOptions,
claude: {
...step.providerOptions?.claude,
allowedTools: partAllowedTools,
},
}
: step.providerOptions;
return {
name: `${step.name}.${part.id}`,
description: part.title,
@ -28,7 +39,7 @@ export function createPartMovement(step: PieceMovement, part: PartDefinition): P
personaPath: step.teamLeader.partPersonaPath ?? step.personaPath,
personaDisplayName: `${step.name}:${part.id}`,
session: 'refresh',
allowedTools: step.teamLeader.partAllowedTools ?? step.allowedTools,
providerOptions: partProviderOptions,
mcpServers: step.mcpServers,
provider: step.provider,
model: step.model,

View File

@ -41,7 +41,7 @@ export function summarizeFacetsByType(facetRelativePaths: string[]): string {
*
* A movement is considered permission-relevant when any of:
* - `edit: true` is set
* - `allowed_tools` has at least one entry
* - `provider_options.claude.allowed_tools` has at least one entry
* - `required_permission_mode` is set
*
* @param pieceYamls - Pre-read YAML content pairs. Invalid YAML is skipped (debug-logged).
@ -49,7 +49,16 @@ export function summarizeFacetsByType(facetRelativePaths: string[]): string {
export function detectEditPieces(pieceYamls: Array<{ name: string; content: string }>): EditPieceInfo[] {
const result: EditPieceInfo[] = [];
for (const { name, content } of pieceYamls) {
let raw: { movements?: { edit?: boolean; allowed_tools?: string[]; required_permission_mode?: string }[] } | null;
let raw: {
piece_config?: {
provider_options?: { claude?: { allowed_tools?: string[] } };
};
movements?: {
edit?: boolean;
provider_options?: { claude?: { allowed_tools?: string[] } };
required_permission_mode?: string;
}[];
} | null;
try {
raw = parseYaml(content) as typeof raw;
} catch (e) {
@ -57,15 +66,19 @@ export function detectEditPieces(pieceYamls: Array<{ name: string; content: stri
continue;
}
const movements = raw?.movements ?? [];
const pieceAllowedTools = raw?.piece_config?.provider_options?.claude?.allowed_tools;
const resolveAllowedTools = (movement: typeof movements[number]): string[] =>
movement.provider_options?.claude?.allowed_tools ?? pieceAllowedTools ?? [];
const hasEditMovement = movements.some(m => m.edit === true);
const hasToolMovements = movements.some(m => (m.allowed_tools?.length ?? 0) > 0);
const hasToolMovements = movements.some(m => resolveAllowedTools(m).length > 0);
const hasPermissionMovements = movements.some(m => m.required_permission_mode != null);
if (!hasEditMovement && !hasToolMovements && !hasPermissionMovements) continue;
const allTools = new Set<string>();
for (const m of movements) {
if (m.allowed_tools) {
for (const t of m.allowed_tools) allTools.add(t);
for (const t of resolveAllowedTools(m)) {
allTools.add(t);
}
}
const requiredPermissionModes: string[] = [];
@ -89,15 +102,17 @@ export function detectEditPieces(pieceYamls: Array<{ name: string; content: stri
/**
* Format warning lines for a single permission-relevant piece.
* Returns one line per warning (edit, allowed_tools, required_permission_mode).
* Returns one line per warning (edit, provider_options.claude.allowed_tools, required_permission_mode).
*/
export function formatEditPieceWarnings(ep: EditPieceInfo): string[] {
const warnings: string[] = [];
if (ep.hasEdit) {
const toolStr = ep.allowedTools.length > 0 ? `, allowed_tools: [${ep.allowedTools.join(', ')}]` : '';
const toolStr = ep.allowedTools.length > 0
? `, provider_options.claude.allowed_tools: [${ep.allowedTools.join(', ')}]`
: '';
warnings.push(`\n ⚠ ${ep.name}: edit: true${toolStr}`);
} else if (ep.allowedTools.length > 0) {
warnings.push(`\n ⚠ ${ep.name}: allowed_tools: [${ep.allowedTools.join(', ')}]`);
warnings.push(`\n ⚠ ${ep.name}: provider_options.claude.allowed_tools: [${ep.allowedTools.join(', ')}]`);
}
for (const mode of ep.requiredPermissionModes) {
warnings.push(`\n ⚠ ${ep.name}: required_permission_mode: ${mode}`);

View File

@ -142,16 +142,23 @@ export function denormalizeProviderOptions(
if (providerOptions.opencode?.networkAccess !== undefined) {
raw.opencode = { network_access: providerOptions.opencode.networkAccess };
}
if (providerOptions.claude?.sandbox) {
if (providerOptions.claude) {
const claude: Record<string, unknown> = {};
if (providerOptions.claude.allowedTools !== undefined) {
claude.allowed_tools = providerOptions.claude.allowedTools;
}
const sandbox: Record<string, unknown> = {};
if (providerOptions.claude.sandbox.allowUnsandboxedCommands !== undefined) {
if (providerOptions.claude.sandbox?.allowUnsandboxedCommands !== undefined) {
sandbox.allow_unsandboxed_commands = providerOptions.claude.sandbox.allowUnsandboxedCommands;
}
if (providerOptions.claude.sandbox.excludedCommands !== undefined) {
if (providerOptions.claude.sandbox?.excludedCommands !== undefined) {
sandbox.excluded_commands = providerOptions.claude.sandbox.excludedCommands;
}
if (Object.keys(sandbox).length > 0) {
raw.claude = { sandbox };
claude.sandbox = sandbox;
}
if (Object.keys(claude).length > 0) {
raw.claude = claude;
}
}

View File

@ -267,7 +267,6 @@ function normalizeStepFromRaw(
session: step.session,
personaDisplayName: displayName || (personaSpec ? extractPersonaDisplayName(personaSpec) : step.name),
personaPath,
allowedTools: step.allowed_tools,
mcpServers: step.mcp_servers,
provider: normalizedProvider.provider ?? inheritedProvider,
model: normalizedProvider.model ?? (normalizedProvider.providerSpecified ? undefined : inheritedModel),

View File

@ -230,7 +230,7 @@ function buildMovementPreviews(piece: PieceConfig, maxCount: number): MovementPr
personaDisplayName: movement.personaDisplayName,
personaContent: readMovementPersona(movement),
instructionContent: movement.instructionTemplate,
allowedTools: movement.allowedTools ?? [],
allowedTools: movement.providerOptions?.claude?.allowedTools ?? [],
canEdit: movement.edit === true,
});
@ -321,7 +321,7 @@ function buildFirstMovementInfo(piece: PieceConfig): FirstMovementInfo | undefin
return {
personaContent: readMovementPersona(movement),
personaDisplayName: movement.personaDisplayName,
allowedTools: movement.allowedTools ?? [],
allowedTools: movement.providerOptions?.claude?.allowedTools ?? [],
};
}

View File

@ -8,6 +8,7 @@ type RawProviderOptions = {
network_access?: boolean;
};
claude?: {
allowed_tools?: string[];
sandbox?: {
allow_unsandboxed_commands?: boolean;
excluded_commands?: string[];
@ -31,18 +32,23 @@ export function normalizeProviderOptions(
if (options.opencode?.network_access !== undefined) {
result.opencode = { networkAccess: options.opencode.network_access };
}
if (options.claude?.sandbox) {
result.claude = {
sandbox: {
if (options.claude?.allowed_tools !== undefined || options.claude?.sandbox) {
const claude: NonNullable<MovementProviderOptions['claude']> = {};
if (options.claude.allowed_tools !== undefined) {
claude.allowedTools = options.claude.allowed_tools;
}
if (options.claude.sandbox) {
claude.sandbox = {
...(options.claude.sandbox.allow_unsandboxed_commands !== undefined
? { allowUnsandboxedCommands: options.claude.sandbox.allow_unsandboxed_commands }
: {}),
...(options.claude.sandbox.excluded_commands !== undefined
? { excludedCommands: options.claude.sandbox.excluded_commands }
: {}),
},
};
}
result.claude = claude;
}
return Object.keys(result).length > 0 ? result : undefined;
}
@ -60,9 +66,15 @@ export function mergeProviderOptions(
if (layer.opencode) {
result.opencode = { ...result.opencode, ...layer.opencode };
}
if (layer.claude?.sandbox) {
if (layer.claude) {
result.claude = {
sandbox: { ...result.claude?.sandbox, ...layer.claude.sandbox },
...result.claude,
...(layer.claude.allowedTools !== undefined
? { allowedTools: layer.claude.allowedTools }
: {}),
...(layer.claude.sandbox
? { sandbox: { ...result.claude?.sandbox, ...layer.claude.sandbox } }
: {}),
};
}
}