Skip to content
Apothem
ハーネスアダプター

Kiro

Kiro(GA)向けの Apothem ハーネスアダプター。

ベンダー: AWS インストール名: kiro ステータス: GA ネイティブ設定: <project>/.kiro/steering/apothem-rules.md

インストール

apothem install --harness kiro --project /path/to/project

アダプターは、共有の Apothem ルールとガバナンス面から、プロジェクトスコープの Kiro ステアリングファイルを 1 つ書き込み、Apothem のヘルパーを Kiro のカスタムエージェントファイルとしてプロジェクト内に書き込み(カスタムエージェントファイルを参照)、さらにフックを 1 つ書き込みます(フックを参照)。

また、プロジェクトに触れる前に、Apothem のスキルと、それらが引用するルールとテンプレートを、あなたのユーザーホームに書き込みます(プロジェクト外のファイルを参照)。

書き込まれるファイル:

  • <project>/.kiro/steering/apothem-rules.md:ステアリングファイル。
  • <project>/.kiro/agents/<name>.md:Apothem の各ヘルパーにつき 1 つ、プロジェクト内に。
  • <project>/.kiro/hooks/apothem.json:フックファイル、プロジェクト内に。そのフォルダー内にあるあなた自身のフックファイルには触れません。
  • <project>/.apothem/support/kiro/hooks/:フックスクリプト、プロジェクト内に。
  • ~/.kiro/skills/<name>/SKILL.md:Apothem の各スキルと各コマンドにつき 1 つ、あなたのユーザーホームに。
  • ~/.config/apothem/rules/ と ~/.config/apothem/templates/:あなたのユーザーホームに。

プロジェクト外のファイル

インストールは、プロジェクト内の何かを変更する前に、Apothem のスキルをあなたのユーザーホームにも書き込みます。

フォルダーApothem がそこに書き込むもの
~/.kiro/skills/Apothem の各スキルにつき SKILL.md を含むフォルダーを 1 つ、そして Apothem の各コマンドにつき 1 つ(コマンドは同じ名前のスキルになります)。
~/.config/apothem/rules/, ~/.config/apothem/templates/スキルとステアリングファイルが参照するルールとテンプレート。

これらのフォルダーは共有されます。プロジェクト専用ではありません。

  • kiro をインストールするすべてのプロジェクトが同じ ~/.kiro/skills/ のコピーを使い、インストールは毎回同じファイルをそこに書き込みます。そのフォルダーを読むツールは Kiro だけです。~/.config/apothem/ 配下のルールとテンプレートは、他のツールのインストールによっても同じファイルで書き込まれます。
  • --project は、書き込むステアリングファイルと、インストールがどのプロジェクトに属するかを選びます。スキルの書き込み先は変わりません。
  • インストールは、あなたのリポジトリにスキルファイルもルールファイルも追加しません。プロジェクトが受け取るのは、ステアリングファイル、.kiro/agents/ 内のカスタムエージェントファイル、フックファイル .kiro/hooks/apothem.json、そしてプロジェクトへのインストールが毎回作成する .apothem/ フォルダーで、このフォルダーにはフックスクリプトも入ります。
  • ホームのフォルダーが最初に書き込まれます。それが失敗した場合、たとえばパス内のフォルダーがホームディレクトリの外へ出るリンクである場合(内側にとどまるリンクはたどられます)や書き込めない場合、インストールはプロジェクト内の何かが変わる前にエラーで停止します。
  • Apothem のスキルの名前を持ち、Apothem が書き込んだのではないスキルフォルダーはそのまま残され、インストールはその名前を挙げる警告を表示します。名前を変えるか移動してから、apothem update を実行してください。その名前が占有されている間、apothem verify は失敗します。
  • ファイルの合計は数メガバイトになります。

インストールは、--project の外に書き込むフォルダーを挙げるメモを表示し、--dry-run はそれらを一覧表示します。

カスタムエージェントファイル

Kiro のカスタムエージェントに関するドキュメントによれば、Kiro はカスタムエージェントを <project>/.kiro/agents/ 内の Markdown ファイルから読み取ります。 インストールは、Apothem のヘルパーごとに 1 つのファイルを、14 個すべてについてそのフォルダーに書き込みます。 対象は、Markdown 形式を読むバージョンである Kiro IDE 1.0 と Kiro CLI V3(kiro-cli --v3)です。 V3 は allowedTools を持ち permissions ブロックを持たない JSON プロファイルをスキップするため、インストールは JSON プロファイルも、旧来の CLI 2.x のキーも一切書き込みません。 インストールはプロジェクト向けのみです。ユーザーフォルダー ~/.kiro/agents/ には書き込みません。

各ファイルはヘルパーの指示を変更せずに保持し、次のフロントマターキーを持ちます。

キーApothem が書き込むもの
name, descriptionヘルパーの名前と説明。Kiro のメインエージェントは説明によってヘルパーを選びます。
toolsヘルパーが使えるツール。Kiro のツールカテゴリーの一覧として:["read", "shell"]。ヘルパーが何も制限しない場合は省略されます。

Kiro にはツールの一覧が 1 つしかないため、ヘルパーの許可ツールと拒否ツールがその一覧にまとめられます。 カテゴリーは read、write、shell、web、subagent です。

ヘルパーのツールKiro のカテゴリー
Read, Glob, Grepread
Write, Edit, MultiEdit, NotebookEditwrite
Bash, PowerShellshell
WebSearch, WebFetchweb
Agent, Tasksubagent

カテゴリーのないツール(TodoWrite、Monitor、Artifact、TaskCreate、TaskUpdate、MCP のエントリー)は除外されます。 ヘルパーがあるカテゴリー内のいずれかのツールを拒否されている場合、そのカテゴリーは除外されるため、ヘルパーが拒否されたツールを得ることはありません。ファイルを編集できないヘルパーには write カテゴリーが付きません。 許可ツールがすべて除外されたヘルパーは tools: [] として書き込まれるため、すべてのツールが与えられることはありません。 2 つのヘルパー(mcp-builder と refactor-surgeon)が write を持ち、9 つが shell を、3 つが web を持ちます。 インストールは model キーを書き込まないため、ヘルパーは Kiro が選択するモデルで動作します。また permissions、excludedTools、resources、mcpServers、hooks のいずれも書き込みません。

知っておくべきこと:

  • Kiro は、あなたがワークスペースを信頼するまで、そのワークスペースのカスタムエージェントファイルを読み込みません。Kiro CLI 2.33 以降は、あるフォルダーで対話型の V3 セッションを初めて開始したときに「Trust this workspace?」と尋ねます。Kiro がヘルパーを 1 つも一覧表示しない場合は、そのフォルダーを信頼して新しいセッションを開始してください。
  • Kiro CLI 2.x が V3 の Markdown エージェントを読み込むかどうかを、Apothem は確認していません。IDE を使うか、kiro-cli --v3 を実行してください。
  • エージェントファイルは通常のプロジェクトファイルです。プロジェクトと一緒にコミットするか、.kiro/agents/ を .gitignore に記載してください。Apothem はあなたの代わりに選びません。
  • Apothem のヘルパーの名前を持つあなたのファイルは、~/.apothem/backups/ 配下に保存されてから置き換えられます。アンインストールはそれを元に戻しません。JSON プロファイルを含め、他の名前のファイルには決して触れません。
  • カスタムエージェントがデフォルトで ~/.kiro/skills/ 内のスキルを参照できるかどうかについて、Kiro のページの記述は食い違っています。スキルのページはエージェントに skill:// リソースが必要だとしている一方、設定リファレンスはエージェントがデフォルトのスキルを継承するとしています。インストールは resources キーを追加しないため、ヘルパーがスキルを参照できるのは後者の読み方が正しい場合だけです。
  • Kiro の組み込みツールのページには、各カテゴリーに一般的に含まれるツールが挙げられています。read カテゴリーにはファイル検索とテキスト検索のツール(CLI 2.x の glob と grep)が含まれ、これが Glob と Grep がそこに対応付けられる理由です。また code(構文木によるコード解析)と introspect(Kiro 自体についての質問に答える)も含まれるため、read を持つヘルパーは両方を使えます。このページは code を write の下にも挙げており、このツールがファイルを編集するかどうかは述べていません。
  • tools キーが省略された場合に Kiro がどうするか、また name 以外に Kiro がどのフロントマターキーを必要とするかを、Apothem は確認していません。

フック

Kiro のフックに関するドキュメントによれば、Kiro は <project>/.kiro/hooks/ 内の JSON ファイルからフックを実行します。 インストールはそこに apothem.json(フックファイルのバージョン v1)というファイルを 1 つ書き込み、その中にフックを 1 つ置きます。

トリガー実行されるもの
SessionStartセッションのブートストラップ:セッションのメタデータ、スキルのインデックス、メモリーとプランの要約、そして常設の姿勢を、モデルのコンテキストに追加します。

このフックはモデルにコンテキストを追加します。ツール呼び出しやセッションをブロックすることはありません。

Apothem は Kiro に PreToolUse フックも PostToolUse フックも登録しません。 Kiro がコマンドの出力をモデルのコンテキストに追加するのは SessionStart と UserPromptSubmit の場合だけで、ツールイベントではそれを無視します。 ツールイベントに登録したガードは、ツール呼び出しのたびにプロセスの起動コストがかかるうえ何も届けないため、書き込み・編集・シェルのガード、コンテキストサイズの助言、セッション終了プロトコルは、それらを届けられるツールにとどまります。 インストールは UserPromptSubmit 用のフックを書き込まず、ユーザーフォルダー ~/.kiro/hooks/ にもフックを書き込みません。

ファイルの書き込み先

ファイル内容
<project>/.kiro/hooks/apothem.jsonフックの登録。Apothem が所有するのはこの 1 ファイルです。
<project>/.apothem/support/kiro/hooks/ディスパッチャースクリプト、そのヘルパー、そのメッセージファイル。

フックファイル内のコマンドは次のようになり、2 つのパスの代わりにあなたのインタープリターとプロジェクトのパスが入ります。

"/path/to/python" "/path/to/project/.apothem/support/kiro/hooks/dispatch.py" --contract kiro SessionStart

--contract kiro は、ディスパッチャーにコンテキストをプレーンテキストとして出力させます。これは Kiro が SessionStart でコンテキストに追加する形式です。 Kiro は Windows でのコマンドアクションに使うシェルを文書化していません。 コマンドは sh と cmd.exe 向けに、引用符で囲んだスラッシュ区切りのインタープリターパスで書かれます。あなたのマシンで Kiro がそれを PowerShell で実行する場合、引用符で囲んだパスの前に呼び出し演算子(&)が必要になり、これは手で追加できます。

ワークスペースを信頼してください。 Kiro CLI 2.33 以降は、あなたがワークスペースを信頼した後でのみ、そのワークスペースのフックを読み込みます。あるフォルダーで対話型の V3 セッション(kiro-cli --v3)を初めて開始したときに「Trust this workspace?」と尋ねます。 Kiro Web のセッションはフックを実行しません。 インストールはこれをメモとして表示します。

コミットには注意してください。 コマンドには、実行時に Apothem が見つけたインタープリターとプロジェクトの絶対パスが記されるため、このファイルはあなたのマシンに固有のものです。また、それが実行するスクリプトは .apothem/ にあり、プロジェクトの .gitignore スニペットはこれを無視します。 .kiro/hooks/apothem.json をコミットすると、チームメイトのチェックアウトには何も指さないフックが入ります。Kiro は失敗したコマンドについて警告を表示し、セッションは続行します。 .kiro/hooks/apothem.json を .gitignore に追加するか、同じレイアウトを共有するチームの場合にのみコミットしてください。 インストールは .gitignore を編集しません。

あなた自身のフック。 .kiro/hooks/ 内のあなたのフックファイルは、決して読み取られることも変更されることもありません。 apothem.json 自体にあなたが追加したフックは残ります。更新とアンインストールが置き換えまたは削除するのは、コマンドが Apothem のディスパッチャー(--contract kiro 付きの .apothem/support/kiro/hooks/dispatch.py。どのプロジェクトパスの下で書き込まれたかは問いません)を実行するフックだけです。 名前が同じだけのあなたのフックや、python -m apothem.conformity.gate を実行するフックが、Apothem のものとみなされることはありません。 有効な JSON でないファイルは、~/.apothem/backups/ 配下に保存されてから置き換えられます。

シェルが誤読するパス。 $、バッククォート、ダブルクォート、バックスラッシュを含むプロジェクトパスやインタープリターパスは、何かが書き込まれる前に拒否されます。引用符で囲んだコマンドの中では、別のファイルを実行したり、コマンドが書き込まれる JSON を壊したりするためです。 エラーはそのパスを挙げます。プロジェクトを移動するか名前を変えてから、再度インストールしてください。 パス内のスペースやアポストロフィは問題ありません。

フックをオフにする。 Kiro の環境で APOTHEM_HOOKS_DISABLE=1 を設定すると、Apothem のフックが無効になります。 更新は Apothem のエントリーを書き直すため、エントリーへの編集は保持されませんが、例外が 1 つあります。エントリーに "enabled": false を設定してください。Kiro はこれを、フックを削除せずにスキップするものとして文書化しており、更新はこの設定を保持します。

プロファイルからネイティブ設定へのマッピング

アダプターは Apothem の共有プロファイルを読み取り、apothem install または apothem update を実行するたびに、プロジェクトのステアリングファイルをレンダリングします。 信頼できる情報源は共有プロファイルです。生成されたファイルへのプロジェクトローカルな編集は、次回の同期が Apothem の管理するコンテンツを置き換える前にバックアップされます。

Kiro はインクルージョン設定がファイルの最初の内容であることを要求するため、このファイルは inclusion: always フロントマターで始まります。 Apothem 管理のブロックはその後に続きます。ブロックの後にあなたが追加したテキストは、同期のたびに保持されます。

互換性に関する注意

Kiro のステアリング面は .kiro/steering/ 配下のプロジェクトスコープです。 アダプターは inclusion: always フロントマターを持つ専用の apothem-rules.md ステアリングファイルを書き込み、オペレーターが作成した Kiro の基盤ファイル(product.md、tech.md、structure.md)を決して上書きしません。 Kiro のスペック(.kiro/specs/)はオペレーターの所有です。Apothem はそれらを書き込みません。 フックファイルは .kiro/hooks/apothem.json を 1 つだけ書き込み、.kiro/hooks/ 内の他のファイルは書き込みません。

Kiro はグローバルスキル用に ~/.kiro/skills/ を文書化しており、~/.agents/skills/ には言及していないため、インストールはツール横断のフォルダーではなく Kiro のフォルダーに書き込みます。 同じ名前のワークスペーススキルは、グローバルスキルより優先されます。 記載のない SKILL.md のヘッダーキーを Kiro がどう扱うかを、Apothem は確認していません。

検証

apothem verify --harness kiro --project /path/to/project

verify コマンドは次のことを確認します。

  1. ネイティブ設定が想定されたパスに存在すること。
  2. .kiro/agents/ フォルダーを含め、管理対象の各ターゲットが存在すること。管理対象のファイルは空ではなく、JSON または YAML の設定は解析できること。--profile PATH を追加すると、インストールされたファイルがそのプロファイルと一致することも確認します。.kiro/agents/ については、フォルダーが存在することを確認し、各ヘルパーファイルがその中にあることは確認しません。コマンド apothem diff --harness kiro --project /path/to/project は、欠けているヘルパーファイルや古くなったヘルパーファイルを一覧表示します。フックファイル .kiro/hooks/apothem.json は、存在し、空ではなく、JSON として解析でき、Apothem のディスパッチャーを実行するフックを含んでいる必要があり、フックスクリプトは .apothem/support/kiro/hooks/ にある必要があります。このチェックはフックを実行しません。
  3. どのインストールが書き込んだかにかかわらず、Apothem の各スキルフォルダーが SKILL.md とともに所定の場所にあり、Apothem の名前を持つスキルフォルダーがどれも、Apothem が書き込んだのではないものに属していないこと。チェックが失敗すると、欠けているフォルダーや外部のフォルダーの名前が挙げられます。
  4. アダプター固有の検証ルーチンが成功を報告すること。

更新

apothem update --harness kiro --project /path/to/project

現在の共有プロファイルの状態から、プロジェクトのステアリングファイルを再導出します。

更新は、ファイルが現在のものと異なるスキルフォルダーも書き直します。 スキルを書き込まなかった以前のリリースでインストールした場合、更新はスキルを追加します。 現在のものと異なるカスタムエージェントファイルを書き直し、欠けているものを追加します。 また、フックスクリプトと .kiro/hooks/apothem.json 内の Apothem のフックも更新し、そのファイル内のあなたのフックは保持します。

アンインストール

apothem uninstall --harness kiro --project /path/to/project

<project>/.kiro/steering/apothem-rules.md から、Apothem ブロックと、その上に Apothem が書き込んだフロントマターを削除し、ファイル内のそれ以外のテキストは保持します。 ファイルが削除されるのは、その中に他に何も残っていない場合のみです。 変更の前に、ファイルのタイムスタンプ付きコピーが ~/.apothem/backups/ 配下に保存されます。プロジェクト内にバックアップファイルは残りません。 共有プロファイルの YAML と Apothem エンジンには影響しません。

アンインストールは、<project>/.kiro/agents/ に書き込んだカスタムエージェントファイルも削除し、そこにある他のファイルは残します。フォルダーは空になった場合に削除されます。 <project>/.kiro/hooks/apothem.json から Apothem のフックを、そのコマンド内のディスパッチャーのパスによって識別して削除するため、インストール記録がなくても機能します。そのファイル内のあなたのフックは保持します。 ファイルは、その中に他に何もない場合に削除され、あなたの他のフックファイルには触れません。 ファイルにアンインストールが読み取れないコメントがある場合は、ファイルをそのまま残し、フックをスキップしたことを理由とともに報告します。Apothem のフックは手で削除してください。 <project>/.apothem/support/kiro/hooks/ 内のフックスクリプトも削除されます。 ~/.kiro/skills/ に書き込んだスキルフォルダーと ~/.config/apothem/ 内のルールとテンプレートも削除しますが、それは他の Apothem のインストールがまだそれらを使っていない場合に限ります。 別のプロジェクトや、そのフォルダーを共有する別のツールが使っている可能性があります。 その場合、アンインストールはフォルダーを残し、どのインストールがそれらを使っているかを表示し、最後のアンインストールがそれらを削除します。 あなたがそれらのフォルダーに追加したファイルは残り、空になったフォルダーは削除されます。 各フォルダーは、削除される前に ~/.apothem/backups/ 配下にバックアップされます。

コンフォーミティゲート

python -m apothem.conformity.gate --all .

トラブルシューティング

症状対処
設定ファイルが見つからないapothem install --harness kiro --project /path/to/project を再実行する
検証が失敗したapothem update --harness kiro --project /path/to/project を実行してから、再度検証する
Kiro が Apothem のヘルパーを 1 つも一覧表示しないワークスペースを信頼し(CLI は、あるフォルダーでの最初の対話型 V3 セッションで「Trust this workspace?」と尋ねる)、IDE または kiro-cli --v3 を使う
Apothem のフックが実行されないワークスペースを信頼し(CLI は、あるフォルダーでの最初の対話型 V3 セッションで「Trust this workspace?」と尋ねる)、IDE または kiro-cli --v3 を使う。Kiro Web のセッションはフックを実行しない。セッション開始時にコマンドについての警告が出る場合は、このマシンにインタープリターまたは .apothem/support/kiro/hooks/ フォルダーがない。そのマシンで apothem install --harness kiro --project /path/to/project を実行する
apothem verify が欠けているスキルフォルダーの名前を挙げるapothem install --harness kiro --project /path/to/project を実行する。これでフォルダーが復元される
インストールまたは更新が、スキルフォルダーをスキップしたと警告するApothem のスキルの名前を持つフォルダーがスキルフォルダー内にすでに存在し、Apothem が書き込んだものではない。名前を変えるか移動してから、apothem update を実行する
インストールがプロジェクトを変更する前に停止するホーム内への書き込みが失敗した。エラーを読み、それが挙げるフォルダー(ホームディレクトリの外へ出るリンク、フォルダーがあるべき場所にあるファイル、または読み取り専用のフォルダー)を修正してから、再度インストールする
想定外の設定内容~/.config/apothem/profile.yaml または --profile PATH を確認してから、apothem update --harness kiro --project /path/to/project を再実行する

設定ノブ

フラグデフォルト説明
--dry-runfalseファイルを書き込まずにインストールをプレビューする。

関連項目

On this page