---
name: ax-llm/ax-cpp-agent-memory-skills
source: https://app.decimal.ai/s/ax-llm-ax-cpp-agent-memory-skills@1/SKILL.md
source_sha256: 01686220e4de
---

# AxAgent Memory And Skills For C++

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.

## When To Use

- Load memories or skill guides into an RLM agent run.
- Use static skillsCatalog or memoriesCatalog search without host callbacks.
- Preload constructor or forward-time skills with deterministic id merging.
- Track which memories or skills actually influenced a turn.
- Register non-fatal loaded/used observers in native option maps or target callback wrappers.

## Package Facts

- Language: C++.
- Package: `axllm`.
- Package API docs: `API.md` and `axir-api.json`.
- Capability manifest: `axir-capabilities.json`.
- Runnable examples: `examples/`.
- Real network support: yes.
- Scripted no-key transport support: yes.
- Runtime profiles: `javascript-quickjs`, `python-pyodide`.

## Core Pattern

```cpp
auto helper = axllm::agent("question:string -> answer:string");
auto out = helper.forward(llm, { {"question", "How should I proceed?"} });
```

## Lifecycle And State

- Constructor `skills` seed the loaded-skill prompt without firing load observers.
- Forward-time `skills` override constructor entries by normalized ID and remain loaded for later calls. IDs and names are trimmed, malformed entries are skipped, valid empty content is preserved, and rendered entries are ID-sorted.
- A forward input named `memories` seeds the first actor turn. Recalled entries merge by ID for that run, then memory state resets before the next forward.
- `onSkillsSearch` / `onMemoriesSearch` take precedence over static catalogs. Without a host callback, `skillsCatalog` / `memoriesCatalog` use the built-in deterministic lexical ranker.
- `onLoadedMemories` / `onLoadedSkills` observe runtime recall and discovery, not constructor presets. `onUsedMemories` / `onUsedSkills` emit one consolidated notification per forward. Forward observers override constructor observers, and observer errors are ignored.
- `relevanceRanking` produces advisory skill and memory hints using the same tokenization, weighting, tie suppression, limits, snippets, and already-loaded exclusion as TypeScript.
- `get_state()` and `set_state(...)` preserve the legacy bare-runtime snapshot shape. Use `export_runtime_state()` and `restore_runtime_state(...)` for the complete portable agent snapshot, including loaded skills and constructor-preset reapplication. Do not interchange the two shapes.

## Runnable Examples

- Provider-backed memory, skill, and observer lifecycle: `src/examples/cpp/long-agents/skills_and_memory_assistant.cpp`.
- Catalog-only search and relevance hints: the target's `smart-defaults-agent` example under `src/examples/cpp/long-agents/`.
- Website gallery: https://axllm.dev/cpp/examples/long-agents/.

## Relevant API Surface

- Agents And RLM: `axllm::agent`, `axllm::AxAgent`
- Runtime Profiles: `axllm::ProcessCodeRuntime`, `axllm::RuntimeCapabilities`, `axllm::RuntimeEnvelope`, `javascript-quickjs`, `python-pyodide`

## Guardrails

- Start from package examples for exact native syntax before inventing a new call shape.
- Use `provider-api` examples only when the user explicitly has provider credentials available.
- Use `no-key` examples for deterministic local checks and provider request mapping.
- Treat AxIR as the source of generated package truth: if package docs disagree with source code, update the compiler and regenerate packages.
- Do not copy repo-maintainer skills from `tools/*/skills/` into user packages.