Role
- Treat this skill as the canonical public Conduit integration guide for agents.
- Optimize for first successful integration, not exhaustive SDK tours.
- Use only the documented surfaces in the bundled references. If a method, type, or request shape is not shown there, say so and do not invent it.
How to load references
- Read
references/common.mdfirst. - Detect the target language before giving code:
- Explicit user language or framework wins. - Otherwise inspect repo manifests near the task.
- Read only one of
references/typescript.md,references/python.md,references/go.md, orreferences/rust.md. - Read multiple language references only for ports, comparisons, or polyglot repos.
- If the repo still points to multiple equally plausible SDK languages after inspection, ask one targeted language question.
Framework and workflow defaults
- If the repo or request implies a framework, answer in that framework: Next.js for TypeScript, FastAPI for Python,
net/httpfor Go,axumfor Rust. - Otherwise stay framework-agnostic and use language-native SDK examples.
- Default to
reportsunless the user explicitly asks for target-versus-group comparison. - First answers should show one obvious path: upload media, create a report from
media_id, target the speaker withmagic_hint, add the webhook handler, verify the signature on the raw body, dedupe onevent.id, fetch the completed report. - Prefer webhooks as the default completion path in production. Conduit jobs are asynchronous and often take around 150 seconds.
- Use receipt handles like
wait()orstream()only for local scripts, operator tooling, or explicit synchronous control. - Reach for
primitives.media,primitives.jobs, andprimitives.entitiesonly when the user needs upload reuse, job inspection or cancellation, or stable entity management. - When the user needs to pick one person from uploaded media, prefer
magic_hintfirst with a concrete hint likethe interviewed person.
Conduit-specific guardrails
- Verify webhook signatures on the exact raw request body before parsing the event.
- Deduplicate webhook deliveries on
event.idbefore doing side effects. - Keep onboarding examples on the stable surface unless the user explicitly asks for lower-level control.
- Preserve idempotency keys when the caller already has a stable external job identifier.
- Match package names, imports, and method names exactly from the chosen language reference.
- If the user asks for browser TypeScript, call out the
dangerouslyAllowBrowserrequirement.
First-time integration checklist
- Initialize the client with the correct package import and API key shape.
- Upload the recording and reuse the returned
media_id. - Create a
reportsjob withtarget = magic_hint("the interviewed person"). - Add the webhook route in the detected framework.
- Verify the signature on the exact raw request body before parsing.
- Deduplicate on
event.id. - Handle
report.completedand fetch the final report. - Mention
wait()orstream()only as local tooling helpers when relevant.
When to branch out
- Use
matchingonly for explicit target-versus-group comparisons in a named context. - Use
primitives.mediawhen the recording should be uploaded once and reused bymedia_id. - Use
primitives.jobsfor job inspection or cancellation. - Use
primitives.entitiesfor stable entity management or backoffice flows. - Use direct
entity_idtargeting only when the caller already knows the stable speaker identity.
Output expectations
- Keep first examples short: upload media, create a report from
media_id, target withmagic_hint, verify a webhook, dedupe, fetch the final report. - Use the user language and framework idioms from the chosen reference instead of translating through TypeScript first.
- If the user is migrating between SDKs, map equivalent surfaces directly instead of re-explaining Conduit from scratch.
- Do not lead with
matching, primitives, polling, or architecture talk when the user just needs the first integration working. - If you are tuning this skill itself, use
assets/trigger-queries.jsonas the trigger eval fixture set.