Migrate existing ADRs to YAML frontmatter format. Scans docs/decisions/ for ADRs without frontmatter, infers status from body text, shows dry-run for approval. Trigger: /adr-migrate
日本語の概要は準備中です。原文の説明を表示しています。
知らない分野にキャッチアップするとき、汎用的な言葉から界隈の用語・中心の人・場(学会・雑誌・個人ブログ・動画・リポジトリ・一覧)を特定し、 引用・リンク・著者を芋づる式にたどって、当たりの原文(論文も個人の記事や動画の字幕も)を要約せずそのまま ~/.local/share/imozuru/<話題>/sources/(リポジトリの作業のための調べものは <repo>/.tmp/docs/research/<話題>/sources/)に落とす。
周ごとに地図(map.md)を育て、要る主張の全部に原文が付くか飽和したら止める。見張りのモードでは、地図の場(Qiita・Zenn のタグ、note、YouTube、ブログ、arXiv)の新着を RSS で引いて原文の冒頭つきで並べる。
以下で使用:「芋づる式に調べて」「この分野をキャッチアップしたい」「界隈の用語と人から掘って」 「論文とか先行研究を漁って」「既存の技術を真似したいから元ネタを探して」「上手い人のやり方を集めて」「原文で落として」「/imozuru」 「〇〇って研究あるの?原典ほしい」「全然わからないから流れを掘って」「どういう界隈でどう呼ばれてるか知りたい」 「〇〇の新着見て」「今週の〇〇の記事まとめて」「キャッチアップ」「/imozuru watch」 "dig into this field", "find the canonical papers on X", "literature dive", "what's new in X this week"。
以下には使用しない: 答えが1つの事実の確認(年・有無だけ・仕様1つ → そのまま検索)/ 手元の PC の中の資料を探す/読んだ資料の要約や解説を書く。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
知らない分野を、言葉を知らないところから原文にたどりつくまで掘る。 芯は2つ。原文を要約せずに落とすことと、止めどきを確信度ではなく証拠で決めること。
references/theory.md既定は ~/.local/share/imozuru/<話題>/(話題は英小文字とハイフン。例 search-methods)。git リポジトリの中で頼まれ、調べものがそのリポジトリの作業(実装・設計・不具合の調査)のためなら <リポジトリのルート>/.tmp/docs/research/<話題>/ に置く。.tmp/ が gitignore されていないリポジトリでは、原文がコミットされうるので置く前にユーザーに聞く。ユーザーが別の場所を言えばそこに置く。以下ではこの置き場を <topic_dir> と書く。
map.md … 問い・要る主張・用語・人・場・原文の表・次の手がかり(書式は下)
log.md … 来た道。周ごとに、誰が何を探して何が出たか・判断とその理由。起動した検索役は、戻らなかったものも含めて1本ずつ書く(何を頼んだか・戻ったか・止めたか)
sources/ … 原文。PDF とその .txt、HTML は .md。要約ファイルは置かない
extracts.json … 抜き書き(止めたあとに書く・下の「抜き書きのページ」)
report.html … 抜き書きのページ(report.py が作る)
watch.tsv … 見張る先(見張りのモードを使ったときだけ)
watch/ … 見張りの結果。<日付>.md
0周目と各周の探索は、検索役のサブエージェントに任せる(以下「検索役」)。広く掃く探索は途中で判断が要らないので、軽いモデル(Haiku など)で足りる。読み取りと Web 検索だけ使える定義があればそれを使う。サブエージェントを使えない環境では、エージェントが自分で同じ頼み方の中身を順に検索する。
map.md を下の書式で作り、問いと、答えるのに要る主張を3〜6個並べる(例: 「この分野で〇〇をどう呼ぶか」「定番の手法は何か」「どこで失敗するか」)。主張は止めどきの物差しになる(HALT・Roh & Han 2026)。
主張は自分で甘く作れてしまう。試しでは5つ全部が「〜がある」で、1周で埋まって止まり、依頼の芯(「AI で生成した画像を」)が確かめられないまま残った。だから次を守る。
問いは途中で変わってよい(berrypicking)。変わったら map.md の問いと主張を書き直し、log.md に理由を書く。
検索役を違う探し方で2本並べる。既定は英語と日本語。片方で足りる分野なら「用語で検索」と「定番の総説と教科書を探す」に分ける。違う探し方の2本で同じものが出るほど、地図が埋まってきた印になる(capture-recapture の考え方・Kastner 2007)。
検索役への頼み方:
戻ったら、報告の中身を map.md の用語・人・場に足し、検索役の「探していない」を次の手がかりに移す。
検索役の報告はたいてい検索結果の抜粋がもとで、原文を開いていない(試しでは2本とも開いた回数0)。人の所属・「公開済み」・数字は外れていることがある。map.md に入れるときは末尾に (未確認) を付け、原文で確かめたら外す。
次の手がかりから、匂いの強いもの(何度も名前が出る・総説や教科書・定番として引かれる・何人もが「この人の記事を見て」と挙げる)を選んでたどる。たどり方は6つ(Bates 1989・Ellis 1987)。論文の世界でも個人の発信の世界でも同じ動きで、たどる先が違うだけ:
| 動き | 論文なら | 個人の発信なら | 道具 |
|---|---|---|---|
| 後ろへ | 参考文献 | 記事の中のリンク、「〇〇さんの記事を参考に」 | chain.py refs、手元の本文を grep |
| 前へ | 被引用(多い順) | その記事を紹介・引用している記事や投稿、はてブ | chain.py cites、検索役 |
| 著者で追う | 著者の他の論文 | その人のブログの過去記事、Zenn・Qiita・note の投稿一覧、YouTube のチャンネル | chain.py author、検索役 |
| 場を通しで見る | 中心の学会・雑誌 | Qiita・Zenn のタグ、pixiv の講座タグ、Discord・Reddit、awesome リスト | 検索役 |
| 近くを眺める | 同じ号・同じ一覧 | 関連記事、同じタグ、同じ人がまとめた再生リスト | 検索役 |
| 言葉で引き直す | 地図に増えた用語で検索 | 同じ。界隈の俗称・略語でも引く | 検索役 |
論文の無い分野ほど、知恵は個人の発信にある(塗り方・MIX・ツールの使いこなしなど)。権威のある場所だけに絞らない。
chain.py find の候補を年と題で確かめてから使うchain.py が0件を返す。OpenAlex に引用の登録が追いついていない(試しでは出て1年以内の論文で refs も cites も0件)。0件は「無い」ではない。後ろへは、落とした本文の参考文献の節を grep する(試しではこれで目当ての論文が見つかった)。前へは、検索役に「<題名> を引いている論文」を探させるfetch.py で落とす。OK が出たものだけ map.md の原文の表に足す。FAIL は理由と URL を log.md に残す(有料・404・ログインの壁)起動した検索役が全部戻ってから判断する。待たずに先へ進めた検索役は、その場で止める。
0周目は、検索役を並べて地図を作るまで(原文はまだ落とさなくてよい)。1周=手がかりから原文を落とし、そこから少なくとも1回たどる(後ろへ・前へ・著者で追うのどれか)まで。検索役を並べ直すかどうかは問わない。論文の無い分野では、落とした記事の中のリンクを後ろへたどれば1回と数える。検索役が空振りして親が自分で探した周も1周に数える(その周は飽和を数えない)。空振り=検索役の挙げた中に、落として当たりだったページが1つも無いこと(検索結果の件数ではない。検索役はページを開かずに報告するので、当たりかは親が落として初めて分かる)。
各周の終わりに、次のどれかなら止める。理由を log.md に書く。
1周目が終わるまで止めない。0周目で主張が全部埋まって見えても、当たりの論文から前へたどるか著者で追うのを1回はやってから判断する。早くやめて外す under-search は、AI の検索のもう1つの典型(Zhang ら 2026)。止めないときは、次の周にたどる手がかりを2〜4個選んで log.md に書いてから進む。
返す前に、自分が起動した検索役や裏で走らせた処理が残っていないか確かめ、残っていれば止める。止めたものは log.md に書く。2026-10-12 の試しでは、調べものを任せたエージェントが報告を返したあとも、中で起動したものが動き続けていた(何だったかは log.md に無く、分からなかった)。
止めたら、ユーザーに次を返す。
sources/<file> の何行目)。1主張1〜2行report.html・下の節)のパスを最初に示し、ほかに一番読んでほしい原文を2〜4本選んで、パスと「どこを読むか」を1行ずつ添える<topic_dir>/log.md の末尾に原文のまま残す(言い換えない)。止めどきの7割や周の上限を変えるかは、この記録を何回分か並べて決める(記憶では決めない)返事に要約や解説を書かない。ユーザーに「まとめて」と頼まれたら、そこで初めて書く。
原文を何十本も落としただけでは読まれない(英語の PDF や1時間の字幕のまま)。かといって要約すると早すぎる閉じに戻る。だから止めたら、抜き書き(Ellis の extracting)でページを作り、それを最初に渡す。
<topic_dir>/extracts.json を書く。要る主張ごとに節を立て、原文からそのまま切り出した文を並べる(ファイル・行・必要なら end)。英語には ja に訳を添える(訳だと分かる印がページに付く)。印(〔本人〕自動字幕 など)は mark に。2段組の PDF のように左右の段が1行に混ざる所は、抜き書きを「…」で区切ると区切りごとに順に照合される(省いたことはページにも「…」で見える)。食い違いは disagreements に並べるだけで、どれが正しいかは書かない。届かなかったものは unreached に。形の手本はリポジトリの examples/demo/extracts.json
形(report.py の冒頭と同じ。? は省いてよい):
{"title", "question", "stopped",
"claims": [{"claim", "status": "付いた|一部だけ|付かなかった", "note"?,
"quotes": [{"file", "line", "end"?, "text", "ja"?, "mark"?}]}],
"disagreements"?: [{"topic", "quotes": [{"file", "line", "text", "who", ...}]}],
"unreached"?: ["..."]}
scripts/report.py <topic_dir> を回す。抜き書きが原文の指定の行にそのまま在るかを機械で照合し、1つでも合わなければ HTML を作らずに止まる(言い換えが紛れ込むのを防ぐ)。合えば report.html ができる。各抜き書きは「前後を読む」で原文の前後を開ける掘ったあとの地図の「場」を、新着を追う先にする(Ellis の monitoring)。「〇〇の新着見て」「今週の〇〇まとめて」「/imozuru watch <話題>」で入る。ユーザーが頼んだときだけ回す。定期に自動で回すかは、何回か思いどおりに動いてから決める。
<topic_dir>/map.md が無いとき(いきなり「React の新着」と頼まれたとき)は、2つの入り方がある
scripts/watch.py add <topic_dir> <url> で足す。Qiita のタグ・ユーザー、Zenn のトピック・ユーザー、note のユーザー、Reddit、YouTube のチャンネル、RSS を出しているブログ、arXiv の検索(http://export.arxiv.org/api/query?search_query=...&sortBy=submittedDate&sortOrder=descending)が足せる。X と pixiv は RSS を出していないので足せない=見張れないことを返事に書く
watch.py add で決める。検索役は RSS の URL を推測で書き、「無い」と言った react.dev のフィードが実際は取れた。逆に「更新が止まっている」という検索役の言葉は、check の「最新の1件」で確かめるscripts/watch.py check <topic_dir> で前回から新しいものを出す(初回のフィードは直近14日・--days で変える)。結果は watch/<日付-時刻>.md に残る(同じ日に何度回しても前の結果は消えない)
--fresh。初回の窓の外の記事も「見た」と記録されるので、記録を無視して窓だけで選び直す> の引用)。エージェントの要約や点数は付けない(原文の冒頭なら書き手の言葉のまま選ぶ手がかりになる)。ユーザーが選んだもの、または要る主張に関わると見たものだけ fetch.py で原文を落とし、原文の表に印つきで足す
# map: <話題>
問い: <1〜2行>
入口の言葉: <最初に使った言葉>
## 要る主張
- [ ] <主張1> — <原文の場所。付いたら [x]>
## 用語
- <用語>(<日本語の呼び方>)— <出た URL か sources/ のファイル>
## 人
- <名前>(<所属>)— <代表作>
## 場
- <学会・雑誌・一覧・リポジトリ> — <URL>
## 原文(sources/)
| 論文・資料 | ファイル | 元の URL | どこから来たか(周・動き) |
| ---------- | -------- | -------- | -------------------------- |
## 次の手がかり
- <まだたどっていないもの> — <なぜ匂うか>
節の順番は変えない。追記は各節の末尾に足す(周をまたいで表が散らばるのを防ぐ)。原文の表は1論文1行で、PDF と .txt、抄録の .md のように複数のファイルがあれば同じ行に並べる。検索役由来で原文を開いていない行には(未確認)を付ける。
原文の表の「論文・資料」の欄には、頭に種類の印を1つ付ける。点数はつけない。どれを信じるかはユーザーが原文を読んで決める。
〔本人〕は個人の発信でも一次情報になる。〔観察〕は、観察した相手が名前で分かるならその人を「次の手がかり」に足す(その人自身の記録が本当の一次情報)。〔まとめ〕は入口としては便利でも、たどる先(後ろへ)を拾うのに使い、主張の根拠にはなるべく〔本人〕か〔論文〕を当てる。
印のあとに、分かる範囲で添える。
スクリプトは Python 3.10 以上の標準ライブラリだけで動く。外部コマンドは、あれば使う(無いときの動きは各行に書いた)。
scripts/fetch.py <sources_dir> <name> <url> — 落として本物か確かめる。PDF は .pdf と .txt(pdftotext -layout・poppler)、HTML は .md、YouTube は字幕を [分:秒] 文 の .md(yt-dlp・動画は落とさない)。文字の層が無い PDF は tesseract で OCR する。HTML は ax があれば ax で、無ければ標準ライブラリで本文を文字にする(見出しや表の形は ax のほうが残る)。取ってきたものは作業用のフォルダで検査し、通ったものだけを sources_dir へ移す。404・壁・短すぎる本文は FAIL(同じ名前の原文がすでにあれば、そのまま残る)。X は本文が取れないので取りに行かず FAIL=URL と、検索役が拾った抜粋を(未確認)で map.md に残すsources/x.md [12:34])scripts/report.py <topic_dir> [--check] — extracts.json の抜き書きを原文と照合し、合えば report.html にする。--check は照合だけscripts/watch.py add|list|check — 見張り。RSS / Atom を引いて前回からの新着を出す。検索を使わないので費用はかからず結果も揺れない。DOCTYPE・ENTITY を含むフィードは安全のため読まないscripts/chain.py find|refs|cites|author — OpenAlex で引用と著者をたどる。1日 1,000 回まで無料の枠で、プリペイド残高が 0 なら超えても止まるだけ。API キーや支払いの登録はしない。古めの論文に強く、新しい論文と同名の多い著者に弱い(author は同名の別人を掴むことがある)<著者>-<年>-<短い題>、arXiv は arxiv-<番号>-<短い題>Derived from MaryCache/imozuru (skills/imozuru) at commit bfd99e5e72d8e8ec3297a71fafa1eafbb49787b2 (MIT). See LICENSE in this directory.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Migrate existing ADRs to YAML frontmatter format. Scans docs/decisions/ for ADRs without frontmatter, infers status from body text, shows dry-run for approval. Trigger: /adr-migrate
日本語の概要は準備中です。原文の説明を表示しています。
Start or resume an ADR session. Without number: show status overview and recommend next actionable ADR. With number: provide phase-specific guidance. Trigger: /adr-session, /adr-session NNN, /adr-session new
日本語の概要は準備中です。原文の説明を表示しています。
Analyze a project's harness maturity and guide staged adoption of Harness Engineering best practices (quality loops, safety gates, linters, CLAUDE.md optimization).
日本語の概要は準備中です。原文の説明を表示しています。
Standardized bug fix workflow using TDD (Red-Green-Refactor). Use when fixing bugs, resolving issues, or when the user invokes /bugfix. Ensures root cause analysis, failing test first, then minimal fix.
日本語の概要は準備中です。原文の説明を表示しています。
Create detailed specifications by iteratively clarifying unclear points for Plan mode. Use when: After completing a plan when detailed requirements need clarification before implementation.
日本語の概要は準備中です。原文の説明を表示しています。
Policy-enforcing installer that deploys hardened Claude Code Action workflows (`@claude` manual mention + dependency-bot auto-fix) into a personal GitHub repository the user administers. Use when asked to introduce Claude Code Action, apply `@claude` mention support, or set up automated CI auto-fix for dependency bot PRs, using the security-hardened templates shipped with this skill.
日本語の概要は準備中です。原文の説明を表示しています。