skills/golem-powers/claude-desktop-research/SKILL.md
Write self-contained deep-research prompts for Claude Desktop or Claude Web. Use for Drive-grounded deep research, MCP-aware Desktop prompts, Claude research prompt batches, and Claude-vs-Gemini comparisons. NOT for quick local web lookups; use web/exa directly. For NotebookLM/Gemini research, use gemini-research.
npx skillsauth add etanhey/golems claude-desktop-researchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Write deep-research prompts for Claude Desktop (macOS .app) — also covers Claude Web (claude.ai projects) as a subset. Both surfaces support Drive grounding and Deep Research mode. Only Claude Desktop has local MCP connections — that's the differentiator.
Both Claude Web and Claude Desktop now expose:
But only Claude Desktop has local MCP connections wired through ~/Library/Application Support/Claude/claude_desktop_config.json. That means Desktop can call BrainLayer / voicelayer / cmux / exa / supabase / google-drive / notebooklm-mcp / WhatsApp tools mid-research — Web cannot. Hence: desktop is the umbrella; web is the MCP-less subset.
If Gemini Desktop ever ships an MCP connections file, that gap closes — for now (2026-04-30) only Claude Desktop has it.
Pre-flight: Apply the CHECK-FIRST + GROUND + emit-only-if-pass gate before writing any paste-ready deep-research prompt.
| Need | Use |
|------|-----|
| Quick web lookup, 1–2 sources | Web/exa tools directly |
| Deep comparison, 5+ sources, academic papers, NO MCP needed | This skill (web mode) |
| Deep research that must call BrainLayer / voicelayer / supabase / etc. mid-stream | This skill (desktop mode) |
| Broad landscape analysis ("what's out there") | This skill |
| API validation against official docs | This skill |
| Side-by-side with Gemini for paired Drive-grounded research | Run this skill plus /gemini-research, then compare outputs |
| Visual/frame-heavy analysis | /gemini-research (CLI) — Gemini is faster on batch images |
Before writing a prompt that assumes desktop-mode MCP access, verify the connection list. Claude Desktop wires MCP servers via TWO paths — both must be checked.
claude_desktop_config.jsonpython3 -c "
import json
with open('/Users/etanheyman/Library/Application Support/Claude/claude_desktop_config.json') as f:
d = json.load(f)
servers = d.get('mcpServers', {})
print('Legacy MCPs (claude_desktop_config.json):')
for name in sorted(servers.keys()):
print(f' - {name}')
print(f'Total legacy: {len(servers)}')
"
.mcpb)EXT_DIR="$HOME/Library/Application Support/Claude/Claude Extensions Settings"
echo "Installed .mcpb extensions:"
ls "$EXT_DIR"/*.json 2>/dev/null | xargs -n1 basename | sed 's/\.json$//' | sed 's/^/ - /'
[ -f "$EXT_DIR/extensions-installations.json" ] && python3 -c "
import json, sys
with open('$EXT_DIR/extensions-installations.json') as f:
d = json.load(f)
print('extensions-installations.json:')
print(json.dumps(d, indent=2)[:1500])
"
The Extensions path is where modern MCPs live (e.g., local.mcpb.etan-heyman.brainlayer v1.0.0, installed 2026-03-28 — provides brain_search, brain_store, etc., but NOT visible in claude_desktop_config.json).
If a prompt instructs Claude Desktop to call a tool, the tool must appear in EITHER the legacy config OR the Extensions list. Always run BOTH commands above before writing a desktop-mode prompt — checking only one path can produce a false-negative ("MCP not wired" when it actually is, just under the other path).
.mcpb is the canonical wiring strategy going forwardThe legacy claude_desktop_config.json is being phased out — entries currently in it (e.g., exa, whatsapp, whatsapp-business, voicelayer) will migrate to .mcpb extensions in a separate consolidation sprint. Until that sprint lands, BOTH paths must be checked. This skill should be revisited once the migration is complete to drop the legacy enumeration step.
If the relevant MCP is missing from BOTH paths, the prompt will hit a silent miss. Either (a) tell the user to install the missing .mcpb (preferred) or add to claude_desktop_config.json (legacy), then restart Claude Desktop; or (b) flag the gap and rewrite the prompt to web-mode (no MCP).
Brain Drive/Research/<project>/
description.md
instructions.md
context/
00-code-map.md
01-*.txt
40-*.txt
prompts/
R{NN}-{topic}.md
results/
R{NN}-claude-desktop-result.md # was: R{NN}-claude-web-result.md (legacy alias retained)
~/Gits/orchestrator/docs.local/claude-desktop/projects/<project>/
description.md
instructions.md
research-context/
prompts/
results/
batch-brainlayer → BrainLayer (memory layer, enrichment, search quality)batch-cmux → cmux (terminal multiplexer, agent orchestration)batch-orchestrator → Orchestrator (cross-repo coordination, agent design)START / EDIT verdict. Do not fire the research run just
because the plan looks plausible./research-lifecycle): At
dispatch time record harvest_owner, harvest_trigger, and export_route
(e.g. ~/Gits/orchestrator/docs.local/research/R{NN}-result.md → brain_store).
Applies to batch and one-off dispatches. Research without a harvest path =
parked, not done. Export route must name how results return to the fleet.bash skills/golem-powers/_shared/research/verify-account.sh --expect [email protected]
Then run the MCP pre-flight (above). If desktop-mode MCP is required and the relevant server is NOT wired, STOP and tell the user — do not write a prompt that will silently miss its tool.
python3 skills/golem-powers/_shared/research/drive-paths.py ensure-project-folders <project>
python3 skills/golem-powers/_shared/research/drive-paths.py list-prompts <project>
R{NN+1}.File: R{NN}-{topic-slug}.md
Template:
# R{NN}: {Title — What You're Researching}
## Mode
[desktop / web] ← desktop if MCP needed, web if not
## Context
{2–3 paragraphs explaining WHY this research is needed.}
## Our Architecture
{Include INLINE — Claude Desktop in WEB MODE has zero codebase access; in DESKTOP MODE it can call MCP but still benefits from inline architecture for non-MCP-wired details. Include:
- Code snippets of relevant implementations
- Data shapes (SQL schemas, JSON structures)
- Exact numbers (chunk counts, tag counts, performance metrics)
- Tool/library versions}
## Available MCP tools (DESKTOP MODE ONLY — verify before relying)
{Skip this section for web-mode prompts. For desktop-mode, list the MCPs the prompt assumes:
- `mcp__brainlayer__brain_search` — semantic + keyword recall
- `mcp__voicelayer__*` — TTS / STT / pill-state
- `mcp__exa__web_search_exa` — web search
- ...}
## Research Questions
### 1. [Topic Area]
- Specific question 1
- Specific question 2
### 2. [Topic Area]
- ...
## Deliverable
Structured report with:
1. {Section 1 title} — {what it should contain}
2. ...
CRITICAL RULES for the prompt:
mcp__brainlayer__brain_search) and what to do with the result. Don't say "use BrainLayer" — say "call brain_search('<query>') and report top 5 chunks."If the project's context has changed since the last prompt:
skills/golem-powers/_shared/research/context-numbering.md.R{NN}-{topic}.md to Brain Drive/Research/<project>/prompts/description.md, instructions.md, and context/ current in Brain Drive/Research/<project>/context/~/Gits/orchestrator/docs.local/claude-desktop/projects/<project>/ for local reviewResearch prompt ready: R{NN}-{topic}.md
Mode: [desktop / web] ← desktop if MCP needed, web if not
Primary: Brain Drive/Research/<project>/prompts/
Local cache: docs.local/claude-desktop/projects/<project>/ (optional)
Open Claude Desktop, attach the Drive folder, paste the prompt.
[If desktop-mode] Confirm these MCPs are wired before submitting: <list>.
When Claude returns its research PLAN, send that PLAN back here for START/EDIT
before clicking Start Research.
When the user downloads compass_artifact or copies the result:
Brain Drive/Research/<project>/results/R{NN}-claude-desktop-result.md~/Gits/orchestrator/docs.local/claude-desktop/projects/<project>/results/brain_digest the raw content (extracts entities/relations)brain_store conclusions with tags ["research", "conclusions", "{project}", "{topic}"]python3 skills/golem-powers/_shared/research/drive-paths.py ensure-project-folders newproject
# Then upload description.md, instructions.md, context files, and the first prompt.
bash skills/golem-powers/claude-desktop-research/scripts/migrate-obsidian-to-drive.sh batch-cmux --dry-run
bash skills/golem-powers/claude-desktop-research/scripts/migrate-obsidian-to-drive.sh batch-cmux
Procedure: skills/golem-powers/claude-desktop-research/workflows/migrate.md
Before telling the user the prompt is ready:
claude_desktop_config.jsonprompts/context/User correction: BOTH Claude Web AND Claude Desktop have deep research + Drive grounding. The differentiator is MCP — only Desktop has local connections. The skill formerly known as /claude-web-research is now /claude-desktop-research (desktop is the umbrella; web is the MCP-less subset).
The legacy /claude-web-research slash trigger retired on 2026-05-30. Use /claude-desktop-research for Claude Desktop/Web research prompts.
tools
The human-eval UX contract for Phoenix views: turn-by-turn scrollable replay (not a scorecard), hide-but-copyable IDs, collapsed thinking, identity chips, tool filters, tiny frozen starter datasets, mark-wrong-in-thread, mobile-first. Use when: building or reviewing ANY Phoenix/eval view, annotation UI, session replay, or human-grading surface. Triggers: phoenix view, eval UI, annotation view, session replay, human eval UX, grading interface. NOT for: Phoenix data pipelines/ingest (capture scripts have their own specs).
tools
macOS systems specialist — AppKit NSPanel architecture, launchd services, socket activation, MCP bridge resilience, syspolicyd, and high-frequency SwiftUI dashboards. Use when building menu-bar apps, LaunchAgents, debugging syspolicyd/Gatekeeper/TCC, resilient UDS/MCP bridges, or SwiftUI dashboards at 10Hz+.
development
Bulk LLM-judging protocol for fleet-dispatched verdict runs (KG cluster, eval harness). Use when: dispatching or running judge workers (J1/J2/RT), planning bulk-apply from verdict JSONL, or triaging evidence_degraded outputs. Triggers: judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for: single-item code review, Phoenix view UX (use phoenix-human-view), or non-judge eval pipelines.
development
Quiet-down protocol for sprint close: when the fleet wraps, delete ALL polling crons and monitors, send ONE final dashboard + ONE message, then go SILENT. Use when: fleet wraps, all workers done, overnight queue exhausted, sprint close, Etan asleep/away with nothing approved left. Triggers: fleet wrap, wrap the fleet, stand down, going quiet, sprint close. NOT for: mid-sprint monitoring (keep your loops), spawning a successor (use /session-handoff first).