Compare commits

...

97 Commits

Author SHA1 Message Date
nrs
16596eff09
takt: refactor-status-handling (#477) 2026-03-06 01:40:25 +09:00
nrs
bc5e1fd860
takt: fix-phase3-fallback-bypass (#474) 2026-03-06 01:30:33 +09:00
nrslib
a8223d231d refactor: config 3層モデル整理 + supervisor ペルソナのファセット分離是正
Config:
- PersistedGlobalConfig → GlobalConfig にリネーム、互換エイリアス削除
- persisted-global-config.ts → config-types.ts にリネーム
- ProjectConfig → GlobalConfig extends Omit<ProjectConfig, ...> の継承構造に整理
- verbose/logLevel/log_level を削除(logging セクションに統一)
- migration 機構(migratedProjectLocalKeys 等)を削除

Supervisor ペルソナ:
- 後方互換コードの検出・その場しのぎの検出・ボーイスカウトルールを除去(review.md ポリシー / architecture.md ナレッジと重複)
- ピース全体の見直しを supervise.md インストラクションに移動

takt-default-team-leader:
- loop_monitor のインライン instruction_template を既存ファイル参照に変更
- implement の「判断できない」ルールを ai_review → plan に修正
2026-03-06 01:29:46 +09:00
nrslib
ebbd1a67a9 fix: ピース再利用確認を task.data.piece から取得 & config テンプレート拡充
- retryFailedTask / instructBranch でピース名の取得元を
  runInfo?.piece から task.data?.piece に変更
  (worktree 内に .takt/runs/ が存在しないため runInfo は常に null だった)
- ~/.takt/config.yaml テンプレートに不足していた設定項目を追加
  (provider, model, concurrency, analytics, pipeline, persona_providers 等)
2026-03-06 00:37:54 +09:00
nrs
a69e9f4fb3
takt: add-persona-quality-gates (#472) 2026-03-05 23:32:32 +09:00
nrs
7bfc7954aa
Merge pull request #473 from nrslib/release/v0.30.0
Release v0.30.0
2026-03-05 23:18:17 +09:00
nrslib
903111dd74 feat: team leader の分解品質を改善するナレッジとインストラクションを追加
- knowledge/task-decomposition.md: 分解の可否判断基準、ファイル排他原則、
  失敗パターン(パート重複・共有契約不整合)をドメイン知識として追加
- team-leader-implement instruction: 分解前に可否を判断するステップを追加。
  横断的関心事・少ファイル・リファクタ系は1パートで実装するよう指示
- takt-default-team-leader.yaml: implement movement に task-decomposition
  ナレッジを追加
2026-03-05 23:16:32 +09:00
nrslib
98607298aa Release v0.30.0 2026-03-05 23:14:44 +09:00
nrs
76cfd771f8
takt: implement-usage-event-logging (#470) 2026-03-05 11:27:59 +09:00
nrs
2f268f6d43
[#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フィクスチャとインラインピース定義が旧形式のままだった。
2026-03-05 11:27:48 +09:00
nrslib
2ce51affd1 fix: .gitignore の .takt/ ディレクトリ ignore を削除し .takt/.gitignore に委譲
.takt/ をディレクトリごと ignore していたため、.takt/.gitignore の
否定パターン(!config.yaml 等)がルートから到達不能だった。
ルート .gitignore から冗長な .takt/ 制御を削除し、.takt/.gitignore に一元化。

併せて .takt/config.yaml にプロジェクトレベルの quality gates 設定を追加。
2026-03-05 10:53:01 +09:00
nrs
3649ce40f9
takt: add-piece-reuse-confirm (#468) 2026-03-04 23:07:47 +09:00
nrs
8403a7c892
takt: add-trace-report-generation (#467) 2026-03-04 23:07:36 +09:00
nrslib
dbc22c76fc fix: runtime環境のXDG_CONFIG_HOME上書きでgh認証が失敗する問題を修正
XDG_CONFIG_HOMEを.takt/.runtime/configに上書きすると、ghがkeyring認証の
設定ファイルを見失い「not authenticated」エラーになる。
XDG_CONFIG_HOME上書き前の元パスをGH_CONFIG_DIRに退避して解決。
2026-03-04 23:03:18 +09:00
nrslib
1cfae9f53b refactor: deprecated config マイグレーション処理を削除
log_level / observability の後方互換マイグレーションを完全削除。
logging キーに一本化し、レガシー変換コード・テストを除去。
2026-03-04 21:05:14 +09:00
nrs
cb3bc5e45e fix: push トリガーから takt/** を削除し二重実行を防止 2026-03-04 20:28:45 +09:00
nrs
69dd871404
refactor: observability を logging に再編成し設定構造を体系化 (#466)
* takt: refactor-logging-config

* fix: resolve merge conflicts

* chore: trigger CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 20:27:42 +09:00
jake
289a0fb912
.takt/config.yaml(プロジェクト設定)に runtime.prepare を記述するとエラーになる (#464)
* fix: add missing runtime field to ProjectConfigSchema and unify normalizeRuntime

ProjectConfigSchema.strict() rejected the runtime key in .takt/config.yaml
because the field was never added to the project-level Zod schema. The global
schema and piece-level schema already had it, so only project-level
runtime.prepare was broken ("Unrecognized key: runtime").

- Add runtime to ProjectConfigSchema and ProjectLocalConfig type
- Handle runtime in loadProjectConfig/saveProjectConfig
- Extract normalizeRuntime() into configNormalizers.ts as shared function
- Replace duplicated normalization in globalConfigCore.ts and pieceParser.ts
- Add 9 round-trip tests for project-level runtime.prepare

* fix: remove unnecessary comments from configNormalizers.ts

* fix: replace removed piece field with verbose in runtime test

The piece field was removed from ProjectConfigSchema in PR #465.
Update the test to use verbose instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:13:44 +09:00
nrs
f733a7ebb1 fix: cc-resolve push 後に CI を自動トリガー 2026-03-04 20:07:13 +09:00
nrs
4f02c20c1d
Merge pull request #465 from nrslib/takt/420/remove-default-piece-switch
feat: デフォルトピースの概念と takt switch コマンドを削除
2026-03-04 18:02:28 +09:00
nrslib
9fc8ab73fd リトライ時でタスクにつめるようにする 2026-03-04 16:20:37 +09:00
nrs
8ffe0592ef
Merge pull request #460 from nrslib/takt/452/refactor-config-structure
[#452] refactor-config-structure
2026-03-04 15:14:33 +09:00
nrslib
7c1bc44596 feat: PR作成失敗時のタスクステータスを failed から pr_failed に分離
コード実行は成功したが PR 作成のみ失敗した場合、タスク全体を failed
扱いにせず pr_failed ステータスで記録する。takt list では [pr-failed]
として表示し、completed と同じ diff/merge 操作が可能。
2026-03-04 14:53:12 +09:00
nrslib
2dc5cf1102 feat: 全レビュアーに coder-decisions.md 参照を追加し設計判断の FP を抑制
意図的な設計判断をレビュアーが誤検知(FP)しないよう、全 review-*.md に
{report:coder-decisions.md} の参照セクションを追加。ただし設計判断自体の
妥当性も評価する指示を含め、盲目的な通過を防ぐ。
2026-03-04 14:40:01 +09:00
nrslib
204d84e345 takt: refactor-config-structure 2026-03-04 14:16:12 +09:00
nrslib
4e89fe1c23 feat: reviewers↔fix ループ収束を支援するレポート履歴・ループ監視・参照方針の整備
- phase-runner: レポートを上書きせずタイムスタンプ付きで同ディレクトリに保存し、fix が過去指摘の傾向を追跡できるよう改善
- output-contracts: persists/reopened/family_tag フィールドを追加してレビュー指摘の継続性を明示
- pieces: 全ビルトインピースに reviewers↔fix の loop_monitors を追加し、発散ループを自動検知
- fix.md: 過去レポートの参照方法を「Glob で {レポート名}.* を検索、最大2件読む」と具体化
- loop-monitor-reviewers-fix.md: ループモニタ判定用の共通インストラクションを新規追加
2026-03-04 11:32:19 +09:00
nrslib
6a3c64a033 fix: stop iteration limit prompt and persist exceeded in interactive run 2026-03-04 09:39:30 +09:00
nrs
54ecc38d42
Merge pull request #459 from nrslib/release/v0.29.0
Release v0.29.0
2026-03-04 02:08:37 +09:00
nrslib
3f5057c4d5 Release v0.29.0 2026-03-04 02:06:03 +09:00
nrslib
df2d4a786d test: E2E プロバイダー別テストをコンフィグレベルで制御し JSON レポートを追加
プロバイダー固有テストの skip ロジックをテストファイルから vitest.config.e2e.provider.ts に移動。
JSON レポート出力を追加し e2e/results/ を gitignore に追加。
2026-03-04 01:57:49 +09:00
nrslib
8dcb23b147 fix: export-cc で facets/ のディレクトリ構造を保持するよう修正
ファセットを ~/.claude/skills/takt/personas/ 等に展開していたが、
ビルトインのピースYAMLで ../facets/personas/ という相対パスを
使用しているため、facets/ ディレクトリを維持する必要があった。
deploySkill.ts、SKILL.md、engine.md のパス例も合わせて修正。
2026-03-04 01:30:11 +09:00
nrslib
8aa79d909c refactor: 共有ノーマライザを configNormalizers.ts に抽出
globalConfig.ts と projectConfig.ts に重複していた
normalizeProviderProfiles / denormalizeProviderProfiles /
normalizePieceOverrides / denormalizePieceOverrides を
configNormalizers.ts に集約した。
2026-03-04 01:30:02 +09:00
nrslib
ecf0b02684 chore: check:release で全プロバイダー E2E を実行するよう変更
test:e2e(mock のみ)から test:e2e:all(mock + claude + codex)に変更し、
リリース前チェックで実プロバイダーの E2E も確認できるようにする。
2026-03-04 00:43:28 +09:00
nrslib
7fe4fe3d20 ci: PR と push の重複実行を concurrency グループで抑制
同一ブランチへの push と pull_request イベントが同時に発火した際に
後から来た方が先のジョブをキャンセルするよう concurrency を設定する。
2026-03-04 00:34:32 +09:00
nrslib
1b1f758c56 fix: cc-resolve がマージコミットを作るよう修正
--no-commit --no-ff を使ってマージ状態を常に保持し、
最終的な git commit が必ずマージコミット(親2つ)になるようにする。
また MERGE_HEAD チェックと git reset 禁止を追加し、
Claude がマージ状態をリセットしてしまうケースを防ぐ。
2026-03-04 00:34:32 +09:00
nrs
8430948475
takt: unify-provider-config (#457) 2026-03-04 00:34:07 +09:00
nrs
290d085f5e
takt: implement-task-base-branch (#455) 2026-03-03 19:37:07 +09:00
あいやま EIichi Yamazaki
ed16c05160
fix: グローバル設定のpieceが解決チェーンで無視されるバグを修正 (#458) 2026-03-03 19:36:34 +09:00
nrslib
d2b48fdd92 fix: resolve provider-first permission mode and add codex EPERM e2e 2026-03-03 17:15:54 +09:00
nrs
f838a0e656
takt: github-issue-382-feat-purojeku (#384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-03 00:10:02 +09:00
nrs
4a92ba2012
[#366] implement-exceeded-requeue (#374)
* takt: implement-exceeded-requeue

* takt: implement-exceeded-requeue

* takt: implement-exceeded-requeue

* ci: trigger CI

* fix: 未使用インポート削除と --create-worktree e2e テスト修正

InteractiveModeAction の不要な import を削除して lint エラーを解消する。
--create-worktree オプション削除に合わせ e2e の期待メッセージを更新する。

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-02 23:30:53 +09:00
nrslib
dfbc455807 ci: feature ブランチへの push と手動実行に対応
takt/** ブランチへの push でも CI が走るよう push トリガーを拡張し、
workflow_dispatch を追加して GitHub UI からの手動実行を可能にする
2026-03-02 23:23:51 +09:00
nrs
29f8ca4bdc
takt: fix-copilot-review-findings (#434) 2026-03-02 23:04:24 +09:00
nrslib
c843858f2e feat: --pr インタラクティブモードで create_issue 除外・save_task 時の PR ブランチ自動設定
- --pr 指定時のインタラクティブモードで create_issue を選択肢から除外
- execute アクション時に PR ブランチを fetch + checkout してから実行
- save_task アクション時に worktree/branch/autoPr を自動設定しプロンプトをスキップ
- saveTaskFromInteractive に presetSettings オプションを追加
- interactiveMode に InteractiveModeOptions(excludeActions)を追加
- checkoutBranch() を git.ts に追加し steps.ts の重複コードを DRY 化
2026-03-02 23:01:24 +09:00
nrslib
e5f296a3e0 feat: TAKT開発向けレビュー+修正ループピース(takt-default-review-fix)を追加 2026-03-02 22:24:02 +09:00
nrslib
249540b121 docs: Provider CLIs から Claude を除外し OAuth・API キー利用の注意書きを追加 2026-03-02 22:12:41 +09:00
nrslib
8edf8b02d8 fix: レビューコメントがない PR でも --pr が機能するよう修正 2026-03-02 22:02:55 +09:00
nrslib
47612d9dcc refactor: agent-usecases / schema-loader の移動と pieceExecution の責務分割
- agent-usecases.ts を core/piece/ → agents/ へ移動
- schema-loader.ts を core/piece/ → infra/resources/ へ移動
- interactive-summary-types.ts を分離、shared/types/ ディレクトリを追加
- pieceExecution.ts を abortHandler / analyticsEmitter / iterationLimitHandler / outputFns / runMeta / sessionLogger に分割
- buildMergeFn を async → sync に変更(custom merge の file 戦略を削除)
- cleanupOrphanedClone にパストラバーサル保護を追加
- review-fix / frontend-review-fix ピースの IT テストを追加
2026-03-02 21:20:50 +09:00
nrslib
783ace35bd fix: review-fix をピースカテゴリのレビューに追加 2026-03-02 17:41:45 +09:00
nrslib
d3ac5cc17c fix: --auto-pr/--draft をパイプラインモード専用に制限
インタラクティブモードでの PR 自動作成プロンプト(resolveAutoPr / resolveDraftPr)を削除し、
--auto-pr / --draft はパイプラインモードでのみ有効になるよう制限する。
SelectAndExecuteOptions から repo / branch / issues フィールドも削除。
2026-03-02 17:37:46 +09:00
nrslib
fa222915ea feat: 多角レビュー+修正ループピース(review-fix)を追加
review ピースをベースに、レビュー指摘があった場合に fix → reviewers のループで修正を繰り返す review-fix ピースを追加。
2026-03-02 16:20:13 +09:00
nrslib
71772765a6 feat: フロントエンド/バックエンド/デュアル/CQRS+ES 特化のレビュー専用・レビュー修正ループピースを追加
- frontend/backend/dual/dual-cqrs/backend-cqrs の review 専用ピース(gather → reviewers → supervise)を追加
- 同5種の review-fix ピース(gather → reviewers ↔ fix → supervise)を追加
- review-arch インストラクションにモジュール化・関数化観点を明示的に追加
- 🔍 レビューカテゴリに10ピースを追加
2026-03-02 16:20:13 +09:00
Takashi Morikubo
50935a1244
Remove worktree prompt from execute action (#414)
* fix: remove execute worktree prompt and deprecate create-worktree option

* test(e2e): align specs with removed --create-worktree

* fix: remove execute worktree leftovers and align docs/tests

---------

Co-authored-by: Takashi Morikubo <azurite0107@gmail.com>
2026-03-02 16:12:18 +09:00
nrslib
769bd98724 fix: avoid leading-boundary flush before complete boundary 2026-03-02 15:14:01 +09:00
nrslib
872ff5fa36 feat: decomposeTask / requestMoreParts / judgeStatus にプロバイダーイベントロギングを追加
onStream を各オプション型に追加し、runAgent 呼び出しに伝播させる。
これにより team_leader の分解フェーズや Phase 3 判定のイベントが
provider-events.jsonl に記録されるようになる。

変更ファイル:
- agent-usecases.ts: JudgeStatusOptions / DecomposeTaskOptions に onStream 追加
- phase-runner.ts: PhaseRunnerContext に onStream 追加
- status-judgment-phase.ts: judgeStatus に ctx.onStream を渡す
- OptionsBuilder.ts: buildPhaseRunnerContext の戻り値に onStream を含める
- TeamLeaderRunner.ts: decomposeTask / requestMoreParts に engineOptions.onStream を渡す
2026-03-02 14:24:57 +09:00
nrslib
b999ae4a4b fix: decomposeTask / requestMoreParts の maxTurns を 2 → 4 に増加
structured output の再試行余裕を確保するため。
maxTurns: 2 だと長いタスク分解で詰まる可能性があった。
2026-03-02 14:20:06 +09:00
nrslib
bddb66f85d fix: avoid leading-boundary timed flush fragmentation 2026-03-02 14:18:28 +09:00
nrslib
52968ac873 fix: team leader エラーメッセージが空になるバグを修正
error と content が共に空の場合、status をフォールバックとして使用する。
?? 演算子は空文字をフォールバックしないため || に変更。
2026-03-02 14:18:28 +09:00
nrs
1a890792f1
Merge pull request #449 from nrslib/release/v0.28.1
Release v0.28.1
2026-03-02 14:01:27 +09:00
nrslib
2d8d1d4afe Release v0.28.1 2026-03-02 13:59:35 +09:00
nrslib
0201056f34 docs: 全ドキュメントに copilot プロバイダーを追加し、Claude Code 寄りの記述をプロバイダー中立に修正 2026-03-02 13:17:09 +09:00
nrslib
532b1961a7 refactor: expert → dual リネーム、未使用ピース削除、default 統合
- expert/expert-mini/expert-cqrs/expert-cqrs-mini を dual 系にリネーム
  (「フルスタック」→「フロントエンド+バックエンド」に説明も修正)
- expert-supervisor ペルソナを dual-supervisor にリネーム
- passthrough, structural-reform ピースを削除
- default-mini, default-test-first-mini を default に統合
- coding-pitfalls ナレッジの主要項目を coding ポリシーに移動し削除
- implement/plan インストラクションにセルフチェック・コーダー指針を追加
- builtin カタログに不足していた terraform, takt-default 系を追加
- deep-research をカテゴリに追加
2026-03-02 13:15:51 +09:00
nrs
658aebfcee
Merge pull request #442 from nrslib/release/v0.28.0
Release v0.28.0
2026-03-02 09:14:03 +09:00
nrslib
3acd30cc53 Release v0.28.0 2026-03-02 09:00:10 +09:00
nrs
501639f6b5
Merge pull request #433 from nrslib/release/v0.28.0-alpha.1
Release v0.28.0-alpha.1
2026-02-28 22:08:38 +09:00
nrslib
9ce4358e9d Release v0.28.0-alpha.1 2026-02-28 22:01:34 +09:00
nrs
8f0f546928
[#426] add-pr-review-task (#427)
* takt: add-pr-review-task

* fix: add コマンドの DRY 違反を修正

if/else で addTask を引数の有無のみ変えて呼び分けていた
冗長な分岐を三項演算子で統一。テストのアサーションも更新。

* fix: レビュー Warning 4件を修正

- addTask.test.ts: 冗長な Ref エイリアスを削除し直接参照に統一
- addTask.test.ts: mockRejectedValue を mockImplementation(throw) に変更
  (fetchPrReviewComments は同期メソッドのため)
- index.ts: addTask の JSDoc Flow コメントを復元(PR フロー追加)
- issueTask.ts: extractTitle / createIssueFromTask の JSDoc を移植
2026-02-28 21:56:00 +09:00
nrslib
2be824b231 fix: PRコメント投稿ステップにも GH_REPO を設定
fork PR のレビュー結果投稿時に gh pr comment が fork 側を
参照して失敗する問題を修正。takt 実行ステップと同様に
GH_REPO: github.repository を env に追加。
2026-02-28 21:55:22 +09:00
Tomohisa Takaoka
17232f9940
feat: add GitHub Copilot CLI as a new provider (#425)
* feat: add GitHub Copilot CLI as a new provider

Add support for GitHub Copilot CLI (@github/copilot) as a takt provider,
enabling the 'copilot' command to be used for AI-driven task execution.

New files:
- src/infra/copilot/client.ts: CLI client with streaming, session ID
  extraction via --share, and permission mode mapping
- src/infra/copilot/types.ts: CopilotCallOptions type definitions
- src/infra/copilot/index.ts: barrel exports
- src/infra/providers/copilot.ts: CopilotProvider implementing Provider
- src/__tests__/copilot-client.test.ts: 20 unit tests for client
- src/__tests__/copilot-provider.test.ts: 8 unit tests for provider

Key features:
- Spawns 'copilot -p' in non-interactive mode with --silent --no-color
- Permission modes: full (--yolo), edit (--allow-all-tools --no-ask-user),
  readonly (no permission flags)
- Session ID extraction from --share transcript files
- Real-time stdout streaming via onStream callbacks
- Configurable via COPILOT_CLI_PATH and COPILOT_GITHUB_TOKEN env vars

* fix: remove unused COPILOT_DEFAULT_MAX_AUTOPILOT_CONTINUES constant

* fix: address review feedback for copilot provider

- Remove excess maxAutopilotContinues property from test (#1 High)
- Extract cleanupTmpDir() helper to eliminate DRY violation (#2 Medium)
- Deduplicate chunk string conversion in stdout handler (#3 Medium)
- Remove 5 what/how comments that restate code (#4 Medium)
- Log readFile failure instead of silently swallowing (#5 Medium)
- Add credential scrubbing (ghp_/ghs_/gho_/github_pat_) for stderr (#6 Medium)
- Add buffer overflow tests for stdout and stderr (#7 Medium)
- Add pre-aborted AbortSignal test (#8 Low)
- Add mkdtemp failure fallback test (#9 Low)
- Add rm cleanup verification to fallback test (#10 Low)
- Log mkdtemp failure with debug level (#11 Persist)
- Add createLogger('copilot-client') for structured logging
2026-02-28 20:28:56 +09:00
nrslib
45663342c6 feat: ai-antipattern ポリシーに冗長な条件分岐パターン検出を追加
AI が生成しがちな if/else で同一関数を引数の有無のみ変えて
呼び出すパターンを REJECT 基準として定義。ai_review フェーズで
検出し、reviewers に到達する前に修正できるようにする。
既存のデッドコード例も TAKT 固有コードから汎用パターンに置換。
2026-02-28 17:48:10 +09:00
nrslib
ff31d9cb0c fix: fork PR レビュー時に GH_REPO を設定して正しいリポジトリの issue を参照 2026-02-28 17:37:30 +09:00
nrslib
5fd9022caa fix: takt-review を pull_request_target に変更して fork PR でもシークレットを利用可能に
- pull_request → pull_request_target でベースリポジトリのコンテキストで実行
- fork リポジトリからのチェックアウトに repository を追加
- ANTHROPIC_API_KEY が空の場合に即座にエラー終了するガードを追加
2026-02-28 17:34:41 +09:00
nrslib
e5665ed8cd fix: takt-review のトリガーに reopened を追加 2026-02-28 15:29:00 +09:00
nrslib
929557aa86 fix: takt-review が fork PR で失敗する問題を修正
head.ref(ブランチ名)は fork のブランチを解決できないため head.sha に変更
2026-02-28 15:10:01 +09:00
nrslib
fb0b34386f ci: pull_request の ready_for_review でもCIが走るように修正 2026-02-28 14:24:45 +09:00
nrs
9ba05d8598
[#395] github-issue-395-add-pull-from (#397)
* takt: github-issue-395-add-pull-from

* ci: trigger CI checks

* fix: taskDiffActions のコンフリクトマーカーを解消

origin/main でリネームされた「Merge from root」ラベル(PR #394)と、
このPR (#395) で追加した「Pull from remote」行を統合する。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ci: trigger CI checks

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: masanobu-naruse <m_naruse@codmon.co.jp>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 14:13:06 +09:00
nrslib
2d0dc127d0 refactor: cc-resolve をコンフリクト解決専用に変更
レビュー指摘対応の機能を削除し、コンフリクト解決のみに集中するように変更。
- Collect PR review comments ステップを削除
- プロンプトからレビュー関連セクションを削除
- コミット済みコンフリクトマーカーの検出を追加
- コミットメッセージを "fix: resolve merge conflicts" に変更
2026-02-28 14:08:04 +09:00
nrslib
88455b7594 fix: cc-resolve でマージコミットがあれば常に push するように修正 2026-02-28 13:48:49 +09:00
nrslib
8bb9ea4e8c fix: cc-resolve の Resolve ステップに GH_TOKEN を追加 2026-02-28 13:47:33 +09:00
nrslib
d05cb43432 fix: cc-resolve で Claude にフル権限を付与 (--dangerously-skip-permissions) 2026-02-28 13:45:02 +09:00
nrslib
2a8cc50ba0 fix: cc-resolve でフォークPRをスキップし、同一リポジトリPRのみ対応 2026-02-28 13:29:22 +09:00
nrslib
e4af465d72 fix: cc-resolve の checkout 前ステップに --repo を追加し、プロンプトを /resolve の観点に忠実に修正 2026-02-28 13:26:57 +09:00
nrslib
f6d59f4209 fix: cc-resolve の checkout 前ステップに --repo を追加 2026-02-28 13:06:18 +09:00
Junichi Kato
fe0b7237a7
fix: 不正なtasks.yamlで削除せず停止するように修正 (#418)
* test: add regression coverage for invalid tasks.yaml preservation

* fix: keep invalid tasks.yaml untouched and fail fast
2026-02-28 13:02:03 +09:00
souki-kimura
ac4cb9c8a5
fix: fallback to normal clone when reference repository is shallow (#376) (#409)
In shallow clone environments (e.g., DevContainer), `git clone --reference`
fails because Git cannot use a shallow repository as a reference. Add fallback
logic that detects the "reference repository is shallow" error and retries
without `--reference --dissociate`.

Co-authored-by: kimura <2023lmi-student009@la-study.com>
2026-02-28 13:01:18 +09:00
Yuma Satake
e77cb50ac1
feat: インタラクティブモードのスラッシュコマンドを行末でも認識可能にする (#406)
- スラッシュコマンド検出ロジックを commandMatcher.ts に分離
- 行頭・行末の両方でコマンドを認識し、行中は無視する仕様を実装
- conversationLoop を早期リターン + switch ディスパッチにリファクタリング
- SlashCommand 定数を shared/constants に追加
- コマンドマッチングのユニットテスト36件を追加
- 行末コマンド・行中非認識のE2Eテスト6件を追加

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 12:59:26 +09:00
nrslib
09fda82677 ci: PRコメント /resolve でコンフリクト解決・レビュー指摘修正を行うワークフローを追加 2026-02-28 12:56:43 +09:00
Junichi Kato
252c337456
fix: Global/ProjectのmodelがModelログに反映されない不具合を修正 (#417)
* test: add regression for movement model log fallback

* fix: use configured model for movement model logging
2026-02-28 12:54:32 +09:00
nrs
7494149e75
[#421] github-issue-421-feat-pr-opush (#422)
* takt: github-issue-421-feat-pr-opush

* docs: CONTRIBUTING のレビューモード説明を復元

--pr オプション追加に伴い削除されていたブランチモード・現在の差分モードの
ドキュメントを復元。コントリビューターはPR作成前にローカルでレビューする
ケースもあるため、全モードの記載が必要。

* fix: --pr でリモートブランチを fetch してからチェックアウト

他人のPRブランチはローカルに存在しないため、git fetch origin を
実行してからチェックアウトするように修正。また baseBranch を返す
ようにして --auto-pr 併用時の問題も解消。

* refactor: routing の排他条件を if/else に整理、不要なフォールバック削除

- routing.ts: prNumber の排他的分岐を if/else に統合
- pr.ts: data.body は string 型なので ?? '' フォールバックを削除
2026-02-28 12:53:35 +09:00
nrs
e256db8dea
takt: github-issue-398-branchexists (#401) 2026-02-28 12:31:24 +09:00
nrs
ae74c0d595
takt: #391 resolveConfigValue の無意味な defaultValue を撲滅する (#392) 2026-02-28 12:29:24 +09:00
nrslib
6d50221dd5 ci: PRに対するTAKT Reviewワークフローを追加
Environment承認方式で、メンテナーが承認するまで実行されない。
レビュー結果はPRコメントとアーティファクトに出力。
2026-02-28 12:06:13 +09:00
nrslib
4e9c02091a feat: add takt-default pieces and TAKT knowledge facet for self-development
- Add takt-default piece (5-parallel review, takt knowledge)
- Add takt-default-team-leader piece (team_leader implement variant)
- Add takt.md knowledge facet (EN/JA) covering TAKT architecture
- Add team-leader-implement instruction facet (EN/JA)
- Add TAKT Development category to piece-categories
2026-02-28 12:04:22 +09:00
nrslib
c7389a5b24 docs: add review mode examples to CONTRIBUTING 2026-02-28 09:48:23 +09:00
Junichi Kato
b8b64f858b
feat: プロジェクト単位のCLIパス設定(Claude/Cursor/Codex) (#413)
* feat: プロジェクト単位のCLIパス設定を支援するconfig層を追加

validateCliPath汎用関数、Global/Project設定スキーマ拡張、
env override、3プロバイダ向けresolve関数(env→project→global→undefined)を追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: Claude/Cursor/CodexプロバイダにCLIパス解決を統合

各プロバイダのtoXxxOptions()でproject configを読み込み、
resolveXxxCliPath()経由でCLIパスを解決してSDKに渡す。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: per-project CLIパス機能のテストを追加

validateCliPath, resolveClaudeCliPath, resolveCursorCliPath,
resolveCodexCliPath(project config層)のユニットテスト、
および既存プロバイダテストのモック更新。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:44:16 +09:00
nrslib
52c5e29000 docs: require takt review before submitting PRs
Rewrite CONTRIBUTING.md to require contributors to run
takt -t "#<PR>" -w review and post the review summary as a
PR comment. Add Japanese version at docs/CONTRIBUTING.ja.md.
2026-02-28 09:39:59 +09:00
nrs
b6cd71e79d
Merge pull request #419 from nrslib/release/v0.27.0
Release v0.27.0
2026-02-28 08:52:14 +09:00
512 changed files with 33568 additions and 10494 deletions

275
.github/workflows/cc-resolve.yml vendored Normal file
View File

@ -0,0 +1,275 @@
name: CC Resolve
on:
issue_comment:
types: [created]
jobs:
resolve:
# Uncomment to allow organization members or collaborators:
# || github.event.comment.author_association == 'MEMBER'
# || github.event.comment.author_association == 'COLLABORATOR'
if: |
github.event.issue.pull_request &&
contains(github.event.comment.body, '/resolve') &&
github.event.comment.author_association == 'OWNER'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Acknowledge
run: |
gh api repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }}/reactions \
-f content=rocket
gh pr comment ${{ github.event.issue.number }} --repo ${{ github.repository }} \
--body "🚀 cc-resolve started: [View logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check if fork PR
id: pr
run: |
PR_REPO=$(gh pr view ${{ github.event.issue.number }} --repo ${{ github.repository }} \
--json headRepositoryOwner,headRepository \
--jq '"\(.headRepositoryOwner.login)/\(.headRepository.name)"')
BRANCH=$(gh pr view ${{ github.event.issue.number }} --repo ${{ github.repository }} \
--json headRefName -q .headRefName)
echo "branch=${BRANCH}" >> "$GITHUB_OUTPUT"
if [ "$PR_REPO" != "${{ github.repository }}" ]; then
echo "::error::Fork PR はサポートしていません。contributor 側で解決してください。"
exit 1
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v4
with:
ref: ${{ steps.pr.outputs.branch }}
fetch-depth: 0
- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Merge main (detect conflicts)
id: merge
run: |
git fetch origin main
# --no-commit --no-ff: コンフリクトの有無にかかわらず常にマージ状態を保持する
# これにより最後の git commit が必ずマージコミット親2つを作る
if git merge --no-commit --no-ff origin/main 2>/dev/null; then
echo "conflicts=false" >> "$GITHUB_OUTPUT"
else
echo "conflicts=true" >> "$GITHUB_OUTPUT"
fi
# コミット済みのコンフリクトマーカーを検出
STALE_MARKERS=$(grep -rl '<<<<<<<' --include='*.ts' --include='*.js' --include='*.json' --include='*.yaml' --include='*.yml' --include='*.md' . 2>/dev/null | grep -v node_modules | grep -v .git || echo "")
if [ -n "$STALE_MARKERS" ]; then
echo "stale_markers=true" >> "$GITHUB_OUTPUT"
{
echo "stale_marker_files<<MARKER_EOF"
echo "$STALE_MARKERS"
echo "MARKER_EOF"
} >> "$GITHUB_OUTPUT"
else
echo "stale_markers=false" >> "$GITHUB_OUTPUT"
fi
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Resolve
run: |
claude -p --dangerously-skip-permissions "$(cat <<'PROMPT'
このPRのコンフリクトを解決してください。
## 状況判定
まず現在の状態を確認してください。以下の2つをすべてチェックする。
1. `git status` でマージコンフリクトUnmerged pathsの有無を確認
2. ファイル中にコミット済みのコンフリクトマーカー(`<<<<<<<`)が残っていないか `grep -r '<<<<<<<' --include='*.ts' --include='*.js' --include='*.json' .` で確認
**重要**: git status がクリーンでも、ファイル内にコンフリクトマーカーがテキストとしてコミットされている場合がある。必ず grep で確認すること。
どちらも該当しなければ「コンフリクトなし」と報告して終了。
---
## コンフリクト解決
Git merge/rebase/cherry-pick のコンフリクト、およびファイル内に残存するコンフリクトマーカーを、差分分析に基づいて解決する。
**原則: 差分を読み、疑い、判断根拠を書いてから解決する。妄信的に片方を採用しない。**
### 1. コンフリクト状態を確認する
```bash
git status
```
- merge / rebase / cherry-pick のどれが進行中か特定する
- `.git/MERGE_HEAD` があれば merge
- `.git/rebase-merge/` があれば rebase
- `.git/CHERRY_PICK_HEAD` があれば cherry-pick
### 2. コンテキストを把握する
以下を**並列で**実行:
- `git log --oneline HEAD -5` で HEAD 側(現在のブランチ)の最近の変更を確認
- `git log --oneline MERGE_HEAD -5` で取り込み側の最近の変更を確認merge の場合)
- 両ブランチの関係性(どちらがベースでどちらが新しいか)を理解する
### 3. コンフリクトファイルを列挙する
```bash
git diff --name-only --diff-filter=U
```
加えて、コミット済みマーカーがあるファイルも対象に含める:
```bash
grep -rl '<<<<<<<' --include='*.ts' --include='*.js' --include='*.json' . | grep -v node_modules
```
ファイル数と種類(ソースコード / 設定ファイル / ロックファイル等)を報告する。
### 4. 各ファイルを分析する
**ここが核心。ファイルごとに以下を必ず実行する。省略しない。**
1. ファイル全体を読む(コンフリクトマーカー付きの状態)
2. 各コンフリクトブロック(`<<<<<<<` 〜 `>>>>>>>`)について:
- HEAD 側の内容を具体的に読む
- theirs 側の内容を具体的に読む
- 差分が何を意味するか分析する(バージョン番号?リファクタ?機能追加?型変更?)
- 判断に迷う場合は `git log --oneline -- {file}` で変更履歴を確認する
3. **判断を書く**(以下の形式で必ず出力すること):
```markdown
### ファイル: path/to/file.ts
#### コンフリクト 1 (L30-45)
- HEAD 側: {具体的な内容を書く}
- theirs 側: {具体的な内容を書く}
- 分析: {差分が何を意味するか}
- 判断: {HEAD / theirs / 両方統合} を採用({理由}
```
**疑うべきポイント:**
- 「〇〇側が新しいから」だけで判断していないか? HEAD 側に独自の意図ある変更はないか?
- theirs を採用すると、HEAD 側でしか行っていない作業が消えないか?
- 両方の変更を統合すべきケースではないか?
- package-lock.json のような機械生成ファイルでも、バージョンの意味を確認したか?
### 5. 解決を実施する
ステップ4の分析結果に基づいて解決する:
- 片方採用が明確な場合: `git checkout --ours {file}` / `git checkout --theirs {file}` を使ってよい(**分析済みファイルのみ**
- 両方の変更を統合する場合: コンフリクトマーカーを除去し、両方の内容を適切に結合する
- 解決したファイルを `git add {file}` でマークする
解決後、`<<<<<<<` を検索し、マーカーの取り残しがないか確認する。
---
## 波及影響確認
**コンフリクトを解決しただけでは終わらない。** 対象外ファイルにも影響が出ていないか検証する。
- ビルド確認(`npm run build`、`./gradlew build` 等、プロジェクトに応じて)
- テスト確認(`npm test`、`./gradlew test` 等)
- 対象外ファイルが、変更と矛盾していないか確認する
- : 関数シグネチャを変更したのに、テストが旧シグネチャを期待している
- : import パスを変更したのに、別ファイルが旧パスを参照している
問題が見つかった場合はここで修正する。
---
## 結果を報告する
全ファイルの解決結果をサマリーテーブルで報告する:
```markdown
## コンフリクト解決サマリー
| ファイル | コンフリクト数 | 採用 | 理由 |
|---------|-------------|------|------|
| path/to/file.ts | 2 | theirs | リファクタリング済み |
波及修正: {対象外ファイルの修正内容。なければ「なし」}
ビルド: OK / NG
テスト: OK / NG ({passed}/{total})
```
---
## 絶対原則
- **差分を読まずに解決しない。** ファイルの中身を確認せずに `--ours` / `--theirs` を適用しない
- **盲従しない。** HEAD 側に独自の意図がないか必ず疑う
- **判断根拠を省略しない。** 各コンフリクトに「何が・なぜ・どちらを」の3点を書く
- **波及を確認する。** 対象外ファイルもビルド・テストで検証する
## 禁止事項
- 分析なしで `git checkout --ours .` / `git checkout --theirs .` を実行しない
- 「とりあえず片方」で全ファイルを一括解決しない
- コンフリクトマーカー (`<<<<<<<`) が残ったままにしない
- `git merge --abort` を実行しない
- `git reset` を実行しないMERGE_HEAD が消えてマージコミットが作れなくなる)
- `.git/MERGE_HEAD` を保持したまま作業すること
PROMPT
)" --verbose
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit and push
run: |
git add -A
# MERGE_HEAD があればマージコミット、なければ通常コミット
if [ -f .git/MERGE_HEAD ]; then
git commit -m "merge: integrate main into PR branch"
elif ! git diff --cached --quiet; then
git commit -m "fix: resolve merge conflicts"
fi
AHEAD=$(git rev-list --count origin/${{ steps.pr.outputs.branch }}..HEAD 2>/dev/null || echo "0")
if [ "$AHEAD" -gt 0 ]; then
echo "Pushing $AHEAD commit(s)"
git push
echo "pushed=true" >> "$GITHUB_OUTPUT"
else
echo "Nothing to push"
echo "pushed=false" >> "$GITHUB_OUTPUT"
fi
id: push
- name: Trigger CI
if: steps.push.outputs.pushed == 'true'
run: |
gh workflow run ci.yml --ref "${{ steps.pr.outputs.branch }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Report result
if: always()
run: |
PR_NUMBER=${{ github.event.issue.number }}
RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
if [ "${{ job.status }}" = "success" ]; then
gh pr comment "$PR_NUMBER" --repo ${{ github.repository }} --body "✅ cc-resolve completed. [View logs](${RUN_URL})"
else
gh pr comment "$PR_NUMBER" --repo ${{ github.repository }} --body "❌ cc-resolve failed. [View logs](${RUN_URL})"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -3,8 +3,14 @@ name: CI
on:
pull_request:
branches: [main]
types: [opened, synchronize, ready_for_review]
push:
branches: [main]
workflow_dispatch:
concurrency:
group: ci-${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
lint:

70
.github/workflows/takt-review.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: TAKT PR Review
on:
pull_request_target:
types: [opened, synchronize, ready_for_review, reopened]
jobs:
review:
runs-on: ubuntu-latest
environment: takt-review
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
fetch-depth: 0
- name: API キー確認
run: |
if [ -z "$ANTHROPIC_API_KEY" ]; then
echo "::error::ANTHROPIC_API_KEY is not set"
exit 1
fi
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Claude Code & TAKT インストール
run: |
npm install -g @anthropic-ai/claude-code
npm install -g takt
- name: TAKT Review 実行
run: takt --pipeline --skip-git -i ${{ github.event.pull_request.number }} -w review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
- name: レビュー結果をPRコメントに投稿
if: always()
run: |
REPORT_DIR=$(ls -td .takt/runs/*/reports 2>/dev/null | head -1)
if [ -n "$REPORT_DIR" ]; then
SUMMARY=$(find "$REPORT_DIR" -name "*review-summary*" -type f | head -1)
if [ -n "$SUMMARY" ]; then
gh pr comment ${{ github.event.pull_request.number }} --body-file "$SUMMARY"
else
echo "レビューサマリーが見つかりません"
fi
else
echo "レポートディレクトリが見つかりません"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
- name: レビューレポートをアーティファクトに保存
if: always()
uses: actions/upload-artifact@v4
with:
name: takt-review-reports
path: .takt/runs/*/reports/
if-no-files-found: ignore

19
.gitignore vendored
View File

@ -23,27 +23,16 @@ npm-debug.log*
# Test coverage
coverage/
# E2E test results
e2e/results/
# Environment
.env
.env.local
.env.*.local
.envrc
# TAKT config (user data)
.takt/
!.takt/config.yaml
!.takt/pieces/
!.takt/pieces/**
!.takt/personas/
!.takt/personas/**
!.takt/policies/
!.takt/policies/**
!.takt/knowledge/
!.takt/knowledge/**
!.takt/instructions/
!.takt/instructions/**
!.takt/output-contracts/
!.takt/output-contracts/**
# TAKT runtime data (facets/pieces/config are managed by .takt/.gitignore)
task_planning/

22
.takt/.gitignore vendored Normal file
View File

@ -0,0 +1,22 @@
# Ignore everything by default
*
# This file itself
!.gitignore
# Project configuration
!config.yaml
# Facets and pieces (version-controlled)
!pieces/
!pieces/**
!personas/
!personas/**
!policies/
!policies/**
!knowledge/
!knowledge/**
!instructions/
!instructions/**
!output-contracts/
!output-contracts/**

11
.takt/config.yaml Normal file
View File

@ -0,0 +1,11 @@
piece_overrides:
movements:
implement:
quality_gates:
- "Run `npm run test:e2e:mock` and verify all E2E tests pass"
fix:
quality_gates:
- "Run `npm run test:e2e:mock` and verify all E2E tests pass"
ai_fix:
quality_gates:
- "Run `npm run test:e2e:mock` and verify all E2E tests pass"

View File

@ -6,6 +6,156 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [0.30.0] - 2026-03-05
### Added
- トレースレポートの自動生成: piece 実行完了時に movement の遷移・フェーズ・ルール評価結果を Markdown レポートとして `.takt/runs/` に自動出力。`logging.trace: true` で全文モード、デフォルトは redacted モード (#467)
- 使用量イベントログ: プロバイダー呼び出しごとのトークン使用量を NDJSON 形式で記録。`logging.usage_events: true` で有効化 (#470)
- タスクリトライ時のピース再利用確認: `takt list` からリトライ・追加指示する際に、前回と同じピースを使うか選び直すかを選択可能に (#468)
### Changed
- BREAKING: `takt switch` コマンドを削除。ピース選択はインタラクティブモード起動時(`takt`)に毎回行う方式に変更 (#465)
- Claude プロバイダーの `allowed_tools` をビルトインピースの YAML 定義からエグゼキューター側に移動し、ピース YAML の簡素化と保守性を向上 (#469)
- 設定構造をリファクタリング: `globalConfig.ts``globalConfigCore.ts``globalConfigAccessors.ts``globalConfigResolvers.ts``globalConfigSerializer.ts` に分割。プロジェクトローカル設定(`.takt/config.yaml`)のフォールバック優先度を明確化 (#460)
- observability モジュールを `core/logging/` に再編成: `providerEventLogger``usageEventLogger` を統一的なログ基盤として整理 (#466)
- レビュアー全体に `coder-decisions.md` の参照を追加し、コーダーの設計判断を考慮したレビューで誤検知を抑制
- レビュー↔修正ループの収束を支援: レポート履歴の参照、ループモニター、修正方針のガイドラインを整備
### Fixed
- runtime 環境の `XDG_CONFIG_HOME` 上書きで `gh` CLI の認証が失敗する問題を修正。`GH_CONFIG_DIR` を元の設定から保持するよう変更
- `.takt/config.yaml``runtime.prepare` を記述するとエラーになる問題を修正(プロジェクトレベルでの runtime 設定を許可) (#464)
- インタラクティブモードで iteration limit 到達時にプロンプトが表示されず、exceeded 状態が保持されない問題を修正
- PR 作成失敗時のタスクステータスを `failed` から `pr_failed` に分離し、実行成功だが PR 作成のみ失敗したケースを区別可能に
- リトライ時にタスクにピース情報が引き継がれるよう修正
- `.gitignore``.takt/` ディレクトリ ignore を削除し `.takt/.gitignore` に委譲(プロジェクト設定ファイルの追跡を可能に)
- CI: push トリガーから `takt/**` を削除し二重実行を防止
- `cc-resolve` ワークフローで push 後に CI を自動トリガーするよう修正
### Internal
- deprecated config マイグレーション処理を削除
- プロジェクトローカル設定の優先度に関する統合テストを追加
- テストヘルパーとテストセットアップの改善
## [0.29.0] - 2026-03-04
### Added
- レビュー+修正ループピース群を追加: `review-fix`(多角レビュー)、`frontend-review-fix``backend-review-fix``dual-review-fix``dual-cqrs-review-fix``backend-cqrs-review-fix` および対応するレビュー専用ピース群を追加。コードレビューと自動修正を反復するワークフロー
- `takt-default-review-fix` ピースを追加: TAKT 自己開発向けのレビュー+修正ループワークフロー
- `quality_gates` のグローバル/プロジェクトレベルオーバーライドをサポート: `~/.takt/config.yaml` および `.takt/config.yaml``piece_overrides.quality_gates` でビルトインピースの品質ゲートを上書き可能に (#384)
- タスクの `base_branch` 設定: `takt add` 時に現在のブランチを base_branch として記録し、タスク実行時にそのブランチから分岐するよう設定可能に (#455)
- プロバイダー設定の統一: `.takt/config.yaml``provider` ブロックに `type`/`model`/プロバイダー固有オプション(`network_access` 等)をまとめて記述可能に (#457)
- ワーカープール超過時のリキュー: タスク実行がワーカー上限を超えた場合、タスクを自動的に再キューイングするよう対応 (#366)
- `--pr` インタラクティブモードで `create_issue` アクションを除外し、`save_task` 時に PR のブランチ名を `base_branch` として自動設定
- team_leader の `decomposeTask`/`requestMoreParts`/Phase 3 ステータス判定のプロバイダーイベントをロギング: `provider-events.jsonl` に記録されるようになり、デバッグ・分析が可能に
### Fixed
- `export-cc``facets/` のサブディレクトリ構造(`personas/``policies/` 等)が出力先に再現されなかった問題を修正 (#8dcb23b)
- `cc-resolve` コマンドがコンフリクト解決後にマージコミットを生成するよう修正 (#1b1f758)
- グローバル設定 (`~/.takt/config.yaml`) の `piece` フィールドがピース解決チェーンで無視されるバグを修正 (#458)
- Codex プロバイダーでプロバイダー優先のパーミッションモード解決が機能しない問題と EPERM エラーの E2E テストを追加 (#d2b48fd)
- レビューコメントがない PR で `--pr` を使用した際にエラーになる問題を修正
- `--auto-pr`/`--draft` オプションをパイプラインモード専用に制限(インタラクティブモードでの誤用を防止)
- team_leader のストリーミングでバウンダリの先行フラッシュによる断片化を修正 (#769bd87, #bddb66f)
- team_leader のエラーメッセージが空文字列になるバグを修正 (#52968ac)
- `decomposeTask`/`requestMoreParts``maxTurns` を 2 から 4 に増加(複雑なタスク分解でタイムアウトしていた問題を緩和)
- Copilot プロバイダーのクライアント実装のバグを修正 (#434)
### Internal
- E2E プロバイダー別テストをコンフィグレベル(`vitest.config.e2e.provider.ts`)で振り分けるよう変更。テストファイル内の `skip` ロジックを廃止し、JSON レポート出力を追加
- 共有ノーマライザを `configNormalizers.ts` に抽出してプロバイダー設定解析を整理
- `agent-usecases`/`schema-loader` を移動し `pieceExecution` の責務を分割
- `check:release` で全プロバイダーclaude/codex/opencodeの E2E を実行するよう変更
- CI: PR と push の重複実行を concurrency グループで抑制
- CI: feature ブランチへの push と手動実行に対応
## [0.28.1] - 2026-03-02
### Changed
- BREAKING: `expert` / `expert-mini` / `expert-cqrs` / `expert-cqrs-mini` ピースを `dual` / `dual-mini` / `dual-cqrs` / `dual-cqrs-mini` にリネーム。カスタマイズしている場合はピース名を更新が必要
- `default-mini` / `default-test-first-mini` ピースを `default` に統合。`default` ピースが「テスト優先モード」を内包するよう拡張
- `coding-pitfalls` ナレッジの主要項目を `coding` ポリシーに移動し、ポリシーとして実際に適用されるよう強化
- `implement` / `plan` インストラクションにセルフチェック・コーダー指針を追加
### Removed
- `passthrough` ピースを削除
- `structural-reform` ピースを削除
### Internal
- `expert-supervisor` ペルソナを `dual-supervisor` にリネーム
- ビルトインカタログに不足していた `terraform``takt-default` 系、`deep-research` を追加
- カテゴリ設定に `deep-research` を追加
- 全ドキュメントに `copilot` プロバイダーの説明を追加し、Claude Code 寄りの記述をプロバイダー中立に修正
## [0.28.0] - 2026-03-02
### Added
- GitHub Copilot CLI プロバイダーを追加: `copilot` プロバイダーとして GitHub Copilot CLI を利用可能に。セッション継続、パーミッション制御readonly/edit/fullに対応。`copilotCliPath` / `TAKT_COPILOT_CLI_PATH` で CLI パスを指定、`copilotGithubToken` / `TAKT_COPILOT_GITHUB_TOKEN` で認証トークンを設定 (#425)
- `--pr` オプションを追加: PR のレビューコメントを取得してタスクとして実行。パイプラインモードとインタラクティブモードの両方で利用可能 (#421)
- `takt add --pr N` で PR のレビューコメントをタスクとして追加可能に。PR のブランチ名で worktree を自動作成し、レビュー指摘の修正タスクとしてキューイング (#426)
- `takt list` に「Pull from remote」アクションを追加: リモートの変更を worktree に取り込み、再プッシュ可能に (#395)
- プロジェクト単位の CLI パス設定: `.takt/config.yaml``claudeCliPath` / `cursorCliPath` / `codexCliPath` / `copilotCliPath` をプロジェクトごとに設定可能に (#413)
- インタラクティブモードのスラッシュコマンドを行末でも認識可能に(例: `タスクの内容 /go`(#406)
- takt-default / takt-default-team-leader ビルトインピースを追加TAKT 自己開発用のワークフロー定義)
- TAKT ナレッジファセット(`takt.md`)を追加: TAKT のアーキテクチャとコード規約を体系化
- ai-antipattern ポリシーに冗長な条件分岐パターン検出を追加: 同一関数を if/else で呼び分けるコードを検出し、三項演算子やスプレッド構文での統一を促す
### Fixed
- 不正な `tasks.yaml` を検出した場合、ファイルを削除せず保持してエラーメッセージで停止するよう修正 (#418)
- shallow clone リポジトリで worktree 作成が失敗する問題を修正: `--reference` 付きクローンが失敗した場合に通常クローンへフォールバック (#376, #409)
- グローバル/プロジェクト設定の `model` がモデルログに反映されない不具合を修正 (#417)
- fork PR レビュー時に `GH_REPO` を設定して正しいリポジトリの issue を参照するよう修正
- takt-review ワークフローの PR コメント投稿ステップにも `GH_REPO` を設定
### Internal
- `resolveConfigValue` の不要な `defaultValue` 引数を削除し、設定解決ロジックを簡素化 (#391)
- PRコメント `/resolve` でコンフリクト解決・レビュー指摘修正を行う GitHub Actions ワークフローcc-resolveを追加
- takt-review ワークフローを `pull_request_target` に変更し、fork PR でもシークレットを利用可能に
- CI に `ready_for_review` / `reopened` トリガーを追加
- CONTRIBUTING にレビューモードの例を追加、日本語版(`CONTRIBUTING.ja.md`)を追加
## [0.28.0-alpha.1] - 2026-02-28
### Added
- GitHub Copilot CLI プロバイダーを追加: `copilot` プロバイダーとして GitHub Copilot CLI を利用可能に。セッション継続、パーミッション制御readonly/edit/fullに対応。`copilotCliPath` / `TAKT_COPILOT_CLI_PATH` で CLI パスを指定、`copilotGithubToken` / `TAKT_COPILOT_GITHUB_TOKEN` で認証トークンを設定 (#425)
- `--pr` オプションを追加: PR のレビューコメントを取得してタスクとして実行。パイプラインモードとインタラクティブモードの両方で利用可能 (#421)
- `takt add --pr N` で PR のレビューコメントをタスクとして追加可能に。PR のブランチ名で worktree を自動作成し、レビュー指摘の修正タスクとしてキューイング (#426)
- `takt list` に「Pull from remote」アクションを追加: リモートの変更を worktree に取り込み、再プッシュ可能に (#395)
- プロジェクト単位の CLI パス設定: `.takt/config.yaml``claudeCliPath` / `cursorCliPath` / `codexCliPath` / `copilotCliPath` をプロジェクトごとに設定可能に (#413)
- インタラクティブモードのスラッシュコマンドを行末でも認識可能に(例: `タスクの内容 /go`(#406)
- takt-default / takt-default-team-leader ビルトインピースを追加TAKT 自己開発用のワークフロー定義)
- TAKT ナレッジファセット(`takt.md`)を追加: TAKT のアーキテクチャとコード規約を体系化
- ai-antipattern ポリシーに冗長な条件分岐パターン検出を追加: 同一関数を if/else で呼び分けるコードを検出し、三項演算子やスプレッド構文での統一を促す
### Fixed
- 不正な `tasks.yaml` を検出した場合、ファイルを削除せず保持してエラーメッセージで停止するよう修正 (#418)
- shallow clone リポジトリで worktree 作成が失敗する問題を修正: `--reference` 付きクローンが失敗した場合に通常クローンへフォールバック (#376, #409)
- グローバル/プロジェクト設定の `model` がモデルログに反映されない不具合を修正 (#417)
- fork PR レビュー時に `GH_REPO` を設定して正しいリポジトリの issue を参照するよう修正
- takt-review ワークフローの PR コメント投稿ステップにも `GH_REPO` を設定
### Internal
- `resolveConfigValue` の不要な `defaultValue` 引数を削除し、設定解決ロジックを簡素化 (#391)
- PRコメント `/resolve` でコンフリクト解決・レビュー指摘修正を行う GitHub Actions ワークフローcc-resolveを追加
- takt-review ワークフローを `pull_request_target` に変更し、fork PR でもシークレットを利用可能に
- CI に `ready_for_review` / `reopened` トリガーを追加
- CONTRIBUTING にレビューモードの例を追加、日本語版(`CONTRIBUTING.ja.md`)を追加
## [0.27.0] - 2026-02-28
### Added

View File

@ -35,7 +35,6 @@ TAKT (TAKT Agent Koordination Topology) is a multi-agent orchestration system fo
| `takt watch` | Watch `.takt/tasks/` and auto-execute tasks (resident process) |
| `takt add [task]` | Add a new task via AI conversation |
| `takt list` | List task branches (merge, delete, retry) |
| `takt switch [piece]` | Switch piece interactively |
| `takt clear` | Clear agent conversation sessions (reset state) |
| `takt eject [type] [name]` | Copy builtin piece or facet for customization (`--global` for ~/.takt/) |
| `takt prompt [piece]` | Preview assembled prompts for each movement and phase |
@ -64,12 +63,12 @@ TAKT (TAKT Agent Koordination Topology) is a multi-agent orchestration system fo
| `--pipeline` | Enable pipeline (non-interactive) mode — required for CI/automation |
| `-t, --task <text>` | Task content (as alternative to GitHub issue) |
| `-i, --issue <N>` | GitHub issue number (equivalent to `#N` in interactive mode) |
| `--pr <number>` | PR number to fetch review comments and fix |
| `-w, --piece <name or path>` | Piece name or path to piece YAML file |
| `-b, --branch <name>` | Branch name (auto-generated if omitted) |
| `--auto-pr` | Create PR after execution (interactive: skip confirmation, pipeline: enable PR) |
| `--auto-pr` | Create PR after execution (pipeline mode only) |
| `--skip-git` | Skip branch creation, commit, and push (pipeline mode, piece-only) |
| `--repo <owner/repo>` | Repository for PR creation |
| `--create-worktree <yes\|no>` | Skip worktree confirmation prompt |
| `-q, --quiet` | Minimal output mode: suppress AI output (for CI) |
| `--provider <name>` | Override agent provider (claude\|codex\|opencode\|mock) |
| `--model <name>` | Override agent model |
@ -462,12 +461,12 @@ Example category config:
```yaml
piece_categories:
Development:
pieces: [default, default-mini]
pieces: [default]
children:
Backend:
pieces: [expert-cqrs]
pieces: [dual-cqrs]
Frontend:
pieces: [expert]
pieces: [dual]
Research:
pieces: [research, magi]
show_others_category: true
@ -602,17 +601,24 @@ Implemented in `src/core/runtime/runtime-environment.ts`.
## Debugging
**Debug logging:** Set `debug_enabled: true` in `~/.takt/config.yaml` or create a `.takt/debug.yaml` file:
**Debug logging:** Set `logging.debug: true` in `~/.takt/config.yaml`:
```yaml
enabled: true
logging:
debug: true
```
Debug logs are written to `.takt/logs/debug.log` (ndjson format). Log levels: `debug`, `info`, `warn`, `error`.
Debug logs are written to `.takt/runs/debug-{timestamp}/logs/` in NDJSON format. Log levels: `debug`, `info`, `warn`, `error`.
**Verbose mode:** Create `.takt/verbose` file (empty file) to enable verbose console output. This automatically enables debug logging and sets log level to `debug`.
**Verbose mode:** Set `verbose: true` in `~/.takt/config.yaml` or `TAKT_VERBOSE=true` to enable verbose console output. This enables `logging.debug`, `logging.trace`, and sets `logging.level` to `debug`.
**Session logs:** All piece executions are logged to `.takt/logs/{sessionId}.jsonl`. Use `tail -f .takt/logs/{sessionId}.jsonl` to monitor in real-time.
**Environment variables:**
- `TAKT_LOGGING_LEVEL=info`
- `TAKT_LOGGING_PROVIDER_EVENTS=true`
- `TAKT_VERBOSE=true`
**Testing with mocks:** Use `--provider mock` to test pieces without calling real AI APIs. Mock responses are deterministic and configurable via test fixtures.
## Testing Notes

View File

@ -1,62 +1,66 @@
# Contributing to TAKT
Thank you for your interest in contributing to TAKT!
🇯🇵 [日本語版](./docs/CONTRIBUTING.ja.md)
## About This Project
This project is developed using [TAKT](https://github.com/nrslib/takt). Please understand the following before contributing:
- **Small, focused changes are preferred** - Bug fixes, typo corrections, documentation improvements
- **Large PRs are difficult to review** - Especially AI-generated bulk changes without explanation
## How to Contribute
### Reporting Issues
1. Search existing issues first
2. Include reproduction steps
3. Include your environment (OS, Node version, etc.)
### Pull Requests
**Preferred:**
- Bug fixes with tests
- Documentation improvements
- Small, focused changes
- Typo corrections
**Difficult to review:**
- Large refactoring
- AI-generated bulk changes
- Feature additions without prior discussion
### Before Submitting a PR
1. Open an issue first to discuss the change
2. Keep changes small and focused
3. Include tests if applicable
4. Update documentation if needed
Thank you for your interest in contributing to TAKT! This project uses TAKT's review piece to verify PR quality before merging.
## Development Setup
```bash
# Clone the repository
git clone https://github.com/your-username/takt.git
cd takt
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Lint
npm run lint
```
## How to Contribute
1. **Open an issue** to discuss the change before starting work
2. **Keep changes small and focused** — bug fixes, documentation improvements, typo corrections are welcome
3. **Include tests** for new behavior
4. **Run the review** before submitting (see below)
Large refactoring or feature additions without prior discussion are difficult to review and may be declined.
## Before Submitting a PR
All PRs must pass the TAKT review process. PRs without a review summary or with unresolved REJECT findings will not be merged.
### 1. Pass CI checks
```bash
npm run build
npm run lint
npm test
```
### 2. Run TAKT review
The review piece auto-detects the review mode based on the input:
```bash
# PR mode — review a pull request by number
takt -t "#<PR-number>" -w review
# Branch mode — review a branch diff against main
takt -t "<branch-name>" -w review
# Current diff mode — review uncommitted or recent changes
takt -t "review current changes" -w review
```
### 3. Confirm APPROVE
Check the review summary in `.takt/runs/*/reports/review-summary.md`. If the result is **REJECT**, fix the reported issues and re-run the review until you get **APPROVE**.
If a REJECT finding cannot be resolved (e.g., false positive, intentional design decision), leave a comment on the PR explaining why it remains unresolved.
### 4. Include the review summary in your PR
Post the contents of `review-summary.md` as a comment on your PR. This is **required** — it lets maintainers verify that the review was run and passed.
## Code Style
- TypeScript strict mode

View File

@ -4,7 +4,7 @@
**T**AKT **A**gent **K**oordination **T**opology — Give your AI coding agents structured review loops, managed prompts, and guardrails — so they deliver quality code, not just code.
TAKT runs AI agents (Claude Code, Codex, OpenCode, Cursor) through YAML-defined workflows with built-in review cycles. You talk to AI to define what you want, queue tasks, and let TAKT handle the execution — planning, implementation, multi-stage review, and fix loops — all governed by declarative piece files.
TAKT runs AI agents (Claude Code, Codex, OpenCode, Cursor, GitHub Copilot CLI) through YAML-defined workflows with built-in review cycles. You talk to AI to define what you want, queue tasks, and let TAKT handle the execution — planning, implementation, multi-stage review, and fix loops — all governed by declarative piece files.
TAKT is built with TAKT itself (dogfooding).
@ -22,13 +22,15 @@ TAKT is built with TAKT itself (dogfooding).
Choose one:
- **Provider CLIs**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), [OpenCode](https://opencode.ai), or [Cursor Agent](https://docs.cursor.com/) installed
- **Direct API**: Anthropic / OpenAI / OpenCode / Cursor API Key (no CLI required)
- **Provider CLIs**: [Codex](https://github.com/openai/codex), [OpenCode](https://opencode.ai), [Cursor Agent](https://docs.cursor.com/), or [GitHub Copilot CLI](https://docs.github.com/en/copilot/github-copilot-in-the-cli) installed
- **Direct API**: Anthropic / OpenAI / OpenCode API Key (no CLI required)
Optional:
- [GitHub CLI](https://cli.github.com/) (`gh`) — for `takt #N` (GitHub Issue tasks)
> **OAuth and API key usage:** Whether OAuth or API key access is permitted varies by provider and use case. Check each provider's terms of service before using TAKT.
## Quick Start
### Install
@ -44,8 +46,9 @@ $ takt
Select piece:
🎼 default (current)
📁 Development/
📁 Research/
📁 🚀 Quick Start/
📁 🎨 Frontend/
📁 ⚙️ Backend/
> Add user authentication with JWT
@ -124,12 +127,10 @@ Rules determine the next movement. `COMPLETE` ends the piece successfully, `ABOR
| Piece | Use Case |
|-------|----------|
| `default-mini` | Quick fixes. Lightweight plan → implement → parallel review → fix loop. |
| `default-test-first-mini` | Test-first development. Write tests first, then implement to pass them. |
| `default` | Standard development. Test-first with AI antipattern review and parallel review (architecture + supervisor). |
| `frontend-mini` | Frontend-focused mini configuration. |
| `backend-mini` | Backend-focused mini configuration. |
| `expert-mini` | Expert-level mini configuration. |
| `default` | Serious development. Multi-stage review with parallel reviewers. Used for TAKT's own development. |
| `dual-mini` | Frontend + backend mini configuration. |
See the [Builtin Catalog](./docs/builtin-catalog.md) for all pieces and personas.
@ -141,7 +142,6 @@ See the [Builtin Catalog](./docs/builtin-catalog.md) for all pieces and personas
| `takt run` | Execute all pending tasks |
| `takt list` | Manage task branches (merge, retry, instruct, delete) |
| `takt #N` | Execute GitHub Issue as task |
| `takt switch` | Switch active piece |
| `takt eject` | Copy builtin pieces/facets for customization |
| `takt repertoire add` | Install a repertoire package from GitHub |
@ -152,18 +152,19 @@ See the [CLI Reference](./docs/cli-reference.md) for all commands and options.
Minimal `~/.takt/config.yaml`:
```yaml
provider: claude # claude, codex, opencode, or cursor
provider: claude # claude, codex, opencode, cursor, or copilot
model: sonnet # passed directly to provider
language: en # en or ja
```
Or use API keys directly (no CLI installation required):
Or use API keys directly (no CLI installation required for Claude, Codex, OpenCode):
```bash
export TAKT_ANTHROPIC_API_KEY=sk-ant-... # Anthropic (Claude)
export TAKT_OPENAI_API_KEY=sk-... # OpenAI (Codex)
export TAKT_OPENCODE_API_KEY=... # OpenCode
export TAKT_CURSOR_API_KEY=... # Cursor Agent (optional if logged in)
export TAKT_COPILOT_GITHUB_TOKEN=ghp_... # GitHub Copilot CLI
```
See the [Configuration Guide](./docs/configuration.md) for all options, provider profiles, and model resolution.

View File

@ -2,24 +2,35 @@
# Location: ~/.takt/config.yaml
# =====================================
# General settings (piece-independent)
# General settings
# =====================================
language: en # UI language: en | ja
log_level: info # Log level: debug | info | warn | error
provider: claude # Default provider: claude | codex | opencode | mock
# model: sonnet # Optional model name passed to provider
# Default provider and model
# provider: claude # Default provider: claude | codex | opencode | cursor | copilot | mock
# model: sonnet # Default model (passed directly to provider)
# Execution control
# worktree_dir: ~/takt-worktrees # Base directory for shared clone execution
# auto_pr: false # Auto-create PR after worktree execution
branch_name_strategy: ai # Branch strategy: romaji | ai
concurrency: 2 # Concurrent task execution for takt run (1-10)
# task_poll_interval_ms: 500 # Polling interval in ms during takt run (100-5000)
# prevent_sleep: false # Prevent macOS idle sleep while running
# auto_fetch: false # Fetch before clone to keep shared clones up-to-date
# base_branch: main # Base branch to clone from (default: current branch)
# concurrency: 1 # Number of tasks to run concurrently in takt run (1-10)
# task_poll_interval_ms: 500 # Polling interval in ms for picking up new tasks (100-5000)
# PR / branch
# auto_pr: false # Auto-create PR after worktree execution
# draft_pr: false # Create PR as draft
# branch_name_strategy: romaji # Branch name generation: romaji | ai
# Pipeline execution
# pipeline:
# default_branch_prefix: "takt/" # Branch prefix for pipeline-created branches
# commit_message_template: "{title}" # Commit message template. Variables: {title}, {issue}
# pr_body_template: "{report}" # PR body template. Variables: {issue_body}, {report}, {issue}
# Output / notifications
# minimal_output: false # Minimized output for CI logs
# verbose: false # Verbose output mode
# minimal_output: false # Suppress detailed agent output
# notification_sound: true # Master switch for sounds
# notification_sound_events: # Per-event sound toggle (unset means true)
# iteration_limit: true
@ -27,74 +38,86 @@ concurrency: 2 # Concurrent task execution for takt run (1-10)
# piece_abort: true
# run_complete: true
# run_abort: true
# observability:
# logging:
# level: info # Log level for console and file output
# trace: true # Generate human-readable execution trace report (trace.md)
# debug: false # Enable debug.log + prompts.jsonl
# provider_events: false # Persist provider stream events
# usage_events: false # Persist usage event logs
# Analytics
# analytics:
# enabled: true # Enable analytics metrics collection
# events_path: ~/.takt/analytics/events # Analytics event directory
# retention_days: 30 # Analytics event retention (days)
# enabled: true # Enable local analytics collection
# events_path: ~/.takt/analytics/events # Custom events directory
# retention_days: 30 # Retention period for event files
# Interactive mode
# interactive_preview_movements: 3 # Number of movement previews in interactive mode (0-10)
# Per-persona provider/model overrides
# persona_providers:
# coder:
# provider: claude
# model: opus
# reviewer:
# provider: codex
# model: gpt-5.2-codex
# Provider-specific options (lowest priority, overridden by piece/movement)
# provider_options:
# codex:
# network_access: true
# claude:
# sandbox:
# allow_unsandboxed_commands: true
# Provider permission profiles
# provider_profiles:
# claude:
# default_permission_mode: edit
# codex:
# default_permission_mode: edit
# Runtime environment preparation
# runtime:
# prepare: [node, gradle, ./custom-script.sh]
# Piece-level overrides
# piece_overrides:
# quality_gates:
# - "All tests pass"
# quality_gates_edit_only: true
# movements:
# review:
# quality_gates:
# - "No security vulnerabilities"
# personas:
# coder:
# quality_gates:
# - "Code follows conventions"
# Credentials (environment variables take priority)
# anthropic_api_key: "sk-ant-..." # Claude API key
# openai_api_key: "sk-..." # Codex/OpenAI API key
# gemini_api_key: "..." # Gemini API key
# google_api_key: "..." # Google API key
# groq_api_key: "..." # Groq API key
# openrouter_api_key: "..." # OpenRouter API key
# opencode_api_key: "..." # OpenCode API key
# codex_cli_path: "/absolute/path/to/codex" # Absolute path to Codex CLI
# cursor_api_key: "..." # Cursor API key
# Pipeline
# pipeline:
# default_branch_prefix: "takt/" # Prefix for pipeline-created branches
# commit_message_template: "feat: {title} (#{issue})" # Commit template
# pr_body_template: | # PR body template
# ## Summary
# {issue_body}
# Closes #{issue}
# CLI paths
# codex_cli_path: "/absolute/path/to/codex" # Absolute path to Codex CLI
# claude_cli_path: "/absolute/path/to/claude" # Absolute path to Claude Code CLI
# cursor_cli_path: "/absolute/path/to/cursor" # Absolute path to cursor-agent CLI
# copilot_cli_path: "/absolute/path/to/copilot" # Absolute path to Copilot CLI
# copilot_github_token: "ghp_..." # Copilot GitHub token
# Misc
# bookmarks_file: ~/.takt/preferences/bookmarks.yaml # Bookmark file location
# =====================================
# Piece-related settings (global defaults)
# =====================================
# 1) Route provider/model per persona
# persona_providers:
# coder:
# provider: codex # Run coder persona on Codex
# model: o3-mini # Use o3-mini model (optional)
# reviewer:
# provider: claude # Run reviewer persona on Claude
# 2) Provider options
# Priority (for piece-capable keys such as provider/model/provider_options):
# global < piece < project < env
# provider_options:
# codex:
# network_access: true # Allow network access for Codex
# opencode:
# network_access: true # Allow network access for OpenCode
# claude:
# sandbox:
# allow_unsandboxed_commands: false # true allows unsandboxed execution for listed commands
# excluded_commands:
# - "npm publish" # Commands excluded from sandbox
# 3) Movement permission policy
# provider_profiles:
# codex:
# default_permission_mode: full # Base permission: readonly | edit | full
# movement_permission_overrides:
# ai_review: readonly # Per-movement override
# claude:
# default_permission_mode: edit
# 4) Runtime preparation before execution (recommended: enabled)
runtime:
prepare:
- gradle # Prepare Gradle cache/env under .runtime
- node # Prepare npm cache/env under .runtime
# 5) Piece list / categories
# Piece list / categories
# enable_builtin_pieces: true # Enable built-in pieces from builtins/{lang}/pieces
# disabled_builtins:
# - magi # Built-in piece names to disable
# piece_categories_file: ~/.takt/preferences/piece-categories.yaml # Category definition file
# interactive_preview_movements: 3 # Preview movement count in interactive mode (0-10)

View File

@ -1,10 +1,16 @@
Address the reviewer's feedback.
Use reports in the Report Directory shown in the Piece Context and fix the issues raised by the reviewer.
Use files in the Report Directory as primary evidence. If additional context is needed, you may consult Previous Response and conversation history as secondary sources (Previous Response may be unavailable). If information conflicts, prioritize reports in the Report Directory and actual file contents.
Use reports in the Report Directory and fix the issues raised by the reviewer.
**Important**: After fixing, run both build and tests.
- Build verification is mandatory. Run the build (type check) and verify there are no type errors
- Running tests is mandatory. After build succeeds, always run tests and verify results
**Report reference policy:**
- Use the latest review reports in the Report Directory as primary evidence.
- Past iteration reports are saved as `{filename}.{timestamp}` in the same directory (e.g., `architect-review.md.20260304T123456Z`). For each report, run Glob with a `{report-name}.*` pattern, read up to 2 files in descending timestamp order, and understand persists / reopened trends before starting fixes.
**Completion criteria (all must be satisfied):**
- All findings in this iteration (new / reopened) have been fixed
- Potential occurrences of the same `family_tag` have been fixed simultaneously (no partial fixes that cause recurrence)
- At least one regression test per `family_tag` has been added (mandatory for config-contract and boundary-check findings)
- Findings with the same `family_tag` from multiple reviewers have been merged and addressed as one fix
**Important**: After fixing, run the build (type check) and tests.
**Required output (include headings)**
## Work results
@ -15,5 +21,11 @@ Use files in the Report Directory as primary evidence. If additional context is
- {Build execution results}
## Test results
- {Test command executed and results}
## Convergence gate
| Metric | Count |
|--------|-------|
| new (fixed in this iteration) | {N} |
| reopened (recurrence fixed) | {N} |
| persists (carried over, not addressed this iteration) | {N} |
## Evidence
- {List key points from files checked/searches/diffs/logs}

View File

@ -41,6 +41,15 @@ Small / Medium / Large
- **Rationale**: {Reason for the choice}
```
**Pre-completion self-check (required):**
Before running build and tests, verify the following:
- If new parameters/fields were added, grep to confirm they are actually passed from call sites
- For any `??`, `||`, `= defaultValue` usage, confirm fallback is truly necessary
- Verify no replaced code/exports remain after refactoring
- Verify no features outside the task specification were added
- Verify no if/else blocks call the same function with only argument differences
- Verify new code matches existing implementation patterns (API call style, type definition style, etc.)
**Required output (include headings)**
## Work results
- {Summary of actions taken}

View File

@ -40,6 +40,15 @@ Small / Medium / Large
- **Rationale**: {Reason for the choice}
```
**Pre-completion self-check (required):**
Before running build and tests, verify the following:
- If new parameters/fields were added, grep to confirm they are actually passed from call sites
- For any `??`, `||`, `= defaultValue` usage, confirm fallback is truly necessary
- Verify no replaced code/exports remain after refactoring
- Verify no features outside the task specification were added
- Verify no if/else blocks call the same function with only argument differences
- Verify new code matches existing implementation patterns (API call style, type definition style, etc.)
**Required output (include headings)**
## Work results
- {Summary of actions taken}

View File

@ -0,0 +1,9 @@
The reviewers → fix loop has repeated {cycle_count} times.
Review the latest review reports in the Report Directory and determine
whether this loop is healthy (converging) or unproductive (diverging or oscillating).
**Judgment criteria:**
- Is the number of new / reopened findings decreasing each cycle?
- Are the same family_tag findings not repeating (is persists not growing)?
- Are fixes actually being applied to the code?

View File

@ -19,3 +19,7 @@ For small tasks, skip the design sections in the report.
4. Determine file structure and design patterns (if needed)
5. Decide on the implementation approach
- Verify the implementation approach does not violate knowledge/policy constraints
6. Include the following in coder implementation guidelines:
- Existing implementation patterns to reference (file:line). Always cite when similar processing already exists
- Impact area of changes. Especially when adding new parameters, enumerate all call sites that need wiring
- Anti-patterns to watch for in this specific task (if applicable)

View File

@ -3,6 +3,8 @@ Do not review AI-specific issues (already covered by the ai_review movement).
**Review criteria:**
- Structural and design validity
- Modularization (high cohesion, low coupling, no circular dependencies)
- Functionalization (single responsibility per function, operation discoverability, consistent abstraction level)
- Code quality
- Appropriateness of change scope
- Test coverage
@ -10,6 +12,12 @@ Do not review AI-specific issues (already covered by the ai_review movement).
- Call chain verification
- Scattered hardcoding of contract strings (file names, config key names)
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
**Previous finding tracking (required):**
- First, extract open findings from "Previous Response"
- Assign `finding_id` to each finding and classify current status as `new / persists / resolved`

View File

@ -11,6 +11,12 @@ AI-specific issue review is not needed (already covered by the ai_review movemen
**Note**: If this project does not use the CQRS+ES pattern,
review from a general domain design perspective instead.
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
## Judgment Procedure
1. Review the change diff and detect issues based on the CQRS and Event Sourcing criteria above

View File

@ -11,6 +11,12 @@ Review the changes from a frontend development perspective.
**Note**: If this project does not include a frontend,
proceed as no issues found.
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
## Judgment Procedure
1. Review the change diff and detect issues based on the frontend development criteria above

View File

@ -7,6 +7,12 @@ Review the changes from a quality assurance perspective.
- Logging and monitoring
- Maintainability
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
**Previous finding tracking (required):**
- First, extract open findings from "Previous Response"
- Assign `finding_id` to each finding and classify current status as `new / persists / resolved`

View File

@ -6,6 +6,12 @@ Review the changes from a requirements fulfillment perspective.
- Whether changes outside the scope (scope creep) have crept in
- Whether there are any partial or missing implementations
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
**Previous finding tracking (required):**
- First, extract open findings from "Previous Response"
- Assign `finding_id` to each finding and classify current status as `new / persists / resolved`

View File

@ -4,6 +4,12 @@ Review the changes from a security perspective. Check for the following vulnerab
- Data exposure risks
- Cryptographic weaknesses
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
## Judgment Procedure
1. Review the change diff and detect issues based on the security criteria above

View File

@ -11,6 +11,12 @@ Do not review AI-specific issues (already covered by the ai_review movement).
- Cost trade-off documentation
- Unused variables / outputs / data sources
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
**Previous finding tracking (required):**
- First, extract open findings from "Previous Response"
- Assign `finding_id` to each finding and classify current status as `new / persists / resolved`

View File

@ -7,6 +7,12 @@ Review the changes from a test quality perspective.
- Completeness (unnecessary tests, missing cases)
- Appropriateness of mocks and fixtures
**Design decisions reference:**
Review {report:coder-decisions.md} to understand the recorded design decisions.
- Do not flag intentionally documented decisions as FP
- However, also evaluate whether the design decisions themselves are sound, and flag any problems
## Judgment Procedure
1. Cross-reference the test plan/test scope reports in the Report Directory with the implemented tests

View File

@ -1,9 +1,11 @@
Run tests, verify the build, and perform final approval.
**Overall piece verification:**
1. Whether the plan and implementation results are consistent
2. Whether findings from each review movement have been addressed
3. Whether each task spec requirement has been achieved
1. Check all reports in the report directory and verify overall piece consistency
- Does implementation match the plan?
- Were all review movement findings properly addressed?
- Was the original task objective achieved?
2. Whether each task spec requirement has been achieved
- Extract requirements one by one from the task spec
- For each requirement, identify the implementing code (file:line)
- Verify the code actually fulfills the requirement (read the file, run the test)

View File

@ -0,0 +1,29 @@
Analyze the implementation task and, if decomposition is appropriate, split into multiple parts for parallel execution.
**Important:** Reference the plan report: {report:plan.md}
**Steps:**
1. Assess whether decomposition is appropriate
- Identify files to change and check inter-file dependencies
- If cross-cutting concerns exist (shared types, IDs, events), implement in a single part
- If few files are involved, or the task is a rename/refactoring, implement in a single part
2. If decomposing: group files by layer/module
- Create groups based on high cohesion (e.g., Domain layer / Infrastructure layer / API layer)
- If there are type or interface dependencies, keep both sides in the same group
- Never assign the same file to multiple parts
- Keep test files and implementation files in the same part
3. Assign file ownership exclusively to each part
- Each part's instruction must clearly state:
- **Responsible files** (list of files to create/modify)
- **Reference-only files** (read-only, modification prohibited)
- **Implementation task** (what and how to implement)
- **Completion criteria** (implementation of responsible files is complete)
- If tests are already written, instruct parts to implement so existing tests pass
- Do not include build checks (all parts complete first, then build is verified together)
**Constraints:**
- Parts do not run tests (handled by subsequent movements)
- Do not modify files outside your responsibility (causes conflicts)

View File

@ -0,0 +1,151 @@
# TAKT Architecture Knowledge
## Core Structure
PieceEngine is a state machine. It manages movement transitions via EventEmitter.
```
CLI → PieceEngine → Runner (4 types) → RuleEvaluator → next movement
```
| Runner | Purpose | When to Use |
|--------|---------|-------------|
| MovementExecutor | Standard 3-phase execution | Default |
| ParallelRunner | Concurrent sub-movements | parallel block |
| ArpeggioRunner | Data-driven batch processing | arpeggio block |
| TeamLeaderRunner | Task decomposition → parallel sub-agents | team_leader block |
Runners are mutually exclusive. Do not specify multiple runner types on a single movement.
### 3-Phase Execution Model
Normal movements execute in up to 3 phases. Sessions persist across phases.
| Phase | Purpose | Tools | Condition |
|-------|---------|-------|-----------|
| Phase 1 | Main work | Movement's allowed_tools | Always |
| Phase 2 | Report output | Write only | When output_contracts defined |
| Phase 3 | Status judgment | None (judgment only) | When tag-based rules exist |
## Rule Evaluation
RuleEvaluator determines the next movement via 5-stage fallback. Earlier match takes priority.
| Priority | Method | Target |
|----------|--------|--------|
| 1 | aggregate | parallel parent (all/any) |
| 2 | Phase 3 tag | `[STEP:N]` output |
| 3 | Phase 1 tag | `[STEP:N]` output (fallback) |
| 4 | ai() judge | ai("condition") rules |
| 5 | AI fallback | AI evaluates all conditions |
When multiple tags appear in output, the **last match** wins.
### Condition Syntax
| Syntax | Parsing | Regex |
|--------|---------|-------|
| `ai("...")` | AI condition evaluation | `AI_CONDITION_REGEX` |
| `all("...")` / `any("...")` | Aggregate condition | `AGGREGATE_CONDITION_REGEX` |
| Plain string | Tag or AI fallback | — |
Adding new special syntax requires updating both pieceParser.ts regex and RuleEvaluator.
## Provider Integration
Abstracted through the Provider interface. SDK-specific details are encapsulated within each provider.
```
Provider.setup(AgentSetup) → ProviderAgent
ProviderAgent.call(prompt, options) → AgentResponse
```
| Criteria | Judgment |
|----------|----------|
| SDK-specific error handling leaking outside Provider | REJECT |
| Errors not propagated to AgentResponse.error | REJECT |
| Session key collision between providers | REJECT |
| Session key format `{persona}:{provider}` | OK |
### Model Resolution
Models resolve through 5-level priority. Higher takes precedence.
1. persona_providers model specification
2. Movement model field
3. CLI `--model` override
4. config.yaml (when resolved provider matches)
5. Provider default
## Facet Assembly
The faceted-prompting module is independent from TAKT core.
```
compose(facets, options) → ComposedPrompt { systemPrompt, userMessage }
```
| Criteria | Judgment |
|----------|----------|
| Import from faceted-prompting to TAKT core | REJECT |
| TAKT core depending on faceted-prompting | OK |
| Facet path resolution logic outside faceted-prompting | Warning |
### 3-Layer Facet Resolution Priority
Project `.takt/` → User `~/.takt/` → Builtin `builtins/{lang}/`
Same-named facets are overridden by higher-priority layers. Customize builtins by overriding in upper layers.
## Testing Patterns
Uses vitest. Test file naming conventions distinguish test types.
| Prefix | Type | Content |
|--------|------|---------|
| None | Unit test | Individual function/class verification |
| `it-` | Integration test | Piece execution simulation |
| `engine-` | Engine test | PieceEngine scenario verification |
### Mock Provider
`--provider mock` returns deterministic responses. Scenario queues compose multi-turn tests.
```typescript
// NG - Calling real API in tests
const response = await callClaude(prompt)
// OK - Set up scenario with mock provider
setMockScenario([
{ persona: 'coder', status: 'done', content: '[STEP:1]\nDone.' },
{ persona: 'reviewer', status: 'done', content: '[STEP:1]\napproved' },
])
```
### Test Isolation
| Criteria | Judgment |
|----------|----------|
| Tests sharing global state | REJECT |
| Environment variables not cleared in test setup | Warning |
| E2E tests assuming real API | Isolate via `provider` config |
## Error Propagation
Provider errors propagate through: `AgentResponse.error` → session log → console output.
| Criteria | Judgment |
|----------|----------|
| SDK error results in empty `blocked` status | REJECT |
| Error details not recorded in session log | REJECT |
| No ABORT transition defined for error cases | Warning |
## Session Management
Agent sessions are stored per-cwd. Session resume is skipped during worktree/clone execution.
| Criteria | Judgment |
|----------|----------|
| Session resuming when `cwd !== projectCwd` | REJECT (cross-project contamination) |
| Session key missing provider identifier | REJECT (cross-provider contamination) |
| Session broken between phases | REJECT (context loss) |

View File

@ -0,0 +1,66 @@
# Task Decomposition Knowledge
## Decomposition Feasibility
Before splitting a task into multiple parts, assess whether decomposition is appropriate. When decomposition is unsuitable, implementing in a single part is more efficient.
| Criteria | Judgment |
|----------|----------|
| Changed files clearly separate into layers | Decompose |
| Shared types/IDs span multiple parts | Single part |
| Broad rename/refactoring | Single part |
| Fewer than 5 files to change | Single part |
| Same file needs editing by multiple parts | Single part |
### Detecting Cross-Cutting Concerns
When any of the following apply, independent parts cannot maintain consistency. Consolidate into a single part.
- A new ID, key, or type is generated in one module and consumed in another
- Both the event emitter and event receiver need changes
- An existing interface signature changes, requiring updates to all call sites
## File Exclusivity Principle
When decomposing into multiple parts, each part's file ownership must be completely exclusive.
| Criteria | Judgment |
|----------|----------|
| Same file edited by multiple parts | REJECT (causes conflicts) |
| Type definition and consumer in different parts | Consolidate into the type definition part |
| Test file and implementation file in different parts | Consolidate into the same part |
### Grouping Priority
1. **By dependency direction** — keep dependency source and target in the same part
2. **By layer** — domain layer / infrastructure layer / API layer
3. **By feature** — independent functional units
## Failure Patterns
### Part Overlap
When two parts own the same file or feature, sub-agents overwrite each other's changes, causing repeated REJECT in reviews.
```
// NG: part-2 and part-3 own the same file
part-2: taskInstructionActions.ts — instruct confirmation dialog
part-3: taskInstructionActions.ts — requeue confirmation dialog
// OK: consolidate into one part
part-1: taskInstructionActions.ts — both instruct/requeue confirmation dialogs
```
### Shared Contract Mismatch
When part A generates an ID that part B consumes, both parts implement independently, leading to mismatches in ID name, type, or passing mechanism.
```
// NG: shared contract across independent parts
part-1: generates phaseExecutionId
part-2: consumes phaseExecutionId
→ part-1 uses string, part-2 expects number → integration error
// OK: single part for consistent implementation
part-1: implements phaseExecutionId from generation to consumption
```

View File

@ -15,22 +15,27 @@
| Scope | ✅ | - |
## Current Iteration Findings (new)
| # | finding_id | Category | Location | Issue | Fix Suggestion |
|---|------------|----------|----------|-------|----------------|
| 1 | AI-NEW-src-file-L23 | Hallucinated API | `src/file.ts:23` | Non-existent method | Replace with existing API |
| # | finding_id | family_tag | Category | Location | Issue | Fix Suggestion |
|---|------------|------------|----------|----------|-------|----------------|
| 1 | AI-NEW-src-file-L23 | hallucination | Hallucinated API | `src/file.ts:23` | Non-existent method | Replace with existing API |
## Carry-over Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|----------------|
| 1 | AI-PERSIST-src-file-L42 | `src/file.ts:42` | `src/file.ts:42` | Still unresolved | Apply prior fix plan |
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | AI-PERSIST-src-file-L42 | hallucination | `src/file.ts:42` | `src/file.ts:42` | Still unresolved | Apply prior fix plan |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| AI-RESOLVED-src-file-L10 | `src/file.ts:10` no longer contains the issue |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | AI-REOPENED-src-file-L55 | hallucination | `Previously fixed at src/file.ts:10` | `Recurred at src/file.ts:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new` or `persists`
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```

View File

@ -15,24 +15,29 @@
- [x] Call chain verification
## Current Iteration Findings (new)
| # | finding_id | Scope | Location | Issue | Fix Suggestion |
|---|------------|-------|----------|-------|----------------|
| 1 | ARCH-NEW-src-file-L42 | In-scope | `src/file.ts:42` | Issue description | Fix approach |
| # | finding_id | family_tag | Scope | Location | Issue | Fix Suggestion |
|---|------------|------------|-------|----------|-------|----------------|
| 1 | ARCH-NEW-src-file-L42 | design-violation | In-scope | `src/file.ts:42` | Issue description | Fix approach |
Scope: "In-scope" (fixable in this change) / "Out-of-scope" (existing issue, non-blocking)
## Carry-over Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|----------------|
| 1 | ARCH-PERSIST-src-file-L77 | `src/file.ts:77` | `src/file.ts:77` | Still unresolved | Apply prior fix plan |
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | ARCH-PERSIST-src-file-L77 | design-violation | `src/file.ts:77` | `src/file.ts:77` | Still unresolved | Apply prior fix plan |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| ARCH-RESOLVED-src-file-L10 | `src/file.ts:10` now satisfies the rule |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | ARCH-REOPENED-src-file-L55 | design-violation | `Previously fixed at src/file.ts:10` | `Recurred at src/file.ts:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new` or `persists`
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```

View File

@ -15,13 +15,33 @@
| Projections | ✅ | - |
| Eventual consistency | ✅ | - |
## Issues (if REJECT)
| # | Scope | Location | Issue | Fix Suggestion |
|---|-------|----------|-------|----------------|
| 1 | In-scope | `src/file.ts:42` | Issue description | Fix approach |
## Current Iteration Findings (new)
| # | finding_id | family_tag | Scope | Location | Issue | Fix Suggestion |
|---|------------|------------|-------|----------|-------|----------------|
| 1 | CQRS-NEW-src-file-L42 | cqrs-violation | In-scope | `src/file.ts:42` | Issue description | Fix approach |
Scope: "In-scope" (fixable in this change) / "Out-of-scope" (existing issue, non-blocking)
## Existing Issues (reference, non-blocking)
- {Record of existing issues unrelated to the current change}
## Carry-over Findings (persists)
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | CQRS-PERSIST-src-file-L77 | cqrs-violation | `src/file.ts:77` | `src/file.ts:77` | Still unresolved | Apply prior fix plan |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| CQRS-RESOLVED-src-file-L10 | `src/file.ts:10` now satisfies the rule |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | CQRS-REOPENED-src-file-L55 | cqrs-violation | `Previously fixed at src/file.ts:10` | `Recurred at src/file.ts:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```
**Cognitive load reduction rules:**
- APPROVE → Summary only (5 lines or fewer)
- REJECT → Include only relevant finding rows (30 lines or fewer)

View File

@ -15,8 +15,31 @@
| Accessibility | ✅ | - |
| Type safety | ✅ | - |
## Issues (if REJECT)
| # | Location | Issue | Fix Suggestion |
|---|----------|-------|----------------|
| 1 | `src/file.tsx:42` | Issue description | Fix approach |
## Current Iteration Findings (new)
| # | finding_id | family_tag | Location | Issue | Fix Suggestion |
|---|------------|------------|----------|-------|----------------|
| 1 | FE-NEW-src-file-L42 | component-design | `src/file.tsx:42` | Issue description | Fix approach |
## Carry-over Findings (persists)
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | FE-PERSIST-src-file-L77 | component-design | `src/file.tsx:77` | `src/file.tsx:77` | Still unresolved | Apply prior fix plan |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| FE-RESOLVED-src-file-L10 | `src/file.tsx:10` now satisfies the rule |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | FE-REOPENED-src-file-L55 | component-design | `Previously fixed at src/file.tsx:10` | `Recurred at src/file.tsx:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```
**Cognitive load reduction rules:**
- APPROVE → Summary only (5 lines or fewer)
- REJECT → Include only relevant finding rows (30 lines or fewer)

View File

@ -16,21 +16,26 @@
| Maintainability | ✅ | - |
## Current Iteration Findings (new)
| # | finding_id | Category | Location | Issue | Fix Suggestion |
|---|------------|----------|----------|-------|----------------|
| 1 | QA-NEW-src-test-L42 | Testing | `src/test.ts:42` | Missing negative test | Add failure-path test |
| # | finding_id | family_tag | Category | Location | Issue | Fix Suggestion |
|---|------------|------------|----------|----------|-------|----------------|
| 1 | QA-NEW-src-test-L42 | test-coverage | Testing | `src/test.ts:42` | Missing negative test | Add failure-path test |
## Carry-over Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|----------------|
| 1 | QA-PERSIST-src-test-L77 | `src/test.ts:77` | `src/test.ts:77` | Still flaky | Stabilize assertion & setup |
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | QA-PERSIST-src-test-L77 | test-coverage | `src/test.ts:77` | `src/test.ts:77` | Still flaky | Stabilize assertion & setup |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| QA-RESOLVED-src-test-L10 | `src/test.ts:10` now covers error path |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | QA-REOPENED-src-test-L55 | test-coverage | `Previously fixed at src/test.ts:10` | `Recurred at src/test.ts:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new` or `persists`
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```

View File

@ -20,22 +20,27 @@
| 1 | {change not in requirements} | `src/file.ts` | Justified/Unnecessary |
## Current Iteration Findings (new)
| # | finding_id | Category | Location | Issue | Fix Suggestion |
|---|------------|----------|----------|-------|----------------|
| 1 | REQ-NEW-src-file-L42 | Unimplemented | `src/file.ts:42` | Issue description | Fix suggestion |
| # | finding_id | family_tag | Category | Location | Issue | Fix Suggestion |
|---|------------|------------|----------|----------|-------|----------------|
| 1 | REQ-NEW-src-file-L42 | req-gap | Unimplemented | `src/file.ts:42` | Issue description | Fix suggestion |
## Carry-over Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|----------------|
| 1 | REQ-PERSIST-src-file-L77 | `file:line` | `file:line` | Unresolved | Fix suggestion |
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | REQ-PERSIST-src-file-L77 | req-gap | `file:line` | `file:line` | Unresolved | Fix suggestion |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| REQ-RESOLVED-src-file-L10 | `file:line` now satisfies the requirement |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | REQ-REOPENED-src-file-L55 | req-gap | `Previously fixed at file:line` | `Recurred at file:line` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new` or `persists`
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```

View File

@ -14,25 +14,30 @@
| Dependencies | ✅ | - |
## Current Iteration Findings (new)
| # | finding_id | Severity | Type | Location | Issue | Fix Suggestion |
|---|------------|----------|------|----------|-------|----------------|
| 1 | SEC-NEW-src-db-L42 | High | SQLi | `src/db.ts:42` | Raw query string | Use parameterized queries |
| # | finding_id | family_tag | Severity | Type | Location | Issue | Fix Suggestion |
|---|------------|------------|----------|------|----------|-------|----------------|
| 1 | SEC-NEW-src-db-L42 | injection-risk | High | SQLi | `src/db.ts:42` | Raw query string | Use parameterized queries |
## Carry-over Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|----------------|
| 1 | SEC-PERSIST-src-auth-L18 | `src/auth.ts:18` | `src/auth.ts:18` | Weak validation persists | Harden validation |
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | SEC-PERSIST-src-auth-L18 | injection-risk | `src/auth.ts:18` | `src/auth.ts:18` | Weak validation persists | Harden validation |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| SEC-RESOLVED-src-db-L10 | `src/db.ts:10` now uses bound parameters |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | SEC-REOPENED-src-auth-L55 | injection-risk | `Previously fixed at src/auth.ts:20` | `Recurred at src/auth.ts:55` | Issue description | Fix approach |
## Warnings (non-blocking)
- {Security recommendations}
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new` or `persists`
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```

View File

@ -4,39 +4,44 @@
## Result: APPROVE / REJECT
## Summary
{1-2 sentences summarizing the result}
{Summarize the result in 1-2 sentences}
## Reviewed Aspects
- [x] Variable declarations (type, description, sensitive)
- [x] Resource naming (name_prefix pattern)
- [x] File organization (one file per concern)
- [x] Security configurations
- [x] File structure (one concern per file)
- [x] Security settings
- [x] Tag management
- [x] Lifecycle rules
- [x] lifecycle rules
- [x] Cost trade-off documentation
## New Findings (new)
| # | finding_id | Scope | Location | Issue | Fix Suggestion |
|---|------------|-------|----------|-------|---------------|
| 1 | TF-NEW-file-L42 | In scope | `modules/example/main.tf:42` | Issue description | How to fix |
## Current Iteration Findings (new)
| # | finding_id | family_tag | Scope | Location | Issue | Fix Suggestion |
|---|------------|------------|-------|----------|-------|----------------|
| 1 | TF-NEW-file-L42 | tf-convention | In-scope | `modules/example/main.tf:42` | Issue description | Fix approach |
Scope: "In scope" (fixable now) / "Out of scope" (existing issue, non-blocking)
Scope: "In-scope" (fixable in this change) / "Out-of-scope" (existing issue, non-blocking)
## Persisting Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|---------------|
| 1 | TF-PERSIST-file-L77 | `file.tf:77` | `file.tf:77` | Unresolved | Apply existing fix plan |
## Carry-over Findings (persists)
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | TF-PERSIST-file-L77 | tf-convention | `file.tf:77` | `file.tf:77` | Still unresolved | Apply prior fix plan |
## Resolved
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|-------------------|
| TF-RESOLVED-file-L10 | `file.tf:10` meets conventions |
|------------|---------------------|
| TF-RESOLVED-file-L10 | `file.tf:10` now satisfies the convention |
## REJECT Criteria
- REJECT only if 1+ `new` or `persists` findings exist
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | TF-REOPENED-file-L55 | tf-convention | `Previously fixed at file.tf:10` | `Recurred at file.tf:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```
**Cognitive load reduction rules:**
- APPROVE → Summary only (5 lines or less)
- REJECT → Only relevant findings in table (30 lines or less)
- APPROVE → Summary only (5 lines or fewer)
- REJECT → Include only relevant finding rows (30 lines or fewer)

View File

@ -17,22 +17,27 @@
| Test strategy (unit/integration/E2E) | ✅ | - |
## Current Iteration Findings (new)
| # | finding_id | Category | Location | Issue | Fix Suggestion |
|---|------------|----------|----------|-------|----------------|
| 1 | TEST-NEW-src-test-L42 | Coverage | `src/test.ts:42` | Issue description | Fix suggestion |
| # | finding_id | family_tag | Category | Location | Issue | Fix Suggestion |
|---|------------|------------|----------|----------|-------|----------------|
| 1 | TEST-NEW-src-test-L42 | test-structure | Coverage | `src/test.ts:42` | Issue description | Fix suggestion |
## Carry-over Findings (persists)
| # | finding_id | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|-------------------|------------------|-------|----------------|
| 1 | TEST-PERSIST-src-test-L77 | `src/test.ts:77` | `src/test.ts:77` | Unresolved | Fix suggestion |
| # | finding_id | family_tag | Previous Evidence | Current Evidence | Issue | Fix Suggestion |
|---|------------|------------|-------------------|------------------|-------|----------------|
| 1 | TEST-PERSIST-src-test-L77 | test-structure | `src/test.ts:77` | `src/test.ts:77` | Unresolved | Fix suggestion |
## Resolved Findings (resolved)
| finding_id | Resolution Evidence |
|------------|---------------------|
| TEST-RESOLVED-src-test-L10 | `src/test.ts:10` now has sufficient coverage |
## Reopened Findings (reopened)
| # | finding_id | family_tag | Prior Resolution Evidence | Recurrence Evidence | Issue | Fix Suggestion |
|---|------------|------------|--------------------------|---------------------|-------|----------------|
| 1 | TEST-REOPENED-src-test-L55 | test-structure | `Previously fixed at src/test.ts:10` | `Recurred at src/test.ts:55` | Issue description | Fix approach |
## Rejection Gate
- REJECT is valid only when at least one finding exists in `new` or `persists`
- REJECT is valid only when at least one finding exists in `new`, `persists`, or `reopened`
- Findings without `finding_id` are invalid
```

View File

@ -81,15 +81,7 @@ You are the **human proxy** in the automated piece. Before approval, verify the
| Production ready | No mock/stub/TODO remaining? |
| Operation | Actually works as expected? |
### 6. Backward Compatibility Code Detection
**Backward compatibility code is unnecessary unless explicitly instructed.** REJECT if found:
- Unused re-exports, `_var` renames, `// removed` comments
- Fallbacks, old API maintenance, migration code
- Legacy support kept "just in case"
### 7. Spec Compliance Final Check
### 6. Spec Compliance Final Check
**Final verification that changes comply with the project's documented specifications.**
@ -115,66 +107,6 @@ Additions can be reverted, but restoring deleted flows is difficult.
- A "UI fix" task includes structural changes to backend domain models
- A "display change" task rewrites business logic flows
### 8. Piece Overall Review
**Check all reports in the report directory and verify overall piece consistency.**
Check:
- Does implementation match the plan (00-plan.md)?
- Were all review step issues properly addressed?
- Was the original task objective achieved?
**Piece-wide issues:**
| Issue | Action |
|-------|--------|
| Plan-implementation gap | REJECT - Request plan revision or implementation fix |
| Unaddressed review feedback | REJECT - Point out specific unaddressed items |
| Deviation from original purpose | REJECT - Request return to objective |
| Scope creep | REJECT - Deletions outside task order must be reverted |
### 9. Improvement Suggestion Check
**Check review reports for unaddressed improvement suggestions.**
Check:
- "Improvement Suggestions" section in Architect report
- Warnings and suggestions in AI Reviewer report
- Recommendations in Security report
**If there are unaddressed improvement suggestions:**
- Judge if the improvement should be addressed in this task
- If it should be addressed, **REJECT** and request fix
- If it should be addressed in next task, record as "technical debt" in report
**Judgment criteria:**
| Type of suggestion | Decision |
|--------------------|----------|
| Minor fix in same file | Address now (REJECT) |
| Fixable in seconds to minutes | Address now (REJECT) |
| Redundant code / unnecessary expression removal | Address now (REJECT) |
| Affects other features | Address in next task (record only) |
| External impact (API changes, etc.) | Address in next task (record only) |
| Requires significant refactoring (large scope) | Address in next task (record only) |
### Boy Scout Rule
**"Functionally harmless" is not a free pass.** Classifying a near-zero-cost fix as "non-blocking" or "next task" is a compromise. There is no guarantee it will be addressed in a future task, and it accumulates as technical debt.
**Principle:** If a reviewer found it and it can be fixed in minutes, make the coder fix it now. Do not settle for recording it as a "non-blocking improvement suggestion."
## Workaround Detection
**REJECT** if any of the following remain:
| Pattern | Example |
|---------|---------|
| TODO/FIXME | `// TODO: implement later` |
| Commented out | Code that should be deleted remains |
| Hardcoded | Values that should be config are hardcoded |
| Mock data | Dummy data unusable in production |
| console.log | Forgotten debug output |
| Skipped tests | `@Disabled`, `.skip()` |
## Important
- **Actually run**: Don't just look at files, execute and verify

View File

@ -47,6 +47,34 @@ AI often repeats the same patterns, including mistakes.
| Inconsistent implementation | Same logic implemented differently across files |
| Boilerplate explosion | Unnecessary repetition that could be abstracted |
## Redundant Conditional Branch Detection
AI tends to generate if/else blocks that call the same function with only argument differences.
| Pattern | Example | Verdict |
|---------|---------|---------|
| Branch differs only in argument presence | `if (x) f(a, b, c) else f(a, b)` | REJECT |
| Branch differs only in options | `if (x) f(a, {opt: x}) else f(a)` | REJECT |
| Redundant else without using return value | `if (x) { f(a, x); return; } f(a);` | REJECT |
```typescript
// REJECT - both branches call the same function, differing only in the 3rd argument
if (options.format !== undefined) {
await processFile(input, output, { format: options.format });
} else {
await processFile(input, output);
}
// OK - extract the conditional into a variable, then make a single call
const formatOpt = options.format !== undefined ? { format: options.format } : undefined;
await processFile(input, output, formatOpt);
```
Verification approach:
1. Find if/else blocks calling the same function
2. If the only difference is optional argument presence, unify with ternary or spread syntax
3. If branches have different preprocessing, store results in a variable and make a single call
## Context Fitness Assessment
Does the code fit this specific project?
@ -102,18 +130,18 @@ Logical dead code detection:
AI tends to add "just in case" defensive code, but when considering caller constraints, it may be unreachable. Code that is syntactically reachable but logically unreachable due to call chain preconditions should be removed.
```typescript
// REJECT - callers are only from interactive menus that require TTY
// This function is never called from non-TTY environments
function showFullDiff(cwd: string, branch: string): void {
const usePager = process.stdin.isTTY === true;
// usePager is always true (callers assume TTY)
const pager = usePager ? 'less -R' : 'cat'; // else branch is unreachable
// REJECT - callers always require interactive input
// This function is never called from non-interactive environments
function displayResult(data: ResultData): void {
const isInteractive = process.stdin.isTTY === true;
// isInteractive is always true (callers assume TTY)
const output = isInteractive ? formatRich(data) : formatPlain(data); // else branch is unreachable
}
// OK - understands caller constraints and removes unnecessary branching
function showFullDiff(cwd: string, branch: string): void {
function displayResult(data: ResultData): void {
// Only called from interactive menus, so TTY is always present
spawnSync('git', ['diff', ...], { env: { GIT_PAGER: 'less -R' } });
console.log(formatRich(data));
}
```

View File

@ -321,3 +321,6 @@ function formatPercentage(value: number): string { ... }
- **Replaced code surviving after refactoring** - Remove replaced code and exports. Do not keep unless explicitly told to
- **Workarounds that bypass safety mechanisms** - If the root fix is correct, no additional bypass is needed
- **Direct tool execution bypassing project scripts** - `npx tool` and similar bypass the lockfile, causing version mismatches. Look for project-defined scripts (npm scripts, Makefile, etc.) first. Only consider direct execution when no script exists
- **Missing wiring** - When adding new parameters or fields, grep the entire call chain to verify. If callers do not pass the value, `options.xxx ?? fallback` always uses the fallback
- **Redundant conditionals** - When if/else calls the same function with only argument differences, unify using ternary operators or spread syntax
- **Copy-paste patterns** - Before writing new code, grep for existing implementations of the same kind and follow the existing pattern. Do not introduce your own style

View File

@ -1,20 +1,17 @@
piece_categories:
🚀 Quick Start:
pieces:
- default-mini
- default
- frontend-mini
- backend-mini
- default
- compound-eye
⚡ Mini:
pieces:
- default-mini
- default-test-first-mini
- frontend-mini
- backend-mini
- backend-cqrs-mini
- expert-mini
- expert-cqrs-mini
- dual-mini
- dual-cqrs-mini
🎨 Frontend:
pieces:
- frontend
@ -25,31 +22,42 @@ piece_categories:
- backend-mini
- backend-cqrs
- backend-cqrs-mini
🔧 Expert:
🔧 Dual:
pieces:
- expert
- expert-mini
- expert-cqrs
- expert-cqrs-mini
- dual
- dual-mini
- dual-cqrs
- dual-cqrs-mini
🏗️ Infrastructure:
pieces:
- terraform
🛠️ Refactoring:
pieces:
- structural-reform
🔍 Review:
pieces:
- review
- review-fix
- frontend-review
- frontend-review-fix
- backend-review
- backend-review-fix
- dual-review
- dual-review-fix
- dual-cqrs-review
- dual-cqrs-review-fix
- backend-cqrs-review
- backend-cqrs-review-fix
🧪 Testing:
pieces:
- unit-test
- e2e-test
✅ Test First:
🎵 TAKT Development:
pieces:
- default-test-first-mini
- takt-default
- takt-default-team-leader
- takt-default-review-fix
Others:
pieces:
- research
- deep-research
- magi
show_others_category: true
others_category_name: Others

View File

@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 20
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix_both
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: fix_both
- condition: unproductive (same findings repeating)
next: supervise_fix
movements:
- name: plan
edit: false
@ -17,13 +30,15 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: implement
@ -47,15 +62,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
@ -81,12 +98,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
@ -104,13 +123,15 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
@ -144,14 +165,16 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
@ -169,14 +192,16 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
@ -198,15 +223,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -228,15 +255,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:

View File

@ -0,0 +1,236 @@
name: backend-cqrs-review-fix
description: CQRS+ES focused review + fix loop (structure, modularization, domain model, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: cqrs-es-review
edit: false
persona: cqrs-es-reviewer
policy: review
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-cqrs-es
output_contracts:
report:
- name: cqrs-es-review.md
format: cqrs-es-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fixes complete
next: reviewers
- condition: Unable to proceed with fixes
next: supervise
- name: supervise
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All validations complete, ready to merge
next: COMPLETE
- condition: Issues detected
next: fix_supervisor
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
- name: fix_supervisor
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:
- condition: Fixes for supervisor findings complete
next: supervise
- condition: Unable to proceed with fixes
next: supervise

View File

@ -0,0 +1,160 @@
name: backend-cqrs-review
description: CQRS+ES focused review (structure, modularization, domain model, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 10
initial_movement: gather
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: cqrs-es-review
edit: false
persona: cqrs-es-reviewer
policy: review
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-cqrs-es
output_contracts:
report:
- name: cqrs-es-review.md
format: cqrs-es-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: supervise
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
pass_previous_response: false
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: Review integration complete
next: COMPLETE

View File

@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 30
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: reviewers
- condition: unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
@ -16,13 +29,15 @@ movements:
- backend
- cqrs-es
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: plan
rules:
- condition: Task analysis and planning is complete
@ -45,15 +60,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: implement
rules:
- condition: Implementation is complete
@ -78,12 +95,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: ai-review
rules:
- condition: No AI-specific issues found
@ -106,15 +125,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: ai-fix
pass_previous_response: false
rules:
@ -128,10 +149,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -147,12 +170,14 @@ movements:
knowledge:
- cqrs-es
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -166,12 +191,14 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -186,12 +213,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -216,15 +245,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -235,14 +266,16 @@ movements:
instruction: fix
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
@ -268,15 +301,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:

View File

@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 20
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix_both
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: fix_both
- condition: unproductive (same findings repeating)
next: supervise_fix
movements:
- name: plan
edit: false
@ -16,13 +29,15 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: implement
@ -45,15 +60,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
@ -79,12 +96,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
@ -101,13 +120,15 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
@ -140,14 +161,16 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
@ -164,14 +187,16 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
@ -192,15 +217,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -221,15 +248,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:

View File

@ -0,0 +1,210 @@
name: backend-review-fix
description: Backend-focused review + fix loop (structure, modularization, hexagonal architecture, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fixes complete
next: reviewers
- condition: Unable to proceed with fixes
next: supervise
- name: supervise
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All validations complete, ready to merge
next: COMPLETE
- condition: Issues detected
next: fix_supervisor
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
- name: fix_supervisor
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:
- condition: Fixes for supervisor findings complete
next: supervise
- condition: Unable to proceed with fixes
next: supervise

View File

@ -0,0 +1,136 @@
name: backend-review
description: Backend-focused review (structure, modularization, hexagonal architecture, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 10
initial_movement: gather
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: supervise
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
pass_previous_response: false
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: Review integration complete
next: COMPLETE

View File

@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 30
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: reviewers
- condition: unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
@ -15,13 +28,15 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: plan
rules:
- condition: Task analysis and planning is complete
@ -43,15 +58,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: implement
rules:
- condition: Implementation is complete
@ -76,12 +93,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: ai-review
rules:
- condition: No AI-specific issues found
@ -103,15 +122,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: ai-fix
pass_previous_response: false
rules:
@ -125,10 +146,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -144,12 +167,14 @@ movements:
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -163,12 +188,14 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -183,12 +210,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -212,15 +241,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -231,14 +262,16 @@ movements:
instruction: fix
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
@ -263,15 +296,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:

View File

@ -17,13 +17,15 @@ movements:
provider: claude
session: refresh
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: done
- condition: failed
@ -56,13 +58,15 @@ movements:
provider: codex
session: refresh
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: done
- condition: failed
@ -95,10 +99,12 @@ movements:
- name: synthesize
edit: false
persona: supervisor
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: synthesis complete
next: COMPLETE

View File

@ -14,12 +14,14 @@ movements:
policy: research
knowledge: research
instruction: research-plan
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: Planning is complete
next: dig
@ -43,14 +45,16 @@ movements:
- Grep
- WebSearch
- WebFetch
allowed_tools:
- Read
- Write
- Bash
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Write
- Bash
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: Research is complete
next: analyze
@ -62,13 +66,15 @@ movements:
knowledge: research
instruction: research-analyze
edit: true
allowed_tools:
- Read
- Write
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Write
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: New questions exist and additional research is needed
next: dig
@ -79,12 +85,14 @@ movements:
policy: research
knowledge: research
instruction: research-supervise
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
output_contracts:
report:
- name: research-report.md

View File

@ -1,219 +0,0 @@
name: default-mini
description: Mini development piece (plan -> implement -> parallel review -> fix if needed -> complete)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 20
initial_movement: plan
movements:
- name: plan
edit: false
persona: planner
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: implement
- condition: User is asking a question (not an implementation task)
next: COMPLETE
- condition: Requirements are unclear, insufficient information
next: ABORT
instruction: plan
output_contracts:
report:
- name: plan.md
format: plan
- name: implement
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
- condition: Implementation complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: ABORT
- condition: User input required because there are items to confirm with the user
next: implement
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: coder-scope.md
format: coder-scope
- name: coder-decisions.md
format: coder-decisions
- name: reviewers
parallel:
- name: ai_review
edit: false
persona: ai-antipattern-reviewer
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
- condition: AI-specific issues found
output_contracts:
report:
- name: ai-review.md
format: ai-review
- name: supervise
edit: false
persona: supervisor
policy: review
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
- condition: Requirements unmet, tests failing
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: all("No AI-specific issues", "All checks passed")
next: COMPLETE
- condition: all("AI-specific issues found", "Requirements unmet, tests failing")
next: fix_both
- condition: any("AI-specific issues found")
next: ai_fix
- condition: any("Requirements unmet, tests failing")
next: supervise_fix
- name: fix_both
parallel:
- name: ai_fix_parallel
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
- condition: No fix needed (verified target files/spec)
- condition: Cannot proceed, insufficient info
instruction: ai-fix
- name: supervise_fix_parallel
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
- condition: Cannot proceed, insufficient info
instruction: fix-supervisor
rules:
- condition: all("AI Reviewer's issues fixed", "Supervisor's issues fixed")
next: reviewers
- condition: any("No fix needed (verified target files/spec)", "Cannot proceed, insufficient info")
next: implement
- name: ai_fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: AI Reviewer's issues fixed
next: reviewers
- condition: No fix needed (verified target files/spec)
next: implement
- condition: Cannot proceed, insufficient info
next: implement
instruction: ai-fix
- name: supervise_fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: Supervisor's issues fixed
next: reviewers
- condition: Cannot proceed, insufficient info
next: implement
instruction: fix-supervisor

View File

@ -1,254 +0,0 @@
name: default-test-first-mini
description: Test-first development piece (plan -> write tests -> implement -> parallel review -> fix if needed -> complete)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 25
initial_movement: plan
movements:
- name: plan
edit: false
persona: planner
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: write_tests
- condition: User is asking a question (not an implementation task)
next: COMPLETE
- condition: Requirements are unclear, insufficient information
next: ABORT
instruction: plan
output_contracts:
report:
- name: plan.md
format: plan
- name: write_tests
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: write-tests-first
rules:
- condition: Tests written successfully
next: implement
- condition: Cannot proceed because the test target is not implemented yet, so skip test writing
next: implement
- condition: Cannot proceed with test creation
next: ABORT
- condition: User input required because there are items to confirm with the user
next: write_tests
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: test-scope.md
format: coder-scope
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement-after-tests
rules:
- condition: Implementation complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: ABORT
- condition: User input required because there are items to confirm with the user
next: implement
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: coder-scope.md
format: coder-scope
- name: coder-decisions.md
format: coder-decisions
- name: reviewers
parallel:
- name: ai_review
edit: false
persona: ai-antipattern-reviewer
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
- condition: AI-specific issues found
output_contracts:
report:
- name: ai-review.md
format: ai-review
- name: supervise
edit: false
persona: supervisor
policy: review
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
- condition: Requirements unmet, tests failing
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: all("No AI-specific issues", "All checks passed")
next: COMPLETE
- condition: all("AI-specific issues found", "Requirements unmet, tests failing")
next: fix_both
- condition: any("AI-specific issues found")
next: ai_fix
- condition: any("Requirements unmet, tests failing")
next: supervise_fix
- name: fix_both
parallel:
- name: ai_fix_parallel
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
- condition: No fix needed (verified target files/spec)
- condition: Cannot proceed, insufficient info
instruction: ai-fix
- name: supervise_fix_parallel
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
- condition: Cannot proceed, insufficient info
instruction: fix-supervisor
rules:
- condition: all("AI Reviewer's issues fixed", "Supervisor's issues fixed")
next: reviewers
- condition: any("No fix needed (verified target files/spec)", "Cannot proceed, insufficient info")
next: implement
- name: ai_fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: AI Reviewer's issues fixed
next: reviewers
- condition: No fix needed (verified target files/spec)
next: implement
- condition: Cannot proceed, insufficient info
next: implement
instruction: ai-fix
- name: supervise_fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: Supervisor's issues fixed
next: reviewers
- condition: Cannot proceed, insufficient info
next: implement
instruction: fix-supervisor

View File

@ -1,5 +1,5 @@
name: default
description: Test-first development piece (plan → write tests → implement → AI review → 3-parallel review → fix → supervise → complete)
description: Test-first development piece (plan → write tests → implement → AI antipattern review → parallel review → complete)
piece_config:
provider_options:
codex:
@ -33,18 +33,32 @@ loop_monitors:
next: ai_review
- condition: Unproductive (no improvement)
next: reviewers
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: reviewers
- condition: unproductive (same findings repeating)
next: ABORT
movements:
- name: plan
edit: false
persona: planner
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementable
next: write_tests
@ -68,17 +82,18 @@ movements:
- coding
- testing
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: write-tests-first
rules:
@ -106,18 +121,20 @@ movements:
- testing
session: refresh
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement-after-tests
rules:
- condition: Implementation complete
next: ai_review
@ -129,7 +146,6 @@ movements:
next: implement
requires_user_input: true
interactive_only: true
instruction: implement-after-tests
output_contracts:
report:
- name: coder-scope.md
@ -142,18 +158,20 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: ai-review
rules:
- condition: No AI-specific issues
next: reviewers
- condition: AI-specific issues found
next: ai_fix
instruction: ai-review
output_contracts:
report:
- name: ai-review.md
@ -166,56 +184,43 @@ movements:
- testing
session: refresh
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: ai-fix
pass_previous_response: false
rules:
- condition: AI issues fixed
next: ai_review
- condition: No fix needed (verified target files/spec)
next: ai_no_fix
- condition: Cannot proceed, insufficient info
next: ai_no_fix
instruction: ai-fix
- name: ai_no_fix
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
- condition: ai_fix's judgment is valid (no fix needed)
next: reviewers
instruction: arbitrate
- condition: Cannot proceed with fixes
next: reviewers
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -224,50 +229,34 @@ movements:
report:
- name: architect-review.md
format: architecture-review
- name: qa-review
- name: supervise
edit: false
persona: qa-reviewer
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: approved
- condition: needs_fix
instruction: review-qa
- condition: All checks passed
- condition: Requirements unmet, tests failing, build errors
output_contracts:
report:
- name: qa-review.md
format: qa-review
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
- condition: all("approved", "All checks passed")
next: COMPLETE
- condition: any("needs_fix", "Requirements unmet, tests failing, build errors")
next: fix
- name: fix
edit: true
@ -276,47 +265,23 @@ movements:
- coding
- testing
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: fix
pass_previous_response: false
rules:
- condition: Fix complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: plan
instruction: fix
- name: supervise
edit: false
persona: supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
pass_previous_response: false
rules:
- condition: All checks passed
next: COMPLETE
- condition: Requirements unmet, tests failing, build errors
next: plan
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false

View File

@ -1,5 +1,5 @@
name: expert-cqrs-mini
description: CQRS+ES Expert-focused mini development piece (plan -> implement -> parallel review -> fix if needed -> complete)
name: dual-cqrs-mini
description: CQRS+ES frontend + backend mini development piece (plan -> implement -> parallel review -> fix if needed -> complete) with CQRS+ES knowledge injection
piece_config:
provider_options:
codex:
@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 20
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix_both
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: fix_both
- condition: unproductive (same findings repeating)
next: supervise_fix
movements:
- name: plan
edit: false
@ -18,13 +31,15 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: implement
@ -49,15 +64,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
@ -83,12 +100,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
@ -99,7 +118,7 @@ movements:
format: ai-review
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
knowledge:
- frontend
@ -107,13 +126,15 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
@ -148,14 +169,16 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
@ -174,14 +197,16 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
@ -204,15 +229,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -235,15 +262,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:

View File

@ -0,0 +1,261 @@
name: dual-cqrs-review-fix
description: Frontend + CQRS+ES focused review + fix loop (structure, modularization, domain model, component design, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: cqrs-es-review
edit: false
persona: cqrs-es-reviewer
policy: review
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-cqrs-es
output_contracts:
report:
- name: cqrs-es-review.md
format: cqrs-es-review
rules:
- condition: approved
- condition: needs_fix
- name: frontend-review
edit: false
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-frontend
output_contracts:
report:
- name: frontend-review.md
format: frontend-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- frontend
- backend
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fixes complete
next: reviewers
- condition: Unable to proceed with fixes
next: supervise
- name: supervise
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All validations complete, ready to merge
next: COMPLETE
- condition: Issues detected
next: fix_supervisor
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
- name: fix_supervisor
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- frontend
- backend
- cqrs-es
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:
- condition: Fixes for supervisor findings complete
next: supervise
- condition: Unable to proceed with fixes
next: supervise

View File

@ -0,0 +1,183 @@
name: dual-cqrs-review
description: Frontend + CQRS+ES focused review (structure, modularization, domain model, component design, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 10
initial_movement: gather
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: cqrs-es-review
edit: false
persona: cqrs-es-reviewer
policy: review
knowledge:
- cqrs-es
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-cqrs-es
output_contracts:
report:
- name: cqrs-es-review.md
format: cqrs-es-review
rules:
- condition: approved
- condition: needs_fix
- name: frontend-review
edit: false
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-frontend
output_contracts:
report:
- name: frontend-review.md
format: frontend-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: supervise
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
pass_previous_response: false
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: Review integration complete
next: COMPLETE

View File

@ -1,5 +1,5 @@
name: expert-cqrs
description: CQRS+ES, Frontend, Security, QA Expert Review
name: dual-cqrs
description: Frontend + backend development piece (CQRS+ES specialized) with CQRS+ES, frontend, security, and QA reviews with fix loops
piece_config:
provider_options:
codex:
@ -21,6 +21,18 @@ loop_monitors:
next: ai_review
- condition: Unproductive (same findings repeated or fixes not reflected)
next: ai_no_fix
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (findings decreasing, fixes applied)
next: reviewers
- condition: Unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
@ -30,13 +42,15 @@ movements:
- backend
- cqrs-es
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: plan
rules:
- condition: Task analysis and planning is complete
@ -60,15 +74,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: implement
rules:
- condition: Implementation is complete
@ -93,12 +109,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: ai-review
rules:
- condition: No AI-specific issues found
@ -122,15 +140,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: ai-fix
pass_previous_response: false
rules:
@ -144,10 +164,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -163,12 +185,14 @@ movements:
knowledge:
- cqrs-es
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -182,12 +206,14 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -201,12 +227,14 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -221,12 +249,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -252,15 +282,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -271,14 +303,16 @@ movements:
instruction: fix
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
@ -305,15 +339,17 @@ movements:
- cqrs-es
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:

View File

@ -1,5 +1,5 @@
name: expert-mini
description: Expert-focused mini development piece (plan -> implement -> parallel review -> fix if needed -> complete)
name: dual-mini
description: Frontend + backend mini development piece (plan -> implement -> parallel review -> fix if needed -> complete) with frontend + backend knowledge injection
piece_config:
provider_options:
codex:
@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 20
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix_both
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: fix_both
- condition: unproductive (same findings repeating)
next: supervise_fix
movements:
- name: plan
edit: false
@ -17,13 +30,15 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: implement
@ -47,15 +62,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
@ -81,12 +98,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
@ -97,20 +116,22 @@ movements:
format: ai-review
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
knowledge:
- frontend
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
@ -144,14 +165,16 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
@ -169,14 +192,16 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
@ -198,15 +223,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -228,15 +255,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:

View File

@ -0,0 +1,235 @@
name: dual-review-fix
description: Frontend + backend focused review + fix loop (structure, modularization, component design, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: frontend-review
edit: false
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-frontend
output_contracts:
report:
- name: frontend-review.md
format: frontend-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- frontend
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fixes complete
next: reviewers
- condition: Unable to proceed with fixes
next: supervise
- name: supervise
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All validations complete, ready to merge
next: COMPLETE
- condition: Issues detected
next: fix_supervisor
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
- name: fix_supervisor
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- frontend
- backend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:
- condition: Fixes for supervisor findings complete
next: supervise
- condition: Unable to proceed with fixes
next: supervise

View File

@ -0,0 +1,159 @@
name: dual-review
description: Frontend + backend focused review (structure, modularization, component design, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 10
initial_movement: gather
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- frontend
- backend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: frontend-review
edit: false
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-frontend
output_contracts:
report:
- name: frontend-review.md
format: frontend-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: supervise
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
pass_previous_response: false
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: Review integration complete
next: COMPLETE

View File

@ -1,5 +1,5 @@
name: expert
description: Architecture, Frontend, Security, QA Expert Review
name: dual
description: Frontend + backend development piece with architecture, frontend, security, and QA reviews with fix loops
piece_config:
provider_options:
codex:
@ -21,6 +21,18 @@ loop_monitors:
next: ai_review
- condition: Unproductive (same findings repeated or fixes not reflected)
next: ai_no_fix
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: reviewers
- condition: unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
@ -29,13 +41,15 @@ movements:
- frontend
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: plan
rules:
- condition: Task analysis and planning is complete
@ -58,15 +72,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: implement
rules:
- condition: Implementation is complete
@ -91,12 +107,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: ai-review
rules:
- condition: No AI-specific issues found
@ -119,15 +137,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: ai-fix
pass_previous_response: false
rules:
@ -141,10 +161,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -160,12 +182,14 @@ movements:
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -179,12 +203,14 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -198,12 +224,14 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -218,12 +246,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -248,15 +278,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -267,14 +299,16 @@ movements:
instruction: fix
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
@ -300,15 +334,17 @@ movements:
- backend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:

View File

@ -41,13 +41,15 @@ movements:
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Test plan complete
next: implement_test
@ -74,15 +76,17 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Test implementation complete
@ -108,12 +112,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: No AI-specific issues
next: review_test
@ -134,15 +140,17 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -157,10 +165,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -173,12 +183,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
next: supervise
@ -199,15 +211,17 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -220,13 +234,15 @@ movements:
edit: false
persona: supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
pass_previous_response: false
rules:
- condition: All checks passed

View File

@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 20
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix_both
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: fix_both
- condition: unproductive (same findings repeating)
next: supervise_fix
movements:
- name: plan
edit: false
@ -16,13 +29,15 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementation is possible
next: implement
@ -45,15 +60,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
@ -79,12 +96,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
@ -101,13 +120,15 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All checks passed
@ -140,14 +161,16 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: AI Reviewer's issues fixed
@ -164,14 +187,16 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Supervisor's issues fixed
@ -192,15 +217,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -221,15 +248,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:

View File

@ -0,0 +1,232 @@
name: frontend-review-fix
description: Frontend-focused review + fix loop (structure, modularization, component design, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: frontend-review
edit: false
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-frontend
output_contracts:
report:
- name: frontend-review.md
format: frontend-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fixes complete
next: reviewers
- condition: Unable to proceed with fixes
next: supervise
- name: supervise
edit: false
persona: dual-supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All validations complete, ready to merge
next: COMPLETE
- condition: Issues detected
next: fix_supervisor
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
- name: fix_supervisor
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- frontend
- security
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:
- condition: Fixes for supervisor findings complete
next: supervise
- condition: Unable to proceed with fixes
next: supervise

View File

@ -0,0 +1,158 @@
name: frontend-review
description: Frontend-focused review (structure, modularization, component design, security, QA)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 10
initial_movement: gather
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Unable to identify review target, insufficient information
next: ABORT
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: frontend-review
edit: false
persona: frontend-reviewer
policy: review
knowledge: frontend
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-frontend
output_contracts:
report:
- name: frontend-review.md
format: frontend-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: supervise
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
pass_previous_response: false
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
rules:
- condition: Review integration complete
next: COMPLETE

View File

@ -8,6 +8,19 @@ piece_config:
network_access: true
max_movements: 30
initial_movement: plan
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: converging (findings decreasing, fixes applied)
next: reviewers
- condition: unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
@ -15,13 +28,15 @@ movements:
knowledge:
- frontend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: plan
rules:
- condition: Task analysis and planning is complete
@ -43,15 +58,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: implement
rules:
- condition: Implementation is complete
@ -76,12 +93,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: ai-review
rules:
- condition: No AI-specific issues found
@ -103,15 +122,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: ai-fix
pass_previous_response: false
rules:
@ -125,10 +146,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -144,12 +167,14 @@ movements:
knowledge:
- architecture
- frontend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -163,12 +188,14 @@ movements:
persona: frontend-reviewer
policy: review
knowledge: frontend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -182,12 +209,14 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -202,12 +231,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
@ -231,15 +262,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -250,14 +283,16 @@ movements:
instruction: fix
- name: supervise
edit: false
persona: expert-supervisor
persona: dual-supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
@ -282,15 +317,17 @@ movements:
- frontend
- security
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:

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

@ -1,43 +0,0 @@
name: passthrough
description: Single-agent thin wrapper. Pass task directly to coder as-is.
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 10
initial_movement: execute
movements:
- name: execute
edit: true
persona: coder
policy:
- coding
- testing
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Task complete
next: COMPLETE
- condition: Cannot proceed
next: ABORT
- condition: User input required
next: execute
requires_user_input: true
interactive_only: true
instruction_template: |
Do the task.
output_contracts:
report:
- name: summary.md
format: summary
use_judge: false

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

@ -0,0 +1,259 @@
name: review-fix
description: Multi-perspective review + fix loop (architecture, security, QA, testing, requirements — 5 parallel reviewers with iterative fixes)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Cannot identify review target, insufficient info
next: ABORT
appendix: |
Clarifications needed:
- {Question 1}
- {Question 2}
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architecture-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
rules:
- condition: approved
- condition: needs_fix
- name: requirements-review
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-requirements
output_contracts:
report:
- name: requirements-review.md
format: requirements-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fixes complete
next: reviewers
- condition: Unable to proceed with fixes
next: supervise
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All validations complete, ready to merge
next: COMPLETE
- condition: Issues detected
next: fix_supervisor
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false
- name: fix_supervisor
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: fix-supervisor
pass_previous_response: false
rules:
- condition: Fixes for supervisor findings complete
next: supervise
- condition: Unable to proceed with fixes
next: supervise

View File

@ -13,13 +13,15 @@ movements:
- name: gather
edit: false
persona: planner
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
@ -42,13 +44,15 @@ movements:
persona: architecture-reviewer
policy: review
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
@ -63,13 +67,15 @@ movements:
persona: security-reviewer
policy: review
knowledge: security
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
@ -85,13 +91,15 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
@ -107,13 +115,15 @@ movements:
policy:
- review
- testing
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-test
output_contracts:
report:
@ -127,13 +137,15 @@ movements:
edit: false
persona: requirements-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-requirements
output_contracts:
report:
@ -153,12 +165,14 @@ movements:
edit: false
persona: supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
pass_previous_response: false
rules:
- condition: Review synthesis complete

View File

@ -1,488 +0,0 @@
name: structural-reform
description: Full project review and structural reform - iterative codebase restructuring with staged file splits
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 50
initial_movement: review
loop_monitors:
- cycle:
- implement
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: |
The implement -> reviewers -> fix loop has repeated {cycle_count} times for the current reform target.
Review the reports from each cycle and determine whether this loop
is making progress or repeating the same issues.
**Reports to reference:**
- Architect review: {report:architect-review.md}
- QA review: {report:qa-review.md}
**Judgment criteria:**
- Are review findings being addressed in each fix cycle?
- Are the same issues recurring without resolution?
- Is the implementation converging toward approval?
rules:
- condition: Healthy (making progress toward approval)
next: implement
- condition: Unproductive (same issues recurring, no convergence)
next: next_target
movements:
- name: review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction_template: |
## Piece Status
- Iteration: {iteration}/{max_movements} (piece-wide)
- Movement Iteration: {movement_iteration} (times this movement has run)
- Movement: review (full project review)
## User Request
{task}
## Instructions
Conduct a comprehensive structural review of the entire project codebase.
**Focus areas:**
1. **God Classes/Functions**: Files exceeding 300 lines, classes with multiple responsibilities
2. **Coupling**: Circular dependencies, tight coupling between modules
3. **Cohesion**: Low-cohesion modules mixing unrelated concerns
4. **Testability**: Untestable code due to tight coupling or side effects
5. **Layer violations**: Wrong dependency directions, domain logic in adapters
6. **DRY violations**: Duplicated logic across 3+ locations
**For each issue found, report:**
- File path and line count
- Problem category (God Class, Low Cohesion, etc.)
- Severity (Critical / High / Medium)
- Specific responsibilities that should be separated
- Dependencies that would be affected by splitting
**Output format:**
```markdown
# Full Project Structural Review
## Summary
- Total files reviewed: N
- Issues found: N (Critical: N, High: N, Medium: N)
## Critical Issues
### 1. {File path} ({line count} lines)
- **Problem**: {category}
- **Severity**: Critical
- **Responsibilities found**:
1. {responsibility 1}
2. {responsibility 2}
- **Proposed split**:
- `{new-file-1}.ts`: {responsibility}
- `{new-file-2}.ts`: {responsibility}
- **Affected dependents**: {files that import this module}
## High Priority Issues
...
## Medium Priority Issues
...
## Dependency Graph Concerns
- {circular dependencies, layering violations}
## Recommended Reform Order
1. {file} - {reason for priority}
2. {file} - {reason for priority}
```
rules:
- condition: Full review is complete with findings
next: plan_reform
- condition: No structural issues found
next: COMPLETE
output_contracts:
report:
- name: full-review.md
format: |
```markdown
# Full Project Structural Review
## Summary
- Total files reviewed: {N}
- Issues found: {N} (Critical: {N}, High: {N}, Medium: {N})
## Critical Issues
### 1. {File path} ({line count} lines)
- **Problem**: {category}
- **Severity**: Critical
- **Responsibilities found**:
1. {responsibility 1}
2. {responsibility 2}
- **Proposed split**:
- `{new-file-1}.ts`: {responsibility}
- `{new-file-2}.ts`: {responsibility}
- **Affected dependents**: {files that import this module}
## High Priority Issues
- {Issue}
## Medium Priority Issues
- {Issue}
## Dependency Graph Concerns
- {circular dependencies, layering violations}
## Recommended Reform Order
1. {file} - {reason for priority}
2. {file} - {reason for priority}
```
- name: plan_reform
edit: false
persona: planner
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction_template: |
## Piece Status
- Iteration: {iteration}/{max_movements} (piece-wide)
- Movement Iteration: {movement_iteration} (times this movement has run)
- Movement: plan_reform (reform plan creation)
## User Request
{task}
## Full Review Results
{previous_response}
## Additional User Inputs
{user_inputs}
## Instructions
Based on the full review results, create a concrete reform execution plan.
**Planning principles:**
- One file split per iteration (keep changes manageable)
- Order by dependency: split leaf nodes first, then work inward
- Each split must leave tests and build passing
- No backward compatibility concerns (per user instruction)
**For each reform target, specify:**
1. Target file and current line count
2. Proposed new files with responsibilities
3. Expected changes to imports in dependent files
4. Test strategy (new tests needed, existing tests to update)
5. Risk assessment (what could break)
**Output format:**
```markdown
# Structural Reform Plan
## Reform Targets (ordered by execution priority)
### Target 1: {file path}
- **Current state**: {line count} lines, {N} responsibilities
- **Proposed split**:
| New file | Responsibility | Estimated lines |
|----------|---------------|-----------------|
| `{path}` | {responsibility} | ~{N} |
- **Dependent files**: {list of files that import this}
- **Test plan**: {what tests to add/update}
- **Risk**: {Low/Medium/High} - {description}
### Target 2: {file path}
...
## Execution Order Rationale
{Why this order minimizes risk and dependency conflicts}
## Success Criteria
- All tests pass after each split
- Build succeeds after each split
- No file exceeds 300 lines
- Each file has single responsibility
```
rules:
- condition: Reform plan is complete and ready to execute
next: implement
- condition: No actionable reforms identified
next: COMPLETE
- condition: Requirements unclear, need user input
next: ABORT
appendix: |
Clarifications needed:
- {Question 1}
- {Question 2}
output_contracts:
report:
- name: reform-plan.md
format: plan
- name: implement
edit: true
persona: coder
policy:
- coding
- testing
session: refresh
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: implement
rules:
- condition: Implementation complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: reviewers
- condition: User input required
next: implement
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: coder-scope.md
format: coder-scope
- name: coder-decisions.md
format: coder-decisions
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: all("approved")
next: verify
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: Fix complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: plan_reform
instruction: fix
- name: verify
edit: false
persona: supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction_template: |
## Piece Status
- Iteration: {iteration}/{max_movements} (piece-wide)
- Movement Iteration: {movement_iteration} (times this movement has run)
- Movement: verify (build and test verification)
## Instructions
Verify that the current reform step has been completed successfully.
**Verification checklist:**
1. **Build**: Run the build command and confirm it passes
2. **Tests**: Run the test suite and confirm all tests pass
3. **File sizes**: Confirm no new file exceeds 300 lines
4. **Single responsibility**: Confirm each new file has a clear, single purpose
5. **Import consistency**: Confirm all imports are updated correctly
**Report format:**
```markdown
# Verification Results
## Result: PASS / FAIL
| Check | Status | Details |
|-------|--------|---------|
| Build | PASS/FAIL | {output summary} |
| Tests | PASS/FAIL | {N passed, N failed} |
| File sizes | PASS/FAIL | {any file > 300 lines} |
| Single responsibility | PASS/FAIL | {assessment} |
| Import consistency | PASS/FAIL | {any broken imports} |
## Issues (if FAIL)
1. {issue description}
```
rules:
- condition: All verifications passed
next: next_target
- condition: Verification failed
next: fix
output_contracts:
report:
- name: verification.md
format: validation
- name: next_target
edit: false
persona: planner
knowledge: architecture
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction_template: |
## Piece Status
- Iteration: {iteration}/{max_movements} (piece-wide)
- Movement Iteration: {movement_iteration} (times this movement has run)
- Movement: next_target (progress check and next target selection)
## Original Reform Plan
{report:reform-plan.md}
## Latest Verification
{previous_response}
## Instructions
Assess the progress of the structural reform and determine the next action.
**Steps:**
1. Review the reform plan and identify which targets have been completed
2. Check the current codebase state against the plan
3. Determine if there are remaining reform targets
**Output format:**
```markdown
# Reform Progress
## Completed Targets
| # | Target | Status |
|---|--------|--------|
| 1 | {file} | Completed |
| 2 | {file} | Completed |
## Remaining Targets
| # | Target | Priority |
|---|--------|----------|
| 3 | {file} | Next |
| 4 | {file} | Pending |
## Next Action
- **Target**: {next file to reform}
- **Plan**: {brief description of the split}
## Overall Progress
{N}/{total} targets completed. Estimated remaining iterations: {N}
```
rules:
- condition: More reform targets remain
next: implement
- condition: All reform targets completed
next: COMPLETE
output_contracts:
report:
- name: progress.md
format: |
```markdown
# Reform Progress
## Completed Targets
| # | Target | Status |
|---|--------|--------|
| 1 | {file} | Completed |
## Remaining Targets
| # | Target | Priority |
|---|--------|----------|
| 2 | {file} | Next |
## Next Action
- **Target**: {next file to reform}
- **Plan**: {brief description of the split}
## Overall Progress
{N}/{total} targets completed. Estimated remaining iterations: {N}
```

View File

@ -0,0 +1,235 @@
name: takt-default-review-fix
description: "TAKT development code review + fix loop (5 parallel reviewers: architecture, security, QA, testing, requirements — with iterative fixes)"
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: gather
loop_monitors:
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (progress being made)
next: reviewers
- condition: Unproductive (repeated findings, fixes not applied)
next: supervise
movements:
- name: gather
edit: false
persona: planner
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: gather-review
output_contracts:
report:
- name: review-target.md
format: review-gather
rules:
- condition: Review target information gathered
next: reviewers
- condition: Cannot identify review target, insufficient info
next: ABORT
appendix: |
Clarifications needed:
- {Question 1}
- {Question 2}
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-arch
output_contracts:
report:
- name: architecture-review.md
format: architecture-review
rules:
- condition: approved
- condition: needs_fix
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
rules:
- condition: approved
- condition: needs_fix
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
rules:
- condition: approved
- condition: needs_fix
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
rules:
- condition: approved
- condition: needs_fix
- name: requirements-review
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-requirements
output_contracts:
report:
- name: requirements-review.md
format: requirements-review
rules:
- condition: approved
- condition: needs_fix
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- takt
- architecture
- security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
instruction: fix
rules:
- condition: Fix complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: ABORT
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
pass_previous_response: false
rules:
- condition: All checks passed
next: COMPLETE
- condition: Requirements unmet, tests failing, build errors
next: ABORT
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false

View File

@ -0,0 +1,406 @@
name: takt-default-team-leader
description: TAKT development piece with team leader (plan → write tests → team-leader implement → AI antipattern review → 5-parallel review → fix → supervise → complete)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: plan
loop_monitors:
- cycle:
- ai_review
- ai_fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-ai-fix
rules:
- condition: Healthy (making progress)
next: ai_review
- condition: Unproductive (no improvement)
next: reviewers
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (findings decreasing, fixes applied)
next: reviewers
- condition: Unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementable
next: write_tests
- condition: User is asking a question (not an implementation task)
next: COMPLETE
- condition: Requirements unclear, insufficient info
next: ABORT
appendix: |
Clarifications needed:
- {Question 1}
- {Question 2}
instruction: plan
output_contracts:
report:
- name: plan.md
format: plan
- name: write_tests
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: write-tests-first
rules:
- condition: Tests written successfully
next: implement
- condition: Cannot proceed because the test target is not implemented yet, so skip test writing
next: implement
- condition: Cannot proceed with test writing
next: ABORT
- condition: User input needed for clarification
next: write_tests
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: test-scope.md
format: coder-scope
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
persona: coder
policy:
- coding
- testing
session: refresh
knowledge:
- takt
- architecture
- task-decomposition
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
team_leader:
max_parts: 2
part_persona: coder
part_edit: true
part_permission_mode: edit
part_allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
instruction: team-leader-implement
rules:
- condition: Implementation complete
next: ai_review
- condition: No implementation (report only)
next: ai_review
- condition: Cannot proceed, insufficient info
next: plan
- condition: User input required
next: implement
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: coder-scope.md
format: coder-scope
- name: coder-decisions.md
format: coder-decisions
- name: ai_review
edit: false
persona: ai-antipattern-reviewer
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: No AI-specific issues
next: reviewers
- condition: AI-specific issues found
next: ai_fix
instruction: ai-review
output_contracts:
report:
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
persona: coder
policy:
- coding
- testing
session: refresh
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: AI issues fixed
next: ai_review
- condition: No fix needed (verified target files/spec)
next: ai_no_fix
- condition: Cannot proceed, insufficient info
next: ai_no_fix
instruction: ai-fix
- name: ai_no_fix
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
- condition: ai_fix's judgment is valid (no fix needed)
next: reviewers
instruction: arbitrate
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
- name: requirements-review
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-requirements
output_contracts:
report:
- name: requirements-review.md
format: requirements-review
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: Fix complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: plan
instruction: fix
- name: supervise
edit: false
persona: supervisor
policy: review
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
pass_previous_response: false
rules:
- condition: All checks passed
next: COMPLETE
- condition: Requirements unmet, tests failing, build errors
next: plan
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false

View File

@ -0,0 +1,402 @@
name: takt-default
description: TAKT development piece (plan → write tests → implement → AI antipattern review → 5-parallel review → fix → supervise → complete)
piece_config:
provider_options:
codex:
network_access: true
opencode:
network_access: true
max_movements: 30
initial_movement: plan
loop_monitors:
- cycle:
- ai_review
- ai_fix
threshold: 3
judge:
persona: supervisor
instruction_template: |
The ai_review ↔ ai_fix loop has repeated {cycle_count} times.
Review the reports from each cycle and determine whether this loop
is healthy (making progress) or unproductive (repeating the same issues).
**Reports to reference:**
- AI Review results: {report:ai-review.md}
**Judgment criteria:**
- Are new issues being found/fixed in each cycle?
- Are the same findings being repeated?
- Are fixes actually being applied?
rules:
- condition: Healthy (making progress)
next: ai_review
- condition: Unproductive (no improvement)
next: reviewers
- cycle:
- reviewers
- fix
threshold: 3
judge:
persona: supervisor
instruction_template: loop-monitor-reviewers-fix
rules:
- condition: Healthy (findings decreasing, fixes applied)
next: reviewers
- condition: Unproductive (same findings repeating)
next: supervise
movements:
- name: plan
edit: false
persona: planner
knowledge: architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementable
next: write_tests
- condition: User is asking a question (not an implementation task)
next: COMPLETE
- condition: Requirements unclear, insufficient info
next: ABORT
appendix: |
Clarifications needed:
- {Question 1}
- {Question 2}
instruction: plan
output_contracts:
report:
- name: plan.md
format: plan
- name: write_tests
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
instruction: write-tests-first
rules:
- condition: Tests written successfully
next: implement
- condition: Cannot proceed because the test target is not implemented yet, so skip test writing
next: implement
- condition: Cannot proceed with test writing
next: ABORT
- condition: User input needed for clarification
next: write_tests
requires_user_input: true
interactive_only: true
output_contracts:
report:
- name: test-scope.md
format: coder-scope
- name: test-decisions.md
format: coder-decisions
- name: implement
edit: true
persona: coder
policy:
- coding
- testing
session: refresh
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Implementation complete
next: ai_review
- condition: No implementation (report only)
next: ai_review
- condition: Cannot proceed, insufficient info
next: ai_review
- condition: User input required
next: implement
requires_user_input: true
interactive_only: true
instruction: implement-after-tests
output_contracts:
report:
- name: coder-scope.md
format: coder-scope
- name: coder-decisions.md
format: coder-decisions
- name: ai_review
edit: false
persona: ai-antipattern-reviewer
policy:
- review
- ai-antipattern
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: No AI-specific issues
next: reviewers
- condition: AI-specific issues found
next: ai_fix
instruction: ai-review
output_contracts:
report:
- name: ai-review.md
format: ai-review
- name: ai_fix
edit: true
persona: coder
policy:
- coding
- testing
session: refresh
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: AI issues fixed
next: ai_review
- condition: No fix needed (verified target files/spec)
next: ai_no_fix
- condition: Cannot proceed, insufficient info
next: ai_no_fix
instruction: ai-fix
- name: ai_no_fix
edit: false
persona: architecture-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
- condition: ai_fix's judgment is valid (no fix needed)
next: reviewers
instruction: arbitrate
- name: reviewers
parallel:
- name: arch-review
edit: false
persona: architecture-reviewer
policy: review
knowledge:
- architecture
- takt
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-arch
output_contracts:
report:
- name: architect-review.md
format: architecture-review
- name: security-review
edit: false
persona: security-reviewer
policy: review
knowledge: security
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-security
output_contracts:
report:
- name: security-review.md
format: security-review
- name: qa-review
edit: false
persona: qa-reviewer
policy:
- review
- qa
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-qa
output_contracts:
report:
- name: qa-review.md
format: qa-review
- name: testing-review
edit: false
persona: testing-reviewer
policy:
- review
- testing
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-test
output_contracts:
report:
- name: testing-review.md
format: testing-review
- name: requirements-review
edit: false
persona: requirements-reviewer
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: approved
- condition: needs_fix
instruction: review-requirements
output_contracts:
report:
- name: requirements-review.md
format: requirements-review
rules:
- condition: all("approved")
next: supervise
- condition: any("needs_fix")
next: fix
- name: fix
edit: true
persona: coder
policy:
- coding
- testing
knowledge:
- takt
- architecture
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
- condition: Fix complete
next: reviewers
- condition: Cannot proceed, insufficient info
next: plan
instruction: fix
- name: supervise
edit: false
persona: supervisor
policy: review
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
pass_previous_response: false
rules:
- condition: All checks passed
next: COMPLETE
- condition: Requirements unmet, tests failing, build errors
next: plan
instruction: supervise
output_contracts:
report:
- name: supervisor-validation.md
format: supervisor-validation
- name: summary.md
format: summary
use_judge: false

View File

@ -13,13 +13,15 @@ movements:
edit: false
persona: planner
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Requirements are clear and implementable
next: implement
@ -38,15 +40,17 @@ movements:
policy:
- terraform
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: full
quality_gates:
- terraform fmt -check passes without errors
@ -77,13 +81,15 @@ movements:
- review
- terraform
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: review-terraform
rules:
- condition: Complies with Terraform conventions
@ -98,12 +104,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
instruction: review-ai
rules:
- condition: No AI-specific issues
@ -122,13 +130,15 @@ movements:
persona: supervisor
policy: review
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
instruction: supervise
rules:
- condition: All reviewers approved and task requirements met
@ -156,14 +166,16 @@ movements:
policy:
- terraform
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: full
rules:
- condition: AI issue fix complete
@ -176,14 +188,16 @@ movements:
policy:
- terraform
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Bash
- WebSearch
- WebFetch
required_permission_mode: full
rules:
- condition: Supervisor's findings have been fixed
@ -200,15 +214,17 @@ movements:
policy:
- terraform
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: full
pass_previous_response: false
rules:
@ -225,15 +241,17 @@ movements:
policy:
- terraform
knowledge: terraform-aws
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: full
pass_previous_response: false
rules:

View File

@ -41,13 +41,15 @@ movements:
knowledge:
- architecture
- backend
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
rules:
- condition: Test plan complete
next: implement_test
@ -74,15 +76,17 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
rules:
- condition: Test implementation complete
@ -108,12 +112,14 @@ movements:
policy:
- review
- ai-antipattern
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: No AI-specific issues
next: review_test
@ -134,15 +140,17 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -157,10 +165,12 @@ movements:
edit: false
persona: architecture-reviewer
policy: review
allowed_tools:
- Read
- Glob
- Grep
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
rules:
- condition: ai_review's findings are valid (fix required)
next: ai_fix
@ -173,12 +183,14 @@ movements:
policy:
- review
- qa
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- WebSearch
- WebFetch
rules:
- condition: approved
next: supervise
@ -199,15 +211,17 @@ movements:
knowledge:
- backend
- architecture
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Edit
- Write
- Bash
- WebSearch
- WebFetch
required_permission_mode: edit
pass_previous_response: false
rules:
@ -220,13 +234,15 @@ movements:
edit: false
persona: supervisor
policy: review
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
provider_options:
claude:
allowed_tools:
- Read
- Glob
- Grep
- Bash
- WebSearch
- WebFetch
pass_previous_response: false
rules:
- condition: All checks passed

View File

@ -1,7 +1,7 @@
# supervise -- Final Verification Instruction Template
> **Purpose**: Run tests/builds, verify all review results, give final approval
> **Agent**: supervisor, expert-supervisor
> **Agent**: supervisor, dual-supervisor
> **Reports**: Validation + Summary (format embedded in template)
---
@ -11,7 +11,7 @@
```
Run tests, verify builds, and perform final approval.
{Customize: Review pass status -- for expert pieces where all reviews have passed}
{Customize: Review pass status -- for dual pieces where all reviews have passed}
## Previous Reviews Summary
Reaching this movement means all of the following reviews have been APPROVED:
{Customize: Actual review list}

View File

@ -49,4 +49,4 @@ All other sections are the same across pieces.
| minimal | AI Review, Supervisor |
| coding | AI Review, Architecture |
| default | Architecture Design, AI Review, Architect Review, QA, Supervisor |
| expert | AI Review, Architecture, Frontend, Security, QA, Supervisor |
| dual | AI Review, Architecture, Frontend, Security, QA, Supervisor |

View File

@ -2,24 +2,35 @@
# 配置場所: ~/.takt/config.yaml
# =====================================
# 通常設定(ピース非依存)
# 通常設定
# =====================================
language: ja # 表示言語: ja | en
log_level: info # ログレベル: debug | info | warn | error
provider: claude # デフォルト実行プロバイダー: claude | codex | opencode | mock
# model: sonnet # 省略可。providerに渡すモデル名
# デフォルトプロバイダー・モデル
# provider: claude # デフォルトプロバイダー: claude | codex | opencode | cursor | copilot | mock
# model: sonnet # デフォルトモデル(プロバイダーにそのまま渡される)
# 実行制御
# worktree_dir: ~/takt-worktrees # 共有clone作成先ディレクトリ
# auto_pr: false # worktree実行後に自動PR作成するか
branch_name_strategy: ai # ブランチ名生成: romaji | ai
concurrency: 2 # takt run の同時実行数1-10
# task_poll_interval_ms: 500 # takt run のタスク監視間隔ms100-5000
# prevent_sleep: false # macOS実行中のスリープ防止caffeinate
# auto_fetch: false # clone前にfetchして最新化するか
# base_branch: main # cloneのベースブランチデフォルト: カレントブランチ)
# concurrency: 1 # takt run の同時実行タスク数 (1-10)
# task_poll_interval_ms: 500 # 新規タスク検出のポーリング間隔ms, 100-5000
# PR / ブランチ
# auto_pr: false # worktree実行後にPR自動作成
# draft_pr: false # ドラフトPRとして作成
# branch_name_strategy: romaji # ブランチ名生成: romaji | ai
# パイプライン実行
# pipeline:
# default_branch_prefix: "takt/" # パイプラインで作成するブランチのプレフィックス
# commit_message_template: "{title}" # コミットメッセージテンプレート。変数: {title}, {issue}
# pr_body_template: "{report}" # PR本文テンプレート。変数: {issue_body}, {report}, {issue}
# 出力・通知
# minimal_output: false # 出力を最小化CI向け
# verbose: false # 詳細ログを有効化
# minimal_output: false # エージェント詳細出力を抑制
# notification_sound: true # 通知音全体のON/OFF
# notification_sound_events: # イベント別通知音未指定はtrue扱い
# iteration_limit: true
@ -27,74 +38,86 @@ concurrency: 2 # takt run の同時実行数1-10
# piece_abort: true
# run_complete: true
# run_abort: true
# observability:
# logging:
# level: info # ログレベル: debug | info | warn | error
# trace: true # trace.md 実行レポート生成
# debug: false # debug.log + prompts.jsonl を有効化
# provider_events: false # providerイベントログを記録
# usage_events: false # 使用量イベントログを記録
# アナリティクス
# analytics:
# enabled: true # 分析メトリクスの収集を有効化
# events_path: ~/.takt/analytics/events # 分析イベント保存先
# retention_days: 30 # 分析イベント保持日数
# enabled: true # ローカルアナリティクス収集を有効化
# events_path: ~/.takt/analytics/events # イベントディレクトリのカスタムパス
# retention_days: 30 # イベントファイルの保持期間(日)
# インタラクティブモード
# interactive_preview_movements: 3 # インタラクティブモードでのムーブメントプレビュー数 (0-10)
# ペルソナ別プロバイダー・モデル指定
# persona_providers:
# coder:
# provider: claude
# model: opus
# reviewer:
# provider: codex
# model: gpt-5.2-codex
# プロバイダー固有オプション(最低優先度、ピース/ムーブメントで上書き可能)
# provider_options:
# codex:
# network_access: true
# claude:
# sandbox:
# allow_unsandboxed_commands: true
# プロバイダー権限プロファイル
# provider_profiles:
# claude:
# default_permission_mode: edit
# codex:
# default_permission_mode: edit
# ランタイム環境の準備
# runtime:
# prepare: [node, gradle, ./custom-script.sh]
# ピースレベルのオーバーライド
# piece_overrides:
# quality_gates:
# - "All tests pass"
# quality_gates_edit_only: true
# movements:
# review:
# quality_gates:
# - "No security vulnerabilities"
# personas:
# coder:
# quality_gates:
# - "Code follows conventions"
# 認証情報(環境変数優先)
# anthropic_api_key: "sk-ant-..." # Claude APIキー
# openai_api_key: "sk-..." # Codex APIキー
# gemini_api_key: "..." # Gemini APIキー
# google_api_key: "..." # Google APIキー
# groq_api_key: "..." # Groq APIキー
# openrouter_api_key: "..." # OpenRouter APIキー
# opencode_api_key: "..." # OpenCode APIキー
# codex_cli_path: "/absolute/path/to/codex" # Codex CLI絶対パス
# cursor_api_key: "..." # Cursor APIキー
# パイプライン
# pipeline:
# default_branch_prefix: "takt/" # pipeline作成ブランチの接頭辞
# commit_message_template: "feat: {title} (#{issue})" # コミット文テンプレート
# pr_body_template: | # PR本文テンプレート
# ## Summary
# {issue_body}
# Closes #{issue}
# CLIパス
# codex_cli_path: "/absolute/path/to/codex" # Codex CLI絶対パス
# claude_cli_path: "/absolute/path/to/claude" # Claude Code CLI絶対パス
# cursor_cli_path: "/absolute/path/to/cursor" # cursor-agent CLI絶対パス
# copilot_cli_path: "/absolute/path/to/copilot" # Copilot CLI絶対パス
# copilot_github_token: "ghp_..." # Copilot GitHubトークン
# その他
# bookmarks_file: ~/.takt/preferences/bookmarks.yaml # ブックマーク保存先
# =====================================
# ピースにも関わる設定global defaults
# =====================================
# 1) ペルソナ単位でプロバイダー・モデルを切り替える
# persona_providers:
# coder:
# provider: codex # coderペルソナはcodexで実行
# model: o3-mini # 使用モデル(省略可)
# reviewer:
# provider: claude # reviewerペルソナはclaudeで実行
# 2) provider 固有オプション
# 優先順位provider/model/provider_options 等の piece 対応キー):
# global < piece < project < env
# provider_options:
# codex:
# network_access: true # Codex実行時のネットワークアクセス許可
# opencode:
# network_access: true # OpenCode実行時のネットワークアクセス許可
# claude:
# sandbox:
# allow_unsandboxed_commands: false # trueで対象コマンドを非サンドボックス実行
# excluded_commands:
# - "npm publish" # 非サンドボックス対象コマンド
# 3) movement の権限ポリシー
# provider_profiles:
# codex:
# default_permission_mode: full # 既定権限: readonly | edit | full
# movement_permission_overrides:
# ai_review: readonly # movement単位の上書き
# claude:
# default_permission_mode: edit
# 4) 実行前のランタイム準備(推奨: 有効化)
runtime:
prepare:
- gradle # Gradleキャッシュ/環境を .runtime 配下に準備
- node # npmキャッシュ/環境を .runtime 配下に準備
# 5) ピース一覧/カテゴリ
# ピース一覧/カテゴリ
# enable_builtin_pieces: true # builtins/{lang}/pieces を有効化
# disabled_builtins:
# - magi # 無効化するビルトインピース名
# piece_categories_file: ~/.takt/preferences/piece-categories.yaml # カテゴリ定義ファイル
# interactive_preview_movements: 3 # 対話モードのプレビュー件数0-10

View File

@ -1,10 +1,16 @@
レビュアーのフィードバックに対応してください。
Piece Contextに示されたReport Directory内のレポートを確認し、レビュアーの指摘事項を修正してください。
必要な根拠はReport Directory内のファイルを一次情報として取得してください。不足情報の補完が必要な場合に限り、Previous Responseや会話履歴を補助的に参照して構いませんPrevious Responseは提供されない場合があります。情報が競合する場合は、Report Directory内のレポートと実際のファイル内容を優先してください。
Report Directory内のレビューレポートを確認し、指摘事項を修正してください。
**重要**: 修正後、ビルドとテストの両方を実行してください。
- ビルド確認は必須。ビルド(型チェック)を実行し、型エラーがないことを確認
- テスト実行は必須。ビルド成功後、必ずテストを実行して結果を確認
**レポート参照方針:**
- Report Directory内の最新レビューレポートを一次情報として参照してください。
- 過去イテレーションのレポートは `{ファイル名}.{タイムスタンプ}` 形式で同ディレクトリに保存されています(例: `architect-review.md.20260304T123456Z`)。各レポートについて `{レポート名}.*` パターンで Glob を実行し、タイムスタンプ降順で最大2件まで読み、persists / reopened の傾向を把握してから修正に入ること。
**完了条件(以下をすべて満たすこと):**
- 今回受け取った全指摘new / reopenedを修正したこと
- 同一 `family_tag` の潜在箇所を同時に修正したこと(部分修正で再発させない)
- `family_tag` ごとに最低1件の再発防止テストを追加したことconfig契約/境界チェック系は必須)
- 複数レビュアーから同一 `family_tag` の指摘が届いている場合は1件に統合して対応したこと
**重要**: 修正後、ビルド(型チェック)とテストを必ず実行してください。
**必須出力(見出しを含める)**
## 作業結果
@ -15,5 +21,11 @@ Piece Contextに示されたReport Directory内のレポートを確認し、レ
- {ビルド実行結果}
## テスト結果
- {テスト実行コマンドと結果}
## 収束ゲート
| 指標 | 件数 |
|------|------|
| new今回修正 | {N} |
| reopened再発修正 | {N} |
| persists前回から継続、今回未着手 | {N} |
## 証拠
- {確認したファイル/検索/差分/ログの要点を列挙}

View File

@ -41,6 +41,15 @@ Small / Medium / Large
- **理由**: {選んだ理由}
```
**実装完了前の自己チェック(必須):**
ビルドとテストを実行する前に、以下を確認してください:
- 新しいパラメータ/フィールドを追加した場合、grep で呼び出し元から実際に渡されているか確認した
- `??`, `||`, `= defaultValue` を使った箇所で、フォールバックが本当に必要か確認した
- リファクタリングで置き換えたコード・エクスポートが残っていないか確認した
- タスク指示書にない機能を追加していないか確認した
- if/else で同一関数を呼び出し、引数の差異のみになっていないか確認した
- 新しいコードが既存の実装パターンAPI呼び出し方式、型定義方式等と一致しているか確認した
**必須出力(見出しを含める)**
## 作業結果
- {実施内容の要約}

View File

@ -40,6 +40,15 @@ Small / Medium / Large
- **理由**: {選んだ理由}
```
**実装完了前の自己チェック(必須):**
ビルドとテストを実行する前に、以下を確認してください:
- 新しいパラメータ/フィールドを追加した場合、grep で呼び出し元から実際に渡されているか確認した
- `??`, `||`, `= defaultValue` を使った箇所で、フォールバックが本当に必要か確認した
- リファクタリングで置き換えたコード・エクスポートが残っていないか確認した
- タスク指示書にない機能を追加していないか確認した
- if/else で同一関数を呼び出し、引数の差異のみになっていないか確認した
- 新しいコードが既存の実装パターンAPI呼び出し方式、型定義方式等と一致しているか確認した
**必須出力(見出しを含める)**
## 作業結果
- {実施内容の要約}

View File

@ -0,0 +1,9 @@
reviewers → fix のループが {cycle_count} 回繰り返されました。
Report Directory 内の最新レビューレポートを確認し、
このループが健全(収束傾向)か非生産的(発散・振動)かを判断してください。
**判断基準:**
- 各サイクルで new / reopened の指摘件数が減少しているか
- 同じ family_tag の指摘が繰り返されていないかpersists が増えていないか)
- 修正が実際にコードに反映されているか

View File

@ -25,3 +25,7 @@
5. ファイル構成・設計パターンを決定する(必要な場合)
6. 実装アプローチを決める
- 実装アプローチがナレッジ・ポリシーの制約に違反しないか照合する
7. Coder向けの実装ガイドラインに以下を含めること:
- 参照すべき既存実装パターン(ファイル:行)。同種の処理が既にある場合は必ず示す
- 変更の影響範囲。特に新しいパラメータを追加する場合、配線が必要な全箇所を列挙する
- このタスクで特に注意すべきアンチパターン(該当するものがあれば)

View File

@ -3,6 +3,8 @@ AI特有の問題はレビューしないでくださいai_reviewムーブメ
**レビュー観点:**
- 構造・設計の妥当性
- モジュール化(高凝集・低結合・循環依存)
- 関数化1関数1責務・操作の一覧性・抽象度の一致
- コード品質
- 変更スコープの適切性
- テストカバレッジ
@ -10,6 +12,12 @@ AI特有の問題はレビューしないでくださいai_reviewムーブメ
- 呼び出しチェーン検証
- 契約文字列(ファイル名・設定キー名)のハードコード散在
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
**前回指摘の追跡(必須):**
- まず「Previous Response」から前回の open findings を抽出する
- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する

View File

@ -11,6 +11,12 @@ CQRSコマンドクエリ責務分離とEvent Sourcingイベントソ
**注意**: このプロジェクトがCQRS+ESパターンを使用していない場合は、
一般的なドメイン設計の観点からレビューしてください。
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
## 判定手順
1. 変更差分を確認し、CQRS・イベントソーシングの観点に基づいて問題を検出する

View File

@ -11,6 +11,12 @@
**注意**: このプロジェクトがフロントエンドを含まない場合は、
問題なしとして次に進んでください。
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
## 判定手順
1. 変更差分を確認し、フロントエンド開発の観点に基づいて問題を検出する

View File

@ -7,6 +7,12 @@
- ログとモニタリング
- 保守性
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
**前回指摘の追跡(必須):**
- まず「Previous Response」から前回の open findings を抽出する
- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する

View File

@ -6,6 +6,12 @@
- 要求にない変更(スコープクリープ)が紛れていないか
- 部分実装や未実装がないか
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
**前回指摘の追跡(必須):**
- まず「Previous Response」から前回の open findings を抽出する
- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する

View File

@ -4,6 +4,12 @@
- データ露出リスク
- 暗号化の弱点
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
## 判定手順
1. 変更差分を確認し、セキュリティの観点に基づいて問題を検出する

View File

@ -11,6 +11,12 @@ AI特有の問題はレビューしないでくださいai_reviewムーブメ
- コストトレードオフの文書化
- 未使用の variable / output / data source
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
**前回指摘の追跡(必須):**
- まず「Previous Response」から前回の open findings を抽出する
- 各 finding に `finding_id` を付け、今回の状態を `new / persists / resolved` で判定する

View File

@ -7,6 +7,12 @@
- 過不足(不要なテスト、足りないケース)
- モック・フィクスチャの適切さ
**設計判断の参照:**
{report:coder-decisions.md} を確認し、記録された設計判断を把握してください。
- 記録された意図的な判断は FP として指摘しない
- ただし設計判断自体の妥当性も評価し、問題がある場合は指摘する
## 判定手順
1. Report Directory内のテスト計画・テストスコープに関するレポートと実装されたテストを突合する

View File

@ -1,9 +1,11 @@
テスト実行、ビルド確認、最終承認を行ってください。
**ピース全体の確認:**
1. 計画と実装結果が一致しているか
2. 各レビュームーブメントの指摘が対応されているか
3. タスク指示書の各要件が達成されているか
1. レポートディレクトリ内の全レポートを確認し、ピース全体の整合性をチェックする
- 計画と実装結果が一致しているか
- 各レビュームーブメントの指摘が適切に対応されているか
- タスクの本来の目的が達成されているか
2. タスク指示書の各要件が達成されているか
- タスク指示書から要件を1つずつ抽出する
- 各要件について、実装されたコード(ファイル:行)を特定する
- コードが要件を満たしていることを実際に確認する(ファイルを読む、テストを実行する)

View File

@ -0,0 +1,29 @@
実装タスクを分析し、分解が適切なら複数パートに分けて並列実行してください。
**重要:** 計画レポートを参照してください: {report:plan.md}
**やること:**
1. 分解の可否を判断する
- 変更対象ファイルを特定し、ファイル間の依存関係を確認する
- 横断的関心事共有型・ID・イベントがある場合は分解せず1パートで実装する
- 変更ファイル数が少ない場合、リファクタ・リネーム系の場合も1パートで実装する
2. 分解する場合: ファイルをレイヤー/モジュール単位でグループ化する
- 凝集度の高い単位でグループを作る(例: ドメイン層 / インフラ層 / API層
- 型・インターフェースの依存がある場合は、依存元と依存先を同じグループにまとめる
- 1つのファイルを複数のパートに割り当てない
- テストファイルと実装ファイルは同じパートにまとめる
3. 各パートに排他的なファイル担当を割り当てる
- 各パートの instruction に以下を必ず明記する:
- **担当ファイル**(作成・変更する対象ファイルのパス一覧)
- **参照専用ファイル**(変更禁止、読み取りのみ可)
- **実装内容**(何をどのように実装するか)
- **完了基準**(担当ファイルの実装が完了したこと)
- テスト済みの場合は「既存テストがパスするよう実装する」と明記する
- ビルドチェックは指示しない(他パートのファイルが揃ってから全体でまとめて確認するため)
**制約:**
- 各パートはテスト実行を行わない(後続ムーブメントで実施する)
- 担当外のファイルを変更しない(コンフリクトの原因になる)

View File

@ -0,0 +1,151 @@
# TAKT アーキテクチャ知識
## コア構造
PieceEngine は状態機械。movement 間の遷移を EventEmitter ベースで管理する。
```
CLI → PieceEngine → Runner4種 → RuleEvaluator → 次の movement
```
| Runner | 用途 | 使い分け |
|--------|------|---------|
| MovementExecutor | 通常の3フェーズ実行 | デフォルト |
| ParallelRunner | 並列サブムーブメント | parallel ブロック |
| ArpeggioRunner | データ駆動バッチ処理 | arpeggio ブロック |
| TeamLeaderRunner | タスク分解 → サブエージェント並列 | team_leader ブロック |
各 Runner は排他。1つの movement に複数の Runner タイプを指定しない。
### 3フェーズ実行モデル
通常 movement は最大3フェーズで実行される。セッションはフェーズ間で維持される。
| フェーズ | 目的 | ツール | 条件 |
|---------|------|--------|------|
| Phase 1 | メイン作業 | movement の allowed_tools | 常に |
| Phase 2 | レポート出力 | Write のみ | output_contracts 定義時 |
| Phase 3 | ステータス判定 | なし(判定のみ) | タグベースルール時 |
## ルール評価
RuleEvaluator は5段階フォールバックで遷移先を決定する。先にマッチした方法が優先される。
| 優先度 | 方法 | 対象 |
|--------|------|------|
| 1 | aggregate | parallel 親all/any |
| 2 | Phase 3 タグ | `[STEP:N]` 出力 |
| 3 | Phase 1 タグ | `[STEP:N]` 出力(フォールバック) |
| 4 | ai() judge | ai("条件") ルール |
| 5 | AI fallback | 全条件を AI が判定 |
タグが複数出現した場合は**最後のマッチ**が採用される。
### Condition の記法
| 記法 | パース | 正規表現 |
|------|--------|---------|
| `ai("...")` | AI 条件評価 | `AI_CONDITION_REGEX` |
| `all("...")` / `any("...")` | 集約条件 | `AGGREGATE_CONDITION_REGEX` |
| 文字列 | タグまたは AI フォールバック | — |
新しい特殊構文を追加する場合は pieceParser.ts の正規表現と RuleEvaluator の両方を更新する。
## プロバイダー統合
Provider インターフェースで抽象化。具体的な SDK の差異は各プロバイダー内に閉じ込める。
```
Provider.setup(AgentSetup) → ProviderAgent
ProviderAgent.call(prompt, options) → AgentResponse
```
| 基準 | 判定 |
|------|------|
| SDK 固有のエラーハンドリングが Provider 外に漏れている | REJECT |
| AgentResponse.error にエラーを伝播していない | REJECT |
| プロバイダー間でセッションキーが衝突する | REJECT |
| セッションキー形式 `{persona}:{provider}` | OK |
### モデル解決
5段階の優先順位でモデルを解決する。上位が優先。
1. persona_providers のモデル指定
2. movement の model フィールド
3. CLI `--model` オーバーライド
4. config.yamlプロバイダー一致時
5. プロバイダーデフォルト
## ファセット組み立て
faceted-prompting モジュールは TAKT 本体に依存しない独立モジュール。
```
compose(facets, options) → ComposedPrompt { systemPrompt, userMessage }
```
| 基準 | 判定 |
|------|------|
| faceted-prompting から TAKT コアへの import | REJECT |
| TAKT コアから faceted-prompting への依存 | OK |
| ファセットパス解決のロジックが faceted-prompting 外にある | 警告 |
### ファセット解決の3層優先順位
プロジェクト `.takt/` → ユーザー `~/.takt/` → ビルトイン `builtins/{lang}/`
同名ファセットは上位が優先。ビルトインのカスタマイズは上位層でオーバーライドする。
## テストパターン
vitest を使用。テストファイルの命名規約で種別を区別する。
| プレフィックス | 種別 | 内容 |
|--------------|------|------|
| なし | ユニットテスト | 個別関数・クラスの検証 |
| `it-` | 統合テスト | ピース実行のシミュレーション |
| `engine-` | エンジンテスト | PieceEngine シナリオ検証 |
### Mock プロバイダー
`--provider mock` でテスト用の決定論的レスポンスを返す。シナリオキューで複数ターンのテストを構成する。
```typescript
// NG - テストでリアル API を呼ぶ
const response = await callClaude(prompt)
// OK - Mock プロバイダーでシナリオを設定
setMockScenario([
{ persona: 'coder', status: 'done', content: '[STEP:1]\nDone.' },
{ persona: 'reviewer', status: 'done', content: '[STEP:1]\napproved' },
])
```
### テストの分離
| 基準 | 判定 |
|------|------|
| テスト間でグローバル状態を共有 | REJECT |
| 環境変数をテストセットアップでクリアしていない | 警告 |
| E2E テストで実 API を前提としている | `provider` 指定の config で分離 |
## エラー伝播
プロバイダーエラーは `AgentResponse.error` → セッションログ → コンソール出力の経路で伝播する。
| 基準 | 判定 |
|------|------|
| SDK エラーが空の `blocked` ステータスになる | REJECT |
| エラー詳細がセッションログに記録されない | REJECT |
| エラー時に ABORT 遷移が定義されていない | 警告 |
## セッション管理
エージェントセッションは cwd ごとに保存される。worktree/clone 実行時はセッション再開をスキップする。
| 基準 | 判定 |
|------|------|
| `cwd !== projectCwd` でセッション再開している | REJECT |
| セッションキーにプロバイダーが含まれない | REJECTクロスプロバイダー汚染 |
| Phase 間でセッションが切れている | REJECTコンテキスト喪失 |

View File

@ -0,0 +1,66 @@
# タスク分解知識
## 分解の可否判断
タスクを複数パートに分解する前に、分解が適切かを判断する。分解が不適切なケースでは1パートで実装する方が効率的。
| 基準 | 判定 |
|------|------|
| 変更ファイルが明確にレイヤー分離できる | 分解可 |
| 共有する型・IDが複数パートをまたぐ | 1パートで実装 |
| 広範囲のリネーム・リファクタ | 1パートで実装 |
| 変更ファイル数が5未満 | 1パートで実装 |
| 同一ファイルを複数パートが触る必要がある | 1パートで実装 |
### 横断的関心事の検出
以下に該当する場合、独立パートでは整合性を保てない。1パートにまとめる。
- 新しいID・キー・型を生成し、別のモジュールで消費するフロー
- イベント発火側と受信側の両方を変更する
- 既存インターフェースのシグネチャを変更し、全呼び出し元を更新する
## ファイル排他の原則
複数パートに分解する場合、各パートの担当ファイルは完全に排他的でなければならない。
| 基準 | 判定 |
|------|------|
| 同一ファイルを複数パートが編集 | REJECTコンフリクトの原因 |
| 型定義と利用側が別パート | 型定義側のパートにまとめる |
| テストファイルと実装ファイルが別パート | 同じパートにまとめる |
### グループ化の優先順位
1. **依存方向で分ける** — 依存元と依存先は同じパートに
2. **レイヤーで分ける** — ドメイン層 / インフラ層 / API層
3. **機能で分ける** — 独立した機能単位
## 失敗パターン
### パート重複
2つのパートが同じファイルや同じ機能を担当すると、サブエージェントが互いの変更を上書きし、レビューで繰り返しREJECTされる。
```
// NG: part-2 と part-3 が同じファイルを担当
part-2: taskInstructionActions.ts — instruct機能の確認ダイアログ
part-3: taskInstructionActions.ts — requeue機能の確認ダイアログ
// OK: 1パートにまとめる
part-1: taskInstructionActions.ts — instruct/requeue両方の確認ダイアログ
```
### 共有契約の不整合
パートAが生成するIDをパートBが消費する設計では、両パートが独立に実装するため、ID名・型・受け渡し方法に不整合が生じる。
```
// NG: 独立パートで共有契約
part-1: phaseExecutionId を生成
part-2: phaseExecutionId を受け取って使う
→ part-1 は string、part-2 は number を期待 → 統合エラー
// OK: 1パートで一貫実装
part-1: phaseExecutionId の生成から消費まで一貫して実装
```

View File

@ -15,22 +15,27 @@
| スコープ | ✅ | - |
## 今回の指摘new
| # | finding_id | カテゴリ | 場所 | 問題 | 修正案 |
|---|------------|---------|------|------|--------|
| 1 | AI-NEW-src-file-L23 | 幻覚API | `src/file.ts:23` | 存在しないメソッド | 実在APIへ置換 |
| # | finding_id | family_tag | カテゴリ | 場所 | 問題 | 修正案 |
|---|------------|------------|---------|------|------|--------|
| 1 | AI-NEW-src-file-L23 | hallucination | 幻覚API | `src/file.ts:23` | 存在しないメソッド | 実在APIへ置換 |
## 継続指摘persists
| # | finding_id | 前回根拠 | 今回根拠 | 問題 | 修正案 |
|---|------------|----------|----------|------|--------|
| 1 | AI-PERSIST-src-file-L42 | `src/file.ts:42` | `src/file.ts:42` | 未解消 | 既存修正方針を適用 |
| # | finding_id | family_tag | 前回根拠 | 今回根拠 | 問題 | 修正案 |
|---|------------|------------|----------|----------|------|--------|
| 1 | AI-PERSIST-src-file-L42 | hallucination | `src/file.ts:42` | `src/file.ts:42` | 未解消 | 既存修正方針を適用 |
## 解消済みresolved
| finding_id | 解消根拠 |
|------------|----------|
| AI-RESOLVED-src-file-L10 | `src/file.ts:10` に該当問題なし |
## 再開指摘reopened
| # | finding_id | family_tag | 解消根拠(前回) | 再発根拠 | 問題 | 修正案 |
|---|------------|------------|----------------|---------|------|--------|
| 1 | AI-REOPENED-src-file-L55 | hallucination | `前回: src/file.ts:10 で修正済み` | `src/file.ts:55 で再発` | 問題の説明 | 修正方法 |
## REJECT判定条件
- `new` または `persists` が1件以上ある場合のみ REJECT 可
- `new``persists`、または `reopened` が1件以上ある場合のみ REJECT 可
- `finding_id` なしの指摘は無効
```

Some files were not shown because too many files have changed in this diff Show More