Communitygithub.com

Touch Map

Erstellt eine mentale Landkarte der von einer Verhaltensänderung betroffenen Teile, bevor ein Implementierungsplan oder Code geschrieben wird. Geeignet für neue Funktionen, Fehlerbehebungen und Refactorings, die eine Grenze verschieben.

Was ist Touch Map?

Touch Map ist eine AI-Agent-Fertigkeit, die entwickelt wurde, um den Umfang einer beabsichtigten Verhaltensänderung (z. B. eine neue Funktion, einen Bugfix oder ein Refactoring) genau zu erfassen und darzustellen, bevor Code geschrieben wird. Sie eignet sich für die Arbeit mit Entwickler-Tools wie Claude Code, Cursor oder Codex und ist besonders nützlich, um die Architekturanalyse von der Implementierung zu trennen. Die Fertigkeit befolgt eine Reihe von strengen Prozeduren (z. B. Bestätigen der Absicht, Laden oder Erstellen eines Domänen-Atlasses, Zoom auf die Änderung, Auswahl eines Pfads bei mehreren Optionen und Aktualisieren des Atlasses) und liefert eine strukturierte Ausgabe mit sechs Abschnitten: betroffene Domänen, Komponenten, wie sie kommunizieren, zu bearbeitende Dateien, nicht zu bearbeitende Dateien und die Pfadwahl. Sie enthält klare Gate-Regeln (kein Code, keine nächste Fertigkeit) und eine Entscheidungsmatrix für häufige Fallstricke. Obwohl sie für Mono-Repos optimiert ist, kann sie auch außerhalb von Git-Repos funktionieren, wobei der Atlas dann übersprungen wird.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Touch Map?

Erstelle eine mentale Landkarte dessen, was für diese Änderung berührt werden muss, um sie abzuschließen. Schreibe keinen Implementierungsplan. Schreibe keinen Code. Lade nicht die nächste Fertigkeit in einer Pipeline. Eine spätere Workflow-Fertigkeit reiht diese Landkarte mit anderen Fertigkeiten aneinander.

Die Landkarte ist das Produkt: die Teile und Dateien, die erforderlich sind, um die Änderung über die Ziellinie zu bringen.

Wann zu verwenden

Laden, nachdem der Benutzer entschieden hat, was die Änderung ist, und alle wie, die er bereits gewählt hat.

  • Ausführen für: eine neue Funktion, eine Fehlerbehebung, ein Refactoring, das eine Grenze verschiebt.
  • Überspringen: Tippfehler, Kommentare, Formatierung, nur Lockfile, Dokumentation ohne Code.
  • Wenn die Absicht noch offen ist („X implementieren“ ohne gewähltes Verhalten): anhalten. Nachfragen, bis die Änderung festgelegt ist. Dann kartieren. Keine Funktion kartieren, die noch nicht gewählt ist.

Harte Tore

  1. Kein Code und keine nächste Fertigkeit. Diese Fertigkeit kartiert. Sie plant keine Blöcke. Sie implementiert nicht.
  2. Die Landkarte anzeigen und anhalten. Nicht auf Zustimmung warten. Der Benutzer unterbricht, wenn die Landkarte falsch ist.
  3. coupling.json nicht lesen. Das ist eine spätere, separate Prüfung.
  4. Nicht das gesamte Repo nach Hilfsfunktionen durchsuchen. Nur die Wiederverwendung aufzeichnen, die der Agent tatsächlich in den betroffenen Domänen gesehen hat. Eine spätere Fertigkeit besitzt die vollständige Suche.

Persistenter Atlas

Pfad: <repo>/.agent/domain-map.json

Im Repo committet. Nur Domänenkörnung. Funktionsnamen gehören nicht hierher.

{
  "version": 1,
  "domains": [
    {
      "id": "auth",
      "owns": ["packages/auth", "packages/auth-ui"],
      "talksTo": ["users", "sessions"]
    }
  ]
}
  • id — kurzer Name, ein Wort oder kebab-case.
  • owns — Paket- oder Ordnerpfade.
  • talksTo — andere Domänen-IDs.

Diese Datei nur schreiben, wenn sich eine Tatsache auf Domänenebene geändert hat: eine Domäne hinzugefügt, entfernt oder umbenannt wurde; owns-Pfade; oder ein talksTo-Link. Das Hinzufügen einer Funktion innerhalb einer bestehenden Domäne darf diese Datei nicht bearbeiten.

Verfahren

Verfahren 1: Festgelegte Absicht bestätigen

  1. Wenn die Änderung bereits klar ist (benannter Bug, benannte Funktion, benanntes Verhalten), fortfahren.
  2. Wenn der Benutzer noch wählt, was er möchte, mit dem Kartieren aufhören. Nachfragen, bis die Absicht festgelegt ist. Dann hierher zurückkehren.

Verfahren 2: Atlas laden oder bootstrappen

  1. Wenn .agent/domain-map.json existiert, lesen.
  2. Wenn es fehlt, einen ersten Atlas erstellen, nur auf Domänenkörnung:
    • packages/* (oder die Paketordner des Repos) bevorzugen.
    • Sonst Ordner der obersten Ebene unter src/ (oder dem Hauptquellverzeichnis) verwenden.
    • talksTo aus Importkanten zwischen diesen owns-Pfaden festlegen.
    • Keine Funktionsnamen in den Atlas aufnehmen.
  3. .agent/ erstellen, falls nötig. Die Datei schreiben. Den neuen Atlas im selben Durchgang anzeigen. Fortfahren. Nicht warten.

Verfahren 3: In diese Änderung hineinzoomen

  1. Die betroffenen Domänen aus dem Atlas und der festgelegten Absicht auswählen.
  2. Bei den Modulen beginnen, die eindeutig zur Änderung gehören.
  3. Diese Dateien lesen. Importen nur folgen, solange sich die Liste der „zu bearbeitenden Dateien“ noch ändert.
  4. Anhalten, wenn eine neu geöffnete Datei die Landkarte nicht verändert. Kein Paket vollständig lesen.
  5. Teile als Module plus bestehende Funktionen und Typen benennen, die die Änderung verwenden wird oder neben denen sie liegen wird. Dateien sind Zeiger, nicht die Landkarte.
  6. Tatsächlich in diesen Dateien gesehene Wiederverwendung notieren (Pfad + Symbol). Nicht den gesamten Workspace nach Hilfsfunktionen durchsuchen.

Verfahren 4: Den Pfad wählen, wenn mehr als einer existiert

Wenn nur ein ehrlicher Pfad existiert, diesen in einer Zeile angeben.

Wenn mehr als ein Pfad existiert, einen auswählen. Bei der ersten Leiterschrittstufe anhalten, die entscheidet:

  1. Etwas Vorhandenes wiederverwenden, anstatt ein neues Modul zu schreiben.
  2. Innerhalb der betroffenen Domäne(n) bleiben. Keine neue Domäne eröffnen.
  3. Kein Paket, keine Schicht oder öffentliche API hinzufügen, wenn eine interne Änderung funktioniert.
  4. Dann die wenigsten Dateien.

Den Gewinner nennen und welcher Schritt entschieden hat. Die wenigsten Dateien sind der Tie-Break, nicht die gesamte Regel. Neues Verhalten nicht in eine Gott-Datei stopfen, um bei der Dateianzahl zu gewinnen.

Verfahren 5: Atlas aktualisieren (nur Domänenebene)

  1. Wenn diese Änderung eine Domäne hinzufügt, entfernt oder umbenennt oder owns- / talksTo-Werte ändert, .agent/domain-map.json im selben Durchgang patchen.
  2. Wenn sich auf Domänenebene nichts geändert hat, die Datei in Ruhe lassen.

Verfahren 6: Die änderungsspezifische Landkarte anzeigen

Diese sechs Abschnitte in dieser Reihenfolge anzeigen. Keine aufgabenbezogene Markdown-Datei schreiben.

  1. Betroffene Domäne(n) — aus dem Atlas.
  2. Teile — Module plus bestehende Funktionen und Typen im Spiel. Gesehene Wiederverwendung einschließen (Pfad + Symbol).
  3. Wie sie kommunizieren — nur Kanten, die diese Änderung verwendet (Aufrufe, Typen, Daten). Kein vollständiger Aufrufgraph. Ein Mermaid-Diagramm nur hinzufügen, wenn diese Kanten in Aufzählungspunkten schwer zu erkennen sind.
  4. Zu bearbeitende Dateien — die Ziellinienliste. Dies ist das eigenständige Produkt.
  5. Wird nicht bearbeitet — explizit. Verhindert Streifschuss-Bearbeitungen.
  6. Pfadwahl — eine Zeile, wenn es einen Pfad gab. Bei mehreren: der Gewinner und der Leiterschritt.

Verfahren 7: Anhalten

  1. Nach Verfahren 6 anhalten.
  2. Keinen Code schreiben. Keine andere Fertigkeit von dieser aus laden.

Entscheidungsbaum

  • Absicht nicht festgelegt → Verfahren 1, dann mit Kartieren aufhören, bis sie es ist.
  • Absicht festgelegt, Verhaltensänderung → Verfahren 2 → 3 → 4 → 5 → 6 → 7.
  • Tippfehler / Kommentar / Formatierung / Lockfile / Nur Dokumentation → diese Fertigkeit gilt nicht.
  • Atlas-Datei fehlt → Verfahren 2 Schritt 2 (bootstrappen), dann fortfahren.
  • Ein Pfad vs. viele Pfade → Verfahren 4.

Rote Flaggen

SignalWas es bedeutetStattdessen tun
Kartieren, bevor der Benutzer die Funktion gewählt hatAbsicht nicht festgelegtVerfahren 1. Erst ausfragen.
Jede Datei in owns öffnenTour, keine LandkarteVerfahren 3: anhalten, wenn die Dateiliste stabil ist.
Das Monorepo nach isRecord durchsuchenVollständige Suche ist eine andere FertigkeitNur bereits gesehene Wiederverwendung aufzeichnen.
coupling.json lesenFalsche DateiDiese Prüfung für später lassen.
Auf „sieht gut aus?“ bei der Landkarte wartenTor ist anzeigen-und-anhaltenDie sechs Abschnitte anzeigen und anhalten.
Nach der Landkarte mit dem Codieren beginnenDiese Fertigkeit kartiert nurVerfahren 7. Kein Code.
Die nächste Pipeline-Fertigkeit von hier aus ladenVerlässt die Komposition im WorkflowAnhalten. Die Workflow-Fertigkeit soll aneinanderreihen.
.agent/touch-maps/<task>.md schreibenVeralteter AufgabenmüllNur Chat (oder Sitzung). Die Atlas-Datei ist die einzige Persistenz.
Atlas bearbeiten, weil ein Helfer hinzugefügt wurdeFunktionskörnung im AtlasAtlas in Ruhe lassen. Den Helfer in Abschnitt 2 setzen.
Pfad mit den wenigsten Dateien zuerst wählenGott-Datei-FalleDie gesamte Leiter durchlaufen.

Fehlerbehandlung

  • Nicht in einem Git-Repo: Diese Änderung in den sechs Abschnitten kartieren. Die Atlas-Datei überspringen. Das in einer Zeile sagen.
  • Atlas-JSON ist ungültig: Nicht raten. Den Parse-Fehler melden. Nur neu aus Verfahren 2 Schritt 2 erstellen, wenn der Benutzer zustimmt, oder das JSON korrigieren, wenn die Absicht offensichtlich ist (nachgestelltes Komma, fehlende Klammer).
  • Betroffene Domäne ist unklar: Die kleinste Menge von Domänen wählen, die die Änderung besitzen kann. Den Zweifel in der Pfadwahl angeben. Keine neue Domäne für einen Ein-Datei-Bug erfinden.
  • Benutzer unterbricht, dass die Landkarte falsch ist: Die sechs Abschnitte korrigieren. Verfahren 4 erneut ausführen, wenn sich der Pfad geändert hat. Dann anhalten.

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".

Verwandte Skills