Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when writing C++ code with `axllm` for flows, nodes, program graphs, nested programs, dynamic options, caching, and optimizer components.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 5% | 0% |
This skill helps an agent write C++ code with the generated Ax package axllm. Use the generated package API, examples, and manifests; do not import TypeScript-only APIs unless you are editing the TypeScript package.
axllm.API.md and axir-api.json.axir-capabilities.json.examples/.javascript-quickjs, python-pyodide.cppauto draft = axllm::ax("topicText:string -> draftText:string"); auto wf = axllm::flow(axllm::object({{"id", "docs.coreFlow"}})) .execute("draft", draft, axllm::object({ {"reads", axllm::array({"topicText"})}, {"writes", axllm::array({"draftResult", "draftText"})} })) .returns(axllm::object({{"draftText", "draftText"}}));
Build each flow node from its own input/output contract.
cppauto classifier = axllm::ax("requestText:string -> route:class \"support, sales, engineering\""); auto responder = axllm::ax("requestText:string, route:string -> responseText:string");
Declare reads and writes so the responder waits for the typed route.
cppauto branch_flow = axllm::flow(axllm::object({{"id", "docs.branchFlow"}})) .execute("classifier", classifier, axllm::object({{"reads", axllm::array({"requestText"})}, {"writes", axllm::array({"classifierResult", "route"})}})) .execute("responder", responder, axllm::object({{"reads", axllm::array({"requestText", "route"})}, {"writes", axllm::array({"responderResult", "responseText"})}})) .returns(axllm::object({{"route", "route"}, {"responseText", "responseText"}}));
Independent reads let research and audience analysis share one planner group.
cppauto parallel_flow = axllm::flow(axllm::object({{"id", "docs.parallelFlow"}})) .execute("research", research, axllm::object({{"reads", axllm::array({"topicText"})}, {"writes", axllm::array({"researchResult", "factList"})}})) .execute("audience", audience, axllm::object({{"reads", axllm::array({"topicText"})}, {"writes", axllm::array({"audienceResult", "audienceAngle"})}})) .execute("join", join, axllm::object({{"reads", axllm::array({"factList", "audienceAngle"})}, {"writes", axllm::array({"joinResult", "briefText"})}})) .returns(axllm::object({{"briefText", "briefText"}}));
A linear refinement pipeline makes each dependency explicit.
cppauto refine_flow = axllm::flow(axllm::object({{"id", "docs.refineFlow"}})) .execute("draft", draft, axllm::object({{"reads", axllm::array({"topicText"})}, {"writes", axllm::array({"draftResult", "draftText"})}})) .execute("critique", critique, axllm::object({{"reads", axllm::array({"draftText"})}, {"writes", axllm::array({"critiqueResult", "critiqueText"})}})) .execute("revise", revise, axllm::object({{"reads", axllm::array({"draftText", "critiqueText"})}, {"writes", axllm::array({"reviseResult", "revisedText"})}})) .returns(axllm::object({{"revisedText", "revisedText"}}));
Forward accepts the provider client and public inputs.
cppauto output = parallel_flow.forward( client, axllm::object({{"topicText", "Typed LLM workflows"}}));
Start from the complete programs under examples/, then browse the larger gallery at https://axllm.dev/cpp/subsystems/flow/.
axllm::flow, axllm::AxFlowprovider-api examples only when the user explicitly has provider credentials available.no-key examples for deterministic local checks and provider request mapping.tools/*/skills/ into user packages.Other measured skills in the registry, with their headline benchmark lift.