kaji: Skill for Claude Code

.claude/skills/incident-review/SKILL.md

incident-review is a skill for Claude Code from apokamo/kaji. It costs 90 tokens per session (1,871 once invoked), scanned A, original, Apache-2.0.

A review step for incident investigation reports and other evidence files. It runs an independent check in a temporary environment and issues a PASS or RETRY verdict.

In plain words
What is it for?
Use it after investigating an incident to verify reproduction results, evidence citations, rejected explanations, and missing evidence before writing the final report.
Why use it?
It separates judging the quality of the investigation from judging its conclusion. This helps catch missing evidence, weak attempts to disprove alternatives, or incomplete reproduction records.

Skill for Claude Code

Written for Claude Code: $ARGUMENTS substitution. Also seen: reads .claude/ paths; mentions subagents.

This is apokamo/kaji's own configuration. It tells Claude Code how to work on kaji itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything kaji configures →

Reuse

Borrowing it

Nothing to install: this file belongs to apokamo/kaji. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/apokamo/kaji/main/.claude/skills/incident-review/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/apokamo/kaji

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for incident-review

README.md
[![agentmods](https://agentmods.dev/badge/skills/apokamo/kaji/incident-review/github.svg)](https://agentmods.dev/skills/apokamo/kaji/incident-review)
Your own site
<a href="https://agentmods.dev/skills/apokamo/kaji/incident-review"><img src="https://agentmods.dev/badge/skills/apokamo/kaji/incident-review/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for incident-review

Your own site · 80×15
<a href="https://agentmods.dev/skills/apokamo/kaji/incident-review"><img src="https://agentmods.dev/badge/skills/apokamo/kaji/incident-review.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 90 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,871 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to medium

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • medium Agent Snooping · line 30
    Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
    Fix: Remove all code or instructions that list or read other skills' files or directories. Skills should operate independently; cross-skill access is a privilege escalation.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00090 $0.01871
Opus 5 $0.00045 $0.00936
Sonnet 5 $0.00018 $0.00374
Haiku 4.5 $0.00009 $0.00187

Measured 11d ago against content hash cb1b10d1da82, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

incident-review scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/incident-review/SKILL.md · 134 lines

How it starts

The opening of the file, as written. The whole thing — 134 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Incident Review(査読)

調査 artifact に対する実行型査読。main session は環境準備・転記・verdict 発行のみを担い、 検証本体は kaji-incident-reviewer subagent が使い捨て検証環境の中で行う。

判定軸の分離(#303 決定 D): 査読の評価対象は 調査品質のみ(受理基準の充足・反証への耐性・ 記述の充足)であり、conclusion の値そのものではない。「結論は INCONCLUSIVE だが棄却仮説・不足証拠・ 再現結果の記述が十分なので verdict は PASS」を明示的に許可する。

ワークフロー内の位置: investigate → review →(PASS: report / RETRY: fix)

入力

変数 説明
issue_id str 対象インシデントイシュー ID
issue_ref str 人間可読の Issue 参照
step_id str 現在のステップ ID
cycle_count / max_iterations int サイクル内ステップのため注入される

手動実行時は $ARGUMENTS 第 1 トークンを issue_id とする。

共通ルール

.claude/skills/incident-investigate/SKILL.md § 全 incident-* skill 共通ルールに従う (worktree_dir 非参照 / verdict 3 経路 / foreground + timeout / 副作用禁止 / ログ sanitize / auto-close hazard 回避)。

受理基準(§ 別軸設計。#303 決定 A / D)

  • conclusion が internal-bug / upstream / environment / transient / duplicate の場合: 実再現、または実障害ログの引用(<run_id>:<ファイル> 付き citation)が必須。欠けば RETRY。
  • conclusion が INCONCLUSIVE の場合: 棄却済み仮説(反証根拠つき)・不足証拠の列挙・ 試行した再現の記録が必須。欠けば RETRY。充足していれば PASS(結論が INCONCLUSIVE であること自体は 減点しない)。
  • risk-accepted は人間専用語彙。査読結果の語彙に含めない。

実行手順

Step 0: 前提ガード

artifact root を解決する(共通ルール参照。以降のパスはこの絶対 root 基準):

ART="$(kaji config artifacts-dir)"

調査 artifact($ART/[issue_id]/investigation/report.md)と直近の調査報告コメントが 存在することを確認する。対象が非インシデント(incident ラベルなし / identity marker なし)と判明した 場合は ABORT。

Step 1: 入力の収集

  1. 調査 artifact 全文($ART/[issue_id]/investigation/report.md)・インシデントイシュー本文・直近の調査報告コメントを読む。
  2. artifact のメタデータから調査対象 run_id 一覧・提案役モデルを取得する。

Step 2: 使い捨て検証環境の準備

# 例: main の HEAD を detach した一時 worktree。査読後に破棄する。
git worktree add --detach /tmp/kaji-incident-review-[issue_id] HEAD

隔離 venv または scratch dir でも可。main checkout を検証で汚さないことが要件。

Step 3: 査読役の起動(capability-based fallback)

docs/dev/development_workflow.md § Pre-Handoff Review と同型の分岐で査読役を起動する。

  • 経路 A(subagent): Agent tool で subagent_type: "kaji-incident-reviewer" を起動する。 prompt に「対象イシュー番号・本文/コメント要約・調査 artifact 全文・検証環境パス・調査対象 run_id 一覧・提案役モデル」を渡す(入力契約の SoT は .claude/agents/kaji-incident-reviewer.md § 入力)。
  • 経路 B(self-review, fallback): Agent tool が使えない runtime / 起動失敗時は、main session が .claude/agents/kaji-incident-reviewer.md の rubric を自セッションで適用する。この場合は縮退

Read the full file on GitHub · 134 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 11d ago First seen · 134 lines · 90 tokens per session scan A cb1b10d1da82

Subscribe to this mod's changes

incident-review is a skill published in the GitHub repository apokamo/kaji (12 stars, last pushed 4d ago), licensed Apache-2.0. It adds 90 tokens to every session and 1,871 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.