tc-tracker
alirezarezvani/claude-skills
Rastreie as alterações de código com registros JSON estruturados, uma máquina de estados obrigatória e um formato de transferência de sessão para continuidade da IA.
...Expandir tudoTC Tracker
Rastreie cada alteração de código com registros JSON estruturados, uma máquina de estados imposta e um formato de transferência de sessão que permite a uma nova sessão de IA retomar o trabalho limpa e seguramente quando uma sessão anterior expira.
Visão Geral
Uma Alteração Técnica (TC) é um registro estruturado que captura o que mudou, por que mudou, quem alterou, quando foi alterado, como foi testado e onde o trabalho está para a próxima sessão. Os registros são armazenados como JSON em docs/TC/ dentro do projeto de destino, validados contra um esquema estrito e uma máquina de estados.
Use esta habilidade quando o usuário:
- Solicita "rastrear esta alteração" ou deseja um rastro de auditoria para modificações de código
- Deseja transferir trabalho em andamento para uma futura sessão de IA
- Precisa de notas de lançamento estruturadas que vão além das mensagens de commit
- Faz o onboarding de um projeto existente e deseja documentação retroativa de alterações
- Solicita
/tc init,/tc create,/tc update,/tc status,/tc resumeou/tc close
NÃO use esta habilidade quando:
- O usuário deseja apenas um changelog a partir do histórico do git (use
engineering/changelog-generator) - O usuário deseja apenas rastrear itens de dívida técnica (use
engineering/tech-debt-tracker) - A alteração é trivial (erro de digitação, formatação) e não afetará o comportamento
Layout de Armazenamento
Cada projeto armazena TCs em {project_root}/docs/TC/:
docs/TC/
├── tc_config.json # Configurações do projeto
├── tc_registry.json # Índice mestre + estatísticas
├── records/
│ └── TC-001-04-05-26-user-auth/
│ └── tc_record.json # Fonte da verdade
└── evidence/
└── TC-001/ # Trechos de log, saída de comandos, capturas de tela
Convenção de ID de TC
- TC Principal:
TC-NNN-MM-DD-YY-slug-da-funcionalidade(ex.:TC-001-04-05-26-user-authentication) - Sub-TC:
TC-NNN.AouTC-NNN.A.1(letra = revisão, dígito = sub-revisão) NNNé sequencial,MM-DD-YYé a data de criação, o slug é kebab-case.
Máquina de Estados
planned -> in_progress -> implemented -> tested -> deployed
| | | | |
+-> blocked -+ +- in_progress planned
Consulte references/lifecycle.md para a tabela completa de transições e fluxos de recuperação.
Comandos de Fluxo de Trabalho
A habilidade inclui cinco scripts Python que realizam operações determinísticas e apenas com a biblioteca padrão (stdlib) em registros de TC. Cada um suporta --help e --json.
1. Inicializar o rastreamento em um projeto
python3 scripts/tc_init.py --project "My Project" --root .
Cria docs/TC/, docs/TC/records/, docs/TC/evidence/, tc_config.json e tc_registry.json. Idempotente — executar novamente relata "já inicializado" com as estatísticas atuais.
2. Criar um novo registro de 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"
Gera o próximo ID de TC sequencial, cria o diretório do registro, escreve um tc_record.json totalmente preenchido (status planned, revisão de criação R1) e atualiza o registro.
3. Atualizar um registro de TC
# Transição de status (validada contra a máquina de estados)
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
--set-status in_progress --reason "Starting implementation"
# Adicionar um arquivo
python3 scripts/tc_update.py --root . --tc-id TC-001-04-05-26-user-auth \
--add-file src/auth.py:created
# Anexar dados de transferência
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"
Cada alteração anexa uma entrada de revisão sequencial R<n></n>, atualiza updated e revalida contra o esquema antes de escrever atomicamente (.tmp seguido de renomeação).
4. Visualizar status
# TC único
python3 scripts/tc_status.py --root . --tc-id TC-001-04-05-26-user-auth
# Todos os TCs (resumo do registro)
python3 scripts/tc_status.py --root . --all --json
5. Validar um registro ou o índice
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
O validador impõe o esquema, verifica a legalidade da máquina de estados, verifica os IDs sequenciais R<n></n> e T<n></n>, e assegura a consistência da aprovação (approved=true requer approved_by e approved_date).
Consulte references/tc-schema.md para o esquema completo.
Dispachador de Comandos Slash
O repositório inclui um comando slash /tc em commands/tc.md que encaminha para esses scripts com base no subcomando:
| Comando | Ação |
|---|---|
| `/tc init` | Executa `tc_init.py` para o projeto atual |
| `/tc create | Solicita os campos, executa `tc_create.py` |
| `/tc update | Aplica alterações descritas pelo usuário via `tc_update.py` |
| `/tc status [tc-id]` | Executa `tc_status.py` |
| `/tc resume | Exibe a transferência, arquivar sessão anterior, iniciar uma nova |
| `/tc close | Transiciona para `deployed`, define aprovação |
| `/tc export` | Re-renderiza todos os artefatos derivados |
| `/tc dashboard` | Re-renderiza o resumo do registro |
O comando slash é a interface do usuário; os scripts Python são o mecanismo.
Formato de Transferência de Sessão
O bloco de transferência reside em session_context.handoff dentro de cada TC e é o campo mais importante para a continuidade da IA. Ele contém:
progress_summary— o que foi feitonext_steps— lista ordenada de ações restantesblockers— qualquer coisa impedindo o progressokey_context— decisões críticas, armadilhas, padrões que o próximo bot deve conhecerfiles_in_progress— arquivos sendo editados e seu estado (editing,needs_review,partially_done,ready)decisions_made— decisões arquiteturais com justificativa e carimbo de tempo
Consulte references/handoff-format.md para a estrutura completa e regras de preenchimento.
Regras de Validação (Sempre Aplicadas)
- Máquina de estados — apenas transições válidas são permitidas.
- IDs sequenciais —
revision_historyusaR1, R2, R3...;test_casesusaT1, T2, T3.... - Histórico apenas para anexação — entradas de revisão nunca são modificadas ou excluídas.
- Consistência de aprovação —
approved=truerequerapproved_byeapproved_date. - Formato do ID de TC — deve corresponder a
TC-NNN-MM-DD-YY-slug. - Formato do ID de Sub-TC — deve corresponder a
TC-NNN.AouTC-NNN.A.N. - Escritas atômicas — o JSON é escrito em
.tmpe depois renomeado. - Estatísticas do registro — recalculadas em cada gravação no registro.
Padrão de Contabilidade Não Bloqueante
O rastreamento de TCs NÃO deve interromper o fluxo de trabalho principal.
- Nunca pare para atualizar registros de TC em linha. Continue codando.
- Em marcos naturais, inicie um subagente em segundo plano para atualizar o registro.
- Apresente perguntas apenas quando genuinamente necessário ("Este trabalho não corresponde a nenhum TC ativo — criar um?"), e pergunte apenas uma vez por sessão, não por arquivo.
- Ao final da sessão, escreva um bloco final de transferência antes de fechar.
Criação em Lote Retroativa
Para fazer o onboarding de um projeto existente com histórico não documentado, crie um retro_changelog.json (uma entrada por alteração lógica) e alimente-o para tc_create.py em um loop, ou estenda o script para o modo em lote. Agrupe commits por recurso, não por arquivo.
Antipadrões
| Antipadrão | Por que é ruim | Faça isso em vez disso |
|---|---|---|
| Editar `revision_history` para "corrigir" um erro de digitação | O histórico é apenas para anexação — interferir destrói o rastro de auditoria | Adicionar uma nova revisão que corrige o campo |
| Ignorar a máquina de estados ("apenas defina o status como deployed") | Bypassa a validação e oculta fases ignoradas | Passar por `in_progress -> implemented -> tested -> deployed` |
| Criar um TC por arquivo alterado | Fragmenta o trabalho relacionado e explode o registro | Um TC por unidade lógica (recurso, correção, refatoração) |
| Atualizar TC em linha entre cada edição de código | Retarda o agente principal, desperdiça contexto | Iniciar um subagente em segundo plano nos marcos |
| Marcar `approved=true` sem `approved_by` | O validador rejeitará; rastro de auditoria enganoso | Sempre definir `approved_by` e `approved_date` juntos |
| Sobrescrever `tc_record.json` diretamente com um editor de texto | Risco de corrupção durante a escrita e ignora a validação | Usar `tc_update.py` (escrita atômica + verificação de esquema) |
| Colocar segredos em `notes` ou evidências | Os registros são confirmados no repositório | Referenciar uma variável de ambiente ou armazenamento externo de segredos |
| Reutilizar IDs de TC após exclusão | Quebra a garantia sequencial e confunde o histórico | Incrementar apenas para frente — nunca reciclar |
| Deixar `next_steps` ficar desatualizado | Desfaz o propósito da transferência | Atualizar em cada marco, mesmo que seja "nada mudou" |
Referências Cruzadas
engineering/changelog-generator— Gera notas de lançamento estilo Keep-a-Changelog a partir de Commits Convencionais. Combine-o com o rastreador de TC: TC para o rastro de auditoria granular por alteração, changelog para notas de lançamento voltadas ao usuário.engineering/tech-debt-tracker— Para rastrear itens de dívida de longo prazo em vez de alterações discretas de código.engineering/focused-fix— Quando uma correção de bug precisa de reparo sistemático em todo o recurso, execute/focused-fixprimeiro e capture o resultado como um TC.project-management/decision-log— Decisões arquiteturais feitas dentro do blocodecisions_madede um TC também podem ser promovidas a um log de decisões em todo o projeto.engineering-team/code-reviewer— A revisão pré-merge se encaixa naturalmente na transiçãotested -> deployed; capture o revisor emapproval.approved_by.
Referências Nesta Habilidade
- references/tc-schema.md — Esquema JSON completo para registros de TC e o índice.
- references/lifecycle.md — Máquina de estados, transições válidas e fluxos de recuperação.
- references/handoff-format.md — Estrutura de transferência de sessão e melhores práticas.
---
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.
Todos os arquivos
0 arquivosInstalar tc-tracker
Baixe e extraia os arquivos de habilidade para o diretório .claude/skills/.
Baixar ZIPClone o repositório e copie os arquivos da habilidade para o seu projeto.
git clone https://github.com/alirezarezvani/claude-skills/tree/main/engineering/skills/tc-tracker # Copy SKILL.md to your .claude/skills/ directory
Copiar





Lar
