plugins/qdev/skills/research-grounding/SKILL.md
Use when you're stuck or missing current information mid-task - the same command/API/approach failed twice, an error looks like a changed or deprecated API, or you need the current version of something, a fact from after your training cutoff, or to verify something you cannot confirm from the code in context. Starts with a cheap inline lookup and only escalates to a full research sweep if that fails. Do not use for routine pre-emptive checks before ordinary library work - for deliberate research, use /qdev:research.
npx skillsauth add l3digitalnet/claude-code-plugins qdev-groundingInstall 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.
Cheap inline grounding that escalates to a full qdev-researcher sweep only when
needed. This skill is the egress choke point: every outbound payload is
sanitized before it leaves the machine. Detailed category signals, provider
egress verdicts, and the trigger matrix live in
references/detection-and-egress.md. Read
that file only when you need the detail.
${CLAUDE_PLUGIN_ROOT} is the only path variable the runtime guarantees; set
SCRIPTS="${CLAUDE_PLUGIN_ROOT}/scripts" in each Bash block that needs it. It is
not auto-exported across separate tool calls.
/qdev:research." Never auto-fire on B.Apply this gate to every outbound payload before any MCP/Context7 call or
Agent dispatch. The raw payload goes through a mode-600 temp file and stdin,
never argv; trap ... EXIT removes the temp file on success and failure.
SCRIPTS="${CLAUDE_PLUGIN_ROOT}/scripts"
tmpfile="$(mktemp)"; chmod 600 "$tmpfile"
trap 'rm -f "$tmpfile"' EXIT
printf '%s' "$payload" > "$tmpfile"
uv run "$SCRIPTS/sanitize_query.py" < "$tmpfile"
Then read the JSON:
requires_human_approval: true: use AskUserQuestion showing safe_query
and dropped_fields labels. Approve -> send safe_query. Reject -> abort:
on the light path proceed ungrounded with a one-line notice; on the medium
path do not dispatch.requires_human_approval: false: send safe_query. Prefer the lowest-risk
provider among those true in provider_allowed (risk order is in the
reference).uv unavailable: fail closed. Make no
external call. Light path: proceed ungrounded. Medium path: do not dispatch.Inline only: no subagent, no report.
mcp__plugin_context7_context7__resolve-library-id, score candidates, never
take the first blindly (exact name, official-vs-community, reputation,
snippet count, version match, task fit), then fetch with query-docs and
fall back to get-library-docs. Bypass to web for latest release, changelog,
CVE, issue/PR, maintainer, roadmap, pricing, incident, or ambiguous-library
lookups.mcp__brave-search__brave_web_search primary and
mcp__serper-search__google_search as the second recall source (gl: us, hl: en; site:/filetype: operators when useful). Use
mcp__tavily-mcp__tavily_extract only to read one specific page in full.max_results 3-5, snippets over raw pages, no raw-content crawl.
A lookup projected to exceed about 8k tokens or need more than one extraction
is an escalation signal.Escalated, or Category-A direct. Use these gates in order.
qdev-researcher persists
the report before it returns, so confirm first with AskUserQuestion: "run a
full research sweep and persist a report to docs/research/ on <topic>?"
Approve -> continue. Reject -> do not dispatch, nothing is written. A
deliberate /qdev:research skips this gate.Agent tool with subagent_type: qdev:qdev-researcher
(qualified name; PLUGIN-001). State depth=quick in the prompt text; it is
not an Agent-tool parameter. Pass the sanitized handoff and
SCRIPTS=${CLAUDE_PLUGIN_ROOT}/scripts literally so the spawned agent's Bash
has a concrete path. It runs D1's full reporting cycle unchanged.Auto-research: <topic> (escalated after 2 light rounds). Return a compact
result and hand control back.Agent on a payload that has not passed
the gate. Never send secrets, tokens, credentials, proprietary code, customer
data, internal hostnames, or paths.tools
Configures Python projects to the Python Tooling SSOT Standard (uv, Ruff, BasedPyright strict, pytest+coverage, pip-audit). Use when creating projects, writing standalone scripts, configuring pyproject.toml, migrating from pip/Poetry/mypy/black/flake8, or auditing a project for conformance to the standard.
documentation
Update the llm-wiki knowledge base (remote LXC CT 103, /srv/workspaces/llm-wiki, over SSH) with implementation-level details from the current session by dispatching the up-docs-propagate-wiki sub-agent. This skill should be used when the user runs /up-docs:wiki.
documentation
Update repository documentation (README.md, docs/, CLAUDE.md) based on session changes by dispatching the up-docs-propagate-repo sub-agent. This skill should be used when the user runs /up-docs:repo.
documentation
Update Notion pages with strategic and organizational context from the current session by dispatching the up-docs-propagate-notion sub-agent. This skill should be used when the user runs /up-docs:notion.