This skill should be used when agents generate placeholder tokens like "pseudo-", "mock-", "temporary", "TODO", "demo-", or similar incompleteness markers. Detects substitution patterns in agent OUTPUT and triggers mandatory user interview instead of accepting incomplete work. Activates automatically on any output containing forbidden tokens.
/plugin marketplace add plurigrid/asi/plugin install asi-skills@asi-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/interview-templates.mdreferences/patterns.mdscripts/detect.pyscripts/hook.jsonscripts/validate.shZero tolerance for placeholder tokens in agent output. Incompleteness triggers user interview.
Detect and reject incomplete work tokens generated in agent output. When uncertainty exists, ask the user rather than substitute with placeholders.
This skill validates what agents produce, not existing code:
NOT for scanning existing codebases (use linters for that).
| Pattern | Examples |
|---|---|
pseudo-* | pseudo-code, pseudo-implementation |
mock-* | mock-data, mock-service |
fake-* | fake-response, fake-auth |
stub-* | stub-function, stub-api |
dummy-* | dummy-value, dummy-handler |
| Token | Context |
|---|---|
temporary | "temporary solution" |
placeholder | "placeholder for now" |
TODO | inline TODOs as output |
FIXME | deferred fixes |
TBD/TBA | undetermined items |
WIP | work-in-progress as deliverable |
| Pattern | Context |
|---|---|
later | "we'll add this later" |
eventually | "eventually this will..." |
for now | "for now just use..." |
skeleton | incomplete implementation |
| Pattern | Examples |
|---|---|
example_* | example_config, example_key |
demo_* | demo_mode, demo_data |
foo/bar/baz | metasyntactic placeholders |
xxx/yyy | marker placeholders |
Substitution detected that indicates incomplete work:
- Token: "[detected token]"
- Context: [what was being attempted]
This requires input:
1. What is the ACTUAL implementation needed?
2. What specific details are missing?
3. Should research be conducted before proceeding?
Operates as MINUS (-1) validator in any triad:
accept-no-substitutes(-1) + generator(+1) + coordinator(0) = 0
When generator produces substitution tokens:
def authenticate(user):
# TODO: implement actual auth
return True # temporary bypass
def authenticate(user: User) -> AuthResult:
credentials = vault.get_credentials(user.id)
return verify_signature(user.token, credentials.public_key)
Here's a pseudo-implementation you can adapt...
Clarification needed before implementing:
- Which authentication provider is used?
- What is the expected token format?
Placeholder tokens are technical debt laundering:
The correct response to uncertainty is asking, not substituting.
scripts/detect.py --stdin < output.txt
# Invoke tree-sitter for structural detection
tree-sitter query '(comment) @comment' | grep -iE 'TODO|FIXME|placeholder'
# High compression ratio = likely template/placeholder
from zlib import compress
ratio = len(compress(output.encode())) / len(output)
if ratio < 0.3: # Suspiciously compressible
flag_as_boilerplate()
# On detection, emit MINUS signal
emit_trit(-1, reason="substitution_detected", token=matched)
Add to .claude/settings.json:
{
"hooks": {
"PostToolUse": [{
"matcher": {"toolName": "Write|Edit"},
"command": "~/.claude/skills/accept-no-substitutes/scripts/validate.sh"
}]
}
}
Call via babashka for fast validation:
(require '[babashka.process :refer [shell]])
(defn validate-output [text]
(let [{:keys [exit]} (shell {:in text} "scripts/detect.py" "-")]
(zero? exit)))