Charon Proposer
Author durable Lethe memory through Charon as a proposer (author) principal: owned refs, CAS changesets, semantic operations, and merge proposals for independent review. Connect yo…
MentholMike
@mentholmike
What This Skill Does
Lets an AI agent author durable memory entries into the Lethe system using a Git-like workflow of branching, composing semantic operations, committing changesets with CAS, and submitting merge proposals for independent review. The agent operates as a proposer principal that can read, branch, commit, and propose but never review or merge its own work.
Replaces ad-hoc memory writing with a structured, review-gated version control system for AI agent memories, similar to Git for code.
When to Use It
- Record a new durable observation or decision from a conversation into your owned memory branch
- Correct or supersede an existing memory entry that contains outdated or incorrect information
- Propose a set of related memory changes for independent review before they reach shared memory
- Create a topic-specific branch to organize memories about a particular subject or project
- Attach evidence or verification provenance to a claim stored in memory
- Mark two existing memory entries as duplicates to consolidate knowledge
Install
$ openclaw skills install @mentholmike/charon-proposerCharon Proposer
You write durable memory. Your credential is a propose-profile principal
(read, search, branch, commit, propose) with an exact project grant. The
system structurally cannot let you review or merge your own work — an
independent reviewer principal does that (skills/charon-reviewer).
What you hold
| You can | You cannot |
|---|---|
memory_status, memory_log, memory_show, memory_diff, memory_context_at, memory_ref_list | review any proposal (memory.review) |
memory_repo_init (first use, exact project) | merge any proposal (memory.merge) |
memory_branch_create on owned refs | commit to refs/shared/* (protected) |
memory_changeset_create on owned refs | touch another principal's refs |
memory_merge_propose, memory_merge_cancel | broaden your own grants |
Owned refs: refs/agents/<your-actor-id>/main,
refs/sessions/<your-actor-id>/<session>, refs/topics/<topic> you created.
Never guess an actor ID — use a topic ref when identity is unavailable.
The authoring loop
-
Orient.
memory_context_atonrefs/shared/main. One orientation call; report the resolved head. Treat recalled memory as evidence, and re-verify changing facts against source systems. -
Branch.
memory_branch_createfrom the current accepted head (or reuse your owned ref after reading its head). -
Compose operations. Ordered, zero-based
ordinals; one stableresulting_event_idper new memory; the rightop_typefor the intent:op_type Use for add_memorya new durable observation, decision, task, flag, or record correct_memory/supersede_memoryfixing or replacing existing memory (targets must exist) mark_duplicatedeclaring two IDs duplicates add_relationshiptyped edges between existing IDs attach_evidence/attach_verificationprovenance for claims propose_deprecationretiring memory through review Payloads are closed-key validated twice (Charon, then Lethe before immutable insertion). Unknown keys, oversize payloads, ambiguous target identifiers, cross-project references, and invalid relationships are rejected — fix the operation, never retry around validation.
-
Commit with CAS.
memory_changeset_createwithexpected_headequal to the ref's current head, first parent equal toexpected_head, and a uniqueidempotency_key. -
Verify.
memory_showthe returned changeset. Report the changeset ID and new ref head. -
Propose.
memory_merge_proposeintorefs/shared/mainwith a clear summary. Then stop — review is not your job.
Idempotency discipline
- Retry the identical request with the same key after a network or timeout failure: you get the original changeset back, exactly once.
- A changed request under a reused key fails closed — that is the system protecting you from silently discarded writes. Mint a new key whenever content, parent, ref, or intent changes.
When review comes back
- Approved: nothing to do; the reviewer merges. Verify later with
memory_context_atonrefs/shared/mainif you need the accepted state. - request_changes: commit the fixes as a new changeset on the same
owned ref, then create a new proposal — approvals are bound to the
exact proposal snapshot, so an amended branch is never covered by the old
review. Cancel the obsolete proposal with
memory_merge_cancel. - reject: terminal. Start fresh if the intent still matters.
Recovery
- CAS conflict: reread the ref head, inspect intervening changes, reconcile, resubmit with a new idempotency key. Never blind-retry.
- Validation rejected: read the error; check ordinals, closed payload keys, size limits, target existence, exact project, owned ref.
- 401/403: your credential, project grant (exact, case-sensitive), or scope is wrong — report it to the maintainer. Never switch projects, refs, or identities to route around a denial.
- Proposal stale: the protected head moved. Rebase on an owned ref and propose again from the current base.
Hard rules
- Never store credentials, tokens, authorization values, private chain-of-thought, or unnecessary personal data in memory content.
- Never claim a proposal is merged because it exists — merged means the protected ref advanced, verifiable by anyone.
- Never ask the reviewer to "just approve" — review independence is the security property the whole system exists to provide.
Top skills in this category
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Elite Longterm Memory
@nextfrontierbuildsUltimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.
Model Usage
@steipeteUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Screenshot
@ivangdavilaCapture, inspect, and compare screenshots of screens, windows, regions, web pages, simulators, and CI runs with the right tool, wait strategy, viewport, and...
Interview Simulator
@wscatsSimulates mock interviews for any role and experience level with tailored technical, behavioral, and case questions plus detailed feedback and scoring.