mcpField
S
scrolls-hide

scrolls-hide

github.com/sugatorayエージェントワークフロー4132 回インストール6 週間前に更新
リポジトリ

scrolls-hide について

プロジェクト内の可視状態の `docs/scrolls/` を `.scrolls` に改名し、定めた範囲内の参照を更新するスキルです。Bash と PowerShell のスクリプトを備え、再帰検索を選べるほか、変更しない参照は手動確認に回します。

主な機能

  1. 01`scrolls` を `.scrolls` に改名
  2. 02Bash と PowerShell のスクリプト
  3. 03パスまたはリポジトリルートの指定
  4. 04任意の深さ制限付き再帰検索
  5. 05対象範囲内の参照を更新

活用シーン

  1. 01ディレクトリを隠す規約に戻す
  2. 02指定パッケージの scrolls フォルダーを隠す
  3. 03ネストした scrolls フォルダーを検索
  4. 04残った旧パス参照を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sugatoray/aiskills --skill scrolls-hide

インストール後、Claude Code で/scrolls-hideを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

CHANGELOG.md
README.md
agents/
openai.yaml
meta/
MAINTAINERS.md
scripts/
hide.ps1
hide.sh
tests/
test_hide.ps1
test_hide.sh

詳細

docs/scrolls を非表示にする

プロジェクトによっては、scrolls フォルダーを表示した状態(scrolls、たとえば /scrolls-setup --unhide または以前の /scrolls-unhide の実行後)で運用していて、後からドットファイルとして非表示にする既定の状態に戻したい場合があります。このスキルは scrolls を .scrolls に名前変更し、確実に見つけられる範囲で古いパスへの参照をすべて修正します。対象範囲外のファイルを推測で編集することはありません。これは /scrolls-unhide の鏡像で、同じ仕組みを逆方向に適用します。

-t/--reporoot が指定されていない限り、すべての操作は現在の作業ディレクトリを基準にします。このスキル自体の場所は基準にしません。

クロスプラットフォーム

同梱スクリプトには、hide.sh(bash — macOS、Linux、または Git Bash/WSL を使う Windows 用)と hide.ps1(PowerShell 7 以降 — Windows 用、または pwsh がインストールされた macOS/Linux 用)の 2 つの形式があります。どちらもまったく同じ形式の同じフラグ(-p/--path、-t/--reporoot、-l/--local、-r/--recurse)を受け付け、同じ出力を生成します。異なるのは起動方法だけです。実際に利用できるものを選んでください。bash --version を試し、成功したら .sh を使用します。そうでなければ、pwsh を使って .ps1 を実行してください(推奨 — インストールされていない場合は https://aka.ms/powershell からインストールしてください)。pwsh が本当に利用できない場合に限り、Windows に組み込まれている Windows PowerShell powershell.exe を使用してください(古いバージョンでの動作確認はしていません。このスクリプトは pwsh を対象に作成し、検証しています)。

オプション

呼び出しテキストから、順不同で以下のオプションを読み取ってください。ここには実際の argv パーサーはないため、プレーンテキストから自分で取り出してください。

  • -p <path> / --path=<path> / --path <path> — 現在のディレクトリの代わりに操作対象とするベースディレクトリです。複数の場所を一度に対象にするため、繰り返し指定できます(モノレポでの -p packages/api -p packages/web など)。
  • -t / --reporoot — 実際にどのサブディレクトリから呼び出したかにかかわらず、git リポジトリの最上位($(git rev-parse --show-toplevel))をベースディレクトリとして使用します。現在のディレクトリが git リポジトリ内にない場合は、明確なメッセージを表示して失敗します。
  • -l / --local — 現在の作業ディレクトリを明示的にベースディレクトリとして使用します。-p/-t/-l のいずれも指定されていない場合も、既定では同じ動作になります。このフラグは、その動作を意図的に選ぶことを示すために用意されています。
  • -r / --recurse — ベースディレクトリの docs/scrolls だけを確認するのではなく、その下を再帰的に検索して scrolls フォルダーを探します。grep/cp/rm などのツールにおける -r と同じ意味です。既定ではオフで、対象範囲を広げる場合に指定します。上記のいずれか(またはどれも指定せず、cwd から再帰検索する場合)と組み合わせてください。

-p、-t、-l は、ベースディレクトリの選び方がそれぞれ異なります。-t と -l はそれぞれ単一のディレクトリに解決されるため、-p や互いとの併用はできません。より具体的な場所を指定する場合は、-p を(繰り返し)指定してください。-r は独立しており、いずれの指定とも組み合わせられます。ベースディレクトリが指定されていない場合、同梱スクリプトは、ユーザーが設定していれば DEFAULT_SCROLLS_RELPATH 環境変数を、そうでなければ現在のディレクトリを既定値として使用します。その既定値が再帰検索ではなく、git リポジトリ内でリポジトリの最上位とも異なる場合、スクリプトは代替手段として -t/-r についての注記を表示します。そうしないと、リポジトリ内の別の場所にある scrolls フォルダーが、エラーにはならず見落とされる可能性があるためです。

ドットのない scrolls という名前のディレクトリは .scrolls よりも一般的な名前なので、/scrolls-unhide よりも誤検出が起きやすくなります。以下で説明する STARTER.md の存在確認があるため、再帰検索を安全に行えます。

手順

1. 同梱スクリプトを実行する
bash <skill-dir>/scripts/hide.sh [-p BASE ...] [-t] [-l] [-r]
pwsh <skill-dir>/scripts/hide.ps1 [-p BASE ...] [-t] [-l] [-r]

ユーザーが指定したフラグは、環境に合うほうのコマンドに、同じ形式のまま渡してください(上記の「クロスプラットフォーム」を参照)。デフォルトを使用する場合は、フラグを省略してください。スクリプトは、解決された各ベースディレクトリに対して次の処理を行います。

  • -r を指定しない場合(デフォルト):確認する場所は1か所だけです。ベースディレクトリ自体がスクロールフォルダー(STARTER.md を含む)であればそこを、そうでなければ <base>/docs/scrolls を確認します。高速で、デフォルトで /scrolls-setup//scrolls-update が使用する場所とも一致するため、引数なしで実行すれば、まず最も妥当な場所が対象になります。
  • -r/--recurse を指定する場合:ベースディレクトリ以下の、上限のある階層数までを検索し、名前が文字どおり scrolls で、STARTER.md を含むディレクトリを探します。この条件があるため、広いベースディレクトリ(リポジトリ全体であっても)から安全に再帰検索できます。たまたま同じ名前が付いているだけで STARTER.md がないディレクトリは無視され、負荷の高い一般的な依存関係/ベンダーディレクトリ(node_modules、.git、vendor、dist、build、.venv、venv、__pycache__、target、.next、.cache)には降りずに検索を打ち切ります。

どちらの場合も、見つかった各フォルダーに対して次の処理を行います。

  1. 隣に .scrolls フォルダーがすでに存在する場合は、理由を報告してスキップします。それ以外の場合、リポジトリとファイルが Git の追跡対象であれば git mv で名前を変更して履歴を保持し、そうでなければ通常の mv を使います。
  2. 移動したフォルダー内のファイルにある古いパスへの参照を書き換えます(STARTER.md は自身のパスを全体にわたって参照しているため、これも対象になります)。また、該当フォルダーの docs と完全に同じ階層にある SCROLLS.md ファイルがあれば、そのファイル内の参照も書き換えます。SCROLLS.md をより広い範囲で検索することはありません。CLAUDE.md 自体は変更しません。/scrolls-setup は、スクロールのパスを直接指すのではなく、SCROLLS.md への固定ポインターとして書き込むため、書き換える対象がないからです。/scrolls-setup は、SCROLLS.md 自体の場所を基準にした短くて移植可能な参照(docs/scrolls)を書き込むため、複数の場所をまとめて処理する際、異なる2つのスクロールフォルダーがまったく同じ短い文字列を正当に共有する場合があります。SCROLLS.md を広く検索して一致するファイルを書き換えると、無関係な兄弟パッケージのファイルまで書き換えるおそれがあります。(古い規約でカスタムの --path を使って設定されたスクロールフォルダー向けに、検出された完全なパスも書き換えます。)
  3. 近くにあるファイルのうち、古いパスへの言及が残っているものを表示します。これらは報告のみで、編集はしません。他のスクロールフォルダー内のファイルは対象外です(共有された短縮形式の規約では、よく誤検出の原因になるためです)。ただし、兄弟階層の SCROLLS.md が誤検出として含まれる場合はあります。これは想定内です。下記のステップ2を参照してください。スクリプトは、スクロールフォルダーとその SCROLLS.md 以外のファイルには意図的に触れません。README、CI 設定、その他のドキュメントを事前に読まずに書き換えると、無関係な内容を壊すおそれがあるためです。

ベースディレクトリに一致するフォルダーがない場合、エラーで終了します。-r を指定していない場合、これはパスを確認する、リポジトリのルートを想定していたなら -t を試す、または、より深い階層にある可能性があれば -r を追加する必要があるという合図です。それ以外の場合は、ユーザーに /scrolls-setup を案内してください。

2. 報告された未処理の参照に対処する

スクリプトが「その他の参照…手動確認用に残しました」の下に一覧表示した各ファイルを読み、本当に古いパスであれば、自分で参照を更新してください(README、CONTRIBUTING ドキュメント、CI スクリプトなど)。無条件の検索と置換ではなく、通常の編集上の判断を用いてください。このプロジェクトのスクロールフォルダーに実際には関係のないもの(偶然文字列が一致しただけのものなど)はスキップしてください。

3. 結果を報告する

非表示にした各フォルダー(古いパス → 新しいパス)、それぞれについて自動修正した内容(フォルダー内のファイル、SCROLLS.md)、スキップしたものがあればその理由(移動先がすでに存在していたなど)、そしてステップ2で手動修正した内容があればそれを一覧にしてください。

開発

ディレクトリ構成、tests/ の回帰テストスイートの実行方法、およびバージョン管理に関する注意事項については、meta/MAINTAINERS.md を参照してください。ユーザーの /scrolls-hide リクエストへの対応時に、いずれも読み込まれません。そのため、リクエストに回答する際は meta/MAINTAINERS.md や tests/ を参照しないでください。

コメント