Skills

Skills are higher-level capabilities that orchestrate several tools or internal LLM calls to accomplish a task too complex for a single tool call. The two-stage classifier routes a message to a skill when the request is composite — when the right answer is a sequence of operations rather than a single action.

This page lists the skills currently shipped and the phrases that trigger them.

when a skill runs

The user does not pick a skill manually. The classifier inspects the message and routes it. The routing decision shows up as a chat badge (because skills run in chat mode, not deliberation) plus a tool indicator describing what ran.

web_research

Performs deep web research by combining web_search with fetch_url across the top results. Returns assembled context for the local Qwen model to synthesize. Forces the read-multiple-sources pattern instead of stopping at the first hit.

Trigger phrases: "do deep research on X", "research the latest on Y", "find me everything about Z".

fact_check

Verifies a specific factual claim against web evidence. Pipeline: search the claim → open the top 2 results → assemble evidence → render a verdict (supported, contradicted, insufficient evidence) with citations.

Trigger phrases: "fact-check this claim", "is it true that…", "verify this assertion".

document_qa

Reads every binary file the user has uploaded in the current chat session and assembles their content as grounded context. Removes the ambiguity of Qwen 9B sometimes reading only one file when several are relevant.

Trigger phrases: "summarize all my uploaded files", "what do these documents say about X".

creative_writer

Entity-aware grounding for creative writing requests. Detects whether the request names specific identifiable entities (authors, works, characters, styles, places) that the model cannot reliably invent. If yes, retrieves relevant pack context for each entity. If no, hands the bare prompt to the model and lets it write freely.

The skill never adds creative templates — it only fetches grounding when the user asks for "a poem in Pascoli's style" and not when they ask for "a poem about the sky".

code_inspect

A large skill covering eight distinct intents for code-related questions. The skill detects the intent from the phrasing and runs the matching sub-flow.

IntentWhat it does
debugDiagnose an error and propose a concrete fix.
explainWalk through the code block by block.
reviewFind issues grouped by Correctness / Security / Performance / Maintainability.
testPropose a complete test suite in the language's conventional framework.
portTranslate to another language while preserving semantics.
compareSide-by-side analysis of two snippets.
searchLocate something inside the user's code.
extendDesign + implementation snippet for a new feature on top of the existing code.

When relevant code-specific packs are loaded (Python, JavaScript, Go, Rust, Docker, MCP, …), the skill grounds its answer on them — the same retrieval + deliberation pipeline used for knowledge questions, scoped to the code domain.

code_generate

Produces new code from a natural-language requirement. For "write me a Flask endpoint that…" style requests. Honest about its limits: excellent for small-to-medium scripts and standalone functions, weaker on multi-file architecture and very recent APIs.

code_refactor

Rewrites existing code into a better version. For "modernize this Python 2 script", "add type hints to this", "refactor for readability". Instructed to flag any behavior changes explicitly because refactors can subtly alter semantics.


How skills relate to deliberation

A knowledge question ("what is photosynthesis?") runs the full three-stage Expert / Critic / Synthesizer pipeline against the packs and gets a server + local, local · private, or network badge.

A skill ("fact-check this claim") runs a different pipeline: orchestrated tool calls + a final synthesis pass. It gets a chat badge plus a tool indicator describing the steps that ran. Skills do not consult the broker's pack catalog by default — they reason over their own outputs (web results, file contents, code analysis).

The two pipelines share the same local Qwen model and the same context budget per hardware tier, but the control flow is different. The classifier decides which one runs.

See also:

Something missing or incorrect? Open an issue on GitHub