Skip to content
Back to skills

Upskill

DSecurity

Turn a weak/cheap "Flash" model into a "Pro" performer by wrapping HKUDS UpSkill — captures agent session failures, has a strong Teacher model analyze them and draft a skill, then validates it against the weak Student model in a closed Ralph Loop (up to 3 rounds) before storing it for automatic reuse. Use when the user wants to install UpSkill, run `/upskill-init`, `/upskill-configure`, `/upskill-build`, `/upskill-run`, `/upskill-list`, `/upskill-status`, `/upskill-mode`, `/upskill-model`, `/...

  • 47 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
ai-agentspythonrustgobashgitapi

Works with

  • claude code
  • cursor
  • terminal
  • api

Security analysis

D42/100
  • criticalPipes output to a shell interpreter
  • mediumUses curl or wget to download content
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro scans all 6 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add akillness/jeo-skills --skill upskill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Upskill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Upskill
[![Security: D — Skills Directory](https://www.skillsdirectory.com/api/skills/akillness-upskill/badge)](https://www.skillsdirectory.com/skills/akillness-upskill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: upskill
description: >
  Turn a weak/cheap "Flash" model into a "Pro" performer by wrapping HKUDS
  UpSkill — captures agent session failures, has a strong Teacher model
  analyze them and draft a skill, then validates it against the weak Student
  model in a closed Ralph Loop (up to 3 rounds) before storing it for
  automatic reuse. Use when the user wants to install UpSkill, run
  `/upskill-init`, `/upskill-configure`, `/upskill-build`, `/upskill-run`,
  `/upskill-list`, `/upskill-status`, `/upskill-mode`, `/upskill-model`,
  `/upskill-remove`, or `/upskill-uninstall`, wants a cheap model to perform
  closer to a Pro model without switching, or wants a good session (success
  or failure) distilled into a validated skill. Triggers on: upskill,
  up-skill, flash to pro, teacher student distillation, ralph loop skill
  validation, distill agent failures into skills. Routes skill-quality
  ratcheting to `skill-autoresearch`, scaffolding to `write-a-skill`, and
  spec-compliance rewrites to `skill-standardization`.
allowed-tools: Bash Read Write Edit Glob Grep WebFetch
compatibility: >
  Reference implementation targets Claude Code (session hooks + skills +
  CLAUDE.md context injection). Requires bash, python3, git, and curl (for
  remote install). The Teacher/Student roles are model presets in
  `~/.claude/upskill.conf`, independent of the daily driver model set in
  Claude Code `settings.json`. The core building pipeline (worktree isolation,
  Ralph Loop, skill store) is harness-agnostic per upstream docs; porting to
  Codex/OpenClaw/Cursor needs an equivalent session-hook + context-injection
  layer.
metadata:
  tags: upskill, knowledge-distillation, teacher-student, ralph-loop, skill-generation, claude-code-hooks, terminal-bench, cost-optimization
  platforms: Claude Code
  keyword: upskill
  version: "1.0.0"
  license: MIT
  upstream: https://github.com/HKUDS/UpSkill
  installer: "curl -sSL https://raw.githubusercontent.com/HKUDS/Upskill/main/cc-integration/install.sh | bash -s -- --remote"
  source: akillness/jeo-skills
---

# upskill — Distill Agent Failures Into Validated Skills

> **Keyword**: `upskill` · `flash to pro` · `teacher student distillation` · `ralph loop skill validation`

[HKUDS/UpSkill](https://github.com/HKUDS/UpSkill) (MIT) turns a cheap/weak
"Flash" model into a "Pro" performer without a model upgrade. When a session
fails, it captures the full context, has a strong **Teacher** model analyze
the failure and draft a skill, then validates that skill against the weak
**Student** model in a closed **Ralph Loop** (up to 3 rounds) before storing
it. Validated skills auto-inject into every future session via a CLAUDE.md
index (always in context) plus a full `SKILL.md` loaded on demand. On
Terminal-Bench 2.0, a Flash model + UpSkill (**51.6%** pass rate, **$0.04**/task)
beat the Pro model it was validated against (**50.0%**, **$0.06**/task) — a
**41% lower cost** result documented in [`tb_harbor_2.0/RESULTS.md`](https://github.com/HKUDS/UpSkill/blob/main/tb_harbor_2.0/RESULTS.md).

This skill is the routing-first wrapper: it installs the tool, wires the
three roles (Daily / Teacher / Student), and walks the daily
capture → build → validate → serve loop.

## When to use this skill

- The user wants to install UpSkill or run any `/upskill-*` slash command
- The user wants a cheap model ("Flash", Haiku, mini, DeepSeek-Flash) to
  perform closer to a Pro model on recurring task categories
- A session just failed and the user wants to turn that failure into a
  reusable, validated skill instead of just retrying manually
- The user wants to distill a **successful** session into a reusable skill
  (not just failures — `/upskill-build` works on either)
- The user asks how the Ralph Loop, Teacher/Student roles, or skill-store
  serve modes (`interactive` vs `auto`) work

## When not to use this skill

- The user wants generic guidance on writing or standardizing a `SKILL.md`
  from scratch → use `write-a-skill` or `skill-standardization`
- The user wants a repo-local skill-quality **ratcheting loop** (freeze a
  benchmark, mutate one change, keep/revert by score) for *this* jeo-skills
  repo → use `skill-autoresearch`
- The user wants a general model fine-tuning / RLHF pipeline → that changes
  weights; UpSkill only prepends context, it never trains anything
- The user is not on Claude Code and has no equivalent session-hook /
  context-injection surface → see [Porting](#porting-to-other-agent-harnesses)
  first; do not promise parity with an unadapted harness

## The three roles

| Role | Set in | Purpose |
|------|--------|---------|
| **Daily model** | Claude Code `settings.json` | Whatever the user runs day to day — untouched by UpSkill |
| **Teacher** | `~/.claude/upskill.conf` | Strong model — analyzes failures, drafts skills (e.g. `claude-opus-4-7`, `deepseek-v4-pro[1m]`) |
| **Student** | `~/.claude/upskill.conf` | Weak model — every skill must be validated against it before storage (e.g. `claude-haiku-4-5`, `deepseek-v4-flash`) |

## Prerequisites

| Requirement | Notes |
|-------------|-------|
| Claude Code | Reference integration lives in `cc-integration/` |
| bash, python3, git | Required by hooks and the build pipeline |
| curl | Only for the remote one-line installer |
| API access to a Teacher and a Student model | Anthropic or DeepSeek recommended by upstream |

## Instructions

### Step 1 — Install

```bash
# Remote (recommended)
curl -sSL https://raw.githubusercontent.com/HKUDS/Upskill/main/cc-integration/install.sh | bash -s -- --remote

# Local (from a cloned repo)
git clone https://github.com/HKUDS/UpSkill && cd UpSkill/cc-integration && bash install.sh

# Or via this skill's wrapper script (adds jeo-skills plugin registration too)
bash scripts/install.sh                 # remote install (default)
LOCAL_REPO=/path/to/UpSkill bash scripts/install.sh   # install from an existing clone
```

This writes `~/.claude/{hooks,skills,upskill-store}/` and
`~/.claude/upskill.conf`. To update later, run `/upskill-init` inside Claude
Code — it re-runs the installer and migrates legacy config.

### Step 2 — Configure Teacher / Student models

Edit `~/.claude/upskill.conf`:

```bash
UPSKILL_TEACHER="deepseek-v4-pro[1m]"   # or: claude-opus-4-7
UPSKILL_STUDENT="deepseek-v4-flash"     # or: claude-haiku-4-5
UPSKILL_SERVE_MODE="interactive"        # interactive (default) | auto
```

The Daily model is unaffected — it stays whatever Claude Code's own
`settings.json` selects. Run `/upskill-model` to view the current preset, or
`bash ~/.claude/hooks/upskill-store.sh sync` after a manual edit.

### Step 3 — Enable building per project

```bash
/upskill-configure
```

Merges `UserPromptSubmit`, `SessionStart`, and `SessionEnd` hooks plus a
`claudeMd` pointer into `.claude/settings.local.json` for the current
project — additive, never overwrites existing hook entries.

### Step 4 — Use the agent normally; skills build themselves

A `SessionEnd` hook captures a failed session (verify.sh present, non-zero
exit) and sets a pending flag. Next session start, Claude Code prints:

```
[upskill] ⚠ 1 pending failure(s) ready for building. Run /upskill-build to generate skills.
```

Run `/upskill-build` (works on failures **and** successes) and the pipeline
runs through 5 phases in an isolated git worktree — see
[references/pipeline-and-ralph-loop.md](references/pipeline-and-ralph-loop.md)
for the full Teacher → generate → Ralph-validate sequence.

### Step 5 — Serve

Validated skills appear automatically in the agent's context via the global
`~/.claude/upskill-store/CLAUDE.md` index (~5 lines/skill). In **interactive**
mode (default), run `/upskill-run` to browse matches (★ = recommended) and
apply one. In **auto** mode, skills are keyword-matched on every prompt and
proactively suggested. Switch modes with `/upskill-mode auto|interactive`.

### Step 6 — Manage the library

```bash
/upskill-list                                   # browse skills by category
/upskill-status                                 # skill count + active builds
/upskill-remove --category data-analysis --skill-id skill_20260605_001
/upskill-uninstall                              # remove hooks/skills/config
```

Full command reference: [references/commands.md](references/commands.md).

## How it works — the Ralph Loop

Most distillation approaches stop at "Teacher writes advice, hope it helps."
UpSkill closes the loop instead: the Student **retries the task with the
draft skill applied**, and if it still fails, the Teacher revises based on
"what went wrong even with guidance" — up to 3 rounds — discarding the skill
if it never passes. This calibrates every stored skill to what the Student
model can actually follow, not generic best practices. Architecture,
worktree isolation, and the 3-file skill format (Domain Knowledge /
Step-by-Step / Feedback-Lessons) are detailed in
[references/pipeline-and-ralph-loop.md](references/pipeline-and-ralph-loop.md).

## Porting to other agent harnesses

The core pipeline (build script, Ralph Loop, skill store) is harness-agnostic;
only the hook-integration and context-injection layer is Claude Code-specific.
Porting to Codex, OpenClaw, or Cursor needs: (1) before/after-session hook
equivalents, (2) a CLAUDE.md-equivalent auto-loaded context mechanism, (3)
slash-command equivalents, (4) worktree/sandbox isolation for Teacher/Student
runs. Do not claim full parity on an unadapted harness — state the gap.

## Output format

When the user asks `upskill` for help, return a compact brief:

```markdown
# upskill Routing Brief

## Scope
- Stage: install | configure-models | configure-project | build | serve | manage
- Roles: Teacher=<model> Student=<model> (Daily model unaffected)
- Serve mode: interactive | auto

## Recommended next move
- one concrete `/upskill-*` command or install step

## Why
- 2-3 bullets grounded in the user's packet

## Route-outs
- `skill-autoresearch` for repo-local skill-quality ratcheting
- `write-a-skill` / `skill-standardization` for hand-authoring a SKILL.md
```

## Examples

### Example 1: First-time setup for a cost-conscious team
Install with the remote one-liner, set `UPSKILL_TEACHER="claude-opus-4-7"` and
`UPSKILL_STUDENT="claude-haiku-4-5"` in `~/.claude/upskill.conf`, then run
`/upskill-configure` in each active project. The Daily model stays whatever
the team already uses in `settings.json`.

### Example 2: A recurring CSV-parsing task keeps failing on Haiku
After a failure, `/upskill-build` picks the failed session, the Teacher
drafts a skill, and the Ralph Loop retries it against Haiku up to 3 rounds.
Once it passes, the skill auto-appears in the global CLAUDE.md index and is
offered via `/upskill-run` (interactive) or auto keyword-match next time a
similar CSV task starts.

### Example 3: Distilling a successful session
`/upskill-build` is not failure-only — run it on a session that went well to
capture the working approach as a reusable, Student-validated skill before
the pattern is forgotten.

## Best practices

1. **Never let Teacher == Student.** Validation is meaningless if the model
   analyzing failures is the same one being validated against.
2. **Build from successes too**, not only failures — `/upskill-build` accepts
   both, and good working patterns are just as worth distilling.
3. **Trust the Ralph Loop's discard.** A skill that fails all 3 rounds is
   dropped by design — do not manually force-save an unvalidated draft.
4. **Match serve mode to review appetite.** `interactive` (default) keeps a
   human in the loop per task; `auto` trades that for zero-friction matching.
5. **Re-run `/upskill-init` after upstream releases** instead of hand-patching
   `~/.claude/hooks/*.sh` — it migrates legacy config safely.
6. **Route pure skill-authoring or spec-compliance asks elsewhere** — this
   skill owns the distillation pipeline, not generic `SKILL.md` writing.

## References

- Upstream repo: <https://github.com/HKUDS/UpSkill>
- Full CC integration docs: <https://github.com/HKUDS/UpSkill/blob/main/cc-integration/README.md>
- Terminal-Bench 2.0 results: <https://github.com/HKUDS/UpSkill/blob/main/tb_harbor_2.0/RESULTS.md>
- Command reference: [references/commands.md](references/commands.md)
- Pipeline + Ralph Loop detail: [references/pipeline-and-ralph-loop.md](references/pipeline-and-ralph-loop.md)
- Installer script: [scripts/install.sh](scripts/install.sh)
- Adjacent skills: `../skill-autoresearch/SKILL.md`, `../write-a-skill/SKILL.md`,
  `../skill-standardization/SKILL.md`
- License: MIT (see upstream `LICENSE`)

Files in this skill

  • SKILL.md12.4 KB
  • SKILL.toon1.5 KB
  • evals/evals.json3.3 KB
  • references/commands.md4.8 KB
  • references/pipeline-and-ralph-loop.md6.8 KB
  • scripts/install.sh3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…