<div align="center">
<img src="docs/social-preview.png" alt="skill-bartender โ task-to-skill pairing for DeepSeek Harness" width="100%">
<br>
๐ธ skill-bartender
Mix the right skill cocktail for every task โ and never pour an untasted bottle.
      
<br>
Your agent already sees a catalog of skill names and descriptions โ but it over-pours: loads too many skills, loads the wrong ones, or misses the one workflow skill that composes the task. skill-bartender is the meta-skill that fixes the pour:
- ๐ช Laziness ladder โ zero skills when plain tools suffice; one skill
when one matches; workflow over hand-composed atomics; unsure โ don't load.
- ๐ท Routing table โ a user-editable taskโskill map (
references/policy.md)
that overrides the defaults.
- ๐ Safe cellar โ a needed skill missing? Quarantine โ SkillSpector scan
โ explicit human approval โ install. Never auto-installs.
- ๐ง Learn โ loaded-but-unused skills get logged and skipped next time.
- ๐งช Taste test โ audit installed skills and rewrite weak descriptions
into "when-to-use" sentences.
[Why](#-why) ยท [What you get](#-what-you-get) ยท [Quick start](#-quick-start) ยท [See it in action](#-see-it-in-action) ยท [Usage](#-usage) ยท [Security model](#-security-model-read-this) ยท [FAQ](#-faq) ยท [Examples](#-examples) ยท [Layout](#-layout) ยท [License](#-license)
[English](README.md) ยท [็ฎไฝไธญๆ](docs/lang/README_ZH.md)
</div>
---
๐ค Why
Most agents treat the skill catalog as an all-you-can-eat buffet. skill-bartender treats it as a bar with a taste test:
| skill-bartender | Typical catalog behavior | |
|---|---|---|
| Skills loaded per task | usually one; zero when plain tools suffice | whatever matches, however many |
| Workflow skills | โ preferred โ never hand-assemble atomics | โ often missed or hand-composed |
| Unsure about a match | โ don't load (miss beats false pour) | โ ๏ธ loads "just in case" |
| Installing a missing skill | ๐ quarantine โ scan โ human approval | โ ๏ธ downloads straight into the skills dir |
| Auto-install | โ never, by design | โ ๏ธ often silent |
| Learns from unused loads | โ logged, skipped next time | โ no memory |
Why the "laziness ladder"? A wrong skill body stays in conversation history forever; a missed load only costs one tool round-trip. The best load is the load never made (spirit: ponytail).
โจ What you get
| Capability | What it does | Where |
|---|---|---|
| ๐ช Laziness ladder | Stop at the first rung that holds: 0 no skill โ 1 one skill โ 2 workflow skill โ 3 unsure, don't load | all platforms |
| ๐ท Routing table | Taskโskill map in references/policy.md; URL-keyed families (doc/drive/wiki/sheets/base/slides) routed by path pattern | all platforms |
| ๐ Safe cellar | Missing skill: search โ quarantine dir โ SkillSpector scan โ scripts shown to human (default deny) โ explicit yes โ install; source + commit hash + verdict recorded | DSH, Claude Code, Codex |
| ๐ง Learn | Unused loads logged and skipped for the same task type next time; chronic no-shows get offered for removal | DSH |
| ๐งช Taste test | On request: list installed skills, rewrite weak descriptions into trigger-phrase form (under the 500-char catalog cap) | on request |
โก Quick start
One file, three platforms:
# DeepSeek Harness
mkdir -p ~/.dsh/skills/skill-bartender
cp skills/skill-bartender/SKILL.md ~/.dsh/skills/skill-bartender/
cp -r skills/skill-bartender/references ~/.dsh/skills/skill-bartender/
# Claude Code
mkdir -p ~/.claude/skills/skill-bartender
cp skills/skill-bartender/SKILL.md ~/.claude/skills/skill-bartender/
# Codex
mkdir -p ~/.codex/skills/skill-bartender
cp skills/skill-bartender/SKILL.md ~/.codex/skills/skill-bartender/Or install as a DeepSeek Harness bundle:
dsh plugin --profile web add github:akqwpeter-prog/skill-bartenderThen say "skill-bartender" once, or paste the routing table into your AGENTS.md for always-on routing. Full examples: [docs/EXAMPLES.md](docs/EXAMPLES.md).
๐ธ See it in action
The pour flow in one picture: stop at the first rung that holds, and never install without a taste test.
<img src="docs/screenshots/how-it-works.png" alt="How the pour works: laziness ladder (0 plain tools, 1 one match, 2 workflow, 3 unsure) plus the safe cellar (quarantine โ SkillSpector scan โ human approval โ install)" width="100%">
๐ Usage
Four ways to use it:
| Way | How | When |
|---|---|---|
| A. Say the name | In any session, just say "skill-bartender" | One-off or first-time setup |
| B. Always-on routing | Paste the routing table into AGENTS.md | Every task routes through the ladder |
| C. Request a pour | "Which skill fits this task?" | Choosing among skills |
| D. Cellar audit | "Audit my installed skills" | Taste test: weak descriptions get rewritten |
skill-bartender must itself be loaded once (user gesture or task match) โ it never self-triggers, and never pre-loads "just in case".
๐ Security model (read this)
- Skills are instructions, and instructions can be adversarial (prompt
injection). SkillSpector is a filter, not a guarantee.
scripts/in any skill is code โ never executed without human review.- Human approval is mandatory for every install. No silent installs, ever.
- This skill scans itself clean: SkillSpector 0 findings (score 0 / SAFE)
โ [docs/skillspector-report.json](docs/skillspector-report.json).
- Security policy: [SECURITY.md](SECURITY.md).
โ FAQ
Does it auto-install missing skills? No. Every download goes to a quarantine dir, gets scanned with SkillSpector, and is copied into the skills root only after explicit human approval. A passing scan is a filter, not a guarantee โ prompt injection survives static scans, so scripts are shown to the human and default-deny.
What if SkillSpector isn't installed? uv tool install git+https://github.com/NVIDIA/skillspector.git, or run the manual checklist in references/policy.md.
Does it work with Claude Code and Codex? Yes โ the same SKILL.md installs on all three platforms in ~15 seconds.
How is this different from DshMarket / dsh-find-plugin / dsh-plugin-autoevo? They find, search, and auto-install plugins. skill-bartender adds the routing policy (ladder + routing table) and the quarantine-then-approve discipline. Use it alongside the ecosystem, not instead of it.
How is it evaluated? The routing policy ships with a gold-task suite: [docs/eval.md](docs/eval.md).
๐ Examples
- [docs/EXAMPLES.md](docs/EXAMPLES.md) โ real routing cases, cellar installs, audits.
- [docs/ROUTING-GUIDE.md](docs/ROUTING-GUIDE.md) โ how to write your own taskโskill rules.
- [docs/eval.md](docs/eval.md) โ gold-task suite for the routing policy.
๐บ๏ธ Layout
skill-bartender/
โโโ skills/
โ โโโ skill-bartender/
โ โโโ SKILL.md # the skill itself (one file, three platforms)
โ โโโ references/policy.md # user-editable routing table
โโโ docs/
โ โโโ screenshots/how-it-works.png
โ โโโ eval.md # gold-task suite
โ โโโ EXAMPLES.md / ROUTING-GUIDE.md
โ โโโ skillspector-report.json # self-scan: 0 findings
โ โโโ social-preview.png # banner (regenerate via scripts/)
โ โโโ lang/README_ZH.md # ็ฎไฝไธญๆ
โโโ scripts/
โ โโโ make-banner.py # composes docs/social-preview.png
โ โโโ make-diagram.py # composes the how-it-works diagram
โ โโโ validate.py # local structure validation
โโโ cordis.patch.yml / index.js / package.json # DSH bundle manifest
โโโ LICENSE (MIT)๐ค Join the DSH plugin ecosystem
DeepSeek Harness developer preview is still in its testing phase for Harness developers; core plugins and base APIs will keep iterating. We look forward to exploring the upper limits of intelligence together with developers worldwide, on top of open-source, open, reusable, and composable infrastructure.
- dsh-plugin topic
- Quickstart
- DeepSeek Harness repo
- Companion executor: dsh-skill-router
> This repo is tagged dsh-plugin and > listed in the awesome-dsh-plugin > curated list. PRs, issues and translations are welcome.
๐ License
[MIT](LICENSE). Ponytail (MIT) is referenced, not bundled โ tribute in the SKILL.md.