akm-cli 0.9.30 → 0.10.26101001-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +282 -0
- package/README.md +10 -10
- package/ROADMAP.md +112 -0
- package/STABILITY.md +79 -53
- package/dist/api-node.mjs +20 -0
- package/dist/api.d.ts +23 -0
- package/dist/api.js +45 -0
- package/dist/assets/hints/cli-hints-full.md +13 -27
- package/dist/assets/hints/cli-hints-short.md +1 -1
- package/dist/assets/improve-strategies/default.json +3 -3
- package/dist/assets/prompts/consolidate-pair.md +9 -7
- package/dist/cli/shared.js +31 -48
- package/dist/cli/unknown-flags.js +6 -43
- package/dist/cli.js +8 -34
- package/dist/commands/agent/contribute-cli.js +1 -1
- package/dist/commands/completions.js +1 -2
- package/dist/commands/config-cli.js +5 -28
- package/dist/commands/env/env-cli.js +5 -5
- package/dist/commands/env/secret-cli.js +2 -2
- package/dist/commands/health/checks.js +41 -16
- package/dist/commands/health/plugin-staleness.js +52 -22
- package/dist/commands/improve/autonomy-gate.js +5 -3
- package/dist/commands/improve/consolidate/pair-pass.js +7 -1
- package/dist/commands/improve/consolidate.js +6 -35
- package/dist/commands/improve/distill/lesson-update.js +91 -0
- package/dist/commands/improve/distill-guards.js +1 -43
- package/dist/commands/improve/distill.js +140 -20
- package/dist/commands/improve/extract-cli.js +1 -1
- package/dist/commands/improve/improve-cli.js +120 -114
- package/dist/commands/improve/improve-strategies.js +8 -12
- package/dist/commands/improve/loop-stages.js +0 -1
- package/dist/commands/improve/planner.js +0 -1
- package/dist/commands/improve/preparation.js +40 -99
- package/dist/commands/improve/proactive-maintenance.js +2 -2
- package/dist/commands/improve/reflect-noise.js +3 -55
- package/dist/commands/improve/reflect.js +3 -8
- package/dist/commands/improve/retrieval-scope.js +2 -2
- package/dist/commands/improve/salience.js +2 -9
- package/dist/commands/improve/stage.js +14 -9
- package/dist/commands/lint/index.js +5 -20
- package/dist/commands/observability-cli.js +3 -9
- package/dist/commands/proposal/drain.js +39 -6
- package/dist/commands/proposal/proposal-cli.js +10 -30
- package/dist/commands/proposal/repository.js +3 -3
- package/dist/commands/read/knowledge.js +3 -3
- package/dist/commands/read/remember-cli.js +0 -13
- package/dist/commands/read/search-cli.js +29 -97
- package/dist/commands/read/search.js +0 -11
- package/dist/commands/read/show.js +0 -19
- package/dist/commands/sources/plugin-upgrade.js +164 -101
- package/dist/commands/sources/sources-cli.js +1 -15
- package/dist/commands/sources/stash-cli.js +4 -12
- package/dist/commands/tasks/tasks-cli.js +4 -115
- package/dist/commands/workflow/plan.js +11 -33
- package/dist/commands/workflow-cli.js +2 -7
- package/dist/core/adapter/adapter-ids.js +1 -2
- package/dist/core/adapter/adapters/agent-skills-adapter.js +0 -4
- package/dist/core/adapter/adapters/akm-adapter.js +9 -48
- package/dist/core/adapter/adapters/akm-lint.js +10 -26
- package/dist/core/adapter/adapters/akm-metadata.js +2 -72
- package/dist/core/adapter/adapters/akm-task-adapter.js +0 -5
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +9 -28
- package/dist/core/adapter/adapters/dotenv-adapter.js +1 -20
- package/dist/core/adapter/adapters/generic-files-adapter.js +0 -10
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +0 -4
- package/dist/core/adapter/adapters/tool-dir-shared.js +0 -24
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +4 -4
- package/dist/core/adapter/recognize-match.js +3 -4
- package/dist/core/common.js +18 -2
- package/dist/core/config/config-schema.js +12 -15
- package/dist/core/config/config-types.js +6 -15
- package/dist/core/config/config-walker.js +6 -23
- package/dist/core/config/config.js +17 -80
- package/dist/core/config/engine-semantics.js +7 -3
- package/dist/core/config/schema/engines.js +7 -7
- package/dist/core/config/schema/improve-processes.js +8 -61
- package/dist/core/config/schema/improve.js +2 -21
- package/dist/core/config/schema/index-config.js +6 -39
- package/dist/core/env-secret-ref.js +2 -45
- package/dist/core/errors.js +1 -2
- package/dist/core/extra-params.js +2 -86
- package/dist/core/file-lock.js +10 -1
- package/dist/core/improve-result.js +11 -1
- package/dist/core/mutation-target.js +2 -2
- package/dist/core/recognition-util.js +4 -5
- package/dist/core/warn.js +21 -4
- package/dist/core/write-source.js +3 -3
- package/dist/execution/target-ref.js +1 -2
- package/dist/indexer/search/db-search.js +4 -19
- package/dist/indexer/search/fts-query.js +0 -19
- package/dist/integrations/agent/engine-resolution.js +5 -2
- package/dist/integrations/agent/index.js +1 -1
- package/dist/integrations/agent/profiles.js +41 -98
- package/dist/integrations/agent/request-lowering.js +3 -3
- package/dist/integrations/harnesses/aider/index.js +5 -0
- package/dist/integrations/harnesses/amazonq/index.js +1 -0
- package/dist/integrations/harnesses/claude/config-import.js +2 -3
- package/dist/integrations/harnesses/claude/index.js +5 -0
- package/dist/integrations/harnesses/codex/index.js +1 -0
- package/dist/integrations/harnesses/copilot/index.js +1 -0
- package/dist/integrations/harnesses/gemini/index.js +1 -0
- package/dist/integrations/harnesses/index.js +18 -39
- package/dist/integrations/harnesses/opencode/agent-builder.js +60 -35
- package/dist/integrations/harnesses/opencode/config-import.js +121 -52
- package/dist/integrations/harnesses/opencode/index.js +22 -0
- package/dist/integrations/harnesses/opencode/plugin-layout.js +68 -0
- package/dist/integrations/harnesses/opencode/session-log-types.js +12 -0
- package/dist/integrations/harnesses/opencode/session-log-v1.js +72 -0
- package/dist/integrations/harnesses/opencode/session-log-v2.js +140 -0
- package/dist/integrations/harnesses/opencode/session-log.js +104 -115
- package/dist/integrations/harnesses/opencode/version.js +98 -0
- package/dist/integrations/harnesses/opencode-sdk/{harness.js → index.js} +5 -17
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +105 -206
- package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +199 -0
- package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +228 -0
- package/dist/integrations/harnesses/opencode-sdk/wire.js +66 -0
- package/dist/integrations/harnesses/openhands/index.js +1 -0
- package/dist/integrations/harnesses/pi/index.js +1 -0
- package/dist/integrations/harnesses/shared.js +2 -0
- package/dist/integrations/harnesses/types.js +2 -0
- package/dist/llm/client.js +74 -14
- package/dist/output/cli-hints.js +1 -1
- package/dist/output/context.js +10 -19
- package/dist/output/format-exempt.js +5 -8
- package/dist/output/shapes/helpers.js +1 -22
- package/dist/output/shapes/passthrough.js +0 -1
- package/dist/output/shapes.js +3 -31
- package/dist/output/stdout.js +5 -1
- package/dist/output/text/command-format.js +6 -1
- package/dist/output/text/workflow-format.js +4 -22
- package/dist/scripts/akm-migrate-node.js +15746 -16706
- package/dist/scripts/akm-migrate.js +16319 -17275
- package/dist/setup/detect.js +10 -4
- package/dist/setup/harness-config-import.js +5 -14
- package/dist/setup/setup.js +1 -1
- package/dist/setup/steps/tasks.js +12 -13
- package/dist/storage/repositories/task-history-repository.js +0 -5
- package/dist/storage/repositories/workflow-runs-repository.js +5 -15
- package/dist/tasks/embedded.js +2 -1
- package/dist/tasks/run/task-history.js +0 -2
- package/dist/tasks/schedule-gates.js +39 -0
- package/dist/tasks/scheduler-binding.js +0 -16
- package/dist/tasks/scheduler-sync.js +3 -97
- package/dist/tasks/source/bounded-document.js +1 -1
- package/dist/tasks/source/task-source-v4.js +2 -12
- package/dist/tasks/task-run-reserved-flags.js +2 -31
- package/dist/workflows/authoring/authoring.js +6 -6
- package/dist/workflows/compile.js +8 -65
- package/dist/workflows/exec/child-workflow.js +22 -3
- package/dist/workflows/exec/native-executor.js +12 -147
- package/dist/workflows/exec/run-workflow.js +31 -103
- package/dist/workflows/exec/step-work.js +9 -178
- package/dist/workflows/exec/unit-dispatch.js +0 -10
- package/dist/workflows/freeze/environment.js +3 -44
- package/dist/workflows/freeze/freeze.js +8 -41
- package/dist/workflows/freeze/targets/child-workflow.js +27 -63
- package/dist/workflows/freeze/targets/command.js +2 -16
- package/dist/workflows/freeze/targets/shell.js +0 -2
- package/dist/workflows/freeze/task-bindings.js +2 -28
- package/dist/workflows/ir/params.js +12 -2
- package/dist/workflows/parser.js +82 -232
- package/dist/workflows/plan.js +1 -1
- package/dist/workflows/renderer.js +10 -19
- package/dist/workflows/runtime/run-plan.js +11 -53
- package/dist/workflows/runtime/runs.js +4 -27
- package/dist/workflows/source-files.js +12 -16
- package/dist/workflows/source-semantics.js +1 -93
- package/docs/README.md +43 -42
- package/docs/agents/README.md +15 -0
- package/docs/agents/agent-install.md +14 -0
- package/docs/architecture/README.md +67 -0
- package/docs/architecture/adapters.md +258 -0
- package/docs/architecture/akm-architecture-decision-history.md +2055 -0
- package/docs/architecture/akm-core-principles.md +126 -0
- package/docs/architecture/architecture.md +578 -0
- package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +550 -0
- package/docs/architecture/decisions/0001-no-interpolation-attached-structured-context.md +72 -0
- package/docs/architecture/decisions/0002-unit-reuse-and-input-hash-scope.md +142 -0
- package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +189 -0
- package/docs/architecture/decisions/0004-task-input-contract-and-flag-coercion.md +97 -0
- package/docs/architecture/decisions/0005-task-result-vocabulary-and-legacy-read-mapping.md +108 -0
- package/docs/architecture/decisions/0006-task-source-version-routing.md +124 -0
- package/docs/architecture/decisions/0007-workflow-composition-bounds.md +83 -0
- package/docs/architecture/decisions/0008-task-binding-normalization.md +88 -0
- package/docs/architecture/decisions/0009-child-run-publication-column-parity.md +80 -0
- package/docs/architecture/decisions/0010-driver-protocol-cut.md +36 -0
- package/docs/architecture/decisions/0011-engine-run-loop-invariants.md +125 -0
- package/docs/architecture/decisions/README.md +62 -0
- package/docs/architecture/improvement.md +471 -0
- package/docs/architecture/internals/classification.md +154 -0
- package/docs/architecture/internals/fresh-host-rebuild-runbook.md +40 -0
- package/docs/architecture/internals/functional-contract-patterns.md +340 -0
- package/docs/architecture/internals/health-advisories.md +110 -0
- package/docs/architecture/internals/improve-workflow.md +720 -0
- package/docs/architecture/internals/indexing.md +498 -0
- package/docs/architecture/internals/registry-network-boundary.md +57 -0
- package/docs/architecture/internals/search.md +248 -0
- package/docs/architecture/internals/storage-locations.md +943 -0
- package/docs/architecture/persisted-data-compat.md +68 -0
- package/docs/architecture/reviews/env-secret-access.md +319 -0
- package/docs/architecture/runtime-boundary-design.md +153 -0
- package/docs/architecture/specs/0.9.0-close-out-plan.md +361 -0
- package/docs/architecture/specs/0.9.0-decisions.md +532 -0
- package/docs/architecture/specs/0.9.0-docs-code-drift-register.md +745 -0
- package/docs/architecture/specs/0.9.0-open-items-register.md +135 -0
- package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +740 -0
- package/docs/architecture/specs/0.9.0-release-surface-review.md +636 -0
- package/docs/architecture/specs/agent-command-engine-model-design.md +513 -0
- package/docs/architecture/specs/akm-0.9.0-bundle-adapter-spec.md +501 -0
- package/docs/architecture/specs/akm-0.9.0-ref-grammar-decision.md +291 -0
- package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +2059 -0
- package/docs/architecture/specs/di-seams-plan.md +539 -0
- package/docs/architecture/specs/driver-protocol-keep-or-cut.md +275 -0
- package/docs/architecture/specs/fact-asset-type.md +142 -0
- package/docs/architecture/specs/improve-collapse-churn-detector-design.md +634 -0
- package/docs/architecture/specs/okf-support.md +148 -0
- package/docs/architecture/specs/ref.md +329 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/README.md +72 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/findings-consolidated.md +152 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-alternatives.md +352 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-bunqueue.md +300 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-openworkflow.md +402 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-1.md +758 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-2.md +645 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-3.md +602 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-adversarial.md +27 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-architecture.md +27 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-coverage.md +74 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-security.md +15 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-adversarial.md +132 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-verification.md +147 -0
- package/docs/architecture/specs/stash-conventions-code-spec.md +275 -0
- package/docs/architecture/specs/stash-organization-conventions.md +377 -0
- package/docs/architecture/specs/task-workflow-format-unification.md +721 -0
- package/docs/architecture/specs/workflow-engine-buy-vs-build.md +231 -0
- package/docs/architecture/specs/workflow-format-unification.md +432 -0
- package/docs/architecture/testing/manual-testing-checklist.md +3411 -0
- package/docs/architecture/testing/okf-v0.2-conformance-runbook.md +924 -0
- package/docs/architecture/testing/task-workflow-manual-tests.md +1720 -0
- package/docs/architecture/testing/testing-workflow.md +446 -0
- package/docs/architecture/workflow-engine.md +223 -0
- package/docs/guides/README.md +33 -0
- package/docs/guides/author-bundles.md +310 -0
- package/docs/guides/author-workflows.md +490 -0
- package/docs/guides/bundles.md +321 -0
- package/docs/guides/capture-knowledge.md +136 -0
- package/docs/guides/claude-code-vs-akm-workflows.md +29 -0
- package/docs/guides/concepts.md +93 -0
- package/docs/guides/discover-and-load.md +158 -0
- package/docs/guides/getting-started.md +240 -0
- package/docs/guides/improve-the-library.md +246 -0
- package/docs/guides/knowledge-management.md +18 -0
- package/docs/guides/recipes/headless-install.md +97 -0
- package/docs/guides/recipes/website-source.md +28 -0
- package/docs/guides/run-workflows.md +279 -0
- package/docs/guides/scheduling.md +123 -0
- package/docs/guides/use-with-any-agent.md +174 -0
- package/docs/guides/wikis.md +81 -0
- package/docs/integration/bundling-akm.md +7 -6
- package/docs/maintainers/README.md +19 -0
- package/docs/maintainers/curate-workmap.md +335 -0
- package/docs/maintainers/eval.md +3 -0
- package/docs/maintainers/local-development.md +108 -0
- package/docs/maintainers/release-checklist.md +132 -0
- package/docs/migration/README.md +2 -2
- package/docs/migration/release-notes/0.0.13.md +1 -1
- package/docs/migration/release-notes/0.1.0.md +1 -1
- package/docs/migration/release-notes/0.2.0.md +1 -1
- package/docs/migration/release-notes/0.3.0.md +1 -1
- package/docs/migration/release-notes/0.5.0.md +1 -1
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +1 -1
- package/docs/migration/release-notes/0.7.3.md +2 -2
- package/docs/migration/release-notes/0.7.4.md +1 -1
- package/docs/migration/release-notes/0.7.5.md +1 -1
- package/docs/migration/release-notes/0.8.0.md +1 -1
- package/docs/migration/release-notes/0.9.0.md +1 -1
- package/docs/migration/release-notes/0.9.14.md +1 -1
- package/docs/migration/release-notes/0.9.15.md +1 -1
- package/docs/migration/release-notes/0.9.16.md +1 -1
- package/docs/migration/release-notes/0.9.17.md +1 -1
- package/docs/migration/release-notes/0.9.19.md +1 -1
- package/docs/migration/release-notes/0.9.2.md +1 -1
- package/docs/migration/release-notes/README.md +27 -31
- package/docs/migration/v0.5-to-v0.6.md +759 -0
- package/docs/migration/v0.8-to-v0.9.md +1 -1
- package/docs/plans/0.9.2-agent-command-workflow-plan.md +423 -0
- package/docs/posts/README.md +30 -0
- package/docs/posts/akm-command-tour.md +495 -0
- package/docs/posts/akm-logo-sized.webp +0 -0
- package/docs/posts/belief-aware-memory-12.md +139 -0
- package/docs/posts/config-v2-lessons-16.md +191 -0
- package/docs/posts/improve-loop-autonomous-10.md +225 -0
- package/docs/posts/improve-pipeline-debugging-0803.md +179 -0
- package/docs/posts/intro-part-01.md +76 -0
- package/docs/posts/intro-part-02.md +221 -0
- package/docs/posts/intro-part-03.md +190 -0
- package/docs/posts/intro-part-04.md +221 -0
- package/docs/posts/llm-mode-reflect-13.md +166 -0
- package/docs/posts/openpalm-built-on-akm.md +86 -0
- package/docs/posts/progressive-disclosure-06.md +129 -0
- package/docs/posts/proposal-safety-net-15.md +112 -0
- package/docs/posts/release-0.5.0.md +247 -0
- package/docs/posts/release-0.6.0.md +117 -0
- package/docs/posts/release-0.7.0.md +159 -0
- package/docs/posts/release-0.8.0.md +332 -0
- package/docs/posts/scattered-skills-05.md +100 -0
- package/docs/posts/task-assets-persistent-workflows-11.md +222 -0
- package/docs/posts/team-skills-07.md +198 -0
- package/docs/posts/wiki-agent-knowledge-08.md +223 -0
- package/docs/posts/workflows-vaults-09.md +321 -0
- package/docs/product-surface.md +54 -0
- package/docs/reference/README.md +2 -2
- package/docs/reference/api.md +65 -0
- package/docs/reference/asset-types.md +166 -0
- package/docs/reference/bundle-types.md +2 -4
- package/docs/reference/cli.md +129 -175
- package/docs/reference/configuration.md +84 -19
- package/docs/reference/data-and-telemetry.md +1 -1
- package/docs/reference/env-and-secrets.md +126 -0
- package/docs/reference/memory.md +124 -0
- package/docs/reference/refs.md +156 -0
- package/docs/reference/registry.md +489 -0
- package/docs/reference/supported-formats.md +3 -4
- package/docs/reference/tasks.md +12 -19
- package/docs/reference/website-sources.md +141 -0
- package/docs/reference/workflow-schema.md +89 -317
- package/docs/reference/workflows.md +20 -48
- package/package.json +23 -16
- package/schemas/akm-config.json +2 -243
- package/schemas/akm-task.json +2 -3
- package/schemas/akm-workflow.json +47 -84
- package/dist/assets/improve-strategies/catchup.json +0 -41
- package/dist/assets/improve-strategies/proactive-maintenance.json +0 -24
- package/dist/assets/improve-strategies/quick.json +0 -17
- package/dist/assets/improve-strategies/reflect-distill.json +0 -29
- package/dist/assets/improve-strategies/thorough.json +0 -49
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +0 -6
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +0 -4
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +0 -4
- package/dist/cli/retired-commands.js +0 -118
- package/dist/commands/tasks/validate.js +0 -176
- package/dist/core/config/legacy-source-shape-shim.js +0 -117
- package/dist/integrations/harnesses/ids.js +0 -28
- package/dist/tasks/source/task-source-v3-frozen.js +0 -424
- package/dist/tasks/source/task-to-v4.js +0 -863
- package/dist/workflows/exec/worktree.js +0 -372
- package/dist/workflows/freeze/child-output-references.js +0 -83
- package/dist/workflows/freeze/identity.js +0 -22
- package/dist/workflows/freeze/targets/script.js +0 -50
- package/dist/workflows/freeze/targets/task.js +0 -124
- package/dist/workflows/github-yaml.js +0 -506
- package/dist/workflows/runtime/run-outputs.js +0 -80
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Your AI Agent's Skill List Is Getting Out of Hand
|
|
3
|
+
id: 3327252
|
|
4
|
+
cover_image: 'https://raw.githubusercontent.com/itlackey/akm/main/docs/posts/akm-logo-sized.webp'
|
|
5
|
+
series: akm-skills
|
|
6
|
+
description: A quick introduction to the Agent-i-Stash CLI for managing AI agent extensions
|
|
7
|
+
tags:
|
|
8
|
+
- ai
|
|
9
|
+
- agents
|
|
10
|
+
- cli
|
|
11
|
+
- skills
|
|
12
|
+
published: true
|
|
13
|
+
date: '2026-03-08T15:58:28Z'
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
> This is a dated article from AKM's publishing archive. For current product behavior, see the
|
|
17
|
+
> [documentation index](https://github.com/itlackey/akm/blob/main/docs/README.md).
|
|
18
|
+
|
|
19
|
+
If you've been building with Claude Code or OpenCode for any length of time, you've probably hit the same wall. You start with a handful of skills and commands. They work great. So you add more. Then a few more for that new project. Then a teammate shares theirs and you copy those in too.
|
|
20
|
+
|
|
21
|
+
Before long you've got dozens of files scattered across directories, no good way to find the one you need, and an agent that's either missing context it should have or drowning in context it doesn't need.
|
|
22
|
+
|
|
23
|
+
That's the problem [Agent-i-Stash](https://github.com/itlackey/akm) is built to solve.
|
|
24
|
+
|
|
25
|
+
## The Real Issue Isn't Storage, It's Discovery
|
|
26
|
+
|
|
27
|
+
Claude Code and OpenCode are great at *using* skills and tools. They're not great at helping you *manage* them. There's no built-in search. No way to share a curated set of skills with your team without copying files around. No versioning. No registry.
|
|
28
|
+
|
|
29
|
+
So most people end up with one of two bad situations:
|
|
30
|
+
|
|
31
|
+
**Option A:** You stuff everything into context at startup. Your agent sees every skill, every tool, every command — whether it needs them or not. This sounds fine until you realize that loading irrelevant context doesn't just waste tokens, it actively degrades the quality of your agent's decisions. More isn't better. It's just noise.
|
|
32
|
+
|
|
33
|
+
**Option B:** You keep your stash small and tightly curated. The agent stays sharp, but you're constantly maintaining it by hand, rediscovering skills you forgot you had, and starting from scratch every time you spin up a new project.
|
|
34
|
+
|
|
35
|
+
Neither of these scales.
|
|
36
|
+
|
|
37
|
+
## Progressive Disclosure: Only Load What You Actually Need
|
|
38
|
+
|
|
39
|
+
The idea behind Agent-i-Stash is straightforward: your agent shouldn't have to know about every skill upfront. It should be able to *search* for what it needs, then load only that.
|
|
40
|
+
|
|
41
|
+
This is called progressive disclosure — a pattern from UX design that's finding a second life in agent architecture. Instead of front-loading everything, you expose a lightweight index. The agent scans it, decides what's relevant to the current task, and fetches only those resources. Everything else stays out of context.
|
|
42
|
+
|
|
43
|
+
The difference in practice is significant. An agent working from a bloated context window will drop steps, misfire on tool selection, and hallucinate connections between things that have nothing to do with each other. An agent that fetches only what it needs stays focused.
|
|
44
|
+
|
|
45
|
+
Agent-i-Stash gives you this through two commands your agent can call: `akm search` to find relevant skills by intent, and `akm show` to load the full content of only the ones it actually needs. Semantic search means you're not matching on exact keywords — the agent can describe what it's trying to do in plain language and get back relevant results.
|
|
46
|
+
|
|
47
|
+
## Skills Should Be Shareable
|
|
48
|
+
|
|
49
|
+
The other problem Agent-i-Stash tackles is distribution. Right now, if you build a great skill for managing Docker containers or generating print-ready PDFs, sharing it with someone else means sending files. There's no package lifecycle, no versioning, no clean way to pull updates.
|
|
50
|
+
|
|
51
|
+
Agent-i-Stash adds a registry layer on top of your stash. You can install a stash from GitHub or npm in one command. Your team can maintain an internal repository of shared skills that everyone pulls from. Community-maintained stashes can be versioned and updated the same way you'd update any other dependency.
|
|
52
|
+
|
|
53
|
+
This matters because the value of a good skill compounds when it's shared. A skill that took you an afternoon to get right shouldn't have to be reinvented by every person on your team — or by strangers on the internet who ran into the same problem you did.
|
|
54
|
+
|
|
55
|
+
## It's Not Replacing Anything
|
|
56
|
+
|
|
57
|
+
Agent-i-Stash isn't trying to replace MCP, or the skill systems built into Claude Code and OpenCode. It sits alongside them as a management and discovery layer. You still define your skills the same way. You still use them the same way. You just also have a way to find them, share them, and keep them organized as the collection grows.
|
|
58
|
+
|
|
59
|
+
Think of it like the difference between having a folder full of scripts and having a package manager. The scripts are still scripts. You just don't have to remember where you put them.
|
|
60
|
+
|
|
61
|
+
## Beta Testers and Agents Wanted
|
|
62
|
+
|
|
63
|
+
The project is young — v0.0.9 as of this writing — but the problem it's solving is real and it's only going to get worse as agent workflows get more capable and more complex. A community-maintained registry of high-quality, searchable, versioned skills is genuinely useful infrastructure.
|
|
64
|
+
|
|
65
|
+
Give it a look at [github.com/itlackey/akm](https://github.com/itlackey/akm). And if you've built skills worth sharing, this is a good time to think about how to package them so others can benefit.
|
|
66
|
+
|
|
67
|
+
Feel free to drop links in the comments to skills or stashes you've built that you think others should know about.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
*__Update (March 2026):__ This post is part of a series that has been updated to reflect akm's current CLI. Later posts in the series now use `akm setup` (formerly `akm init`), `akm add` (formerly `akm stash add`), and `akm list` (formerly `akm stash list`). If you're following along with an older version, `akm upgrade` will get you current.*
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
> **Note (2026-04-23):** This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a *kit* and the *Kit Maker's Guide*; those terms have been renamed to *stash* and *Stash Maker's Guide* throughout. The pre-rename text is preserved in this repository's git history.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: You Already Have Dozens of Agent Skills. You Just Can't Find Them.
|
|
3
|
+
cover_image: 'https://raw.githubusercontent.com/itlackey/akm/main/docs/posts/akm-logo-sized.webp'
|
|
4
|
+
id: 3359719
|
|
5
|
+
series: akm-skills
|
|
6
|
+
description: A quick introduction to managing sources
|
|
7
|
+
tags:
|
|
8
|
+
- ai
|
|
9
|
+
- agents
|
|
10
|
+
- cli
|
|
11
|
+
- skills
|
|
12
|
+
published: true
|
|
13
|
+
date: '2026-03-16T17:26:29Z'
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
> This is a dated article from AKM's publishing archive. For current product behavior, see the
|
|
17
|
+
> [documentation index](https://github.com/itlackey/akm/blob/main/docs/README.md).
|
|
18
|
+
|
|
19
|
+
In the [last post](https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck), 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 [Agent-i-Stash](https://github.com/itlackey/akm) as the fix — a CLI called `akm` that gives your agent a searchable, indexed stash of assets.
|
|
20
|
+
|
|
21
|
+
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 `~/.claude/skills/`. OpenCode has `.opencode/`. Cursor has `.cursor/rules/`. Codex has its `agents.md`. 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.
|
|
22
|
+
|
|
23
|
+
That's the real unlock with `akm`. 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.
|
|
24
|
+
|
|
25
|
+
Let me show you how fast this actually works.
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
Pick your poison:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Standalone binary (no runtime needed)
|
|
33
|
+
curl -fsSL https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
|
|
34
|
+
|
|
35
|
+
# Or via npm (Node.js >= 22 required)
|
|
36
|
+
npm install -g akm-cli
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The npm package requires Node.js >= 22 to bootstrap its command. If a working
|
|
40
|
+
Bun >= 1.0 is also on `PATH`, the launcher prefers Bun for execution; old,
|
|
41
|
+
unusable, or absent Bun installations fall back to Node.js. Standalone binaries
|
|
42
|
+
are runtime-free. You now have the `akm` binary on your `PATH`. When a new
|
|
43
|
+
version drops, `akm upgrade` handles it in place.
|
|
44
|
+
|
|
45
|
+
## Initialize Your Stash
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
akm setup
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
This creates `~/akm` with subdirectories for each asset type: `scripts/`, `skills/`, `commands/`, `agents/`, `knowledge/`, and `memories/`. If you want to put it somewhere else, set `AKM_BUNDLE_DIR` before you run setup.
|
|
52
|
+
|
|
53
|
+
But the real power move isn't putting everything in one folder. It's telling `akm` where your stuff already lives.
|
|
54
|
+
|
|
55
|
+
## Add Your Existing Platform Directories
|
|
56
|
+
|
|
57
|
+
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.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
akm add ~/.claude/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
61
|
+
akm add ./my-project/.opencode/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
62
|
+
akm add ./.cursor/rules # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
One command per directory. Each `akm add` 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 — `akm` just knows about them now.
|
|
66
|
+
|
|
67
|
+
You can name sources to keep track of what's what:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
akm add ~/.claude/skills --name "claude-skills" # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
71
|
+
akm add ./team-shared --name "team" # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
And see everything at a glance:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
akm list # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
That shows your primary stash, all the directories you've added, and any managed sources — in priority order. Need to remove one? `akm remove` takes a path or a name.
|
|
81
|
+
|
|
82
|
+
For assets that live in a git repo or an npm package, `akm add` handles installation and makes them searchable immediately:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# A team repo full of shared skills
|
|
86
|
+
akm add github:your-org/team-agent-toolkit # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
87
|
+
|
|
88
|
+
# An npm stash
|
|
89
|
+
akm add @scope/deploy-skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
90
|
+
|
|
91
|
+
# A local git directory
|
|
92
|
+
akm add ./path/to/my-opencode-skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Every `akm add` registers the stash, caches the assets, and triggers an incremental index build.
|
|
96
|
+
|
|
97
|
+
## Build the Index
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
akm index
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
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.
|
|
104
|
+
|
|
105
|
+
Want the enhanced experience? If you're running Ollama:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
ollama pull nomic-embed-text
|
|
109
|
+
akm config set embedding '{"endpoint":"http://localhost:11434/v1/embeddings","model":"nomic-embed-text","dimension":384}'
|
|
110
|
+
akm index --full
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Search Across Everything
|
|
114
|
+
|
|
115
|
+
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?
|
|
116
|
+
|
|
117
|
+
Doesn't matter.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
akm search "docker container management"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
That searches across every source you've registered — your primary stash, every directory you added with `akm add`, and all managed sources. Semantic search means you don't need to remember the exact filename. Describe what you're looking for and `akm` finds it.
|
|
124
|
+
|
|
125
|
+
Results come back with a `ref` you can pass straight to `akm show`:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
akm show skill:docker-homelab
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Your agent gets the full SKILL.md content, ready to use. For scripts, it gets a `run` 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.
|
|
132
|
+
|
|
133
|
+
Want to search the community registries too? `akm` ships with [skills.sh](https://skills.sh) built in:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
akm search "code review" --from all
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Now you're searching your local stash and community registries in one shot. Found something useful? Install it:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
akm add github:someone/great-stash # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Or if you just want one asset from a stash without installing the whole thing:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
akm clone "github:someone/great-stash//skill:code-review" --dest ./.claude
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
That clones just the skill directly into your project's Claude Code skills directory. The type subdirectory (`skills/`, `scripts/`, etc.) gets appended automatically.
|
|
152
|
+
|
|
153
|
+
## Tell Your Agent About It
|
|
154
|
+
|
|
155
|
+
Here's the part that ties it all together. Drop this into your `AGENTS.md`, `CLAUDE.md`, or system prompt:
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+
## Resources & Capabilities
|
|
159
|
+
|
|
160
|
+
You have access to a searchable library of scripts, skills, commands, agents,
|
|
161
|
+
knowledge, and memories via the `akm` CLI. Use `akm -h` for details.
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
That's the entire integration. No plugins, no SDKs, no integration code. Any model that can run shell commands can use `akm`. Claude Code, OpenCode, Codex, Cursor — if it has a terminal, it works.
|
|
165
|
+
|
|
166
|
+
The agent runs `akm search` to find what it needs, `akm show` to load the content, and gets to work. Everything else stays out of context.
|
|
167
|
+
|
|
168
|
+
## What This Looks Like in Practice
|
|
169
|
+
|
|
170
|
+
Let's say your setup looks something like this:
|
|
171
|
+
|
|
172
|
+
- **Claude Code**: `~/.claude/skills/` has skills for PDF generation, CMYK conversion, and print layout QA
|
|
173
|
+
- **OpenCode**: `.opencode/skills/` in a project has custom Azure deployment scripts and a LiteLLM manager
|
|
174
|
+
- **Shared team repo**: A git repo with Docker, CI/CD, and code review assets
|
|
175
|
+
- **Cursor**: `.cursor/rules/` has coding conventions and architecture patterns
|
|
176
|
+
|
|
177
|
+
After setup:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
akm setup
|
|
181
|
+
akm add ~/.claude/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
182
|
+
akm add .opencode/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
183
|
+
akm add .cursor/rules # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
184
|
+
akm add github:your-org/team-agent-toolkit # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
185
|
+
akm index
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Now when your agent runs `akm search "deploy container to azure"`, 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.
|
|
189
|
+
|
|
190
|
+
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.
|
|
191
|
+
|
|
192
|
+
## Why This Matters More Than It Sounds
|
|
193
|
+
|
|
194
|
+
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.
|
|
195
|
+
|
|
196
|
+
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.
|
|
197
|
+
|
|
198
|
+
`akm` isn't trying to replace any of these platforms. Your Claude Code skills stay Claude Code skills. Your OpenCode scripts stay OpenCode scripts. `akm` just makes them all findable from one place, regardless of which agent is asking.
|
|
199
|
+
|
|
200
|
+
## Get Started
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
curl -fsSL https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
|
|
204
|
+
akm setup
|
|
205
|
+
akm add ~/.claude/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
206
|
+
akm index
|
|
207
|
+
akm search "whatever you need"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Five commands. Every skill you've ever written, searchable in seconds.
|
|
211
|
+
|
|
212
|
+
The repo is at [github.com/itlackey/akm](https://github.com/itlackey/akm). If you've got agent assets scattered across platforms, give it a shot and let me know what breaks.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
*__Update (March 2026):__ This post was updated to reflect akm's current CLI. The unified `akm add` command replaces the earlier `akm stash add`, `akm setup` replaces `akm init`, and `akm list` replaces `akm stash list`. Sources (formerly "stash sources") are now managed through a single `akm add` / `akm remove` interface. If you're following along with an older version, `akm upgrade` will get you current.*
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
> **Note (2026-04-23):** This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a *kit* and the *Kit Maker's Guide*; those terms have been renamed to *stash* and *Stash Maker's Guide* throughout. The pre-rename text is preserved in this repository's git history.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Your Agent's Memory Shouldn't Disappear When the Session Ends
|
|
3
|
+
cover_image: 'https://raw.githubusercontent.com/itlackey/akm/main/docs/posts/akm-logo-sized.webp'
|
|
4
|
+
id: 3359720
|
|
5
|
+
series: akm-memory
|
|
6
|
+
description: A quick introduction to using OpenViking with akm
|
|
7
|
+
tags:
|
|
8
|
+
- ai
|
|
9
|
+
- agents
|
|
10
|
+
- cli
|
|
11
|
+
- skills
|
|
12
|
+
published: true
|
|
13
|
+
date: '2026-03-17T16:07:09Z'
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
> This is a dated article from AKM's publishing archive. For current product behavior, see the
|
|
17
|
+
> [documentation index](https://github.com/itlackey/akm/blob/main/docs/README.md).
|
|
18
|
+
|
|
19
|
+
> **⚠ Deprecation notice (akm v1):** The OpenViking provider described in this post is no longer supported in akm v1. Configurations using `--provider openviking` will fail to load. This post is preserved for historical reference. See the [configuration docs](https://github.com/itlackey/akm/blob/main/docs/reference/configuration.md) for current provider options.
|
|
20
|
+
|
|
21
|
+
This is part three in a series about managing the growing pile of skills, scripts, and context that AI coding agents depend on. In [part one](https://dev.to/itlackey/your-ai-agents-skill-list-is-getting-out-of-hand-32ck), I talked about why progressive disclosure beats loading everything into context. In [part two](https://dev.to/itlackey/you-already-have-dozens-of-agent-skills-you-just-cant-find-them), I showed how `akm` unifies your existing Claude Code, OpenCode, and Cursor assets into one searchable stash.
|
|
22
|
+
|
|
23
|
+
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?
|
|
24
|
+
|
|
25
|
+
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.
|
|
26
|
+
|
|
27
|
+
That's where [OpenViking](https://github.com/volcengine/OpenViking) comes in, and why `akm` now supports it as a first-class provider.
|
|
28
|
+
|
|
29
|
+
## What Is OpenViking?
|
|
30
|
+
|
|
31
|
+
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.
|
|
32
|
+
|
|
33
|
+
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 `akm`, its content shows up in search results alongside your local assets — same `type:name` refs, same ranking, same `akm show` workflow.
|
|
34
|
+
|
|
35
|
+
The part that matters for `akm` 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.
|
|
36
|
+
|
|
37
|
+
## Adding OpenViking as a Source
|
|
38
|
+
|
|
39
|
+
If you already have `akm` installed and an OpenViking server running, the setup is one command:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
akm add http://localhost:1933 --provider openviking # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
That registers the server as a source. From that point on, `akm search` queries your local stash and the OpenViking server in parallel. Results from both show up in the same `hits[]` array, ranked together.
|
|
46
|
+
|
|
47
|
+
If your server requires authentication:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
akm add http://localhost:1933 --provider openviking --options '{"apiKey":"your-api-key"}' # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Give it a name to keep things tidy:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
akm add http://localhost:1933 --provider openviking --name "team-context" --options '{"apiKey":"your-api-key"}' # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Verify it's registered:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
akm list # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
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.
|
|
66
|
+
|
|
67
|
+
## Searching Remote and Local Together
|
|
68
|
+
|
|
69
|
+
Here's what changes in practice. Before OpenViking, an `akm search` hit your local stash — your primary directory, search paths, and managed sources. Now it also hits any OpenViking servers you've registered.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
akm search "project architecture"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
This might return a local skill from your Claude Code directory *and* a knowledge doc from OpenViking. The results are unified: same format, same scoring, same `type:name` refs. Your agent can't tell the difference between a local asset and one from OpenViking — and it shouldn't need to.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
akm show knowledge:project-context
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
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 `akm show` — with a `content` field, an `action` field, and type metadata.
|
|
82
|
+
|
|
83
|
+
By default, OpenViking search uses semantic matching (via `POST /api/v1/search/find`). If you prefer text search for exact matching, configure the provider with:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
akm add http://localhost:1933 --provider openviking --options '{"apiKey":"your-key","searchType":"text"}' # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Text search uses OpenViking's grep endpoint, which deduplicates results by URI and ranks them by match frequency.
|
|
90
|
+
|
|
91
|
+
## Standing Up a Test Server
|
|
92
|
+
|
|
93
|
+
If you want to try this locally before pointing at a shared server, the akm repo includes a ready-made Docker Compose setup:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
git clone https://github.com/itlackey/akm.git
|
|
97
|
+
cd akm/tests/fixtures/openviking
|
|
98
|
+
|
|
99
|
+
# Start the server
|
|
100
|
+
docker compose up -d
|
|
101
|
+
|
|
102
|
+
# Wait a few seconds, then seed sample content
|
|
103
|
+
./seed.sh
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
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.
|
|
107
|
+
|
|
108
|
+
Now register it:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
akm add http://localhost:1933 --provider openviking --name openviking --options '{"apiKey":"akm-test-key"}' # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
And test:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
akm search "project architecture"
|
|
118
|
+
akm show knowledge:project-context
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
You should get back the full markdown content of the project architecture document. Search works across all sources:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
akm search "coding standards"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
And if you have Ollama running locally, you can enable semantic search by updating the `ov.conf` to point the embedding endpoint at your Ollama instance (`http://host.docker.internal:11434/v1`). Without embeddings, text search and direct content access still work fine.
|
|
128
|
+
|
|
129
|
+
Tear it down when you're done:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
docker compose down
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Why This Matters for Teams
|
|
136
|
+
|
|
137
|
+
The OpenViking integration solves a class of problems that local-only management can't.
|
|
138
|
+
|
|
139
|
+
**Shared context without shared files.** 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.
|
|
140
|
+
|
|
141
|
+
**Persistent memory across sessions.** 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 — `akm search "sprint planning decisions" --type memory` — and get back what it learned last week. That's a fundamentally different capability than loading the same static skills every time.
|
|
142
|
+
|
|
143
|
+
**Unified search across everything.** 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 `akm search` query, one result set, one `akm show` command — regardless of whether the asset is a Claude Code skill in `~/.claude/skills/`, a script from an npm stash, or a knowledge document on an OpenViking server across the network.
|
|
144
|
+
|
|
145
|
+
## The Full Picture
|
|
146
|
+
|
|
147
|
+
After three posts, here's what a fully-wired setup looks like:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Install
|
|
151
|
+
curl -fsSL https://raw.githubusercontent.com/itlackey/akm/main/install.sh | bash
|
|
152
|
+
akm setup
|
|
153
|
+
|
|
154
|
+
# Local platform assets
|
|
155
|
+
akm add ~/.claude/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
156
|
+
akm add .opencode/skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
157
|
+
akm add .cursor/rules # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
158
|
+
|
|
159
|
+
# Community and team stashes
|
|
160
|
+
akm add github:your-org/team-agent-toolkit # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
161
|
+
akm add @scope/deploy-skills # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
162
|
+
|
|
163
|
+
# Remote context server
|
|
164
|
+
akm add https://your-viking.internal:1933 --provider openviking --name team-context --options '{"apiKey":"..."}' # doclint:ignore (historical — pre-0.9.0 command spelling)
|
|
165
|
+
|
|
166
|
+
# Build the index
|
|
167
|
+
akm index
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Now drop the `AGENTS.md` snippet into every project and your agent has access to all of it:
|
|
171
|
+
|
|
172
|
+
```markdown
|
|
173
|
+
## Resources & Capabilities
|
|
174
|
+
|
|
175
|
+
You have access to a searchable library of scripts, skills, commands, agents,
|
|
176
|
+
knowledge, and memories via the `akm` CLI. Use `akm -h` for details.
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Local skills, remote knowledge, team stashes, community registries, persistent memories. One search, one interface, every agent.
|
|
180
|
+
|
|
181
|
+
The repo is at [github.com/itlackey/akm](https://github.com/itlackey/akm). OpenViking is at [github.com/volcengine/OpenViking](https://github.com/volcengine/OpenViking). Both are open source, both are moving fast, and the combination is genuinely useful infrastructure for anyone running agents in production.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
*__Update (March 2026):__ This post was updated to reflect akm's current CLI. `akm add` replaces the earlier `akm stash add` for adding sources (including OpenViking providers), `akm setup` replaces `akm init`, and `akm list` replaces `akm stash list`. Sources (formerly "stash sources") are now managed through a single `akm add` / `akm remove` interface. If you're following along with an older version, `akm upgrade` will get you current.*
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
> **Note (2026-04-23):** This post has been updated to align with akm 0.6.0 terminology. Earlier wording referred to a *kit* and the *Kit Maker's Guide*; those terms have been renamed to *stash* and *Stash Maker's Guide* throughout. The pre-rename text is preserved in this repository's git history.
|