/tc¶
Dispatch a TC (Technical Change) command. Arguments: $ARGUMENTS.
If $ARGUMENTS is empty, print this menu and stop:
/tc init Initialize TC tracking in this project
/tc create <name> Create a new TC record
/tc update <tc-id> [...] Update fields, status, files, handoff
/tc status [tc-id] Show one TC or the registry summary
/tc resume <tc-id> Resume a TC from a previous session
/tc close <tc-id> Transition a TC to deployed
/tc export Re-render derived artifacts
/tc dashboard Re-render the registry summary
Otherwise, parse $ARGUMENTS as <subcommand> <rest> and dispatch to the matching protocol below. All scripts live at engineering/tc-tracker/scripts/.
Subcommands¶
init¶
- Run:
- If status is
already_initialized, report current statistics and stop. - Otherwise report what was created and suggest
/tc create <name>as the next step.
create <name>¶
- Parse
<name>as a kebab-case slug. If missing, ask the user for one. - Prompt the user (one question at a time) for:
- Title (5-120 chars)
- Scope:
feature | bugfix | refactor | infrastructure | documentation | hotfix | enhancement - Priority:
critical | high | medium | low(defaultmedium) - Summary (10+ chars)
- Motivation
- Run:
- Report the new TC ID and the path to the record.
update <tc-id> [intent]¶
- If
<tc-id>is missing, list active TCs (statusin_progressorblocked) fromtc_status.py --alland ask which one. - Determine the user's intent from natural language:
- Status change →
--set-status <state>with--reason "<why>" - Add files → one or more
--add-file path[:action] - Add a test →
--add-test "<title>" --test-procedure "<step>" --test-expected "<result>" - Update handoff → any combination of
--handoff-progress,--handoff-next,--handoff-blocker,--handoff-context - Add a note →
--note "<text>" - Add a tag →
--tag <tag> - Run:
- If exit code is non-zero, surface the error verbatim. The state machine and validator will reject invalid moves — do not retry blindly.
status [tc-id]¶
- If
<tc-id>is provided: - Otherwise:
resume <tc-id>¶
- Run:
- Display the handoff block prominently:
progress_summary,next_steps(numbered),blockers,key_context. - Ask: "Resume
and pick up at next step 1? (y/n)" - If yes, run an update to record the resumption:
- Begin executing the first item in
next_steps. Do NOT re-derive context — trust the handoff.
close <tc-id>¶
- Read the record via
tc_status.py --tc-id <tc-id> --json. - Verify the current status is
tested. If not, refuse and tell the user which transitions are still required. - Check
test_cases: warn if any arepending,fail, orblocked. - Ask the user:
- "Who is approving? (your name, or 'self')"
- "Approval notes (optional):"
- "Test coverage status: none / partial / full"
- Run:
Then directly edit the
python3 engineering/tc-tracker/scripts/tc_update.py --root . --tc-id <tc-id> \ --set-status deployed --reason "Approved by <approver>" --note "Approval: <approver> — <notes>"approvalblock via a follow-up update if your script version supports it; otherwise instruct the user to record approval innotes. - Report: "TC-NNN closed and deployed."
export¶
There is no automatic HTML export in this skill. Re-validate everything instead:
- Read the registry.
- For each record, run:
- Run:
- Report: total records validated, any errors, paths to anything invalid.
dashboard¶
Run the all-records summary:
Iron Rules¶
- Never edit
tc_record.jsonby hand. Always usetc_update.pyso revision history is appended and validation runs. - Never skip the state machine. Walk forward through states even if it feels redundant.
- Never delete a TC. History is append-only — add a final revision and tag it
[CANCELLED]. - Background bookkeeping. When mid-task, spawn a background subagent to update the TC. Do not pause coding to do paperwork.
- Validate before reporting success. If a script exits non-zero, surface the error and stop.
Related Skills¶
engineering/tc-tracker— Full SKILL.md with schema reference, lifecycle diagrams, and the handoff format.engineering/changelog-generator— Pair with TC tracker: TCs for the per-change audit trail, changelog for user-facing release notes.engineering/tech-debt-tracker— For tracking long-lived debt rather than discrete code changes.