feat(respond): skill to enforce complete implementation#46
feat(respond): skill to enforce complete implementation#46paulnsorensen wants to merge 2 commits intomainfrom
Conversation
…vasion Based on analysis of 269 conversation logs (8651+ assistant messages), identified 7 recurring patterns where Claude defers, skips, or hand-waves instead of completing specs. The /respond skill bans these patterns and includes a self-check protocol before presenting output. Companion hookify rules (warn-deferred-stop, warn-placeholder-code, warn-ellipsis-code) are local-only and not committed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces a new respond skill for Claude Code that enforces complete, zero-deferral implementation behavior. It is the "antidote" to Claude's tendency to skip, defer, or hand-wave instead of writing actual code — built from an analysis of 269 real conversation logs. The skill defines 7 evasion patterns to avoid, a set of rules, and a mandatory self-check protocol before output is presented.
Changes:
- New
claude/skills/respond/SKILL.mddefining the skill's frontmatter, evasion pattern taxonomy, rules of engagement, self-check protocol, and usage examples.
| ## How to Use This Skill | ||
|
|
||
| The user invokes `/respond` followed by their task: | ||
|
|
||
| ``` | ||
| /respond implement the auth module from the spec | ||
| /respond finish the remaining 3 items from the plan | ||
| /respond complete the test suite — all cases, no stubs | ||
| ``` |
There was a problem hiding this comment.
Every other user-invokable skill in this codebase has a corresponding command file in claude/commands/ that wires the slash-command to the skill (e.g., claude/commands/diff.md → claude/commands/worktree.md). The respond skill describes /respond as its primary invocation mechanism (line 134), but no claude/commands/respond.md file exists in this PR.
Without a command file, /respond will not be discoverable via /agents and cannot be invoked as a slash command. A minimal command file following the established pattern (e.g., claude/commands/diff.md) should be added alongside this skill.
There was a problem hiding this comment.
Fixed in 82d18f5 — added claude/commands/respond.md following the same pattern as diff.md and other commands.
| - "for now" / "for the time being" | ||
| - "I'll skip" / "skipping" | ||
| - "out of scope" / "beyond scope" | ||
| - "later" / "separately" / "follow-up" / "next step" |
There was a problem hiding this comment.
The self-check scan list (line 115) bans "separately" as an evasion word, but Rule 6 (line 101–104) explicitly recommends asking: "Should I stub the interface and implement it, or do you want to handle auth separately?" The word "separately" appears in the prescribed example output that Claude should produce when correctly following this skill.
This same issue affects the word "handle" in "handle separately" (banned at line 115 via the "separately" ban). The Exception clause doesn't cover user-facing questions, so the self-check would incorrectly block the exact phrasing the rules recommend using.
There was a problem hiding this comment.
Good catch — fixed in 82d18f5. Broadened the Exception clause to explicitly cover clarifying questions posed to the user, so the Rule 6 example ("Should I stub the interface and implement it, or do you want to handle auth separately?") is no longer flagged by the self-check.
| --- | ||
| name: respond | ||
| description: > | ||
| Enforce complete implementation with zero deferrals, shortcuts, or evasion. | ||
| Use this skill when the user invokes /respond, says "complete this", "finish this", | ||
| "no shortcuts", "implement fully", "do it all", "no half measures", or when | ||
| they express frustration about incomplete work ("why didn't you finish", | ||
| "you skipped", "that's not complete"). Also trigger when the user asks to | ||
| "implement" something and the task involves a spec, plan, or multi-step | ||
| checklist — the user expects every item done, not a subset. | ||
| This skill is the antidote to Claude's tendency to defer, skip, or hand-wave | ||
| instead of writing the actual code. | ||
| --- |
There was a problem hiding this comment.
The claude/README.md skills table (lines 122–134) lists every skill in claude/skills/ by name and purpose. The respond skill is not listed there, leaving the skills registry out of sync with the actual directory contents. The README.md is the canonical reference for "what skills exist and what they do" — it should be updated to include this new entry.
There was a problem hiding this comment.
Fixed in 82d18f5 — added respond to the skills table in claude/README.md. Also backfilled de-slop and tdd-assertions which were missing from the same table.
| --- | ||
| name: respond | ||
| description: > | ||
| Enforce complete implementation with zero deferrals, shortcuts, or evasion. | ||
| Use this skill when the user invokes /respond, says "complete this", "finish this", | ||
| "no shortcuts", "implement fully", "do it all", "no half measures", or when | ||
| they express frustration about incomplete work ("why didn't you finish", | ||
| "you skipped", "that's not complete"). Also trigger when the user asks to | ||
| "implement" something and the task involves a spec, plan, or multi-step | ||
| checklist — the user expects every item done, not a subset. | ||
| This skill is the antidote to Claude's tendency to defer, skip, or hand-wave | ||
| instead of writing the actual code. | ||
| --- |
There was a problem hiding this comment.
The Skill Delegation table in claude/CLAUDE.md (lines 124–136) enumerates every skill and its canonical invocation. Skills de-slop and tdd-assertions are listed there, meaning Claude knows to invoke them proactively. The respond skill is not listed, so Claude won't know to use it when the described trigger conditions fire (user says "complete this", "finish this", expresses frustration about incomplete work, etc.). The table should be updated to include respond.
There was a problem hiding this comment.
Fixed in 82d18f5 — added respond to both the Key Skills table (under Cleanup) and the Skill Delegation table in claude/CLAUDE.md.
claude/skills/respond/SKILL.md
Outdated
| - "placeholder" / "stub" / "skeleton" | ||
|
|
||
| **If you find any of these in your output:** | ||
| 1. Stop before presenting | ||
| 2. Go back and do the work you were about to defer | ||
| 3. Re-scan after completing | ||
|
|
||
| **Exception:** These phrases are fine when used in analysis, discussion, or when | ||
| quoting existing code — the ban applies to your own implementation decisions, not | ||
| to describing what you observe in the codebase. |
There was a problem hiding this comment.
The Self-Check Protocol (line 121) bans the word "stub" from any output, but Rule 6 (line 103) explicitly suggests using "stub" as a legitimate communication pattern when asking the user about scope: "Should I stub the interface and implement it, or do you want to handle auth separately?"
The Exception clause at lines 128–130 covers quoting existing code and analysis of the codebase, but does not cover this third category: asking the user a clarifying question about how to proceed. As written, the self-check would flag the phrase from Rule 6's own example as a violation, creating an internal contradiction.
The exception should be broadened to also cover clarifying questions posed to the user, or the word "stub" should be removed from the banned-word list and replaced with more targeted patterns like "placeholder stub" or "empty stub" that only catch unimplemented placeholders rather than legitimate interface-first design discussions.
There was a problem hiding this comment.
Fixed in 82d18f5 — same fix as the "separately" comment. Broadened the Exception clause to cover clarifying questions posed to the user, which is the third category you identified. The banned-word list stays as-is (catches implementation evasion) but the exception now explicitly permits using these words when asking the user how to proceed.
- Add claude/commands/respond.md for slash-command discoverability - Broaden self-check exception to cover clarifying questions (fixes contradiction where "stub"/"separately" were banned but used in the recommended question template) - Add respond to CLAUDE.md skill delegation table and key skills - Add respond, de-slop, tdd-assertions to README.md skills table Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the evasion-prevention /respond skill (PR #46) with a PR review comment triage skill that confidence-rates each suggestion (0-100), fixes obvious ones (>=75) immediately, and asks about uncertain ones while work is underway. Promote three hookify rules from local-only to committed source: warn-deferred-stop, warn-placeholder-code, warn-ellipsis-code. These are symlinked to ~/.claude/ by dots sync, making them global across all clones and worktrees. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
/respondskill that enforces complete implementation with zero deferrals, shortcuts, or evasionCompanion (local-only, not in PR)
Three hookify rules created locally (gitignored):
warn-deferred-stop— completion gate on stop eventwarn-placeholder-code— catches TODO/FIXME/unimplemented!()in written codewarn-ellipsis-code— catches// ...and "rest is similar" in written codeTest plan
/respondon a multi-step implementation task🤖 Generated with Claude Code