Continuous Learning logo

Continuous Learning

Community
ericrisco
continuous-learning

Use when a mistake, correction, or surprise taught the workspace something that must stick — a retro or postmortem, the same agent error corrected twice, a resolved bug's root cause, scattered notes-to-self — and route that lesson to the durable surface that fires next time. NOT a forward choice with alternatives (that is `decision-records`).

Overview

Publisherericrisco
Repositoryrsc-harness
Skill namecontinuous-learning
Stars
239
Forks
24
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by ericrisco on GitHub. Read the source before you install it.

Installation

Install the Continuous Learning AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/ericrisco/rsc-harness/tree/main/skills/continuous-learning
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/ericrisco/rsc-harness.git /tmp/rsc-harness
mkdir -p .claude/skills
cp -r /tmp/rsc-harness/skills/continuous-learning .claude/skills/continuous-learning
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Continuous Learning in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Continuous Learning on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Continuous Learning is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Continuous learning — the feedback loop of the harness

This is the engine that makes the system get better every time it is wrong. When something broke, got corrected, surprised you, or simply taught the workspace something, your job is to catch that lesson and route it back into the durable apparatus so the same mistake cannot recur.

One premise is load-bearing: a lesson that lives only in chat is gone at the next compaction. Verbal reflection only changes future behaviour when it is persisted to memory the agent actually reads next time (this is the Reflexion mechanism — self-reflection written to durable memory, not held in the conversation). In this harness, "memory" is a concrete set of surfaces: a SKILL.md body, 02-DOCS/wiki/harness/decisions.md, 02-DOCS/wiki/harness/user-profile.md, a root CLAUDE.md rule, or a verify.sh check. Chat is not memory. A lesson is "captured" only when it has landed in one of those.

Read technical_level in 02-DOCS/wiki/harness/user-profile.md before you narrate, and speak in the orient voice in that register. It governs the words only — the capture loop runs identically for every reader.

Boundaries

SituationOwnerWhy
"We chose Postgres over Mongo, here's the why + the rejected options"../decision-records/SKILL.mdforward choice with alternatives; a choice is not a lesson from a mistake
"The migration failed because Postgres rejects NULL on the PK — never assume that again"continuous-learningbackward lesson from a mistake
"Find the bug causing the 500"../debug/SKILL.mdin-the-moment diagnosis; you run after it resolves
"Now that debug found it, make sure we never ship that pattern again"continuous-learningpost-resolution capture
"Write the SKILL.md and evals for pr-describe"../author-skill/SKILL.mdskill craft — body, description, evals
"This lesson means the deploy skill needs a new guardrail"continuous-learning decides the home → ../author-skill/SKILL.md makes the edityou route, it writes
"Consolidate these docs / sweep the inbox"../harness/SKILL.mdgeneric 02-DOCS filing; your trigger is "we learned something the hard way"
"What do I know about X"../knowledge-ops/SKILL.mdreference knowledge, as opposed to mistake-derived experiential knowledge
"Run this sweep every week"loop / schedule harness CLIyou may recommend a cadence; you are not a scheduler

The capture loop

Five steps. Run them in order; do not stop before step 5.

  1. Harvest — pull the lesson out of chat now, while it is still in context. Why: the next compaction deletes it for free.
  2. Root-cause, blameless — name the system gap: a missing rule, a wrong assumption, an under-specified skill, an absent guardrail. Never "the agent is careless" or "the user keeps forgetting". Why: blame indicts a person and the loop stops running; blameless framing focuses on contributing causes and keeps the retro honest (Google SRE / Atlassian blameless postmortem practice).
  3. Route to a durable home — pick the cheapest surface that will fire next time (table below). Prefer the preventative write that kills the whole class of failure over a one-off note that just records it. Why: good postmortems split mitigative-vs-preventative action items, and the preventative one is what stops recurrence.
  4. Write it — land the entry in that surface in the lesson format below. If the home is a skill body, a description, or an eval, delegate the edit to author-skill — you decide the home, it does the craft.
  5. Verify it fires — prove the lesson is live (see "Verify it fires next time"). Why: learning loops do not fail at the retro, they fail after it — at action-tracking and trend analysis (incident.io / Rootly 2025 SRE best-practice consensus). If you cannot point to where it fires, you have not captured it.

Routing decision table

The single most important artifact in this skill. Pick the row, write to that exact home, hand off to that writer.

Lesson typeDurable home (exact path)Who writes it
About the user (prefers X, hates Y, works this way)02-DOCS/wiki/harness/user-profile.mdthis skill
A rule we keep breakingroot CLAUDE.md rule, or the relevant SKILL.md bodyauthor-skill for the skill body; this skill for CLAUDE.md
A pattern to bana verify.sh banlist/check on the owning skillauthor-skill
A missed-trigger insight (skill fired wrong / didn't fire)a should_not_trigger (or should_trigger) eval caseauthor-skill
A surprising fact / how a provider actually behaveswiki article via the harness ingest protocolharness
A forward choice that surfaced mid-retropunt to decisions.mddecision-records
A one-off, low-stakes note02-DOCS/wiki/harness/decisions.md append, or a topic notethis skill

Full catalogue with hand-off recipes and a worked end-to-end example is in references/lesson-routing.md. The body table is enough for routine cases; read the reference when the home or the hand-off is unobvious.

The "2+ recurrences ⇒ structural fix" rule

First sighting of a lesson: a note is fine. Second sighting of the same class: stop noting and build a guardrail — a CLAUDE.md rule, a verify.sh check, or a should_not_trigger eval. A third note proves the second note did nothing.

Why: this is exactly where learning loops die. Teams nail the postmortem and then fumble trend analysis — the recurring class never gets a structural fix, so it keeps recurring. The recurrence is the signal that prose has failed; answer it with a check, not another apology.

Lesson entry format

Copy-pasteable and situation-tagged, so it retrieves on the trigger that matters — not as a vague blob nobody can act on (experiential memory works when entries are actionable and situation-tagged, not when they are similarity soup):

md
## <date> — <short lesson title>
- **Situation:** <when this fires / the trigger phrasing>
- **We believed:** <the wrong assumption>
- **Actually:** <what is true>
- **Durable home:** <path + surface that now holds it>
- **Fires next time via:** <rule / eval / verify.sh / index entry in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer)>

The last two lines are not optional. An entry with no durable home and no "fires next time" is a chat message with a date on it.

Verify it fires next time

This is the rigor of this process skill, and it stands in for a verify.sh (this skill emits no checkable artifact of its own — see below). Acceptance: you can point to a concrete place where the lesson now changes behaviour:

  • a rule the agent reads on its next pass (CLAUDE.md or a skill body), or
  • an eval case (should_not_trigger / should_trigger) that would have caught the miss, or
  • a verify.sh check on the owning skill that fails on the banned pattern, or
  • a 02-DOCS/wiki/index.md entry (the Knowledge map; root CLAUDE.md keeps only a short pointer) pointing at the new wiki article.

If you cannot name one of those, the lesson is not captured — keep going. Prefer a surface a human can review (a rule, an eval, a profile line) over an opaque store: a single agent reflecting alone can talk itself into a local optimum, so the durable write should be legible enough for a human to sanity-check.

This skill has no scripts/verify.sh. Its output is a routing decision plus a durable write into another surface. The check that the lesson fires lives in that target surface — a verify.sh on the deploy skill, a should_not_trigger eval, a CLAUDE.md rule — not here. Its rigor is the capability eval, same as decision-records, author-skill, and harness.

Periodic retro sweep

To harvest scattered corrections and notes-to-self on a cadence, do not reimplement a scheduler — recommend the loop / schedule harness CLI to run the sweep weekly. For pulling raw notes through 02-DOCS/inbox/ into the wiki, route the consolidation itself through ../harness/SKILL.md; you only own the lessons that came from a mistake, not the general filing.

Anti-patterns

Anti-patternWhy it failsDo instead
Lesson captured only in chatlost at the next compactionwrite it to a durable surface from the table
"The agent/user is bad at X"blame indicts a person; the loop stops runningname the system gap (missing rule, wrong assumption)
Note added but it never firesprose nobody reads next time is not a captureattach a rule / eval / check, then verify it fires
Re-noting the same class a 3rd timethe 2nd note already proved prose failedbuild a guardrail on the 2nd sighting
Hand-editing the SKILL.md yourselfyou do not own skill crafthand the edit to author-skill
Capturing a forward choice herethat is a decision, not a lessonroute to decision-records
A vague vector-blob notewon't retrieve, can't be acted onsituation-tag it in the entry format
Starting to diagnose the bugthat is debug's jobcome here after it resolves, with the root cause

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Continuous Learning AI skill do?

Use when a mistake, correction, or surprise taught the workspace something that must stick — a retro or postmortem, the same agent error corrected twice, a resolved bug's root cause, scattered notes-to-self — and route that lesson to the durable surface that fires next time. NOT a forward choice with alternatives (that is `decision-records`).

Why use Continuous Learning on TypingMind?

Because you install it once and use it with any model. Continuous Learning is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Continuous Learning in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/ericrisco/rsc-harness/tree/main/skills/continuous-learning. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Continuous Learning?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Continuous Learning?

As many as you like. As long as a model supports skills, you can use Continuous Learning with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Continuous Learning AI skill free?

Yes. It is published on GitHub by ericrisco under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇