search — Unified Search Hub
SkillSearchMUST 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.
No other account needed.
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-diagram-viewer 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
explorersubagents. - 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:
- 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). - 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). - Preserve anchors in the rewrite: entities, source hints (official, Naver, GitHub), dates, locale, and content type.
- Treat results as candidate URLs, not final evidence — fetch/open the original page when factual accuracy, recency, or attribution matters.
- Repository targets use file search, never web search. Do not misroute a code/log/config lookup to the web.
- Docs queries prefer official documentation (or the active docs retrieval path) before general web search, then open the source for proof.
- 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.
- 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 withdev— canonical list:devSKILL.md Visibility decision); the body is reached by trigger words or bydev-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.mdsupplies the search discipline underneath it and aligns its steps with that skill. $cxc-lunasearchis 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
Advanced
- Catalog kind
- skill
- Gateway key
cxc-search- Source
- github.com/lidge-jun/codexclaw