<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: IT Lackey</title>
    <description>The latest articles on Forem by IT Lackey (@itlackey).</description>
    <link>https://forem.com/itlackey</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F235795%2F23836c99-9353-4cc6-a4f3-282d119c1824.jpeg</url>
      <title>Forem: IT Lackey</title>
      <link>https://forem.com/itlackey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/itlackey"/>
    <language>en</language>
    <item>
      <title>What akm Actually Does: A Command-by-Command Tour</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Thu, 07 May 2026 23:51:17 +0000</pubDate>
      <link>https://forem.com/itlackey/what-akm-actually-does-a-command-by-command-tour-131l</link>
      <guid>https://forem.com/itlackey/what-akm-actually-does-a-command-by-command-tour-131l</guid>
      <description>&lt;p&gt;If you've looked at &lt;code&gt;akm&lt;/code&gt; for the first time and thought "this seems useful, but what do all these commands actually &lt;em&gt;do&lt;/em&gt;?" this post is for you.&lt;/p&gt;

&lt;p&gt;At a high level, &lt;code&gt;akm&lt;/code&gt; is a package manager for AI agent capabilities. It gives your agents a searchable library of scripts, skills, commands, agents, knowledge docs, workflows, vaults, wikis, lessons, and memories. Instead of dumping everything into a giant system prompt, you let the agent discover what it needs with search, then load the right asset at the right time.&lt;/p&gt;

&lt;p&gt;That's the big idea. The practical question is how the command surface fits together in day-to-day work.&lt;/p&gt;

&lt;p&gt;This post walks through the CLI by job-to-be-done, with real examples of when you'd use each command.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This command-family framing reflects &lt;code&gt;akm&lt;/code&gt; v0.7.0.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Short Version
&lt;/h2&gt;

&lt;p&gt;You can think about &lt;code&gt;akm&lt;/code&gt; in seven layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set up the workspace&lt;/strong&gt; — &lt;code&gt;setup&lt;/code&gt;, &lt;code&gt;init&lt;/code&gt;, &lt;code&gt;config&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;index&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect sources and discover new ones&lt;/strong&gt; — &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;, &lt;code&gt;remove&lt;/code&gt;, &lt;code&gt;clone&lt;/code&gt;, &lt;code&gt;save&lt;/code&gt;, &lt;code&gt;registry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find and inspect assets&lt;/strong&gt; — &lt;code&gt;curate&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;show&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build local knowledge and operational context&lt;/strong&gt; — &lt;code&gt;remember&lt;/code&gt;, &lt;code&gt;import&lt;/code&gt;, &lt;code&gt;wiki&lt;/code&gt;, &lt;code&gt;vault&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run repeatable procedures&lt;/strong&gt; — &lt;code&gt;workflow&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuously improve the stash&lt;/strong&gt; — &lt;code&gt;feedback&lt;/code&gt;, &lt;code&gt;history&lt;/code&gt;, &lt;code&gt;events&lt;/code&gt;, &lt;code&gt;reflect&lt;/code&gt;, &lt;code&gt;propose&lt;/code&gt;, &lt;code&gt;proposal&lt;/code&gt;, &lt;code&gt;distill&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operate the CLI comfortably&lt;/strong&gt; — &lt;code&gt;help&lt;/code&gt;, &lt;code&gt;hints&lt;/code&gt;, &lt;code&gt;completions&lt;/code&gt;, &lt;code&gt;upgrade&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you only remember one mental model, make it this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;akm add&lt;/code&gt; tells akm where content lives&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm index&lt;/code&gt; makes that content searchable&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm curate&lt;/code&gt; gives the best first shortlist for a request&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm search&lt;/code&gt; is for deeper discovery when you need more than the curated list&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm show&lt;/code&gt; loads the full thing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else supports one of those steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  What akm Is Really For
&lt;/h2&gt;

&lt;p&gt;Most teams already have agent assets. They're just scattered.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code skills in one folder&lt;/li&gt;
&lt;li&gt;OpenCode commands in another&lt;/li&gt;
&lt;li&gt;project notes in random markdown files&lt;/li&gt;
&lt;li&gt;internal runbooks in a docs repo&lt;/li&gt;
&lt;li&gt;half-remembered lessons buried in old chats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;akm&lt;/code&gt; turns that mess into a searchable, reusable library.&lt;/p&gt;

&lt;p&gt;For example, imagine a team that ships a web app every week. They might use &lt;code&gt;akm&lt;/code&gt; to unify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local review and release skills&lt;/li&gt;
&lt;li&gt;a shared Git repo of deployment workflows&lt;/li&gt;
&lt;li&gt;internal docs imported as knowledge&lt;/li&gt;
&lt;li&gt;a production vault that exposes secret &lt;em&gt;keys&lt;/em&gt; without leaking values&lt;/li&gt;
&lt;li&gt;memories like "staging deploys require VPN"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now an agent can start with a curated shortlist for "ship release", load the release workflow, check the deployment vault, read the runbook section it needs, and only fall back to broader search if it needs more options.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. First-Run and Environment Commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm setup&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use this when you want the guided on-ramp.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you just installed &lt;code&gt;akm&lt;/code&gt; on a new laptop and want the wizard to create the working stash, configure providers, and build the first index without editing config by hand.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm init&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use this when you want to skip the wizard and just create the working stash.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm init &lt;span class="nt"&gt;--dir&lt;/span&gt; ~/akm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you're scripting environment bootstrap for a devcontainer or CI image and want a known stash location without interactive prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm config&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use this to inspect or change settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm config get output.format
akm config &lt;span class="nb"&gt;set &lt;/span&gt;output.detail full
akm config path &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: your agent prefers text output in one repo and JSON in another, or you want to set a default write target for memories and imports.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm info&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use this as the health check.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: after setup, you want to confirm the version, active sources, registries, and whether semantic search is actually ready.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm index&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use this whenever content changed and you want search to reflect it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm index
akm index &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you added a GitHub stash, imported some docs, and created two memories. &lt;code&gt;akm index&lt;/code&gt; refreshes the local search database so the agent can discover them.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Source and Registry Commands
&lt;/h2&gt;

&lt;p&gt;These commands answer two related questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where should akm look for assets right now?&lt;/li&gt;
&lt;li&gt;where can I discover more stashes later?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm add&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This is how you register a source.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add ~/.claude/skills
akm add github:your-org/team-agent-toolkit
akm add @scope/platform-stash
akm add https://docs.example.com &lt;span class="nt"&gt;--name&lt;/span&gt; public-docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;point &lt;code&gt;akm&lt;/code&gt; at your existing Claude Code skills&lt;/li&gt;
&lt;li&gt;pull in a shared team stash from GitHub&lt;/li&gt;
&lt;li&gt;install an npm-published stash&lt;/li&gt;
&lt;li&gt;crawl a documentation site as searchable knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm list&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Shows what sources are already connected.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you're debugging why a search result isn't appearing and want to verify whether the expected repo or local directory is even registered.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm update&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Refreshes managed sources.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm update &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: your platform team shipped an updated deployment stash and everyone pulls the latest version before a release.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm remove&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Disconnect a source you no longer want indexed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm remove public-docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: a website source became noisy or outdated and you want it out of search results.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm clone&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Copies a single asset into your working stash or another directory so you can edit it locally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm clone skill:code-review
akm clone &lt;span class="s2"&gt;"npm:@scope/platform-stash//workflow:ship-release"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you find a good community skill, clone it into your local stash, and tailor it for your team's code review conventions.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm save&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Commit local stash changes, and optionally push if the source is writable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm save &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Tighten release workflow"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: your team keeps its shared stash in Git. After improving a workflow and a vault comment, &lt;code&gt;akm save&lt;/code&gt; records the change like normal code.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm registry&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use registries to discover new stashes you have not installed yet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm registry search &lt;span class="s2"&gt;"code review"&lt;/span&gt;
akm registry add https://example.com/registry/index.json &lt;span class="nt"&gt;--name&lt;/span&gt; team
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: platform engineering publishes an internal stash registry, and teams browse it the same way they'd browse a package registry.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Discovery Commands
&lt;/h2&gt;

&lt;p&gt;This is the heart of the product.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm curate&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Start here for a request or prompt. &lt;code&gt;curate&lt;/code&gt; is the preferred first stop because it returns a tighter, more task-ready shortlist.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm curate &lt;span class="s2"&gt;"review a large pull request"&lt;/span&gt;
akm curate &lt;span class="s2"&gt;"ship a bun release"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: the agent needs a deploy workflow, a release checklist, or a review skill and wants the best few candidates first instead of a broad result set.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm search&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use this when you want deeper discovery beyond the curated shortlist.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"review a large pull request"&lt;/span&gt;
akm search &lt;span class="s2"&gt;"kubernetes deploy"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; workflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: &lt;code&gt;curate&lt;/code&gt; gave you a solid starting point, but now you want to dig wider, inspect additional assets, or explore the long tail of relevant results.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm show&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Load the full content of a specific asset.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show skill:code-review
akm show workflow:ship-release
akm show knowledge:incident-runbook section &lt;span class="s2"&gt;"Rollback"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: &lt;code&gt;curate&lt;/code&gt; or &lt;code&gt;search&lt;/code&gt; identifies the right asset; &lt;code&gt;show&lt;/code&gt; gives the agent the actual instructions, prompt template, workflow steps, or document section it needs to act.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Local Knowledge and Operational Context
&lt;/h2&gt;

&lt;p&gt;This is the part of &lt;code&gt;akm&lt;/code&gt; that turns a stash into living local context instead of a static pile of files.&lt;/p&gt;

&lt;p&gt;Some commands capture what your team knows. Others make that knowledge safer or more structured. They belong together because they all define the working context your agent can rely on later.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm remember&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Write a memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm remember &lt;span class="s2"&gt;"Staging deploys require VPN access"&lt;/span&gt; &lt;span class="nt"&gt;--tag&lt;/span&gt; ops &lt;span class="nt"&gt;--tag&lt;/span&gt; deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: after an incident or a successful fix, you capture the lesson in a searchable format so the next agent run doesn't rediscover it the hard way.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm import&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Bring a document into the stash as knowledge.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm import ./docs/release-checklist.md
akm import https://example.com/internal-guide/auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you have a good architecture note or ops runbook outside the stash and want it indexed alongside everything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm wiki&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use wikis for long-lived, agent-maintained knowledge bases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki create architecture
akm wiki stash architecture ./notes/auth-redesign.md
akm wiki lint architecture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: your team wants a research or architecture wiki with raw sources, curated pages, and deterministic linting instead of ad hoc markdown sprawl.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wiki&lt;/code&gt; belongs with local knowledge, not off to the side. It's the command family you reach for when a single imported doc or memory is not enough and you need a maintained body of team knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm vault&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use vaults when the agent needs operational context about secrets without seeing the secret values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show vault:production
akm vault run vault:production &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nb"&gt;env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: a deploy workflow needs &lt;code&gt;DATABASE_URL&lt;/code&gt; and &lt;code&gt;DEPLOY_TOKEN&lt;/code&gt;. The agent can verify the keys are present, then load the environment only at execution time.&lt;/p&gt;

&lt;p&gt;Vaults fit here because they are part of the local operating context. They tell the agent what environment shape exists and let commands run safely without exposing secret values in the chat transcript.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Procedure Commands
&lt;/h2&gt;

&lt;p&gt;Once you have the right knowledge and context, the next problem is execution across time.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm workflow&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Use workflows for repeatable, resumable procedures.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow start workflow:ship-release &lt;span class="nt"&gt;--params&lt;/span&gt; &lt;span class="s1"&gt;'{"version":"2.4.0"}'&lt;/span&gt;
akm workflow next workflow:ship-release
akm workflow &lt;span class="nb"&gt;complete &lt;/span&gt;run-123 &lt;span class="nt"&gt;--step&lt;/span&gt; validate &lt;span class="nt"&gt;--notes&lt;/span&gt; &lt;span class="s2"&gt;"Version and branch confirmed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: shipping a release, rotating secrets, onboarding a new service, or any other multi-step process that should survive across sessions instead of living only in chat history.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Continuous Improvement Commands
&lt;/h2&gt;

&lt;p&gt;This is the loop that makes &lt;code&gt;akm&lt;/code&gt; better over time.&lt;/p&gt;

&lt;p&gt;The flow is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;an agent uses an asset&lt;/li&gt;
&lt;li&gt;you record whether it helped with &lt;code&gt;feedback&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;you inspect what happened with &lt;code&gt;history&lt;/code&gt; or &lt;code&gt;events&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;you ask for improvements with &lt;code&gt;reflect&lt;/code&gt; or &lt;code&gt;propose&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;you review the result with &lt;code&gt;proposal&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;you distill recurring feedback into reusable lessons with &lt;code&gt;distill&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These commands should be thought about as one system, not as isolated features.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm feedback&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Record whether an asset helped.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm feedback workflow:ship-release &lt;span class="nt"&gt;--positive&lt;/span&gt;
akm feedback skill:legacy-deploy &lt;span class="nt"&gt;--negative&lt;/span&gt; &lt;span class="nt"&gt;--note&lt;/span&gt; &lt;span class="s2"&gt;"Outdated after platform migration"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: over time, assets that consistently help rise in ranking and stale ones become easier to spot.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm history&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Inspect the recorded state changes for an asset or the stash.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm &lt;span class="nb"&gt;history&lt;/span&gt; &lt;span class="nt"&gt;--ref&lt;/span&gt; workflow:ship-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you want to know whether a workflow was searched, shown, or downvoted recently while cleaning up a team's stash.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm events&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Read the append-only realtime event stream.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm events &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;--format&lt;/span&gt; jsonl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: another process is watching &lt;code&gt;akm&lt;/code&gt; activity and reacting when new feedback, imports, or proposals land.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm reflect&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Ask an external agent to propose improvements to an existing asset.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm reflect skill:code-review &lt;span class="nt"&gt;--task&lt;/span&gt; &lt;span class="s2"&gt;"make this stricter about test coverage"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you have a decent review skill, but you want an agent to improve it based on how it's actually being used.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm propose&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Generate a brand-new asset proposal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm propose workflow incident-rollback &lt;span class="nt"&gt;--task&lt;/span&gt; &lt;span class="s2"&gt;"Rollback procedure for failed production deploys"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: repeated gaps in your stash show up in &lt;code&gt;history&lt;/code&gt; and &lt;code&gt;events&lt;/code&gt;, so you create a first draft for the missing workflow or skill.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm proposal&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Review, diff, accept, or reject queued proposals.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm proposal list
akm proposal diff 42
akm proposal accept 42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: keep human review in the loop before generated assets become part of the live stash.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm distill&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Summarize feedback into a reusable lesson proposal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm distill skill:code-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: repeated feedback on a skill gets turned into a lesson asset that captures what people learned from using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Operator Ergonomics
&lt;/h2&gt;

&lt;p&gt;These are the commands that make the CLI easier to live with day to day.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm help&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Focused help topics, especially migrations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm &lt;span class="nb"&gt;help &lt;/span&gt;migrate latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you upgraded &lt;code&gt;akm&lt;/code&gt; and want the release-specific migration notes without leaving the terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm hints&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Print instructions you can drop into &lt;code&gt;AGENTS.md&lt;/code&gt; or &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm hints
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you want every project to tell its coding agent how to use the local &lt;code&gt;akm&lt;/code&gt; installation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm completions&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Generate or install shell completion.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm completions &lt;span class="nt"&gt;--install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you use &lt;code&gt;akm&lt;/code&gt; daily and want tab completion for commands and flags.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;akm upgrade&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Upgrade the &lt;code&gt;akm&lt;/code&gt; binary itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm upgrade &lt;span class="nt"&gt;--check&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real-world use: you installed the standalone binary and want to see whether a newer release is available.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. The Commands People Use Most
&lt;/h2&gt;

&lt;p&gt;In practice, most teams live in a much smaller subset of the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm setup
akm add ...
akm index
akm curate &lt;span class="s2"&gt;"..."&lt;/span&gt;
akm show &amp;lt;ref&amp;gt;
akm remember &lt;span class="s2"&gt;"..."&lt;/span&gt;
akm feedback &amp;lt;ref&amp;gt; &lt;span class="nt"&gt;--positive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your use case grows, the rest of the command surface is there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;workflow&lt;/code&gt; when procedures need state&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wiki&lt;/code&gt; when local knowledge needs structure&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vault&lt;/code&gt; when local operational context includes secrets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;registry&lt;/code&gt; when discovery goes beyond your local stash&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;feedback&lt;/code&gt; / &lt;code&gt;history&lt;/code&gt; / &lt;code&gt;events&lt;/code&gt; / &lt;code&gt;reflect&lt;/code&gt; / &lt;code&gt;propose&lt;/code&gt; / &lt;code&gt;proposal&lt;/code&gt; / &lt;code&gt;distill&lt;/code&gt; when you want a real improvement loop&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Simple End-to-End Example
&lt;/h2&gt;

&lt;p&gt;Let's say your team is onboarding a new service.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;akm add github:your-org/platform-stash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;akm add ./docs/runbooks&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;akm index&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Start with &lt;code&gt;akm curate "onboard a new service"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Open the best match with &lt;code&gt;akm show workflow:service-onboarding&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check required environment keys with &lt;code&gt;akm show vault:staging&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add the final onboarding notes to the team wiki with &lt;code&gt;akm wiki stash onboarding ./notes/service-onboarding.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Capture a new lesson with &lt;code&gt;akm remember "Service onboarding requires DNS approval from ops" --tag ops&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Record whether the workflow helped with &lt;code&gt;akm feedback workflow:service-onboarding --positive&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If the workflow was weak, run &lt;code&gt;akm reflect workflow:service-onboarding --task "improve this after the latest run"&lt;/code&gt; or &lt;code&gt;akm distill workflow:service-onboarding&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's &lt;code&gt;akm&lt;/code&gt; in a nutshell: connect sources, index them, find what matters, load only what you need, and keep the library getting better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaway
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;akm&lt;/code&gt; is not trying to replace your coding assistant. It's the layer that makes your assistant's skills, docs, procedures, and institutional memory manageable at scale.&lt;/p&gt;

&lt;p&gt;If you want the one-sentence version:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;akm&lt;/code&gt; is the command line system that helps agents discover, load, share, improve, and safely reuse the capabilities they need to do real work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And if you're wondering where to start, start here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm setup
akm add ~/.claude/skills
akm add github:your-org/team-agent-toolkit
akm index
akm curate &lt;span class="s2"&gt;"code review"&lt;/span&gt;
akm show skill:code-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gets you from "I installed it" to "my agent can actually use it" in a few minutes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>productivity</category>
    </item>
    <item>
      <title>akm 0.7.0: Proposal Queue, Reflection Commands, Lessons, and akm-bench</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 05 May 2026 02:20:48 +0000</pubDate>
      <link>https://forem.com/itlackey/akm-070-proposal-queue-reflection-commands-lessons-and-akm-bench-4lbl</link>
      <guid>https://forem.com/itlackey/akm-070-proposal-queue-reflection-commands-lessons-and-akm-bench-4lbl</guid>
      <description>&lt;p&gt;akm 0.7.0 is out. This is the last pre-1.0 ship in the v1 cycle. The headline features are a durable proposal queue that routes all agent-suggested changes through a single reviewable path, three new CLI surfaces (&lt;code&gt;reflect&lt;/code&gt;, &lt;code&gt;propose&lt;/code&gt;, &lt;code&gt;distill&lt;/code&gt;) that write into that queue, a &lt;code&gt;lesson&lt;/code&gt; asset type for synthesized knowledge, per-call-site LLM feature gates that are all off by default, and a paired-run benchmarking framework (&lt;code&gt;akm-bench&lt;/code&gt;) for measuring whether your stash actually improves agent outcomes. A batch of security, UX, and hygiene hardening rounds out the release.&lt;/p&gt;

&lt;p&gt;If you are on 0.6.x, the v1 migration guide covers the per-surface delta. The upgrade is opt-in — everything new requires explicit configuration or a new command invocation.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proposal queue&lt;/strong&gt; (&lt;code&gt;akm proposal list/show/diff/accept/reject&lt;/code&gt;) — all agent-generated changes flow through a durable queue before touching your stash.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm reflect&lt;/code&gt;, &lt;code&gt;akm propose&lt;/code&gt;, &lt;code&gt;akm distill&lt;/code&gt;&lt;/strong&gt; — three new commands that produce proposals without mutating live stash content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;lesson&lt;/code&gt; asset type&lt;/strong&gt; — first-class synthesized knowledge, produced by &lt;code&gt;akm distill&lt;/code&gt; and promoted via &lt;code&gt;akm proposal accept&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;llm.features.*&lt;/code&gt; map&lt;/strong&gt; — seven opt-in gates (all &lt;code&gt;false&lt;/code&gt; by default) for bounded in-tree LLM call sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;quality: "proposed"&lt;/code&gt;&lt;/strong&gt; — proposed assets are excluded from default search; surface them via &lt;code&gt;--include-proposed&lt;/code&gt; or &lt;code&gt;akm proposal *&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm-bench&lt;/code&gt; v1&lt;/strong&gt; — paired noakm/akm runs, per-ref attribution, delta reporting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security hardening&lt;/strong&gt; — git message sanitization, bench env isolation, LLM body redaction, npm tarball host validation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Proposal queue (&lt;code&gt;akm proposal *&lt;/code&gt;)
&lt;/h2&gt;

&lt;p&gt;The fundamental problem with agent-generated suggestions is trust: you want to capture what the agent learned without blindly writing unreviewed content into your stash. The proposal queue solves this by separating generation from promotion.&lt;/p&gt;

&lt;p&gt;All proposal-producing commands write to a durable queue that lives outside the asset tree. Unaccepted drafts never appear in search results or get committed. When you're ready to accept a proposal, &lt;code&gt;akm proposal accept&lt;/code&gt; runs full validation and then routes the write through the same &lt;code&gt;writeAssetToSource()&lt;/code&gt; path used by &lt;code&gt;akm remember&lt;/code&gt; and &lt;code&gt;akm import&lt;/code&gt; — no special handling, no bypass.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm proposal list                       &lt;span class="c"&gt;# list pending proposals&lt;/span&gt;
akm proposal show &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;                  &lt;span class="c"&gt;# render one proposal&lt;/span&gt;
akm proposal diff &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;                  &lt;span class="c"&gt;# diff vs. the live ref&lt;/span&gt;
akm proposal accept &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;                &lt;span class="c"&gt;# validate, then promote to stash&lt;/span&gt;
akm proposal reject &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;--reason&lt;/span&gt; &lt;span class="s2"&gt;"…"&lt;/span&gt;  &lt;span class="c"&gt;# archive with reason&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Multiple proposals for the same ref coexist without filesystem collisions. Auto-accept can be enabled per-source via &lt;code&gt;autoAcceptProposals: true&lt;/code&gt; in your stash config (requires a writable source, defaults off).&lt;/p&gt;

&lt;h2&gt;
  
  
  Three new commands: &lt;code&gt;reflect&lt;/code&gt;, &lt;code&gt;propose&lt;/code&gt;, &lt;code&gt;distill&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;These three commands are the primary way to generate proposals.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm reflect &lt;span class="o"&gt;[&lt;/span&gt;ref] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--task&lt;/span&gt; ...]        &lt;span class="c"&gt;# reflect on an asset and propose improvements&lt;/span&gt;
akm propose &amp;lt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &amp;lt;name&amp;gt; &lt;span class="nt"&gt;--task&lt;/span&gt; &lt;span class="s2"&gt;"…"&lt;/span&gt;  &lt;span class="c"&gt;# generate a new asset as a proposal&lt;/span&gt;
akm distill &amp;lt;ref&amp;gt;                     &lt;span class="c"&gt;# synthesize a lesson from an asset&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;reflect&lt;/code&gt; and &lt;code&gt;propose&lt;/code&gt; shell out to your configured agent CLI and write only to the proposal queue — they never mutate live stash content. &lt;code&gt;distill&lt;/code&gt; is a bounded in-tree LLM call, gated behind &lt;code&gt;llm.features.feedback_distillation&lt;/code&gt;, that produces a &lt;code&gt;lesson&lt;/code&gt;-type proposal from an existing asset.&lt;/p&gt;

&lt;p&gt;All three emit usage events so you can track which workflows you're actually using.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;lesson&lt;/code&gt; asset type
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;lesson&lt;/code&gt; is a new first-class asset type designed for synthesized knowledge — the kind your agent derives from experience rather than imports from a source. Lessons are stored under &lt;code&gt;lessons/&amp;lt;name&amp;gt;.md&lt;/code&gt; in your working stash, parallel to &lt;code&gt;memories/&lt;/code&gt;. Required frontmatter: &lt;code&gt;description&lt;/code&gt; and &lt;code&gt;when_to_use&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The canonical workflow: &lt;code&gt;akm distill &amp;lt;ref&amp;gt;&lt;/code&gt; produces a lesson proposal → &lt;code&gt;akm proposal list&lt;/code&gt; shows it → &lt;code&gt;akm proposal accept &amp;lt;id&amp;gt;&lt;/code&gt; promotes it to your stash. Direct authoring via &lt;code&gt;akm import&lt;/code&gt; or &lt;code&gt;akm remember&lt;/code&gt;-style flows is also supported if you want to write lessons manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;llm.features.*&lt;/code&gt; — opt-in LLM gates
&lt;/h2&gt;

&lt;p&gt;Every bounded in-tree LLM call site is now gated behind exactly one feature flag. All defaults are &lt;code&gt;false&lt;/code&gt;, so enabling the schema has no effect until you opt in. Seven flags ship in 0.7.0:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;What it enables&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;curate_rerank&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;LLM rerank in &lt;code&gt;akm curate&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tag_dedup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;LLM tag dedup during indexer enrichment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;memory_consolidation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;akm remember --enrich&lt;/code&gt; consolidation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;feedback_distillation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;akm distill &amp;lt;ref&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;embedding_fallback_score&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scorer fallback when embeddings unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;memory_inference&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Indexer split of pending memories into atomic facts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;graph_extraction&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Indexer entity/relation extraction → &lt;code&gt;graph.json&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Turn on what you want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm config &lt;span class="nb"&gt;set &lt;/span&gt;llm.features.feedback_distillation &lt;span class="nb"&gt;true
&lt;/span&gt;akm config &lt;span class="nb"&gt;set &lt;/span&gt;llm.features.memory_consolidation &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every gated call site uses the &lt;code&gt;tryLlmFeature()&lt;/code&gt; wrapper from &lt;code&gt;src/llm/feature-gate.ts&lt;/code&gt;, which guarantees: disabled → fallback returned without ever calling the LLM; throw → error swallowed, fallback returned; timeout → 30-second hard limit, fallback returned.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;quality: "proposed"&lt;/code&gt; and &lt;code&gt;--include-proposed&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SearchHit.quality&lt;/code&gt; now has three well-known values: &lt;code&gt;"generated"&lt;/code&gt;, &lt;code&gt;"curated"&lt;/code&gt;, and &lt;code&gt;"proposed"&lt;/code&gt;. The first two appear in default search. Proposed assets are &lt;strong&gt;excluded by default&lt;/strong&gt; — they only surface via &lt;code&gt;akm search ... --include-proposed&lt;/code&gt; or via the &lt;code&gt;akm proposal *&lt;/code&gt; commands. Unknown quality values parse-warn-include so plugin authors can extend the set without breaking the indexer.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;akm-bench&lt;/code&gt; v1
&lt;/h2&gt;

&lt;p&gt;Bench grows from a smoke test into a paired-utility framework:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Track A — paired noakm/akm runs.&lt;/strong&gt; For each task, bench runs your agent CLI twice (without and with akm available), captures per-tool-call utility, and emits a comparable score pair.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track B — registry attribution.&lt;/strong&gt; Utility deltas are mapped back to specific &lt;code&gt;[origin//]type:name&lt;/code&gt; refs so you can see which assets in your stash actually contributed to the improvement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm-bench compare&lt;/code&gt;&lt;/strong&gt; — aggregates paired runs into a delta report.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm-bench attribute&lt;/code&gt;&lt;/strong&gt; — surfaces the per-ref attribution report.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm-bench compare results/noakm results/akm
akm-bench attribute results/akm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The technical reference is at &lt;a href="//../technical/benchmark.md"&gt;&lt;code&gt;docs/technical/benchmark.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security hardening (PR #275)
&lt;/h2&gt;

&lt;p&gt;Five security, UX, and hygiene issues landed together in the pre-prod hardening batch:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#270 — git message sanitization.&lt;/strong&gt; Commit messages and remote URLs written by akm are sanitized to prevent shell-substitution and control-character injection through user-supplied content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#271 — bench env isolation.&lt;/strong&gt; Each agent invocation in &lt;code&gt;akm-bench&lt;/code&gt; runs in a scrubbed environment so host secrets don't leak into bench transcripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#272 — LLM body redact + npm tarball host validation.&lt;/strong&gt; Outbound LLM request/response bodies are redacted in error reporting before surfacing to stderr. &lt;code&gt;akm add npm:…&lt;/code&gt; now validates the tarball download host against your configured npm registry instead of blindly following arbitrary &lt;code&gt;dist.tarball&lt;/code&gt; URLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UX:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#273 — workflow noise gate, stashes deprecation warn, setup &lt;code&gt;--help&lt;/code&gt;.&lt;/strong&gt; &lt;code&gt;akm workflow next/complete/status&lt;/code&gt; no longer print spurious progress noise on quiet runs. Configs using the legacy &lt;code&gt;stashes[]&lt;/code&gt; key now emit a single deprecation warning per process (was: per call site). &lt;code&gt;akm setup --help&lt;/code&gt; renders the full help block.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hygiene:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#274 — tsconfig + HF pin + shapes throw.&lt;/strong&gt; &lt;code&gt;tsconfig.json&lt;/code&gt; now covers &lt;code&gt;tests/&lt;/code&gt; so &lt;code&gt;bunx tsc --noEmit&lt;/code&gt; catches test-file errors. The HF embeddings model is pinned to a specific revision. The output-shape registry now throws on a missing shape rather than silently falling back to &lt;code&gt;JSON.stringify&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#276 — bench tmp redirect.&lt;/strong&gt; &lt;code&gt;akm-bench&lt;/code&gt; no longer writes scratch state under &lt;code&gt;/tmp&lt;/code&gt;; everything lands under &lt;code&gt;~/.cache/akm/bench/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; akm-cli@0.7.0
&lt;span class="c"&gt;# or&lt;/span&gt;
bun &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; akm-cli@0.7.0
&lt;span class="c"&gt;# or from an existing install&lt;/span&gt;
akm upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Verify:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm info &lt;span class="nt"&gt;--format&lt;/span&gt; text     &lt;span class="c"&gt;# version 0.7.x&lt;/span&gt;
akm proposal list          &lt;span class="c"&gt;# queue starts empty — that's expected&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Try the new surfaces:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm setup                                            &lt;span class="c"&gt;# detects installed agent CLIs&lt;/span&gt;
akm config &lt;span class="nb"&gt;set &lt;/span&gt;llm.features.feedback_distillation &lt;span class="nb"&gt;true
&lt;/span&gt;akm distill memory:my-debugging-notes               &lt;span class="c"&gt;# produces a lesson proposal&lt;/span&gt;
akm proposal list
akm proposal accept &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No manual migration is required for users on 0.6.x with no &lt;code&gt;agent&lt;/code&gt; or &lt;code&gt;llm.features&lt;/code&gt; blocks configured. Everything new is opt-in.&lt;/p&gt;

&lt;p&gt;Full details in the &lt;a href="//../migration/v1.md"&gt;v1 migration guide&lt;/a&gt; and the &lt;a href="//../migration/release-notes/0.7.0.md"&gt;0.7.0 release notes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Full changelog at &lt;a href="https://github.com/itlackey/akm/blob/main/.github/CHANGELOG.md" rel="noopener noreferrer"&gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>release</category>
    </item>
    <item>
      <title>Building Agent Knowledge Bases That Actually Scale</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 05 May 2026 02:19:53 +0000</pubDate>
      <link>https://forem.com/itlackey/building-agent-knowledge-bases-that-actually-scale-23pb</link>
      <guid>https://forem.com/itlackey/building-agent-knowledge-bases-that-actually-scale-23pb</guid>
      <description>&lt;p&gt;This is part eight in a series about managing the growing pile of skills, scripts, and context that AI coding agents depend on. &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;Part one&lt;/a&gt; introduced progressive disclosure. &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-bpo"&gt;Part two&lt;/a&gt; unified your local assets across platforms. &lt;a href="https://dev.to/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends"&gt;Part three&lt;/a&gt; added persistent memory. Previous parts addressed teams, distributed stashes, and community knowledge.&lt;/p&gt;

&lt;p&gt;This one is about a different problem: knowledge accumulation.&lt;/p&gt;

&lt;p&gt;You start a new research area — say, LLM inference optimization. You read papers. You take notes. You save PDFs. Your agent writes summaries, discovers connections, asks follow-up questions that lead to more notes. Six weeks later you have a pile of markdown files, half-digested papers in a downloads folder, and a memory that says "we covered KV cache quantization somewhere." You search for it. You get three files with different partial takes on the same topic. None of them have the answer you need.&lt;/p&gt;

&lt;p&gt;This isn't a storage problem. You have all the information. It's a structural problem — and that's what akm's multi-wiki support is built to fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Karpathy's LLM Wiki Pattern
&lt;/h2&gt;

&lt;p&gt;In a GitHub gist, Andrej Karpathy described a pattern for maintaining a markdown knowledge base that a human and LLM build and maintain together. The core idea is deceptively simple: a structured directory of markdown pages, with an agent responsible for synthesizing incoming information into those pages over time.&lt;/p&gt;

&lt;p&gt;The insight is that agents are genuinely good at certain things that humans find tedious. Summarizing a 40-page paper into a two-paragraph page entry. Finding the connection between a new paper and something already in the knowledge base. Keeping a log of what was added and why. Updating an existing page when new information contradicts or extends it.&lt;/p&gt;

&lt;p&gt;What agents are not good at: maintaining invariants. An agent won't reliably enforce slug uniqueness. It won't regenerate an index consistently. It will sometimes overwrite a source file you meant to keep immutable. It loses track of what's been ingested when sessions end.&lt;/p&gt;

&lt;p&gt;So you need a division of labor. The agent does the synthesis. The tooling enforces the invariants. That's the gap akm's wiki support fills.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Knowledge That Accumulates and Gets Lost
&lt;/h2&gt;

&lt;p&gt;Most developers hit this in one of two ways.&lt;/p&gt;

&lt;p&gt;The first way: you import a file as a knowledge asset (&lt;code&gt;akm import ./paper.md&lt;/code&gt;) and your agent reads it directly. That works fine for one or two documents. At ten documents, the agent is loading full text into every relevant session. At thirty documents, you're spending tokens on context you don't need, and the agent is trying to mentally synthesize relationships across thirty separate files per session. Nothing is connected. Nothing is indexed.&lt;/p&gt;

&lt;p&gt;The second way: you ask your agent to "take notes" in a notes.md file. The file grows. It becomes a wall of text with no structure. Searching it is grep. Updating it means the agent has to read the whole thing before writing anything. After a few sessions the agent starts ignoring sections it wrote two weeks ago because they're below the fold.&lt;/p&gt;

&lt;p&gt;Both patterns fail in the same way: there's no structural home for the knowledge. No schema that says what a page is. No index that makes things findable. No log that tracks what happened. No separation between raw sources and synthesized pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  How akm's Multi-Wiki Works
&lt;/h2&gt;

&lt;p&gt;A wiki in akm is a named subdirectory under &lt;code&gt;~/akm/wikis/&lt;/code&gt;. Each wiki has a fixed structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/akm/wikis/
  research/
    schema.md       # per-wiki rulebook: page kinds, voice, contradiction policy
    index.md        # catalog of all pages — regenerated by akm index
    log.md          # append-only activity log
    raw/            # immutable ingested sources (never edit these)
    attention.md    # a synthesized page
    transformers/
      architecture.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You create a wiki with one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki create research
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That scaffolds the directory, stubs out &lt;code&gt;schema.md&lt;/code&gt; with sensible defaults, creates empty &lt;code&gt;index.md&lt;/code&gt; and &lt;code&gt;log.md&lt;/code&gt;, and makes the &lt;code&gt;raw/&lt;/code&gt; directory. You're not starting from a blank directory — you're starting from a structural contract.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;schema.md&lt;/code&gt; file is important. It's where you define the rules for this particular wiki: what page kinds are allowed, what the voice should be, how contradictions are handled, what the minimum viable page looks like. You edit it once when you create the wiki, and the agent reads it at the start of every ingest session. It's the wiki's constitution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Walking Through a Real Workflow
&lt;/h2&gt;

&lt;p&gt;Say you're building a research wiki on transformer architectures. You have a paper PDF, some notes from a talk, and a few bookmarked articles.&lt;/p&gt;

&lt;p&gt;Start by bringing in the raw sources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki stash research ./attention-paper.pdf &lt;span class="nt"&gt;--as&lt;/span&gt; attention
akm wiki stash research ./transformer-scaling-notes.md &lt;span class="nt"&gt;--as&lt;/span&gt; scaling-notes
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"# Key quote from Sutton talk"&lt;/span&gt; | akm wiki stash research -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;stash&lt;/code&gt; command copies each source into &lt;code&gt;raw/&lt;/code&gt; with a unique slug. If you try to stash the same slug twice, it errors rather than overwriting. That's one of those invariants the agent can't reliably maintain — akm handles it.&lt;/p&gt;

&lt;p&gt;Now ask your agent to start the ingest workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki ingest research
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prints a step-by-step recipe for what the agent should do next. Something like: read &lt;code&gt;schema.md&lt;/code&gt; to understand the page structure, check &lt;code&gt;index.md&lt;/code&gt; to see what pages already exist, read each unprocessed file in &lt;code&gt;raw/&lt;/code&gt;, synthesize content into pages using Write or Edit, update &lt;code&gt;index.md&lt;/code&gt;, append a summary to &lt;code&gt;log.md&lt;/code&gt;. The command itself writes nothing — it just prints the workflow. Execution is entirely the agent's job, using its native file tools.&lt;/p&gt;

&lt;p&gt;After the agent runs the ingest workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki pages research
&lt;span class="c"&gt;# → research/attention.md   "Self-attention mechanism and complexity analysis"&lt;/span&gt;
&lt;span class="c"&gt;# → research/transformers/architecture.md   "Encoder-decoder structure, residual connections"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, when you want to check the health of the wiki:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki lint research
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lint runs deterministic structural checks: orphan pages (not in index.md), broken xrefs in frontmatter, missing descriptions, raw files that appear uncited in any page, and whether the index is stale relative to the directory contents. These are checks that require counting and comparing file state — exactly the kind of thing agents do inconsistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "akm Surfaces, the Agent Writes" Principle
&lt;/h2&gt;

&lt;p&gt;This division of labor is worth making explicit, because it determines what belongs in akm and what doesn't.&lt;/p&gt;

&lt;p&gt;akm handles operations that require invariants an agent can't reliably enforce across sessions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scaffolding (ensures required files exist with the right names)&lt;/li&gt;
&lt;li&gt;Source import (unique slugs, never overwrites, immutable raw/)&lt;/li&gt;
&lt;li&gt;Lint (deterministic structural checks against file system state)&lt;/li&gt;
&lt;li&gt;Index regeneration (consistent format, triggered by normal indexing)&lt;/li&gt;
&lt;li&gt;Workflow printing (a recipe the agent can follow without reinventing it)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent handles everything that requires judgment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing and updating pages&lt;/li&gt;
&lt;li&gt;Synthesizing connections between sources&lt;/li&gt;
&lt;li&gt;Deciding what a page should say and how to structure it&lt;/li&gt;
&lt;li&gt;Appending meaningful log entries&lt;/li&gt;
&lt;li&gt;Adding xrefs in frontmatter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason this split matters: agents are good at synthesis and bad at reliability. If you ask an agent to "update the index," it will sometimes do it correctly, sometimes produce a subtly wrong format, and sometimes forget. If you ask it to write a page on attention mechanisms from three source documents, it will do that well every time. The tool enforces the boring, brittle parts so the agent can focus on what it's actually good at.&lt;/p&gt;

&lt;p&gt;There are no unconditional LLM calls inside akm for wiki operations. The wiki commands are pure file operations, SQLite, and structural analysis — fast, deterministic, and usable offline. (akm does ship bounded opt-in LLM calls for other workflows, like &lt;code&gt;akm distill&lt;/code&gt; and &lt;code&gt;akm curate&lt;/code&gt;, gated behind &lt;code&gt;llm.features.*&lt;/code&gt; flags that are all off by default. But the wiki tooling itself never touches an LLM.)&lt;/p&gt;

&lt;h2&gt;
  
  
  akm wiki search vs akm search --type wiki
&lt;/h2&gt;

&lt;p&gt;Once you have a few wikis, you'll use two different search paths depending on what you need.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;akm wiki search research "attention mechanism"&lt;/code&gt; runs a scoped search within the &lt;code&gt;research&lt;/code&gt; wiki only. Use this when you know which wiki holds the answer and you want precision — no noise from other wikis or other asset types. The results are page refs with descriptions, scoped to &lt;code&gt;research/&lt;/code&gt;. Raw sources under &lt;code&gt;raw/&lt;/code&gt; plus the wiki root infrastructure files &lt;code&gt;schema.md&lt;/code&gt;, &lt;code&gt;index.md&lt;/code&gt;, and &lt;code&gt;log.md&lt;/code&gt; are excluded from the search index and never appear as search hits.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;akm search --type wiki "attention mechanism"&lt;/code&gt; runs the full stash-wide search across all wiki pages. Use this when you're not sure which wiki something lives in, or when you want to see if anything from multiple wikis is relevant to a task before loading anything.&lt;/p&gt;

&lt;p&gt;In practice: scoped search during active work in a specific domain, wide search when starting a new session or doing cross-domain research. Wiki pages participate in the same FTS5 scoring pipeline as every other asset type, so &lt;code&gt;--type wiki&lt;/code&gt; is not a second-class citizen — a highly relevant wiki page will outrank a mediocre skill in a general search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Example: Building a Research Wiki
&lt;/h2&gt;

&lt;p&gt;Here's the complete workflow for setting up and using a research wiki from scratch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial setup:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki create research
&lt;span class="c"&gt;# Edit wikis/research/schema.md to define your page kinds&lt;/span&gt;
&lt;span class="c"&gt;# (technical-summary, comparison, open-question, etc.)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Bring in sources as you find them:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki stash research ./papers/attention-is-all-you-need.pdf &lt;span class="nt"&gt;--as&lt;/span&gt; attention-2017
akm wiki stash research ./papers/flash-attention-v2.pdf &lt;span class="nt"&gt;--as&lt;/span&gt; flash-attention-v2
akm wiki stash research ./notes/scaling-laws-talk.md &lt;span class="nt"&gt;--as&lt;/span&gt; scaling-laws-notes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Run ingest when you're ready to synthesize:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki ingest research
&lt;span class="c"&gt;# Agent reads the recipe, reads raw/ files, writes pages, updates index, logs activity&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check what exists:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki pages research
akm wiki show research
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Search when working on a related task:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki search research &lt;span class="s2"&gt;"KV cache memory"&lt;/span&gt;
&lt;span class="c"&gt;# Returns: research/attention.md, research/flash-attention/optimization.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Lint before a long agent session to catch structural drift:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki lint research
&lt;span class="c"&gt;# Orphans: none&lt;/span&gt;
&lt;span class="c"&gt;# Broken xrefs: research/flash-attention/optimization.md → research/kv-cache.md (missing)&lt;/span&gt;
&lt;span class="c"&gt;# Stale index: yes (run akm index)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fix the stale index:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm index
&lt;span class="c"&gt;# Rebuilds SQLite search index, regenerates wikis/research/index.md as a side effect&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At the end of a few weeks, you have a structured, searchable knowledge base. Your agent can load specific pages by ref instead of reading all thirty raw sources every session. You can run lint any time to catch drift. The log tells you what was synthesized and when. The raw sources are still there if you ever need to re-derive something from primary material.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Isn't
&lt;/h2&gt;

&lt;p&gt;Multi-wiki is not a document management system. If you want to store and retrieve original documents, &lt;code&gt;akm import&lt;/code&gt; and the &lt;code&gt;knowledge&lt;/code&gt; type already do that.&lt;/p&gt;

&lt;p&gt;It's not a notes app. Single notes go in memories. Reference material goes in knowledge. Wikis are specifically for synthesized, structured knowledge that grows over time through an active ingest process.&lt;/p&gt;

&lt;p&gt;It's also not autonomous. akm prints the ingest recipe; your agent runs it. If you want fully automated ingestion, you'd wire up a workflow that calls &lt;code&gt;akm wiki ingest&lt;/code&gt;, then asks the agent to execute the printed steps. The wiki tooling is the substrate, not the automation layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Multi-wiki has been available since akm 0.5.0. If you're already using akm, upgrade and try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm wiki create research
akm wiki list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://github.com/itlackey/akm/blob/main/docs/getting-started.md" rel="noopener noreferrer"&gt;Getting Started guide&lt;/a&gt; covers initial setup if you're new to akm. The wiki commands are available immediately once you have a stash configured.&lt;/p&gt;

&lt;p&gt;If you're working in a domain where knowledge accumulates — research, security analysis, architecture decisions, competitive analysis — give it a run and see if the structure helps. The repo is at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. Questions and feedback in the issues.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>knowledge</category>
    </item>
    <item>
      <title>Agents That Remember Where They Were</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 05 May 2026 02:19:50 +0000</pubDate>
      <link>https://forem.com/itlackey/agents-that-remember-where-they-were-1koe</link>
      <guid>https://forem.com/itlackey/agents-that-remember-where-they-were-1koe</guid>
      <description>&lt;p&gt;This is part nine in a series about managing the growing pile of skills, scripts, and context that AI coding agents depend on. &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;Part one&lt;/a&gt; introduced progressive disclosure. &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-bpo"&gt;Part two&lt;/a&gt; unified your local assets across platforms. &lt;a href="https://dev.to/itlackey"&gt;Part seven&lt;/a&gt; covered shared team skills via Git repos.&lt;/p&gt;

&lt;p&gt;Ask an agent to ship a release and it will start confidently. It runs the build, opens the changelog, checks the branch. Then something interrupts the session — you close the terminal, the context window fills up, you need to switch tasks. When you come back, the agent has no idea where it left off. You either restart from scratch or spend time reconstructing what happened.&lt;/p&gt;

&lt;p&gt;This is the central problem with agents and multi-step work. They're good at individual tasks. They're not naturally good at procedures — sequences of steps that span time, accumulate state, and need to be resumable when interrupted.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;akm&lt;/code&gt; ships three features that address this directly: workflow assets for stored, resumable procedures; vault assets for secret-aware environment config; and a writable git stash that keeps your skill collection in sync across machines. This post explains what each one does and how they fit together.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Tasks Versus Procedures
&lt;/h2&gt;

&lt;p&gt;A task is "write this function." A procedure is "ship this release." Tasks have a beginning and end that fit inside a single context window. Procedures have steps, dependencies between steps, and state that persists across sessions.&lt;/p&gt;

&lt;p&gt;When agents handle procedures today, the state lives only in the conversation. That's fine for a five-minute task. It breaks down for anything that takes an hour, involves multiple sessions, or needs to be audited later. If something fails at step four of seven, there's no standard way to resume at step five without replaying the whole context.&lt;/p&gt;

&lt;p&gt;The workaround most developers reach for is a checklist in a markdown file. The agent checks off items as it goes. This works, but it's manual, fragile, and the state isn't queryable. You can't ask "which deployments are currently in-progress" if the state is scattered across markdown checkboxes in different files.&lt;/p&gt;

&lt;p&gt;Workflow assets are the structured version of that checklist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow Assets: Stored Procedures Your Agent Can Step Through
&lt;/h2&gt;

&lt;p&gt;Workflows live in &lt;code&gt;workflows/&lt;/code&gt; in your stash. Each workflow is a markdown file with frontmatter declaring the procedure's parameters and a standard step format. You write the workflow once; the agent follows it on every run.&lt;/p&gt;

&lt;p&gt;Here's what a release workflow looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Ship a production release&lt;/span&gt;
&lt;span class="na"&gt;params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;release&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;(e.g.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.2.3)"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="gh"&gt;# Workflow: Ship Release&lt;/span&gt;

&lt;span class="gu"&gt;## Step: Validate inputs&lt;/span&gt;
Step ID: validate
&lt;span class="gu"&gt;### Instructions&lt;/span&gt;
Check that version follows semver and that the release branch exists.
&lt;span class="gu"&gt;### Completion Criteria&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Version matches x.y.z
&lt;span class="p"&gt;-&lt;/span&gt; Branch release/{{ version }} exists

&lt;span class="gu"&gt;## Step: Build&lt;/span&gt;
Step ID: build
&lt;span class="gu"&gt;### Instructions&lt;/span&gt;
Run &lt;span class="sb"&gt;`bun run build`&lt;/span&gt; and verify dist/ was generated.

&lt;span class="gu"&gt;## Step: Deploy to staging&lt;/span&gt;
Step ID: staging
&lt;span class="gu"&gt;### Instructions&lt;/span&gt;
Run &lt;span class="sb"&gt;`./scripts/deploy.sh staging`&lt;/span&gt; and verify the health check passes.

&lt;span class="gu"&gt;## Step: Deploy to production&lt;/span&gt;
Step ID: production
&lt;span class="gu"&gt;### Instructions&lt;/span&gt;
Run &lt;span class="sb"&gt;`./scripts/deploy.sh production`&lt;/span&gt; after staging health check is green.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow defines the procedure. To run it, the agent creates a &lt;em&gt;run&lt;/em&gt; — an instance of that procedure with a specific set of params:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow start workflow:ship-release &lt;span class="nt"&gt;--params&lt;/span&gt; &lt;span class="s1"&gt;'{"version":"1.2.3"}'&lt;/span&gt;
&lt;span class="c"&gt;# Returns a run ID: run-abc123&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the procedure has state. The agent calls &lt;code&gt;akm workflow next&lt;/code&gt; to get the current actionable step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow next workflow:ship-release
&lt;span class="c"&gt;# Returns: Step "validate" — Check that version follows semver...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the agent completes a step, it marks it done with notes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow &lt;span class="nb"&gt;complete &lt;/span&gt;run-abc123 &lt;span class="nt"&gt;--step&lt;/span&gt; validate &lt;span class="nt"&gt;--state&lt;/span&gt; completed &lt;span class="nt"&gt;--notes&lt;/span&gt; &lt;span class="s2"&gt;"Version 1.2.3, branch release/1.2.3 confirmed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--state&lt;/code&gt; defaults to &lt;code&gt;completed&lt;/code&gt; when omitted, so the &lt;code&gt;--state completed&lt;/code&gt; above is redundant but explicit.&lt;/p&gt;

&lt;p&gt;And the next call to &lt;code&gt;akm workflow next&lt;/code&gt; returns the following step. The run persists independently of the conversation. If the session ends, a new agent picks up exactly where the previous one left off:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow next workflow:ship-release
&lt;span class="c"&gt;# Returns: Step "build" — still in progress from the interrupted session&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to see the full state of a run?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow status run-abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;workflow status&lt;/code&gt; also accepts a workflow ref directly, resolving to the most-recently-updated run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow status workflow:ship-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ref-based workflow commands are scoped to the current working context, not all&lt;br&gt;
workflow runs on the machine. In practice akm groups runs by the current&lt;br&gt;
project/worktree/directory, so an active run in one repo or sandbox does not&lt;br&gt;
block a different directory from starting its own run of the same workflow.&lt;/p&gt;

&lt;p&gt;That shows each step with its status and any notes the agent recorded. You can list all active runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow list &lt;span class="nt"&gt;--active&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The procedure is now auditable. You know which step failed, when, and what the agent noted. You can hand the run off to a different agent or a different developer. The state is outside the context window where it's durable.&lt;/p&gt;

&lt;p&gt;If you need a starting point, &lt;code&gt;akm workflow template&lt;/code&gt; prints a starter workflow doc you can adapt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resuming blocked or failed runs
&lt;/h3&gt;

&lt;p&gt;Sometimes a run gets blocked — a step requires human input, an external dependency is unavailable, or a tool call fails. When that happens, the run transitions to &lt;code&gt;blocked&lt;/code&gt; or &lt;code&gt;failed&lt;/code&gt;. Use &lt;code&gt;workflow resume&lt;/code&gt; to flip it back to &lt;code&gt;active&lt;/code&gt; without discarding progress:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow resume run-abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Completed runs cannot be resumed. Use &lt;code&gt;workflow list&lt;/code&gt; to find runs by status.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vault Assets: The Agent Knows What It Needs, Not What the Values Are
&lt;/h2&gt;

&lt;p&gt;Procedures that touch production environments need secrets — database URLs, API keys, deploy tokens. Putting those secrets in a skill file or a prompt is an obvious problem. But the agent still needs to know &lt;em&gt;which&lt;/em&gt; secrets a given procedure requires.&lt;/p&gt;

&lt;p&gt;Vault assets solve this. A vault is a &lt;code&gt;.env&lt;/code&gt; file stored in &lt;code&gt;vaults/&lt;/code&gt; in your stash. The design has one rule: values are never surfaced in structured output. The agent can inspect a vault and learn what keys exist. It never sees what those keys are set to.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show vault:production
&lt;span class="c"&gt;# Returns keys/comments only, never values&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is enough for the agent to confirm "yes, the right secrets are configured for this environment" without the secrets appearing anywhere in the conversation or the context window.&lt;/p&gt;

&lt;p&gt;When a script actually needs the values — at runtime, not at planning time — the agent runs the command through &lt;code&gt;vault run&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm vault run vault:production &lt;span class="nt"&gt;--&lt;/span&gt; ./deploy.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The values are loaded into the child process environment. They never pass through the agent's structured output. The agent's conversation log is clean.&lt;/p&gt;

&lt;p&gt;Combined with a workflow, this fits naturally into an environment verification step. The agent calls &lt;code&gt;akm show vault:production&lt;/code&gt; to confirm all required keys are present, marks the step complete, then later calls &lt;code&gt;akm vault run vault:production -- &amp;lt;command&amp;gt;&lt;/code&gt; when a command actually needs the secrets. The workflow knows what's required. The agent confirms it. The command gets what it needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writable Git Stash: Your Skills Sync Like Code
&lt;/h2&gt;

&lt;p&gt;So far in this series, stashes have been read-only: you pull in a team repo or a remote source, and &lt;code&gt;akm&lt;/code&gt; indexes it. In 0.5.0, a stash can be writable.&lt;/p&gt;

&lt;p&gt;When you create a stash with &lt;code&gt;--writable&lt;/code&gt;, &lt;code&gt;akm save&lt;/code&gt; will stage, commit, and push your changes back to the remote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add git@github.com:your-org/skills.git &lt;span class="nt"&gt;--provider&lt;/span&gt; git &lt;span class="nt"&gt;--name&lt;/span&gt; team-skills &lt;span class="nt"&gt;--writable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# After editing or adding an asset&lt;/span&gt;
akm save team-skills &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add deploy workflow"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The behavior depends on the stash configuration:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;What happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Not a git repo&lt;/td&gt;
&lt;td&gt;Skipped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git repo, no remote&lt;/td&gt;
&lt;td&gt;Stage and commit only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git repo, has remote, writable: false&lt;/td&gt;
&lt;td&gt;Stage and commit only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git repo, has remote, writable: true&lt;/td&gt;
&lt;td&gt;Stage, commit, and push&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Your default stash — the one &lt;code&gt;akm init&lt;/code&gt; creates — is auto-initialized as a local git repo. So by default, &lt;code&gt;akm save&lt;/code&gt; gives you a commit history of every change you've made to your skill collection, without requiring a remote. Add a remote and flip &lt;code&gt;writable: true&lt;/code&gt; when you're ready to sync across machines.&lt;/p&gt;

&lt;p&gt;This changes how you think about managing your personal stash. It's not a pile of files in &lt;code&gt;~/.akm&lt;/code&gt;. It's a versioned repository. You can see when you wrote a skill, what it looked like before you changed it, and whether your teammates have made updates since you last pulled.&lt;/p&gt;

&lt;h2&gt;
  
  
  How These Three Features Work Together
&lt;/h2&gt;

&lt;p&gt;Consider a deployment procedure that a team runs regularly. Before 0.5.0, you'd write a deploy skill and hope the agent followed the steps in the right order. With 0.5.0:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Write the workflow once.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow create ship-release
&lt;span class="c"&gt;# Edit workflows/ship-release.md with your team's exact steps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Add a vault with the production secrets.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The vault file lives at &lt;code&gt;vaults/production.env&lt;/code&gt; in your stash. The keys are there; the values are managed separately through whatever secret management you use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Save both to the team stash.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm save team-skills &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add ship-release workflow and production vault"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every developer on the team pulls the update with &lt;code&gt;akm update --all&lt;/code&gt;. Now everyone has the same workflow and the same vault definition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: When it's time to deploy, the agent runs the procedure.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Agent starts a run&lt;/span&gt;
akm workflow start workflow:ship-release &lt;span class="nt"&gt;--params&lt;/span&gt; &lt;span class="s1"&gt;'{"version":"2.0.0"}'&lt;/span&gt;

&lt;span class="c"&gt;# Gets the first step&lt;/span&gt;
akm workflow next workflow:ship-release
&lt;span class="c"&gt;# → "Validate inputs: confirm version and vault keys"&lt;/span&gt;

&lt;span class="c"&gt;# Checks the vault without reading secrets&lt;/span&gt;
akm show vault:production
&lt;span class="c"&gt;# → keys/comments only, never values&lt;/span&gt;

&lt;span class="c"&gt;# Marks the step complete&lt;/span&gt;
akm workflow &lt;span class="nb"&gt;complete &lt;/span&gt;run-xyz &lt;span class="nt"&gt;--step&lt;/span&gt; validate &lt;span class="nt"&gt;--notes&lt;/span&gt; &lt;span class="s2"&gt;"All keys present"&lt;/span&gt;

&lt;span class="c"&gt;# Gets the next step&lt;/span&gt;
akm workflow next workflow:ship-release
&lt;span class="c"&gt;# → "Build: run bun run build..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the session ends at the staging step, a fresh agent picks up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow next workflow:ship-release
&lt;span class="c"&gt;# → "Deploy to staging" — still pending from the previous session&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No context reconstruction. No "where did we leave off?" The procedure state is in the workflow run, not the conversation.&lt;/p&gt;

&lt;p&gt;When the deploy is done, commit any skill or workflow improvements back to the team repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm save team-skills &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Improve staging health check step"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The team gets the improvement on next &lt;code&gt;akm update&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you're on &lt;code&gt;akm&lt;/code&gt; already, upgrade to the latest version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; akm-cli@latest
&lt;span class="c"&gt;# or&lt;/span&gt;
akm upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To try workflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm workflow template
&lt;span class="c"&gt;# Copy the output to workflows/your-first-workflow.md and edit it&lt;/span&gt;
akm workflow create your-first-workflow
akm workflow start workflow:your-first-workflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To add a vault, drop a &lt;code&gt;.env&lt;/code&gt; file in &lt;code&gt;vaults/&lt;/code&gt; in your stash. The format is standard &lt;code&gt;.env&lt;/code&gt; — one &lt;code&gt;KEY=value&lt;/code&gt; per line, comments with &lt;code&gt;#&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To make your default stash writable, add a remote to the git repo in &lt;code&gt;~/.akm/stash&lt;/code&gt; and update your stash config with &lt;code&gt;--writable&lt;/code&gt;. Run &lt;code&gt;akm save -m "Initial commit"&lt;/code&gt; to verify it pushes.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. The &lt;a href="https://github.com/itlackey/akm/blob/main/docs/getting-started.md" rel="noopener noreferrer"&gt;Getting Started guide&lt;/a&gt; covers initial setup if you're coming in new.&lt;/p&gt;

&lt;p&gt;Agents are most useful when they can handle real work end-to-end. Real work usually involves multiple steps, sensitive configuration, and sessions that get interrupted. Workflows, vaults, and a writable stash close those gaps. Give them a try on the next multi-step task you'd normally hand off with a checklist.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>workflows</category>
    </item>
    <item>
      <title>akm 0.6.0: Clean Break to Stash, Quieter CLI, Easier Migration</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 05 May 2026 02:19:46 +0000</pubDate>
      <link>https://forem.com/itlackey/akm-060-clean-break-to-stash-quieter-cli-easier-migration-1m03</link>
      <guid>https://forem.com/itlackey/akm-060-clean-break-to-stash-quieter-cli-easier-migration-1m03</guid>
      <description>&lt;p&gt;akm 0.6.0 is out. This one is deliberately boring: a stabilization release that takes a clean break from pre-v1 terminology so the surface area we carry into v1 is honest. The domain model now has one noun for "a source of content" (stash) and one noun for "a service that helps discover them" (registry). The parallel vocabulary that accreted during earlier experiments — "kit", "source", hand-special-cased provider types — is gone. A handful of additive quality-of-life improvements ship alongside, but the headline story is fewer concepts, not more.&lt;/p&gt;

&lt;p&gt;If you are on 0.5.x, read &lt;a href="//../migration/v0.5-to-v0.6.md"&gt;the v0.5 → v0.6 migration guide&lt;/a&gt; before upgrading. Most projects will work without edits thanks to automatic on-disk migrations; a small number of config fields and CLI flags need explicit updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One domain noun&lt;/strong&gt;: &lt;code&gt;kits&lt;/code&gt; / &lt;code&gt;sources&lt;/code&gt; → &lt;code&gt;stash&lt;/code&gt; everywhere. Wire format, config, CLI help, and docs all use the same word.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema v3&lt;/strong&gt; for the registry index: &lt;code&gt;stashes[]&lt;/code&gt; replaces &lt;code&gt;kits[]&lt;/code&gt;. Pre-0.6.0 indexes are no longer read.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm.lock&lt;/code&gt;&lt;/strong&gt; replaces &lt;code&gt;stash.lock&lt;/code&gt;; auto-copied on first run, no action needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;stashInheritance: "merge" | "replace"&lt;/code&gt;&lt;/strong&gt; replaces the boolean &lt;code&gt;disableGlobalStashes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;primary: true&lt;/code&gt;&lt;/strong&gt; on a stash entry replaces the top-level &lt;code&gt;stashDir&lt;/code&gt; field.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;--detail=agent&lt;/code&gt;&lt;/strong&gt; is the preferred spelling; &lt;code&gt;--for-agent&lt;/code&gt; stays as a deprecated alias.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm enable context-hub&lt;/code&gt; / &lt;code&gt;akm disable context-hub&lt;/code&gt;&lt;/strong&gt; are gone — add context-hub as a regular git stash.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discovery&lt;/strong&gt;: registry indexes only packages/repos tagged &lt;code&gt;akm-stash&lt;/code&gt;. The pre-0.6.0 &lt;code&gt;akm-kit&lt;/code&gt; / &lt;code&gt;agentikit&lt;/code&gt; keywords/topics are not honored as fallbacks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full details — including before/after code for every item — live in the migration guide.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "clean break" means
&lt;/h2&gt;

&lt;p&gt;This is a simplification, not a rebrand. Through the pre-v1 releases, akm accumulated three overlapping nouns for the same concept:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"source" — the config field users saw&lt;/li&gt;
&lt;li&gt;"kit" — the packaging / publishing story&lt;/li&gt;
&lt;li&gt;"stash" — the runtime/storage layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three words for one thing made every doc page ambiguous and every new feature pick a side. 0.6.0 collapses the three into &lt;strong&gt;stash&lt;/strong&gt; at every layer — config, wire format, CLI text, docs, error messages. "Agent Kit Manager" stays as the project tagline and &lt;code&gt;akm-cli&lt;/code&gt; stays as the package name, because those are &lt;em&gt;product&lt;/em&gt; names, not data-model terms. Everything below the product surface is stash.&lt;/p&gt;

&lt;p&gt;The registry wire format follows the same logic. Schema v3 drops &lt;code&gt;kits[]&lt;/code&gt; and parses only &lt;code&gt;stashes[]&lt;/code&gt;. Pre-v1 is the right time to do this: there is no installed base we need to keep parsing legacy wire formats for, and holding onto &lt;code&gt;kits[]&lt;/code&gt; just to be polite would trap the v1 contract in historical cruft.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking changes at a glance
&lt;/h2&gt;

&lt;p&gt;Each bullet below links to its section in the migration guide, which has the exact before/after code or config diff.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#1-stashlock--akmlock"&gt;&lt;code&gt;stash.lock&lt;/code&gt; → &lt;code&gt;akm.lock&lt;/code&gt;&lt;/a&gt; — auto-copied on first run.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#2-installed--stashes--akmlock"&gt;&lt;code&gt;installed[]&lt;/code&gt; → &lt;code&gt;stashes[]&lt;/code&gt; + &lt;code&gt;akm.lock&lt;/code&gt;&lt;/a&gt; — config cleanup happens on next write.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#3-stashdir--primary-true"&gt;&lt;code&gt;stashDir&lt;/code&gt; → &lt;code&gt;primary: true&lt;/code&gt;&lt;/a&gt; — automatic.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#1-replace-disableglobalstashes"&gt;&lt;code&gt;disableGlobalStashes&lt;/code&gt; → &lt;code&gt;stashInheritance&lt;/code&gt;&lt;/a&gt; — &lt;strong&gt;manual&lt;/strong&gt;, one-line config edit.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#2-replace---for-agent-with---detailagent"&gt;&lt;code&gt;--for-agent&lt;/code&gt; → &lt;code&gt;--detail=agent&lt;/code&gt;&lt;/a&gt; — old flag still works as a deprecated alias for one release cycle.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#3-replace-akm-enable-context-hub--akm-disable-context-hub"&gt;&lt;code&gt;akm enable/disable context-hub&lt;/code&gt; removed&lt;/a&gt; — add it as a regular git stash.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#wire-format-change-kits--stashes"&gt;Wire format &lt;code&gt;kits[]&lt;/code&gt; → &lt;code&gt;stashes[]&lt;/code&gt;&lt;/a&gt; — registry publishers must regenerate.&lt;/li&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md#publisher--kit-maker-changes"&gt;Discovery keyword / topic &lt;code&gt;akm-kit&lt;/code&gt; → &lt;code&gt;akm-stash&lt;/code&gt;&lt;/a&gt; — publishers must re-tag.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you consume only the public registry and do not maintain your own, the publisher changes do not apply to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new (low-key)
&lt;/h2&gt;

&lt;p&gt;A few additive improvements rode along with the cleanup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;akm workflow validate &amp;lt;ref|path&amp;gt;&lt;/code&gt;&lt;/strong&gt; — new subcommand for validating a workflow markdown file or ref; lists every error in one pass (without running a full reindex). A workflow debugging tool to surface issues before they bite at run time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory frontmatter on &lt;code&gt;akm remember&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;--tag&lt;/code&gt; (repeatable), &lt;code&gt;--expires 30d&lt;/code&gt;, &lt;code&gt;--source &amp;lt;any-string&amp;gt;&lt;/code&gt;, plus opt-in &lt;code&gt;--auto&lt;/code&gt; (heuristics) and &lt;code&gt;--enrich&lt;/code&gt; (LLM) for deriving tags from the body. Zero-flag &lt;code&gt;akm remember "body"&lt;/code&gt; still writes a flat memory, so existing agent scripts are unchanged. Issue &lt;a href="https://github.com/itlackey/akm/issues/169" rel="noopener noreferrer"&gt;#169&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  akm remember &lt;span class="s2"&gt;"VPN required for staging deploys"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--tag&lt;/span&gt; ops &lt;span class="nt"&gt;--tag&lt;/span&gt; networking &lt;span class="nt"&gt;--expires&lt;/span&gt; 90d &lt;span class="nt"&gt;--source&lt;/span&gt; &lt;span class="s2"&gt;"skill:deploy"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workflow parser accepts intro prose&lt;/strong&gt; — you can now put a short advisory paragraph between &lt;code&gt;# Workflow:&lt;/code&gt; and the first &lt;code&gt;## Step:&lt;/code&gt; without tripping a validation error. Issue &lt;a href="https://github.com/itlackey/akm/issues/158" rel="noopener noreferrer"&gt;#158&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow resume reclassifies blocked steps&lt;/strong&gt; — &lt;code&gt;akm workflow resume &amp;lt;id&amp;gt;&lt;/code&gt; now re-opens the currently-blocked step so you can mark it &lt;code&gt;completed&lt;/code&gt;, &lt;code&gt;failed&lt;/code&gt;, or &lt;code&gt;skipped&lt;/code&gt; after resolving the blocker. Issue &lt;a href="https://github.com/itlackey/akm/issues/156" rel="noopener noreferrer"&gt;#156&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow create works in clean stashes&lt;/strong&gt; — &lt;code&gt;akm workflow create &amp;lt;name&amp;gt;&lt;/code&gt; (and &lt;code&gt;--from &amp;lt;file&amp;gt;&lt;/code&gt;) no longer false-positive on a path escape when any ancestor of the stash is a symlink. Issue &lt;a href="https://github.com/itlackey/akm/issues/157" rel="noopener noreferrer"&gt;#157&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registry search drops empty hit objects&lt;/strong&gt; — providers returning partial records no longer surface as &lt;code&gt;{}&lt;/code&gt; in JSON output; dropped counts appear in &lt;code&gt;warnings&lt;/code&gt; so the upstream bug stays visible. Issue &lt;a href="https://github.com/itlackey/akm/issues/159" rel="noopener noreferrer"&gt;#159&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolated sandbox recipe&lt;/strong&gt; — &lt;a href="//../getting-started.md#isolated-sandbox-workflow"&gt;&lt;code&gt;getting-started.md&lt;/code&gt;&lt;/a&gt; now includes the one-terminal recipe for a throwaway &lt;code&gt;HOME&lt;/code&gt; + &lt;code&gt;XDG_*&lt;/code&gt; + &lt;code&gt;AKM_STASH_DIR&lt;/code&gt; sandbox. Handy for agent testing, CI, and issue reproduction. Issue &lt;a href="https://github.com/itlackey/akm/issues/160" rel="noopener noreferrer"&gt;#160&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these require migration action; they are upgrades-by-default once you install 0.6.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migration
&lt;/h2&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; akm-cli@0.6.0
&lt;span class="c"&gt;# or&lt;/span&gt;
bun &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; akm-cli@0.6.0
&lt;span class="c"&gt;# or from an existing install&lt;/span&gt;
akm upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="//../migration/v0.5-to-v0.6.md"&gt;v0.5 → v0.6 migration guide&lt;/a&gt; — every breaking change with before/after code; publisher checklist if you maintain a registry or an npm/GitHub stash.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm info &lt;span class="nt"&gt;--format&lt;/span&gt; text            &lt;span class="c"&gt;# version 0.6.x, no context-hub provider&lt;/span&gt;
akm config list                   &lt;span class="c"&gt;# stashes[] populated, no installed[]&lt;/span&gt;
akm list                          &lt;span class="c"&gt;# your sources resolve cleanly&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If something looks wrong after upgrade, the guide has a &lt;a href="//../migration/v0.5-to-v0.6.md#troubleshooting"&gt;troubleshooting section&lt;/a&gt; covering the common pitfalls (stale context-hub entries, v2 registry URLs, empty &lt;code&gt;stashes[]&lt;/code&gt; after a read-only upgrade path).&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;0.6.0 is a punctuation mark, not a destination. The next moves are narrower scope and fewer concepts, in that order. Expect the 0.6.x series to pick up whatever friction falls out of this rename; 0.7 starts shaping the contract we intend to freeze at v1.&lt;/p&gt;

&lt;p&gt;Thank you to everyone who stayed on pre-v1 through the terminology churn. The point of doing this now — while the installed base is small enough to move together — is that we only do it once. The v1 surface begins here.&lt;/p&gt;

&lt;p&gt;Full changelog at &lt;a href="https://github.com/itlackey/akm/blob/main/.github/CHANGELOG.md" rel="noopener noreferrer"&gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>release</category>
    </item>
    <item>
      <title>akm 0.5.0: Wikis, Workflows, Vaults, and a Writable Stash</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Fri, 24 Apr 2026 05:18:44 +0000</pubDate>
      <link>https://forem.com/itlackey/akm-050-wikis-workflows-vaults-and-a-writable-stash-cap</link>
      <guid>https://forem.com/itlackey/akm-050-wikis-workflows-vaults-and-a-writable-stash-cap</guid>
      <description>&lt;p&gt;akm 0.5.0 is out. This release adds three new asset types — wikis, workflows, and vaults are now first-class citizens — plus writable git stash support so your stash can sync back to a remote. It also upgrades the self-update path to cover npm, bun, pnpm, and binary installs, and ships a new &lt;code&gt;akm help migrate&lt;/code&gt; command for release-to-release guidance. There is one breaking change for anyone who was using the single-wiki LLM POC from 0.4.x.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;akm wiki create|register|list|show|remove|pages|search|stash|lint|ingest&lt;/code&gt; — multi-wiki support, no LLM required&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm workflow template|create|start|next|complete|status|list|resume&lt;/code&gt; — multi-step agent procedures in the stash&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm vault list|show|create|set|unset|load&lt;/code&gt; — &lt;code&gt;.env&lt;/code&gt;-backed secrets that never appear in structured output&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm add &amp;lt;source&amp;gt; --writable&lt;/code&gt; + &lt;code&gt;akm save&lt;/code&gt; — push your stash changes back to a remote git repo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm add &amp;lt;source&amp;gt; --trust&lt;/code&gt; — bypass the install audit for a single install&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm add --type wiki --name &amp;lt;name&amp;gt; &amp;lt;source&amp;gt;&lt;/code&gt; / &lt;code&gt;akm wiki register&lt;/code&gt; — register an existing directory or repo as a first-class wiki&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm upgrade&lt;/code&gt; now covers npm, bun, pnpm, and standalone-binary installs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm help migrate &amp;lt;version&amp;gt;&lt;/code&gt; prints release notes and migration guidance for any shipped release&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breaking&lt;/strong&gt;: the single-wiki LLM POC is removed; migrate to &lt;code&gt;akm wiki …&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Multi-wiki support
&lt;/h2&gt;

&lt;p&gt;The biggest addition in 0.5.0 is a proper wiki asset type. A wiki is a structured knowledge base living at &lt;code&gt;&amp;lt;stashDir&amp;gt;/wikis/&amp;lt;name&amp;gt;/&lt;/code&gt; with a defined layout: &lt;code&gt;schema.md&lt;/code&gt; describes what goes in it, &lt;code&gt;index.md&lt;/code&gt; is auto-generated by &lt;code&gt;akm index&lt;/code&gt;, &lt;code&gt;log.md&lt;/code&gt; tracks change history, &lt;code&gt;raw/&lt;/code&gt; holds unprocessed source material, and the rest are agent-authored pages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a new wiki&lt;/span&gt;
akm wiki create architecture

&lt;span class="c"&gt;# List all wikis&lt;/span&gt;
akm wiki list

&lt;span class="c"&gt;# See what pages a wiki has&lt;/span&gt;
akm wiki pages architecture

&lt;span class="c"&gt;# Search within a wiki&lt;/span&gt;
akm wiki search architecture &lt;span class="s2"&gt;"deployment"&lt;/span&gt;

&lt;span class="c"&gt;# Lint a wiki for structural problems&lt;/span&gt;
akm wiki lint architecture

&lt;span class="c"&gt;# Ingest raw content into raw/&lt;/span&gt;
akm wiki stash architecture ./notes/adr-001.md

&lt;span class="c"&gt;# Print the ingest workflow for the wiki&lt;/span&gt;
akm wiki ingest architecture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wiki pages are indexed by &lt;code&gt;akm index&lt;/code&gt; and show up in stash-wide &lt;code&gt;akm search&lt;/code&gt;, so you do not need to remember which wiki a page lives in. Raw sources under &lt;code&gt;raw/&lt;/code&gt; plus the wiki root infrastructure files &lt;code&gt;schema.md&lt;/code&gt;, &lt;code&gt;index.md&lt;/code&gt;, and &lt;code&gt;log.md&lt;/code&gt; are intentionally excluded from indexing and search results. Running &lt;code&gt;akm index&lt;/code&gt; also regenerates each wiki's &lt;code&gt;index.md&lt;/code&gt; as a side effect.&lt;/p&gt;

&lt;p&gt;The design principle is &lt;strong&gt;akm surfaces, the agent writes&lt;/strong&gt;. akm makes no LLM calls. It owns only the operations where correctness is structural and deterministic: lifecycle management, raw-slug uniqueness, lint checks, index regeneration. The agent owns page content. This keeps the CLI fast and predictable — a wiki command always completes in milliseconds, and you can run it in any environment without model configuration.&lt;/p&gt;

&lt;p&gt;The 10-verb surface (&lt;code&gt;create&lt;/code&gt;, &lt;code&gt;register&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;show&lt;/code&gt;, &lt;code&gt;remove&lt;/code&gt;, &lt;code&gt;pages&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;stash&lt;/code&gt;, &lt;code&gt;lint&lt;/code&gt;, &lt;code&gt;ingest&lt;/code&gt;) covers the full lifecycle from creation to indexing to removal.&lt;/p&gt;

&lt;p&gt;If you already have a wiki-shaped directory or repo you want to adopt without copying it, use &lt;code&gt;akm wiki register&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Register a local directory as a first-class wiki&lt;/span&gt;
akm wiki register notes ~/team/notes

&lt;span class="c"&gt;# Or via the unified add command&lt;/span&gt;
akm add &lt;span class="nt"&gt;--type&lt;/span&gt; wiki &lt;span class="nt"&gt;--name&lt;/span&gt; notes ~/team/notes

&lt;span class="c"&gt;# Registered external wikis show up in both `akm list` and `akm wiki list`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Registration refreshes source state and wiki search hits immediately, and the indexer normalizes external wiki refs on subsequent runs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Workflow asset type
&lt;/h2&gt;

&lt;p&gt;Workflows are multi-step procedures stored in the stash. An agent running a complex process — a release checklist, an onboarding sequence, a debugging runbook — can use &lt;code&gt;akm workflow next&lt;/code&gt; to step through it deterministically rather than relying on its context window to track state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Author a workflow&lt;/span&gt;
akm workflow create release-checklist

&lt;span class="c"&gt;# Start an instance&lt;/span&gt;
akm workflow start workflow:release-checklist

&lt;span class="c"&gt;# Advance to the next step&lt;/span&gt;
akm workflow next workflow:release-checklist

&lt;span class="c"&gt;# Check where you are&lt;/span&gt;
akm workflow status workflow:release-checklist

&lt;span class="c"&gt;# Mark a specific step done (defaults to --state completed)&lt;/span&gt;
akm workflow &lt;span class="nb"&gt;complete&lt;/span&gt; &amp;lt;run-id&amp;gt; &lt;span class="nt"&gt;--step&lt;/span&gt; validate &lt;span class="nt"&gt;--notes&lt;/span&gt; &lt;span class="s2"&gt;"Inputs verified"&lt;/span&gt;

&lt;span class="c"&gt;# List all workflow runs&lt;/span&gt;
akm workflow list

&lt;span class="c"&gt;# Print a starter workflow you can adapt&lt;/span&gt;
akm workflow template
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Workflows live in the stash like any other asset, so &lt;code&gt;akm search workflow:…&lt;/code&gt; finds them and &lt;code&gt;akm show workflow:release-checklist&lt;/code&gt; renders the current step. They can be shared in a stash and versioned in a git stash.&lt;/p&gt;




&lt;h2&gt;
  
  
  Vault asset type
&lt;/h2&gt;

&lt;p&gt;Vaults store secrets and environment configuration. Each vault is a &lt;code&gt;.env&lt;/code&gt; file in the stash. The key constraint: vault values never appear in structured output. &lt;code&gt;akm show vault:&amp;lt;name&amp;gt;&lt;/code&gt; and &lt;code&gt;akm vault list&lt;/code&gt; display key names and metadata, but not the values themselves.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List vaults&lt;/span&gt;
akm vault list

&lt;span class="c"&gt;# Show keys in a vault (no values)&lt;/span&gt;
akm show vault:prod-secrets

&lt;span class="c"&gt;# Create a new empty vault&lt;/span&gt;
akm vault create prod-secrets

&lt;span class="c"&gt;# Set a key (three-positional form or combined KEY=VALUE form)&lt;/span&gt;
akm vault &lt;span class="nb"&gt;set &lt;/span&gt;vault:prod-secrets API_KEY abc123
akm vault &lt;span class="nb"&gt;set &lt;/span&gt;vault:prod-secrets &lt;span class="nv"&gt;API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;abc123 &lt;span class="nt"&gt;--comment&lt;/span&gt; &lt;span class="s2"&gt;"Rotate every 90 days"&lt;/span&gt;

&lt;span class="c"&gt;# Remove a key&lt;/span&gt;
akm vault &lt;span class="nb"&gt;unset &lt;/span&gt;vault:prod-secrets API_KEY

&lt;span class="c"&gt;# Print the vault file path for current-shell loading&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;akm vault path vault:prod-secrets&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Run one command with the vault injected&lt;/span&gt;
akm vault run vault:prod-secrets &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nb"&gt;env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;akm vault path&lt;/code&gt; is the current-shell loading path and &lt;code&gt;akm vault run&lt;/code&gt; is the one-shot command execution path. Values never appear in structured output; &lt;code&gt;vault run&lt;/code&gt; passes them directly to the child process environment.&lt;/p&gt;

&lt;p&gt;This is a deliberate tradeoff: vaults are not a full secrets manager. They are a thin, auditable layer that keeps your &lt;code&gt;.env&lt;/code&gt; files alongside your other agent assets and prevents accidental leakage through &lt;code&gt;akm show&lt;/code&gt; or &lt;code&gt;akm search&lt;/code&gt; results.&lt;/p&gt;




&lt;h2&gt;
  
  
  Writable git stash and &lt;code&gt;akm save&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Until now, git-backed stashes were read-only: &lt;code&gt;akm add github:owner/repo&lt;/code&gt; would clone the repo, but you could not push changes back. 0.5.0 changes that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone a git stash and opt it into push-on-save&lt;/span&gt;
akm add github:your-org/your-stash &lt;span class="nt"&gt;--writable&lt;/span&gt;

&lt;span class="c"&gt;# Make some changes — add a skill, author a wiki page, record a memory&lt;/span&gt;
akm remember &lt;span class="s2"&gt;"Production DB is read-only on Sundays"&lt;/span&gt;

&lt;span class="c"&gt;# Commit and push&lt;/span&gt;
akm save &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"add production DB note"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the stash has a remote configured and &lt;code&gt;--writable&lt;/code&gt; was used on install, &lt;code&gt;akm save&lt;/code&gt; runs &lt;code&gt;git commit&lt;/code&gt; and &lt;code&gt;git push&lt;/code&gt;. Without &lt;code&gt;--writable&lt;/code&gt; (or without a remote), it commits locally only.&lt;/p&gt;

&lt;p&gt;The default stash is now auto-initialized as a git repo on &lt;code&gt;akm setup&lt;/code&gt;, so &lt;code&gt;akm save&lt;/code&gt; works out of the box even before you wire up a remote.&lt;/p&gt;

&lt;p&gt;The git stash provider also switches from HTTP tarball download to &lt;code&gt;git clone&lt;/code&gt;, which means you get proper git history and the ability to &lt;code&gt;git pull&lt;/code&gt; manually if you prefer.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;--trust&lt;/code&gt; flag for installs
&lt;/h2&gt;

&lt;p&gt;akm 0.4.0 added a pre-install audit that scans stash contents for dangerous patterns. By default, installs from unrecognized sources require confirmation. For sources you know and trust, you can skip the audit entirely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add github:your-org/internal-stash &lt;span class="nt"&gt;--trust&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--trust&lt;/code&gt; is a one-off bypass — it does not add the source to any persistent allowlist. Use it when you control the source and do not want to step through the audit prompt in a non-interactive context (a CI script, an automated agent workflow, a container build).&lt;/p&gt;

&lt;p&gt;When a blocked install error occurs, the error message includes a &lt;code&gt;hint&lt;/code&gt; field referencing &lt;code&gt;--trust&lt;/code&gt; as a remediation option.&lt;/p&gt;




&lt;h2&gt;
  
  
  Breaking change: single-wiki LLM POC removed
&lt;/h2&gt;

&lt;p&gt;If you were using the wiki functionality introduced in 0.4.1, you will need to migrate. The following have been removed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;akm lint&lt;/code&gt; command&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;akm import --llm&lt;/code&gt; and &lt;code&gt;akm import --dry-run&lt;/code&gt; flags&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;knowledge.pageKinds&lt;/code&gt; config key&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;ingestKnowledgeSource&lt;/code&gt; and &lt;code&gt;lintKnowledge&lt;/code&gt; LLM prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Migration path:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a wiki for your content: &lt;code&gt;akm wiki create &amp;lt;name&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Move raw source files into &lt;code&gt;wikis/&amp;lt;name&amp;gt;/raw/&lt;/code&gt;: &lt;code&gt;akm wiki stash &amp;lt;name&amp;gt; &amp;lt;file&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Have your agent author wiki pages from the raw content&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;akm index&lt;/code&gt; to regenerate the wiki index&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The new surface is more capable — 10 verbs vs the old 2, proper multi-wiki support, structural lint, and page search — and it does not require an LLM to be configured for any of the CLI operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Broader &lt;code&gt;akm upgrade&lt;/code&gt; coverage
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;akm upgrade&lt;/code&gt; used to assume a standalone-binary install. 0.5.0 detects how akm was installed (npm, bun, pnpm, or binary) and runs the right self-update path for each. The same command now works whether you bootstrapped from the install script or from a package manager, and the internal runtime-asset coverage was expanded so newly shipped asset types stay up to date after an upgrade.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm upgrade              &lt;span class="c"&gt;# Works for binary, npm, bun, and pnpm installs&lt;/span&gt;
akm upgrade &lt;span class="nt"&gt;--check&lt;/span&gt;      &lt;span class="c"&gt;# Report whether an update is available, without installing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;code&gt;akm help migrate &amp;lt;version&amp;gt;&lt;/code&gt; — release notes at the CLI
&lt;/h2&gt;

&lt;p&gt;Release notes belong where you're actually working. &lt;code&gt;akm help migrate&lt;/code&gt; prints the relevant CHANGELOG section plus embedded migration guidance for a given version, so you can review what changed (and what to do about it) without leaving the terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm &lt;span class="nb"&gt;help &lt;/span&gt;migrate 0.5.0     &lt;span class="c"&gt;# or v0.5.0&lt;/span&gt;
akm &lt;span class="nb"&gt;help &lt;/span&gt;migrate latest    &lt;span class="c"&gt;# resolve against the most recent CHANGELOG entry&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It favors the bundled CHANGELOG section when it exists and falls back to an embedded summary and a link to the full changelog otherwise.&lt;/p&gt;




&lt;h2&gt;
  
  
  Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or reinstall from scratch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full changelog at &lt;a href="https://github.com/itlackey/akm/blob/main/.github/CHANGELOG.md" rel="noopener noreferrer"&gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note (2026-04-23):&lt;/strong&gt; This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a &lt;em&gt;kit&lt;/em&gt; and the &lt;em&gt;Kit Maker's Guide&lt;/em&gt;; those terms have been renamed to &lt;em&gt;stash&lt;/em&gt; and &lt;em&gt;Stash Maker's Guide&lt;/em&gt; throughout. The pre-rename text is preserved in this repository's git history.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>release</category>
    </item>
    <item>
      <title>Your Agent Loads 47 Skills at Startup. It Needs Three.</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 21 Apr 2026 03:24:25 +0000</pubDate>
      <link>https://forem.com/itlackey/your-agent-loads-47-skills-at-startup-it-needs-three-46ha</link>
      <guid>https://forem.com/itlackey/your-agent-loads-47-skills-at-startup-it-needs-three-46ha</guid>
      <description>&lt;p&gt;Quick recap if you're joining mid-series. In &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;part one&lt;/a&gt;, I introduced the problem: your agent's skill list is growing faster than you can manage it, and dumping everything into context makes things worse, not better. &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-bpo"&gt;Part two&lt;/a&gt; showed how &lt;code&gt;akm&lt;/code&gt; unifies your existing Claude Code, Cursor, and Codex assets into one searchable stash. &lt;a href="https://dev.to/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends"&gt;Part three&lt;/a&gt; covered persistent memory across sessions. &lt;a href="https://dev.to/itlackey/your-agent-doesnt-know-what-the-community-already-figured-out"&gt;Part four&lt;/a&gt; connected your agent to community knowledge through a shared git stash.&lt;/p&gt;

&lt;p&gt;This post zooms in on the pattern that makes all of that work: progressive disclosure. I've mentioned it in every post so far, but I haven't really shown the math or walked through what actually happens under the hood. Let's fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  You're Paying for Context You Don't Use
&lt;/h2&gt;

&lt;p&gt;Say you've got 47 skills across three platforms. That's not a crazy number — if you've been building with agents for a few months, you're probably there already. The average skill file runs about 1,000 tokens.&lt;/p&gt;

&lt;p&gt;Now do the napkin math.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Load everything at startup:&lt;/strong&gt; 47,000 tokens. Your agent sees all of it, whether the current task needs zero skills or five. Those extra 42,000 tokens aren't free. They degrade response quality, increase latency, and cost real money on metered APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search first, load second:&lt;/strong&gt; A search query comes back with 20 results at ~100 tokens each. That's 2,000 tokens. Your agent reads the summaries, decides it needs one skill, and loads it: 1,000 tokens. Total: 3,000 tokens.&lt;/p&gt;

&lt;p&gt;That's a 94% reduction. Not by being clever with compression or prompt engineering. Just by not loading stuff you don't need.&lt;/p&gt;

&lt;p&gt;The math alone justifies the pattern. But the implementation is where it gets interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Actually Works
&lt;/h2&gt;

&lt;p&gt;There are three steps. Search, load, and drill down. Here's what each one looks like.&lt;/p&gt;

&lt;h3&gt;
  
  
  Search
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"deploy to staging"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns a ranked list of matching assets across all your sources. Each result has the asset type and name (&lt;code&gt;skill:deploy-staging&lt;/code&gt;), where it came from, a description snippet, and a relevance score.&lt;/p&gt;

&lt;p&gt;Total cost: ~100 tokens per result. Your agent scans this list and decides what's relevant. Most of the time, it needs one or two assets out of twenty results. The other eighteen never enter the context window.&lt;/p&gt;

&lt;h3&gt;
  
  
  Load
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show skill:deploy-staging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the agent loads the full content of a single asset. The complete skill definition, instructions, examples — everything it needs to act. This is the only moment the full content enters the context window, and only for the assets the agent specifically chose.&lt;/p&gt;

&lt;p&gt;Cost: ~500-1,500 tokens per asset, depending on complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Drill Down
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show knowledge:api-guide toc
akm show knowledge:api-guide section &lt;span class="s2"&gt;"Authentication"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For knowledge assets — documentation, guides, API references — &lt;code&gt;akm&lt;/code&gt; supports table-of-contents navigation. The agent can see the structure of a document and request a specific section instead of loading the whole thing.&lt;/p&gt;

&lt;p&gt;A 10,000-token API guide becomes a 200-token table of contents, then a 1,500-token section load. The agent never sees the eight sections it doesn't need.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Works Across All Your Tools
&lt;/h2&gt;

&lt;p&gt;Here's the part that most implementations miss. Claude Code does progressive disclosure for skills in &lt;code&gt;~/.claude/skills/&lt;/code&gt;. That's great — for Claude Code. But what about your Cursor rules? Your Codex agents? Your team's shared Git repository of skills?&lt;/p&gt;

&lt;p&gt;Every platform implements this pattern within its own silo. &lt;code&gt;akm&lt;/code&gt; implements it &lt;em&gt;across&lt;/em&gt; silos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# One-time setup: point akm at everything&lt;/span&gt;
akm add ~/.claude/skills
akm add ~/.codex/skills
akm add .cursor/rules
akm add github:your-org/team-skills

&lt;span class="c"&gt;# Every search hits all sources&lt;/span&gt;
akm search &lt;span class="s2"&gt;"database migration"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That single search query returns ranked results from every source. The scoring pipeline treats local filesystem assets and remote Git-hosted assets fairly — no source gets artificially boosted or suppressed. The best match wins, regardless of where it lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Real Session Looks Like
&lt;/h2&gt;

&lt;p&gt;Your agent gets a task: "Deploy the staging environment with the new database migration."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Search.&lt;/strong&gt; The agent runs &lt;code&gt;akm search "deploy staging database migration"&lt;/code&gt;. Gets 15 results across three sources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evaluate.&lt;/strong&gt; The agent reads the result summaries (~1,500 tokens). Identifies two relevant assets: &lt;code&gt;skill:deploy-staging&lt;/code&gt; and &lt;code&gt;knowledge:migration-runbook&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Load.&lt;/strong&gt; The agent runs &lt;code&gt;akm show skill:deploy-staging&lt;/code&gt; and &lt;code&gt;akm show knowledge:migration-runbook&lt;/code&gt;. Loads ~2,500 tokens of directly relevant content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Act.&lt;/strong&gt; The agent executes the deployment using the loaded skill and references the runbook for the migration steps.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Total context cost: ~4,000 tokens. Without progressive disclosure, the agent would've loaded all 47 skills (47,000 tokens) and still might not have found the migration runbook because it lives in a different source than the deployment skill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting It Up
&lt;/h2&gt;

&lt;p&gt;The agent integration is a two-line addition to your &lt;code&gt;AGENTS.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Agent Stash&lt;/span&gt;

Search for skills, commands, and knowledge using &lt;span class="sb"&gt;`akm search &amp;lt;query&amp;gt;`&lt;/span&gt;.
View full details with &lt;span class="sb"&gt;`akm show &amp;lt;ref&amp;gt;`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire interface. The agent knows how to search, knows how to load, and handles the progressive disclosure pattern on its own. No configuration, no routing rules, no platform-specific adapters.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is What Makes Teams Work
&lt;/h2&gt;

&lt;p&gt;Progressive disclosure becomes even more valuable at team scale. When your team has hundreds of shared skills plus each developer's personal collection, front-loading is physically impossible. Search-then-load isn't just an optimization — it's the only viable approach.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/itlackey"&gt;next post&lt;/a&gt;, I'll cover how teams can share skills across a group while preserving individual customization. The progressive disclosure pattern is the foundation that makes team-scale skill management work.&lt;/p&gt;

&lt;p&gt;If you want to see this in action, the repo is at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. Point it at your skill directories, run a search, and see how much context you've been wasting.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note (2026-04-23):&lt;/strong&gt; This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a &lt;em&gt;kit&lt;/em&gt; and the &lt;em&gt;Kit Maker's Guide&lt;/em&gt;; those terms have been renamed to &lt;em&gt;stash&lt;/em&gt; and &lt;em&gt;Stash Maker's Guide&lt;/em&gt; throughout. The pre-rename text is preserved in this repository's git history.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>skills</category>
    </item>
    <item>
      <title>Your Team's Agent Skills Are a Mess. Here's How to Fix It.</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 31 Mar 2026 06:22:03 +0000</pubDate>
      <link>https://forem.com/itlackey/your-teams-agent-skills-are-a-mess-heres-how-to-fix-it-262</link>
      <guid>https://forem.com/itlackey/your-teams-agent-skills-are-a-mess-heres-how-to-fix-it-262</guid>
      <description>&lt;p&gt;This is part seven in a series about managing the growing pile of skills, scripts, and context that AI coding agents depend on. &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;Part one&lt;/a&gt; introduced progressive disclosure. &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-bpo"&gt;Part two&lt;/a&gt; unified your local assets across platforms. &lt;a href="https://dev.to/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends"&gt;Part three&lt;/a&gt; added remote context via OpenViking. &lt;a href="https://dev.to/itlackey/your-agent-doesnt-know-what-the-community-already-figured-out"&gt;Part four&lt;/a&gt; connected community knowledge through Context Hub.&lt;/p&gt;

&lt;p&gt;Everything up to now has been about &lt;em&gt;you&lt;/em&gt;. Your skills. Your stash. Your agent. That's fine when you're working solo, but most of us aren't.&lt;/p&gt;

&lt;p&gt;You've got a deploy skill. Your teammate has one too. They do slightly different things — yours includes the canary step, theirs adds a Slack notification you didn't know about. A third person on the team wrote theirs for Codex and it skips the canary entirely.&lt;/p&gt;

&lt;p&gt;Now the deploy process changes. Say the team adds a new staging environment. You update your skill. You mention it in standup. Your teammate says they'll update theirs later. The third person was out that day and doesn't hear about it. Two weeks later, someone deploys to the wrong environment because their skill still has the old configuration.&lt;/p&gt;

&lt;p&gt;This isn't hypothetical. If your team uses AI coding assistants, this is happening right now. Every developer building up their own skill collection, no shared source of truth, no way to know when someone else has a better version of the same thing.&lt;/p&gt;

&lt;p&gt;Every agent skills article on the internet is written for individual developers. But teams are where skills become both most valuable and most chaotic. Here's how to fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Simplest Thing: A Shared Directory
&lt;/h2&gt;

&lt;p&gt;Your team already has a shared drive or mounted directory? Use it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Team lead creates the shared source&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /mnt/shared/team-skills/skills/deploy
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /mnt/shared/team-skills/skills/deploy/SKILL.md &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;'
# Deploy to Production

Standard deployment workflow for all services.

## Steps
1. Run test suite: `bun test`
2. Build: `bun run build`
3. Deploy to staging: `./scripts/deploy.sh staging`
4. Run smoke tests: `./scripts/smoke.sh staging`
5. Deploy to production: `./scripts/deploy.sh production`
6. Notify #deploys channel in Slack

## Rollback
If smoke tests fail: `./scripts/rollback.sh staging`
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each developer adds it as a source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add /mnt/shared/team-skills
akm search &lt;span class="s2"&gt;"deploy"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The shared skill shows up in everyone's search results alongside their personal skills. When the team lead updates the deploy skill, everyone sees the update on the next index refresh. No copying. No syncing. No "hey, I updated the deploy skill" messages in Slack.&lt;/p&gt;

&lt;p&gt;This works best for co-located teams or teams that already share infrastructure. Zero overhead to set up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git for Distributed Teams
&lt;/h2&gt;

&lt;p&gt;If your team is distributed, a Git repo is the natural choice. You already use Git for everything else — why not for skills?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Team lead creates the repo&lt;/span&gt;
&lt;span class="c"&gt;# github.com/your-org/team-agent-skills&lt;/span&gt;
&lt;span class="c"&gt;# Standard stash structure: skills/, commands/, knowledge/&lt;/span&gt;

&lt;span class="c"&gt;# Each developer adds it&lt;/span&gt;
akm add github:your-org/team-agent-skills

&lt;span class="c"&gt;# Pull latest when needed&lt;/span&gt;
akm update &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This buys you everything Git already provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Version history.&lt;/strong&gt; See when the deploy skill changed and why.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull request review.&lt;/strong&gt; New skills and updates go through the same review process as code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch-based testing.&lt;/strong&gt; Try a new version of a skill on a branch before merging.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI integration.&lt;/strong&gt; Lint your skill files, validate structure, run tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A new developer runs &lt;code&gt;akm add&lt;/code&gt;, and they've got the entire team's skill library indexed and searchable immediately. No onboarding doc that says "copy these files to these directories."&lt;/p&gt;

&lt;h2&gt;
  
  
  Private Registry for Larger Orgs
&lt;/h2&gt;

&lt;p&gt;For larger teams or organizations that want discoverability without mandating specific skills, &lt;code&gt;akm&lt;/code&gt; supports private registries. Think npm for agent skills, but hosted internally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Search the team registry&lt;/span&gt;
akm search &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="nt"&gt;--registry&lt;/span&gt; https://registry.internal.company.com

&lt;span class="c"&gt;# Install a specific skill from the registry&lt;/span&gt;
akm add registry:deploy-to-k8s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes more sense when your organization has dozens of teams, each with their own skills, and you want cross-team discovery without requiring everyone to index everything. Also handy when you need access control — some skills are sensitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the Team Skill Doesn't Quite Fit
&lt;/h2&gt;

&lt;p&gt;Here's the scenario every team hits: the standard deploy skill works for 90% of cases. But your project has a specific environment variable, an extra pre-deploy step, or a different notification channel.&lt;/p&gt;

&lt;p&gt;You don't want to modify the team skill — that breaks it for everyone else. You don't want to write your own from scratch — that's the duplication problem we started with.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;akm clone&lt;/code&gt; solves this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Fork the team skill into your personal source&lt;/span&gt;
akm clone skill:deploy

&lt;span class="c"&gt;# Now you have a local copy to customize&lt;/span&gt;
&lt;span class="c"&gt;# Edit ~/.akm/sources/default/skills/deploy/SKILL.md&lt;/span&gt;
&lt;span class="c"&gt;# Add your project-specific steps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The team version stays clean. Your fork is yours to customize. Both appear in your search results — the team version and your customized version — with the local fork ranked higher since it's in your personal source.&lt;/p&gt;

&lt;p&gt;When the team updates their version, you can re-clone to get the update and reapply your customizations. Or diff the two versions to see what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting It Together
&lt;/h2&gt;

&lt;p&gt;Here's what the full workflow looks like for a team of five:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team lead (one-time setup):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create the team skills repo&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;team-agent-skills
&lt;span class="nb"&gt;cd &lt;/span&gt;team-agent-skills
akm setup
&lt;span class="c"&gt;# Add skills, commands, knowledge&lt;/span&gt;
&lt;span class="c"&gt;# Push to github.com/your-org/team-agent-skills&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Each developer (one-time setup):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add team source alongside personal sources&lt;/span&gt;
akm add github:your-org/team-agent-skills
akm add ~/.claude/skills
akm add ~/.codex/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Daily workflow:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Search finds results from all sources&lt;/span&gt;
akm search &lt;span class="s2"&gt;"deploy"&lt;/span&gt;

&lt;span class="c"&gt;# Team skill and personal skills appear together&lt;/span&gt;
&lt;span class="c"&gt;# Best match wins, regardless of source&lt;/span&gt;

&lt;span class="c"&gt;# Pull team updates&lt;/span&gt;
akm update &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When customization is needed:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm clone skill:deploy
&lt;span class="c"&gt;# Edit local copy&lt;/span&gt;
&lt;span class="c"&gt;# Both versions stay searchable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No file copying. No sync scripts. No "which version is correct?" conversations. The team source is the source of truth. Personal forks are explicitly personal. Search finds everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Scales
&lt;/h2&gt;

&lt;p&gt;This whole workflow is built on the progressive disclosure pattern from the &lt;a href="https://dev.to/itlackey"&gt;previous post&lt;/a&gt;. At team scale, it's not just an optimization — it's a necessity.&lt;/p&gt;

&lt;p&gt;A team of five, each with 30 personal skills plus 50 shared team skills, has 200 total skills in play. Front-loading all of them into every agent session would cost 200,000+ tokens. With &lt;code&gt;akm&lt;/code&gt;'s search-then-load pattern, each session uses only the 2-5 skills it actually needs.&lt;/p&gt;

&lt;p&gt;The agent doesn't know or care whether a skill came from the team source, a personal directory, or a Git repository. It searches, it finds, it loads. The source management is your concern as a developer. The skill content is the agent's concern. Clean separation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you're a team lead looking to set up shared skills:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick your approach — shared filesystem for co-located teams, Git repo for distributed teams, registry for large organizations&lt;/li&gt;
&lt;li&gt;Create the shared source with a standard &lt;a href="https://github.com/itlackey/akm/blob/main/docs/getting-started.md" rel="noopener noreferrer"&gt;stash structure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Have each developer run &lt;code&gt;akm add&lt;/code&gt; to register the source&lt;/li&gt;
&lt;li&gt;Start with 3-5 high-value skills that everyone uses (deploy, test, review, etc.)&lt;/li&gt;
&lt;li&gt;Iterate from there&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The infrastructure is minimal. The payoff is immediate.&lt;/p&gt;

&lt;p&gt;Give it a shot and let me know how it holds up. The repo's at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;, and the &lt;a href="https://github.com/itlackey/akm/blob/main/docs/getting-started.md" rel="noopener noreferrer"&gt;Getting Started guide&lt;/a&gt; will get you wired up in a few minutes.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note (2026-04-23):&lt;/strong&gt; This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a &lt;em&gt;kit&lt;/em&gt; and the &lt;em&gt;Kit Maker's Guide&lt;/em&gt;; those terms have been renamed to &lt;em&gt;stash&lt;/em&gt; and &lt;em&gt;Stash Maker's Guide&lt;/em&gt; throughout. The pre-rename text is preserved in this repository's git history.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>skills</category>
    </item>
    <item>
      <title>Stop Copying Skills Between Claude Code, Cursor, and Codex</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Sun, 29 Mar 2026 16:31:49 +0000</pubDate>
      <link>https://forem.com/itlackey/stop-copying-skills-between-claude-code-cursor-and-codex-olb</link>
      <guid>https://forem.com/itlackey/stop-copying-skills-between-claude-code-cursor-and-codex-olb</guid>
      <description>&lt;p&gt;This is part five in a series about wrangling the growing pile of skills, scripts, and context that AI coding agents depend on. In &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;part one&lt;/a&gt;, I covered why progressive disclosure beats dumping everything into context. &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-bpo"&gt;Part two&lt;/a&gt; showed how &lt;code&gt;akm&lt;/code&gt; unifies your local assets across platforms into one searchable stash. &lt;a href="https://dev.to/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends"&gt;Part three&lt;/a&gt; added remote context via OpenViking for teams. And &lt;a href="https://dev.to/itlackey/your-agent-doesnt-know-what-the-community-already-figured-out"&gt;part four&lt;/a&gt; plugged in community knowledge through Context Hub.&lt;/p&gt;

&lt;p&gt;All of that assumed you were picking one tool. But you're probably not. You've got Claude Code at work, Codex for side projects, Cursor for quick edits. Each one has its own skills directory — &lt;code&gt;~/.claude/skills/&lt;/code&gt;, &lt;code&gt;~/.codex/skills/&lt;/code&gt;, &lt;code&gt;.cursor/rules/&lt;/code&gt; — and none of them can see each other.&lt;/p&gt;

&lt;p&gt;So you rebuild the same deploy skill twice. You forget where the good version of your testing scaffold lives. You copy files between directories and they drift within a week. You end up grepping across three different paths trying to find the one that handled database migrations correctly.&lt;/p&gt;

&lt;p&gt;This isn't a tooling problem. It's a discovery problem. And in the past week alone, three separate products launched to fix it — a macOS GUI for browsing skill files, a web-based editor for organizing them, a designer's viral Medium post about layered architecture for skills. People are clearly hurting here.&lt;/p&gt;

&lt;p&gt;But every one of those solutions wants you to &lt;em&gt;move&lt;/em&gt; your files somewhere. Copy them into a central location. Sync them between directories. Maintain one source of truth that you manually keep updated.&lt;/p&gt;

&lt;p&gt;There's a better approach: don't move anything. Just make everything searchable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copy and Sync (The Obvious Way)
&lt;/h2&gt;

&lt;p&gt;Pick a canonical directory, copy everything into it, keep it updated. Tools like ClaudeMDEditor make this easier with a GUI, and symlinks can automate some of it.&lt;/p&gt;

&lt;p&gt;Works great — until it doesn't. You update the original and forget to sync. The copy drifts. You end up with two versions of the same skill, slightly different, and no way to tell which is current. The maintenance overhead scales linearly with every new skill and every new platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  GUI Discovery (The Pretty Way)
&lt;/h2&gt;

&lt;p&gt;Tools like Chops give you a nice interface for browsing your skill files. You can see what's where, organize them visually, tag them.&lt;/p&gt;

&lt;p&gt;But your agent can't use a GUI. When Claude Code is mid-task and needs a deployment skill, it can't open an Electron app and browse around. It needs something it can &lt;em&gt;call&lt;/em&gt; — a programmatic interface that returns results without human intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Index in Place (The akm Way)
&lt;/h2&gt;

&lt;p&gt;This is the approach &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;akm&lt;/a&gt; takes. Don't move your files. Don't copy them. Don't sync them. Just point at them and build an index.&lt;/p&gt;

&lt;p&gt;Your skills stay exactly where each tool expects them. Claude Code still finds its skills in &lt;code&gt;~/.claude/skills/&lt;/code&gt;. Cursor still reads &lt;code&gt;.cursor/rules/&lt;/code&gt;. Nothing breaks. But now there's a single search layer across all of them.&lt;/p&gt;

&lt;p&gt;When your agent needs something, it searches once and gets results from every source. When you update a skill in its original location, the index picks up the change. No sync step. No drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Commands and You're Done
&lt;/h2&gt;

&lt;p&gt;Here's the full setup. Takes about 30 seconds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash

&lt;span class="c"&gt;# Initialize&lt;/span&gt;
akm setup

&lt;span class="c"&gt;# Point at your existing skill directories&lt;/span&gt;
akm add ~/.claude/skills
akm add ~/.codex/skills
akm add .cursor/rules

&lt;span class="c"&gt;# Search across all of them&lt;/span&gt;
akm search &lt;span class="s2"&gt;"deploy"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last command returns results from every source, ranked by relevance. Each result shows the asset type, name, source, and a snippet. Your agent — or you — can load the full content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show skill:deploy-to-production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the skill you need gets loaded into context. Everything else stays out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell Your Agent About It
&lt;/h2&gt;

&lt;p&gt;Here's the part that ties it all together. Drop this into your &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, or system prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Resources &amp;amp; Capabilities&lt;/span&gt;

Search for skills, commands, and knowledge using &lt;span class="sb"&gt;`akm search &amp;lt;query&amp;gt;`&lt;/span&gt;.
View full details with &lt;span class="sb"&gt;`akm show &amp;lt;ref&amp;gt;`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire integration. No plugins, no SDKs, no integration code. Any model that can run shell commands can use &lt;code&gt;akm&lt;/code&gt;. Claude Code, Codex, Cursor — if it has a terminal, it works.&lt;/p&gt;

&lt;p&gt;The agent runs &lt;code&gt;akm search&lt;/code&gt; to find what it needs, &lt;code&gt;akm show&lt;/code&gt; to load the content, and gets to work. Everything else stays out of context. Progressive disclosure — the agent discovers what exists, then activates only what it needs. If that pattern sounds familiar, I covered the architecture behind it in &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;part one&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;This post covered the individual developer workflow — one person, multiple tools, skills everywhere. But what happens when a team of five developers each has their own skills across three platforms? That's where things get interesting, and where akm's source model, Git integration, and private registry support come into play.&lt;/p&gt;

&lt;p&gt;For now: install akm, point it at your directories, and run &lt;code&gt;akm search&lt;/code&gt;. You'll be surprised how many skills you already have.&lt;/p&gt;

&lt;p&gt;Give it a look at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. If you've got agent assets scattered across platforms, give it a shot and let me know what breaks.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>skills</category>
    </item>
    <item>
      <title>Your Agent Doesn't Know What the Community Already Figured Out</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Wed, 18 Mar 2026 18:09:15 +0000</pubDate>
      <link>https://forem.com/itlackey/your-agent-doesnt-know-what-the-community-already-figured-out-2748</link>
      <guid>https://forem.com/itlackey/your-agent-doesnt-know-what-the-community-already-figured-out-2748</guid>
      <description>&lt;p&gt;This is part four in a series about managing the growing pile of skills, scripts, and context that AI coding agents depend on. In &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;part one&lt;/a&gt;, I covered why progressive disclosure beats dumping everything into context. &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them"&gt;Part two&lt;/a&gt; showed how &lt;code&gt;akm&lt;/code&gt; unifies your local assets across platforms into one searchable stash. &lt;a href="https://dev.to/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends"&gt;Part three&lt;/a&gt; added remote context via OpenViking for teams that need persistent, shared knowledge.&lt;/p&gt;

&lt;p&gt;All of that assumed you were building your own library from scratch. Your skills. Your knowledge docs. Your team's accumulated context. That's fine — and it's necessary — but it ignores a much larger resource: everything everyone else has already built.&lt;/p&gt;

&lt;p&gt;Right now, there are high-quality skills and knowledge documents sitting in public repositories that solve problems you're going to hit next week. Prompt-chaining patterns. API integration guides. Framework-specific coding conventions. Stuff that experienced practitioners have refined and published, ready to use. Your agent has no idea any of it exists.&lt;/p&gt;

&lt;p&gt;That's what the &lt;a href="https://github.com/andrewyng/context-hub" rel="noopener noreferrer"&gt;Context Hub&lt;/a&gt; integration fixes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Context Hub?
&lt;/h2&gt;

&lt;p&gt;Context Hub is a public GitHub repository — originally curated by Andrew Ng's team — structured specifically for agent consumption. It organizes community-contributed knowledge and skills into a browsable, searchable hierarchy under a &lt;code&gt;content/&lt;/code&gt; directory. Each entry is either a &lt;code&gt;DOC.md&lt;/code&gt; (knowledge) or a &lt;code&gt;SKILL.md&lt;/code&gt; (skill), with frontmatter metadata for descriptions, tags, languages, and versions.&lt;/p&gt;

&lt;p&gt;Think of it like a curated package registry, except instead of code libraries, it's agent context. Each document is a self-contained piece of knowledge or a skill definition that any agent can pick up and use immediately. No installation, no dependencies, no build step.&lt;/p&gt;

&lt;p&gt;The structure is intentionally simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;content/&lt;/span&gt;
  &lt;span class="s"&gt;openai/&lt;/span&gt;
    &lt;span class="s"&gt;docs/&lt;/span&gt;
      &lt;span class="s"&gt;chat-api/&lt;/span&gt;
        &lt;span class="s"&gt;python/&lt;/span&gt;
          &lt;span class="s"&gt;DOC.md&lt;/span&gt;
    &lt;span class="s"&gt;skills/&lt;/span&gt;
      &lt;span class="s"&gt;prompt-chaining/&lt;/span&gt;
        &lt;span class="s"&gt;SKILL.md&lt;/span&gt;
  &lt;span class="s"&gt;anthropic/&lt;/span&gt;
    &lt;span class="s"&gt;docs/&lt;/span&gt;
      &lt;span class="s"&gt;tool-use/&lt;/span&gt;
        &lt;span class="s"&gt;typescript/&lt;/span&gt;
          &lt;span class="s"&gt;DOC.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every entry gets indexed into the same search pipeline as your local assets, which means &lt;code&gt;akm&lt;/code&gt; can search and display it the same way it handles anything else in your stash.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Command to Connect
&lt;/h2&gt;

&lt;p&gt;If you already have &lt;code&gt;akm&lt;/code&gt; installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add context-hub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the full setup. Under the hood, this adds the default Context Hub repository as a git source. It downloads the repo as an archive, extracts it into a local cache, and on the next &lt;code&gt;akm index&lt;/code&gt;, every &lt;code&gt;DOC.md&lt;/code&gt; and &lt;code&gt;SKILL.md&lt;/code&gt; gets indexed into the same FTS5 search pipeline as your local assets.&lt;/p&gt;

&lt;p&gt;The cache refreshes automatically every 12 hours. If the network is down, it falls back to stale cache for up to 7 days. Your local stash still works regardless — the Context Hub provider degrades gracefully without taking anything else down with it.&lt;/p&gt;

&lt;p&gt;Verify it's registered:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see &lt;code&gt;context-hub&lt;/code&gt; in the list alongside your local stash directories and any other providers you've configured.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search Works the Same Way
&lt;/h2&gt;

&lt;p&gt;Here's what changes in practice: nothing about your workflow. You still run &lt;code&gt;akm search&lt;/code&gt;. The difference is that results now include entries from Context Hub alongside your local assets.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"prompt chaining patterns"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This might return a local skill you wrote last month &lt;em&gt;and&lt;/em&gt; a community-contributed skill from Context Hub. The results are unified — same ranking, same format, same &lt;code&gt;type:name&lt;/code&gt; refs. Context Hub assets go through the same scoring pipeline as everything else. No special handling, no second-class results.&lt;/p&gt;

&lt;p&gt;Want to narrow it down to just skills?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"api integration"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or just knowledge documents?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"coding standards"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; knowledge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The type filter applies across all sources — local, remote, and Context Hub alike.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show Works Too
&lt;/h2&gt;

&lt;p&gt;When you find something useful, load it the same way you'd load any other asset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show skill:prompt-chaining
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent gets the full content — frontmatter, description, the complete skill definition — in the same format as every other &lt;code&gt;akm show&lt;/code&gt; result. It doesn't need to know the asset lives on GitHub. It doesn't need a GitHub token. It just works. The ref is &lt;code&gt;type:name&lt;/code&gt;, same as a local asset.&lt;/p&gt;

&lt;p&gt;Context Hub assets support the same view modes as local knowledge docs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Table of contents&lt;/span&gt;
akm show knowledge:chat-api toc

&lt;span class="c"&gt;# A specific section&lt;/span&gt;
akm show knowledge:chat-api section &lt;span class="s2"&gt;"Authentication"&lt;/span&gt;

&lt;span class="c"&gt;# A line range&lt;/span&gt;
akm show knowledge:chat-api lines 10 25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For large documents, the &lt;code&gt;toc&lt;/code&gt; and &lt;code&gt;section&lt;/code&gt; views keep context lean. Your agent can scan the table of contents first, then pull only the section it needs. Progressive disclosure all the way down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom Context Hub Repositories
&lt;/h2&gt;

&lt;p&gt;The default &lt;code&gt;akm add context-hub&lt;/code&gt; points at Andrew Ng's repository, but you're not limited to that. Any GitHub repository works as a git source — you don't need to follow a specific directory convention. &lt;code&gt;akm&lt;/code&gt; walks the repo, classifies files by type, and indexes everything.&lt;/p&gt;

&lt;p&gt;Say your organization maintains an internal knowledge base for agent context — API references, architecture decisions, coding standards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add https://github.com/your-org/team-knowledge &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"team-knowledge"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;akm search&lt;/code&gt; queries your team's knowledge base alongside the public Context Hub and your local stash. All in one search. You can add as many git sources as you want — each gets its own cache and index.&lt;/p&gt;

&lt;p&gt;Need a specific branch instead of &lt;code&gt;main&lt;/code&gt;?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add https://github.com/your-org/team-knowledge/tree/staging &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"team-staging"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The provider parses the GitHub URL and pulls the right branch automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Your Agent Actually Sees
&lt;/h2&gt;

&lt;p&gt;This is where the pieces from the whole series come together. After four posts, here's what a fully-wired &lt;code&gt;akm search&lt;/code&gt; looks like from your agent's perspective:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"deploy containers to production"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Results might include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A local script from your primary stash — the deploy script you wrote last month&lt;/li&gt;
&lt;li&gt;A team skill from an installed GitHub stash — the Docker Compose workflow your teammate packaged&lt;/li&gt;
&lt;li&gt;A knowledge doc from OpenViking — the architecture decision about container orchestration from last sprint&lt;/li&gt;
&lt;li&gt;A community skill from Context Hub — a battle-tested container deployment pattern that 50 other people have already vetted&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Four different sources. One result set. One &lt;code&gt;akm show&lt;/code&gt; command to load whichever one the agent needs. Everything else stays out of context.&lt;/p&gt;

&lt;p&gt;The agent doesn't need to care about where an asset lives. Local file, managed source, OpenViking server, git repo — every result uses the same &lt;code&gt;type:name&lt;/code&gt; ref. The agent searches, picks, loads, and gets to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Full Stack
&lt;/h2&gt;

&lt;p&gt;Here's what the complete setup looks like after four posts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
akm setup

&lt;span class="c"&gt;# Local platform assets&lt;/span&gt;
akm add ~/.claude/skills
akm add .opencode/skills
akm add .cursor/rules

&lt;span class="c"&gt;# Community and team stashes&lt;/span&gt;
akm add github:your-org/team-agent-toolkit
akm add @scope/deploy-skills

&lt;span class="c"&gt;# Community knowledge (Context Hub is just a git repo)&lt;/span&gt;
akm add context-hub

&lt;span class="c"&gt;# Team knowledge (any git repo works)&lt;/span&gt;
akm add https://github.com/your-org/team-knowledge &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; team-knowledge

&lt;span class="c"&gt;# Remote context server&lt;/span&gt;
akm add https://your-viking.internal:1933 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; team-context &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--options&lt;/span&gt; &lt;span class="s1"&gt;'{"apiKey":"..."}'&lt;/span&gt;

&lt;span class="c"&gt;# Build the local index&lt;/span&gt;
akm index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop the &lt;code&gt;AGENTS.md&lt;/code&gt; snippet into every project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Resources &amp;amp; Capabilities&lt;/span&gt;

You have access to a searchable library of scripts, skills, commands, agents,
knowledge, and memories via the &lt;span class="sb"&gt;`akm`&lt;/span&gt; CLI. Use &lt;span class="sb"&gt;`akm -h`&lt;/span&gt; for details.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And your agent has access to everything: local skills, platform assets, team stashes, community registries, remote knowledge, persistent memories, and curated community context. One search, one interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;The value of agent skills and knowledge compounds when it's shared. A prompt-chaining pattern that one person refines over a weekend becomes infrastructure when a thousand agents can find it. A coding standard document that one team writes becomes a community resource when it's discoverable from any stash.&lt;/p&gt;

&lt;p&gt;Context Hub isn't the only way this will happen — community registries, marketplace-style discovery, and decentralized skill sharing are all coming. But it's working today, it's open source, and it plugs directly into the same &lt;code&gt;akm search&lt;/code&gt; / &lt;code&gt;akm show&lt;/code&gt; workflow you're already using.&lt;/p&gt;

&lt;p&gt;If you've written skills or knowledge docs worth sharing, consider contributing them to &lt;a href="https://github.com/andrewyng/context-hub" rel="noopener noreferrer"&gt;Context Hub&lt;/a&gt;. Structure them with frontmatter, put them in a &lt;code&gt;content/&lt;/code&gt; directory, and they become searchable for every agent running &lt;code&gt;akm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. Context Hub is at &lt;a href="https://github.com/andrewyng/context-hub" rel="noopener noreferrer"&gt;github.com/andrewyng/context-hub&lt;/a&gt;. If you've got a team knowledge base in a git repo, add it as a git source and let me know how it holds up.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (March 2026):&lt;/strong&gt; This post was updated to reflect akm's current CLI. &lt;code&gt;akm add&lt;/code&gt; replaces the earlier &lt;code&gt;akm stash add&lt;/code&gt; for adding sources (including git and OpenViking providers), &lt;code&gt;akm setup&lt;/code&gt; replaces &lt;code&gt;akm init&lt;/code&gt;, and &lt;code&gt;akm list&lt;/code&gt; replaces &lt;code&gt;akm stash list&lt;/code&gt;. Sources (formerly "stash sources") are now managed through a single &lt;code&gt;akm add&lt;/code&gt; / &lt;code&gt;akm remove&lt;/code&gt; interface. If you're following along with an older version, &lt;code&gt;akm upgrade&lt;/code&gt; will get you current.&lt;/em&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note (2026-04-23):&lt;/strong&gt; This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a &lt;em&gt;kit&lt;/em&gt; and the &lt;em&gt;Kit Maker's Guide&lt;/em&gt;; those terms have been renamed to &lt;em&gt;stash&lt;/em&gt; and &lt;em&gt;Stash Maker's Guide&lt;/em&gt; throughout. The pre-rename text is preserved in this repository's git history.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>skills</category>
    </item>
    <item>
      <title>Your Agent's Memory Shouldn't Disappear When the Session Ends</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Tue, 17 Mar 2026 16:07:09 +0000</pubDate>
      <link>https://forem.com/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends-18mo</link>
      <guid>https://forem.com/itlackey/your-agents-memory-shouldnt-disappear-when-the-session-ends-18mo</guid>
      <description>&lt;p&gt;This is part three in a series about managing the growing pile of skills, scripts, and context that AI coding agents depend on. In &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;part one&lt;/a&gt;, I talked about why progressive disclosure beats loading everything into context. In &lt;a href="https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them"&gt;part two&lt;/a&gt;, I showed how &lt;code&gt;akm&lt;/code&gt; unifies your existing Claude Code, OpenCode, and Cursor assets into one searchable stash.&lt;/p&gt;

&lt;p&gt;Both of those were about files on disk. Local skills, local scripts, local knowledge documents. That covers most people's immediate pain, but it leaves a bigger problem on the table: what happens when the context your agent needs isn't local?&lt;/p&gt;

&lt;p&gt;Think about project architecture docs that live in a shared knowledge base. Team decisions captured during previous sessions. Coding standards that evolve over time and shouldn't be copy-pasted into every developer's stash. Agent memories that accumulate across conversations and need to persist somewhere more durable than a markdown file in a git repo.&lt;/p&gt;

&lt;p&gt;That's where &lt;a href="https://github.com/volcengine/OpenViking" rel="noopener noreferrer"&gt;OpenViking&lt;/a&gt; comes in, and why &lt;code&gt;akm&lt;/code&gt; now supports it as a first-class provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is OpenViking?
&lt;/h2&gt;

&lt;p&gt;OpenViking is an open-source context database built by ByteDance's Volcano Engine team. Instead of treating agent context as flat vectors in a RAG pipeline, it organizes everything — memories, resources, skills — into a hierarchical virtual filesystem with semantic search.&lt;/p&gt;

&lt;p&gt;The part that matters: it stores and retrieves agent context (project docs, team decisions, coding standards) via a REST API. When you connect it to &lt;code&gt;akm&lt;/code&gt;, its content shows up in search results alongside your local assets — same &lt;code&gt;type:name&lt;/code&gt; refs, same ranking, same &lt;code&gt;akm show&lt;/code&gt; workflow.&lt;/p&gt;

&lt;p&gt;The part that matters for &lt;code&gt;akm&lt;/code&gt; is the API. OpenViking exposes REST endpoints for search (semantic and text), content read, and file stat. That's exactly what a provider needs: the ability to find things and retrieve them. So we built one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding OpenViking as a Source
&lt;/h2&gt;

&lt;p&gt;If you already have &lt;code&gt;akm&lt;/code&gt; installed and an OpenViking server running, the setup is one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add http://localhost:1933 &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That registers the server as a source. From that point on, &lt;code&gt;akm search&lt;/code&gt; queries your local stash and the OpenViking server in parallel. Results from both show up in the same &lt;code&gt;hits[]&lt;/code&gt; array, ranked together.&lt;/p&gt;

&lt;p&gt;If your server requires authentication:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add http://localhost:1933 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--options&lt;/span&gt; &lt;span class="s1"&gt;'{"apiKey":"your-api-key"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Give it a name to keep things tidy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add http://localhost:1933 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"team-context"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--options&lt;/span&gt; &lt;span class="s1"&gt;'{"apiKey":"your-api-key"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify it's registered:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the full setup. No config files to hand-edit, no environment variables to set. The provider handles caching, retries, and graceful degradation — if the server goes down, your local stash still works fine and the provider falls back to cached results for up to an hour.&lt;/p&gt;

&lt;h2&gt;
  
  
  Searching Remote and Local Together
&lt;/h2&gt;

&lt;p&gt;Here's what changes in practice. Before OpenViking, an &lt;code&gt;akm search&lt;/code&gt; hit your local stash — your primary directory, search paths, and managed sources. Now it also hits any OpenViking servers you've registered.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"project architecture"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This might return a local skill from your Claude Code directory &lt;em&gt;and&lt;/em&gt; a knowledge doc from OpenViking. The results are unified: same format, same scoring, same &lt;code&gt;type:name&lt;/code&gt; refs. Your agent can't tell the difference between a local asset and one from OpenViking — and it shouldn't need to.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show knowledge:project-context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That fetches the content — from the local index if available, or from the OpenViking server as a fallback. The response comes back in the same format as any other &lt;code&gt;akm show&lt;/code&gt; — with a &lt;code&gt;content&lt;/code&gt; field, an &lt;code&gt;action&lt;/code&gt; field, and type metadata.&lt;/p&gt;

&lt;p&gt;By default, OpenViking search uses semantic matching (via &lt;code&gt;POST /api/v1/search/find&lt;/code&gt;). If you prefer text search for exact matching, configure the provider with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add http://localhost:1933 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--options&lt;/span&gt; &lt;span class="s1"&gt;'{"apiKey":"your-key","searchType":"text"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Text search uses OpenViking's grep endpoint, which deduplicates results by URI and ranks them by match frequency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standing Up a Test Server
&lt;/h2&gt;

&lt;p&gt;If you want to try this locally before pointing at a shared server, the akm repo includes a ready-made Docker Compose setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/itlackey/akm.git
&lt;span class="nb"&gt;cd &lt;/span&gt;akm/tests/fixtures/openviking

&lt;span class="c"&gt;# Start the server&lt;/span&gt;
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;

&lt;span class="c"&gt;# Wait a few seconds, then seed sample content&lt;/span&gt;
./seed.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The seed script loads a handful of test documents — project architecture notes, coding standards, an API reference, and a project memory — into the OpenViking server.&lt;/p&gt;

&lt;p&gt;Now register it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add http://localhost:1933 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--options&lt;/span&gt; &lt;span class="s1"&gt;'{"apiKey":"akm-test-key"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"project architecture"&lt;/span&gt;
akm show knowledge:project-context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get back the full markdown content of the project architecture document. Search works across all sources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"coding standards"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you have Ollama running locally, you can enable semantic search by updating the &lt;code&gt;ov.conf&lt;/code&gt; to point the embedding endpoint at your Ollama instance (&lt;code&gt;http://host.docker.internal:11434/v1&lt;/code&gt;). Without embeddings, text search and direct content access still work fine.&lt;/p&gt;

&lt;p&gt;Tear it down when you're done:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why This Matters for Teams
&lt;/h2&gt;

&lt;p&gt;The OpenViking integration solves a class of problems that local-only management can't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shared context without shared files.&lt;/strong&gt; Your team can maintain a single OpenViking instance with project documentation, architectural decisions, and coding standards. Every developer's agent can search and retrieve that context without syncing files, mounting network drives, or maintaining parallel copies. Update a document in OpenViking and every agent sees the change immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Persistent memory across sessions.&lt;/strong&gt; OpenViking's memory system stores recalled context fragments that survive across conversations. When your agent starts a new session, it can search for memories from previous work — &lt;code&gt;akm search "sprint planning decisions" --type memory&lt;/code&gt; — and get back what it learned last week. That's a fundamentally different capability than loading the same static skills every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unified search across everything.&lt;/strong&gt; This is the compounding effect of the whole series. Part one gave you progressive disclosure for local skills. Part two unified your multi-platform assets into one searchable stash. Now part three adds remote context to the same search surface. One &lt;code&gt;akm search&lt;/code&gt; query, one result set, one &lt;code&gt;akm show&lt;/code&gt; command — regardless of whether the asset is a Claude Code skill in &lt;code&gt;~/.claude/skills/&lt;/code&gt;, a script from an npm stash, or a knowledge document on an OpenViking server across the network.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Full Picture
&lt;/h2&gt;

&lt;p&gt;After three posts, here's what a fully-wired setup looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
akm setup

&lt;span class="c"&gt;# Local platform assets&lt;/span&gt;
akm add ~/.claude/skills
akm add .opencode/skills
akm add .cursor/rules

&lt;span class="c"&gt;# Community and team stashes&lt;/span&gt;
akm add github:your-org/team-agent-toolkit
akm add @scope/deploy-skills

&lt;span class="c"&gt;# Remote context server&lt;/span&gt;
akm add https://your-viking.internal:1933 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; openviking &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; team-context &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--options&lt;/span&gt; &lt;span class="s1"&gt;'{"apiKey":"..."}'&lt;/span&gt;

&lt;span class="c"&gt;# Build the index&lt;/span&gt;
akm index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now drop the &lt;code&gt;AGENTS.md&lt;/code&gt; snippet into every project and your agent has access to all of it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Resources &amp;amp; Capabilities&lt;/span&gt;

You have access to a searchable library of scripts, skills, commands, agents,
knowledge, and memories via the &lt;span class="sb"&gt;`akm`&lt;/span&gt; CLI. Use &lt;span class="sb"&gt;`akm -h`&lt;/span&gt; for details.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Local skills, remote knowledge, team stashes, community registries, persistent memories. One search, one interface, every agent.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. OpenViking is at &lt;a href="https://github.com/volcengine/OpenViking" rel="noopener noreferrer"&gt;github.com/volcengine/OpenViking&lt;/a&gt;. Both are open source, both are moving fast, and the combination is genuinely useful infrastructure for anyone running agents in production.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (March 2026):&lt;/strong&gt; This post was updated to reflect akm's current CLI. &lt;code&gt;akm add&lt;/code&gt; replaces the earlier &lt;code&gt;akm stash add&lt;/code&gt; for adding sources (including OpenViking providers), &lt;code&gt;akm setup&lt;/code&gt; replaces &lt;code&gt;akm init&lt;/code&gt;, and &lt;code&gt;akm list&lt;/code&gt; replaces &lt;code&gt;akm stash list&lt;/code&gt;. Sources (formerly "stash sources") are now managed through a single &lt;code&gt;akm add&lt;/code&gt; / &lt;code&gt;akm remove&lt;/code&gt; interface. If you're following along with an older version, &lt;code&gt;akm upgrade&lt;/code&gt; will get you current.&lt;/em&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note (2026-04-23):&lt;/strong&gt; This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a &lt;em&gt;kit&lt;/em&gt; and the &lt;em&gt;Kit Maker's Guide&lt;/em&gt;; those terms have been renamed to &lt;em&gt;stash&lt;/em&gt; and &lt;em&gt;Stash Maker's Guide&lt;/em&gt; throughout. The pre-rename text is preserved in this repository's git history.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>skills</category>
    </item>
    <item>
      <title>You Already Have Dozens of Agent Skills. You Just Can't Find Them.</title>
      <dc:creator>IT Lackey</dc:creator>
      <pubDate>Mon, 16 Mar 2026 17:26:29 +0000</pubDate>
      <link>https://forem.com/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-5bai</link>
      <guid>https://forem.com/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them-5bai</guid>
      <description>&lt;p&gt;In the &lt;a href="https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck"&gt;last post&lt;/a&gt;, I talked about the problem: your agent's skill collection is growing faster than your ability to manage it. Skills scattered across directories, no search, no sharing, no sanity. I introduced &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;Agent-i-Stash&lt;/a&gt; as the fix — a CLI called &lt;code&gt;akm&lt;/code&gt; that gives your agent a searchable, indexed stash of assets.&lt;/p&gt;

&lt;p&gt;But here's what I glossed over: most of you aren't starting from zero. You've already got skills, commands, agents, and rules spread across multiple platforms. Claude Code has &lt;code&gt;~/.claude/skills/&lt;/code&gt;. OpenCode has &lt;code&gt;.opencode/&lt;/code&gt;. Cursor has &lt;code&gt;.cursor/rules/&lt;/code&gt;. Codex has its &lt;code&gt;agents.md&lt;/code&gt;. You might be using two or three of these tools in the same week, building up assets in each one, and none of them can see each other.&lt;/p&gt;

&lt;p&gt;That's the real unlock with &lt;code&gt;akm&lt;/code&gt;. It doesn't care where your assets came from. Point it at a directory, and it indexes everything inside. Point it at five directories, and now you've got semantic search across all of them. One command, every platform, every model.&lt;/p&gt;

&lt;p&gt;Let me show you how fast this actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Pick your poison:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Standalone binary (no runtime needed)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash

&lt;span class="c"&gt;# Or via Bun&lt;/span&gt;
bun &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; akm-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You now have the &lt;code&gt;akm&lt;/code&gt; binary on your PATH. And when a new version drops, &lt;code&gt;akm upgrade&lt;/code&gt; handles it in place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initialize Your Stash
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates &lt;code&gt;~/akm&lt;/code&gt; with subdirectories for each asset type: &lt;code&gt;scripts/&lt;/code&gt;, &lt;code&gt;skills/&lt;/code&gt;, &lt;code&gt;commands/&lt;/code&gt;, &lt;code&gt;agents/&lt;/code&gt;, &lt;code&gt;knowledge/&lt;/code&gt;, and &lt;code&gt;memories/&lt;/code&gt;. If you want to put it somewhere else, set &lt;code&gt;AKM_STASH_DIR&lt;/code&gt; before you run setup.&lt;/p&gt;

&lt;p&gt;But the real power move isn't putting everything in one folder. It's telling &lt;code&gt;akm&lt;/code&gt; where your stuff already lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Your Existing Platform Directories
&lt;/h2&gt;

&lt;p&gt;Here's what most people's machines actually look like. You've got Claude Code skills in one place, OpenCode assets in another, maybe some Cursor rules in a third. Instead of copying files around or choosing a winner, just add them as sources.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add ~/.claude/skills
akm add ./my-project/.opencode/skills
akm add ./.cursor/rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command per directory. Each &lt;code&gt;akm add&lt;/code&gt; registers the path, and the search index picks it up on the next build. No JSON editing, no manual config files. Your files stay exactly where they are — &lt;code&gt;akm&lt;/code&gt; just knows about them now.&lt;/p&gt;

&lt;p&gt;You can name sources to keep track of what's what:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add ~/.claude/skills &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"claude-skills"&lt;/span&gt;
akm add ./team-shared &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"team"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And see everything at a glance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That shows your primary stash, all the directories you've added, and any managed sources — in priority order. Need to remove one? &lt;code&gt;akm remove&lt;/code&gt; takes a path or a name.&lt;/p&gt;

&lt;p&gt;For assets that live in a git repo or an npm package, &lt;code&gt;akm add&lt;/code&gt; handles installation and makes them searchable immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# A team repo full of shared skills&lt;/span&gt;
akm add github:your-org/team-agent-toolkit

&lt;span class="c"&gt;# An npm stash&lt;/span&gt;
akm add @scope/deploy-skills

&lt;span class="c"&gt;# A local git directory&lt;/span&gt;
akm add ./path/to/my-opencode-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every &lt;code&gt;akm add&lt;/code&gt; registers the stash, caches the assets, and triggers an incremental index build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build the Index
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First run builds the full index. After that, it runs incrementally — only rescanning directories that changed. If you've configured an embedding endpoint (local Ollama, OpenAI, whatever), you get vector-based semantic search. If not, you still get solid keyword matching out of the box with the built-in local model.&lt;/p&gt;

&lt;p&gt;Want the enhanced experience? If you're running Ollama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull nomic-embed-text
akm config &lt;span class="nb"&gt;set &lt;/span&gt;embedding &lt;span class="s1"&gt;'{"endpoint":"http://localhost:11434/v1/embeddings","model":"nomic-embed-text","dimension":384}'&lt;/span&gt;
akm index &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Search Across Everything
&lt;/h2&gt;

&lt;p&gt;Now here's where it pays off. Say you're working in Claude Code and you vaguely remember writing a skill for Docker container management a few months ago. Was it in your OpenCode stash? Your Claude Code skills? That shared repo your teammate set up?&lt;/p&gt;

&lt;p&gt;Doesn't matter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"docker container management"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That searches across every source you've registered — your primary stash, every directory you added with &lt;code&gt;akm add&lt;/code&gt;, and all managed sources. Semantic search means you don't need to remember the exact filename. Describe what you're looking for and &lt;code&gt;akm&lt;/code&gt; finds it.&lt;/p&gt;

&lt;p&gt;Results come back with a &lt;code&gt;ref&lt;/code&gt; you can pass straight to &lt;code&gt;akm show&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm show skill:docker-homelab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent gets the full SKILL.md content, ready to use. For scripts, it gets a &lt;code&gt;run&lt;/code&gt; command it can execute directly. For commands, the full markdown template with placeholders. For knowledge, navigable content with TOC and section views. No manual file hunting.&lt;/p&gt;

&lt;p&gt;Want to search the community registries too? &lt;code&gt;akm&lt;/code&gt; ships with &lt;a href="https://skills.sh" rel="noopener noreferrer"&gt;skills.sh&lt;/a&gt; built in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm search &lt;span class="s2"&gt;"code review"&lt;/span&gt; &lt;span class="nt"&gt;--source&lt;/span&gt; both
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you're searching your local stash and community registries in one shot. Found something useful? Install it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm add github:someone/great-stash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or if you just want one asset from a stash without installing the whole thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm clone &lt;span class="s2"&gt;"github:someone/great-stash//skill:code-review"&lt;/span&gt; &lt;span class="nt"&gt;--dest&lt;/span&gt; ./.claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That clones just the skill directly into your project's Claude Code skills directory. The type subdirectory (&lt;code&gt;skills/&lt;/code&gt;, &lt;code&gt;scripts/&lt;/code&gt;, etc.) gets appended automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell Your Agent About It
&lt;/h2&gt;

&lt;p&gt;Here's the part that ties it all together. Drop this into your &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, or system prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Resources &amp;amp; Capabilities&lt;/span&gt;

You have access to a searchable library of scripts, skills, commands, agents,
knowledge, and memories via the &lt;span class="sb"&gt;`akm`&lt;/span&gt; CLI. Use &lt;span class="sb"&gt;`akm -h`&lt;/span&gt; for details.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire integration. No plugins, no SDKs, no integration code. Any model that can run shell commands can use &lt;code&gt;akm&lt;/code&gt;. Claude Code, OpenCode, Codex, Cursor — if it has a terminal, it works.&lt;/p&gt;

&lt;p&gt;The agent runs &lt;code&gt;akm search&lt;/code&gt; to find what it needs, &lt;code&gt;akm show&lt;/code&gt; to load the content, and gets to work. Everything else stays out of context.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Looks Like in Practice
&lt;/h2&gt;

&lt;p&gt;Let's say your setup looks something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt;: &lt;code&gt;~/.claude/skills/&lt;/code&gt; has skills for PDF generation, CMYK conversion, and print layout QA&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenCode&lt;/strong&gt;: &lt;code&gt;.opencode/skills/&lt;/code&gt; in a project has custom Azure deployment scripts and a LiteLLM manager&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared team repo&lt;/strong&gt;: A git repo with Docker, CI/CD, and code review assets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt;: &lt;code&gt;.cursor/rules/&lt;/code&gt; has coding conventions and architecture patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;akm setup
akm add ~/.claude/skills
akm add .opencode/skills
akm add .cursor/rules
akm add github:your-org/team-agent-toolkit
akm index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now when your agent runs &lt;code&gt;akm search "deploy container to azure"&lt;/code&gt;, it finds your Azure deployment script from the OpenCode directory, the Docker skill from your team repo, and maybe a relevant knowledge doc from Cursor's rules. All in one search. All ranked by relevance.&lt;/p&gt;

&lt;p&gt;The agent picks what it needs, loads only that, and gets to work. Progressive disclosure means your agent's context stays clean — no drowning in irrelevant skills, no missing the one it actually needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters More Than It Sounds
&lt;/h2&gt;

&lt;p&gt;The fragmentation problem in agent tooling is only getting worse. Every platform is building its own skill format, its own directory conventions, its own discovery mechanism. None of them talk to each other. If you're serious about building agent workflows, you're going to end up with assets in three or four of these systems within the year.&lt;/p&gt;

&lt;p&gt;You can either manage that by hand — maintaining parallel copies, forgetting where things are, rebuilding from scratch when you switch tools — or you can index once and search everywhere.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;akm&lt;/code&gt; isn't trying to replace any of these platforms. Your Claude Code skills stay Claude Code skills. Your OpenCode scripts stay OpenCode scripts. &lt;code&gt;akm&lt;/code&gt; just makes them all findable from one place, regardless of which agent is asking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
akm setup
akm add ~/.claude/skills
akm index
akm search &lt;span class="s2"&gt;"whatever you need"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Five commands. Every skill you've ever written, searchable in seconds.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/itlackey/akm" rel="noopener noreferrer"&gt;github.com/itlackey/akm&lt;/a&gt;. If you've got agent assets scattered across platforms, give it a shot and let me know what breaks.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (March 2026):&lt;/strong&gt; This post was updated to reflect akm's current CLI. The unified &lt;code&gt;akm add&lt;/code&gt; command replaces the earlier &lt;code&gt;akm stash add&lt;/code&gt;, &lt;code&gt;akm setup&lt;/code&gt; replaces &lt;code&gt;akm init&lt;/code&gt;, and &lt;code&gt;akm list&lt;/code&gt; replaces &lt;code&gt;akm stash list&lt;/code&gt;. Sources (formerly "stash sources") are now managed through a single &lt;code&gt;akm add&lt;/code&gt; / &lt;code&gt;akm remove&lt;/code&gt; interface. If you're following along with an older version, &lt;code&gt;akm upgrade&lt;/code&gt; will get you current.&lt;/em&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note (2026-04-23):&lt;/strong&gt; This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a &lt;em&gt;kit&lt;/em&gt; and the &lt;em&gt;Kit Maker's Guide&lt;/em&gt;; those terms have been renamed to &lt;em&gt;stash&lt;/em&gt; and &lt;em&gt;Stash Maker's Guide&lt;/em&gt; throughout. The pre-rename text is preserved in this repository's git history.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cli</category>
      <category>skills</category>
    </item>
  </channel>
</rss>
