Answers questions about and routes tasks for the hushh-research codebase. Use whenever the user asks about or wants to change anything this repo owns, including consent-protocol, Operons, HCT, Kai, MCP, IAM, PKM, vault, backend, frontend, mobile, security, docs, comms, ops, skill authoring, and any new specialist added under .codex/ later. Reads .codex/skills/, .codex/workflows/, and .codex/agents/ at invocation time, composes a briefing the way codex route-task does (workflow plus owner_skill plus default_spoke unioned), surfaces .codex/agents/* as advisory delegation lanes, and auto-discovers anything added to the tree without a bridge edit.
Recursos
2Instal·la
npx skillscat add hushh-labs/hushh-research/codex-bridge Instal·la des del registre de SkillsCat.
Codex Bridge
Reads .codex/ at invocation time and composes a briefing the way ./bin/hushh codex route-task does: workflow → owner_skill + default_spoke → union of required_reads, required_commands, handoff_chain, verification_bundle, risk_tags.
Response rules
The repository routing contracts are the source of truth. The enforceable rules live in .codex/skills/comms-community/references/reply-rules.md and are injected into the routed briefing when the turn is a community reply — the route lands on comms-community / community-response, or the prompt names the channel outright (see scripts/route.py). They are deliberately not injected into engineering questions: they are a 180-line Discord tone contract, and a question mark in a bug report is not a request for Discord voice. Follow that file literally when it does load. If it conflicts with anything written here, it wins.
Host invocation guidance:
- When you cannot reach
.codex/to fetch the routing contracts, report that routing is unavailable and inherit the communication rules in rootAGENTS.md. Do not substitute a channel-specific style or fabricate a routed lane. - Pull the signature values (
<skill-id>,<workflow-id>) from the routed briefing header (# Routed workflow: .../# Routed skill: ...). - If the briefing header shows a disambiguation table or a catalog, do not fabricate a signature, invoke the bridge again with the chosen name first.
Anything stylistic beyond this belongs in reply-rules.md, not here. Edit the codex file and the bridge will pick it up on the next invocation.
Routed briefing
!python3 ${CLAUDE_SKILL_DIR}/scripts/route.py $ARGUMENTS
How to execute what's above
A single skill or workflow briefing
Treat it as the instruction set:
- Scope check. Honor the skill's "Do Use" / "Do Not Use",
primary_scope,owned_paths. If the task falls outside, invoke/codex-bridge <handoff-target>instead of improvising. - Read first. Open every
.mdunder "Read First (composed)" before touching code. The composed list already includes the workflow's, the owner's, and the spoke's required_reads. - Follow the Workflow / Playbook section verbatim. That's what codex has already decided works.
- Run the composed Required Checks before declaring done. The
Bash(python3 *)grant covers Python-based checks; other bash tools will prompt once. - Hand off on drift. If work expands, stop and
/codex-bridge <next>— usually the next entry inhandoff_chain.
A compact pointer (Routed lane (compact))
The match was plausible but not confident, so the bridge sent the pointer instead
of the full playbook: lane name, owner/spoke, read-first paths, required checks,
and the runner-up candidates. Treat it as a suggestion. If it is the right lane,
run /codex-bridge <name> to load the full briefing; if it is not, ignore it and
proceed with the user's request as stated.
An ambiguity / disambiguation table
Multiple skills scored close. Prefer the spoke over the owner when both match; prefer a workflow over a bare skill when a workflow is listed (workflows compose across owner + spoke).
A catalog
No strong match. Pick by description, re-invoke /codex-bridge <name>.
An agent briefing
The matched entry is a repo-scoped custom agent (under .codex/agents/), not a skill or workflow. Treat it as a delegation lane, not instructions to execute directly:
- Decide whether the current turn actually benefits from delegation. Most single-lane requests do not.
- If delegation fits, confirm with the user before invoking the corresponding
/agent <name>. Subagent use is explicit only per .codex/skills/agent-orchestration-governance/references/delegation-contract.md. - When the briefing appears as a
Suggested delegation lanesfooter on a skill or workflow briefing, treat it as context only. Execute the primary briefing normally.
A --check report
Surface findings to the user. Don't auto-fix — --check is a health report, not a migration.
Invocation patterns
/codex-bridge # catalog of owners, spokes, workflows, agents
/codex-bridge backend-api-contracts # compose skill briefing
/codex-bridge security-consent-audit # compose workflow briefing (owner+spoke unioned)
/codex-bridge governor # compose agent briefing (delegation lane)
/codex-bridge "how does Kai maintain session continuity" # free-text → token scoring
/codex-bridge --check # structural lint of .codex treeDesign
- Source of truth:
.codex/skills/*,.codex/workflows/*, and.codex/agents/*. Edit there; the bridge re-reads every invocation. - Composition mirrors codex. Routing emits the same union of fields that
repo_scan.py::build_route_taskproduces, so Claude makes the same scope decisions codex would. - Agents are advisory lanes, not winners. Exact agent name routes to an agent briefing. Free-text never elevates an agent above a matching skill or workflow. On explicit skill or workflow invocations, matching agents appear as a compact
Suggested delegation lanesfooter (suppressed on Q&A turns and on close-scoring ties). - Progressive disclosure. Only the routed briefing enters context, not the full corpus. The
--hookpath adds a second axis: silence below the gate, a compact pointer at medium confidence or when a rival lane scores within 2 points, and the full composed briefing only when the match is both strong and unambiguous. - Rarity-weighted matching. Token overlap is weighted by how rare the token is in the corpus, so shared words (
audit,review,contract) stop deciding the route and a path the user actually typed outranks any amount of prose overlap. Fixtures in fixtures/routing_cases.json pin the expected lane for representative prompts and cap total injected size;scripts/test_route_hook.pyenforces both in CI. - Path-aware auto-trigger.
paths: .codex/**, consent-protocol/**, hushh-webapp/**, docs/**covers the repo surfaces where a specialist applies.