MJorgin / skill-bartender

Listed

Task-to-skill pairing for DeepSeek Harness — pours the minimal set (usually one; zero when plain tools suffice), prefers workflow skills over hand-composed atomics. Laziness ladder, quarantine → SkillSpector scan → explicit human approval, never auto-installs. 任务配技能 · 懒惰阶梯 · 安全酒窖 · 绝不自动安装

mainToolSkill View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:MJorgin/skill-bartender

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 6beb7e0Synced Aug 18, 2026
skill-bartender — task-to-skill pairing for DeepSeek Harness

🍸 skill-bartender

Mix the right skill cocktail for every task — and never pour an untasted bottle.

License: MIT SkillSpector CI DeepSeek Harness Self-scan Laziness ladder Platforms Docs


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 · What you get · Quick start · See it in action · Usage · Security model · FAQ · Examples · Layout · License

English · 简体中文


🤔 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-bartenderTypical catalog behavior
Skills loaded per taskusually one; zero when plain tools sufficewhatever 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

CapabilityWhat it doesWhere
🪜 Laziness ladderStop at the first rung that holds: 0 no skill → 1 one skill → 2 workflow skill → 3 unsure, don't loadall platforms
🍷 Routing tableTask→skill map in references/policy.md; URL-keyed families (doc/drive/wiki/sheets/base/slides) routed by path patternall platforms
🔐 Safe cellarMissing skill: search → quarantine dir → SkillSpector scan → scripts shown to human (default deny) → explicit yes → install; source + commit hash + verdict recordedDSH, Claude Code, Codex
🧠 LearnUnused loads logged and skipped for the same task type next time; chronic no-shows get offered for removalDSH
🧪 Taste testOn 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-bartender

Then say "skill-bartender" once, or paste the routing table into your AGENTS.md for always-on routing. Full examples: 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.

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)

🚀 Usage

Four ways to use it:

WayHowWhen
A. Say the nameIn any session, just say "skill-bartender"One-off or first-time setup
B. Always-on routingPaste the routing table into AGENTS.mdEvery 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.
  • Security policy: 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.

🎁 Examples

🗺️ 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.

This repo is tagged dsh-plugin and listed in the awesome-dsh-plugin curated list. PRs, issues and translations are welcome.

📄 License

MIT. Ponytail (MIT) is referenced, not bundled — tribute in the SKILL.md.

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

Security policyDetected
Contributing guideDetected
DocumentationDetected

Repository information

Language
Python
License
MIT
Last updated
Aug 17, 2026, 4:11 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.