Reject-to-learn
When the agent's output doesn't match how you actually like to code, capture it:
tastecode reject "no inline styles, use the tokens"
tastecode reject "too many files for what should be one component"
tastecode accept "prefer single bundled PR for refactors"
Each call:
- Appends a timestamped entry to
.tastecode/feedback.md(committed, plain markdown — no hidden memory). - Runs a reusable-reason heuristic. If the reason looks like a generic style
preference (not task-specific), TasteCode shows a preview of the change it
would make to
tastecode.mdunder a new## Learned Rulessection and asksapply? [y/N]. - On
y: writestastecode.mdand marks the feedback entry as promoted.
Optional flags:
| Flag | Effect |
|---|---|
--provider <name> | Tag the entry with the agent that produced the rejected output |
--task "<text>" | Tag the entry with what you were trying to do |
--yes | Skip the apply? [y/N] prompt — auto-apply |
Batch-promote later with tastecode learn
If you skipped the promote offer (or the heuristic deemed a reason
task-specific), pending entries stay in .tastecode/feedback.md. Promote
several at once:
tastecode learn
# Pending feedback entries:
# 1. ✗ no inline styles
# 2. ✗ rename to getUserById in src/login.ts
# 3. ✓ prefer named exports
#
# Promote which? (e.g. "1,3" or "all", blank to cancel):
Or non-interactive: tastecode learn --select 1,3 --yes.
The feedback log is plain markdown. Edit, delete, or git-ignore it as you like — TasteCode never reads it without your asking.