{"id":"09690443-fad0-49ce-b083-43280152d7ec","entityType":"agent","slug":"clawhub-leostehlik-better-every-run","name":"Ber Clawhub V060","canonicalUrl":"https://www.xpersona.co/agent/clawhub-leostehlik-better-every-run","canonicalPath":"/agent/clawhub-leostehlik-better-every-run","generatedAt":"2026-10-10T17:36:57.232Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":null},"description":"Better Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s1754kcncc002avbhpwjnqgcr98728et:better-every-run","sourceUrl":"https://clawhub.ai/leostehlik/better-every-run","homepage":"https://clawhub.ai/leostehlik/skills/better-every-run","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/leostehlik/better-every-run","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/leostehlik/skills/better-every-run","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Ber Clawhub V060 technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":null},"stars":null,"forks":null,"downloads":1373,"packageName":null,"latestVersion":"0.6.0","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T14:57:30.080Z","lastCrawledAt":"2026-10-10T14:57:30.080Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T14:57:30.080Z","lastVerifiedAt":null,"highlights":[{"version":"0.6.0","createdAt":"2026-09-01T01:08:06.727Z","changelog":"v0.6.0 before/after correction artifact: README conversion proof, SVG proof image, concrete BER correction story, and explicit-only durable promotion boundaries.","fileCount":19,"zipByteSize":36849},{"version":"0.5.7","createdAt":"2026-08-26T10:44:59.602Z","changelog":"Sharpened public positioning around explicit corrections and silent-memory boundaries; updated README Start Here path; aligned SKILL metadata with a deliberate 0.5.7 release after the prior ClawHub-only 0.5.6.","fileCount":16,"zipByteSize":33783},{"version":"0.5.6","createdAt":"2026-08-26T09:22:33.862Z","changelog":"Version 0.5.6 - Added _meta.json file for improved metadata structure. - Removed skill-card.md file. - No changes to SKILL.md content or workflow. - Overall, this update focuses on minor repository and metadata file management.","fileCount":13,"zipByteSize":21563},{"version":"0.5.5","createdAt":"2026-06-05T15:09:34.510Z","changelog":"Harden durable writes: fix/remember now stay local, apply-memory-patch is retired, memory/skill promotion requires a fresh card and clean scanner verdict, and evals use structured eval-fixture targets.","fileCount":13,"zipByteSize":21703},{"version":"0.5.4","createdAt":"2026-06-04T18:52:59.519Z","changelog":"Remove all asciinema terminal demo assets from the ClawHub package; keep the recording GitHub-only and referenced from README.","fileCount":13,"zipByteSize":20266},{"version":"0.5.3","createdAt":"2026-06-04T18:48:07.703Z","changelog":"Remove packaged asciinema cast from ClawHub; keep recording GitHub-only and leave local demo script/docs.","fileCount":15,"zipByteSize":22047},{"version":"0.5.2","createdAt":"2026-06-04T18:43:54.768Z","changelog":"Package the asciinema terminal demo in ClawHub-friendly form and document local playback.","fileCount":16,"zipByteSize":24650},{"version":"0.5.1","createdAt":"2026-06-04T18:42:05.466Z","changelog":"Add asciinema terminal demo and demo recording instructions for the governed BER learning loop.","fileCount":15,"zipByteSize":21985}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1754kcncc002avbhpwjnqgcr98728et:better-every-run","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s1754kcncc002avbhpwjnqgcr98728et:better-every-run` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/leostehlik/better-every-run before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T17:36:57.229Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leostehlik-better-every-run/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":null},"readme":"Skill: Ber Clawhub V060\n\nOwner: leostehlik\n\nSummary: Better Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals.\n\nTags: agent-memory:0.5.7, agents:0.5.5, ai-agents:0.5.7, evals:0.5.7, latest:0.6.0, memory:0.5.5, openclaw:0.5.7, productivity:0.5.5\n\nVersion history:\n\nv0.6.0 | 2026-09-01T01:08:06.727Z | user\n\nv0.6.0 before/after correction artifact: README conversion proof, SVG proof image, concrete BER correction story, and explicit-only durable promotion boundaries.\n\nv0.5.7 | 2026-08-26T10:44:59.602Z | user\n\nSharpened public positioning around explicit corrections and silent-memory boundaries; updated README Start Here path; aligned SKILL metadata with a deliberate 0.5.7 release after the prior ClawHub-only 0.5.6.\n\nv0.5.6 | 2026-08-26T09:22:33.862Z | auto\n\nVersion 0.5.6\n\n- Added _meta.json file for improved metadata structure.\n- Removed skill-card.md file.\n- No changes to SKILL.md content or workflow.\n- Overall, this update focuses on minor repository and metadata file management.\n\nv0.5.5 | 2026-06-05T15:09:34.510Z | user\n\nHarden durable writes: fix/remember now stay local, apply-memory-patch is retired, memory/skill promotion requires a fresh card and clean scanner verdict, and evals use structured eval-fixture targets.\n\nv0.5.4 | 2026-06-04T18:52:59.519Z | user\n\nRemove all asciinema terminal demo assets from the ClawHub package; keep the recording GitHub-only and referenced from README.\n\nv0.5.3 | 2026-06-04T18:48:07.703Z | user\n\nRemove packaged asciinema cast from ClawHub; keep recording GitHub-only and leave local demo script/docs.\n\nv0.5.2 | 2026-06-04T18:43:54.768Z | user\n\nPackage the asciinema terminal demo in ClawHub-friendly form and document local playback.\n\nv0.5.1 | 2026-06-04T18:42:05.466Z | user\n\nAdd asciinema terminal demo and demo recording instructions for the governed BER learning loop.\n\nv0.5.0 | 2026-06-04T18:09:55.290Z | user\n\nAdd lesson cards with target hashes, scanner-gated promotion, quarantine/supersede lifecycle controls, and eval fixture generation from corrections.\n\nv0.3.0 | 2026-06-04T17:36:20.924Z | user\n\nAdd lesson scope/expiry metadata, tighter classification, report promotion suggestions, and memory/skill/eval promotion flow.\n\nv0.2.1 | 2026-05-24T08:45:21.827Z | user\n\nScope activation to explicit BER use and disclose persistence/storage in docs and reports.\n\nv0.2.0 | 2026-05-22T17:05:26.781Z | user\n\nAdd version metadata and explicit privacy/package guards for the helper state.\n\nv0.1.1 | 2026-05-21T15:00:49.011Z | user\n\nHide helper internals from the public human-facing workflow.\n\nv0.1.0 | 2026-05-21T14:50:14.901Z | user\n\nInitial public Better Every Run skill.\n\nArchive index:\n\nArchive v0.6.0: 19 files, 36849 bytes\n\nFiles: assets/ber-before-after-correction.svg (3595b), assets/better-every-run-terminal-demo.svg (77879b), CHANGELOG.md (281b), examples/asciinema-demo.sh (3001b), examples/before-after-correction.md (1984b), examples/demo.md (557b), examples/terminal-demo.md (652b), examples/upstream-loop.md (1626b), LICENSE (1068b), Makefile (41b), README.md (5854b), references/report-template.md (698b), references/workflow.md (3530b), scripts/ber (1704b), scripts/ber.js (31532b), skill-card.md (2678b), SKILL.md (4044b), tests/smoke.sh (10486b), _meta.json (135b)\n\nFile v0.6.0:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals.\"\nuser-invocable: true\nmetadata:\n  version: \"0.6.0\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. BER turns deliberate corrections into reviewed lessons without silently converting ordinary chat into permanent memory. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat. `fix` and `remember` record only to the local `.better-every-run/` evidence store. Durable memory/skill changes require the reviewed `card` + `promote` flow; eval regression cases require `eval-fixture`.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Do not pass `--target` to `/ber fix` or `/ber remember`; direct durable writes are disabled and must refuse.\n- Only promote to durable memory or skill files after an explicit review decision using `card` then `promote`.\n- Memory promotions must target an existing `memory/*.md` file.\n- Skill promotions must target `SKILL.md` in the current skill project.\n- Eval fixtures must use `eval-fixture` and target `.json` or `.jsonl` under `tests/` or `evals/`.\n- Scanner hard blocks and warnings both block promotion. Adjust, quarantine, or supersede the lesson instead of forcing it through.\n- Keep corrections factual: bad outcome, desired outcome, and scope.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if promoted, and how it was reviewed.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or promoted to a named durable file through a lesson card.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- direct `fix --target`, `remember --target`, and `apply-memory-patch` attempts refuse without changing target files\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.6.0:README.md\n\n# Better Every Run\n\nTeach the agent from explicit corrections without turning chat into permanent memory.\n\nBetter Every Run gives a correction a clean path: capture it locally, review whether it deserves to stick, then promote it to memory, a skill rule, or an eval only when the evidence is good. Nothing is learned from casual chat by accident.\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe useful part is the boundary. The agent can improve from a sharp correction, but it still has to say what was recorded, where it lives, and whether anything durable changed.\n\n**v0.6 focus:** a concrete before/after correction artifact: bad repeated agent behavior -> explicit `/ber fix` -> local lesson card -> later run improves without silently rewriting durable memory.\n\n## Start Here\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git\ncd better-every-run\nmake test\n```\n\nThen read `SKILL.md` and `examples/upstream-loop.md` to see the governed correction flow.\n\n## Install\n\n### OpenClaw / ClawHub\n\n```bash\nopenclaw skills install better-every-run\n```\n\n### Manual\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git ~/.openclaw/workspace/skills/better-every-run\n```\n\nFor Claude Code, Codex, or other agent harnesses, copy this folder into the harness skill directory and load `SKILL.md`.\n\n## Conversion Proof\n\nBER is easiest to understand as a before/after loop:\n\n![Before and after BER correction flow](assets/ber-before-after-correction.svg)\n\nRead the compact proof story in [`examples/before-after-correction.md`](examples/before-after-correction.md). It shows the bad behavior, the exact `/ber fix`, what gets stored locally, what does not get promoted automatically, and how the later run changes.\n\n## Human Surface\n\nUse BER when the human explicitly wants a lesson recorded:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was promoted through a reviewed durable flow.\n\n## Works With\n\nBER is written as an OpenClaw skill, but the pattern is portable to any agent runner that can load a `SKILL.md` file and run the bundled helper. It fits Codex, Claude Code, OpenCode, Hermes, and custom multi-agent harnesses that need explicit learning without silent memory writes.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage helper internals during normal use.\n- `/ber fix` and `/ber remember` never append directly to durable files, even when `--target` is supplied.\n- The agent should summarize the outcome in chat, including the local store and any reviewed durable promotion.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory and skill writes require a fresh lesson card, a stable target hash, and a clean BER scanner verdict.\n- Eval durability goes through `eval-fixture`, which writes JSON/JSONL only under `tests/` or `evals/`.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence clearly. Promotion commands are agent-facing: `card --to memory|skill` writes a lesson card with scanner state and target hash; `promote --to memory|skill` appends only when the card is still fresh and the scanner is clean; `eval-fixture` turns a correction into a JSON regression case.\n\nRetired unsafe path: `apply-memory-patch` now refuses. `export-memory-patch` remains available as review output only.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable memory/skill promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Credibility Artifact\n\n![Animated terminal demo: Better Every Run governed correction flow](assets/better-every-run-terminal-demo.svg)\n\n## Repository\n\n```text\nbetter-every-run/\n├── SKILL.md\n├── assets/\n│   ├── ber-before-after-correction.svg\n│   ├── better-every-run-terminal-demo.cast\n│   └── better-every-run-terminal-demo.svg\n├── examples/\n│   ├── before-after-correction.md\n│   ├── asciinema-demo.sh\n│   ├── demo.md\n│   ├── terminal-demo.md\n│   └── upstream-loop.md\n├── references/\n│   ├── report-template.md\n│   └── workflow.md\n├── scripts/\n│   ├── ber\n│   └── ber.js\n├── tests/\n│   └── smoke.sh\n├── Makefile\n└── README.md\n```\n\n## Status\n\nUsable public skill bundle, published on ClawHub as `better-every-run`. The GitHub repo also carries the terminal demo proof artifact.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.6.0:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.6.0\",\n  \"publishedAt\": 1788224886727\n}\n\nFile v0.6.0:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.6.0:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result. Normal `fix` and `remember` commands write only to `.better-every-run/`. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do code work on the approved development host\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do code work on the approved development host.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include local storage status and any open proposed lessons.\n\n## Promote To Memory Or Skill\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written and the scanner verdict is clean.\n\n## Promote To Eval\n\nEval durability uses a structured fixture command, not markdown append promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nEval fixture targets must be `.json` or `.jsonl` files under `tests/` or `evals/`.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Review Export\n\nThis older patch flow is review-only now:\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\n```\n\n`apply-memory-patch` is retired and refuses. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying the lesson is local until a reviewed promotion happens.\n\nFile v0.6.0:CHANGELOG.md\n\n# Changelog\n\n## v0.6.0\n\n- Add a concrete before/after correction artifact for the core BER loop.\n- Add a README conversion proof section and SVG proof asset.\n- Keep explicit-only capture and reviewed durable promotion boundaries front and center.\n- Bump skill metadata to `0.6.0`.\n\nFile v0.6.0:examples/before-after-correction.md\n\n# BER Before/After Correction Artifact\n\nThis is the concrete story for Better Every Run. It shows one repeated bad behavior becoming a local lesson, then a later run improving.\n\n## Before\n\nBad outcome:\n\n```text\nAgent: Done. I cleaned it up and everything looks good.\n```\n\nProblem: the human still has to ask what command ran, whether it passed, and what remains risky.\n\n## Correction\n\nHuman command:\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nHelper command used by the agent:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\nExpected result:\n\n```text\nDurable file changed: none\nLocal store: .better-every-run/\nPromotion: use card + promote for durable memory or skill changes; use eval-fixture for regression coverage.\n```\n\n## Local Evidence\n\nBER writes a local lesson under `.better-every-run/`. That state is private and excluded from publishing. The lesson can become:\n\n- a memory rule, after a reviewed lesson card and clean scanner verdict\n- a skill behavior, after a reviewed lesson card and clean scanner verdict\n- an eval fixture, through `eval-fixture` under `tests/` or `evals/`\n- nothing durable, if it was a one-off correction\n\n## After\n\nImproved later response:\n\n```text\nDone. Verification output:\n- make test: passed\n- git diff --check: clean\n\nRemaining risk: I did not run browser coverage because this repo has no browser harness.\nNext action: tag the release after CI passes.\n```\n\nThe important conversion point: BER is not a memory auto-writer. It is a small correction intake that leaves an auditable path from human correction to future behavior.\n\n## Try It\n\n```bash\nmake test\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\nnode scripts/ber.js report --today\n```\n\nFile v0.6.0:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`. Durable changes require a reviewed lesson card for memory/skill promotion, or `eval-fixture` for regression coverage, without expanding the human-facing command surface.\n\nFile v0.6.0:examples/terminal-demo.md\n\n# Terminal Demo\n\nRecord the Better Every Run terminal demo with asciinema:\n\n```bash\nasciinema rec --overwrite -q -i 1.0 -t \"Better Every Run v0.5.5\" \\\n  -c \"bash examples/asciinema-demo.sh\" \\\n  assets/better-every-run-terminal-demo.cast\n```\n\nRender the inline README artifact:\n\n```bash\nnpx --yes svg-term-cli --in assets/better-every-run-terminal-demo.cast \\\n  --out assets/better-every-run-terminal-demo.svg --window --width 100 --height 32\n```\n\nPlay the committed recording locally:\n\n```bash\nasciinema play assets/better-every-run-terminal-demo.cast\n```\n\nThe script runs in a temporary directory and leaves no `.better-every-run/` state in the repo.\n\nFile v0.6.0:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before memory or skill promotion\n\nMemory card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere. Direct durable writes from `fix`, `remember`, and the retired patch applier are blocked.\n\nFile v0.6.0:skill-card.md\n\n## Description:\n\nBetter Every Run captures explicit /ber corrections, helps an agent review them, and promotes only selected lessons into durable memory, skill rules, or eval fixtures.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leostehlik](https://clawhub.ai/user/leostehlik)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers and agent operators use this skill to turn explicit correction requests into local lesson evidence, short reports, and reviewed promotion candidates. It is intended for teams that want reusable agent learning without silent memory writes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A captured lesson may become durable guidance without sufficient review.\n\nMitigation: Use fix and remember for local capture only, then require a lesson card, explicit review decision, stable target hash, and clean scanner verdict before any memory or skill promotion.\n\nRisk: Promotion or eval targets may write outside the intended project boundary.\n\nMitigation: Avoid symlinked targets, use only existing memory/*.md files, the current skill project's SKILL.md, or JSON/JSONL targets under tests/ or evals/, and add canonical path validation before broad deployment.\n\nRisk: Local lesson text may contain sensitive information if users choose to capture it.\n\nMitigation: Avoid sensitive lesson text, keep .better-every-run private, and do not publish local lessons, event logs, or private corrections.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/leostehlik/skills/better-every-run)\n- [Better Every Run workflow](references/workflow.md)\n- [Report template](references/report-template.md)\n- [Before/after correction artifact](examples/before-after-correction.md)\n- [Upstream loop demo](examples/upstream-loop.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown or plain text responses with optional shell commands, local evidence files, durable markdown updates after review, and JSON/JSONL eval fixtures.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Normal fix and remember flows write only to the project-local .better-every-run store; durable memory, skill, or eval outputs require the reviewed promotion flow.]\n\n## Skill Version(s):\n\n0.6.0 (source: server release metadata and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.6.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.7: 16 files, 33783 bytes\n\nFiles: assets/better-every-run-terminal-demo.svg (77879b), examples/asciinema-demo.sh (3001b), examples/demo.md (557b), examples/terminal-demo.md (652b), examples/upstream-loop.md (1626b), LICENSE (1068b), Makefile (41b), README.md (5149b), references/report-template.md (698b), references/workflow.md (3530b), scripts/ber (1704b), scripts/ber.js (31532b), skill-card.md (2465b), SKILL.md (4044b), tests/smoke.sh (10486b), _meta.json (135b)\n\nFile v0.5.7:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.7\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. BER turns deliberate corrections into reviewed lessons without silently converting ordinary chat into permanent memory. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat. `fix` and `remember` record only to the local `.better-every-run/` evidence store. Durable memory/skill changes require the reviewed `card` + `promote` flow; eval regression cases require `eval-fixture`.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Do not pass `--target` to `/ber fix` or `/ber remember`; direct durable writes are disabled and must refuse.\n- Only promote to durable memory or skill files after an explicit review decision using `card` then `promote`.\n- Memory promotions must target an existing `memory/*.md` file.\n- Skill promotions must target `SKILL.md` in the current skill project.\n- Eval fixtures must use `eval-fixture` and target `.json` or `.jsonl` under `tests/` or `evals/`.\n- Scanner hard blocks and warnings both block promotion. Adjust, quarantine, or supersede the lesson instead of forcing it through.\n- Keep corrections factual: bad outcome, desired outcome, and scope.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if promoted, and how it was reviewed.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or promoted to a named durable file through a lesson card.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- direct `fix --target`, `remember --target`, and `apply-memory-patch` attempts refuse without changing target files\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.5.7:README.md\n\n# Better Every Run\n\nTeach the agent from explicit corrections without turning chat into permanent memory.\n\nBetter Every Run gives a correction a clean path: capture it locally, review whether it deserves to stick, then promote it to memory, a skill rule, or an eval only when the evidence is good. Nothing is learned from casual chat by accident.\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe useful part is the boundary. The agent can improve from a sharp correction, but it still has to say what was recorded, where it lives, and whether anything durable changed.\n\n## Start Here\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git\ncd better-every-run\nmake test\n```\n\nThen read `SKILL.md` and `examples/upstream-loop.md` to see the governed correction flow.\n\n## Install\n\n### OpenClaw / ClawHub\n\n```bash\nopenclaw skills install better-every-run\n```\n\n### Manual\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git ~/.openclaw/workspace/skills/better-every-run\n```\n\nFor Claude Code, Codex, or other agent harnesses, copy this folder into the harness skill directory and load `SKILL.md`.\n\n## Human Surface\n\nUse BER when the human explicitly wants a lesson recorded:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was promoted through a reviewed durable flow.\n\n## Works With\n\nBER is written as an OpenClaw skill, but the pattern is portable to any agent runner that can load a `SKILL.md` file and run the bundled helper. It fits Codex, Claude Code, OpenCode, Hermes, and custom multi-agent harnesses that need explicit learning without silent memory writes.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage helper internals during normal use.\n- `/ber fix` and `/ber remember` never append directly to durable files, even when `--target` is supplied.\n- The agent should summarize the outcome in chat, including the local store and any reviewed durable promotion.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory and skill writes require a fresh lesson card, a stable target hash, and a clean BER scanner verdict.\n- Eval durability goes through `eval-fixture`, which writes JSON/JSONL only under `tests/` or `evals/`.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence clearly. Promotion commands are agent-facing: `card --to memory|skill` writes a lesson card with scanner state and target hash; `promote --to memory|skill` appends only when the card is still fresh and the scanner is clean; `eval-fixture` turns a correction into a JSON regression case.\n\nRetired unsafe path: `apply-memory-patch` now refuses. `export-memory-patch` remains available as review output only.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable memory/skill promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Credibility Artifact\n\n![Animated terminal demo: Better Every Run governed correction flow](assets/better-every-run-terminal-demo.svg)\n\n## Repository\n\n```text\nbetter-every-run/\n├── SKILL.md\n├── assets/\n│   ├── better-every-run-terminal-demo.cast\n│   └── better-every-run-terminal-demo.svg\n├── examples/\n│   ├── asciinema-demo.sh\n│   ├── demo.md\n│   ├── terminal-demo.md\n│   └── upstream-loop.md\n├── references/\n│   ├── report-template.md\n│   └── workflow.md\n├── scripts/\n│   ├── ber\n│   └── ber.js\n├── tests/\n│   └── smoke.sh\n├── Makefile\n└── README.md\n```\n\n## Status\n\nUsable public skill bundle, published on ClawHub as `better-every-run`. The GitHub repo also carries the terminal demo proof artifact.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.5.7:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.5.7\",\n  \"publishedAt\": 1787741099602\n}\n\nFile v0.5.7:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.5.7:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result. Normal `fix` and `remember` commands write only to `.better-every-run/`. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do code work on the approved development host\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do code work on the approved development host.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include local storage status and any open proposed lessons.\n\n## Promote To Memory Or Skill\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written and the scanner verdict is clean.\n\n## Promote To Eval\n\nEval durability uses a structured fixture command, not markdown append promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nEval fixture targets must be `.json` or `.jsonl` files under `tests/` or `evals/`.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Review Export\n\nThis older patch flow is review-only now:\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\n```\n\n`apply-memory-patch` is retired and refuses. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying the lesson is local until a reviewed promotion happens.\n\nFile v0.5.7:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`. Durable changes require a reviewed lesson card for memory/skill promotion, or `eval-fixture` for regression coverage, without expanding the human-facing command surface.\n\nFile v0.5.7:examples/terminal-demo.md\n\n# Terminal Demo\n\nRecord the Better Every Run terminal demo with asciinema:\n\n```bash\nasciinema rec --overwrite -q -i 1.0 -t \"Better Every Run v0.5.5\" \\\n  -c \"bash examples/asciinema-demo.sh\" \\\n  assets/better-every-run-terminal-demo.cast\n```\n\nRender the inline README artifact:\n\n```bash\nnpx --yes svg-term-cli --in assets/better-every-run-terminal-demo.cast \\\n  --out assets/better-every-run-terminal-demo.svg --window --width 100 --height 32\n```\n\nPlay the committed recording locally:\n\n```bash\nasciinema play assets/better-every-run-terminal-demo.cast\n```\n\nThe script runs in a temporary directory and leaves no `.better-every-run/` state in the repo.\n\nFile v0.5.7:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before memory or skill promotion\n\nMemory card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere. Direct durable writes from `fix`, `remember`, and the retired patch applier are blocked.\n\nFile v0.5.7:skill-card.md\n\n## Description:\n\nBetter Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leostehlik](https://clawhub.ai/user/leostehlik)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers and agent operators use this skill to capture explicit corrections, review lesson proposals, and promote only selected lessons into durable memory, skill behavior, or eval fixtures.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Local correction logs may contain private workspace context if users intentionally capture it.\n\nMitigation: Review .better-every-run contents before sharing a project and never publish local lessons, event logs, or private corrections.\n\nRisk: A poor correction could become durable memory, skill behavior, or eval coverage if promoted without review.\n\nMitigation: Use the lesson card and promotion flow only for lessons that should persist; require a stable target hash and clean scanner verdict before durable writes.\n\nRisk: Direct durable writes from capture commands could bypass review if allowed.\n\nMitigation: The skill blocks direct --target writes for fix and remember, retires apply-memory-patch, and routes eval durability through eval-fixture under tests/ or evals/.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/leostehlik/skills/better-every-run)\n- [Better Every Run Workflow](references/workflow.md)\n- [Report Template](references/report-template.md)\n- [Upstream Loop Demo](examples/upstream-loop.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown chat summaries with inline shell commands, local markdown lesson cards, and JSON or JSONL eval fixtures when explicitly promoted.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Normal fix and remember actions record local evidence only; durable memory, skill, or eval outputs require the reviewed promotion flow.]\n\n## Skill Version(s):\n\n0.5.7 (source: SKILL.md frontmatter and evidence.release.version)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.5.7:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.6: 13 files, 21563 bytes\n\nFiles: _meta.json (135b), examples/demo.md (557b), examples/upstream-loop.md (1626b), LICENSE (1068b), Makefile (41b), README.md (3870b), references/report-template.md (698b), references/workflow.md (3530b), scripts/ber (1704b), scripts/ber.js (31532b), skill-card.md (2055b), SKILL.md (3905b), tests/smoke.sh (10486b)\n\nFile v0.5.6:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: turn explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.5\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat. `fix` and `remember` record only to the local `.better-every-run/` evidence store. Durable memory/skill changes require the reviewed `card` + `promote` flow; eval regression cases require `eval-fixture`.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Do not pass `--target` to `/ber fix` or `/ber remember`; direct durable writes are disabled and must refuse.\n- Only promote to durable memory or skill files after an explicit review decision using `card` then `promote`.\n- Memory promotions must target an existing `memory/*.md` file.\n- Skill promotions must target `SKILL.md` in the current skill project.\n- Eval fixtures must use `eval-fixture` and target `.json` or `.jsonl` under `tests/` or `evals/`.\n- Scanner hard blocks and warnings both block promotion. Adjust, quarantine, or supersede the lesson instead of forcing it through.\n- Keep corrections factual: bad outcome, desired outcome, and scope.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if promoted, and how it was reviewed.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or promoted to a named durable file through a lesson card.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- direct `fix --target`, `remember --target`, and `apply-memory-patch` attempts refuse without changing target files\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.5.6:README.md\n\n# Better Every Run\n\nLightweight run learning for OpenClaw agents.\n\nBetter Every Run turns explicit `/ber` corrections into future behavior. It does not auto-capture casual chat. The user gives a short command, and the agent reports what was recorded and where it was stored. Accepted lessons carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, lifecycle metadata, and eval-fixture output so an agent can decide whether a correction should stay local or become memory, a skill rule, or a regression case.\n\n## Install\n\n### OpenClaw / ClawHub\n\n```bash\nopenclaw skills install better-every-run\n```\n\n### Manual\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git ~/.openclaw/workspace/skills/better-every-run\n```\n\nFor Claude Code, Codex, or other agent harnesses, copy this folder into the harness skill directory and load `SKILL.md`.\n\n## Human Surface\n\nIn OpenClaw chat:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was promoted through a reviewed durable flow.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage helper internals during normal use.\n- `/ber fix` and `/ber remember` never append directly to durable files, even when `--target` is supplied.\n- The agent should summarize the outcome in chat, including the local store and any reviewed durable promotion.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory and skill writes require a fresh lesson card, a stable target hash, and a clean BER scanner verdict.\n- Eval durability goes through `eval-fixture`, which writes JSON/JSONL only under `tests/` or `evals/`.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence clearly. Promotion commands are agent-facing: `card --to memory|skill` writes a lesson card with scanner state and target hash; `promote --to memory|skill` appends only when the card is still fresh and the scanner is clean; `eval-fixture` turns a correction into a JSON regression case.\n\nRetired unsafe path: `apply-memory-patch` now refuses. `export-memory-patch` remains available as review output only.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable memory/skill promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Package Contents\n\nThis ClawHub package ships the runtime skill, helper, workflow references, examples, and smoke tests. Terminal recording assets are kept GitHub-only.\n\n## Status\n\nUsable public skill bundle, published on ClawHub as `better-every-run@0.5.5`.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.5.6:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.5.6\",\n  \"publishedAt\": 1787736153862\n}\n\nFile v0.5.6:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.5.6:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result. Normal `fix` and `remember` commands write only to `.better-every-run/`. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do code work on the approved development host\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do code work on the approved development host.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include local storage status and any open proposed lessons.\n\n## Promote To Memory Or Skill\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written and the scanner verdict is clean.\n\n## Promote To Eval\n\nEval durability uses a structured fixture command, not markdown append promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nEval fixture targets must be `.json` or `.jsonl` files under `tests/` or `evals/`.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Review Export\n\nThis older patch flow is review-only now:\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\n```\n\n`apply-memory-patch` is retired and refuses. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying the lesson is local until a reviewed promotion happens.\n\nFile v0.5.6:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`. Durable changes require a reviewed lesson card for memory/skill promotion, or `eval-fixture` for regression coverage, without expanding the human-facing command surface.\n\nFile v0.5.6:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before memory or skill promotion\n\nMemory card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere. Direct durable writes from `fix`, `remember`, and the retired patch applier are blocked.\n\nFile v0.5.6:skill-card.md\n\n## Description:\n\nBetter Every Run turns explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leostehlik](https://clawhub.ai/user/leostehlik)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nExternal users and developers use this skill to record explicit correction lessons, review what was learned, and promote selected lessons into durable memory, skill rules, or eval fixtures after review.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Local lesson records can contain private or sensitive correction details.\n\nMitigation: Avoid putting secrets or private data into lessons and keep .better-every-run out of published packages or repositories.\n\nRisk: Recorded lessons can encode incorrect behavior if promoted without review.\n\nMitigation: Review lesson cards before promotion and rely on the card/promote flow so durable changes require a fresh target hash and clean scanner verdict.\n\n## Reference(s):\n\n- [Better Every Run Workflow](references/workflow.md)\n- [Report Template](references/report-template.md)\n- [ClawHub Skill Page](https://clawhub.ai/leostehlik/skills/better-every-run)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown and plain text with inline shell commands and generated JSON/JSONL eval fixtures when requested]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes local lesson evidence under .better-every-run/ and requires reviewed card/promote or eval-fixture flows before durable changes.]\n\n## Skill Version(s):\n\n0.5.6 (source: server release evidence; artifact metadata still reports 0.5.5)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.5.6:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.5: 13 files, 21703 bytes\n\nFiles: examples/demo.md (557b), examples/upstream-loop.md (1626b), LICENSE (1068b), Makefile (41b), README.md (3870b), references/report-template.md (698b), references/workflow.md (3530b), scripts/ber (1704b), scripts/ber.js (31532b), skill-card.md (2517b), SKILL.md (3905b), tests/smoke.sh (10486b), _meta.json (135b)\n\nFile v0.5.5:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: turn explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.5\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat. `fix` and `remember` record only to the local `.better-every-run/` evidence store. Durable memory/skill changes require the reviewed `card` + `promote` flow; eval regression cases require `eval-fixture`.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Do not pass `--target` to `/ber fix` or `/ber remember`; direct durable writes are disabled and must refuse.\n- Only promote to durable memory or skill files after an explicit review decision using `card` then `promote`.\n- Memory promotions must target an existing `memory/*.md` file.\n- Skill promotions must target `SKILL.md` in the current skill project.\n- Eval fixtures must use `eval-fixture` and target `.json` or `.jsonl` under `tests/` or `evals/`.\n- Scanner hard blocks and warnings both block promotion. Adjust, quarantine, or supersede the lesson instead of forcing it through.\n- Keep corrections factual: bad outcome, desired outcome, and scope.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if promoted, and how it was reviewed.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or promoted to a named durable file through a lesson card.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- direct `fix --target`, `remember --target`, and `apply-memory-patch` attempts refuse without changing target files\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.5.5:README.md\n\n# Better Every Run\n\nLightweight run learning for OpenClaw agents.\n\nBetter Every Run turns explicit `/ber` corrections into future behavior. It does not auto-capture casual chat. The user gives a short command, and the agent reports what was recorded and where it was stored. Accepted lessons carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, lifecycle metadata, and eval-fixture output so an agent can decide whether a correction should stay local or become memory, a skill rule, or a regression case.\n\n## Install\n\n### OpenClaw / ClawHub\n\n```bash\nopenclaw skills install better-every-run\n```\n\n### Manual\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git ~/.openclaw/workspace/skills/better-every-run\n```\n\nFor Claude Code, Codex, or other agent harnesses, copy this folder into the harness skill directory and load `SKILL.md`.\n\n## Human Surface\n\nIn OpenClaw chat:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was promoted through a reviewed durable flow.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage helper internals during normal use.\n- `/ber fix` and `/ber remember` never append directly to durable files, even when `--target` is supplied.\n- The agent should summarize the outcome in chat, including the local store and any reviewed durable promotion.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory and skill writes require a fresh lesson card, a stable target hash, and a clean BER scanner verdict.\n- Eval durability goes through `eval-fixture`, which writes JSON/JSONL only under `tests/` or `evals/`.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence clearly. Promotion commands are agent-facing: `card --to memory|skill` writes a lesson card with scanner state and target hash; `promote --to memory|skill` appends only when the card is still fresh and the scanner is clean; `eval-fixture` turns a correction into a JSON regression case.\n\nRetired unsafe path: `apply-memory-patch` now refuses. `export-memory-patch` remains available as review output only.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable memory/skill promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Package Contents\n\nThis ClawHub package ships the runtime skill, helper, workflow references, examples, and smoke tests. Terminal recording assets are kept GitHub-only.\n\n## Status\n\nUsable public skill bundle, published on ClawHub as `better-every-run@0.5.5`.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.5.5:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.5.5\",\n  \"publishedAt\": 1780672174510\n}\n\nFile v0.5.5:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.5.5:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result. Normal `fix` and `remember` commands write only to `.better-every-run/`. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do code work on the approved development host\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do code work on the approved development host.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include local storage status and any open proposed lessons.\n\n## Promote To Memory Or Skill\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written and the scanner verdict is clean.\n\n## Promote To Eval\n\nEval durability uses a structured fixture command, not markdown append promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nEval fixture targets must be `.json` or `.jsonl` files under `tests/` or `evals/`.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Review Export\n\nThis older patch flow is review-only now:\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\n```\n\n`apply-memory-patch` is retired and refuses. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying the lesson is local until a reviewed promotion happens.\n\nFile v0.5.5:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`. Durable changes require a reviewed lesson card for memory/skill promotion, or `eval-fixture` for regression coverage, without expanding the human-facing command surface.\n\nFile v0.5.5:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before memory or skill promotion\n\nMemory card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere. Direct durable writes from `fix`, `remember`, and the retired patch applier are blocked.\n\nFile v0.5.5:skill-card.md\n\n## Description: <br>\nBetter Every Run turns explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[leostehlik](https://clawhub.ai/user/leostehlik) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent users use this skill to explicitly capture corrections, preferences, and reusable lessons from a run, then review whether they should stay local or become durable memory, skill behavior, or eval coverage. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Local correction records may contain secrets, private identifiers, or workspace-specific details if users include them in lessons. <br>\nMitigation: Review .better-every-run before sharing a workspace and avoid recording secrets or private identifiers. <br>\nRisk: Promoting lessons too broadly can cause future agents to follow stale or overly specific behavior. <br>\nMitigation: Approve memory or skill promotions only when the lesson should truly affect future agent behavior. <br>\nRisk: Incorrect correction proposals could introduce misleading guidance into memory, skills, or eval fixtures. <br>\nMitigation: Use the reviewed card and promote flow, require a clean scanner verdict, and quarantine or supersede lessons that should not become durable. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/leostehlik/better-every-run) <br>\n- [README](README.md) <br>\n- [Better Every Run Workflow](references/workflow.md) <br>\n- [Report Template](references/report-template.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown and concise chat text with optional shell command output and JSON/JSONL eval fixtures.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Records explicit lessons in a local .better-every-run store; durable promotions require a reviewed card, a stable target hash, and a clean scanner verdict.] <br>\n\n## Skill Version(s): <br>\n0.5.5 (source: server release metadata and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.5.5:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.4: 13 files, 20266 bytes\n\nFiles: examples/demo.md (609b), examples/upstream-loop.md (1464b), LICENSE (1068b), Makefile (41b), README.md (2875b), references/report-template.md (698b), references/workflow.md (3801b), scripts/ber (1673b), scripts/ber.js (31346b), skill-card.md (2361b), SKILL.md (3342b), tests/smoke.sh (6801b), _meta.json (135b)\n\nFile v0.5.4:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: turn explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.4\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat, including whether anything was written locally or appended to a durable memory file. Lessons may carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, quarantine/supersession metadata, and eval-fixture follow-up.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Only append to a durable memory file when the user explicitly asked for persistence or approved the target.\n- Keep corrections factual: bad outcome, desired outcome, target file if applying.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if used, and how to review it.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or appended to a named durable file.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.5.4:README.md\n\n# Better Every Run\n\nLightweight run learning for OpenClaw agents.\n\nBetter Every Run turns explicit `/ber` corrections into future behavior. It does not auto-capture casual chat. The user gives a short command, and the agent reports what was recorded and where it was stored. Accepted lessons now carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, lifecycle metadata, and eval-fixture output so an agent can decide whether a correction should stay local or become memory, a skill rule, or a regression case.\n\n## Human Surface\n\nIn OpenClaw chat:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was appended to a named durable memory file.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage accept/export/apply steps during normal use.\n- The agent should summarize the outcome in chat, including the storage location.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory writes must be explicit and target a real file.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence and durable target files clearly. Promotion commands are agent-facing: `card --to memory|skill|eval` writes a lesson card with scanner state and target hash; `promote --to memory|skill|eval --require-card` appends only when the card is still fresh; `eval-fixture` turns a correction into a JSON regression case.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.5.4:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.5.4\",\n  \"publishedAt\": 1780599179519\n}\n\nFile v0.5.4:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.5.4:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nIn OpenClaw chat, the human-facing prompt should be this simple:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result, including whether data was written only to `.better-every-run/` or also to a durable memory file. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do GitHub/code work on the approved development host, not in the agent workspace\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do GitHub/code work on the approved development host, not in the agent workspace.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include storage status and any open proposed lessons.\n\n## Promote To Memory, Skill, Or Eval\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md --require-card\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md --require-card\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written. Eval fixtures write JSON regression cases for repeated failures.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Apply Durable Memory\n\nThis older patch flow remains available for audits and bulk accepted-lesson exports.\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\nnode scripts/ber.js apply-memory-patch --target memory/decisions.md\n```\n\nUse `export-memory-patch` in chat before applying when a durable file write is risky or ambiguous. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying where the lesson was stored.\n\nFile v0.5.4:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`; durable memory files are changed only when explicitly targeted. When a lesson deserves durability, the agent can promote it into memory, skill behavior, or eval coverage without expanding the human-facing command surface.\n\nFile v0.5.4:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before promotion\n\nLesson card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to eval --target tests/ber-regressions.json\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md --require-card\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md --require-card\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere.\n\nFile v0.5.4:skill-card.md\n\n## Description: <br>\nBetter Every Run turns explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[leostehlik](https://clawhub.ai/user/leostehlik) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nDevelopers and agent operators use this skill to capture explicit correction requests, report what was learned, and promote selected lessons into memory, skill behavior, or eval coverage with human-approved durable writes. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can record correction history and append lessons into broadly chosen files that may affect future agent behavior. <br>\nMitigation: Use it only for explicit /ber or durable-learning requests, require clear human approval of every durable target path, and report where data was written. <br>\nRisk: Correction records may contain secrets, private identifiers, or local context if users choose to capture them. <br>\nMitigation: Keep .better-every-run private, avoid capturing secrets or private identifiers, and review local lessons before promotion or publication. <br>\n\n\n## Reference(s): <br>\n- [Better Every Run on ClawHub](https://clawhub.ai/leostehlik/better-every-run) <br>\n- [Workflow](references/workflow.md) <br>\n- [Report Template](references/report-template.md) <br>\n- [Upstream Loop Demo](examples/upstream-loop.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Code, Configuration, Guidance] <br>\n**Output Format:** [Chat summaries, Markdown reports, shell command invocations, JSON eval fixtures, and appended durable-memory text when explicitly approved.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write local correction history under .better-every-run/ and may append to approved memory, skill, or eval targets.] <br>\n\n## Skill Version(s): <br>\n0.5.4 (source: server release metadata and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.5.4:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.3: 15 files, 22047 bytes\n\nFiles: examples/asciinema-demo.sh (2921b), examples/demo.md (609b), examples/terminal-demo.md (575b), examples/upstream-loop.md (1464b), LICENSE (1068b), Makefile (41b), README.md (2875b), references/report-template.md (698b), references/workflow.md (3801b), scripts/ber (1673b), scripts/ber.js (31346b), skill-card.md (2186b), SKILL.md (3342b), tests/smoke.sh (6801b), _meta.json (135b)\n\nFile v0.5.3:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: turn explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.3\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat, including whether anything was written locally or appended to a durable memory file. Lessons may carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, quarantine/supersession metadata, and eval-fixture follow-up.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Only append to a durable memory file when the user explicitly asked for persistence or approved the target.\n- Keep corrections factual: bad outcome, desired outcome, target file if applying.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if used, and how to review it.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or appended to a named durable file.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.5.3:README.md\n\n# Better Every Run\n\nLightweight run learning for OpenClaw agents.\n\nBetter Every Run turns explicit `/ber` corrections into future behavior. It does not auto-capture casual chat. The user gives a short command, and the agent reports what was recorded and where it was stored. Accepted lessons now carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, lifecycle metadata, and eval-fixture output so an agent can decide whether a correction should stay local or become memory, a skill rule, or a regression case.\n\n## Human Surface\n\nIn OpenClaw chat:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was appended to a named durable memory file.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage accept/export/apply steps during normal use.\n- The agent should summarize the outcome in chat, including the storage location.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory writes must be explicit and target a real file.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence and durable target files clearly. Promotion commands are agent-facing: `card --to memory|skill|eval` writes a lesson card with scanner state and target hash; `promote --to memory|skill|eval --require-card` appends only when the card is still fresh; `eval-fixture` turns a correction into a JSON regression case.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.5.3:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.5.3\",\n  \"publishedAt\": 1780598887703\n}\n\nFile v0.5.3:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.5.3:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nIn OpenClaw chat, the human-facing prompt should be this simple:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result, including whether data was written only to `.better-every-run/` or also to a durable memory file. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do GitHub/code work on the approved development host, not in the agent workspace\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do GitHub/code work on the approved development host, not in the agent workspace.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include storage status and any open proposed lessons.\n\n## Promote To Memory, Skill, Or Eval\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md --require-card\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md --require-card\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written. Eval fixtures write JSON regression cases for repeated failures.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Apply Durable Memory\n\nThis older patch flow remains available for audits and bulk accepted-lesson exports.\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\nnode scripts/ber.js apply-memory-patch --target memory/decisions.md\n```\n\nUse `export-memory-patch` in chat before applying when a durable file write is risky or ambiguous. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying where the lesson was stored.\n\nFile v0.5.3:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`; durable memory files are changed only when explicitly targeted. When a lesson deserves durability, the agent can promote it into memory, skill behavior, or eval coverage without expanding the human-facing command surface.\n\nFile v0.5.3:examples/terminal-demo.md\n\n# Terminal Demo\n\nRecord the Better Every Run terminal demo with asciinema:\n\n```bash\nasciinema rec --overwrite -q -i 1.0 -t \"Better Every Run v0.5\" \\\n  -c \"bash examples/asciinema-demo.sh\" \\\n  /tmp/better-every-run-v0.5.cast\n```\n\nPlay a local recording:\n\n```bash\nasciinema play /tmp/better-every-run-v0.5.cast\n```\n\nThe committed demo recording belongs in the GitHub repository only. ClawHub packages include the demo script and these recording instructions, not the `.cast` file.\n\nThe script runs in a temporary directory and leaves no `.better-every-run/` state in the repo.\n\nFile v0.5.3:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before promotion\n\nLesson card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to eval --target tests/ber-regressions.json\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md --require-card\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md --require-card\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere.\n\nFile v0.5.3:skill-card.md\n\n## Description: <br>\nBetter Every Run turns explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[leostehlik](https://clawhub.ai/user/leostehlik) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nDevelopers and OpenClaw users use this skill to record explicit correction lessons, inspect local learning reports, and promote selected lessons into memory, skill behavior, or regression fixtures after review. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The local correction log can contain private workspace details if a user asks the agent to capture them. <br>\nMitigation: Capture only explicit corrections, avoid secrets and private details, keep `.better-every-run/` private, and review or delete local lessons as needed. <br>\nRisk: Promoted lessons can introduce incorrect guidance into memory, skill, or eval files. <br>\nMitigation: Review the generated lesson and target path, prefer the lesson-card and require-card flow, and scan before promotion. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/leostehlik/better-every-run) <br>\n- [Workflow reference](references/workflow.md) <br>\n- [Report template](references/report-template.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown chat summaries with inline shell commands, local lesson files, lesson cards, and JSON eval fixtures] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Reports disclose whether data stayed in the project-local store or was appended to a durable target file.] <br>\n\n## Skill Version(s): <br>\n0.5.3 (source: SKILL.md frontmatter and server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.5.3:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.2: 16 files, 24650 bytes\n\nFiles: examples/asciinema-demo.sh (2921b), examples/better-every-run-v0.5.cast.txt (9247b), examples/demo.md (609b), examples/terminal-demo.md (439b), examples/upstream-loop.md (1464b), LICENSE (1068b), Makefile (41b), README.md (2875b), references/report-template.md (698b), references/workflow.md (3801b), scripts/ber (1673b), scripts/ber.js (31346b), skill-card.md (2665b), SKILL.md (3342b), tests/smoke.sh (6801b), _meta.json (135b)\n\nFile v0.5.2:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: turn explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.2\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat, including whether anything was written locally or appended to a durable memory file. Lessons may carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, quarantine/supersession metadata, and eval-fixture follow-up.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Only append to a durable memory file when the user explicitly asked for persistence or approved the target.\n- Keep corrections factual: bad outcome, desired outcome, target file if applying.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if used, and how to review it.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to show what was learned, including open proposals and promotion suggestions.\n\n## Agent Implementation\n\nKeep low-level helper commands out of normal chat unless debugging, but never hide persistence. A normal answer should say whether the lesson was recorded only in `.better-every-run/` or appended to a named durable file.\n\nRead `references/workflow.md` for the full workflow.\nRead `references/report-template.md` for expected chat output shape.\n\nBefore publishing or packaging, verify:\n- `.better-every-run/` is excluded\n- `make test` passes\n- lesson-card, lifecycle, and eval-fixture demos are generic and contain no private workspace paths, chat IDs, tokens, or hostnames\n- examples contain no private workspace paths, chat IDs, tokens, or hostnames\n- docs say activation is explicit-only and persistence is disclosed\n\nFile v0.5.2:README.md\n\n# Better Every Run\n\nLightweight run learning for OpenClaw agents.\n\nBetter Every Run turns explicit `/ber` corrections into future behavior. It does not auto-capture casual chat. The user gives a short command, and the agent reports what was recorded and where it was stored. Accepted lessons now carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, lifecycle metadata, and eval-fixture output so an agent can decide whether a correction should stay local or become memory, a skill rule, or a regression case.\n\n## Human Surface\n\nIn OpenClaw chat:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was appended to a named durable memory file.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage accept/export/apply steps during normal use.\n- The agent should summarize the outcome in chat, including the storage location.\n- Lesson metadata should explain the intended scope: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`.\n- Durable memory writes must be explicit and target a real file.\n- No plugin, server, web UI, database, or external service is required.\n\n## Storage\n\nThe helper writes a project-local evidence trail under `.better-every-run/`. That folder should stay private, be excluded from publishing, and can be reviewed or deleted by the workspace owner.\n\n## Internal Helper\n\nThe bundled helper is for agents, tests, and audits. Keep normal chat short, but disclose persistence and durable target files clearly. Promotion commands are agent-facing: `card --to memory|skill|eval` writes a lesson card with scanner state and target hash; `promote --to memory|skill|eval --require-card` appends only when the card is still fresh; `eval-fixture` turns a correction into a JSON regression case.\n\n## Upstream Of Skills, Memory, And Evals\n\nBER is deliberately upstream of heavier machinery:\n\n- Use `/ber fix` when the human corrects a bad outcome.\n- Use `/ber report` to see accepted lessons, open proposals, expired lessons, lifecycle counts, and promotion suggestions.\n- Write a lesson card before durable promotion so stale targets and scanner issues are caught before a file is changed.\n- Quarantine one-off/bad lessons and supersede stale lessons when a better rule replaces them.\n- Promote only the lessons that deserve durability. Memory captures operating preferences, skills capture reusable behavior, and eval fixtures capture regressions that should fail if the agent slips again.\n\nSee `examples/upstream-loop.md` for the end-to-end flow.\n\n## Verify\n\n```bash\nmake test\n```\n\nFile v0.5.2:_meta.json\n\n{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.5.2\",\n  \"publishedAt\": 1780598634768\n}\n\nFile v0.5.2:references/report-template.md\n\n# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing.\n\nFile v0.5.2:references/workflow.md\n\n# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nIn OpenClaw chat, the human-facing prompt should be this simple:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result, including whether data was written only to `.better-every-run/` or also to a durable memory file. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do GitHub/code work on the approved development host, not in the agent workspace\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do GitHub/code work on the approved development host, not in the agent workspace.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include storage status and any open proposed lessons.\n\n## Promote To Memory, Skill, Or Eval\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md --require-card\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md --require-card\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written. Eval fixtures write JSON regression cases for repeated failures.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to keep learning sharp:\n\n```bash\nnode scripts/ber.js quarantine <lesson-id> --reason \"one-off\"\nnode scripts/ber.js supersede <old-lesson-id> --by <new-lesson-id> --reason \"environment changed\"\n```\n\n## Apply Durable Memory\n\nThis older patch flow remains available for audits and bulk accepted-lesson exports.\n\n```bash\nnode scripts/ber.js accept <lesson-id>\nnode scripts/ber.js export-memory-patch\nnode scripts/ber.js apply-memory-patch --target memory/decisions.md\n```\n\nUse `export-memory-patch` in chat before applying when a durable file write is risky or ambiguous. Normal `/ber fix` and `/ber remember` use should stay concise, while clearly saying where the lesson was stored.\n\nFile v0.5.2:examples/demo.md\n\n# Demo\n\nFrom any project directory:\n\n```text\n/ber fix agent gave a vague update -> agent gives exact command output and next action\n/ber remember design human-facing software around the shortest path to outcome\n/ber report\n```\n\nExpected result: the OpenClaw agent responds with the captured lesson or report and says where it was stored. Local evidence stays under `.better-every-run/`; durable memory files are changed only when explicitly targeted. When a lesson deserves durability, the agent can promote it into memory, skill behavior, or eval coverage without expanding the human-facing command surface.\n\nFile v0.5.2:examples/terminal-demo.md\n\n# Terminal Demo\n\nRecord the Better Every Run terminal demo with asciinema:\n\n```bash\nasciinema rec --overwrite -q -i 1.0 -t \"Better Every Run v0.5\" \\\n  -c \"bash examples/asciinema-demo.sh\" \\\n  examples/better-every-run-v0.5.cast.txt\n```\n\nPlay the committed recording locally:\n\n```bash\nasciinema play examples/better-every-run-v0.5.cast.txt\n```\n\nThe script runs in a temporary directory and leaves no `.better-every-run/` state in the repo.\n\nFile v0.5.2:examples/upstream-loop.md\n\n# BER Upstream Loop Demo\n\nBetter Every Run is the correction loop before a lesson becomes durable memory, a skill rule, or an eval case.\n\n## 1. Capture the correction\n\n```text\n/ber fix agent says done without proof -> agent gives exact verification output before claiming done\n```\n\nAgent helper:\n\n```bash\nnode scripts/ber.js fix \"agent says done without proof -> agent gives exact verification output before claiming done\" --scope eval --tags proof,regression\n```\n\n## 2. Read the report\n\n```bash\nnode scripts/ber.js report --today\n```\n\nThe report shows accepted lessons, expiry/status metadata, and promotion suggestions.\n\n## 3. Write a lesson card before promotion\n\nLesson card:\n\n```bash\nnode scripts/ber.js card <lesson-id> --to eval --target tests/ber-regressions.json\n```\n\nThe card records the target hash and scanner verdict before a durable file is changed.\n\n## 4. Promote only when useful\n\nMemory promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md --require-card\n```\n\nSkill promotion:\n\n```bash\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md --require-card\n```\n\nEval promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\n## Product Point\n\nThe human still sees the small `/ber` surface. The agent gets enough structure to decide whether the correction belongs in memory, a skill, an eval fixture, quarantine, supersession, or nowhere.\n\nFile v0.5.2:skill-card.md\n\n## Description: <br>\nBetter Every Run turns explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[leostehlik](https://clawhub.ai/user/leostehlik) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent operators use this skill to persist explicit user corrections as scoped lessons, reports, lesson cards, durable memory or skill updates, and eval fixtures. It is intended for deliberate learning moments, not passive capture of ordinary chat. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can run local helper commands and may write project-local learning state or named durable files when explicitly invoked. <br>\nMitigation: Review the requested /ber action and target file before durable promotion; keep normal use explicit and disclose where each lesson was stored. <br>\nRisk: Correction records may include private or sensitive workspace details if the user asks to persist them. <br>\nMitigation: Avoid capturing private data unless necessary, keep .better-every-run local and unpublished, and review lesson cards before promotion. <br>\nRisk: Stale or low-quality lessons can degrade future agent behavior if promoted without review. <br>\nMitigation: Use lesson cards, target hashes, scanner verdicts, quarantine, supersession, and eval fixtures before changing durable memory, skill behavior, or regression coverage. <br>\n\n\n## Reference(s): <br>\n- [Better Every Run workflow](references/workflow.md) <br>\n- [Report template](references/report-template.md) <br>\n- [ClawHub skill page](https://clawhub.ai/leostehlik/better-every-run) <br>\n- [Publisher profile](https://clawhub.ai/user/leostehlik) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown chat summaries with inline shell commands, local lesson records, lesson cards, and optional JSON eval fixtures.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Reports disclose whether data stayed in the project-local .better-every-run store or changed a named durable file.] <br>\n\n## Skill Version(s): <br>\n0.5.2 (source: server release metadata and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.5.2:examples/better-every-run-v0.5.cast.txt\n\n{\"version\": 2, \"width\": 100, \"height\": 30, \"timestamp\": 1780598400, \"idle_time_limit\": 1.0, \"env\": {\"SHELL\": \"/bin/bash\", \"TERM\": \"xterm\"}, \"title\": \"Better Every Run v0.5\"}\n[0.007851, \"o\", \"\\r\\n# Better Every Run: correction intake, not note hoarding\\r\\n\\r\\n$ ber init\\r\\n\"]\n[0.043683, \"o\", \"# Better Every Run initialized\\r\\n\\r\\n- Store: /tmp/tmp.6cyZV6rplT/.better-every-run\\r\\n- Events: /tmp/tmp.6cyZV6rplT/.better-every-run/events.jsonl\\r\\n- Lessons: /tmp/tmp.6cyZV6rplT/.better-every-run/lessons.jsonl\\r\\n\"]\n[0.048044, \"o\", \"\\r\\n# 1. Capture a human correction with the tiny /ber-shaped surface\\r\\n\"]\n[0.048061, \"o\", \"\\r\\n$ ber fix agent says done without proof -> agent shows exact verification output --scope eval --tags proof,regression\\r\\n\"]\n[0.084041, \"o\", \"# Fixed\\r\\n\\r\\n- From: agent says done without proof\\r\\n- To: agent shows exact verification output\\r\\n- Lesson: les_20260604184000_fgko\\r\\n- Local store: .better-every-run/\\r\\n- Durable file changed: none\\r\\n\"]\n[0.123808, \"o\", \"\\r\\n# 2. Report shows the lesson and where it should go\\r\\n\"]\n[0.123847, \"o\", \"\\r\\n$ ber report --today\\r\\n\"]\n[0.159507, \"o\", \"# Better Every Run report (today)\\r\\n\\r\\n## Storage\\r\\n\\r\\n- Local store: .better-every-run/\\r\\n- Durable files changed: none\\r\\n\\r\\n## Counts\\r\\n\\r\\n- Events captured: 1\\r\\n- Lessons proposed: 1\\r\\n- Open proposals: 0\\r\\n- Accepted: 1\\r\\n- Rejected: 0\\r\\n- Quarantined: 0\\r\\n- Superseded: 0\\r\\n- Promoted: 0\\r\\n- Expired: 0\\r\\n\\r\\n## Event types\\r\\n\\r\\n- correction: 1\\r\\n\\r\\n## Recent evidence\\r\\n\\r\\n- evt_20260604184000_l6vi | correction: When this happens: agent says done without proof. Prefer this outcome: agent shows exact verification output.\\r\\n\\r\\n## Open lesson proposals\\r\\n\\r\\n- none\\r\\n\\r\\n## Promotion suggestions\\r\\n\\r\\n- les_20260604184000_fgko | eval/correction: promote to eval\\r\\n  Review: node scripts/ber.js card les_20260604184000_fgko --to eval --target <markdown-file>\\r\\n  Apply: node scripts/ber.js promote les_20260604184000_fgko --to eval --target <markdown-file> --require-card\\r\\n\\r\\n## Next action\\r\\n\\r\\nPromote accepted lessons only when they should change memory, a skill, or an eval.\\r\\n\"]\n[0.163718, \"o\", \"\\r\\n# 3. Write a lesson card before touching a durable file\\r\\n\"]\n[0.163813, \"o\", \"\\r\\n$ ber card les_20260604184000_fgko --to eval --target eval-target.md\\r\\n\"]\n[0.20249, \"o\", \"# Lesson card written\\r\\n\\r\\n- ID: les_20260604184000_fgko\\r\\n- Card: .better-every-run/cards/les_20260604184000_fgko.md\\r\\n- To: eval\\r\\n- Target: eval-target.md\\r\\n- Target SHA-256: 67f26a99b8233f8c7f154f2f0276702bf76b816163a4ee9109fe9e522db3d4eb\\r\\n- Verdict: clean\\r\\n- Hard blocks: none\\r\\n- Warnings: none\\r\\n\"]\n[0.20682, \"o\", \"\\r\\n# 4. Stale target protection: change the file after the card\\r\\n\"]\n[0.206855, \"o\", \"\\r\\n$ ber promote les_20260604184000_fgko --to eval --target eval-target.md --require-card\\r\\n\"]\n[0.246462, \"o\", \"Error: Target changed since lesson card was written: eval-target.md. Expected 67f26a99b8233f8c7f154f2f0276702bf76b816163a4ee9109fe9e522db3d4eb, got c522d30acf949ea14dbabf9792c8f59641cf5fb1b5be70ad9a2b0ddd0d8b30a2. Re-run card before promoting.\\r\\n\"]\n[0.246729, \"o\", \"\\r\\n# 5. Re-card and promote after review\\r\\n\"]\n[0.246782, \"o\", \"\\r\\n$ ber card les_20260604184000_fgko --to eval --target eval-target.md\\r\\n\"]\n[0.285214, \"o\", \"# Lesson card written\\r\\n\\r\\n- ID: les_20260604184000_fgko\\r\\n- Card: .better-every-run/cards/les_20260604184000_fgko.md\\r\\n- To: eval\\r\\n- Target: eval-target.md\\r\\n- Target SHA-256: c522d30acf949ea14dbabf9792c8f59641cf5fb1b5be70ad9a2b0ddd0d8b30a2\\r\\n- Verdict: clean\\r\\n- Hard blocks: none\\r\\n- Warnings: none\\r\\n\"]\n[0.289284, \"o\", \"\\r\\n$ ber promote les_20260604184000_fgko --to eval --target eval-target.md --require-card\\r\\n\"]\n[0.329045, \"o\", \"# Lesson promoted\\r\\n\\r\\n- ID: les_20260604184000_fgko\\r\\n- To: eval\\r\\n- Target: eval-target.md\\r\\n- Verdict: clean\\r\\n- Hard blocks: none\\r\\n- Warnings: none\\r\\n\"]\n[0.33337, \"o\", \"\\r\\n# 6. Generate a regression fixture from the correction\\r\\n\\r\\n$ ber eval-fixture les_20260604184000_fgko --target evals/ber-regressions.json --name agent must show verification proof\\r\\n\"]\n[0.36367, \"o\", \"# Eval fixture written\\r\\n\\r\\n- Lesson: les_20260604184000_fgko\\r\\n- Target: evals/ber-regressions.json\\r\\n- Fixture: ber_les_20260604184000_fgko\\r\\n\"]\n[0.367499, \"o\", \"\\r\\n$ node -e \\\"print eval fixture\\\"\\r\\n\"]\n[0.396341, \"o\", \"{\\r\\n  \\\"id\\\": \\\"ber_les_20260604184000_fgko\\\",\\r\\n  \\\"name\\\": \\\"agent must show verification proof\\\",\\r\\n  \\\"source\\\": \\\"better-every-run\\\",\\r\\n  \\\"lessonId\\\": \\\"les_20260604184000_fgko\\\",\\r\\n  \\\"category\\\": \\\"correction\\\",\\r\\n  \\\"scope\\\": \\\"eval\\\",\\r\\n  \\\"evidenceIds\\\": [\\r\\n    \\\"evt_20260604184000_l6vi\\\"\\r\\n  ],\\r\\n  \\\"prompt\\\": \\\"agent says done without proof\\\",\\r\\n  \\\"expected\\\": \\\"agent shows exact verification output\\\",\\r\\n  \\\"shouldFailWhen\\\": \\\"agent says done without proof\\\",\\r\\n  \\\"shouldPassWhen\\\": \\\"agent shows exact verification output\\\",\\r\\n  \\\"createdAt\\\": \\\"2026-06-04T18:40:00.943Z\\\"\\r\\n}\\r\\n\"]\n[0.400423, \"o\", \"\\r\\n# 7. Quarantine one-off lessons instead of preserving bad policy\\r\\n\\r\\n$ ber remember --note This one-off deployment workaround should not become policy. --scope project --tags lifecycle\\r\\n\"]\n[0.435624, \"o\", \"# Captured evt_20260604184001_b9w2\\r\\n\\r\\n- Type: preference\\r\\n- Note: This one-off deployment workaround should not become policy.\\r\\n- Date: 2026-06-04 [lifecycle]\\r\\n\"]\n[0.437061, \"o\", \"# Remembered\\r\\n\\r\\n- Lesson: les_20260604184001_7l37\\r\\n- Status: accepted\\r\\n- Text: Respect this user preference: This one-off deployment workaround should not become policy.\\r\\n\\r\\nStorage:\\r\\n- Local store: .better-every-run/\\r\\n- Durable file changed: none\\r\\n\\r\\nUse this in chat as: \\\"Better Every Run: remembered.\\\"\\r\\n\"]\n[0.475453, \"o\", \"\\r\\n$ ber quarantine les_20260604184001_7l37 --reason one-off workaround\\r\\n\"]\n[0.51106, \"o\", \"# Lesson quarantined\\r\\n\\r\\n- ID: les_20260604184001_7l37\\r\\n- Category: preference\\r\\n- Text: Respect this user preference: This one-off deployment workaround should not become policy.\\r\\n- Reason: one-off workaround\\r\\n\"]\n[0.515034, \"o\", \"\\r\\n# 8. Supersede stale lessons when a better rule appears\\r\\n\\r\\n$ ber remember --note Use the old deploy checklist. --scope skill --tags lifecycle\\r\\n\"]\n[0.550329, \"o\", \"# Captured evt_20260604184001_l5oi\\r\\n\\r\\n- Type: preference\\r\\n- Note: Use the old deploy checklist.\\r\\n- Date: 2026-06-04 [lifecycle]\\r\\n\"]\n[0.551367, \"o\", \"# Remembered\\r\\n\\r\\n- Lesson: les_20260604184001_wirz\\r\\n- Status: accepted\\r\\n- Text: Respect this user preference: Use the old deploy checklist.\\r\\n\\r\\nStorage:\\r\\n- Local store: .better-every-run/\\r\\n- Durable file changed: none\\r\\n\\r\\nUse this in chat as: \\\"Better Every Run: remembered.\\\"\\r\\n\"]\n[0.590422, \"o\", \"\\r\\n$ ber remember --note Use the deploy checklist with verification proof. --scope skill --tags lifecycle\\r\\n\"]\n[0.624981, \"o\", \"# Captured evt_20260604184001_a4u1\\r\\n\\r\\n- Type: preference\\r\\n- Note: Use the deploy checklist with verification proof.\\r\\n- Date: 2026-06-04 [lifecycle]\\r\\n\"]\n[0.626025, \"o\", \"# Remembered\\r\\n\\r\\n- Lesson: les_20260604184001_npdb\\r\\n- Status: accepted\\r\\n- Text: Respect this user preference: Use the deploy checklist with verification proof.\\r\\n\\r\\nStorage:\\r\\n- Local store: .better-every-run/\\r\\n- Durable file changed: none\\r\\n\\r\\nUse this in chat as: \\\"Better Every Run: remembered.\\\"\\r\\n\"]\n[0.663579, \"o\", \"\\r\\n$ ber supersede les_20260604184001_wirz --by les_20260604184001_npdb --reason new rule includes verification\\r\\n\"]\n[0.698187, \"o\", \"# Lesson superseded\\r\\n\\r\\n- Old: les_20260604184001_wirz\\r\\n- New: les_20260604184001_npdb\\r\\n- Reason: new rule includes verification\\r\\n\"]\n[0.702291, \"o\", \"\\r\\n# Final report: BER routes corrections into memory, skill behavior, evals, quarantine, supersession, or nothing\\r\\n\\r\\n$ ber report --today\\r\\n\"]\n[0.736666, \"o\", \"# Better Every Run report (today)\\r\\n\\r\\n## Storage\\r\\n\\r\\n- Local store: .better-every-run/\\r\\n- Durable files changed: none\\r\\n\\r\\n## Counts\\r\\n\\r\\n- Events captured: 4\\r\\n- Lessons proposed: 4\\r\\n- Open proposals: 0\\r\\n- Accepted: 1\\r\\n- Rejected: 0\\r\\n- Quarantined: 1\\r\\n- Superseded: 1\\r\\n- Promoted: 1\\r\\n- Expired: 0\\r\\n\\r\\n## Event types\\r\\n\\r\\n- preference: 3\\r\\n- correction: 1\\r\\n\\r\\n## Recent evidence\\r\\n\\r\\n- evt_20260604184001_a4u1 | preference: Use the deploy checklist with verification proof.\\r\\n- evt_20260604184001_l5oi | preference: Use the old deploy checklist.\\r\\n- evt_20260604184001_b9w2 | preference: This one-off deployment workaround should not become policy.\\r\\n- evt_20260604184000_l6vi | correction: When this happens: agent says done without proof. Prefer this outcome: agent shows exact verification output.\\r\\n\\r\\n## Open lesson proposals\\r\\n\\r\\n- none\\r\\n\\r\\n## Promotion suggestions\\r\\n\\r\\n- les_20260604184001_npdb | skill/preference: promote to skill\\r\\n  Review: node scripts/ber.js card les_20260604184001_npdb --to skill --target <markdown-file>\\r\\n  Apply: no\"]\n[0.736703, \"o\", \"de scripts/ber.js promote les_20260604184001_npdb --to skill --target <markdown-file> --require-card\\r\\n\\r\\n## Next action\\r\\n\\r\\nPromote accepted lessons only when they should change memory, a skill, or an eval.\\r\\n\"]\n[0.74071, \"o\", \"\\r\\n# Demo complete\\r\\n\"]\n\nFile v0.5.2:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Leo Stehlik\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.5.1: 15 files, 21985 bytes\n\nFiles: examples/asciinema-demo.sh (2921b), examples/demo.md (609b), examples/terminal-demo.md (410b), examples/upstream-loop.md (1464b), LICENSE (1068b), Makefile (41b), README.md (2875b), references/report-template.md (698b), references/workflow.md (3801b), scripts/ber (1673b), scripts/ber.js (31346b), skill-card.md (2270b), SKILL.md (3342b), tests/smoke.sh (6801b), _meta.json (135b)\n\nFile v0.5.1:SKILL.md\n\n---\nname: ber\ndescription: \"Better Every Run: turn explicit /ber corrections into preferred future outcomes through a small fix, remember, and report flow.\"\nuser-invocable: true\nmetadata:\n  version: \"0.5.1\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat, including whether anything was written locally or appended to a durable memory file. Lessons may carry scope, expiry, status, promotion hints, lesson cards, scanner verdicts, target hashes, quarantine/supersession metadata, and eval-fixture follow-up.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Only append to a durable memory file when the user explicitly asked for persistence or approved the target.\n- Keep corrections factual: bad outcome, desired outcome, target file if applying.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if used, and how to review it.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simple one-line preferences:\n\n```text\n/ber remember simple rule\n```\n\nUse `/ber report` to\n\nArchive v0.5.0: 13 files, 20165 bytes\n\nFiles: examples/demo.md (609b), examples/upstream-loop.md (1464b), LICENSE (1068b), Makefile (41b), README.md (2875b), references/report-template.md (698b), references/workflow.md (3801b), scripts/ber (1673b), scripts/ber.js (31245b), skill-card.md (2208b), SKILL.md (3342b), tests/smoke.sh (6801b), _meta.json (135b)\n\nArchive v0.3.0: 13 files, 16562 bytes\n\nFiles: examples/demo.md (609b), examples/upstream-loop.md (1152b), LICENSE (1068b), Makefile (41b), README.md (2447b), references/report-template.md (577b), references/workflow.md (3249b), scripts/ber (1673b), scripts/ber.js (21867b), skill-card.md (2438b), SKILL.md (3243b), tests/smoke.sh (3370b), _meta.json (135b)","readmeExcerpt":"Skill: Ber Clawhub V060 Owner: leostehlik Summary: Better Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals. Tags: agent-memory:0.5.7, agents:0.5.5, ai-agents:0.5.7, evals:0.5.7, latest:0.6.0, memory:0.5.5, openclaw:0.5.7, productivity:0.5.5 Version history: v0.6.0 | 2026-09-01T01:08:06.727Z | user v0.6.0 before/after correction ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report"},{"language":"text","snippet":"/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report"},{"language":"text","snippet":"/ber fix bad outcome -> desired outcome"},{"language":"text","snippet":"/ber remember simple rule"},{"language":"text","snippet":"/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report"},{"language":"bash","snippet":"git clone https://github.com/LeoStehlik/better-every-run.git\ncd better-every-run\nmake test"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: ber\ndescription: \"Better Every Run: capture explicit /ber corrections, review them, and promote only the lessons that deserve durable memory, skill rules, or evals.\"\nuser-invocable: true\nmetadata:\n  version: \"0.6.0\"\n---\n# Better Every Run\n\nUse this skill only when the user explicitly invokes `/ber`, names Better Every Run, or directly asks to persist a lesson for future runs. BER turns deliberate corrections into reviewed lessons without silently converting ordinary chat into permanent memory. Do not auto-capture ordinary corrections, casual preferences, or words like \"remember\", \"always\", \"never\", or \"next time\" unless the user clearly wants durable learning.\n\nThe human path is deliberately small:\n\n```text\n/ber fix bad outcome -> desired outcome\n/ber remember simple rule\n/ber report\n```\n\nThe agent runs the bundled local helper and reports the result in chat. `fix` and `remember` record only to the local `.better-every-run/` evidence store. Durable memory/skill changes require the reviewed `card` + `promote` flow; eval regression cases require `eval-fixture`.\n\n## When To Use\n\n- The user explicitly types `/ber fix ... -> ...`.\n- The user explicitly types `/ber remember ...`.\n- The user explicitly asks for a Better Every Run report.\n- The user asks the agent to record a reusable correction as durable memory.\n\n## Human Commands\n\n```text\n/ber fix agent wrote vague status -> agent gives exact command output and next action\n/ber remember use the approved development host for active code work\n/ber report\n```\n\n## Rules\n\n- Report CLI output back in chat; do not build web pages or dashboards.\n- Do not silently edit `MEMORY.md`, `AGENTS.md`, `SOUL.md`, or other durable instruction files.\n- Do not pass `--target` to `/ber fix` or `/ber remember`; direct durable writes are disabled and must refuse.\n- Only promote to durable memory or skill files after an explicit review decision using `card` then `promote`.\n- Memory promotions must target an existing `memory/*.md` file.\n- Skill promotions must target `SKILL.md` in the current skill project.\n- Eval fixtures must use `eval-fixture` and target `.json` or `.jsonl` under `tests/` or `evals/`.\n- Scanner hard blocks and warnings both block promotion. Adjust, quarantine, or supersede the lesson instead of forcing it through.\n- Keep corrections factual: bad outcome, desired outcome, and scope.\n- Use scope metadata when it helps decide whether a lesson belongs only to this run, the project, the workspace, a skill, memory, or an eval.\n- Avoid private data unless the user explicitly wants it captured.\n- Keep the user-facing flow short, but disclose persistence: local store, durable target file if promoted, and how it was reviewed.\n- Design for the shortest path to the user's outcome.\n- Never publish `.better-every-run/` state, local lessons, event logs, or private corrections.\n\n## Workflow\n\nFor normal chat use, keep the visible flow to one command:\n\n```text\n/ber fix bad outcome -> desired outcome\n```\n\nFor simpl"},{"path":"README.md","content":"# Better Every Run\n\nTeach the agent from explicit corrections without turning chat into permanent memory.\n\nBetter Every Run gives a correction a clean path: capture it locally, review whether it deserves to stick, then promote it to memory, a skill rule, or an eval only when the evidence is good. Nothing is learned from casual chat by accident.\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe useful part is the boundary. The agent can improve from a sharp correction, but it still has to say what was recorded, where it lives, and whether anything durable changed.\n\n**v0.6 focus:** a concrete before/after correction artifact: bad repeated agent behavior -> explicit `/ber fix` -> local lesson card -> later run improves without silently rewriting durable memory.\n\n## Start Here\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git\ncd better-every-run\nmake test\n```\n\nThen read `SKILL.md` and `examples/upstream-loop.md` to see the governed correction flow.\n\n## Install\n\n### OpenClaw / ClawHub\n\n```bash\nopenclaw skills install better-every-run\n```\n\n### Manual\n\n```bash\ngit clone https://github.com/LeoStehlik/better-every-run.git ~/.openclaw/workspace/skills/better-every-run\n```\n\nFor Claude Code, Codex, or other agent harnesses, copy this folder into the harness skill directory and load `SKILL.md`.\n\n## Conversion Proof\n\nBER is easiest to understand as a before/after loop:\n\n![Before and after BER correction flow](assets/ber-before-after-correction.svg)\n\nRead the compact proof story in [`examples/before-after-correction.md`](examples/before-after-correction.md). It shows the bad behavior, the exact `/ber fix`, what gets stored locally, what does not get promoted automatically, and how the later run changes.\n\n## Human Surface\n\nUse BER when the human explicitly wants a lesson recorded:\n\n```text\n/ber fix vague status update -> exact command output and next action\n/ber remember design software for humans from the shortest path to outcome\n/ber report\n```\n\nThe agent handles the local helper, then tells the human whether the lesson stayed in the project-local `.better-every-run/` store or was promoted through a reviewed durable flow.\n\n## Works With\n\nBER is written as an OpenClaw skill, but the pattern is portable to any agent runner that can load a `SKILL.md` file and run the bundled helper. It fits Codex, Claude Code, OpenCode, Hermes, and custom multi-agent harnesses that need explicit learning without silent memory writes.\n\n## Product Rule\n\n- The skill runs only from explicit `/ber` use or a direct request to persist a lesson.\n- Humans should not manage helper internals during normal use.\n- `/ber fix` and `/ber remember` never append directly to durable files, even when `--target` is supplied.\n- The agent should summarize the outcome in chat, including the local store and any reviewed durable promotion.\n- Lesson metadata should"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7d3r58cdxk8k0xg6jq6k65gs873c0c\",\n  \"slug\": \"better-every-run\",\n  \"version\": \"0.6.0\",\n  \"publishedAt\": 1788224886727\n}"},{"path":"references/report-template.md","content":"# Report Template\n\nUse this shape when summarizing Better Every Run output in chat:\n\n```text\nBetter Every Run report:\n\n- Events captured: N\n- Lessons accepted: M\n- Open proposals: K\n- Promotion suggestions: P\n- Quarantined/superseded/expired: Q/S/X\n- Local store: `.better-every-run/`\n- Durable files changed: none or `<path>`\n\nCaptured lessons:\n1. ...\n2. ...\n\nNo open proposals. Create a lesson card before durable promotion. Promote only lessons that should become memory, skill behavior, or eval coverage; quarantine or supersede the rest. No durable memory file was changed unless listed above.\n```\n\nKeep the user-facing report short. Mention internal commands only when debugging or auditing."},{"path":"references/workflow.md","content":"# Better Every Run Workflow\n\nBetter Every Run is for small, factual learning moments that the user explicitly wants persisted.\n\nOpenClaw command name: `ber`.\n\n## Normal Human Path\n\nUse one command for outcome corrections:\n\n```text\n/ber fix agent used wrong host for code work -> agent uses the approved development host\n```\n\nThe agent handles the helper command and reports the result. Normal `fix` and `remember` commands write only to `.better-every-run/`. Use `--scope` when the lesson has an obvious destination: `run`, `project`, `workspace`, `skill`, `memory`, or `eval`. Use `--expires YYYY-MM-DD` for temporary rules, or `--expires never` for explicit long-lived lessons.\n\nFor simple preferences:\n\n```text\n/ber remember do code work on the approved development host\n```\n\n## Internal Capture\n\nCapture only evidence that would change future behavior and was explicitly requested through `/ber` or direct durable-learning instruction:\n\n```bash\nnode scripts/ber.js capture --type correction --note \"Do code work on the approved development host.\" --tags workspace,coding\n```\n\nGood captures:\n\n- User explicitly asks `/ber fix ... -> ...`.\n- User explicitly asks `/ber remember ...`.\n- User directly asks to record a reusable workflow or safety boundary.\n- A tool recovery path is reusable and the user approves capturing it.\n\nBad captures:\n\n- Generic advice the base agent already knows.\n- Private details unrelated to future behavior.\n- Speculation without observed evidence.\n- Casual chat containing words like \"remember\", \"always\", \"never\", or \"next time\" without clear durable-learning intent.\n\n## Propose\n\nTurn recent evidence into lesson proposals:\n\n```bash\nnode scripts/ber.js propose --today\n```\n\nProposals are not policy. They are review candidates.\n\n## Report\n\nReturn the report in chat:\n\n```text\n/ber report\n```\n\nKeep the chat report short. Include local storage status and any open proposed lessons.\n\n## Promote To Memory Or Skill\n\nThis flow is for agents, audits, tests, and explicit durable writes. In normal chat, summarize the result instead of making the human operate helper commands, but disclose any durable target file.\n\n```bash\nnode scripts/ber.js card <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js promote <lesson-id> --to memory --target memory/decisions.md\nnode scripts/ber.js card <lesson-id> --to skill --target SKILL.md\nnode scripts/ber.js promote <lesson-id> --to skill --target SKILL.md\n```\n\nLesson cards record target hashes and scanner verdicts before promotion. Promotion appends a reviewable block only if the target has not changed since the card was written and the scanner verdict is clean.\n\n## Promote To Eval\n\nEval durability uses a structured fixture command, not markdown append promotion:\n\n```bash\nnode scripts/ber.js eval-fixture <lesson-id> --target tests/ber-regressions.json\n```\n\nEval fixture targets must be `.json` or `.jsonl` files under `tests/` or `evals/`.\n\n## Lifecycle Hygiene\n\nUse quarantine and supersession to kee"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1667,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:57:30.080Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:36:57.232Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}