Option
HeimHeim Skill Dokumentation tc-tracker

Verfolgen Sie Codeänderungen mit strukturierten JSON-Datensätzen, einer erzwungenen Zustandsmaschine und einem Sitzungsübergabeformat für KI-Kontinuität.

...Alle erweitern
33
Zeit aktualisiert 27. August 2026

TC-Tracker

Verfolgen Sie jede Codeänderung mit strukturierten JSON-Datensätzen, einer erzwungenen Zustandsmaschine und einem Sitzungsübergabeformat, das es einer neuen AI-Sitzung ermöglicht, die Arbeit sauber fortzusetzen, wenn eine vorherige Sitzung abläuft.

Übersicht

Ein Technischer Change (TC) ist ein strukturierter Datensatz, der erfasst, was sich geändert hat, warum es sich geändert hat, wer es geändert hat, wann es sich geändert hat, wie es getestet wurde und wo der Stand der Arbeit für die nächste Sitzung ist. Die Datensätze werden als JSON in docs/TC/ innerhalb des Zielprojekts gespeichert, validiert gegen ein strenges Schema und eine Zustandsmaschine.

Verwenden Sie diese Fähigkeit, wenn der Benutzer:

  • Fragt, „diese Änderung zu verfolgen“ oder eine Audit-Trail für Codeänderungen wünscht
  • In-progress-Arbeit an eine zukünftige AI-Sitzung übergeben möchte
  • Strukturierte Release-Notizen benötigt, die über Commit-Nachrichten hinausgehen
  • Ein bestehendes Projekt onboards und retrospektive Änderungsdocumentation wünscht
  • /tc init, /tc create, /tc update, /tc status, /tc resume oder /tc close anfordert

Verwenden Sie diese Fähigkeit NICHT, wenn:

  • Der Benutzer nur ein Changelog aus der Git-History wünscht (verwenden Sie engineering/changelog-generator)
  • Der Benutzer nur Tech-Debt-Elemente verfolgen möchte (verwenden Sie engineering/tech-debt-tracker)
  • Die Änderung trivial ist (Tippfehler, Formatierung) und keinen Einfluss auf das Verhalten hat

Speicherlayout

Jedes Projekt speichert TCs unter {project_root}/docs/TC/:

docs/TC/
├── tc_config.json          # Projekteinstellungen
├── tc_registry.json        # Master-Index + Statistiken
├── records/
│   └── TC-001-04-05-26-user-auth/
│       └── tc_record.json  # Quelle der Wahrheit
└── evidence/
    └── TC-001/             # Log-Auszüge, Befehlsausgabe, Screenshots

TC-ID-Konvention

  • Parent-TC: TC-NNN-MM-DD-YY-Funktionalität-Slug (z. B. TC-001-04-05-26-user-authentication)
  • Sub-TC: TC-NNN.A oder TC-NNN.A.1 (Buchstabe = Revision, Ziffer = Sub-Revision)
  • NNN ist sequentiell, MM-DD-YY ist das Erstellungsdatum, Slug ist kebab-case.

Zustandsmaschine

geplant -> in_arbeit -> implementiert -> getestet -> bereitgestellt
   |            |              |           |          |
   +-> blockiert -+              +- in_arbeit  geplant

Siehe references/lifecycle.md für die vollständige Übergabetabelle und Wiederherstellungsflüsse.

Workflow-Befehle

Die Fähigkeit liefert fünf Python-Skripte, die deterministische, nur stdlib-basierte Operationen an TC-Datensätzen durchführen. Jedes unterstützt --help und --json.

1. Tracking in einem Projekt initialisieren

python3 scripts/tc_init.py --project "Mein Projekt" --root .

Erstellt docs/TC/, docs/TC/records/, docs/TC/evidence/, tc_config.json und tc_registry.json. Idempotent — beim erneuten Ausführen wird „bereits initialisiert“ mit aktuellen Statistiken gemeldet.

2. Neuen TC-Datensatz erstellen

python3 scripts/tc_create.py \
  --root . \
  --name "user-authentication" \
  --title "JWT-basierte Benutzerauthentifizierung hinzufügen" \
  --scope feature \
  --priority high \
  --summary "Fügt JWT-Login + Middleware hinzu" \
  --motivation "Erforderlich für geschützte Endpunkte"

Generiert die nächste sequentielle TC-ID, erstellt das Datensatzverzeichnis, schreibt einen vollständig ausgefüllten tc_record.json (Status geplant, R1-Erstellungsrevision) und aktualisiert das Register.

3. TC-Datensatz aktualisieren

# Statusübergang (validiert gegen die Zustandsmaschine)
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
  --set-status in_arbeit --reason "Implementierung starten"

# Datei hinzufügen
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
  --add-file src/auth.py:created

# Übergabedaten anhängen
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
  --handoff-progress "JWT-Middleware verdrahtet" \
  --handoff-next "Integrationstests schreiben" \
  --handoff-next "README aktualisieren"

Jede Änderung hängt einen sequentiellen R<n></n>-Revisionseintrag an, aktualisiert updated und validiert erneut gegen das Schema, bevor atomar geschrieben wird (.tmp dann Umbenennen).

4. Status anzeigen

# Einzelner TC
python3 scripts/tc_status.py --root . --tc-id TC-001-04-05-26-user-auth

# Alle TCs (Registerzusammenfassung)
python3 scripts/tc_status.py --root . --all --json

5. Datensatz oder Register validieren

python3 scripts/tc_validator.py --record docs/TC/records/TC-001-.../tc_record.json
python3 scripts/tc_validator.py --registry docs/TC/tc_registry.json

Der Validator erzwingt das Schema, prüft die Zustandsmaschinengesetzlichkeit, verifiziert sequentielle R<n></n>- und T<n></n>-IDs und stellt Konsistenz der Genehmigung fest (approved=true erfordert approved_by und approved_date).

Siehe references/tc-schema.md für das vollständige Schema.

Slash-Befehls-Dispatcher

Das Repository liefert einen /tc-Slash-Befehl unter commands/tc.md, der basierend auf dem Unterbefehl an diese Skripte dispatchet:

BefehlAktion
`/tc init`Führt `tc_init.py` für das aktuelle Projekt aus
`/tc create `Abfrage nach Feldern, führt `tc_create.py` aus
`/tc update `Wendet benutzerbeschriebene Änderungen über `tc_update.py` an
`/tc status [tc-id]`Führt `tc_status.py` aus
`/tc resume `Zeigt Übergabe, archiviert vorherige Sitzung, startet eine neue
`/tc close `Wechsel zu `bereitgestellt`, setzt Genehmigung
`/tc export`Alle abgeleiteten Artefakte neu rendern
`/tc dashboard`Registerzusammenfassung neu rendern

Der Slash-Befehl ist die Benutzeroberfläche; die Python-Skripte sind die Engine.

Sitzungsübergabeformat

Der Übergabeblock befindet sich unter session_context.handoff innerhalb jedes TC und ist das wichtigste Feld für die AI-Kontinuität. Es enthält:

  • progress_summary — was erledigt wurde
  • next_steps — geordnete Liste verbleibender Aktionen
  • blockers — alles, was den Fortschritt verhindert
  • key_context — kritische Entscheidungen, Fallstricke, Muster, die der nächste Bot kennen muss
  • files_in_progress — Dateien, die bearbeitet werden, und ihr Status (editing, needs_review, partially_done, ready)
  • decisions_made — architektonische Entscheidungen mit Begründung und Zeitstempel

Siehe references/handoff-format.md für die vollständige Struktur und Ausfüllregeln.

Validierungsregeln (Immer erzwungen)

  1. Zustandsmaschine — nur gültige Übergänge sind erlaubt.
  2. Sequentielle IDsrevision_history verwendet R1, R2, R3...; test_cases verwendet T1, T2, T3....
  3. Append-only-History — Revisionsdaten werden niemals geändert oder gelöscht.
  4. Genehmigungskonsistenzapproved=true erfordert approved_by und approved_date.
  5. TC-ID-Format — muss TC-NNN-MM-DD-YY-Slug entsprechen.
  6. Sub-TC-ID-Format — muss TC-NNN.A oder TC-NNN.A.N entsprechen.
  7. Atomare Schreibvorgänge — JSON wird in .tmp geschrieben, dann umbenannt.
  8. Registerstatistiken — bei jedem Schreibvorgang im Register neu berechnet.

Nicht-blockierendes Buchhaltungs-Muster

TC-Tracking darf den Hauptworkflow NICHT unterbrechen.

  • Stoppen Sie niemals, um TC-Datensätze inline zu aktualisieren. Weiter coden.
  • Erzeugen Sie bei natürlichen Meilensteinen einen Hintergrund-Subagenten, um den Datensatz zu aktualisieren.
  • Zeigen Sie Fragen nur an, wenn wirklich benötigt („Diese Arbeit passt zu keinem aktiven TC — einen erstellen?“), und fragen Sie einmal pro Sitzung, nicht pro Datei.
  • Schreiben Sie am Sitzungsende einen finalen Übergabeblock vor dem Schließen.

Retrospektive Massenerstellung

Für das Onboarding eines bestehenden Projekts mit undokumentierter History erstellen Sie ein retro_changelog.json (ein Eintrag pro logischer Änderung) und füttern es in einer Schleife an tc_create.py oder erweitern Sie das Skript für den Batch-Modus. Gruppieren Sie Commits nach Feature, nicht nach Datei.

Anti-Patterns

Anti-PatternWarum es schlecht istTun Sie stattdessen dies
Bearbeiten von `revision_history`, um einen Tippfehler zu „korrigieren“History ist append-only — Manipulation zerstört den Audit-TrailEine neue Revision hinzufügen, die das Feld korrigiert
Überspringen der Zustandsmaschine („setze Status einfach auf bereitgestellt“)Umgeht Validierung und verbirgt übersprungene PhasenDurchlaufen Sie `in_arbeit -> implementiert -> getestet -> bereitgestellt`
Erstellen eines TC pro geänderter DateiZerstückelt zusammengehörige Arbeit und sprengt das RegisterEinen TC pro logischer Einheit (Feature, Fix, Refactor)
Aktualisieren von TC inline zwischen jeder CodebearbeitungVerlangsamt den Hauptagenten, verschwendet KontextEinen Hintergrund-Subagenten bei Meilensteinen erzeugen
Markieren von `approved=true` ohne `approved_by`Validator wird ablehnen; irreführender Audit-TrailImmer `approved_by` und `approved_date` zusammen setzen
Überschreiben von `tc_record.json` direkt mit einem TexteditorGefahr der Korruption während des Schreibens und Überspringen der Validierung`tc_update.py` verwenden (atomarer Schreibvorgang + Schema-Prüfung)
Speichern von Secrets in `notes` oder EvidenzDatensätze werden in das Repository committedEine Umgebungsvariable oder einen externen Secret-Speicher referenzieren
Wiederverwenden von TC-IDs nach LöschungBricht die sequentielle Garantie und verwirrt die HistoryNur vorwärts inkrementieren — niemals recyceln
`next_steps` veralten lassenWiderspricht dem Zweck der ÜbergabeBei jedem Meilenstein aktualisieren, auch wenn „nichts geändert“

Querverweise

  • engineering/changelog-generator — Generiert Keep-a-Changelog-Release-Notizen aus Conventional Commits. Kombinieren Sie es mit dem TC-Tracker: TC für den detaillierten pro-Änderung Audit-Trail, Changelog für benutzerorientierte Release-Notizen.
  • engineering/tech-debt-tracker — Zum Verfolgen langlebiger Debt-Elementen statt diskreter Codeänderungen.
  • engineering/focused-fix — Wenn eine Bug-Fix systematische, feature-weite Reparatur benötigt, führen Sie zuerst /focused-fix aus und erfassen Sie das Ergebnis dann als TC.
  • project-management/decision-log — Architektonische Entscheidungen, die im decisions_made-Block eines TC getroffen wurden, können auch in ein projektweites Decision-Log übernommen werden.
  • engineering-team/code-reviewer — Pre-Merge-Review passt natürlich in den Übergang tested -> bereitgestellt; erfassen Sie den Reviewer in approval.approved_by.

Referenzen in dieser Fähigkeit

  • references/tc-schema.md — Vollständiges JSON-Schema für TC-Datensätze und das Register.
  • references/lifecycle.md — Zustandsmaschine, gültige Übergänge und Wiederherstellungsflüsse.
  • references/handoff-format.md — Sitzungsübergabestruktur und Best Practices.
Auf GitHub ansehen
---
name: tc-tracker
description: Track code changes with structured JSON records, an enforced state machine, and a session handoff format for AI continuity.
---

# TC Tracker

Track every code change with structured JSON records, an enforced state machine, and a session handoff format that lets a new AI session resume work cleanly when a previous one expires.

## Overview

A Technical Change (TC) is a structured record that captures **what** changed, **why** it changed, **who** changed it, **when** it changed, **how it was tested**, and **where work stands** for the next session. Records live as JSON in `docs/TC/` inside the target project, validated against a strict schema and a state machine.

**Use this skill when the user:**
- Asks to "track this change" or wants an audit trail for code modifications
- Wants to hand off in-progress work to a future AI session
- Needs structured release notes that go beyond commit messages
- Onboards an existing project and wants retroactive change documentation
- Asks for `/tc init`, `/tc create`, `/tc update`, `/tc status`, `/tc resume`, or `/tc close`

**Do NOT use this skill when:**
- The user only wants a changelog from git history (use `engineering/changelog-generator`)
- The user only wants to track tech debt items (use `engineering/tech-debt-tracker`)
- The change is trivial (typo, formatting) and won't affect behavior

## Storage Layout

Each project stores TCs at `{project_root}/docs/TC/`:

```
docs/TC/
├── tc_config.json          # Project settings
├── tc_registry.json        # Master index + statistics
├── records/
│   └── TC-001-04-05-26-user-auth/
│       └── tc_record.json  # Source of truth
└── evidence/
    └── TC-001/             # Log snippets, command output, screenshots
```

## TC ID Convention

- **Parent TC:** `TC-NNN-MM-DD-YY-functionality-slug` (e.g., `TC-001-04-05-26-user-authentication`)
- **Sub-TC:** `TC-NNN.A` or `TC-NNN.A.1` (letter = revision, digit = sub-revision)
- `NNN` is sequential, `MM-DD-YY` is the creation date, slug is kebab-case.

## State Machine

```
planned -> in_progress -> implemented -> tested -> deployed
   |            |              |           |          |
   +-> blocked -+              +- in_progress <-------+
        |                          (rework / hotfix)
        +-> planned
```

> See [references/lifecycle.md](references/lifecycle.md) for the full transition table and recovery flows.

## Workflow Commands

The skill ships five Python scripts that perform deterministic, stdlib-only operations on TC records. Each one supports `--help` and `--json`.

### 1. Initialize tracking in a project

```bash
python3 scripts/tc_init.py --project "My Project" --root .
```

Creates `docs/TC/`, `docs/TC/records/`, `docs/TC/evidence/`, `tc_config.json`, and `tc_registry.json`. Idempotent — re-running reports "already initialized" with current stats.

### 2. Create a new TC record

```bash
python3 scripts/tc_create.py \
  --root . \
  --name "user-authentication" \
  --title "Add JWT-based user authentication" \
  --scope feature \
  --priority high \
  --summary "Adds JWT login + middleware" \
  --motivation "Required for protected endpoints"
```

Generates the next sequential TC ID, creates the record directory, writes a fully populated `tc_record.json` (status `planned`, R1 creation revision), and updates the registry.

### 3. Update a TC record

```bash
# Status transition (validated against the state machine)
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
  --set-status in_progress --reason "Starting implementation"

# Add a file
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
  --add-file src/auth.py:created

# Append handoff data
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
  --handoff-progress "JWT middleware wired up" \
  --handoff-next "Write integration tests" \
  --handoff-next "Update README"
```

Every change appends a sequential `R<n>` revision entry, refreshes `updated`, and re-validates against the schema before writing atomically (`.tmp` then rename).

### 4. View status

```bash
# Single TC
python3 scripts/tc_status.py --root . --tc-id TC-001-04-05-26-user-auth

# All TCs (registry summary)
python3 scripts/tc_status.py --root . --all --json
```

### 5. Validate a record or registry

```bash
python3 scripts/tc_validator.py --record docs/TC/records/TC-001-.../tc_record.json
python3 scripts/tc_validator.py --registry docs/TC/tc_registry.json
```

Validator enforces the schema, checks state-machine legality, verifies sequential `R<n>` and `T<n>` IDs, and asserts approval consistency (`approved=true` requires `approved_by` and `approved_date`).

> See [references/tc-schema.md](references/tc-schema.md) for the full schema.

## Slash-Command Dispatcher

The repo ships a `/tc` slash command at `commands/tc.md` that dispatches to these scripts based on subcommand:

| Command | Action |
|---------|--------|
| `/tc init` | Run `tc_init.py` for the current project |
| `/tc create <name>` | Prompt for fields, run `tc_create.py` |
| `/tc update <tc-id>` | Apply user-described changes via `tc_update.py` |
| `/tc status [tc-id]` | Run `tc_status.py` |
| `/tc resume <tc-id>` | Display handoff, archive prior session, start a new one |
| `/tc close <tc-id>` | Transition to `deployed`, set approval |
| `/tc export` | Re-render all derived artifacts |
| `/tc dashboard` | Re-render the registry summary |

The slash command is the user interface; the Python scripts are the engine.

## Session Handoff Format

The handoff block lives at `session_context.handoff` inside each TC and is the single most important field for AI continuity. It contains:

- `progress_summary` — what has been done
- `next_steps` — ordered list of remaining actions
- `blockers` — anything preventing progress
- `key_context` — critical decisions, gotchas, patterns the next bot must know
- `files_in_progress` — files being edited and their state (`editing`, `needs_review`, `partially_done`, `ready`)
- `decisions_made` — architectural decisions with rationale and timestamp

> See [references/handoff-format.md](references/handoff-format.md) for the full structure and fill-out rules.

## Validation Rules (Always Enforced)

1. **State machine** — only valid transitions are allowed.
2. **Sequential IDs** — `revision_history` uses `R1, R2, R3...`; `test_cases` uses `T1, T2, T3...`.
3. **Append-only history** — revision entries are never modified or deleted.
4. **Approval consistency** — `approved=true` requires `approved_by` and `approved_date`.
5. **TC ID format** — must match `TC-NNN-MM-DD-YY-slug`.
6. **Sub-TC ID format** — must match `TC-NNN.A` or `TC-NNN.A.N`.
7. **Atomic writes** — JSON is written to `.tmp` then renamed.
8. **Registry stats** — recomputed on every registry write.

## Non-Blocking Bookkeeping Pattern

TC tracking must NOT interrupt the main workflow.

- **Never stop to update TC records inline.** Keep coding.
- At natural milestones, spawn a background subagent to update the record.
- Surface questions only when genuinely needed ("This work doesn't match any active TC — create one?"), and ask once per session, not per file.
- At session end, write a final handoff block before closing.

## Retroactive Bulk Creation

For onboarding an existing project with undocumented history, build a `retro_changelog.json` (one entry per logical change) and feed it to `tc_create.py` in a loop, or extend the script for batch mode. Group commits by feature, not by file.

## Anti-Patterns

| Anti-pattern | Why it's bad | Do this instead |
|--------------|--------------|-----------------|
| Editing `revision_history` to "fix" a typo | History is append-only — tampering destroys the audit trail | Add a new revision that corrects the field |
| Skipping the state machine ("just set status to deployed") | Bypasses validation and hides skipped phases | Walk through `in_progress -> implemented -> tested -> deployed` |
| Creating one TC per file changed | Fragments related work and explodes the registry | One TC per logical unit (feature, fix, refactor) |
| Updating TC inline between every code edit | Slows the main agent, wastes context | Spawn a background subagent at milestones |
| Marking `approved=true` without `approved_by` | Validator will reject; misleading audit trail | Always set `approved_by` and `approved_date` together |
| Overwriting `tc_record.json` directly with a text editor | Risks corruption mid-write and skips validation | Use `tc_update.py` (atomic write + schema check) |
| Putting secrets in `notes` or evidence | Records are committed to the repo | Reference an env var or external secret store |
| Reusing TC IDs after deletion | Breaks the sequential guarantee and confuses history | Increment forward only — never recycle |
| Letting `next_steps` go stale | Defeats the purpose of handoff | Update on every milestone, even if it's "nothing changed" |

## Cross-References

- `engineering/changelog-generator` — Generates Keep-a-Changelog release notes from Conventional Commits. Pair it with TC tracker: TC for the granular per-change audit trail, changelog for user-facing release notes.
- `engineering/tech-debt-tracker` — For tracking long-lived debt items rather than discrete code changes.
- `engineering/focused-fix` — When a bug fix needs systematic feature-wide repair, run `/focused-fix` first then capture the result as a TC.
- `project-management/decision-log` — Architectural decisions made inside a TC's `decisions_made` block can also be promoted to a project-wide decision log.
- `engineering-team/code-reviewer` — Pre-merge review fits naturally into the `tested -> deployed` transition; capture the reviewer in `approval.approved_by`.

## References in This Skill

- [references/tc-schema.md](references/tc-schema.md) — Full JSON schema for TC records and the registry.
- [references/lifecycle.md](references/lifecycle.md) — State machine, valid transitions, and recovery flows.
- [references/handoff-format.md](references/handoff-format.md) — Session handoff structure and best practices.

Alle Dateien

0 Dateien

tc-tracker installieren

Laden Sie die Skill-Dateien herunter und extrahieren Sie diese in Ihr .claude/skills/-Verzeichnis.

ZIP herunterladen

Klonen Sie das Repository und kopieren Sie die Skill-Dateien in Ihr Projekt.

git clone https://github.com/alirezarezvani/claude-skills/tree/main/engineering/skills/tc-tracker # Copy SKILL.md to your .claude/skills/ directory

Kopieren Kopieren
Schnelle Einrichtung: Kopieren Sie den Ordner „skill“ nach .claude/skills/. Claude erkennt und verwendet die Fähigkeit automatisch.

Ähnliche Skills

golang-dependency-injection
Zeit aktualisiert 29. Juni 2026
nuxthub
Zeit aktualisiert 23. August 2026
code-quality
Zeit aktualisiert 22. August 2026
altimate-data-engineering-skills
Zeit aktualisiert 23. August 2026
OR