Lektion • 22. Oktober 2025

Prompt Rewriting - Single Tags

Hero image

TLDR Dein Prompt hat einen Tag (z.B. `:risk`). Hook erkennt ihn, lädt die relevanten Guidelines, rewrites deinen Prompt mit perfektem Context. Claude antwortet wie ein Expert in diesem Bereich.


Loading video...

Das Kontext-Problem

Szenario: Du fragst Claude nach einem Payment-System.

Jedes Mal musst du wieder erklären:

  • "Bedenke Compliance!"
  • "Was ist mit Fraud Detection?"
  • "Sicherheit zuerst!"

Das ist mental exhausting.

Mit Tags: Du schreibst :compliance und fertig. Hook macht den Rest.

Phase 1: Wie Single-Tag Rewriting funktioniert

Einfach wie es klingt:

  1. User tippt: Sichere Payment-API :compliance
  2. Hook findet Tag: compliance
  3. Hook lädt Compliance-Guidelines
  4. Hook rewrites Prompt
  5. Claude kriegt: Sichere Payment-API. Bedenke: [Full Compliance Context]

Claude antwortet mit Compliance-Expertise. Automatisch.

Phase 2: Tag-System definieren

Welche Tags brauchst du?

.claude/tags.json:

{ "compliance": { "label": "Regulatory Compliance", "context": "./docs/compliance-rules.md" }, "security": { "label": "Security Best Practices", "context": "./docs/security-guidelines.md" }, "api": { "label": "API Design Patterns", "context": "./docs/api-patterns.md" } }

Einfach. Klar. Wartbar.

Phase 3: Das Rewriting-Hook-Script

.claude/hooks/prompt-rewriter.ts:

import { readFileSync } from "fs";

const tags = JSON.parse( readFileSync(".claude/tags.json", "utf-8") );

function findTag(prompt: string): string | null { const match = prompt.match(/:(\w+)/); return match ? match[1] : null; }

function getContext(tag: string): string { if (!tags[tag]) return ""; const contextFile = tags[tag].context; return readFileSync(contextFile, "utf-8"); }

function rewritePrompt(input: any): any { const tag = findTag(input.prompt); ` if (!tag) { return input; // Kein Tag, nichts zu rewriten } const cleanPrompt = input.prompt.replace(/:(\w+)/, "").trim(); const context = getContext(tag); const enhanced = cleanPrompt + "\n\nContext:\n" + context; return { ...input, prompt: enhanced, applied_tag: tag }; }

export default rewritePrompt;

Was macht das?

  1. Findet einen Tag
  2. Lädt die Context-Datei
  3. Hängt sie an den Prompt
  4. Claude kriegt alles zusammen

Phase 4: Context-Files erstellen

Jedes Tag braucht eine Guideline-Datei.

./docs/compliance-rules.md:

# Compliance Guidelines

## KYC Requirements - Verify customer identity - Document source of funds - Regular risk reassessment

## AML/CFT - Monitor for suspicious patterns - Report threshold breaches - Keep audit trails

## Data Protection - GDPR compliant processing - Minimal data retention - Encryption at rest and in transit

Phase 5: Registrieren und Testen

Im Terminal:

claude

Dann:

/add-hook prompt-rewriter

  • Event: pre-prompt-submit
  • Script: .claude/hooks/prompt-rewriter.ts

Jetzt schreib:

Design a user onboarding flow :compliance

Was passiert:

  1. Hook interceptet
  2. Findet Tag: compliance
  3. Lädt Compliance-Guidelines
  4. Rewrites Prompt mit Context
  5. Claude antwortet mit Compliance-Fokus

Du brauchst das alles nicht zu erklären. Der Hook macht's.

Phase 6: Was wenn kein Tag?

Prompt ohne Tag? Hook macht nix:

Design a user onboarding flow

Hook: "Kein Tag gefunden. Weitergabe an Claude wie üblich."

Claude antwortet normal. Kein Problem.

Phase 7: Logging der Rewrites

.claude/hooks/prompt-rewriter-with-log.ts:

import { appendFileSync } from "fs";

function logRewrite(original: string, tag: string, rewritten: string) { const entry = { timestamp: new Date().toISOString(), original_prompt: original, detected_tag: tag, rewritten_length: rewritten.length }; appendFileSync( ".claude/rewrite-log.jsonl", JSON.stringify(entry) + "\n" ); }

Jetzt kannst du debuggen:

tail .claude/rewrite-log.jsonl

Und sehen, was passiert ist.

Phase 8: Error Handling

Was wenn die Context-Datei nicht existiert?

function getContext(tag: string): string { try { if (!tags[tag]) { console.log("Tag not found:", tag); return ""; } const contextFile = tags[tag].context; return readFileSync(contextFile, "utf-8"); } catch (error) { console.error("Failed to load context:", error.message); return ""; } }

Jetzt:

  • Tag existiert nicht? → Kein Context, weitermachen
  • Datei nicht gefunden? → Log Error, weitermachen

Keine Crashes. Nur robustes Design.

Phase 9: Real-World Beispiel

Dein System hat diese Context-Dateien:

  • docs/api-patterns.md → API Design
  • docs/security-guidelines.md → Security
  • docs/performance-tips.md → Performance

Tags:

  • :api → Lädt api-patterns.md
  • :security → Lädt security-guidelines.md
  • :perf → Lädt performance-tips.md

Jetzt kannst du:

Build a caching layer :perf

Claude kriegt automatisch Performance-Tipps.

Implement user authentication :security

Claude kriegt Security-Guidelines.

Nie wieder "vergessen" einem Prompt Context zu geben.

Phase 10: Best Practices

1. Ein Tag pro Prompt

Single-Tag ist simpel und fokussiert.

Design an API :api

Design an API :api :security :compliance → Nächste Lektion

2. Halte Context kurz

Nicht 100 Zeilen. 10-20 Zeilen mit Kernpunkten.

3. Teste den Hook

Schreib einen Prompt mit Tag. Prüfe, ob Claude die Context nutzt.

4. Versioniere Tags

Tags-Definitionen sollten ins Repo:

git add .claude/tags.json docs/

Dein Action Plan für heute

  1. ✅ Erstelle .claude/tags.json mit 1 Tag
  2. ✅ Erstelle eine Context-Datei dafür
  3. ✅ Schreib den Rewriter-Hook
  4. ✅ Registriere den Hook
  5. ✅ Teste: Your prompt :yourtag
  6. ✅ Beobachte, wie Claude antwortet

Wenn Claude automatisch die Context hat, funktioniert's.

Die größte Erkenntnis

Single-Tag Rewriting ist der Einstieg in Kontext-Ingenieurwesen.

Statt jedes Mal Context zu erklären, schreibst du ihn einmal in eine Guideline.

Der Hook macht den Rest für immer.

Das ist nicht Automation. Das ist Leverage.

Nächste Woche: Mehrere Tags kombinieren – Wenn :compliance :api :security zusammenkommen.

Habt einen tollen Tag. Ciao.

Lektionsdetails

Veröffentlicht
22. Oktober 2025
Lesezeit
ca. 5 Min.

Teilen