Agent Skill
Tate ships with an AI agent skill (skills/tate/SKILL.md) that teaches coding agents to generate review cards automatically after writing code. This works with Claude Code, Cursor, Copilot, and any agent that supports skill files.
Setup
Copy the skill file to your agent's skill directory, or point your agent at it:
# Claude Code
cp skills/tate/SKILL.md ~/.claude/skills/tate.md
# Or reference directly in your project
# The skill is already at skills/tate/SKILL.md
The agent will automatically generate cards after completing coding tasks.
What gets carded
The agent cards symbols where the reasoning matters:
- Functions with non-obvious error handling or edge cases
- Types where the field choices encode domain constraints
- Algorithms where the approach was chosen over alternatives
- Integration points where assumptions about external behavior are baked in
Trivial code is skipped: getters, simple constructors, one-line wrappers, boilerplate.
Question quality
The skill teaches agents to write decompression questions, not recognition questions.
Bad (tests recognition):
- "What does this function return?"
- "What parameters does this take?"
Good (tests understanding):
- "What happens when [unusual input] reaches this function?"
- "Why does this check [condition] before [operation] instead of after?"
- "What breaks if [assumption] stops being true?"
Each card gets one question and one answer. The answer explains why, not just what.
Example output
After implementing an authentication module, the agent runs:
tate add src/auth/login.rs::authenticate \
-q "What happens when bcrypt succeeds but the account is locked?" \
-a "Checks account.locked after password verification, not before. \
This prevents timing attacks: an attacker can't distinguish \
'wrong password' from 'locked account' by response time."
tate add src/auth/login.rs::refresh_token \
-q "What is the maximum lifetime of a refresh token chain?" \
-a "Each refresh rotates the token but increments chain_length. \
When chain_length exceeds MAX_CHAIN (default 30), the entire \
chain is invalidated and the user must re-authenticate."
Git hook integration
The git post-commit hook (tate hook post-commit) auto-populates the deck when commits match configured patterns:
[hooks]
auto_add = true
track_patterns = [
"Co-authored-by:.*Claude",
"Co-authored-by:.*Copilot",
"Co-authored-by:.*Cursor",
"Generated by",
]
The hook extracts all symbols from changed files using tree-sitter and adds them to the deck. Questions are not added by the hook. They can be added later by running tate add -q on existing entries, or by the agent skill after a coding session.
Manual card creation
You don't need an AI agent. Anyone can add questions:
# A team lead onboarding someone
tate add src/core/billing.ts::calculateTax \
-q "Why does this use ceil() instead of round()?" \
-a "Tax regulations require rounding up to the nearest cent. \
Using round() would sometimes underpay, which is a compliance violation."
# A developer documenting their own reasoning
tate add src/cache/eviction.rs::evict \
-q "Why LRU instead of LFU here?" \
-a "Access patterns are bursty. LFU would keep stale popular items \
too long. LRU matches the 'hot path changes every deploy' reality."