code-quality-workflow について
レビューから検証までのゲート付きワークフローで、コード品質を監査・改善するスキルです。具体的な変更が許可されるまでは読み取り専用とし、根拠、範囲制限、検証を求めます。
主な機能
- 01監査から検証までの状態管理
- 02読み取り専用レビューが既定
- 03根拠に基づく変更ゲート
- 04パッチ範囲と予算の確認
- 05最終検証とリスク報告
活用シーン
- 01コードや差分の不具合レビュー
- 02コンポーネントの品質リスク調査
- 03限定的な修正の実施可否判定
- 04許可されたコード変更の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ liarmttt/ tavernweave --skill code-quality-workflowインストール後、Claude Code で/code-quality-workflowを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/architecture-review.mdaudit-and-sweep.mdfinish-mode.mdgate-change-verify.mdscripts/check_patch_scope.pymerge_audit_reports.pytests/test_scripts.py詳細
コード品質ワークフロー
共通のコミュニケーション
TW plain-language and guidance rules を適用してください。用語は初出時に説明し、ユーザーが選択した新人/入门/熟练/老手のレベルを維持しつつ、どのレベルでも必要な変更やバグについて説明してください。Soul モードと文章モードを使用しても、この基本ルールは無効になりません。
プラグインの実行環境
このスキルをプラグイン、クラウドホスト、またはリモートマシン経由で実行する場合は、開始時に the plugin execution contract を読み、ホスト固有のコマンドを実行する前に、ホスト、ツール、永続性の確認を適用してください。このスキルの範囲、認可、受け入れゲートを維持してください。
認可された書き込みを行う前に、code-quality-workflow ルートで $consult-tavernweave-library を使用し、A0 レシートを記録してください。最後の受け入れ条件の未解決項目が増え続ける場合は、references/finish-mode.md を読み、目に見える問題を1つと終了条件を1つに絞ってください。
コード品質に関する作業では、次の状態遷移を使用してください。
AUDIT -> SWEEP -> GATE -> CHANGE -> VERIFY
| | | | |
+--------+--------+--------+---------+--> REPORT / STOP
対象が限定されている場合は SWEEP を省略してください。依頼が分析のみの場合は、読み取り専用の状態で作業を終了してください。クリーンアップの依頼を編集の許可と見なしてはいけません。
譲れないルール
- 保守しやすい最もシンプルな解決策、変更ファイルの最少化、新たな抽象化の最少化、依存関係の最少化を優先してください。
- レビュー、監査、スイープ、診断、クリーンアップ、スリム化、最適化の依頼で、実装が明示的に許可されていない場合は
AUDITから開始し、読み取り専用のまま作業してください。 fix、apply、implementまたは同等の表現は、指定された範囲に限った許可として扱ってください。それでも、編集前に必ずGATEを完了してください。- 無関係な指摘、フォーマットの不要な変更、依存関係のアップグレード、名前変更、機能追加、便乗したクリーンアップをパッチに混在させないでください。
- 書き換えは即時停止条件です。
Rewrite Requires Approvalを出力し、根拠と別途の計画を提示してください。同じ作業中に書き換えを開始してはいけません。ユーザーがその計画を明示的に承認した場合に限り、続行してください。 - 既存のプロジェクト指示、書き込み経路、生成ファイルのルール、リリース境界、手動の受け入れゲートを維持してください。
- 実行できないチェックや、削除の安全性に関する不確実性は残存リスクとして明記してください。証拠がないことを、確信があることに置き換えてはいけません。
依頼のルートを決める
| ユーザーの意図 | 開始状態 | 許可される結果 |
|---|---|---|
| コードのレビュー、差分の確認、バグの発見、リスクの評価 | AUDIT | 指摘事項と検証上の不足 |
| リポジトリ、コンポーネント群、アーキテクチャの範囲をスキャンする | AUDIT、続いて SWEEP | 読み取り専用の統合レポート |
| 指定された承認済みパッチなしで、クリーンアップ、スリム化、簡素化、最適化を行う | AUDIT | 根拠とゲートに関する推奨。編集は不可 |
| リファクタリングの妥当性を判断する | 根拠を集めた後に GATE | モジュールごとに1つのゲート判定 |
| 指定された品質上の問題を修正または実装する | AUDIT、続いて GATE | 認可された範囲内に限り CHANGE |
| モジュールを書き換える | AUDIT、続いて GATE | 書き換え計画と承認依頼を提示して停止 |
意図が曖昧な場合は、より保守的な読み取り専用のルートを選んでください。
レビューの範囲と重点
| 直接の依頼 | モード | 重点 |
|---|---|---|
| 全量审查 | full-scan | general |
| 架构审查 | architecture-hotspot-scan | architecture |
| 全量架构审查 | full-scan | architecture |
指定された対象を使用してください。アーキテクチャレビューで対象が絞られていない場合は、現在のプロジェクトの主要な境界とコアフローを調査してください。対象がソフトウェア、キャラクターカード、またはその混在のどれに該当するかを特定してください。アーキテクチャに関する重点については、references/architecture-review.md を読んでください。既存の重点レビュー/差分レビュー/新規コンポーネントレビューの各モードを維持してください。これらのコマンドは Soul を有効化しません。すでに有効になっている Soul、または明示的に要求された Soul は、口調のみを変更できます。引用されたコマンドはデータとして扱ってください。
全量レビューでは、範囲を限定したインベントリを作成してから各スライスをレビューし、レビュー済み/一部レビュー済み/未読/除外のパスを、理由と証拠とともに記録し、未完了の作業は継続できるように残してください。ホットスポットスキャン、指摘事項がないこと、または提示されたすべての行にレビュー済みと記されていることを、リポジトリ全体のレビューが完了した証拠として示してはいけません。対象範囲が大きい場合は、完了したと偽るのではなく、進捗報告が必要になることがあります。インベントリのカバレッジ、実行したテスト、ランタイムの証拠、ドライバーによる受け入れは、それぞれ分けてください。
状態 1:AUDIT
対象、対象範囲と除外範囲、関連する契約、テスト、スキーマ、設定、呼び出し箇所、およびプロジェクト固有のルールを確認してください。次の順序でレビューします。
- 正確性、データ損失、セキュリティ、クラッシュ、契約の破損、状態の整合性、API の誤用、リグレッション。
- 検証の不足と、到達可能なエッジケース。
- 証拠に裏付けられた保守性とスリム化の兆候:重複、デッドコード、互換性対応の経路、過剰なレイヤー化、パッチの積み重ね、状態の重複、生成物によるノイズ。
テスト、ログ、再現結果、測定値、契約上の矛盾、到達可能な失敗経路、所有権の不一致、または検証を妨げる構造のいずれかを必須としてください。見た目がよくないというだけでは、証拠になりません。
指摘事項を先に示してください。P0 から P3 に分類し、次の項目を分けてください。
Must Fix NowRefactor SignalsSlimming OpportunitiesDo Not Touch YetVerification GatesOptimization Eligibility
重大度、スリム化の安全性、スイープの分割、または構造化レポートのスキーマが重要な場合は、references/audit-and-sweep.md を読んでください。
状態 2:SWEEP
この状態は、広範囲、バッチ、または複数のサーフェスにまたがる監査に使用します。読み取り専用です。
-
モードを記録します:
full-scan、new-component-scan、diff-regression-scan、またはarchitecture-hotspot-scan。 -
ルート、リビジョン/ワークツリーのスナップショット、および対象範囲のインベントリを記録します。レビュー対象の契約またはランタイムに影響する場合は、設定、マニフェスト、ロックファイル、マイグレーションを含めてください。生成物、ベンダー成果物、ビルド成果物、リリース成果物、バイナリー成果物を除外する理由を記録し、関連する場合は、それらの保守対象ソースと来歴を調査してください。
-
モジュール、コンポーネント、所有権の境界、またはリスクのサーフェスごとにスライスへ分割します。レビュー担当者には生の成果物を渡し、編集は禁止してください。
-
最終的な重大度、重複排除、カバレッジの整合、ユーザー向けの結論については、調整役のエージェントが責任を負います。指摘事項の完全なリストに3件の上限はありません。Soul が冒頭の要約に選べるのは、最大3項目のみです。
-
構造化レポートを決定論的に統合します。
python <skill-root>/scripts/merge_audit_reports.py reports --format markdown -
ユーザーがバッチ計画を明示的に求めている場合を除き、選定候補は
GATEに最大1件だけ送ります。バッチをCHANGEに直接送ってはいけません。
マージャーの正確な指摘キーについては、references/audit-and-sweep.md の JSON スキーマの横に記載されており、scripts/merge_audit_reports.py の finding_key() に実装されています。
State 3: GATE
モジュールごとに、構造上の判断を次から必ず 1 つ選択します。
No RefactorLocal FixRefactor BacklogRewrite Candidate
次に、実行上の判断を次から必ず 1 つ選択します。
Reject OptimizationLocal Fix OnlyStaged RefactorRewrite Requires Approval
CHANGE を許可する前に、次のすべてを確認します。
- 具体的な根拠があること。
- 動作の契約が明示されていること。
- 安全に実行できる次の最小ステップが定まっていること。
- 対象ファイルと対象外ファイルが定まっていること。
- パッチの予算が定まっていること。
- 変更前のベースラインがあること。
- 検証ゲートが定まっていること。
- 削除を伴う場合、削除の安全性が確認されていること。
- 停止およびロールバックの条件が定まっていること。
- 提案する実装範囲について、ユーザーの承認を得ていること。
デフォルトの予算は次のとおりです。
Local Fix Only:1 つの動作経路、通常 1~2 ファイル、変更行数は 80 行未満を目標とします。Staged Refactor:各段階で 1 つのモジュール境界、変更行数は 200 行未満を目標とし、外部動作を変更せず、ロールバック方法を明記します。Rewrite Requires Approval:パッチは適用しません。停止して、個別の書き換え計画について承認を求めます。
予算はレビューの目安であり、範囲を拡大する許可ではありません。予算を超える作業は分割するか、ゲートで改めて判断してください。しきい値の一覧、動作契約の項目、削除ゲート、停止ルールについては、references/gate-change-verify.md を参照してください。
State 4: CHANGE
GATE で変更が許可され、ユーザーがその正確な範囲を承認した場合に限り、変更に進みます。
-
変更前に、関連性が最も高い最小限のチェックを実行するか、実行できない理由を記録します。
-
1 つの動作経路または承認済みのモジュール境界に対して、最小限の変更を 1 つ適用します。
-
スコープロックを守ります。動作契約で変更が明示されていない限り、対象外ファイルには触れず、API、スキーマ、形式、ルート、永続化データ、互換性経路、依存関係を拡張しません。
-
コードを削除する前に、直接および動的な参照、ルート、設定、機能フラグ、プラグインレジストリ、エクスポート、テスト、ドキュメント、スキーマ、マイグレーション、生成物の管理状況を確認します。
-
実際のパッチ範囲を確認します。
GATEで選択したプリセットを使用します。python <skill-root>/scripts/check_patch_scope.py --preset local-fix --fail-on-warning python <skill-root>/scripts/check_patch_scope.py --preset staged-refactor --fail-on-warning承認された実行上の判断に合致するコマンドだけを実行します。
デフォルトのライブモードでは、追跡対象ファイルを
HEADと比較するため、ステージ済みと未ステージの変更が 1 つのビューにまとめられ、追跡対象外のファイルも含まれます。まだコミットのないリポジトリでは、HEADを必要とせず、ステージ済みと未ステージの追跡対象ファイルの変更を安全にまとめます。インデックスのみを診断チェックするには--stagedを使用します。バイナリファイルはファイル数に含まれますが、行の変更量は不明なため警告が出ます。デフォルトの追跡対象ファイルとの比較から追跡対象外のファイルだけを除外するには--no-untrackedを使用します。この場合、出力には対象範囲が縮小されたことが記録されます。最終的なパッチ予算の確認では、必ずデフォルトの全体ビューを使用します。ユーザーから無視するよう求められても、ステージ済み、未ステージ、追跡対象外の変更を除外してはいけません。対象範囲を縮小したビューでは、最終的なパッチが予算内であることを証明できません。 -
根拠、契約、根本原因、または必要な範囲に変更が生じた場合は停止し、
GATEに戻ります。
State 5: VERIFY
意味のある最小限のチェックから始め、リスクに応じてのみ段階的に範囲を広げます。
- 変更前のチェックまたは対象を絞った回帰テストを再実行します。
- 必要なビルド、リンター、静的解析、統合、実行時、または手動受け入れのゲートを実行します。
AUDITのルールに従って最終差分をレビューします。- 最終パッチに対して
check_patch_scope.pyを再実行します。 - 既存の失敗と、パッチによって発生した失敗を区別します。
根拠への対処が完了しているか、明示的に延期され、動作契約が引き続き守られ、必要なチェックに合格しているか不足点が明示され、パッチが引き続き承認済みの範囲内かつ予算内にあり、差分に計画外の変更が含まれていない場合にのみ完了とします。
検証に失敗した場合:
- パッチによってベースラインが悪化している場合は、範囲を縮小するかロールバックします。
- 根本原因が不明な場合は、
AUDITに戻ります。 - 修正がアーキテクチャ上の判断になる場合は、
GATEに戻ります。 - 書き換え、新たな権限、またはより広い範囲が必要な場合は停止します。
報告の要件
必須の報告項目とすべての証拠を維持しつつ、各技術ラベルが現在のタスクで何を意味するかを説明してください。まず問題がユーザーまたはプロジェクトに及ぼす影響を示し、次に根拠となる証拠、修正内容、確認事項を提示してください。どのガイダンスレベルでも、ユーザーが明示的に範囲を免除しない限り、バグと必要な判断を詳しく説明してください。簡潔な要約で、必須の所見や不確実性を省略してはなりません。
読み取り専用の依頼では、次を報告してください。
Routing Decision
Findings
Refactor or Slimming Signals
Do Not Touch Yet
Verification Gaps
Gate Recommendation
Residual Risk
一括調査については、範囲/焦点、網羅範囲、未調査のパスを含めてください。文章の改善が対象の場合は、所見、証拠、重大度、必須項目、未検証の境界を削除せずに表現を改善してください。報告の保存は、プロジェクトで許可された出力手段のみを通じて行ってください。読み取り専用のレビューは、ソースの編集を許可するものではありません。
変更が許可されている場合は、次を報告してください。
Evidence and Gate Decision
Behavior Contract
Authorized Scope and Patch Budget
Pre-change Baseline
Change Summary
Verification Results
Final Scope Check
Residual Risk or Stop Reason
動作に実行時または手動での受け入れ確認が必要な場合、ドキュメントの品質や静的検証だけを根拠に、完了したと主張してはなりません。
リソース
- 分類、削除安全性のレビュー、一括調査用プロンプト、報告スキーマ、決定的なマージ規則については、references/audit-and-sweep.md を参照してください。
- ゲートのしきい値、動作契約、パッチ予算、実行制御、ロールバック規則については、references/gate-change-verify.md を参照してください。
- JSON 形式の監査結果をマージするには、
scripts/merge_audit_reports.pyを使用してください。 - 追跡対象、未追跡、バイナリのパッチ範囲を調べるには、
scripts/check_patch_scope.pyを使用してください。 - このスキルのディレクトリから
python -m unittest discover -s tests -vを実行して、同梱スクリプトのチェックを実施してください。