search — Unified Search Hub

SkillSearch

MUST USE for external, current, real-time, or public-web lookups — latest releases/versions, news, prices, docs, status, X/Twitter, and deep research with a cited report. Routes Korean and English lookup verbs to a codex-native search ladder, never an accidental repository grep. Triggers: search, look up, latest, current, news, real-time, X, Twitter, deep research, deep-research, 검색, 검색해, 찾아봐, 찾아줘, 알아봐, 웹검색, 딥리서치, 심층 조사.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the search — Unified Search Hub skill

What this skill tells your AI

The instructions your AI receives, as published by lidge-jun/codexclaw in plugins/codexclaw/skills/search/SKILL.md and read by ahel’s review.

Search discipline for any lookup that leaves the repository. This skill is implicit-visible as metadata (allow_implicit_invocation: true); load the full body on explicit trigger or dev-hub routing, never by an external dispatcher.

Source-Proof Invariant (read first)

Search results are candidate URLs, not evidence. Snippets, summaries, and search-result consensus discover where a fact might live; they never settle it. When recency, factual accuracy, version/compatibility, or source attribution matters, open the original page and confirm it before you treat the answer as sufficient. This invariant precedes every sufficiency rule below — no tier may declare an answer final on snippet text alone.

Divergence Candidate Grounding

Use an existing task's research as read-only context only when needed for a specific uncertainty; relevant research does not justify an unsolicited message. Peer collaboration limits contact to explicit user requests or necessary confirmed blocking CI/merge collision coordination, with host permission and wake checks. This does not activate a Tier-3 swarm; peer reports are leads, not primary-source proof or independent corroboration.

When any PABCD workflow enters divergence mode (HITL manual entry or goal-mode plateau prompt), every N>=2 candidate must carry search provenance in the divergence archive:

  • strong-1: Tier 2 proven by opening the original source. Concrete numbers or claims may be cited only after this proof step.
  • add-1: at least Tier 1 discovered, with candidate URL recorded. Promote to Tier 2 before using detailed claims from it.
  • Record provenance URLs with cxc divergence candidate add ... --source <url>. The archive enforces non-empty source URLs; it does not certify the search tier. The agent must state Tier 1/Tier 2 evidence in the rationale or phase notes.

Do not invent a candidate from memory and then search only for confirmation. Search discovers rival approaches first; the archive records which sources justified each candidate.

The Ladder (exactly three codex-native tiers)

Research-depth classifier (SEARCH-DEPTH-01)

Before climbing the ladder, name the depth — it is distinct from the target classifier in the Korean Intent Guard (which picks web vs docs vs repo):

  • latest/current fact — one entity, a version/date/price/status. Tier 1 discover + Tier 2 open one primary source. Capture the exact date.
  • official-doc fact — API/library behavior. Prefer official docs first, then open for proof.
  • implementation/source fact — how something is built. Open the source/repo, not a summary.
  • comprehensive research — multi-source/contested. This is the only depth that justifies Tier 3 (Deep research); ordinary latest/current lookups never auto-escalate to a subagent swarm.

Tier 1 — Hosted web search (discovery)

Use the built-in hosted web-search tool (the model-facing web_search) to run 1-3 focused, rewritten queries. It returns candidate URLs plus source metadata (title, date, host). This hosted tool is feature-gated, not guaranteed present (a provider may lack the capability, config may disable it, and reviews disable it); when it is unavailable, go straight to Tier 2 on a known URL or state that discovery is blocked. Tier 1 discovers; it does not prove. Never mark an answer sufficient from Tier 1 output alone.

Tier 2 — Source-open proof (SEARCH-BROWSE-01)

Use the shared portable browser routing. For public pages, prefer HTTP proof with a usable source reader. If agbrowse resolves via scripts/agbrowse_helper.py doctor, agbrowse fetch "<url>" --json --browser never is the recommended first attempt, not a prerequisite for all users.

For JS-rendered or inaccessible content, select a suitable available browser. Prefer Aside for existing authenticated or judgment-heavy flows (deep-research Aside lane: references/deep-research.md); use agbrowse for independent parallel extraction; available native browsers are valid alternatives. Local UI QA is not prohibited on agbrowse. Read current CLI/tool docs rather than assuming tool names, flags, schemas, platform support, or account access.

SEARCH-PROOF-01: Read the requested claim in the actual source. Confirm URL, source identity, relevant date (or state it is absent), and whether corroboration exists. An ok envelope, matching title, RSS feed, snippet, or navigation shell is not enough. Use a different reader/rendering path if the actual claim is missing; mark blocked or unverified when no path proves it. Inspect -> act -> re-inspect (SEARCH-BROWSE-VERIFY-01). For blocked/JS/PDF/table pages, see references/blocked-url-reader.md.

Do not use plain agbrowse search "<query>" as the evidence for discovery: feed actual hosted search candidates via its documented input, or open known URLs. Never invent URLs. Optional tool absence does not justify installing drivers without authorization. Fallbacks preserve session, permission, and evidence boundaries from the shared policy.

Tier 3 — Deep research (opt-in)

Read Deep research before any Tier 3 work; it is the canonical owner of the protocol (SEARCH-DEEP-01..06). Enter only on an explicit request — "deep research", "딥리서치", "심층 조사", $deep-research, or the host's Deep research mode. Ordinary latest/current lookups never auto-escalate.

The loop in one paragraph: scope the question and reader, expand it into query families that each carry a goal, run discovery waves with an isolated reflection step that updates a gap matrix, budget source opens by question shape and state the stop rule that fired, keep one claim-to-source ledger, write report-source.md with gapless citations, then deliver the artifact through dev-visualizer or the format-specific owner and verify it. Direct retrieval is the default; two or three explorer subagents only when independent lanes each need several dependent reads, each with this skill attached (SEARCH-ATTACH-01); dispatch mechanics are owned by pabcd/references/delegation.md. For signed-in, JS-rendered or delegated survey browsing the reference defines an Aside lane (SEARCH-DEEP-04) under the portable browser policy. When the host exposes a native deep-research skill, it owns plan tracking and artifact mechanics; this ladder supplies the search discipline underneath it.

Boundaries
  • No new subagent role: this protocol rides base explorer subagents.
  • No server/daemon and no hidden providers; any explorer dispatch is one-shot agent work the main agent requested, and direct retrieval remains the default.
  • This protocol is on-demand Tier 3 work; it is selected deliberately and nothing auto-loads or auto-runs it.

Subagent Skill Attachment (SEARCH-ATTACH-01)

Any search subagent — Tier 3 deep-research explorers, $cxc-lunasearch lanes, or ad-hoc research spawns — should receive THIS skill as a real skill attachment, not a hand-written tool directive in the message. The subagent auto-loads the skill at launch and follows its Tier 1/2 tool guidance (web_search for discovery, then open the source for proof). The skill body is the single source of truth for the tool list; do not duplicate it as prose in the spawn message.

PABCD A-gate audit/reviewer dispatches are in scope too: a plan auditor must verify references and external/current claims, so the audit dispatch packet explicitly names $codexclaw:cxc-search alongside $codexclaw:cxc-dev-code-reviewer (AUDIT-LOOP-01). The spawn wrapper's ROLE_BASE_SKILLS.reviewer resolves the same pair when that builder is used.

The shared payload form is a link-form mention in the spawn message. On V1 the child's first turn parses the mention and injects the full SKILL.md body. When a V2-shaped spawn message reaches the codexclaw hook as plaintext (non-encrypted provider/proxy paths), the hook recognizes the same mention and inlines the full body. Native ChatGPT-backend V2 sends the hook ciphertext, so mention normalization and body inlining are no-ops there; when no body can be inlined, a plaintext [CXC-SKILL-AFFORDANCE] block tells the child to self-load any $cxc-<folder> / $codexclaw:cxc-<folder> mention from <skillsDir>/<folder>/SKILL.md; fork inheritance remains a secondary channel. If the path is not link-safe, use the plugin-native $codexclaw:cxc-search fallback instead:

message: "[$cxc-search](skill://<this skill's SKILL.md absolute path>)
TASK: <lane / query family>"

On the v1 surface the structured items channel is equivalent and slightly stronger (exact selection, no parse step) — use it when routing through the spawn-wrapper builder:

items: [
  { type: "skill", name: "cxc-search", path: "<this skill's SKILL.md absolute path>" },
  { type: "text",  text: "TASK: <lane / query family>" }
]

(v2 deny_unknown_fields rejects items; plaintext V2 paths use the recognized mention plus the hook-inlined body. The always-on spawn-attach hook never adds cxc-search when the dispatcher omits it.)

Do not write a long inline TOOLS block in either path — the skill already says "web_search for discovery, then open the source; snippets lie; the page is the evidence." A subagent that cannot open pages must flag every finding as candidate — unverified snippet in its return.

lunasearch (dependent tool)

$cxc-lunasearch is a dependent discovery lane that rides on this skill's proof ladder. It fans out cheap gpt-5.6-luna subagents for wide discovery, then hands every candidate back here for Tier 2 source-proof. lunasearch discovers; cxc-search proves. lunasearch names THIS skill (cxc-search) in each spawn message; V1 parses the mention, while plaintext V2 paths use hook inlining as qualified above. Manual V1 callers may instead use items. See the $cxc-lunasearch skill for its hardcoded spawn path and swarm shape.

Removed cli-jaw tiers (non-goals — do not re-add)

codexclaw has no server runtime, so the cli-jaw 4-tier ladder does not carry over. Do not reintroduce any of these removed backends as available: a progrok tier, a hosted web-AI wait (Grok Expert / GPT Pro), or an Exa / Tavily / Perplexity / Brave provider promise. There is no codex-native equivalent and J-10 removed them deliberately.

Korean Intent Guard (8 rules)

When the user says 검색 / 검색해 / 찾아봐 / 찾아줘 / 알아봐 / 웹검색 (or English search / look up / latest / current / news) without naming local files or code:

  1. Classify the target first: external/public/current info -> the ladder above; programming library/framework/API docs -> official docs or the active documentation retrieval path, then source-open proof; this repository's code/logs/config -> file search (rg, rg --files, local code tools). "Figure out how this specific system/app/AI tool/API works" (로직 파악, 뜯어봐) is not a web lookup by default — route to dev-debugging references/logic-analysis.md (the observation loop) and use this ladder only for its external-evidence steps (docs, CVEs, prior writeups).
  2. Do not send the full natural-language sentence as the only query. Rewrite it into 1-3 focused keyword queries (see references/query-rewrite.md).
  3. Preserve anchors in the rewrite: entities, source hints (official, Naver, GitHub), dates, locale, and content type.
  4. Treat results as candidate URLs, not final evidence — fetch/open the original page when factual accuracy, recency, or attribution matters.
  5. Repository targets use file search, never web search. Do not misroute a code/log/config lookup to the web.
  6. Docs queries prefer official documentation (or the active docs retrieval path) before general web search, then open the source for proof.
  7. Bare ambiguous "검색" (no local-file and no clear web target) -> ask ONE short clarification before launching either a repo-wide grep or a web search.
  8. No hidden fallback between web, docs, and file search. State the classification you chose; never silently chain web -> docs -> grep.

When to stop

Stop escalating when any holds: a sufficient primary source is found and confirmed; all candidate URLs are dead or unreachable; or the task needs a user clarification. Do not keep climbing tiers past a confirmed answer, and do not spend Tier 3 subagents on a question Tier 1+2 already settled.

Notes

  • This skill is implicit-visible as metadata (allow_implicit_invocation: true, part of the implicit set with dev — canonical list: dev SKILL.md Visibility decision); the body is reached by trigger words or by dev-hub routing.
  • Query rewrite runs prompt-side. Optional agbrowse, Aside, native browsers, and HTTP readers follow the shared portable policy; no fixed tool-name ladder is guaranteed on every distribution or host.
  • The blocked-URL reader and ultraresearch decomposition are absorbed as Tier 2 helper tactics and Tier 3 method, not as new tiers or vendored browsers.
  • A host-exposed deep-research skill (for example deep-research-work) owns plan tracking and artifact mechanics; references/deep-research.md supplies the search discipline underneath it and aligns its steps with that skill.
  • $cxc-lunasearch is a dependent tool, not a tier. It hardcodes the Luna model and skips catalog probing; its error fallback is serial dispatch (re-spawn without the model field), not a probe round-trip.

Signals

GitHub stars
37
Forks
7
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages (in scripts/agbrowse_helper.py)

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
cxc-search
Source
github.com/lidge-jun/codexclaw