akm-cli 0.9.0-beta.5 → 0.9.0-beta.51
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 +711 -0
- package/README.md +12 -4
- package/dist/akm +38 -0
- package/dist/akm-migrate-storage +38 -0
- package/dist/assets/profiles/default.json +9 -4
- package/dist/assets/profiles/frequent.json +1 -1
- package/dist/assets/profiles/memory-focus.json +1 -1
- package/dist/assets/profiles/quick.json +1 -1
- package/dist/assets/profiles/synthesize.json +15 -0
- package/dist/assets/profiles/thorough.json +1 -1
- package/dist/assets/prompts/consolidate-system.md +23 -0
- package/dist/assets/prompts/contradiction-judge.md +33 -0
- package/dist/assets/prompts/distill-knowledge-system.md +22 -0
- package/dist/assets/prompts/distill-lesson-system.md +36 -0
- package/dist/assets/prompts/extract-session.md +6 -2
- package/dist/assets/prompts/graph-extract-system.md +1 -0
- package/dist/assets/prompts/graph-extract-user-prompt.md +1 -1
- package/dist/assets/prompts/memory-infer-system.md +1 -0
- package/dist/assets/prompts/memory-infer-user.md +5 -0
- package/dist/assets/prompts/metadata-enhance-system.md +1 -0
- package/dist/assets/prompts/procedural-system.md +44 -0
- package/dist/assets/prompts/recombine-system.md +40 -0
- package/dist/assets/prompts/staleness-detect-system.md +6 -0
- package/dist/assets/prompts/validate-summary-judge.md +1 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +38 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +38 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +39 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +40 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +43 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +38 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +43 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +40 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +43 -0
- package/dist/assets/templates/html/health.html +281 -111
- package/dist/assets/wiki/ingest-workflow-template.md +38 -10
- package/dist/cli/parse-args.js +46 -1
- package/dist/cli/shared.js +28 -0
- package/dist/cli.js +27 -11
- package/dist/commands/agent/agent-dispatch.js +2 -2
- package/dist/commands/agent/agent-support.js +0 -7
- package/dist/commands/agent/contribute-cli.js +17 -4
- package/dist/commands/config-cli.js +18 -2
- package/dist/commands/env/child-env.js +47 -0
- package/dist/commands/env/env-cli.js +33 -26
- package/dist/commands/env/secret-cli.js +36 -22
- package/dist/commands/feedback-cli.js +15 -6
- package/dist/commands/graph/graph-cli.js +5 -13
- package/dist/commands/graph/graph.js +76 -72
- package/dist/commands/health/checks.js +49 -1
- package/dist/commands/health/html-report.js +422 -80
- package/dist/commands/health.js +386 -9
- package/dist/commands/improve/calibration.js +161 -0
- package/dist/commands/improve/consolidate/chunking.js +141 -0
- package/dist/commands/improve/consolidate/eligibility.js +81 -0
- package/dist/commands/improve/consolidate/merge.js +145 -0
- package/dist/commands/improve/consolidate/sanitize.js +231 -0
- package/dist/commands/{lint.js → improve/consolidate/types.js} +1 -1
- package/dist/commands/improve/consolidate.js +635 -660
- package/dist/commands/improve/dedup.js +482 -0
- package/dist/commands/improve/distill.js +159 -69
- package/dist/commands/improve/eligibility.js +434 -0
- package/dist/commands/improve/encoding-salience.js +205 -0
- package/dist/commands/improve/extract-cli.js +124 -2
- package/dist/commands/improve/extract-prompt.js +39 -2
- package/dist/commands/improve/extract-watch.js +140 -0
- package/dist/commands/improve/extract.js +389 -40
- package/dist/commands/improve/feedback-valence.js +54 -0
- package/dist/commands/improve/homeostatic.js +467 -0
- package/dist/commands/improve/improve-auto-accept.js +138 -7
- package/dist/commands/improve/improve-cli.js +36 -61
- package/dist/commands/improve/improve-profiles.js +14 -0
- package/dist/commands/improve/improve-result-file.js +14 -25
- package/dist/commands/improve/improve-session.js +58 -0
- package/dist/commands/improve/improve.js +485 -2498
- package/dist/commands/improve/locks.js +154 -0
- package/dist/commands/improve/loop-stages.js +1083 -0
- package/dist/commands/improve/memory/memory-contradiction-detect.js +23 -28
- package/dist/commands/improve/outcome-loop.js +256 -0
- package/dist/commands/improve/preparation.js +1966 -0
- package/dist/commands/improve/proactive-maintenance.js +115 -0
- package/dist/commands/improve/procedural.js +418 -0
- package/dist/commands/improve/recombine.js +850 -0
- package/dist/commands/improve/reflect-noise.js +0 -0
- package/dist/commands/improve/reflect.js +183 -40
- package/dist/commands/improve/salience.js +438 -0
- package/dist/commands/improve/triage.js +93 -0
- package/dist/commands/lint/agent-linter.js +19 -24
- package/dist/commands/lint/base-linter.js +173 -60
- package/dist/commands/lint/command-linter.js +19 -24
- package/dist/commands/lint/env-key-rules.js +38 -1
- package/dist/commands/lint/fact-linter.js +39 -0
- package/dist/commands/lint/index.js +31 -13
- package/dist/commands/lint/memory-linter.js +1 -1
- package/dist/commands/lint/registry.js +7 -2
- package/dist/commands/lint/task-linter.js +3 -3
- package/dist/commands/lint/workflow-linter.js +26 -1
- package/dist/commands/proposal/drain-policies.js +5 -0
- package/dist/commands/proposal/drain.js +43 -50
- package/dist/commands/proposal/proposal-cli.js +21 -31
- package/dist/commands/proposal/proposal.js +5 -0
- package/dist/commands/proposal/propose.js +7 -2
- package/dist/commands/proposal/validators/proposal-quality-validators.js +9 -8
- package/dist/commands/proposal/validators/proposals.js +189 -63
- package/dist/commands/read/curate.js +414 -94
- package/dist/commands/read/knowledge.js +6 -3
- package/dist/commands/read/search-cli.js +9 -4
- package/dist/commands/read/search.js +10 -6
- package/dist/commands/read/show.js +86 -7
- package/dist/commands/sources/init.js +49 -17
- package/dist/commands/sources/installed-stashes.js +11 -3
- package/dist/commands/sources/schema-repair.js +43 -45
- package/dist/commands/sources/self-update.js +2 -2
- package/dist/commands/sources/source-add.js +7 -3
- package/dist/commands/sources/stash-cli.js +28 -40
- package/dist/commands/sources/stash-skeleton.js +23 -8
- package/dist/commands/tasks/tasks-cli.js +19 -27
- package/dist/commands/tasks/tasks.js +39 -11
- package/dist/commands/wiki-cli.js +21 -35
- package/dist/core/asset/asset-registry.js +3 -1
- package/dist/core/asset/asset-spec.js +18 -2
- package/dist/core/asset/frontmatter.js +166 -167
- package/dist/core/asset/markdown.js +8 -0
- package/dist/core/authoring-rules.js +92 -0
- package/dist/core/common.js +0 -5
- package/dist/core/config/config-migration.js +12 -11
- package/dist/core/config/config-schema.js +340 -56
- package/dist/core/config/config-types.js +3 -3
- package/dist/core/config/config.js +28 -7
- package/dist/core/events.js +3 -7
- package/dist/core/improve-types.js +11 -8
- package/dist/core/logs-db.js +10 -66
- package/dist/core/parse.js +36 -16
- package/dist/core/paths.js +3 -0
- package/dist/core/standards/resolve-standards-context.js +87 -0
- package/dist/core/standards/resolve-stash-standards.js +99 -0
- package/dist/core/standards/resolve-type-conventions.js +66 -0
- package/dist/core/state/migrations.js +714 -0
- package/dist/core/state-db.js +525 -474
- package/dist/indexer/db/db.js +439 -247
- package/dist/indexer/db/graph-db.js +129 -86
- package/dist/indexer/ensure-index.js +152 -17
- package/dist/indexer/graph/graph-boost.js +51 -41
- package/dist/indexer/graph/graph-extraction.js +218 -4
- package/dist/indexer/index-writer-lock.js +99 -0
- package/dist/indexer/indexer.js +123 -221
- package/dist/indexer/passes/dir-staleness.js +114 -0
- package/dist/indexer/passes/memory-inference.js +13 -5
- package/dist/indexer/passes/staleness-detect.js +2 -5
- package/dist/indexer/search/db-search.js +19 -6
- package/dist/indexer/search/ranking-contributors.js +22 -0
- package/dist/indexer/search/ranking.js +4 -0
- package/dist/indexer/search/search-source.js +17 -18
- package/dist/indexer/search/semantic-status.js +4 -0
- package/dist/indexer/walk/matchers.js +9 -0
- package/dist/integrations/agent/config.js +6 -53
- package/dist/integrations/agent/index.js +2 -18
- package/dist/integrations/agent/prompts.js +75 -9
- package/dist/integrations/agent/runner-dispatch.js +59 -0
- package/dist/integrations/harnesses/claude/session-log.js +11 -1
- package/dist/integrations/harnesses/index.js +2 -3
- package/dist/integrations/harnesses/opencode/session-log.js +173 -3
- package/dist/integrations/harnesses/opencode-sdk/index.js +2 -2
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +0 -2
- package/dist/integrations/session-logs/index.js +16 -0
- package/dist/llm/client.js +45 -15
- package/dist/llm/embedder.js +42 -3
- package/dist/llm/embedders/deterministic.js +66 -0
- package/dist/llm/embedders/local.js +66 -2
- package/dist/llm/feature-gate.js +8 -4
- package/dist/llm/graph-extract.js +67 -44
- package/dist/llm/memory-infer-impl.js +138 -0
- package/dist/llm/memory-infer.js +1 -127
- package/dist/llm/metadata-enhance.js +44 -31
- package/dist/llm/structured-call.js +49 -0
- package/dist/migrate-storage-node.mjs +8 -0
- package/dist/output/context.js +5 -5
- package/dist/output/renderers.js +74 -2
- package/dist/output/shapes/curate.js +14 -2
- package/dist/output/shapes/passthrough.js +0 -1
- package/dist/output/text/helpers.js +16 -1
- package/dist/registry/providers/skills-sh.js +21 -147
- package/dist/registry/providers/static-index.js +15 -157
- package/dist/registry/resolve.js +22 -9
- package/dist/runtime.js +25 -1
- package/dist/scripts/migrate-storage.js +2617 -1961
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +759 -510
- package/dist/setup/setup.js +29 -8
- package/dist/sources/include.js +6 -2
- package/dist/sources/providers/filesystem.js +0 -1
- package/dist/sources/providers/git-install.js +210 -0
- package/dist/sources/providers/git-provider.js +234 -0
- package/dist/sources/providers/git-stash.js +248 -0
- package/dist/sources/providers/git.js +10 -661
- package/dist/sources/providers/npm.js +2 -6
- package/dist/sources/providers/provider-utils.js +13 -7
- package/dist/sources/providers/sync-from-ref.js +9 -1
- package/dist/sources/providers/tar-utils.js +16 -8
- package/dist/sources/providers/website.js +9 -5
- package/dist/sources/website-ingest.js +187 -29
- package/dist/sources/wiki-fetchers/registry.js +53 -0
- package/dist/sources/wiki-fetchers/youtube.js +239 -0
- package/dist/storage/database.js +45 -10
- package/dist/storage/managed-db.js +82 -0
- package/dist/storage/repositories/registry-cache.js +92 -0
- package/dist/storage/sqlite-pragmas.js +146 -0
- package/dist/tasks/backends/cron.js +1 -1
- package/dist/tasks/backends/launchd.js +1 -1
- package/dist/tasks/backends/schtasks.js +1 -1
- package/dist/tasks/{resolveAkmBin.js → resolve-akm-bin.js} +2 -2
- package/dist/tasks/runner.js +5 -13
- package/dist/text-import-hook.mjs +0 -0
- package/dist/wiki/wiki.js +37 -0
- package/dist/workflows/db.js +3 -4
- package/dist/workflows/runtime/runs.js +1 -117
- package/dist/workflows/runtime/workflow-asset-loader.js +125 -0
- package/dist/workflows/validate-summary.js +2 -7
- package/docs/data-and-telemetry.md +3 -2
- package/docs/migration/release-notes/0.9.0.md +39 -0
- package/package.json +13 -11
- package/dist/commands/db-cli.js +0 -23
- package/dist/indexer/db/db-backup.js +0 -376
package/README.md
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
[](https://github.com/itlackey/akm/blob/main/LICENSE)
|
|
8
8
|
|
|
9
9
|
`akm` is a package manager for AI agent capabilities -- scripts, skills, commands,
|
|
10
|
-
agents, knowledge, memories, workflows, wikis,
|
|
11
|
-
tasks. It works with any AI coding assistant that can run shell commands,
|
|
10
|
+
agents, knowledge, memories, workflows, wikis, env files, secrets, lessons, and
|
|
11
|
+
scheduled tasks. It works with any AI coding assistant that can run shell commands,
|
|
12
12
|
including [Claude Code](https://claude.ai/code),
|
|
13
13
|
[OpenCode](https://opencode.ai), [Cursor](https://cursor.com), and more.
|
|
14
14
|
|
|
@@ -30,9 +30,17 @@ irm https://github.com/itlackey/akm/releases/latest/download/install.ps1 | iex
|
|
|
30
30
|
bun install -g akm-cli
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
**Option 3 — Node.js (requires Node.js >= 20.12):**
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
npm install -g akm-cli
|
|
37
|
+
```
|
|
38
|
+
|
|
33
39
|
Upgrade in place with `akm upgrade`.
|
|
34
40
|
|
|
35
|
-
> **AKM 0.
|
|
41
|
+
> **AKM 0.9.0 supports three install paths:** prebuilt binary, Bun, or Node.js >= 20.12.
|
|
42
|
+
> The old `vault` asset type was removed in 0.9.0; use `env` for whole `.env`
|
|
43
|
+
> groups and `secret` for standalone sensitive values.
|
|
36
44
|
|
|
37
45
|
## Quick Start
|
|
38
46
|
|
|
@@ -59,7 +67,7 @@ Add this to your `AGENTS.md`, `CLAUDE.md`, or system prompt:
|
|
|
59
67
|
## Resources & Capabilities
|
|
60
68
|
|
|
61
69
|
You have access to a searchable library of scripts, skills, commands, agents,
|
|
62
|
-
knowledge, memories, workflows, wikis,
|
|
70
|
+
knowledge, memories, workflows, wikis, env files, secrets, lessons, and scheduled tasks
|
|
63
71
|
via the `akm` CLI. Use `akm -h` for details.
|
|
64
72
|
```
|
|
65
73
|
|
package/dist/akm
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
|
|
6
|
+
case "$0" in
|
|
7
|
+
*/*) SCRIPT_PATH=$0 ;;
|
|
8
|
+
*)
|
|
9
|
+
SCRIPT_PATH=$(command -v -- "$0" 2>/dev/null || true)
|
|
10
|
+
if [ -z "$SCRIPT_PATH" ]; then
|
|
11
|
+
echo "akm launcher could not resolve its own path." >&2
|
|
12
|
+
exit 127
|
|
13
|
+
fi
|
|
14
|
+
;;
|
|
15
|
+
esac
|
|
16
|
+
|
|
17
|
+
if command -v readlink >/dev/null 2>&1; then
|
|
18
|
+
while [ -L "$SCRIPT_PATH" ]; do
|
|
19
|
+
LINK_TARGET=$(readlink "$SCRIPT_PATH")
|
|
20
|
+
case "$LINK_TARGET" in
|
|
21
|
+
/*) SCRIPT_PATH=$LINK_TARGET ;;
|
|
22
|
+
*) SCRIPT_PATH=${SCRIPT_PATH%/*}/$LINK_TARGET ;;
|
|
23
|
+
esac
|
|
24
|
+
done
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
SCRIPT_DIR=$(CDPATH= cd -- "${SCRIPT_PATH%/*}" && pwd)
|
|
28
|
+
|
|
29
|
+
if command -v bun >/dev/null 2>&1; then
|
|
30
|
+
exec bun "$SCRIPT_DIR/cli.js" "$@"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
if command -v node >/dev/null 2>&1; then
|
|
34
|
+
exec node "$SCRIPT_DIR/cli-node.mjs" "$@"
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
echo "akm requires Bun or Node.js >= 20.12.0 on PATH." >&2
|
|
38
|
+
exit 127
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
|
|
6
|
+
case "$0" in
|
|
7
|
+
*/*) SCRIPT_PATH=$0 ;;
|
|
8
|
+
*)
|
|
9
|
+
SCRIPT_PATH=$(command -v -- "$0" 2>/dev/null || true)
|
|
10
|
+
if [ -z "$SCRIPT_PATH" ]; then
|
|
11
|
+
echo "akm-migrate-storage launcher could not resolve its own path." >&2
|
|
12
|
+
exit 127
|
|
13
|
+
fi
|
|
14
|
+
;;
|
|
15
|
+
esac
|
|
16
|
+
|
|
17
|
+
if command -v readlink >/dev/null 2>&1; then
|
|
18
|
+
while [ -L "$SCRIPT_PATH" ]; do
|
|
19
|
+
LINK_TARGET=$(readlink "$SCRIPT_PATH")
|
|
20
|
+
case "$LINK_TARGET" in
|
|
21
|
+
/*) SCRIPT_PATH=$LINK_TARGET ;;
|
|
22
|
+
*) SCRIPT_PATH=${SCRIPT_PATH%/*}/$LINK_TARGET ;;
|
|
23
|
+
esac
|
|
24
|
+
done
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
SCRIPT_DIR=$(CDPATH= cd -- "${SCRIPT_PATH%/*}" && pwd)
|
|
28
|
+
|
|
29
|
+
if command -v bun >/dev/null 2>&1; then
|
|
30
|
+
exec bun "$SCRIPT_DIR/scripts/migrate-storage.js" "$@"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
if command -v node >/dev/null 2>&1; then
|
|
34
|
+
exec node "$SCRIPT_DIR/migrate-storage-node.mjs" "$@"
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
echo "akm-migrate-storage requires Bun or Node.js >= 20.12.0 on PATH." >&2
|
|
38
|
+
exit 127
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "Standard improve pass — all sub-processes
|
|
2
|
+
"description": "Standard improve pass — all sub-processes + sustaining proactive lane.",
|
|
3
3
|
"processes": {
|
|
4
4
|
"reflect": {
|
|
5
5
|
"enabled": true,
|
|
6
|
+
"limit": 25,
|
|
6
7
|
"allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "wiki", "workflow"]
|
|
7
8
|
},
|
|
8
|
-
"distill": { "enabled": true, "allowedTypes": ["memory"] },
|
|
9
|
-
"consolidate": { "enabled": true, "allowedTypes": ["memory"] },
|
|
9
|
+
"distill": { "enabled": true, "allowedTypes": ["memory"], "requirePlannedRefs": true },
|
|
10
|
+
"consolidate": { "enabled": true, "allowedTypes": ["memory"], "minPoolSize": 500 },
|
|
10
11
|
"memoryInference": { "enabled": true },
|
|
11
12
|
"graphExtraction": { "enabled": true },
|
|
12
|
-
"
|
|
13
|
+
"extract": { "enabled": true, "triage": { "enabled": true, "minScore": 2 } },
|
|
14
|
+
"proactiveMaintenance": { "enabled": true, "dueDays": 30, "maxPerRun": 15 },
|
|
15
|
+
"triage": { "enabled": false, "applyMode": "queue", "policy": "personal-stash" },
|
|
16
|
+
"recombine": { "enabled": false },
|
|
17
|
+
"procedural": { "enabled": false }
|
|
13
18
|
},
|
|
14
19
|
"sync": { "enabled": true, "push": true }
|
|
15
20
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"consolidate": { "enabled": false },
|
|
7
7
|
"memoryInference": { "enabled": true },
|
|
8
8
|
"graphExtraction": { "enabled": true },
|
|
9
|
-
"extract": { "enabled": true, "minNewSessions": 3 },
|
|
9
|
+
"extract": { "enabled": true, "minNewSessions": 3, "triage": { "enabled": true, "minScore": 2 } },
|
|
10
10
|
"triage": { "enabled": false }
|
|
11
11
|
},
|
|
12
12
|
"sync": { "enabled": true, "push": true }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Synthesis-only — cross-episodic recombination (#609). Opt-in periodic pass; all generative/extract passes off. (Procedural compilation (#615) is held OFF until cross-project scoping lands — it over-fits one-off sequences, 0% accept.)",
|
|
3
|
+
"processes": {
|
|
4
|
+
"reflect": { "enabled": false },
|
|
5
|
+
"distill": { "enabled": false },
|
|
6
|
+
"consolidate": { "enabled": false },
|
|
7
|
+
"memoryInference": { "enabled": false },
|
|
8
|
+
"graphExtraction": { "enabled": false },
|
|
9
|
+
"extract": { "enabled": false },
|
|
10
|
+
"triage": { "enabled": false },
|
|
11
|
+
"recombine": { "enabled": true },
|
|
12
|
+
"procedural": { "enabled": false }
|
|
13
|
+
},
|
|
14
|
+
"sync": { "enabled": true, "push": true }
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
You are the akm consolidate assistant analyzing memory assets.
|
|
2
|
+
|
|
3
|
+
Rules:
|
|
4
|
+
1. MERGE: Two or more memories are substantially duplicated or closely related → propose merging. Return the primary ref to keep and secondary refs to delete. Do NOT include mergedContent — the merge will be executed in a separate step.
|
|
5
|
+
2. DELETE: Memory is clearly outdated, contradicted, or redundant → propose deletion. NEVER propose delete for memories annotated `(captureMode: hot)` — they are user-explicit and only the user can retire them. The downstream guard will refuse these regardless, so proposing them just wastes tokens.
|
|
6
|
+
3. PROMOTE: Memory expresses a stable, reusable fact suitable as a `knowledge:` asset → propose promotion. Do NOT delete the source memory. NEVER propose promote / merge / contradict for memories annotated `(already queued)` — they have a pending proposal whose body matches; a duplicate will be deterministically dropped, so proposing them just wastes tokens.
|
|
7
|
+
4. CONTRADICT: Two memories assert logically exclusive facts such that following BOTH simultaneously is impossible — not merely related or overlapping. You MUST cite the exact sentence from Memory A and the exact sentence from Memory B that are in direct conflict. If you cannot cite specific opposing sentences, use KEEP instead. Sharing a topic, tool, domain, or workflow stage is NOT sufficient. Only direct factual opposites qualify: opposing recommended commands, opposing boolean flags, opposing version numbers, or mutually exclusive instructions. Use confidence ≥ 0.92 only; omit the op entirely if below that threshold.
|
|
8
|
+
5. KEEP: Memory is unique and current → omit from output.
|
|
9
|
+
|
|
10
|
+
Return ONLY JSON (no prose, no code fences):
|
|
11
|
+
{
|
|
12
|
+
"operations": [
|
|
13
|
+
{ "op": "merge", "primary": "memory:<name>", "secondaries": ["memory:<name>", ...], "mergeStrategy": "synthesize", "confidence": 0.95 },
|
|
14
|
+
{ "op": "delete", "ref": "memory:<name>", "reason": "<brief reason>", "confidence": 0.90 },
|
|
15
|
+
{ "op": "promote", "ref": "memory:<name>", "knowledgeRef": "knowledge:<suggested-slug>", "reason": "<brief reason>", "description": "<one sentence describing the new knowledge asset>", "confidence": 0.92 },
|
|
16
|
+
{ "op": "contradict", "ref": "memory:<name>", "contradictedByRef": "memory:<name>", "reason": "<brief reason>", "confidence": 0.88 }
|
|
17
|
+
],
|
|
18
|
+
"warnings": ["<optional concerns>"]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
For every operation, emit a `confidence` field in [0, 1] expressing your certainty that the operation is correct and safe. Use 0.95+ only when evidence is unambiguous. Omit the field rather than guessing if you are uncertain.
|
|
22
|
+
|
|
23
|
+
When the merged content includes an `updated` frontmatter field, the value MUST be a real ISO date string (e.g. `updated: 2026-05-20`). NEVER emit `updated: today`, `updated: {today}`, `updated: {today: null}`, `updated: now`, or any other literal placeholder/template-variable. If you do not have a real source-of-truth date, OMIT the `updated` field entirely — the post-processor will not invent one for you.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
You are evaluating two derived memory entries to determine if they contain
|
|
2
|
+
directly contradictory factual claims about the same subject.
|
|
3
|
+
|
|
4
|
+
Memory A:
|
|
5
|
+
Ref: {{A_REF}}
|
|
6
|
+
Description: {{A_DESCRIPTION}}
|
|
7
|
+
Content:
|
|
8
|
+
```
|
|
9
|
+
{{A_BODY}}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Memory B:
|
|
13
|
+
Ref: {{B_REF}}
|
|
14
|
+
Description: {{B_DESCRIPTION}}
|
|
15
|
+
Content:
|
|
16
|
+
```
|
|
17
|
+
{{B_BODY}}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Answer ONLY with valid JSON — no prose, no code fences:
|
|
21
|
+
{"contradicts": true|false, "confidence": 0.0, "reason": "<cite the exact opposing sentence from each memory, or explain why not contradicted>"}
|
|
22
|
+
|
|
23
|
+
A contradiction means the memories make LOGICALLY EXCLUSIVE claims: a practitioner
|
|
24
|
+
cannot follow BOTH simultaneously. The test: cite the exact sentence from Memory A
|
|
25
|
+
and the exact sentence from Memory B that are in direct conflict. If you cannot cite
|
|
26
|
+
specific opposing sentences, return false.
|
|
27
|
+
|
|
28
|
+
Sharing a topic, tool, domain, or workflow stage is NOT a contradiction. Only direct
|
|
29
|
+
factual opposites qualify: opposing recommended commands, opposing boolean flags,
|
|
30
|
+
opposing version numbers, or mutually exclusive instructions.
|
|
31
|
+
|
|
32
|
+
Set confidence ≥ 0.92 only when evidence is unambiguous. Use lower values when
|
|
33
|
+
uncertain — the caller will skip edges below 0.92.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
You are the akm `distill` distiller.
|
|
2
|
+
Given an asset and recent feedback events about it, produce a concise
|
|
3
|
+
*knowledge* markdown document capturing the durable, reusable facts.
|
|
4
|
+
Prefer stable guidance over narrative recap.
|
|
5
|
+
|
|
6
|
+
YOUR RESPONSE MUST START EXACTLY WITH `---` ON THE VERY FIRST LINE.
|
|
7
|
+
DO NOT output any prose, explanation, or code fences before or after.
|
|
8
|
+
|
|
9
|
+
Required output format:
|
|
10
|
+
---
|
|
11
|
+
description: <one-line summary of the knowledge asset>
|
|
12
|
+
tags: [<tag1>, <tag2>]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# <Title>
|
|
16
|
+
|
|
17
|
+
<body — structured markdown, durable facts only>
|
|
18
|
+
|
|
19
|
+
RULES:
|
|
20
|
+
- `description` MUST be a non-empty single-line string.
|
|
21
|
+
- Include a meaningful markdown body with a `# Title` heading.
|
|
22
|
+
- Output ONLY the knowledge file. No preamble, no code fences, no trailing prose.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
You are the akm `distill` distiller.
|
|
2
|
+
Given an asset and recent feedback events about it, produce a single
|
|
3
|
+
concise *lesson* an agent should remember next time it works on this
|
|
4
|
+
asset's domain.
|
|
5
|
+
|
|
6
|
+
YOUR RESPONSE MUST START EXACTLY WITH `---` ON THE VERY FIRST LINE.
|
|
7
|
+
DO NOT output any prose, explanation, or code fences before or after.
|
|
8
|
+
|
|
9
|
+
Required output format — copy this structure exactly:
|
|
10
|
+
---
|
|
11
|
+
description: <one complete sentence (ending with `.`) summarising what the lesson teaches>
|
|
12
|
+
when_to_use: <one complete sentence describing the concrete trigger condition>
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<lesson body — plain markdown, 1–3 short paragraphs of practical guidance>
|
|
16
|
+
|
|
17
|
+
## description field (MANDATORY)
|
|
18
|
+
- A single complete sentence in present tense, 20–400 chars, NO markdown.
|
|
19
|
+
- Self-contained: a reviewer must understand the lesson from this field alone.
|
|
20
|
+
- DO NOT start with "When ", "If ", or a connector word — that belongs in when_to_use.
|
|
21
|
+
- DO NOT copy a section heading ("Key takeaways", "For example", "Key pitfalls").
|
|
22
|
+
- DO NOT begin with a numbered list marker, code fence, or markdown heading.
|
|
23
|
+
|
|
24
|
+
GOOD: "Always validate ref existence before promoting a memory to knowledge; missing refs surface as silent 404s during accept."
|
|
25
|
+
BAD: "Key pitfalls"
|
|
26
|
+
BAD: "When working with the akm CLI"
|
|
27
|
+
BAD: "For example, you might..."
|
|
28
|
+
BAD: "1. Check the file"
|
|
29
|
+
|
|
30
|
+
RULES:
|
|
31
|
+
- `when_to_use` MUST be a complete sentence describing a concrete trigger. Never write `When working with <asset-name>` — that is circular and useless.
|
|
32
|
+
- `description` and `when_to_use` MUST differ from each other.
|
|
33
|
+
- The lesson body MUST be non-empty markdown prose. Do NOT restate `description:` or `when_to_use:` inside the body (no `**description:** ...` or `**when_to_use:** ...` lines — the frontmatter is the only place those keys belong).
|
|
34
|
+
- Do NOT emit a second `---` fence after the opening frontmatter — there are exactly two `---` lines in the output, both belonging to the single frontmatter block at the top.
|
|
35
|
+
- Do NOT reproduce the source asset verbatim — distil what a caller needs to know.
|
|
36
|
+
- Output ONLY the lesson file. No preamble, no code fences, no trailing prose.
|
|
@@ -28,7 +28,7 @@ Things NOT to extract:
|
|
|
28
28
|
- Started: {{STARTED_AT}}
|
|
29
29
|
- Ended: {{ENDED_AT}}
|
|
30
30
|
- Project hint: {{PROJECT_HINT}}
|
|
31
|
-
|
|
31
|
+
{{STANDARDS}}
|
|
32
32
|
## Filtered session transcript
|
|
33
33
|
|
|
34
34
|
The transcript below has already had read-only `akm` meta-ops and platform boilerplate stripped. Only content that might carry signal remains.
|
|
@@ -49,13 +49,17 @@ Respond with EXACTLY one JSON object matching this shape:
|
|
|
49
49
|
"when_to_use": "<one sentence 15-400 chars; REQUIRED only when type=lesson>",
|
|
50
50
|
"body": "<markdown body, 200-3000 chars typical>",
|
|
51
51
|
"confidence": <number 0.0-1.0>,
|
|
52
|
-
"evidence": "<one-line pointer to the moment in the session>"
|
|
52
|
+
"evidence": "<one-line pointer to the moment in the session>",
|
|
53
|
+
"orderedActions": ["<action-1>", "<action-2>", ...],
|
|
54
|
+
"outcomeData": "<one sentence describing the outcome of the action sequence>"
|
|
53
55
|
}
|
|
54
56
|
],
|
|
55
57
|
"rationale_if_empty": "<one sentence; REQUIRED when candidates is empty>"
|
|
56
58
|
}
|
|
57
59
|
```
|
|
58
60
|
|
|
61
|
+
`orderedActions` and `outcomeData` are **optional**. Include them only when the candidate represents a recurring action sequence (e.g. a recovery procedure, a build-fix recipe, a deployment checklist) where preserving the ordered steps adds future value. When present, `outcomeData` is required and must describe what happened when the sequence completed (success or failure). Omit both fields entirely for standalone facts, observations, or lessons that are not action-sequence-shaped.
|
|
62
|
+
|
|
59
63
|
## Rules
|
|
60
64
|
|
|
61
65
|
1. **Zero candidates is a valid and frequent answer.** Most sessions yield no new durable insight. When that's the case, return `{"candidates": [], "rationale_if_empty": "..."}` explaining what you saw and why it didn't rise to durable-knowledge level. Do not fabricate.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
You extract a knowledge graph from developer notes. Return ONLY valid JSON — no prose, no markdown fences, no preamble.
|
|
@@ -2,7 +2,7 @@ Extract entities and relations from the asset body below.
|
|
|
2
2
|
|
|
3
3
|
Rules:
|
|
4
4
|
- Output ONLY a JSON object: {"entities": ["Entity One", ...], "relations": [{"from": "A", "to": "B", "type": "uses"}, ...]}.
|
|
5
|
-
- Entities are short, canonical noun phrases (project names, services, tools, people, file/
|
|
5
|
+
- Entities are short, canonical noun phrases (project names, services, tools, people, technical concepts). Do NOT emit file or directory paths (anything containing "/" or "\") — they are dropped downstream.
|
|
6
6
|
- Relations connect two entities that both appear in the entities array.
|
|
7
7
|
- "type" is a short verb phrase (e.g. "uses", "depends on", "owns", "documents"). Optional; omit when unsure.
|
|
8
8
|
- Drop pleasantries, meta-commentary, and timestamps.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
You compress a developer memory into one high-signal derived memory for later retrieval. Return only valid JSON. No prose outside the JSON object. No markdown fences.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Compress the memory below into one derived memory. Output ONLY JSON:
|
|
2
|
+
{"title":"short title string","description":"one sentence summary string","tags":["tag1","tag2"],"searchHints":["search phrase 1","search phrase 2"],"content":"2-3 sentence compressed body preserving key facts verbatim"}
|
|
3
|
+
Rules: be specific, no vague generalizations, preserve key facts (names/versions/paths/config keys verbatim), merge related points, 3-8 tags, 3-6 searchHints. The content field must be a plain string with 2-3 sentences.
|
|
4
|
+
|
|
5
|
+
Memory:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
You are a metadata generator for a developer asset registry. Given a script/skill/command/agent entry, generate improved metadata. Respond with ONLY valid JSON, no markdown fencing.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
You are the akm `procedural` compiler.
|
|
2
|
+
|
|
3
|
+
You are given a RECURRING ordered action sequence — the SAME ordered list of
|
|
4
|
+
steps that an agent has successfully performed across several independent
|
|
5
|
+
sessions. Your job is to turn that bare sequence into a clean, reusable
|
|
6
|
+
WORKFLOW: give the workflow a title and a one-sentence description, and turn each
|
|
7
|
+
ordered action into a named step with clear imperative instructions.
|
|
8
|
+
|
|
9
|
+
You MUST NOT invent new steps, drop steps, merge steps, or reorder them. The
|
|
10
|
+
ordered action list is the source of truth. Return EXACTLY one step per input
|
|
11
|
+
action, in the SAME order.
|
|
12
|
+
|
|
13
|
+
YOUR RESPONSE MUST BE A SINGLE JSON OBJECT AND NOTHING ELSE.
|
|
14
|
+
DO NOT output prose, explanation, or code fences before or after the JSON.
|
|
15
|
+
|
|
16
|
+
When the sequence is a coherent, reusable procedure, return:
|
|
17
|
+
{
|
|
18
|
+
"title": "<short imperative workflow title, no trailing period>",
|
|
19
|
+
"description": "<one complete sentence (ending with a period) stating what the workflow accomplishes>",
|
|
20
|
+
"steps": [
|
|
21
|
+
{
|
|
22
|
+
"title": "<short imperative step title>",
|
|
23
|
+
"instructions": "<one or more imperative sentences telling an agent exactly how to perform this step>",
|
|
24
|
+
"completionCriteria": ["<optional bullet: an observable signal the step is done>"]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
When the sequence is NOT a coherent reusable procedure (it is noise, the steps do
|
|
30
|
+
not form a meaningful workflow, or any reusable framing would be a stretch),
|
|
31
|
+
return an explicit null:
|
|
32
|
+
null
|
|
33
|
+
|
|
34
|
+
A justified null is a CORRECT and expected outcome. Do NOT fabricate a hollow
|
|
35
|
+
workflow to avoid returning null.
|
|
36
|
+
|
|
37
|
+
## Rules
|
|
38
|
+
- `steps` MUST have EXACTLY as many entries as the input action list, in order.
|
|
39
|
+
- Every step MUST have a non-empty `title` and non-empty `instructions`.
|
|
40
|
+
- `completionCriteria` is OPTIONAL; omit it rather than inventing weak criteria.
|
|
41
|
+
- The `description` MUST be a single complete present-tense sentence with NO
|
|
42
|
+
markdown, self-contained enough for a reviewer to understand the workflow.
|
|
43
|
+
- Ground every step in the corresponding input action; do not introduce outside
|
|
44
|
+
facts or tools the action does not mention.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
You are the akm `recombine` synthesizer.
|
|
2
|
+
|
|
3
|
+
You are given a CLUSTER of related memories — distinct episodes that share a
|
|
4
|
+
topic (a tag or a graph entity) but were recorded independently. Your job is to
|
|
5
|
+
induce ONE cross-episodic generalization: a single durable insight that none of
|
|
6
|
+
the input memories states on its own, but that the cluster as a whole supports.
|
|
7
|
+
|
|
8
|
+
This is hypothesis formation, not summarization. A good generalization explains
|
|
9
|
+
WHY the individual episodes are instances of the same underlying pattern and
|
|
10
|
+
gives an agent a reusable rule for the next, unseen episode.
|
|
11
|
+
|
|
12
|
+
YOUR RESPONSE MUST BE A SINGLE JSON OBJECT AND NOTHING ELSE.
|
|
13
|
+
DO NOT output prose, explanation, or code fences before or after the JSON.
|
|
14
|
+
|
|
15
|
+
When a defensible generalization exists, return:
|
|
16
|
+
{
|
|
17
|
+
"description": "<one complete sentence (ending with a period) stating the generalization>",
|
|
18
|
+
"when_to_use": "<one complete sentence describing the concrete trigger condition>",
|
|
19
|
+
"body": "<1-3 short paragraphs of practical guidance grounded in the cluster>"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
When NO defensible generalization exists — the memories merely share a keyword,
|
|
23
|
+
or any unifying claim would be a stretch — return an explicit null:
|
|
24
|
+
null
|
|
25
|
+
|
|
26
|
+
A justified null is a CORRECT and expected outcome. Do NOT invent a weak or
|
|
27
|
+
generic generalization to avoid returning null. It is better to propose nothing
|
|
28
|
+
than to propose a hollow over-generalization.
|
|
29
|
+
|
|
30
|
+
## description field (MANDATORY when not null)
|
|
31
|
+
- A single complete present-tense sentence, NO markdown.
|
|
32
|
+
- Self-contained: a reviewer must understand the hypothesis from this field alone.
|
|
33
|
+
- DO NOT start with "When " or "If " — that belongs in `when_to_use`.
|
|
34
|
+
- DO NOT merely restate one input memory; the value is the CROSS-episode pattern.
|
|
35
|
+
|
|
36
|
+
## Guardrails
|
|
37
|
+
- Induce exactly ONE generalization for the whole cluster.
|
|
38
|
+
- Ground every claim in the supplied memories; do not introduce outside facts.
|
|
39
|
+
- This is a HYPOTHESIS — it will be re-confirmed across future runs before it is
|
|
40
|
+
ever promoted to a durable lesson. Frame it as a candidate rule, not a verdict.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
You are a belief-state classifier for a memory store. Given a candidate memory and a list of more-recent similar memories from the same store, decide whether the candidate is still current or has been superseded.
|
|
2
|
+
|
|
3
|
+
Respond on the first line with exactly YES or NO.
|
|
4
|
+
If YES, the second line MUST be of the form `SUPERSEDED_BY: <ref>` where <ref> is the exact ref of the superseding memory from the list provided. Do NOT invent refs.
|
|
5
|
+
If NO, do not include any additional lines.
|
|
6
|
+
No prose, no preamble, no markdown.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
You are a strict completion auditor for a software workflow engine. Given a step's completion criteria and a summary of the work an agent claims to have done, judge whether the summary provides concrete evidence that EVERY criterion is satisfied. Be skeptical: vague, hand-wavy, or unsubstantiated claims do NOT satisfy a criterion. Respond with ONLY a JSON object: {"complete": boolean, "missing": string[], "feedback": string}. "missing" lists the exact criteria that are not yet satisfied; "feedback" is a short directive telling the agent what to finish or fix. No prose, no markdown fences.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: convention
|
|
3
|
+
description: Soft authoring conventions for agent assets using scoped role, tool, and maintenance rules.
|
|
4
|
+
when_to_use: Surfaced to authoring agents when they write or revise an agent asset.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
SOFT guidance only — advice, not a contract. Nothing here is enforced by the
|
|
9
|
+
proposal gate; validator-rejecting HARD rules live in src/core/authoring-rules.ts
|
|
10
|
+
and remain the sole enforced source. Editing or deleting this file cannot weaken
|
|
11
|
+
the gate. Tune the guidance below to match how your stash wants this asset type
|
|
12
|
+
maintained.
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
# Agent authoring conventions
|
|
16
|
+
|
|
17
|
+
An agent asset defines a reusable role. Treat it like a disciplined maintainer, not a generic personality. Its job is to know its scope, read the right rulebooks, use the right tools, and leave the stash in better shape.
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
Use an agent when a recurring task benefits from a specialized role, bounded responsibilities, and explicit tool behavior.
|
|
22
|
+
|
|
23
|
+
## Authoring strategy
|
|
24
|
+
|
|
25
|
+
- Write the description so a dispatcher knows exactly when to delegate to this agent.
|
|
26
|
+
- Define the agent’s domain, authority, boundaries, and expected output.
|
|
27
|
+
- Specify what the agent must read first: relevant stash standards, type conventions, reference docs, source files, or prior lessons.
|
|
28
|
+
- State tool expectations plainly: what tools it may use, what it should avoid, and when it must ask for human review.
|
|
29
|
+
- Give the agent maintenance duties when appropriate: update cross-references, append logs, preserve provenance, and surface contradictions.
|
|
30
|
+
- Prefer a narrow role that does one thing reliably over a broad do-everything persona.
|
|
31
|
+
- Include handoff behavior: what the agent should return when it cannot complete the task safely.
|
|
32
|
+
|
|
33
|
+
## Maintenance strategy
|
|
34
|
+
|
|
35
|
+
- Refine the agent when repeated sessions show the same delegation failure.
|
|
36
|
+
- Add explicit negative guidance when the agent overreaches.
|
|
37
|
+
- Keep role instructions stable and concise; move large background material into knowledge assets.
|
|
38
|
+
- Use lessons to capture operational improvements, then promote stable ones into the agent when they become part of the role.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: convention
|
|
3
|
+
description: Soft authoring conventions for command assets using repeatable LLM operation patterns.
|
|
4
|
+
when_to_use: Surfaced to authoring agents when they write or revise a command asset.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
SOFT guidance only — advice, not a contract. Nothing here is enforced by the
|
|
9
|
+
proposal gate; validator-rejecting HARD rules live in src/core/authoring-rules.ts
|
|
10
|
+
and remain the sole enforced source. Editing or deleting this file cannot weaken
|
|
11
|
+
the gate. Tune the guidance below to match how your stash wants this asset type
|
|
12
|
+
maintained.
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
# Command authoring conventions
|
|
16
|
+
|
|
17
|
+
A command is a reusable markdown prompt template invoked by name. Treat it like an operation in the stash: every vague instruction will compound into repeated vague output.
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
Use a command when the user or agent needs to perform the same prompt-shaped task repeatedly with different arguments or context.
|
|
22
|
+
|
|
23
|
+
## Authoring strategy
|
|
24
|
+
|
|
25
|
+
- Put the task, inputs, constraints, and expected output shape near the top.
|
|
26
|
+
- Make argument placeholders obvious and describe what each one should contain.
|
|
27
|
+
- Tell the model what to inspect before acting, especially relevant stash assets, facts, standards, or reference docs.
|
|
28
|
+
- State the decision boundary: what the command should do directly, what it should only propose, and what it should refuse or defer.
|
|
29
|
+
- Include output requirements that are stable across runs.
|
|
30
|
+
- Keep the prompt tight. A command should be easy to invoke and hard to misinterpret.
|
|
31
|
+
- Avoid embedding one-time project details unless the command is intentionally project-specific.
|
|
32
|
+
|
|
33
|
+
## Maintenance strategy
|
|
34
|
+
|
|
35
|
+
- If users repeatedly clarify the same missing detail, add that detail to the command.
|
|
36
|
+
- If command output regularly becomes useful durable knowledge, instruct the agent to file the result into the right asset type.
|
|
37
|
+
- If the command starts handling multiple unrelated tasks, split it into smaller commands.
|
|
38
|
+
- Preserve a clear invocation contract so future agents can call the command safely.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: convention
|
|
3
|
+
description: Soft authoring conventions for fact assets using pinned-core and just-in-time context principles.
|
|
4
|
+
when_to_use: Surfaced to authoring agents when they write or revise a fact asset.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
SOFT guidance only — advice, not a contract. Nothing here is enforced by the
|
|
9
|
+
proposal gate; validator-rejecting HARD rules live in src/core/authoring-rules.ts
|
|
10
|
+
and remain the sole enforced source. Editing or deleting this file cannot weaken
|
|
11
|
+
the gate. Tune the guidance below to match how your stash wants this asset type
|
|
12
|
+
maintained.
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
# Fact authoring conventions
|
|
16
|
+
|
|
17
|
+
A fact is durable stash-level context: personal, team, project, convention, or meta knowledge. Treat facts as the stash’s semantic layer — selectively loaded context that should guide future work without bloating every prompt.
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
Use a fact for stable information that future agents should treat as true or normative: user preferences, project identity, team stack, architecture principles, naming conventions, tag vocabulary, or stash organization.
|
|
22
|
+
|
|
23
|
+
## Authoring strategy
|
|
24
|
+
|
|
25
|
+
- Write each fact as a standing declaration that can survive across sessions.
|
|
26
|
+
- Keep it short, high-signal, and self-contained.
|
|
27
|
+
- Choose the narrowest useful category: personal, team, project, convention, or meta.
|
|
28
|
+
- Use `pinned: true` only for the small core that should be available constantly.
|
|
29
|
+
- Leave most facts unpinned so they can be retrieved just-in-time.
|
|
30
|
+
- Include scope and provenance when a fact is project-specific, inferred, or subject to change.
|
|
31
|
+
- Separate facts from memories: memories preserve observations; facts state durable truth or durable policy.
|
|
32
|
+
- Separate facts from knowledge: knowledge explains a topic; facts declare compact context.
|
|
33
|
+
|
|
34
|
+
## Maintenance strategy
|
|
35
|
+
|
|
36
|
+
- Revise or supersede facts when the durable truth changes.
|
|
37
|
+
- Do not allow contradictory facts to remain equally active.
|
|
38
|
+
- Promote repeated memories or lessons into facts only when they become stable context.
|
|
39
|
+
- Keep convention and meta facts especially clear, because they steer future asset creation.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: convention
|
|
3
|
+
description: Soft authoring conventions for knowledge assets as compiled, on-demand reference documents.
|
|
4
|
+
when_to_use: Surfaced to authoring agents when they write or revise a knowledge asset.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
SOFT guidance only — advice, not a contract. Nothing here is enforced by the
|
|
9
|
+
proposal gate; validator-rejecting HARD rules live in src/core/authoring-rules.ts
|
|
10
|
+
and remain the sole enforced source. Editing or deleting this file cannot weaken
|
|
11
|
+
the gate. Tune the guidance below to match how your stash wants this asset type
|
|
12
|
+
maintained.
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
# Knowledge authoring conventions
|
|
16
|
+
|
|
17
|
+
A knowledge asset is a compiled reference document meant to be read on demand. Treat it as the synthesized layer above raw material: not source files, not chat residue, but integrated, navigable understanding that saves future agents from rediscovering the same material.
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
Use a knowledge asset for durable reference material, synthesized explanations, design notes, comparisons, and project context that is broader than a single memory but less procedural than a skill.
|
|
22
|
+
|
|
23
|
+
## Authoring strategy
|
|
24
|
+
|
|
25
|
+
- Open with a plain top-level title that names the subject.
|
|
26
|
+
- Add a concise orientation paragraph: what this document covers and when it should be read.
|
|
27
|
+
- For a long reference, add a table of contents near the top so the full scope is visible even on a partial read.
|
|
28
|
+
- Organize by stable concepts, decisions, entities, or questions — roughly one page per concept.
|
|
29
|
+
- Cross-reference related assets instead of duplicating them, so a navigable graph forms over time.
|
|
30
|
+
- Preserve provenance where it matters: cite source files, raw notes, session logs, or issues by path/ref.
|
|
31
|
+
- Call out contradictions, uncertainty, stale claims, and open questions explicitly.
|
|
32
|
+
- Prefer accurate synthesis over exhaustive dumping. Raw material belongs elsewhere; this file is the compiled layer.
|
|
33
|
+
- Use tables or checklists when they make retrieval and comparison easier.
|
|
34
|
+
|
|
35
|
+
## Maintenance strategy
|
|
36
|
+
|
|
37
|
+
- Update the existing page when new information changes the same topic; append a dated note rather than silently rewriting when provenance matters.
|
|
38
|
+
- Create a new page when the concept deserves its own durable entry.
|
|
39
|
+
- Add links both ways when a new relationship matters.
|
|
40
|
+
- Periodically scan for orphaned, stale, or overlapping knowledge docs and consolidate them.
|