Neat-Freak Knowledge Closeout
KKKKhazix/khazix-skills
Brings project docs, agent rule files, authorized memory and leftover workspace files back in line with what the code and runtime actually do at the end of a work session.
This skill helps an LLM generate correct AxAgent memory retrieval, context-map, and dynamic skill-loading code using @ax-llm/ax.
$ npx skills add dosco/aithy --skill ax-agent-memory-skills -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dosco/aithy ax-agent-memory-skills --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dosco/aithy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/ax-agent-memory-skills .claude/skills/ax-agent-memory-skills && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ax-agent-memory-skills" agent skill from https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skills into .claude/skills/ax-agent-memory-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ax-agent-memory-skills", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skillsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dosco/aithy --skill ax-agent-memory-skills -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dosco/aithy ax-agent-memory-skills --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dosco/aithy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/ax-agent-memory-skills .agents/skills/ax-agent-memory-skills && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ax-agent-memory-skills" agent skill from https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skills into .agents/skills/ax-agent-memory-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ax-agent-memory-skills", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dosco/aithy --skill ax-agent-memory-skills -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dosco/aithy ax-agent-memory-skills --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dosco/aithy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/ax-agent-memory-skills .cursor/skills/ax-agent-memory-skills && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ax-agent-memory-skills" agent skill from https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skills into .cursor/skills/ax-agent-memory-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ax-agent-memory-skills", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dosco/aithy.git --path .claude/skills/ax-agent-memory-skills--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dosco/aithy --skill ax-agent-memory-skills -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dosco/aithy ax-agent-memory-skills --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dosco/aithy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/ax-agent-memory-skills .gemini/skills/ax-agent-memory-skills && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ax-agent-memory-skills" agent skill from https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skills into .gemini/skills/ax-agent-memory-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ax-agent-memory-skills", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dosco/aithy ax-agent-memory-skillsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dosco/aithy --skill ax-agent-memory-skills -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dosco/aithy.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/ax-agent-memory-skills .github/skills/ax-agent-memory-skills && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ax-agent-memory-skills" agent skill from https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skills into .github/skills/ax-agent-memory-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ax-agent-memory-skills", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dosco/aithy --skill ax-agent-memory-skills -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dosco/aithy ax-agent-memory-skills --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dosco/aithy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/ax-agent-memory-skills .opencode/skills/ax-agent-memory-skills && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ax-agent-memory-skills" agent skill from https://github.com/dosco/aithy/tree/main/.claude/skills/ax-agent-memory-skills into .opencode/skills/ax-agent-memory-skills/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ax-agent-memory-skills", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ax-agent-memory-skillsThis skill helps an LLM generate correct AxAgent memory retrieval, context-map, and dynamic skill-loading code using @ax-llm/ax.
Ax Agent Memory Skills is an agent skill from dosco/aithy. This skill helps an LLM generate correct AxAgent memory retrieval, context-map, and dynamic skill-loading code using @ax-llm/ax. Use when the user asks about contextMap, AxAgentContextMap, onMemoriesSearch, memoriesCatalog, recall(...), inputs.memories, onLoadedMemories, onUsedMemories, onSkillsSearch, skillsCatalog, AxAgentCatalogSkill, discover({ skills }), onLoadedSkills, onUsedSkills, preloaded skills, preloading memories at forward time, relevanceRanking hints, loaded memory/skill IDs, or carrying memories…
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Agent memory. The repository describes itself as: A personal AI agent that can work safely on your machine, remember useful context, and keep its data under your control. The licence is Apache-2.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0c9855f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript, javascript and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
raw.githubusercontent.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ax Agent Memory Skills loads about 5.4k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 2,008 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dosco/aithy at commit 0c9855f, republished under its Apache-2.0 licence (© dosco). 2,008 words, ~5,375 tokens.
.claude/skills/ax-agent-memory-skills/SKILL.md (or your agent's skills folder).Use this skill when an agent needs a persistent context map, task-relevant memory retrieval, or skill guides loaded into the executor prompt on demand. For ordinary agent setup use ax-agent. For RLM runtime policy use ax-agent-rlm. For callbacks and telemetry use ax-agent-observability.
skillsCatalog / memoriesCatalog when the skill guides or memories fit in a plain array — Ax then backs discover({ skills }) / recall(...) with a built-in deterministic local search and no host search code is needed.onSkillsSearch / onMemoriesSearch when retrieval needs a real backend (vector DB, BM25 service, KV). A host callback always takes precedence over the catalog's built-in search.contextMap when repeated runs inspect the same long external context and should accumulate a small orientation cache automatically.recall(...) is available to distiller and executor stages when onMemoriesSearch or a non-empty memoriesCatalog is set.discover({ skills }) is available to the executor when onSkillsSearch or a non-empty skillsCatalog is set.skillsCatalog, the executor prompt also gains a static ### Available Skills index (id + name + description), so skill discovery is targeted instead of blind.recall(...) and discover({ skills }) return void. The loaded content appears on the next turn.onLoadedMemories / onLoadedSkills to observe what got loaded.onUsedMemories / onUsedSkills to track what the actor says it actually relied on.Use contextMap when repeated runs ask different questions over the same long context, document set, or repository. The map is prompt-resident orientation knowledge: structure, concepts, constants, parsing schema, reusable aggregate results, and concrete error patterns. It is not a task-specific answer cache.
Runnable example: src/examples/rlm-context-map-live.ts demonstrates a provider-backed context-map update, onUpdate snapshot persistence, finite evolve, and frozen map reuse.
When contextMap is configured:
forward(...).{ infiniteEvolve: false, evolveSteps: N }; after N successful updates it is still injected but no longer updated.onUpdate to persist result.map.snapshot() outside the agent.import { agent, AxAgentContextMap } from '@ax-llm/ax';
const map = new AxAgentContextMap(savedSnapshot, {
maxChars: 4000,
infiniteEvolve: false,
evolveSteps: 10,
});
const myAgent = agent('context:string, query:string -> answer:string', {
contextFields: ['context'],
contextMap: {
map,
onUpdate: ({ map }) => saveSnapshot(map.snapshot()),
},
});Types:
type AxAgentContextMapConfig = {
map?: AxAgentContextMap | AxAgentContextMapSnapshot | string;
onUpdate?: (result: AxAgentContextMapUpdateResult) => void | Promise<void>;
};
type AxAgentContextMapOptions = {
maxChars?: number;
infiniteEvolve?: boolean;
evolveSteps?: number;
};Use onMemoriesSearch when the agent needs to pull task-relevant context such as user preferences, prior decisions, project facts, or past conversations from an external store (vector DB, BM25, KV). The actor decides what to load, when, and how much.
When onMemoriesSearch is set, the distiller and executor stages gain:
inputs.memories field. In JS this is an array of { id, content } entries the actor reads directly. In the prompt, the same entries render as markdown blocks with ID: \...`lines, matching the Loaded Skills ID style. Eachcontent` is opaque markdown; frontmatter is not parsed.recall(searches: string[]): void global the actor awaits to load more entries. Recalled entries are appended to inputs.memories and visible from the next turn onward. recall() returns nothing.The responder stage does not receive memories.
import { agent } from '@ax-llm/ax';
import type { AxAgentMemoriesSearchFn } from '@ax-llm/ax';
const onMemoriesSearch: AxAgentMemoriesSearchFn = async (
searches,
alreadyLoaded
) => {
// `searches` is the full array passed to recall(...). Batch your
// store lookup in one round-trip.
// `alreadyLoaded` is the current inputs.memories snapshot. Filter
// against it to skip duplicates.
const skip = new Set(alreadyLoaded.map((m) => m.id));
const fresh = await myVectorDB.searchBatch(searches, { topK: 3 });
return fresh.filter((m) => !skip.has(m.id));
};
const myAgent = agent('task:string -> answer:string', {
contextFields: [],
onMemoriesSearch,
});Each memory result must be:
type AxAgentMemoryResult = {
id: string;
content: string;
};If the memory set fits in a plain array, skip the callback entirely: pass memoriesCatalog and Ax backs recall(...) with a built-in deterministic local search (idf-weighted token overlap over id + content; not regex, not embeddings). The alreadyLoaded contract is preserved — entries already on inputs.memories are excluded before ranking.
const myAgent = agent('task:string -> answer:string', {
contextFields: [],
memoriesCatalog: [
{ id: 'deploy-window', content: 'Prod deploys only on Tuesday afternoons.' },
{ id: 'user-prefs', content: 'User prefers concise answers.' },
],
});Rules:
memoriesCatalog and onMemoriesSearch are set, the host callback handles all recall(...) searches; the catalog still powers the advisory relevanceRanking hint.onMemoriesSearch instead.To seed specific memories for one run (no recall round-trip), pass them as the memories input value. They render on inputs.memories from the first turn and merge with anything recalled later (deduped by id).
await myAgent.forward(ai, {
task: 'Plan the deploy',
memories: [{ id: 'deploy-window', content: 'Prod deploys only on Tuesday afternoons.' }],
});// Turn 1: kick off one batched lookup.
await recall(['user preferences', 'project constraints']);
// Turn 2+: matched entries are now visible on inputs.memories.
const prefs = inputs.memories.find((m) => m.id === 'user-prefs-v2');Rules:
await recall([...]) call.recall() calls or wrap them in Promise.all(...).inputs.memories on the next turn to see what landed.recall() invokes onMemoriesSearch with (searches, alreadyLoaded) and returns void.inputs.memories for subsequent turns and render in the prompt as:### Memory
ID: `mem:user-prefs-v2`
...id (last-write-wins) and sorted by id for prefix-cache stability.recall() is needed for those entries.recall() may be called multiple times across turns; results accumulate for that run.inputs.memories lifetime is one .forward() call. It resets between calls..forward() CallsTo preserve continuity across calls, persist memories in your store and recall them again on the next call. If you want to replay anything loaded on a prior run, observe loads with onLoadedMemories.
const carried = new Map<string, string>();
const myAgent = agent('task:string -> answer:string', {
contextFields: [],
onMemoriesSearch: async (searches) => {
const fresh = await myVectorDB.searchBatch(searches, { topK: 3 });
const carriedAsResults = [...carried.entries()].map(([id, content]) => ({
id,
content,
}));
return [...carriedAsResults, ...fresh];
},
onLoadedMemories: (results) => {
for (const r of results) carried.set(r.id, r.content);
},
});Use onSkillsSearch when the agent needs to load skill guides such as usage instructions, operational guides, or domain conventions into the executor's system prompt on demand. The actor decides which skills to fetch and when, so you do not pre-render every skill into every prompt.
When onSkillsSearch is set, the distiller and executor stages gain:
ID: values sorted by id.discover({ skills }) path the actor awaits to load more skills. Loaded entries appear in the next turn's prompt. discover(...) returns nothing.Skills the distiller loads carry over to the executor automatically. The responder does not see skills.
import { agent } from '@ax-llm/ax';
import type { AxAgentSkillsSearchFn } from '@ax-llm/ax';
// Each result is { id?: string; name: string; content: string }.
// If id is omitted, Ax falls back to name.
const onSkillsSearch: AxAgentSkillsSearchFn = async (searches) => {
return mySkillStore.resolveBatch(searches, {
// Recommended backend order: exact id, exact name, then broader search.
// This lets the actor pass one simple string and keeps lookup policy host-side.
strategy: ['id', 'name', 'search'],
topK: 2,
});
};
const myAgent = agent('task:string -> answer:string', {
contextFields: [],
onSkillsSearch,
});Each skill result is:
type AxAgentSkillResult = {
id?: string;
name: string;
content: string;
};If the skill set fits in a plain array, skip the callback entirely: pass skillsCatalog and Ax backs discover({ skills }) with a built-in deterministic local search (idf-weighted token overlap over id + name×2 + description×2 + the first 600 chars of content; not regex, not embeddings). The executor prompt also gains a static, cache-stable ### Available Skills index (id + name + description, sorted by id), so the actor searches by known ids instead of guessing.
import type { AxAgentCatalogSkill } from '@ax-llm/ax';
const catalog: AxAgentCatalogSkill[] = [
{
id: 'release-checklist',
name: 'Release checklist',
description: 'Steps for shipping a package release safely', // high-signal for matching
content: '1. Bump version\n2. Run tests\n3. Tag and publish',
},
];
const myAgent = agent('task:string -> answer:string', {
contextFields: [],
skillsCatalog: catalog,
});type AxAgentCatalogSkill = {
id: string;
name: string;
description?: string;
content: string;
};Rules:
skillsCatalog and onSkillsSearch are set, the host callback handles all discover({ skills }) searches; the catalog still powers the ### Available Skills index and the advisory relevanceRanking hint.skills); entries load only when matched. Use skills for guides that must always be in context, skillsCatalog for a larger set loaded on demand.onSkillsSearch instead.// Pass all skill queries in one call.
await discover({ skills: ['release-checklist', 'incident-response'] });
// Next turn: loaded skill bodies render under the "Loaded Skills"
// system-prompt section.Rules:
discover({ skills }) invokes onSkillsSearch with the raw search strings and returns void.id match, then an exact name match, then fuzzy/full-text search. The actor should not have to choose id: vs name: syntax.id (last-write-wins) and sorted by id for prefix-cache stability.id, its trimmed name is used as the id for backwards compatibility.currentSkillsPromptState across .forward() calls, unlike memories.agent.getState() / setState(...) to serialize/restore loaded skills.discover({ skills }) may be called multiple times across turns. Within one turn, batch all skill queries in a single call.onSkillsSearch; wire it explicitly per agent.If the caller already knows which skills are relevant, pass them up front instead of round-tripping through discover({ skills }).
skills on AxAgentOptions seeds the executor prompt at agent creation. They survive setState(...) resets.skills on forward(ai, values, { skills }) merge in at the start of that call. Distiller and responder ignore forward-time skills.Both accept the same shape onSkillsSearch returns: readonly AxAgentSkillResult[]. Forward-time skills override init-time skills by id. onLoadedSkills is not fired for preset skills; that callback is for runtime discover({ skills }) analytics.
const releaseAgent = agent('task:string -> answer:string', {
contextFields: [],
skills: [
{
id: 'release-checklist',
name: 'release-checklist',
content: '...',
},
],
});
await releaseAgent.forward(
ai,
{ task: 'Prepare release notes' },
{
skills: [
{
id: 'incident-response',
name: 'incident-response',
content: '...',
},
],
}
);You can use skills without setting onSkillsSearch at all. That is useful for static guides where the actor never needs to fetch more.
relevanceRanking)relevanceRanking is ON by default — leave it unset; set relevanceRanking: false to opt out. The default was flipped after its A/B gate passed (substance-judged, 49 runs per variant per model: small-model first-lookup precision 24%→90% and answer accuracy 14%→29%; frontier-model control accuracy 63%→88% with fewer turns). The generated language ports implement the same advisory hint contract through AxIR Core.
When enabled, a deterministic local ranker scores the agent's discoverable capabilities against the task once per forward(...) and injects a short advisory ### Likely Relevant shortlist into the executor turn — modules (needs functionDiscovery), catalog skills (needs skillsCatalog), and catalog memories (needs memoriesCatalog). The hint is non-authoritative: the full lists still apply and the actor may discover/recall anything else.
const myAgent = agent('task:string -> answer:string', {
contextFields: [],
functionDiscovery: true,
skillsCatalog: catalog,
relevanceRanking: true, // or { topK: 3, minScore: 0.08 }
});Rules:
functionDiscovery for modules, catalogs for skills/memories), so agents without those see no change. Everything else in this skill (catalog search, the Available Skills index) is independent of the flag.recall(...) (such use is not visible to onUsedMemories).relevance_ranking context event (see ax-agent-observability).onLoadedMemories reports what recall(...) loaded. onLoadedSkills reports what discover({ skills }) loaded. To track what the actor says it actually relied on, use onUsedMemories / onUsedSkills.
const used: AxAgentUsedMemory[] = [];
await myAgent.forward(
ai,
{ task: 'Make a personal plan' },
{
onUsedMemories: (items) => used.push(...items),
}
);
used; // [{ id, reason, stage }]Rules:
inputs.memories.await used(id, reason?); this is the actor-side declaration mechanism.used(...) resolves against loaded memory IDs and loaded skill IDs.mem:abc and skill:planning.register_agent_observer(...); Rust wraps them with agent_observer(...). The returned marker can be used in constructor or forward option maps, and observer failures are ignored in every language.Types:
onMemoriesSearch?: AxAgentMemoriesSearchFn;
onLoadedMemories?: (
results: readonly AxAgentMemoryResult[]
) => void | Promise<void>;
onUsedMemories?: (
usedMemories: readonly AxAgentUsedMemory[]
) => void | Promise<void>;
onSkillsSearch?: AxAgentSkillsSearchFn;
onLoadedSkills?: (
results: readonly AxAgentSkillResult[]
) => void | Promise<void>;
onUsedSkills?: (
usedSkills: readonly AxAgentUsedSkill[]
) => void | Promise<void>;
contextMap?: AxAgentContextMapConfig;
skills?: readonly AxAgentSkillResult[];
skillsCatalog?: readonly AxAgentCatalogSkill[];
memoriesCatalog?: readonly AxAgentMemoryResult[];
relevanceRanking?: boolean | { topK?: number; minScore?: number };TypeScript uses getState() / setState() for the actor runtime snapshot. The generated packages keep their legacy GetState / SetState (or language-shaped equivalents) as bare-runtime compatibility methods. Use ExportRuntimeState / RestoreRuntimeState in generated packages when you need the complete portable agent snapshot, including loaded skills and constructor-preset reapplication after restore. Do not interchange the two snapshot shapes.
Fetch this for full working code:
onMemoriesSearch + recall() and onSkillsSearch + discover({ skills }) with load observability and actual usage tracking via onUsedMemories / onUsedSkillssrc/examples/<lang>/long-agents/). All six languages support the native onMemoriesSearch / onSkillsSearch host callbacks, passed in the agent options at construction (Go/Java use native function values, Rust a agent_with_search_callbacks constructor, C++ a register_*_search helper); a static memory_search_results / skill_search_results config is also available.await recall(...) or await discover(...); both return void.recall() from the responder stage.discover({ skills }) from the responder stage.recall() calls or wrap them in Promise.all(...).discover() calls or wrap them in Promise.all(...).onMemoriesSearch or onSkillsSearch.onMemoriesSearch results via shared fields as a workaround; use recall(...).inputs.memories persists across .forward() calls.onLoadedMemories / onLoadedSkills as proof that the actor relied on an item; use onUsedMemories / onUsedSkills for actual-use tracking.onSkillsSearch / onMemoriesSearch callback that just scans a static array; pass the array as skillsCatalog / memoriesCatalog instead.skills (always preloaded into the prompt) with skillsCatalog (searchable, loaded on demand).© dosco, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/ax-agent-memory-skills of dosco/aithy.
Open the folder on GitHubat commit 0c9855f
Ax Agent Memory Skills next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ax Agent Memory Skills this skilldosco/aithy | 107 | — | ~5.4k | Automated safety check: Pass | Apache-2.0 | |
| Neat-Freak Knowledge CloseoutKKKKhazix/khazix-skills | 21k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Beads Task Memorygastownhall/beads | 28k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Reflect on Session Learningscursor/plugins | 11k | 5 repos | ~1.2k | Automated safety check: Pass | None | |
| MemPalace Memory SearchMemPalace/mempalace | 59k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Compound Learning WriterEveryInc/compound-engineering-plugin | 25k | — | ~2k | Automated safety check: Pass | MIT |
KKKKhazix/khazix-skills
Brings project docs, agent rule files, authorized memory and leftover workspace files back in line with what the code and runtime actually do at the end of a work session.
gastownhall/beads
Tracks multi-session work with dependencies in the bd issue tracker so the agent can find ready tasks and recover its context after conversation compaction.
cursor/plugins
Starts three parallel reviewer subagents over the current conversation transcript, then turns their findings into concrete edits to existing skills.
MemPalace/mempalace
Mines project files and conversation exports into a local, searchable memory palace and recalls past work by semantic search through the mempalace CLI.
EveryInc/compound-engineering-plugin
Records one solved and verified problem as a durable learning in the repository, but only when the reasoning is not already clear from the final code, tests or docs.
slopus/happy
Searches past Claude Code, Codex and Cursor sessions and summarizes what was worked on, tried or decided, using extraction scripts instead of reading raw logs.
dosco/aithy
This skill helps an LLM generate correct AxAgent observability code using @ax-llm/ax.
dosco/aithy
This skill helps an LLM generate correct AxAgent tuning and evaluation code using @ax-llm/ax.
dosco/aithy
This skill helps an LLM generate correct audio code with @ax-llm/ax.
dosco/aithy
This skill helps an LLM generate correct AxGEPA optimization code using @ax-llm/ax.
dosco/aithy
This skill helps with using the @ax-llm/ax TypeScript library for building LLM applications.
dosco/aithy
This skill helps an LLM build correct native Model Context Protocol integrations with @ax-llm/ax.
Categories
This skill helps an LLM generate correct AxAgent memory retrieval, context-map, and dynamic skill-loading code using @ax-llm/ax. Ax Agent Memory Skills is an agent skill from dosco/aithy. This skill helps an LLM generate correct AxAgent memory retrieval, context-map, and dynamic skill-loading code using @ax-llm/ax.
Ax Agent Memory Skills fits situations like: the user asks about contextMap; axAgentContextMap; onMemoriesSearch; memoriesCatalog.
Run `npx skills add dosco/aithy --skill ax-agent-memory-skills -a claude-code`. Or copy the skill folder (.claude/skills/ax-agent-memory-skills in dosco/aithy) into .claude/skills/ax-agent-memory-skills in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dosco/aithy --skill ax-agent-memory-skills -a codex`. Or copy the skill folder (.claude/skills/ax-agent-memory-skills in dosco/aithy) into .agents/skills/ax-agent-memory-skills in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dosco/aithy --skill ax-agent-memory-skills -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ax-agent-memory-skills, .gemini/skills/ax-agent-memory-skills, .github/skills/ax-agent-memory-skills and .opencode/skills/ax-agent-memory-skills in your project.
SKILL.md names no scripts, command-line tools or credentials: Ax Agent Memory Skills is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: raw.githubusercontent.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ax Agent Memory Skills is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ax Agent Memory Skills: Neat-Freak Knowledge Closeout (KKKKhazix/khazix-skills, 21k stars), Beads Task Memory (gastownhall/beads, 28k stars), Reflect on Session Learnings (cursor/plugins, 11k stars) and MemPalace Memory Search (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dosco (a GitHub user) maintains it in dosco/aithy, which has 107 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on August 31, 2026.
Source: dosco/aithy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.