Apply to my task
arXiv:2610.17860 ★ 87 Oct 13, 2026

Socratic Skill Learning: a teacher coaches the agent mid-practice, but the agent writes the skill itself

Key result

Finding: a skill written after one successful task almost always turns out to be a copy of that task. On the neighboring task it breaks. Socratic Skill Learning lets you get an agent skill that transfers to other variants of the task instead of replaying one week or one export. The twist: the teacher never writes the skill, it only asks questions during practice. The student (the agent) tests the advice on real data and writes into `SKILL.md` only what it has confirmed. A strong model that wrote the skill on its own delivered close to zero benefit.

01

TL;DR

Socratic Skill Learning (SSL) is a way to build a skill for an agent (a SKILL.md file plus scripts) using two roles. The Student works in the environment and writes the skill itself. The Teacher (a stronger model) periodically looks at the latest actions and the skill draft. It can explain, challenge, diagnose, suggest a check, or stay silent. The Student is free to push back, test the advice, and reject it with evidence. The Teacher edits nothing: it has read-only access.

Main finding: a skill written after one successful task often turns out to be a carbon copy of that case. The agent doesn't know under which conditions the procedure works, so it breaks on the neighboring task. When a strong model writes the skill by itself, the gain is close to zero: it never tests the text in practice. A post-mortem review after the work also loses to hints along the way: by then an untested assumption has already hardened into a rule in the file. The best results came when advice arrives while the agent is still gathering evidence, and the agent itself checks it and writes down the conclusion.

The gist of the method: practice and teaching are interleaved. The Student explores the task and writes the skill. The Teacher steps in at fixed intervals or only when an open question remains. Every round, the finished skill is tested by a fresh agent session that never saw the learning process. Only the final package ships.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

STEP 0: Define the "family spec" → what stays fixed, what may vary (text, once)
STEP 1: Student works on the anchor task → drives the environment, writes the SKILL.md draft
STEP 2: Every ~10 actions the Teacher reviews the latest actions + current skill
        → lesson (explain / challenge / diagnose / check) OR silence
STEP 3: Student responds → argues, tests, edits the skill, records evidence
STEP 4: End of round → a fresh session solves the anchor task using only the skill → result goes back
STEP 5: 2–3 rounds → the final skill is tested on new variations of the task

Issue-Guided variant: the Teacher is called not on a timer, but when an open question
is opened, changes, or is reopened (an issue tree).

Steps 1–3 run in two long-lived sessions (Student and Teacher). The check in step 4 is always a new session.

03

Example in Practice

Task: An Amazon seller reconciles the weekly settlement report against their QuickBooks books every week. Mismatches come from returns, fees, shipping charges, and adjustments. Right now a bookkeeper does it by hand. You need a Claude Code skill that works on next week's report and on a different seller account too. It must not overfit to a single export.

Prompt (for the Teacher, a separate chat with a strong model, every ~10 agent actions):

<Role>
You are the Teacher. You observe a Student who is building a skill for an agent.
You have read-only access. You do not write the skill and you do not solve the task for the Student.
</Role>

<FamilySpec>
Goal: reconcile the weekly Amazon settlement report with the QuickBooks export, list discrepancies with their causes.
Fixed: the final payout amount must match to the cent; every discrepancy has a cause or is marked "unexplained".
May vary: the week, number of SKUs, presence of returns, fees and reimbursements, date format, CSV encoding, column names.
</FamilySpec>

<Input>
Below are the Student's latest actions and the current SKILL.md:
{latest_actions}
{current_skill}
Open questions: {open_questions}
</Input>

<Actions>
Pick one: EXPLAIN / CHALLENGE / DIAGNOSE / SUGGEST_CHECK / STAY_SILENT.
</Actions>

<LessonFormat>
If you give a lesson, specify:
- learning_focus: what to investigate;
- acceptance_criterion: what observable result will close the question.
</LessonFormat>

<Rules>
- Do not provide ready-made skill text.
- Look for assumptions that hold only for this export (for example, "there are never any returns").
- If you see no problems, answer STAY_SILENT.
- Do not reopen closed questions without new evidence.
</Rules>

Result: The Teacher will either stay silent or give a short lesson like "check that the skill doesn't break when there are no returns." The lesson comes with a closing criterion: exactly what the agent needs to see. The Student will test the advice on the data, fix the skill, and note what confirmed the edit or why the advice was rejected. At the end you get a SKILL.md with conditions of applicability, not a step-by-step log of one week. It's worth running it in a clean chat on a different week.

04

Why It Works

The weakness. An agent that solved one task tends to write down what it did, not when it applies. An assumption from a single run turns into a "rule." An expert writing the skill alone can't see where the procedure actually breaks. A post-mortem fixes text that has already set, not the testing process.

The strength. A strong model is good at spotting weak points in someone else's reasoning: a fishy assumption, a skipped check. An executor inside the environment is good at quickly testing a hypothesis on real data. The evidence is produced during the process, and it can be written into the skill.

How the method exploits this. The Teacher asks a question, the Student answers with an experiment, and the skill stores the result of that experiment. That's why the text keeps the distinction between "not tested" and "disproven," plus the limits of applicability. In an example from the paper, a generic arithmetic check flagged four metrics, while a check of financial ratios, which the Student arrived at after a hint, found the one real error.

Levers: - Review frequency (once every N actions): less often is cheaper but gives worse results. In the paper, an interval of 5 costs more and isn't better; an interval of 20 is cheaper but weaker. - The right to stay silent: take it away and the Teacher starts butting in for no reason. As training went on, the share of reviews with a lesson dropped from roughly three quarters to about one sixth. - The question-closing criterion: defines what counts as evidence. A stricter criterion means a more reliable skill but longer work. - The family spec: the more precisely you describe what varies, the better the Student probes the boundaries. - Number of rounds: two or three in the paper. Each round ends with a test in a fresh session.

05

Prompt Template

Two prompts: one for the Student (the agent doing the work) and one for the Teacher (a separate chat).

Student prompt (the agent's system prompt):

<Role>
You are the Student. You are the only one who works in the environment and writes the skill package
(SKILL.md and, if needed, scripts). The Teacher only gives advice.
You can ask it questions, test its advice, adapt it, or reject it.
</Role>

<FamilySpec>
Goal: {task_family_goal}
Fixed: {what_is_always_true}
May vary: {allowed_variations}
</FamilySpec>

<Task>
Anchor task for practice: {anchor_task}
</Task>

<LearningLogic>
1. Explore the anchor task. Decide for yourself what evidence to collect.
2. Do not write an assumption into the skill until you have tested it on data or assessed its limits.
3. When a Teacher lesson arrives: figure out what it teaches, test it in practice, then adapt or reject it.
4. Group file edits into revisions. For each one, specify:
   <Revision>
     <Summary>what changed</Summary>
     <Evidence>what confirms it</Evidence>
     <IssueAddressed>which question is closed, if any</IssueAddressed>
   </Revision>
5. Close a question only if: (a) a check passed after the lesson, or
   (b) you recorded the conditions under which the procedure applies, with evidence, or
   (c) you rejected the advice and explained why, with evidence.
6. In SKILL.md, write: when the procedure applies, which steps transfer, where adaptation is needed.
   Mark "not tested" and "disproven" separately.
</LearningLogic>

<Finish>
End the round when you believe the skill transfers to the variations in FamilySpec.
</Finish>

Teacher prompt (a separate chat):

<Role>
You are the Teacher. You review the Student's latest actions and the current skill.
Read-only access. You do not write the skill and you do not solve the task for the Student.
</Role>

<FamilySpec>
Goal: {task_family_goal}
Fixed: {what_is_always_true}
May vary: {allowed_variations}
</FamilySpec>

<Input>
Student's latest actions: {latest_actions}
Current SKILL.md: {current_skill}
Open questions: {open_questions}
Result of the last test in a clean session: {test_result}
</Input>

<Actions>
Pick one: EXPLAIN / CHALLENGE / DIAGNOSE / SUGGEST_CHECK / STAY_SILENT
</Actions>

<LessonFormat>
- learning_focus: what to investigate
- acceptance_criterion: what observable evidence will close the question
</LessonFormat>

<Rules>
- Do not provide ready-made skill text or a ready-made solution.
- Look for assumptions that hold only for the anchor task.
- If there are no problems, STAY_SILENT.
- Do not reopen closed questions without new evidence.
</Rules>

What to fill in: {task_family_goal} is the recurring task the skill solves. {what_is_always_true} and {allowed_variations} describe what stays fixed and what changes from case to case. {anchor_task} is one concrete task to practice on. The remaining fields you copy between chats: the agent's latest actions, the current skill, the open questions.

🚀 Quick start: paste this into a chat:

Here is the Socratic Skill Learning template (Student and Teacher prompts). Adapt it to my task: {describe the recurring task you need a skill for}.
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask what in your task is always the same and what changes from case to case, because that spec is exactly what pushes the exploration beyond a single example. It will also ask about the anchor task and how you'll know the result is correct. Then it will assemble two ready-to-use prompts.

06

Limitations

⚠️ The original is orchestrated in code: in the study, the every-N-actions review and the open-question tree are automated. You can reproduce the idea by hand (two chats, copying context), but the paper doesn't include the prompts themselves; they had to be assembled from the method description. The Issue-Guided version requires automation.

⚠️ You need a verifiable result: in the benchmark every task had hidden tests, and each round the skill was checked by a fresh session. If you have no way to tell whether the task is solved, the Student has nothing to close questions with.

⚠️ The Teacher was stronger than the Student: in the main experiments, the Teacher was a larger model from the same family. The paper didn't test what happens when they're evenly matched.

⚠️ The effect is moderate and uneven: there is a gain, but not a multiple. In domains where the model already does almost perfectly without a skill (office automation), there's no gain. Some methods even hurt in certain domains. For instance, expert authorship and post-mortem review dropped in finance and systems tasks.

⚠️ Cost: it's several rounds of practice plus reviews. Review tokens grow as context accumulates, and most late reviews end in silence anyway. Issue-Guided slashes the Teacher's spend, but for one of the models total spend went up because the Student worked more.

⚠️ Simply handing skill-writing to an expert doesn't help: if the Teacher just writes the skill itself, the benefit is close to zero. That doesn't necessarily mean expert-written skills are bad, but as a "strong model writes, weak model uses" strategy it didn't work.

07

How They Studied It

The authors built the SkillTransferBench benchmark: 35 task families, 408 runnable cases, six domains (systems, services, data processing, scientific computing, finance, office). Each family has one "anchor" for practice and a public description of what stays fixed and what may vary. The remaining cases stay hidden for evaluation. The main sample is 22 families and 155 cases where the model without a skill isn't perfect. The skill was tested only in a fresh session: it has to help someone who never saw it being written.

They compared seven setups: no skill, expert writes the skill alone, post-mortem review, two external methods (Trace2Skill and SKILL-KD, which "distill" a skill from logs of past runs), and two SSL variants. Then they repeated the comparison on three model pairs. SSL with a fixed window scored about 80 out of 100 versus 72 with no skill and 76 for Trace2Skill. The share of fully solved tasks rose from a third to a half. Teacher lessons raised the probability that the Student immediately writes a file (by about 24 pp) and changes the skill within the next ten steps (by 39 pp).

The surprise: an expert writing the skill alone gave almost zero gain, and post-mortem review was weaker than interleaving on all three models, and even weaker than expert authorship. Asking and testing along the way mattered more than getting the "right text." Second finding: the need for lessons drops as training goes on (from 73% of reviews with a lesson in round one to 16% in round three), and 86% of late reviews end in silence. The version that calls the Teacher only for an open question delivered the same quality at about 62% lower Teacher cost.

Practical takeaway: don't ask a strong model to "write the skill for the agent." Let the agent test the hypotheses itself, and bring in the strong model as a sparring partner while the work is in progress.

08

Adaptations and Extrapolations

💡 Context adaptation: a lightweight single-chat version: if you don't have two models, keep the role split but drop the automation. Ask the agent to write the skill as it works, and every 8–10 steps pause and paste an excerpt of its actions plus the draft into another chat with the Teacher prompt.

Work on the anchor task. After every {number_of_steps} steps, stop and show:
1) what you have already tested, 2) what you wrote into the skill, 3) which assumptions are still untested.
Wait for my reply before continuing.

🔧 Technique: add a closing criterion → get verifiability. Ask the Teacher to state in every lesson exactly what the Student must see for the question to count as closed. Then the agent doesn't just reply "noted"; it shows a run on data with no returns or on an empty export.

09

Resources

  • Socratic Skill Learning: Interleaving Teaching and Practice for Transferable Agent Skills — Letian Zhu, Han Li, Yifan Yao et al., Nanjing University, Alibaba Group (corresponding author: Jiaheng Liu).
  • Code, benchmark and trajectories: https://github.com/NJU-LINK/Socratic-Skill-Learning
  • Works mentioned: Trace2Skill, SKILL-KD, SkillLearnBench, SkillsBench, Self-Refine, Reflexion.

Research digest

Key result

Finding: a skill written after one successful task almost always turns out to be a copy of that task. On the neighboring task it breaks. Socratic Skill Learning lets you get an agent skill that transfers to other variants of the task instead of replaying one week or one export. The twist: the teacher never writes the skill, it only asks questions during practice. The student (the agent) tests the advice on real data and writes into `SKILL.md` only what it has confirmed. A strong model that wrote the skill on its own delivered close to zero benefit.

Principle

Two chats and two roles. The Student works in the environment and maintains the skill draft. The Teacher (a stronger model) reads the last ~10 actions and the current text. It has read-only access. It picks one move: explain, challenge, diagnose, suggest a check, or stay silent. Every lesson comes with a criterion: exactly what the agent must see for the question to count as closed. Then comes the test. A fresh session that never saw the training solves the task using only the skill. The result goes back to the Teacher. This runs for 2–3 rounds. The Teacher asks a question, the Student answers with an experiment, the skill stores the result of the experiment. Think intern and mentor. The mentor doesn't write the intern's report; they ask: "Will this still work with an empty returns list?"

Why it works

After one task, an agent writes down what it did, not when it applies. A random assumption from one run turns into a "rule." A post-mortem review comes too late: the text is already written and only gets a fresh coat of paint. An expert author can't see where the procedure breaks, because they never run anything. A hint along the way arrives while the agent is still gathering evidence. The skill keeps the difference between "not tested" and "disproven," and with it the limits of applicability. An example from the paper: a generic arithmetic check flagged four metrics. A check of financial ratios, which the Student reached after a hint, found the one real error. The right to stay silent matters too. At first the Teacher stepped in on roughly three quarters of reviews. By the end of training it stepped in on about one in six. Take that right away and it starts handing out advice nobody needs.

When to apply

Recurring agent tasks → a skill for Claude Code or another agent that has to work on new data, not just one export, especially when the task differs slightly every time (a different week, a different seller account, a different encoding). The result has to be verifiable: hidden tests, reconciled totals, a reference answer. Otherwise the Student has nothing to close questions with. NOT a fit for one-off tasks. Little point where the model already does almost perfectly without a skill (office automation). In the paper the Teacher was stronger than the Student; equal strength wasn't tested. The gain is moderate, not a multiple. In finance and systems tasks some methods even hurt.

Mini recipe

1. Describe the task family: what's always the same and what changes from case to case. It's one short block of text, and it's exactly what pushes the agent beyond a single example. 2. Pick one anchor task to practice on. A real one, not a made-up one. 3. Open two chats: the Student (an agent with an environment and file access) and the Teacher (a strong model, read-only). 4. Let the Student work and maintain the `SKILL.md` draft. The rule: nothing goes into the skill without being tested on data. 5. Every ~10 actions, copy into the Teacher chat the latest steps, the current skill, and the open questions. An interval of 5 costs more and isn't better; an interval of 20 is cheaper but weaker. 6. Allow the Teacher to stay silent. If there is a lesson, it must state an investigation goal and a closing criterion. 7. Hand the advice back to the Student. Have it test the advice on data, then accept, adjust, or reject it with evidence. It describes every edit this way: what changed, what confirms it, which question is closed. 8. At the end of the round, open a clean chat and give it only the skill and the anchor task. Take the result to the Teacher. 9. Run 2–3 rounds. Test the final skill on new variations of the task. 10. Catch the tricky spots by hand. The issue-tree version (Issue-Guided) won't fly without automation. The two roles and context copying can be reproduced manually.

Examples

[BAD]: `Solve the task of reconciling the Amazon settlement report with QuickBooks, then write a SKILL.md skill based on your solution` [GOOD]: To the Teacher: `You are the Teacher, read-only access. Goal: weekly reconciliation of the Amazon settlement report with the QuickBooks export. Fixed: the final payout amount matches to the cent, every discrepancy has a cause or an "unexplained" flag. Varies: the week, number of SKUs, returns, fees, date format, CSV encoding. Here are the Student's latest actions and its SKILL.md: ... Pick one: EXPLAIN / CHALLENGE / DIAGNOSE / SUGGEST_CHECK / STAY_SILENT. Do not provide ready-made skill text. If there is a lesson, specify learning_focus and acceptance_criterion.` A typical Teacher reply: `CHALLENGE. learning_focus: the skill assumes there are no returns. acceptance_criterion: the procedure produces the correct total on a week with no returns and on a week with returns.` The Student tests the advice on two weeks, edits the skill, and records what confirmed it. In the end, `SKILL.md` gets a "When it applies" section instead of a step-by-step log of one week.

In plain words

Ordinary AI agents just memorize their own moves: they solve a task once and turn a random hack into a rule set in stone. As a result, their instructions fall apart the moment the inputs change, turning into useless junk. The Socratic Skill Learning (SSL) method fixes this by splitting the work between a Student and a Teacher, so the working skill crystallizes while the agent is learning the hard way in a live environment.

It's like learning to drive with a sharp instructor who flat-out refuses to touch the wheel. Instead of grabbing the controls or lecturing you after the crash, they drop a pointed question at just the right moment: "Are you sure you had the right of way at that intersection?" You double-check the signs yourself, curse under your breath, hit the brakes, and actually absorb the rules of the road instead of blindly copying someone else's hints.

The mechanics rest on one hard rule: the senior model has read-only access, so it physically can't edit the code. The Teacher only checks in on the actions and the SKILL.md draft from time to time, tossing in an error diagnosis or a counterexample, while the agent in the environment has to put the advice to the test. If the Teacher's idea turns out to be nonsense, the Student has every right to reject the advice with receipts. No blind worship of authority.

The pattern was tested on coding agents, but the principle is universal for any routine applied work. Whether it's reconciling weekly marketplace reports against your QuickBooks books, parsing messy spreadsheets, or running infrastructure, the agent stops bending its logic to fit one lucky export. Skill transferability saves the system the moment the real world throws in returns, fees, or a changed data format.

Bottom line: stop asking a model to write instructions for itself after the fact; that only breeds self-deception. An interactive dialogue between two models burns hallucinations out at the root and leaves a clean, stress-proof algorithm. Whoever builds agents through this kind of sparring gets battle-ready autonomous software, not a toy that works only on Tuesdays and on one test folder.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on Socratic Skill Learning: a teacher coaches the agent mid-practice, but the agent writes the skill itself arXiv:2610.17860

Sign in to apply this study New accounts get 50 free credits.