agentleFS
fainirfainir/agent-harness/skills/learn/SKILL.md

learn

Skill0 starsChanged 14 days agoMITView on GitHub

Make the harness improve itself from real runs. Captures friction while ship, run-company, portfolio and hire run (one line per failing script, unclear step, hook in the way or improvised step), logs each run's numbers and every owner ask, and in a review picks one recurring cause, proposes candidate fixes, probes them against the current harness on the same real task, and composes ONE small tested change (skill text, script, hook, rule) or keeps the base, kept or reverted on the next runs' numbers. Triggers on "improve the harness", "what did you learn", "learn from this", "why did that go wrong", "make yourself better", "תשתפר", /learn, at the end of every big-job run, and in the run-company weekly review. Shared by Claude Code and Codex.

195 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use add-anydoc, add-clidash and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • TomGranotSkill

    add-anydoc

    Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, or text-based PDF files without uploading them to a hosted parser.

    Also in 5 projects that use this

  • TomGranotSkill

    add-clidash

    Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired for NanoClaw's ncl CLI (agent groups, sessions, channels, users, roles), plus message-activity charts, a log tail, and a read-only file viewer for group skills/CLAUDE.md/profiles.

    Also in 5 projects that use this

  • seek888Skill

    open-gstack-browser

    Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in. Opens a visible browser window where you can watch every action in real time. The sidebar shows a live activity feed and chat. Anti-bot stealth built in. Use when asked to "open gstack browser", "launch browser", "connect chrome", "open chrome", "real browser", "launch chrome", "side panel", or "control my browser". Voice triggers (speech-to-text aliases): "show me the browser".

    Also in 11 projects that use this

  • Saqlain-811Skill

    ios-sync

    Regenerate the iOS debug bridge against the latest upstream gstack templates. (gstack)

    Also in 6 projects that use this

  • MicrosoftSkill

    add-codex

    Use Codex (CLI + AppServer) as the full agent provider — planning, tool orchestration, native compaction, MCP tools, session resume — in place of the Claude Agent SDK. ChatGPT subscription or OPENAI_API_KEY. Per-group via agent_provider. Distinct from using OpenAI as an MCP tool (where Claude remains the planner).

    Also in 6 projects that use this

  • MicrosoftSkill

    add-deltachat

    Add DeltaChat channel integration via @deltachat/stdio-rpc-server. Native adapter — no Chat SDK bridge. Email-based messaging with end-to-end encryption.

    Also in 6 projects that use this

  • +5 more from TomGranot
  • +1 more from microsoft

The file

We split this skill into the rules it gives an agent

1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 170 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Every NEEDS YOU, once it is staged: bash ~/.agents/skills/learn/scripts/owner-log.sh <project> <class> "<what>" "<how to never ask this …

    line 15

“Common” is measured: kept by at least 6 in 10 of the 170 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

learn - the harness improves itself

Two levels, like Harness²: each project improves its own harness on every run (its AGENTS.md ## Working here, its own scripts), and the shared harness improves in the weekly review from what recurs across projects. Two halves: capture (every run, seconds) and review (weekly or on request, one change at a time). State lives in ~/.agents/learnings/ (inbox.md, runs.log, owner-actions.log, applied.md, probes/), never in chat history. The review follows Harness² (arXiv 2610.14224): propose, probe, compose, with applied.md as the experience library.

1. Capture (every big-job run)

  • Whenever a step fails, is retried, is worked around, needs a step the skill did not name, or asks the owner for something the agent could have done itself: note it at once, one line, with evidence (a file, a log line, a transcript moment): bash ~/.agents/skills/learn/scripts/note.sh <project> <phase> "<what happened>" "<root cause>" "<proposed change>" ["<evidence>"] Phases: spec, build, ux, qa, gates, deploy, report, company, portfolio, hire, tool. The script says how often that root cause was seen.
  • Every NEEDS YOU, once it is staged: bash ~/.agents/skills/learn/scripts/owner-log.sh <project> <class> "<what>" "<how to never ask this again>" "<what you staged>".
  • End of run: bash ~/.agents/skills/learn/scripts/run-log.sh <project> <claude|codex> <verified> <total> <defects> <owner-actions> <reruns> <minutes> ["<note>"], and the report's last line is Learned: <one line, or none>.
  • Learnings are about the harness, not the product. Product defects are READINESS rows. Facts about one project (its run, test, deploy and QA commands, its quirks, a step that had to be improvised there) go straight into that project's harness: bash ~/.agents/skills/learn/scripts/project-note.sh "<one line>" from the project folder; a repeated multi-step procedure becomes a script in the project's scripts/.

2. Review: propose, probe, compose

  1. bash ~/.agents/skills/learn/scripts/review.sh prints open learnings grouped by root cause, then the rows whose differently worded causes share most of their words (start clustering by meaning there), owner asks by class, runs per tool, project lessons that recur in two or more projects (promote them into the shared harness and delete the project copies), the last applied changes and the size budget. Read applied.md first: reuse what was kept, never re-propose what was reverted.
  2. Pick ONE cause: the most rows, the top owner-ask class, or the one that cost a whole run. Evidence rule: every edit traces to a recorded moment; if you cannot name the moment, the edit is speculation. One sighting is noise unless it cost a run or an owner ask.
  3. Scope it. Invariant (how any agent plans, uses tools, manages context, delegates, verifies, asks the owner) goes to the shared harness. Domain (one project's facts and procedures) goes to that project's AGENTS.md. Never put project facts in shared skills.
  4. Propose up to two candidates, each a concrete diff at the cheapest enforcing level: a hook or script that makes the mistake impossible, then a script default, then one sentence in the step where it happened, then a rule line. Replace or delete text before adding. Keeping the base is always a candidate. For an owner-ask class the candidates are what removes the ask: a standing rule proposed in OWNER.md, a saved sign-in, a default the agent decides alone, a test mode, a template, a hire.
  5. Probe text and skill changes on the same real task where the cause appeared: bash ~/.agents/skills/learn/scripts/probe.sh <task-dir> "<task prompt>" <candidate-file> runs the current harness and the candidate side by side in throwaway, offline copies and saves both under probes/ as A and B in random order. Judge A against B before opening key.txt: did the candidate remove the targeted failure, leave it, or break something else? Probe evidence informs; it does not prove. Scripts and hooks are probed by their tests instead (bash -n, one real invocation, a fixture with the failing payload).
  6. Compose: adopt one candidate, merge their supported parts, or keep the base. Each choice cites a concrete observation from the probe or the inbox, never an assumed gain. A change the evidence does not support is a regression: it costs context and buys nothing.
  7. Test and size: bash ~/.agents/skills/learn/scripts/size.sh (over budget or a skill no rules file names: fix before adding). Make it live: a change counts once every running and future Claude Code and Codex session uses it, so the copies both tools load hold it (~/.agents/skills/<name>, the hook scripts, and the rules in both ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md), and new hook behavior goes inside a hook both tools already run (reply-budget.sh on every prompt, the Claude PostToolUse hook, the Stop hooks), since a new registration reaches only new sessions; running sessions then hear what changed from harness-notice.py. Record: inbox rows become applied (date); one experience row in applied.md (when it applies, cause, change, evidence, test, PR, verdict pending). Mirror the change into the harness repo on a fresh branch from origin/main and open a PR; before pushing to a branch you already used, check gh pr list --head <branch> --state all and start a new branch if its PR merged. Merging it is the owner's click.
  8. Verdict after the next two runs that touch the step: the cause did not recur and verified rows and owner asks held or improved, keep; otherwise revert and write why in applied.md.

One change per review. Many small kept changes beat one rewrite. A harness change never waits for the owner; only the PR merge does.

3. Hard lines the loop never touches

Security essentials, the always-ask list in OWNER.md, what counts as the owner's click, hook stop behaviour, and this section. The metrics that judge a change (run-log fields, review.sh counts, size.sh budgets, the done-check judge, tests) never change in the same review as the change they judge, and a judge never learns which probe variant is which. A learning that wants to cross these lines becomes an owner action carrying the proposed wording.

4. Report (end of a review)

Learned: <n> open rows, top cause: <cause> (<k> rows across <projects>)
Owner asks: <n> in the window, <older -> newer per run>, top class <class>; proposed rule: <one line, or none>
Probe: <A vs B in one line: what differed>; composed: <adopted | merged | kept base> because <observation>
Changed: <file or script> -> <one sentence> (test: <what ran>) PR <link or none>
Verdict on the previous change: keep | revert | pending (<runs seen>)
NEEDS YOU (1 of 1): <PR link> -> merge -> unblocks install.sh parity   (only when a PR is open)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.