echo
The echo skill checks whether a user has already resolved a substantive question in prior conversations before generating a new answer. It searches memory for similar past discussions, and if it finds a strong match from at least three days prior, it surfaces the earlier conclusion and asks whether circumstances have changed. This prevents redundant thinking and respects prior decisions already made. Use it when users pose recommendations, opinions, or decision-weighing questions that could recur over weeks or months.
git clone --depth 1 https://github.com/ghostwright/phantom /tmp/echo && cp -r /tmp/echo/skills-builtin/echo ~/.claude/skills/echoSKILL.md
# Echo: the prior-answer surfacer
## Goal
Respect the user's past thinking. Before deriving a new answer to a substantive question, check whether the user already resolved this question weeks or months ago. If yes, surface the prior answer inline and ask whether anything has changed. If no, proceed to answer normally without mentioning that you looked.
The user should feel like you remember what they already decided, not like you are doing paperwork.
## Steps
### 1. Classify the question
Determine whether the question is substantive. Skip if:
- It is a greeting or acknowledgment ("hey", "thanks", "got it").
- It is an operational query ("are you online", "what time is it", "are you working on X").
- It is an imperative with no open decision ("send this to Anna", "delete that file").
- It is clearly a first-time question with no prior context ("what does this error mean in this new log line").
Proceed if:
- The user is asking for a recommendation or opinion.
- The user is asking "what did we decide" or "what is the right way".
- The user is weighing options on something they have discussed before.
- The user is asking a question that sounds like it could have been asked before.
**Success criteria**: you have a yes or no on whether to run the echo check. If no, do not call the search tool at all.
### 2. Search memory for prior answers
Call `mcp__phantom-reflective__phantom_memory_search` with `query: "<the user's question in your own words>"`, `memory_type: "all"`, `limit: 5`. The query should be a restatement of the semantic intent, not a literal copy of the user's words.
**Success criteria**: you have a list of 0-5 hits with similarity scores.
### 3. Judge the match
Examine the top hit. It is a strong match if all of these hold:
- Similarity score is above 0.80 if the tool returns one.
- The hit is at least 3 days old.
- The hit actually addresses the same question, not just the same keywords.
- You can clearly see what the prior conclusion was.
If the top hit is NOT a strong match, proceed to answer the question normally from scratch. Do not mention the echo check to the user.
**Success criteria**: you have a clear yes or no on the match.
### 4. Surface the prior answer if there is one
If there is a strong match, respond BEFORE deriving a new answer:
> You asked something very similar on [date] and you landed on [paraphrase of the prior conclusion]. Has anything changed since then, or is that still your view?
Wait for the user's response.
If the user says "no, things are different now" or explains what changed, proceed to derive a new answer informed by the new context.
If the user says "yes, that is still my view", acknowledge and ask what they want to do with that. Sometimes they just needed the reminder.
**Success criteria**: the user is aware of their prior thinking, and you have their explicit signal on whether to rebuild from scratch or honor the prior answer.
## Rules
- Never surface weak matches. A low-confidence echo is worse than no echo because it erodes the user's trust in your memory.
- Never em-dash.
- Never mention that you ran the echo check if it did not fire. The user should not see the machinery when it does not apply.
- Be brief on the surface: two sentences, not four.
- If the prior conclusion has expired (for example, it is about a project that has since shipped), treat it as a weak match and proceed normally.
- Always paraphrase the prior conclusion in your own words. Do not copy-paste from memory.List the Claude Code plugins currently enabled for the agent, read straight from settings.json.
Weekly self-audit playback. Surface patterns from the user's past week that they probably cannot see themselves.
Find commitments the user made in the last two weeks and did not follow through on. A promises audit.
Discover recurring behaviors from memory and offer to formalize them as scheduled jobs.
List the agent's current skills, memory files, plugins, subagents, hooks, and a settings summary plus dashboard URLs. The user-facing discovery path for everything the operator can edit.
Show how the user's thinking on a specific topic has evolved over time. A chronological narrative with turning-point callouts.