編集ツールに剥がされた `<details>` トグルを、git 差分を見て消えたタグだけ戻す。本文の文字は変えない。「restore-toggles」「トグルを復元して」と指示されたとき。
Install
npx skillscat add kasiopeiya/claude-dev-template/restore-toggles Install via the SkillsCat registry.
Restore Toggles(剥がれたトグルを戻す)
直前のコミットと作業ツリーを見比べ、消えた <details> のタグだけを元の位置に戻す。本文の文字は1文字も変えない。
対象は文書中のすべてのトグルで、summary の中身は問わない。 剥がすツールはタグを見て落とすのであって、中身を読んで選んでいるわけではないからである。
なぜこれが要るか
Markdown を見た目のまま編集するエディタ(VSCode 拡張の Markdown for Humans など)は、保存のたびに文書を内部モデルへ変換して書き戻す。そのモデルに生 HTML のノードが無いと、<details> と <summary> のタグが落ち、summary の文字列だけが地の文の段落として残る。
手動起動なのは、復元と検出が別の仕事だから。 呼ぶのは「剥がれたと気づいた人」であり、気づく仕組みは CI 側が受け持つ。
前提
正しい形が git のどこかに残っていることが前提である。残っていなければこのスキルは使えない。
- まだコミットしていない:
HEAD - すでにコミットしてしまった:
git log -S '<details>' -- <path>で正しい版を探す
手順
1. 対象ファイルを決める
引数があればそのファイル。無ければ git diff --name-only -- '*.md' の結果を対象にする。1件も無ければ、その旨を伝えて終わる。
2. 比較元のトグルを洗い出す
git show <比較元>:<path> で元の中身を取り、<details> から </details> までのブロックをすべて拾う。ブロックごとに summary の文字列と本文を控える。控えた summary は後でそのまま書き戻すので、文字を変えたり揃えたりしない。
3. 作業ツリーの状態で分類する
比較元のブロック1つずつについて、作業ツリーの状態を次の4つに振り分ける。判定に使うのはブロックの有無だけで、summary が何と書いてあるかは見ない。
| 作業ツリーの状態 | 判定 | すること |
|---|---|---|
<details> があり、比較元と同じ |
無事 | 何もしない |
summary の文字列が地の文の行として残っている |
剥がれ | その行を起点にタグを戻す |
| ブロックごと消えている | 消失 | 復元しない。 報告だけする |
| 比較元に無い新しい箇所にトグルが無い | 対象外 | 復元しない。 規約違反の疑いとして報告する |
消失を復元しないのは、本文まで消えているとき「エディタが落としたのか、人が消したのか」を区別できないからである。区別できないものを戻すと、人が消したはずの文章が黙って復活する。
4. タグを戻す
剥がれと判定した箇所だけを直す。地の文として残っている行を <summary>◯◯</summary> に置き換え、その前に <details>、ブロックの末尾に </details> を入れる。
ブロックの末尾は比較元から取る。作業ツリーの見た目から推測してはならない。
[!IMPORTANT]
(AI・必須) 挿入してよいのは<details>・</details>・<summary>行の3行と、その前後に必要な空行だけである。summaryの文字列は比較元をそのまま使い、本文の文字は1文字も変えない。整形も、表記ゆれの修正も、削除テストの適用もしない。上記の4分類のどれにも当てはまらない状態を見つけたら、復元せず「対象外」として報告する。
本文が比較元と違っていても、それは同じ保存で人が書き換えた結果なので、作業ツリーの本文をそのまま残す。
5. 検証する
復元を始める前に、対象ファイルをスクラッチパッドへ退避しておく。 退避した版と復元後を diff で比べ、増えた行がタグ行と空行だけであることを確かめる。他の行が1行でも動いていたら、その変更を取り消してから報告する。
git diff では確かめられない。作業ツリーには剥がれ以外の変更も混ざっているためである。
報告
復元した箇所・しなかった箇所を、ファイルと行番号で挙げる。しなかった箇所は理由(消失/対象外)を書き、消失した箇所には git show <比較元>:<path> で本文を取り出せることを添える。
使用方法
/restore-toggles
/restore-toggles samples/docs/design/cicd-design.md