@remembrance-ai/opencode-plugin 0.1.77 → 0.2.1

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.
@@ -1,5 +1,14 @@
1
1
  # Remembrance payload examples
2
2
 
3
+ These broad payloads are compatibility examples for raw REST, hosted MCP, and
4
+ older clients. Current organization-capable local clients advertise
5
+ `private-learning-capture-v1` and use `capture_learning` instead: `lesson` for
6
+ a compact generalized lesson, `private_skill` for complete reusable
7
+ instructions, or `preference` for durable working behavior. They then invoke
8
+ only the exact private action returned by the local router. Query-result fit
9
+ continues to use `submit_query_feedback`, and post-use usefulness continues to
10
+ use categorical `submit_feedback` independently.
11
+
3
12
  ## Skill-use remembrance
4
13
 
5
14
  ```json
@@ -35,16 +44,77 @@
35
44
 
36
45
  Legacy `attestation_token_hash` is no longer accepted. Verified trust uses `POST /api/v1/agent/attest/challenge` followed by a plugin-signed `evidence.attestation` object.
37
46
 
38
- `suggested_update` describes a requested content operation; it does not decide
39
- the final skill topology. When the remembrance itself is accepted, Remembrance
40
- creates reviewable evidence through the normal verification pipeline. The
41
- topology router may amend the target, create a scoped specialization, create a
42
- strategy fork or independent skill, record a typed preference, retain evidence
43
- without mutation, or hold for review. The live skill changes only after the
47
+ `suggested_update` describes an intended operation; it does not decide the
48
+ final topology or supply a parent edit. An accepted remembrance retains
49
+ `amend_skill` and `metadata_update` hints as evidence without creating an empty
50
+ publication suggestion. Explicit `deprecate_skill` and `new_skill` requests
51
+ still enter their existing reviewed lifecycles. For an authored parent change,
52
+ use the suggestion/idea lane below. The live skill changes only after the
44
53
  selected route clears its safety, quality, target, policy, and version guards.
45
54
  `score_adjustment` is ignored (scoring is deterministic); use `kind: "none"`
46
55
  when no content operation is proposed.
47
56
 
57
+ ## Authored parent amendments
58
+
59
+ For `submit_suggestion` / `POST /api/v1/agent/suggestions`, send the complete
60
+ intended instruction body in `payload.skill_md`, `payload.proposed_skill_md`
61
+ or `payload.full_skill_md`. Start from the current authorized skill body and
62
+ preserve instructions you are not changing; do not send only a diff or an
63
+ isolated addition as the replacement body. For a parent amendment, `summary`,
64
+ `diff_text` and a verifier's `proposed_patch` explain the review, but are never
65
+ appended as instructions or implicitly saved as catalog guidance.
66
+
67
+ This synthetic example replaces the complete body of a small public skill:
68
+
69
+ ```json
70
+ {
71
+ "skill_slug": "synthetic-state-check",
72
+ "suggestion_type": "amend_skill",
73
+ "summary": "Check the response status before interpreting the result.",
74
+ "diff_text": "Review context: add the response-status check.",
75
+ "payload": {
76
+ "skill_md": "# State check\n\nRead the current state. Check the response status before interpreting the result. Compare it with the expected state and report any difference.\n"
77
+ }
78
+ }
79
+ ```
80
+
81
+ For a catalog-only change, submit the existing structured catalog fields
82
+ explicitly. For example:
83
+
84
+ ```json
85
+ {
86
+ "skill_slug": "synthetic-state-check",
87
+ "suggestion_type": "metadata_update",
88
+ "summary": "Describe the skill's existing response-status check.",
89
+ "payload": {
90
+ "summary": "Compare the current and expected state after checking the response status."
91
+ }
92
+ }
93
+ ```
94
+
95
+ These are payload-shape examples, not permission to submit public content.
96
+ Keep organization authentication and private protection on organization
97
+ requests; never remove a key to make a private amendment public. Current
98
+ organization-capable clients still use their authorized local capture/router
99
+ and only its returned actions. These examples do not add a direct mutation
100
+ tool or bypass that contract. Preserve the existing organization array
101
+ replacement/merge rules for catalog updates.
102
+
103
+ For an idea routed to amend a parent, use its existing `proposed_skill_md` or
104
+ explicit `proposed_metadata` fields. Authored input does not remove an existing
105
+ target-resolution or protection hold. A parent amendment without authored input
106
+ is retained in a recoverable review hold: resubmit the complete intended body
107
+ or structured catalog change through the same authorized review lane. A changed
108
+ payload is a new logical submission and needs its own idempotency key; retries
109
+ of that submission reuse its key. A reviewer may instead select `evidence_only`
110
+ to retain the comment without publishing. Do not report a replacement as
111
+ submitted or a skill as changed until the corresponding receipt proves it.
112
+
113
+ An accepted identical body/catalog result is an audited no-op: it preserves
114
+ the live version and does not enqueue semantic refresh. Explicit deprecation,
115
+ new-skill proposals and reviewed distinct-child routes retain their existing
116
+ contracts; they are not universally held by the parent-amendment rule.
117
+
48
118
  Provider fields are intentionally split:
49
119
 
50
120
  - `agent.provider` describes the calling runtime: `codex`, `cursor`, `claude`,
@@ -122,12 +192,14 @@ mistake, CI/deploy fails, a smoke/probe exposes a regression, or a
122
192
  release/versioning miss is fixed. Put the reusable rule in `lesson` and concrete
123
193
  failure classes in `outcome.failure_modes`; do not paste raw logs or secrets.
124
194
 
125
- ## Feedback upgrade next step
195
+ ## Legacy feedback upgrade next step
126
196
 
127
197
  `POST /api/v1/agent/feedback` creates minimal `skill_feedback` intake. When
128
- feedback is negative or the lesson is substantive, the response may include a
129
- full remembrance payload that an agent can submit without hand-building the
130
- schema:
198
+ called by a legacy/raw client, negative or substantive feedback may include a
199
+ full remembrance payload that the client can submit without hand-building the
200
+ schema. A capture-capable organization client omits `lesson` from feedback and
201
+ calls `capture_learning` separately, so this upgrade response is intentionally
202
+ absent:
131
203
 
132
204
  When the skill came from a durable query, include both correlation fields:
133
205
 
@@ -202,9 +274,11 @@ predetermined metadata update or a live mutation:
202
274
  }
203
275
  ```
204
276
 
205
- Do not submit a duplicate suggestion for the same pattern. Wait for the
206
- topology, verification, review, and versioning result before assuming the
207
- active skill changed.
277
+ Do not submit a duplicate suggestion for the same pattern. Its review prose
278
+ does not supply an authored parent catalog patch or instruction body. If you
279
+ separately intend a parent change, use the authored amendment lane above and
280
+ the existing review policy; do not assume the evidence receipt changed the
281
+ active skill.
208
282
 
209
283
  Local identity recovery: the persisted key file
210
284
  `~/.config/remembrance/agent-key.json` is a private key. Back it up like an
@@ -247,12 +321,15 @@ later batch review. External sources such as skills.sh are checked only as
247
321
  candidates; candidates still need safety checks and normal review before they
248
322
  become public skills/resources.
249
323
 
250
- For an organization-approved private workflow, submit this with MCP
251
- `propose_private_skill` or REST
252
- `POST /api/v1/agent/private-skill-ideas`. That route requires an organization
324
+ For an organization-approved private workflow, a current local client calls
325
+ `capture_learning.private_skill` with complete instructions and follows the
326
+ returned `submit_private_skill_candidate` draft action. Raw, hosted, and older
327
+ clients use MCP `propose_private_skill` or REST
328
+ `POST /api/v1/agent/private-skill-ideas`. The endpoint requires an organization
253
329
  submission key and can never create a public candidate: privacy is structural,
254
330
  so an unresolved key fails the request closed rather than downgrading it to a
255
- public submission. Prefer it for anything repository-derived.
331
+ public submission. Prefer this private boundary for anything
332
+ repository-derived.
256
333
 
257
334
  Use `propose_skill_idea` or `POST /api/v1/agent/skill-ideas` only when a public
258
335
  candidate is an acceptable outcome, and after checking that the payload matches
@@ -11,11 +11,12 @@ REST/HTTPS, skill-only installs, enterprise org keys, local identity, and common
11
11
  Cursor, Gemini, or another agent.
12
12
  - The user has an enterprise/org API key and needs to make an agent use
13
13
  org-scoped skills or private overlays.
14
- - MCP tools such as run_connection_doctor, get_connection_status, query_skills, list_skills,
15
- invoke_skill, submit_query_feedback, submit_feedback, submit_remembrance,
16
- propose_private_skill, queue_private_skill_import, report_task_outcome,
17
- get_value_proof, get_skill, get_resource, or bootstrap_agent_identity are
18
- missing.
14
+ - MCP tools such as run_connection_doctor, get_connection_status, query_skills,
15
+ list_skills, invoke_skill, submit_query_feedback, submit_feedback,
16
+ report_task_outcome, get_value_proof, get_skill, or get_resource are missing.
17
+ Local plugins additionally expose capture_learning and the exact private
18
+ lesson/skill draft actions; hosted MCP retains submit_remembrance and
19
+ propose_private_skill because it has no durable device outbox.
19
20
  - A native plugin appears installed but hooks, trust prompts, or MCP tools do
20
21
  not work.
21
22
  - A request fails with 401, 403, 404, 413, 422, 429, or a missing-key error.
@@ -67,15 +68,15 @@ organization scope or anonymous scope; any active key for that organization is
67
68
  valid. Identical retries are
68
69
  safe, but later changed judgments conflict. Query receipts expire after 30 days
69
70
  by default. Use submit_feedback only after actually using a skill, and pass the
70
- same `query_id` and `result_id` so the surfaced-to-use funnel closes. The server automatically
71
- collects query-fit profiles, shadow-evaluates them, and trains a pairwise
72
- reranker only from diverse authenticated organization-key comparisons between
73
- public results. Anonymous feedback remains low weight, never trains the shared
74
- model, and never directly affects organization rankings; self-reported agent IDs
75
- do not establish identity. Private organization comparisons remain
76
- organization-scoped, and labels rerank candidates rather than rewriting
77
- content-derived embeddings. Fresh-feedback gates promote improvements and roll
78
- back regressions automatically.
71
+ same `query_id` and `result_id` so the surfaced-to-use funnel closes.
72
+ Organization verdicts shape only that organization's rankings unless its admin
73
+ opts in to shared learning, which shares only weekly counts per public skill
74
+ version. Anonymous feedback remains low weight, never trains a shared model, and
75
+ never directly affects organization rankings; self-reported agent IDs do not
76
+ establish identity. No learned reranker is trained or served. Labels adjust
77
+ bounded retrieval profiles rather than rewriting content-derived embeddings.
78
+ Retrieval profiles move through collecting, shadow and active stages
79
+ automatically and do not change global skill usefulness.
79
80
 
80
81
  When a high, accepted, current, non-high-risk result has fresh grade A/B proof
81
82
  for the exact skill version, observed model revision, reasoning effort, task
@@ -127,12 +128,12 @@ Codex requires it.
127
128
  Codex will not execute plugin hooks until their exact definitions are trusted.
128
129
  In the Codex window opened by the installer, if Codex shows a **Hooks need
129
130
  review** screen, choose **Review hooks** and trust only the Remembrance
130
- `SessionStart`, `UserPromptSubmit`, `PostToolUse`, and `Stop` hooks.
131
- If no review screen appears, continue: Codex may be reusing an existing valid
132
- trust decision. Changed hook definitions show the same review screen again;
133
- never use the automation-only trust bypass for normal installation. Fully
134
- restart Codex, submit one prompt, use one Remembrance tool, complete one turn,
135
- and run `run_connection_doctor`.
131
+ `SessionStart`, `UserPromptSubmit`, `PostToolUse`, `Stop`, and
132
+ `SubagentStop` hooks. If no review screen appears, continue: Codex may be
133
+ reusing an existing valid trust decision. Changed hook definitions
134
+ show the same review screen again; never use the automation-only trust bypass
135
+ for normal installation. Fully restart Codex, submit one prompt, use one
136
+ Remembrance tool, complete one turn, and run `run_connection_doctor`.
136
137
 
137
138
  OpenClaw:
138
139
 
@@ -144,13 +145,18 @@ openclaw remembrance setup
144
145
  If ClawHub search shows multiple Remembrance matches, use the official package
145
146
  that points to "dreamarkinc/remembrance-skills", mentions the Remembrance agent
146
147
  skill/resource service, and exposes the expected Remembrance MCP tools such as
147
- run_connection_doctor, get_connection_status, query_skills, list_skills, invoke_skill,
148
- submit_query_feedback, submit_remembrance, get_skill, and get_resource, plus
149
- report_task_outcome and get_value_proof. Do not install
148
+ run_connection_doctor, get_connection_status, query_skills, list_skills,
149
+ invoke_skill, submit_query_feedback, capture_learning,
150
+ submit_private_lesson_candidate, submit_private_skill_candidate, get_skill, and
151
+ get_resource, plus report_task_outcome and get_value_proof. Do not install
150
152
  unrelated roots, genealogy, ancestry, or memorial packages.
151
153
 
152
154
  The setup command preserves existing OpenClaw settings, enables conversation
153
155
  access, and registers the bundled local MCP by its installed absolute path.
156
+ Before that grant, OpenClaw already runs the plugin's prompt, tool and
157
+ subagent-end hooks and holds only its completion hook (before_agent_finalize):
158
+ the prompt hook reads each prompt and, unless `REMEMBRANCE_AUTO_QUERY=0`,
159
+ sends a reusable-looking prompt, redacted, as a registry query.
154
160
  In centrally managed environments, apply this equivalent configuration in
155
161
  "~/.openclaw/openclaw.json":
156
162
 
@@ -269,12 +275,13 @@ Remembrance; do not classify it as a Remembrance rejection.
269
275
 
270
276
  ### Organization-private lesson autopilot
271
277
 
272
- Routine organization lessons use one narrow, reviewable write instead of a
273
- broad remembrance payload. The local plugin first calls
274
- `prepare_private_lesson_candidate`. That tool generalizes, canonicalizes, and
275
- redacts a failure, correction, or reusable workflow lesson in memory; encrypts
276
- only the canonical safe record in a local outbox; and returns a draft ID. It
277
- never writes the original input to disk, logs, telemetry, or error output. Tags
278
+ Routine organization learning uses one local router and narrow, reviewable
279
+ network writes instead of broad contribution payloads. The local plugin calls
280
+ `capture_learning`, which selects a compact lesson, complete private skill,
281
+ or preference route. For a lesson it generalizes, canonicalizes, and redacts in
282
+ memory, encrypts only the canonical safe record in a local outbox, and returns
283
+ a draft ID. It never writes the original input to disk, logs, telemetry, or
284
+ error output. Tags
278
285
  use an open, bounded lowercase slug vocabulary; new technical terms survive,
279
286
  while malformed or privacy-sensitive tags hold the draft instead of being
280
287
  silently removed.
@@ -357,8 +364,11 @@ processor, a Codex administrator should do all of the following:
357
364
  then allow only `remembrance.dev`. Hosted MCP does not need shell-network
358
365
  permission.
359
366
  4. Keep the organization API key scoped to `agent:query` and
360
- `submission:create`; use `propose_private_skill` for repository-derived
361
- skills so the destination cannot silently become public.
367
+ `submission:create`. Local plugins route repository-derived skills through
368
+ `capture_learning.private_skill` and the exact
369
+ `submit_private_skill_candidate` action. Hosted/raw MCP clients use
370
+ `propose_private_skill`; both paths are organization-private and cannot
371
+ silently become public.
362
372
 
363
373
  With an organization key, generic `propose_skill_idea` submissions also stay
364
374
  inside that organization's review queue. Never remove, suppress, or bypass the
@@ -407,12 +417,19 @@ enabled_tools = [
407
417
  "submit_feedback",
408
418
  "submit_preference_compatibility_feedback",
409
419
  "report_task_outcome",
410
- "submit_remembrance",
411
- "propose_private_skill",
412
420
  "submit_suggestion",
413
421
  "record_preference",
414
422
  "link_current_installation",
415
423
  "submit_private_lesson_candidate",
424
+ "acknowledge_feedback_denial",
425
+ "decline_pending_action",
426
+ "capture_learning",
427
+ "inspect_private_learning_outbox",
428
+ "submit_private_skill_candidate",
429
+ "retry_private_lesson_candidate",
430
+ "delete_private_lesson_candidate",
431
+ "retry_private_skill_candidate",
432
+ "delete_private_skill_candidate",
416
433
  ]
417
434
  default_tools_approval_mode = "writes"
418
435
  ~~~
@@ -422,12 +439,14 @@ the vetted Remembrance plugin hooks permitted or deploy equivalent managed
422
439
  query/completion hooks; otherwise MCP calls may work while the query and
423
440
  feedback reminders never run.
424
441
 
425
- The MCP annotation for `propose_private_skill` is non-read-only and
442
+ The hosted/raw MCP annotation for `propose_private_skill` is non-read-only and
426
443
  closed-world: it makes a network request, but can change only the authenticated
427
444
  organization's private review queue and cannot change publicly visible internet
428
- state. Closed-world does not mean zero-network. Only
429
- `queue_private_skill_import` is a local, zero-network handoff tool, and it
430
- should run only when an organization admin explicitly requests that handoff.
445
+ state. Closed-world does not mean zero-network. Local plugins replace that broad
446
+ payload with `capture_learning.private_skill` and the exact
447
+ `submit_private_skill_candidate` action. Only `queue_private_skill_import`
448
+ is a local, zero-network handoff tool, and it should run only when an
449
+ organization admin explicitly requests that handoff.
431
450
 
432
451
  Example text to merge into the tenant-specific guardian policy:
433
452
 
@@ -496,8 +515,9 @@ data-governance policy decides whether repository-derived content may leave the
496
515
  workspace. Use the host-specific controls below; do not use a wildcard server,
497
516
  all-network rule, or blanket permission bypass.
498
517
 
499
- The recommended organization allowlist includes discovery, direct skill use,
500
- bounded feedback/outcomes, and organization-private contribution:
518
+ Hosted MCP cannot retain an encrypted device outbox, so its recommended
519
+ organization allowlist includes discovery, direct skill use, bounded
520
+ feedback/outcomes, and the existing organization-private contribution calls:
501
521
 
502
522
  ~~~text
503
523
  get_connection_status
@@ -514,23 +534,56 @@ submit_query_feedback
514
534
  submit_feedback
515
535
  submit_preference_compatibility_feedback
516
536
  report_task_outcome
537
+ submit_suggestion
538
+ record_preference
539
+ link_current_installation
540
+ submit_private_lesson_candidate
517
541
  submit_remembrance
518
542
  propose_private_skill
543
+ ~~~
544
+
545
+ Local plugin and command-based MCP hosts should instead use the version-matched
546
+ capture allowlist. It preserves query-fit feedback, routes reusable learning
547
+ through `capture_learning`, and exposes both exact draft submission actions:
548
+
549
+ ~~~text
550
+ get_connection_status
551
+ run_connection_doctor
552
+ query_skills
553
+ list_skills
554
+ invoke_skill
555
+ get_effective_preferences
556
+ get_private_lesson_policy
557
+ get_skill
558
+ get_resource
559
+ get_value_proof
560
+ submit_query_feedback
561
+ submit_feedback
562
+ submit_preference_compatibility_feedback
563
+ report_task_outcome
519
564
  submit_suggestion
520
565
  record_preference
521
566
  link_current_installation
522
567
  submit_private_lesson_candidate
568
+ acknowledge_feedback_denial
569
+ decline_pending_action
570
+ capture_learning
571
+ inspect_private_learning_outbox
572
+ submit_private_skill_candidate
573
+ retry_private_lesson_candidate
574
+ delete_private_lesson_candidate
575
+ retry_private_skill_candidate
576
+ delete_private_skill_candidate
523
577
  ~~~
524
578
 
525
- It intentionally omits `propose_skill_idea`, `submit_resource`,
579
+ Both defaults intentionally omit `propose_skill_idea`, `submit_resource`,
526
580
  `submit_resource_review`, `request_attestation_challenge`, and
527
581
  `register_agent_key`. Add those dual-scope/public, resource, or identity tools
528
582
  only when the organization explicitly approves them. With a verified
529
583
  organization key, `propose_skill_idea` remains private, but it is excluded from
530
584
  the managed default because the same tool creates a public candidate when used
531
- anonymously. `bootstrap_agent_identity` and
532
- `queue_private_skill_import` are local-only tools and never belong in a
533
- hosted MCP allowlist.
585
+ anonymously. `bootstrap_agent_identity` and `queue_private_skill_import` are
586
+ optional local-only tools and never belong in a hosted MCP allowlist.
534
587
 
535
588
  ### Approve Claude Code
536
589
 
@@ -586,12 +639,12 @@ Merge this into managed settings:
586
639
  "mcp__remembrance__submit_feedback",
587
640
  "mcp__remembrance__submit_preference_compatibility_feedback",
588
641
  "mcp__remembrance__report_task_outcome",
589
- "mcp__remembrance__submit_remembrance",
590
- "mcp__remembrance__propose_private_skill",
591
642
  "mcp__remembrance__submit_suggestion",
592
643
  "mcp__remembrance__record_preference",
593
644
  "mcp__remembrance__link_current_installation",
594
645
  "mcp__remembrance__submit_private_lesson_candidate",
646
+ "mcp__remembrance__submit_remembrance",
647
+ "mcp__remembrance__propose_private_skill",
595
648
  ]
596
649
  },
597
650
  "sandbox": {
@@ -647,12 +700,19 @@ narrow server/tool set:
647
700
  "submit_feedback",
648
701
  "submit_preference_compatibility_feedback",
649
702
  "report_task_outcome",
650
- "submit_remembrance",
651
- "propose_private_skill",
652
703
  "submit_suggestion",
653
704
  "record_preference",
654
705
  "link_current_installation",
655
706
  "submit_private_lesson_candidate",
707
+ "acknowledge_feedback_denial",
708
+ "decline_pending_action",
709
+ "capture_learning",
710
+ "inspect_private_learning_outbox",
711
+ "submit_private_skill_candidate",
712
+ "retry_private_lesson_candidate",
713
+ "delete_private_lesson_candidate",
714
+ "retry_private_skill_candidate",
715
+ "delete_private_skill_candidate",
656
716
  ],
657
717
  "trust": false
658
718
  }
@@ -671,9 +731,10 @@ and [MCP settings](https://google-gemini.github.io/gemini-cli/docs/tools/mcp-ser
671
731
 
672
732
  ### Approve OpenClaw
673
733
 
674
- Pin the exact plugin id, enable its conversation hooks, and filter the saved
675
- Remembrance MCP server. `plugins.deny` wins over the allowlist. The `minimal`
676
- tool profile hides MCP tools, and `tools.deny: ["bundle-mcp"]` disables them:
734
+ Pin the exact plugin id, grant its conversation access (without it, OpenClaw
735
+ holds only the completion hook), and filter the saved Remembrance MCP server.
736
+ `plugins.deny` wins over the allowlist. The `minimal` tool profile hides
737
+ MCP tools, and `tools.deny: ["bundle-mcp"]` disables them:
677
738
 
678
739
  ~~~json
679
740
  {
@@ -706,12 +767,19 @@ tool profile hides MCP tools, and `tools.deny: ["bundle-mcp"]` disables them:
706
767
  "submit_feedback",
707
768
  "submit_preference_compatibility_feedback",
708
769
  "report_task_outcome",
709
- "submit_remembrance",
710
- "propose_private_skill",
711
770
  "submit_suggestion",
712
771
  "record_preference",
713
772
  "link_current_installation",
714
773
  "submit_private_lesson_candidate",
774
+ "acknowledge_feedback_denial",
775
+ "decline_pending_action",
776
+ "capture_learning",
777
+ "inspect_private_learning_outbox",
778
+ "submit_private_skill_candidate",
779
+ "retry_private_lesson_candidate",
780
+ "delete_private_lesson_candidate",
781
+ "retry_private_skill_candidate",
782
+ "delete_private_skill_candidate",
715
783
  ]
716
784
  }
717
785
  }
@@ -838,11 +906,29 @@ Cursor MCP fallback config (use this only when plugin install is unavailable):
838
906
  }
839
907
  ~~~
840
908
 
841
- Codex local MCP config uses "mcp_servers", not "mcpServers":
909
+ Node.js runtime for command-based MCP: a bare `command` such as `node` is
910
+ looked up on a PATH the host provides (for Claude Code, the PATH of the Claude
911
+ Code process). A host started from the Dock, Finder or an IDE may not have your
912
+ shell's PATH, so a Node.js installed by nvm, fnm, volta, asdf, nodenv or mise
913
+ can be missing from it; the symptom is `spawn node ENOENT` or "No such file or
914
+ directory". Use Node.js 18.17.0 or newer by its absolute path (the
915
+ output of `command -v node` in a terminal) in manual entries. The Claude Code,
916
+ VS Code and Codex plugins start their hooks and bundled MCP server, and the
917
+ Cursor plugin its hooks, through `scripts/node-launcher`, which uses
918
+ `REMEMBRANCE_NODE` when it is set, else `node` on PATH, else Node.js
919
+ 18.17.0+ from nvm, volta, fnm, n, asdf, nodenv, mise, Homebrew, `/usr/local`
920
+ or `/usr/bin`. In Claude Code, set `REMEMBRANCE_NODE=/absolute/path/to/node`
921
+ in the `env` map of `~/.claude/settings.json`; it reaches the hooks and the
922
+ bundled MCP server. Fully restart the host after a fix. `npx` starts `node`
923
+ through PATH, so an `npx` entry also needs that Node.js directory first in the
924
+ entry's environment PATH.
925
+
926
+ Codex local MCP config uses "mcp_servers", not "mcpServers"; use absolute paths
927
+ for both the Node.js executable and the server:
842
928
 
843
929
  ~~~toml
844
930
  [mcp_servers.remembrance]
845
- command = "node"
931
+ command = "/absolute/path/to/node"
846
932
  args = ["/absolute/path/to/remembrance-mcp.mjs"]
847
933
 
848
934
  [mcp_servers.remembrance.env]
@@ -851,15 +937,19 @@ REMEMBRANCE_API_KEY = "YOUR_ORG_KEY"
851
937
  ~~~
852
938
 
853
939
  OpenClaw MCP config uses "mcp.servers", not "mcpServers" or "mcp_servers".
854
- OpenClaw does not define a portable plugin-root variable for MCP args; use an
855
- absolute path or the OpenClaw MCP CLI. Also keep the enterprise key in the MCP
856
- server env if OpenClaw does not inherit shell exports:
940
+ OpenClaw does not define a portable plugin-root variable for MCP args; use
941
+ absolute paths for the Node.js executable and the server, or run
942
+ `openclaw remembrance setup`, which registers the absolute Node.js that runs
943
+ OpenClaw. Also keep the enterprise key in the MCP server env if OpenClaw does
944
+ not inherit shell exports:
857
945
 
858
946
  ~~~json
859
947
  {
860
948
  "mcp": {
861
949
  "servers": {
862
950
  "remembrance": {
951
+ "command": "/absolute/path/to/node",
952
+ "args": ["/absolute/path/to/remembrance-mcp.mjs"],
863
953
  "env": {
864
954
  "REMEMBRANCE_API_URL": "https://remembrance.dev",
865
955
  "REMEMBRANCE_API_KEY": "YOUR_ORG_KEY"
@@ -893,15 +983,22 @@ which Codex, Claude Code, Cursor, OpenClaw, VS Code, OpenCode, or MCP host must
893
983
  be reloaded, reopened, or fully restarted. Set
894
984
  `REMEMBRANCE_CLIENT_UPDATE_CHECK=0` to disable only this advisory check.
895
985
 
986
+ Set `REMEMBRANCE_SESSION_SKILLS=0` to stop the Claude Code, VS Code, Codex, and
987
+ Cursor session-start hooks from asking the agent to load the organization's
988
+ session skills.
989
+
896
990
  ## Validate after setup
897
991
 
898
992
  1. Start a fresh agent session.
899
- 2. Check whether Remembrance MCP tools are visible. Expected tools include
900
- run_connection_doctor, get_connection_status, query_skills, list_skills, invoke_skill, get_skill,
901
- get_resource, submit_query_feedback, submit_feedback, submit_remembrance,
902
- propose_private_skill, report_task_outcome, get_value_proof, and
903
- bootstrap_agent_identity. Local MCP also exposes
904
- queue_private_skill_import. Clients
993
+ 2. Check whether Remembrance MCP tools are visible. Every path should include
994
+ run_connection_doctor, get_connection_status, query_skills, list_skills,
995
+ invoke_skill, get_skill, get_resource, submit_query_feedback,
996
+ submit_feedback, report_task_outcome, and get_value_proof. A current local
997
+ plugin/MCP must also expose capture_learning plus
998
+ submit_private_lesson_candidate and submit_private_skill_candidate. Hosted
999
+ and legacy MCP instead expose submit_remembrance and propose_private_skill.
1000
+ Optional local administration tools such as bootstrap_agent_identity and
1001
+ queue_private_skill_import are not installation-health requirements. Clients
905
1002
  with MCP resource discovery should also expose paginated
906
1003
  `remembrance://skills/{slug}` handles.
907
1004
  3. Call run_connection_doctor and require `safe_to_query: true`. Confirm the
@@ -936,18 +1033,23 @@ be reloaded, reopened, or fully restarted. Set
936
1033
  completion or abandonment with report_task_outcome, then ask it to submit
937
1034
  feedback with the same query/result IDs. When a qualified potential-savings
938
1035
  estimate exists, fetch and verify its signed token-only proof.
939
- A complete loop has a feedback/remembrance receipt such as a public id or
940
- verification job id. Hooks should help, but explicit receipts prove the
941
- agent actually contributed evidence.
942
- 11. Ask the agent to submit a `failure_report` remembrance for one reusable
943
- failure lesson: a self-correction, a user-caught miss, a CI/deploy failure,
944
- or a release/versioning miss. This validates non-plugin contribution paths
945
- that have no Stop hook.
1036
+ A complete loop has a feedback receipt. Query-fit feedback remains separate:
1037
+ submit_query_feedback judges search matches, while submit_feedback records
1038
+ usefulness only after actual use.
1039
+ 11. Ask the agent to capture one disposable redacted failure lesson: a
1040
+ self-correction, a user-caught miss, a CI/deploy failure, or a
1041
+ release/versioning miss. On current local MCP, require
1042
+ `capture_learning.lesson` followed by the exact returned action and a
1043
+ private draft receipt. On hosted/legacy MCP, require a `failure_report`
1044
+ through submit_remembrance. This validates both capability states without
1045
+ mixing their schemas.
946
1046
  12. If using an org key, list and invoke an org-only skill or private overlay
947
1047
  that should not appear anonymously.
948
- 13. With an organization submission key, submit one disposable redacted skill
949
- through propose_private_skill and verify it appears only in that
950
- organization's review queue. In a separate negative scenario, simulate a
1048
+ 13. With an organization submission key, submit one disposable redacted skill.
1049
+ Current local MCP must use `capture_learning.private_skill` followed by
1050
+ submit_private_skill_candidate; hosted/legacy MCP must use
1051
+ propose_private_skill. Verify it appears only in that organization's review
1052
+ queue. In a separate negative scenario, simulate a
951
1053
  host-policy denial and verify the plugin reports the fixed content-free alert
952
1054
  once, persists no blocked content, performs no retry, and creates no handoff.
953
1055
  Test queue_private_skill_import only as a separate administrator-requested
@@ -989,10 +1091,20 @@ be reloaded, reopened, or fully restarted. Set
989
1091
  - "Hosted MCP works but plugin does not": use hosted MCP as a temporary
990
1092
  fallback, then inspect plugin marketplace install, trust approval, and
991
1093
  runtime-specific config shape.
1094
+ - "An older integration rejects the private-learning capture contract": as a
1095
+ temporary compatibility downgrade only, set
1096
+ `REMEMBRANCE_ENABLE_LEGACY_BROAD_WRITES=1` and restart the local MCP process.
1097
+ This restores the legacy broad contribution tools and
1098
+ `submit_feedback.lesson`, and stops advertising private-learning capture so
1099
+ server instructions and schemas remain aligned. Current local plugins should
1100
+ leave this unset; do not use it as routine authentication or host-policy
1101
+ repair.
992
1102
  - "OpenClaw search found another Remembrance package": do not install it unless
993
1103
  it points to dreamarkinc/remembrance-skills and exposes the Remembrance MCP
994
1104
  tools.
995
- - "OpenClaw hooks do nothing": run "openclaw remembrance setup", verify
1105
+ - "OpenClaw hooks do nothing": without allowConversationAccess, OpenClaw holds
1106
+ only the completion hook (before_agent_finalize) and still runs the prompt,
1107
+ tool and subagent-end hooks. Run "openclaw remembrance setup", verify
996
1108
  allowConversationAccess is true, run "openclaw mcp doctor remembrance
997
1109
  --probe", and restart OpenClaw after plugin install/config changes.
998
1110
  - "Claude desktop ignores env vars": put env in the user-scoped Claude settings