Reflection
Answer these three questions about the work you just did. Out loud, in the response. No preamble, no summary of what you did — the user already saw it.
- What are you least confident about in what you just did?
- What did you just tell me works that you didn't actually verify?
- What's the biggest thing I'm probably missing about this that I haven't thought to ask?
Rules
- Be specific: name the file, the function, the claim, the assumption. "The error handling might be off" is worthless; "
parse_dateat utils.py:44 assumes UTC and I never checked what the caller passes" is an answer. - Question 2 is about your own sentences. Scan back over what you literally told the user this session and separate ran-it-and-saw-it from sounded-right-so-I-said-it. Tag every one of them per Citations below.
- If a claim is unverified and cheap to verify, verify it now, then report the result instead of the doubt.
- No hedging-as-answer. "Everything looks good" fails the skill. If you genuinely have nothing for a question, say what you did check that makes it so, not that you're confident.
- Don't start fixing beyond quick verification unless the user asks. Report, then wait.
Citations
Every factual claim in the answer carries its evidence inline, or it goes on the unverified list. Three kinds:
ran— a command executed this session. Quote the decisive output line; don't just name the command. Naming lets a bad claim through: "I ranls -l" hides that the output read.rw-r--r--@ SKILL.mdwhile the claim said "symlink". Quoting puts the mismatch on the page where a reader — including you, re-reading — can see it.read— verified by reading. Citefile:line.assumed— no evidence. Say so plainly.
Before you publish a citation:
- Does the quoted output actually contain the asserted fact? A citation that doesn't is worse than none — it makes a guess look sourced.
- Did the evidence exist before you went looking for it? A search can match the record of itself: tool calls are written to the session transcript before they run, so grepping for a phrase can find your own query string. Never verify a claim against an artifact your verification created —
mkdir -p X && ls Xproves nothing about whether X existed. - An empty
assumedlist is itself a claim. Justify it or look harder.