tc-tracker
alirezarezvani/claude-skills
Отслеживайте изменения кода с помощью структурированных JSON-записей, принудительного конечного автомата и формата передачи сессии для обеспечения непрерывности работы ИИ.
...Расширить всеTC Tracker
Отслеживайте каждое изменение кода с помощью структурированных JSON-записей, принудительного конечного автомата и формата передачи сессии, который позволяет новой сессии ИИ возобновить работу корректно после истечения предыдущей.
Обзор
Техническое изменение (TC) — это структурированная запись, которая фиксирует что изменилось, почему оно изменилось, кто его изменил, когда оно изменилось, как оно было протестировано и где находится работа для следующей сессии. Записи хранятся в формате JSON в docs/TC/ внутри целевого проекта, проверяются на соответствие строгой схеме и конечному автомату.
Используйте этот навык, когда пользователь:
- Просит "отследить это изменение" или хочет получить журнал аудита для изменений кода
- Хочет передать незавершенную работу будущей сессии ИИ
- Нуждается в структурированных примечаниях к выпуску, которые выходят за рамки сообщений коммитов
- Осваивает существующий проект и хочет ретроспективную документацию по изменениям
- Запрашивает
/tc init,/tc create,/tc update,/tc status,/tc resumeили/tc close
НЕ используйте этот навык, когда:
- Пользователь хочет только журнал изменений из истории git (используйте
engineering/changelog-generator) - Пользователь хочет отслеживать только элементы технического долга (используйте
engineering/tech-debt-tracker) - Изменение тривиально (опечатка, форматирование) и не повлияет на поведение
Структура хранения
Каждый проект хранит TC в {project_root}/docs/TC/:
docs/TC/
├── tc_config.json # Настройки проекта
├── tc_registry.json # Главный индекс + статистика
├── records/
│ └── TC-001-04-05-26-user-auth/
│ └── tc_record.json # Источник истины
└── evidence/
└── TC-001/ # Фрагменты журналов, вывод команд, скриншоты
Соглашение об идентификаторах TC
- Родительский TC:
TC-NNN-MM-DD-YY-functionality-slug(например,TC-001-04-05-26-user-authentication) - Под-TC:
TC-NNN.AилиTC-NNN.A.1(буква = ревизия, цифра = подревизия) NNN— последовательный номер,MM-DD-YY— дата создания, slug — в kebab-case.
Конечный автомат
planned -> in_progress -> implemented -> tested -> deployed
| | | | |
+-> blocked -+ +- in_progress planned
См. references/lifecycle.md для полной таблицы переходов и потоков восстановления.
Команды рабочего процесса
Навык поставляется с пятью скриптами на Python, которые выполняют детерминированные операции только со стандартной библиотекой над записями TC. Каждый из них поддерживает --help и --json.
1. Инициализация отслеживания в проекте
python3 scripts/tc_init.py --project "My Project" --root .
Создает docs/TC/, docs/TC/records/, docs/TC/evidence/, tc_config.json и tc_registry.json. Идентичность — повторный запуск сообщает "уже инициализировано" с текущей статистикой.
2. Создание новой записи TC
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"
Генерирует следующий последовательный идентификатор TC, создает каталог записи, записывает полностью заполненный tc_record.json (статус planned, ревизия создания R1) и обновляет реестр.
3. Обновление записи TC
# Переход статуса (проверяется конечным автоматом)
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
--set-status in_progress --reason "Starting implementation"
# Добавить файл
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
--add-file src/auth.py:created
# Добавить данные передачи
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"
Каждое изменение добавляет последовательную запись ревизии R<n></n>, обновляет updated и повторно проверяет соответствие схеме перед атомарной записью (.tmp, затем переименование).
4. Просмотр статуса
# Один TC
python3 scripts/tc_status.py --root . --tc-id TC-001-04-05-26-user-auth
# Все TC (сводка реестра)
python3 scripts/tc_status.py --root . --all --json
5. Проверка записи или реестра
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
Валидатор проверяет схему, проверяет законность переходов конечного автомата, проверяет последовательные идентификаторы R<n></n> и T<n></n>, а также утверждает согласованность одобрения (approved=true требует approved_by и approved_date).
См. references/tc-schema.md для полной схемы.
Диспетчер слэш-команд
В репозитории поставляется слэш-команда /tc в commands/tc.md, которая перенаправляет эти скрипты в зависимости от подкоманды:
| Команда | Действие |
|---|---|
| `/tc init` | Запустить `tc_init.py` для текущего проекта |
| `/tc create | Запросить поля, запустить `tc_create.py` |
| `/tc update | Применить описанные пользователем изменения через `tc_update.py` |
| `/tc status [tc-id]` | Запустить `tc_status.py` |
| `/tc resume | Отобразить передачу, архивировать предыдущую сессию, начать новую |
| `/tc close | Перейти в `deployed`, установить одобрение |
| `/tc export` | Пересоздать все производные артефакты |
| `/tc dashboard` | Пересоздать сводку реестра |
Слэш-команда является пользовательским интерфейсом; скрипты на Python — это движок.
Формат передачи сессии
Блок передачи находится в session_context.handoff внутри каждого TC и является самым важным полем для непрерывности работы ИИ. Он содержит:
progress_summary— что было сделаноnext_steps— упорядоченный список оставшихся действийblockers— все, что препятствует прогрессуkey_context— критические решения, подводные камни, шаблоны, которые должен знать следующий ботfiles_in_progress— файлы, редактируемые в данный момент, и их состояние (editing,needs_review,partially_done,ready)decisions_made— архитектурные решения с обоснованием и временной меткой
См. references/handoff-format.md для полной структуры и правил заполнения.
Правила валидации (всегда применяются)
- Конечный автомат — разрешены только допустимые переходы.
- Последовательные идентификаторы —
revision_historyиспользуетR1, R2, R3...;test_casesиспользуетT1, T2, T3.... - История только для добавления — записи ревизии никогда не изменяются и не удаляются.
- Согласованность одобрения —
approved=trueтребуетapproved_byиapproved_date. - Формат идентификатора TC — должен соответствовать
TC-NNN-MM-DD-YY-slug. - Формат идентификатора под-TC — должен соответствовать
TC-NNN.AилиTC-NNN.A.N. - Атомарные записи — JSON записывается в
.tmp, затем переименовывается. - Статистика реестра — пересчитывается при каждой записи в реестр.
Шаблон неблокирующего учета
Отслеживание TC НЕ должно прерывать основной рабочий процесс.
- Никогда не останавливайтесь для обновления записей TC в потоке. Продолжайте кодирование.
- На естественных этапах запускайте фоновый подагент для обновления записи.
- Отображайте вопросы только при реальной необходимости ("Эта работа не соответствует ни одному активному TC — создать один?"), и задавайте один раз за сессию, а не за файл.
- В конце сессии запишите финальный блок передачи перед закрытием.
Массовое ретроспективное создание
Для освоения существующего проекта с недокументированной историей создайте retro_changelog.json (по одной записи на логическое изменение) и передайте его в tc_create.py в цикле или расширьте скрипт для пакетного режима. Группируйте коммиты по функциям, а не по файлам.
Антипаттерны
| Антипаттерн | Почему это плохо | Делайте так вместо этого |
|---|---|---|
| Редактирование `revision_history` для "исправления" опечатки | История только для добавления — вмешательство уничтожает журнал аудита | Добавить новую ревизию, исправляющую поле |
| Пропуск конечного автомата ("просто установите статус в deployed") | Обходит проверку и скрывает пропущенные фазы | Пройти через `in_progress -> implemented -> tested -> deployed` |
| Создание одного TC на каждый измененный файл | Фрагментирует связанную работу и раздувает реестр | Один TC на логическую единицу (функция, исправление, рефакторинг) |
| Обновление TC в потоке между каждым редактированием кода | Замедляет основного агента, тратит контекст | Запустить фоновый подагент на этапах |
| Отметка `approved=true` без `approved_by` | Валидатор отклонит; вводящий в заблуждение журнал аудита | Всегда устанавливать `approved_by` и `approved_date` вместе |
| Прямое перезаписывание `tc_record.json` текстовым редактором | Риск повреждения во время записи и пропуск проверки | Использовать `tc_update.py` (атомарная запись + проверка схемы) |
| Помещение секретов в `notes` или доказательства | Записи коммитятся в репозиторий | Ссылаться на переменную окружения или внешнее хранилище секретов |
| Повторное использование идентификаторов TC после удаления | Нарушает последовательную гарантию и запутывает историю | Увеличивать только вперед — никогда не перерабатывать |
| Позволение `next_steps` устаревать | Подрывает цель передачи | Обновлять на каждом этапе, даже если "ничего не изменилось" |
Перекрестные ссылки
engineering/changelog-generator— Генерирует примечания к выпуску в формате Keep-a-Changelog из Conventional Commits. Сочетайте с трекером TC: TC для детального журнала аудита по каждому изменению, changelog для заметок к выпуску для пользователей.engineering/tech-debt-tracker— Для отслеживания долгосрочных элементов долга, а не дискретных изменений кода.engineering/focused-fix— Когда исправление ошибки требует системного ремонта всей функции, сначала запустите/focused-fix, затем зафиксируйте результат как TC.project-management/decision-log— Архитектурные решения, принятые в блокеdecisions_madeTC, также могут быть перенесены в журнал решений всего проекта.engineering-team/code-reviewer— Предварительное слияние проверки естественно вписывается в переходtested -> deployed; зафиксируйте рецензента вapproval.approved_by.
Ссылки в этом навыке
- references/tc-schema.md — Полная схема JSON для записей TC и реестра.
- references/lifecycle.md — Конечный автомат, допустимые переходы и потоки восстановления.
- references/handoff-format.md — Структура передачи сессии и лучшие практики.
---
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.
Все файлы
0 файловУстановить tc-tracker
Скачайте и извлеките файлы навыков в вашу директорию .claude/skills/.
Скачать ZIPКлонируйте репозиторий и скопируйте файлы навыка в свой проект.
git clone https://github.com/alirezarezvani/claude-skills/tree/main/engineering/skills/tc-tracker # Copy SKILL.md to your .claude/skills/ directory
Копировать





Дом
