opção
LarLar Skill Documentação tc-tracker

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 tudo
33
Tempo atualizado 27 de Agosto de 2026

TC 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 resume ou /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.A ou TC-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:

ComandoAçã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 feito
  • next_steps — lista ordenada de ações restantes
  • blockers — qualquer coisa impedindo o progresso
  • key_context — decisões críticas, armadilhas, padrões que o próximo bot deve conhecer
  • files_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)

  1. Máquina de estados — apenas transições válidas são permitidas.
  2. IDs sequenciaisrevision_history usa R1, R2, R3...; test_cases usa T1, T2, T3....
  3. Histórico apenas para anexação — entradas de revisão nunca são modificadas ou excluídas.
  4. Consistência de aprovaçãoapproved=true requer approved_by e approved_date.
  5. Formato do ID de TC — deve corresponder a TC-NNN-MM-DD-YY-slug.
  6. Formato do ID de Sub-TC — deve corresponder a TC-NNN.A ou TC-NNN.A.N.
  7. Escritas atômicas — o JSON é escrito em .tmp e depois renomeado.
  8. 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ãoPor que é ruimFaça isso em vez disso
Editar `revision_history` para "corrigir" um erro de digitaçãoO histórico é apenas para anexação — interferir destrói o rastro de auditoriaAdicionar 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 ignoradasPassar por `in_progress -> implemented -> tested -> deployed`
Criar um TC por arquivo alteradoFragmenta o trabalho relacionado e explode o registroUm TC por unidade lógica (recurso, correção, refatoração)
Atualizar TC em linha entre cada edição de códigoRetarda o agente principal, desperdiça contextoIniciar um subagente em segundo plano nos marcos
Marcar `approved=true` sem `approved_by`O validador rejeitará; rastro de auditoria enganosoSempre definir `approved_by` e `approved_date` juntos
Sobrescrever `tc_record.json` diretamente com um editor de textoRisco de corrupção durante a escrita e ignora a validaçãoUsar `tc_update.py` (escrita atômica + verificação de esquema)
Colocar segredos em `notes` ou evidênciasOs registros são confirmados no repositórioReferenciar uma variável de ambiente ou armazenamento externo de segredos
Reutilizar IDs de TC após exclusãoQuebra a garantia sequencial e confunde o históricoIncrementar apenas para frente — nunca reciclar
Deixar `next_steps` ficar desatualizadoDesfaz o propósito da transferênciaAtualizar 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-fix primeiro e capture o resultado como um TC.
  • project-management/decision-log — Decisões arquiteturais feitas dentro do bloco decisions_made de 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ção tested -> deployed; capture o revisor em approval.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.
Ver no GitHub
---
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 arquivos

Instalar tc-tracker

Baixe e extraia os arquivos de habilidade para o diretório .claude/skills/.

Baixar ZIP

Clone 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 Copiar
Configuração rápida: Copie a pasta de habilidades para .claude/skills/ O Claude detectará e usará automaticamente a habilidade

Habilidades relacionadas

golang-dependency-injection
Tempo atualizado 29 de Junho de 2026
nuxthub
Tempo atualizado 23 de Agosto de 2026
code-quality
Tempo atualizado 22 de Agosto de 2026
altimate-data-engineering-skills
Tempo atualizado 23 de Agosto de 2026
OR