claude/agentic-engineering-principles-plugin/skills/agent-feedback-tiers/SKILL.md
Define a three-tier feedback vocabulary — hint, reminders, instruction — for steering agents from tool output, with strict tier contracts and an evidence-gated admission rule for reminders. Use when designing tool output that guides agents, adding hints or reminders to a CLI or tool, deciding where mid-flow guidance belongs, or reviewing whether guidance text is in the right tier.
npx skillsauth add amhuppert/my-ai-resources agent-feedback-tiersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Tool output is the highest-recency channel you have into an agent's decision-making — guidance delivered at the moment of action beats a system prompt read thousands of tokens ago. That power only survives if the vocabulary is small, the obligations per tier are crisp, and admission to the channel is rationed. This skill defines the three-tier contract and the rules that keep it from decaying into noise.
Command output (not just help) carries up to three guidance tiers with distinct agent obligations:
| Tier | Field | Semantics | Agent obligation |
|---|---|---|---|
| Hint | hint?: string | Advisory next step | Ignorable by contract |
| Reminders | reminders?: string[] | Invariants that stay binding while work continues | Keep true; not an action |
| Instruction | instruction?: string | Do this specific thing now | Obey before anything else |
The distinctions that matter:
Fixed render order in text mode: primary output → detail/issue lines → reminder: lines → hint: line. The most load-bearing content comes first; the ignorable tier comes last.
All three tiers are also carried in the structured --json envelope (hint, reminders, instruction fields alongside error/issues/code). Structured callers get the same guidance as text callers — tier content is never text-mode-only.
The value of the vocabulary is the crispness of its contract. The moment something load-bearing appears in the ignorable tier, every tier's contract collapses: agents learn that the advisory channel sometimes matters, which means they can no longer safely skim it — and the whole point of a contractually-ignorable tier is that it can be skimmed.
Review rules, enforced as blocking:
hint. End-turn messages, stop conditions, halt reasons are primary output or instruction, never demoted into a hint.reminders. A "do this now" in the keep-true tier is an instruction wearing the wrong badge.hint with no consequence, always.Rejected alternatives worth knowing: overloading hint for everything destroys its ignorable-by-contract property; a single messages[] with severity levels is a weaker contract that invites misuse.
A one-line hint at the end of output turns a multi-step flow into a self-chaining one:
validate succeeds → "valid — create it with yourcli thing create --file payload.json"create succeeds → "created <id> — start it with yourcli thing start <id>"Discipline for hint authorship:
Hints are the third discovery layer: a one-line system-prompt nudge gets the agent to the skill doc, the skill doc gets it to the first command, and hints keep it on rails mid-flow without reloading anything.
The reminder channel's power comes from scarcity. A reminder ships only when all four hold:
Expanding the rule set — more rules, or reminders on new command families — requires measured post-hoc evidence that the existing reminders reduce violations: compare protocol-violation classes (silent stalls, breaker trips, scope creep) across real runs before and after. Unrestricted authoring dilutes the channel until agents tune it out; scarcity is the mechanism.
Whichever layer can see runtime state computes the guidance; the layer the agent talks to only renders it.
input → string[], directly unit-testable with no mocks — predicate boundaries, the ≤2 cap, and verb filtering all as plain function tests.evidence field pointing at the observed failure that earned it. A rule without evidence does not compile past review.Recency beats system-prompt distance. An invariant reinforced at the decision point — in the output of the command the agent just ran, immediately before its next action — reliably outperforms the same invariant stated thousands of tokens earlier. That is the justification for a mid-flow guidance channel.
It is also the reason the channel must be rationed: the same recency that makes it powerful makes it easy to abuse into ambient noise. Every unearned reminder taxes every future reminder's credibility. Scarcity is not a style preference; it is what keeps the channel working.
cli-tools-for-agents — design a project CLI as the agent tool surface: exit codes, file payloads, jobs, doctorprogressive-disclosure-tooling — help as a navigable disclosure graph derived from one typed registryearned-guidance-docs — write agent guidance only when earned by real failures; root contract plus read-on-demand docsdevelopment
Debug a running web app via the web-debugger SDK: app logs, application state, runtime snapshots, React state, query cache.
development
Thoroughly understand a software development objective before implementation: research, identify ambiguities, ask clarifying questions. Use before starting implementation of a non-trivial or ambiguously specified feature, or when requirements leave open design decisions.
development
Locate the on-disk Claude Code transcript file (.jsonl under ~/.claude/projects/) for the current or a specified conversation.
development
Reflect on codebase navigation effectiveness at end of conversation. Surfaces dead ends, inefficiencies, missing context. Does not write files — pair with /kiro:steering-custom to persist.