ask-claude v2.6.1, ask-hermes v4.2.0, ask-dev v1.1.0, create-plan v1.1.0
- ask-claude v2.4.0 -> v2.6.1: Added mandatory disagreement scan (Step 3.5) with web-reference demand + internal consistency check. Updated callouts for the paste-vs-path rule (now HARD RULE, not just example). - ask-hermes v4.1.1 -> v4.2.0: Added mandatory disagreement scan mirroring ask-claude. - ask-dev v1.0.0 -> v1.1.0: Added mandatory disagreement scan mirroring ask-claude. - create-plan v1.1.0 (new): Multi-agent plan-build dispatcher. Trigger phrases, 10-Q brief script (min as needed, max 10), curator dispatch, capture/handoff format, all 6 failure modes. Companion references: curator-framing-prompt.md, deep-research-dispatch-template.md, ask-claude-validation-template.md, structured-brief-10q.md. 5 rounds of Claude validation on the design plan; final SHIP from ask-hermes peer review.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: ask-claude
|
||||
description: "Consult Claude Opus 4.8 on 10.0.0.28 via SSH print mode with session resumption. Multi-turn back-and-forth without tmux or polling."
|
||||
version: 2.4.0
|
||||
version: 2.6.1
|
||||
author: Hermes Agent
|
||||
license: MIT
|
||||
platforms: [linux]
|
||||
@@ -60,6 +60,7 @@ Is there an active Claude session_id from a previous turn in THIS Hermes session
|
||||
- Research that benefits from SearXNG + Opus reasoning
|
||||
- Multi-turn discussion where Claude may ask clarifying questions
|
||||
- **Adversarial consulting** — ask for advice, then ask Claude to push back on its own advice with web searches. See `references/adversarial-consulting.md` for the pattern.
|
||||
- **Plan validation** — adversarial review of an implementation / integration / skill plan. See `references/plan-validation-prompt.md` for the proven prompt template (workshopped Jul 6 2026).
|
||||
|
||||
## Critical Evaluation — You Are the Final Authority
|
||||
|
||||
@@ -77,6 +78,8 @@ Is there an active Claude session_id from a previous turn in THIS Hermes session
|
||||
|
||||
5. **Watch for overcomplication.** Claude's default mode is thoroughness, which can become overengineering. If Claude proposes a multi-step protocol with atomic renames, CAS semantics, and lease expiration — ask: "Is there a simpler way? Can we solve this with a 50-line Python script instead?" The best fix is usually the simplest one that actually works.
|
||||
|
||||
6. **Pre-empt overcomplication in the prompt.** When asking Claude to validate a plan or design, add a constraint like: "CRITICAL CONSTRAINT: Do NOT propose new features, new architecture, or new complexity. Your job is to find FLAWS in what's already proposed — not to add more. If you find a problem, say what's wrong and suggest the SIMPLEST fix." Without this, Claude will propose additional layers, new abstractions, and feature creep — exactly what you're trying to avoid in a validation pass.
|
||||
|
||||
## Claude's Limitations
|
||||
|
||||
**Claude cannot read your local files.** Claude runs on 10.0.0.28 and has no access to `/home/n8n/workspace` or any other path on your machine. When Claude says "I can't read that file" or "that path doesn't exist here" — **believe it.** Do not ask Claude to validate a file by path. Instead:
|
||||
@@ -255,6 +258,48 @@ ssh n8n@10.0.0.28 '~/claude/hermes_support/ask.sh --resume SESSION_ID --qfile /t
|
||||
|
||||
Show Claude's response. If Claude asked a clarifying question (visible in the result text), get the user's answer.
|
||||
|
||||
### Step 3.5: Disagreement Scan (MANDATORY before applying)
|
||||
|
||||
**Do NOT silently accept Claude's recommendations. Do NOT silently drop suggestions you disagree with. Both are failure modes.**
|
||||
|
||||
For every Claude response, before applying or moving on, do this scan:
|
||||
|
||||
**1. Disagreement check.** Walk through Claude's findings (release-blockers, medium, low, suggestions). For each:
|
||||
- **Agree + will apply** → no action this step
|
||||
- **Agree + will skip** → state explicitly WHY you're skipping (overkill, environment constraint, contradicts operator's standing rule, etc.). Do not just drop it.
|
||||
- **Disagree** → push back. Either (a) decide it's not worth the round-trip cost and state your reason, or (b) send a follow-up turn challenging Claude's claim. **If you don't push back on at least one item per multi-finding response, you're accepting Claude's framing wholesale — which defeats the purpose of asking.**
|
||||
|
||||
**2. Web-reference check for weak conclusions.** For any Claude claim that is:
|
||||
- a tool version, API behavior, library status, or compatibility statement
|
||||
- an architecture pattern recommendation
|
||||
- a "best practice" assertion
|
||||
- any concrete factual claim that the plan or system will depend on
|
||||
|
||||
…and where Claude did NOT cite a source URL inline, ask Claude for the reference. Pattern: "What's the source for X? I want a URL I can verify before relying on it." Claude has web search; let it use it. If Claude can't produce a URL, the claim is weak and you should treat it as unverified before applying.
|
||||
|
||||
This is the "Web Search Mandate" — Claude should not be the sole source of any concrete factual claim that the build will depend on. If Claude says "X is the latest version" without a URL, push back and demand the source.
|
||||
|
||||
**3. Internal consistency check.** Does Claude's response contradict itself, or contradict your prior turn in this Claude session? If yes, point it out in the next follow-up. Don't apply a contradictory recommendation.
|
||||
|
||||
**Output format for the scan (use this when relaying Claude's response to the operator):**
|
||||
```
|
||||
[Claude's findings as-is]
|
||||
|
||||
## My disagreement scan
|
||||
- **Agreed and applied:** [list]
|
||||
- **Agreed but skipped:** [item] — [reason]
|
||||
- **Disagreed and pushed back:** [item] — [what I said]
|
||||
- **Web references requested:** [items where I asked for a URL]
|
||||
- **Disagreed silently dropped:** (should be empty — if not, justify)
|
||||
```
|
||||
|
||||
If `Disagreed silently dropped` is non-empty, that's a bug. Surface it.
|
||||
|
||||
**See also:** `references/peer-response-protocol.md` for the full
|
||||
disagreement-scan protocol, web-reference mandate, cross-document desync
|
||||
mitigation, and pre-build verification gate. These patterns generalize
|
||||
beyond ask-claude to any peer dispatch and any multi-section doc edit.
|
||||
|
||||
### Step 4: Send Follow-ups (WITH --resume)
|
||||
|
||||
Same mktemp pattern, but add `--resume <session_id>` to continue the conversation. Always capture session_id from every response (including errors) — a turn can error yet still advance the session.
|
||||
@@ -326,6 +371,7 @@ Sonnet is 3-5x faster and cheaper. Use for: factual lookups, simple analysis, qu
|
||||
|
||||
## Pitfalls
|
||||
|
||||
- **CRITICAL: Pasted inline beats file paths every time.** Claude runs on 10.0.0.28 and has no access to `/home/n8n/workspace/`, `~/workspace/`, or any other local path. "Read the plan at /home/n8n/workspace/.../_plan.md" wastes a turn: Claude searches the wrong filesystem, returns "file not found," and you paid $0.20-$0.35 for nothing. **Always paste the artifact inline** between clear markers like `==== PLAN BEGINS ==== ... ==== PLAN ENDS ====`. The "Claude's Limitations" section above already says this — but the failure mode is costly enough to deserve its own pitfall. File paths in questions should be reserved for files Claude can actually see on its own host (`~/claude/hermes_support/...`).
|
||||
- **ask.sh can fail silently while direct `claude -p` works.** The wrapper may return `{"is_error": true, "error": "no Claude output (timeout or CLI failure)"}` even when Claude is healthy. When this happens, fall back to the direct invocation: `ssh n8n@10.0.0.28 'cd ~/claude/hermes_support && timeout 280 /home/n8n/.local/bin/claude -p "$(cat /tmp/ask-claude-q.txt)" --output-format json --model claude-opus-4-8 --max-turns 30 || true'`. The wrapper is preferred (it handles usage API + merge.py), but the direct path is the reliable fallback. If the direct path also fails, Claude is genuinely down.
|
||||
- **CRITICAL: Never inline questions in SSH commands.** Shell metacharacters (`"`, `$`, `(`, backticks) will break. Always write to a temp file via `mktemp` first, then `claude -p "$(cat $QFILE)"`.
|
||||
- **Always use `--output-format json`** — without it, you get plain text and can't extract session_id for follow-ups.
|
||||
|
||||
Reference in New Issue
Block a user