Communitygithub.com

タッチマップ

変更意図が確定しており、実装計画やコード作成の前に、動作変更がどの部分に影響するかをマッピングする際に使用します。新機能、バグ修正、境界を移動するリファクタリングに使用します。タイポ、コメント、フォーマット、ロックファイルのみの差分、コードのないドキュメント、またはユーザーがまだ何をしたいか決めていない場合は使用しません。

タッチマップ とは?

このスキルは、AIエージェントが変更に必要なすべての部分とファイルを体系的にマッピングするための「タッチマップ」を提供します。コードの記入や実装計画の作成は行わず、変更のスコープを明確にする「成果物としてのマップ」に焦点を当てます。このスキルは、ユーザーが変更内容を決定した後にのみ起動されるべきであり、意図が未確定の場合はマッピングを開始しません。主な機能として、永続的なドメインマップ(`.agent/domain-map.json`)の管理、変更範囲の特定、影響を受けるモジュールやファイルの列挙、複数の実装パスの中からの最適な選択を行います。マッピング完了後は、コードを書かずに結果を表示して停止します。このスキルは、Claude CodeやCline、Cursor、Codexなど、エージェントがファイルシステムへのアクセス権を持つ環境で使用することを想定しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/touch-map

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

タッチマップ は何をしますか?

この変更を完了するために触れる必要があるもののメンタルマップを構築します。実装計画は書きません。コードは書きません。パイプライン内の次のスキルはロードしません。後のワークフロースキルがこのマップを他のスキルと連携させます。

マップが成果物です:変更を完了するために必要な部品とファイル。

いつ使用するか

ユーザーが変更内容と、ユーザーが選択した方法を決定した後にロードします。

  • 実行する対象: 新機能、バグ修正、境界を移動するリファクタリング。
  • スキップする対象: タイポ、コメント、フォーマット、ロックファイルのみ、コードのないドキュメント。
  • 意図が未決定の場合(「Xを実装して」と選択された振る舞いがない場合):停止します。変更が確定するまで質問します。その後マッピングします。まだ選択されていない機能はマッピングしません。

ハードゲート

  1. コードも次のスキルもなし。 このスキルはマッピングします。ブロックは計画しません。実装もしません。
  2. マップを表示して停止します。 承認を待ちません。ユーザーがマップが間違っている場合は中断します。
  3. coupling.json を読み込まないでください。 それは後で別に行うチェックです。
  4. リポジトリ全体をユーティリティで検索しないでください。 エージェントがヒットしたドメインで実際に確認した再利用のみを記録します。後のスキルが完全な検索を担当します。

永続アトラス

パス: <repo>/.agent/domain-map.json

リポジトリにコミットされます。ドメイン粒度のみ。関数名はここには含めません。

{
  "version": 1,
  "domains": [
    {
      "id": "auth",
      "owns": ["packages/auth", "packages/auth-ui"],
      "talksTo": ["users", "sessions"]
    }
  ]
}
  • id — 短い名前、単一単語またはケバブケース。
  • owns — パッケージまたはフォルダのパス。
  • talksTo — 他のドメインのID。

このファイルは、ドメインレベルの事実が変更された場合のみ書き込みます: ドメインの追加、削除、名前変更、owns パスの変更、または talksTo リンクの変更。既存のドメイン内への関数の追加では、このファイルを編集してはいけません。

手順

手順1:確定した意図を確認

  1. 変更がすでに明確(名前付きバグ、名前付き関数、名前付き振る舞い)であれば、続行します。
  2. ユーザーがまだ何をしたいか選択中の場合は、マッピングを停止します。意図が確定するまで質問します。その後、ここに戻ります。

手順2:アトラスを読み込むかブートストラップ

  1. .agent/domain-map.json が存在すれば、読み込みます。
  2. 存在しない場合は、ドメイン粒度のみで最初のアトラスを構築します:
    • packages/*(またはリポジトリのパッケージフォルダ)を優先します。
    • それ以外の場合は、src/(またはメインソースルート)配下のトップレベルエリアフォルダを使用します。
    • talksTo は、それらの owns パス間のインポートエッジから設定します。
    • アトラスに関数名を含めないでください。
  3. .agent/ が必要であれば作成します。ファイルを書き込みます。新しいアトラスを同じターンで表示します。続行します。待機しません。

手順3:この変更にズームイン

  1. アトラスと確定した意図から、ヒットするドメインを選択します。
  2. 変更に明確に属するモジュールから開始します。
  3. それらのファイルを読み込みます。「触れる必要のあるファイル」リストがまだ変化している間のみ、インポートを追跡します。
  4. 新しく開いたファイルがマップを変更しなくなったら停止します。完全を期すためにパッケージ全体を読むことはしません。
  5. 部品は、変更が使用する、または隣接するモジュールと、既存の関数および型として命名します。ファイルはポインタであり、マップそのものではありません。
  6. それらのファイルで実際に確認した再利用(パスとシンボル)を記録します。ワークスペース全体をヘルパーでgrepしないでください。

手順4:複数のパスが存在する場合、パスを選択

正直なパスが1つしかない場合は、1行でそれを示します。

複数のパスが存在する場合は、1つを選択します。以下のラダーの最初のステップで決定した時点で停止します:

  1. 新しいモジュールを書くよりも、既存のものを再利用する。
  2. ヒットしたドメイン内に留まる。新しいドメインを開かない。
  3. 内部的な変更で済むなら、パッケージ、レイヤー、公開APIを追加しない。
  4. 次にファイル数が最も少ないもの。

勝者と、それを決定したラダーのステップを名前を挙げます。最も少ないファイル数がタイブレークであり、ルール全体ではありません。ファイル数を稼ぐために、巨大なファイルに新しい振る舞いを詰め込まないでください。

手順5:アトラスを更新(ドメインレベルのみ)

  1. この変更がドメインの追加、削除、名前変更、または owns / talksTo の変更を行う場合は、同じ作業内で .agent/domain-map.json をパッチします。
  2. ドメイン粒度で何も変更がなければ、ファイルはそのままにします。

手順6:変更ごとのマップを表示

以下の6つのセクションを、この順序で表示します。タスクごとのマークダウンファイルは書きません。

  1. ヒットドメイン — アトラスから。
  2. 部品 — モジュール、および関与する既存の関数と型。確認した再利用(パスとシンボル)を含めます。
  3. それらの連携方法 — この変更が使用するエッジのみ(呼び出し、型、データ)。完全なコールグラフではありません。それらのエッジが箇条書きで見づらい場合にのみ、Mermaid図を追加します。
  4. 触れるファイル — 最終的なリスト。これがスタンドアロンの成果物です。
  5. 触れないファイル — 明示的に。横槍編集を防ぎます。
  6. パス選択 — パスが1つしかなかった場合は1行。複数あった場合は、勝者とラダーのステップ。

手順7:停止

  1. 手順6の後、停止します。
  2. コードを書きません。このスキルから別のスキルをロードしません。

決定木

  • 意図が確定していない → 手順1、その後、確定するまでマッピングを停止。
  • 意図が確定、振る舞い変更 → 手順2 → 3 → 4 → 5 → 6 → 7。
  • タイポ / コメント / フォーマット / ロックファイル / ドキュメントのみ → このスキルは適用されません。
  • アトラスファイルが存在しない → 手順2のステップ2(ブートストラップ)、その後続行。
  • 1つのパス vs 複数のパス → 手順4。

レッドフラグ

シグナル意味代わりに行うこと
ユーザーが機能を選択する前にマッピング意図が確定していない手順1。まずは突き詰めて質問。
owns内のすべてのファイルを開くツアーであってマップではない手順3:ファイルリストが安定したら停止。
モノレポ内を isRecord でgrep完全な検索は別のスキル既に確認した再利用のみを記録。
coupling.json を読み込む誤ったファイルそのチェックは後で行う。
マップに対して「これでよさそう?」と待機ゲートは表示して停止6つのセクションを表示して停止。
マップ後にコーディングを開始このスキルはマッピングのみ手順7。コードは書かない。
ここから次のパイプラインスキルをロードワークフローが構成を任せている停止。ワークフロースキルに連携させる。
.agent/touch-maps/<task>.md を書き込む古くなったタスクのゴミチャット(またはセッション)のみ。アトラスファイルのみが永続化。
ヘルパーが追加されたためアトラスを編集アトラス内の関数粒度アトラスはそのままに。セクション2にヘルパーを配置。
最初にファイル数が最も少ないパスを選択巨大ファイルの罠完全なラダーを実行。

エラーハンドリング

  • gitリポジトリ内にない場合: 変更を6つのセクションでマッピングします。アトラスファイルはスキップします。その旨を1行で伝えます。
  • アトラスのJSONが無効な場合: 推測しないでください。パースエラーを報告します。手順2ステップ2からの再構築は、ユーザーが同意した場合のみ、またはJSONの修正が明白な場合(末尾カンマ、括弧欠落)のみ行います。
  • ヒットドメインが不明瞭な場合: 変更を所有できる最小のドメインセットを選択します。その疑念をパス選択で示します。1ファイルのバグのために新しいドメインを作成しないでください。
  • ユーザーがマップが間違っていると中断した場合: 6つのセクションを修正します。パスが変更された場合は手順4を再実行します。その後停止します。

Individual skills in this repo

This repo contains 14 individual skills — each has its own dedicated page.

AlemTuzlak/skills

Use when the user wants to write a blog post about a feature, product change, PR, git diff, or any technical topic - accepts marketing briefs, PRs, git refs, codebase paths, or freeform descriptions as input

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when a settled change must be turned into an ordered stack of small blocks before anyone implements. Don't use for unsettled intent, typos, comments, formatting, docs-only work, or writing the implementation itself.

AlemTuzlak/skills

Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the user wants to deeply learn a new topic from scratch. Runs a pre-interview (current knowledge, end-goal proficiency, depth, practice load, background, scope), researches online (articles, niche-influencer blogs, canonical docs, subtopic landscape), then produces a structured markdown course with mandatory visual diagrams, evidence-based learning-science features (retrieval practice, spaced callbacks, worked-example fading, concept ledger, jargon gate, analogy hygiene), and a self-contained interactive HTML mini-course. Triggers on /teach-me, "teach me about X", "I want to learn X", "deep dive on X", "create a course on X", "study X with me".

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

関連スキル