Harness spec 1.2.0: the library's tools fit both projects; the CLI implements it

The CLI's facts in memory, notes_search, note_manage, skills_list,
skill_view and skill_manage are `variables` now, filled with the CLI's own
values (src/tool/spec-vars.ts): every description and parameter list the CLI
sends is word for word what 1.1.0 said, except note and document ids, which
are strings on both sides (a number is still taken). Descriptions are
filled by the prompt texts' rules, parameter descriptions too. `narrow`
says what a project offers of a shared tool's parameters. Memory's changes
are one pure function (applyOps). Conformance: fill, narrow, memory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
HomerandClaude Opus 5.5 committed 2026-10-20 11:45:14 +00:00
1 parent b7fcb46446
commit 539896494f
23 files changed
+1398 -88

No files matched your search

+14 -2
View File
@@ -15,7 +15,12 @@
"notes_delete"
]
},
"description": "Write your notes: things worth keeping that are longer than a memory entry and not a skill — findings, a design worked out with the user, a list to come back to.\n\n- create (title, body, scope); edit (id, title and/or body — body replaces the whole text); delete (id).\n- scope: \"project\" (default, when there is a project) or \"global\".\n- Not for facts that hold in every session (memory), procedures (skills), or the project's own records (tasks, decisions).",
"variables": {
"create_scope": "\", scope\" where notes have a scope, or empty",
"scope": "what `scope` means (\"scope: \\\"project\\\" (default, when there is a project) or \\\"global\\\".\"), or empty — the line goes",
"records": "other records a note is not for (\", or the project's own records (tasks, decisions)\"), or empty"
},
"description": "Write your notes: things worth keeping that are longer than a memory entry and not a skill — findings, a design worked out with the user, a list to come back to.\n\n- create (title, body{{create_scope}}); edit (id, title and/or body — body replaces the whole text); delete (id).\n- {{scope}}\n- Not for facts that hold in every session (memory), procedures (skills){{records}}.",
"parameters": {
"type": "object",
"properties": {
@@ -28,7 +33,7 @@
]
},
"id": {
"type": "integer"
"type": "string"
},
"title": {
"type": "string",
@@ -48,5 +53,12 @@
"required": [
"action"
]
},
"narrow": {
"llembas": {
"drop": [
"scope"
]
}
}
}