Nghệ Thuật Đen Của Skill Engineering: 9 Kỹ Thuật Biến Skill Từ "Vibe" Thành Harness Extension

Tạo một skill cho Claude Code mất 15 phút. Tạo một skill thực sự hiệu quả - nhất quán, chạy trên mọi harness, với mọi người dùng, trên model yếu nhất mà bạn support - đó là câu chuyện hoàn toàn khác.
Paul Bakaus, cựu Google Developer Advocate và creator của jQuery UI, đã học điều này theo cách khó nhất khi xây dựng Impeccable - bộ skill design AI hiện được hàng trăm nghìn designers và developers dùng trong Claude Code, Cursor, và Codex. Trong một thread dài trên X, ông chia sẻ 9 kỹ thuật mà ông gọi là "dark arts" - những bí quyết arcane giúp nâng một skill từ "vibed prose" thành harness extension thực sự.
Đây là những gì ông học được.
Skill không phải là prompt - đó là harness extension
Hầu hết skills hiện tại là gì? Là văn xuôi vibed: được generate bởi chính model mà bạn muốn nhắm tới, test hai lần, declare là "done", rồi vứt vào thư mục skills. Không có gì sai với điều đó nếu nó hoạt động với bạn.
Nhưng khi bạn gửi skill đó cho người khác, kỳ vọng thay đổi hoàn toàn. Skill đó phải hoạt động:
- Nhất quán, không phải chỉ đôi khi
- Trên mọi harness phổ biến (Claude Code, Codex, Cursor)
- Với project và điều kiện hoàn toàn khác của người khác
- Với prompting style khác nhau của từng user
- Trên cả frontier models lẫn weak models
- Trên Linux, Mac, Windows
Insight quan trọng nhất mà Bakaus chia sẻ: "The median is the model's gravity. Prompting summons the median; the harness conjures the rest."
Nếu muốn skill thực sự hiệu quả, bạn phải reframe cách nhìn. Thay vì nghĩ skill là một saved prompt người dùng có thể retrieve, hãy nghĩ nó như một plugin - một extension của harness. Impeccable extends harness với automatic AI slop prevention, design language và command palette để steer toward great design, và visual design mode chạy trên local site. Skill của bạn extends harness theo cách nào?
9 kỹ thuật arcane
1. Cho chúng tranh luận (Adversarial sub-agents)
Agents cực kỳ biased với output của chính mình - giống như không một phụ huynh tốt nào để con tự chấm bài của mình. Thay vì cố fix bằng prompt "hãy thật khách quan!!!", hãy dùng adversarial sub-agents: spawn 2 agents không nhìn thấy work của nhau, rồi main agent synthesize (weave, không concatenate) kết quả. Hai quan điểm mù quáng thắng một guess tự tin.
2. Tạo sự phân kỳ (Force divergence)
Ban list không giúp model thoát khỏi "AI median" - nó chỉ move sang vùng lân cận trong latent space. Thay vào đó: (1) Gợi model đề xuất top 3 lựa chọn, rồi discard hết 3 cái đó; (2) Generate ~50 variants, dùng blind sub-agent chọn 5 distinct nhất; (3) Seed từ ngoài model bằng input hash để bắt đầu ở vùng model không bao giờ tự chọn.
3. Route như frontier model (MoE routing)
Frontier models rất nhạy với prose mâu thuẫn hoặc quá dài. Đừng nhồi mọi thứ vào một SKILL.md khổng lồ. Thay vào đó, nghĩ SKILL.md như một intelligent router - Mixture of Experts. Mỗi lệnh load đúng 1 expert file, để 22 cái còn lại ngoài context. Impeccable routes 23 commands theo cách này.
4. Cấp bộ nhớ (Stateful skills)
Không có rule nào nói skill phải stateless. Skills có thể đi kèm scripts chạy trong bất kỳ giai đoạn nào của lifecycle. Ví dụ: /critique viết snapshot (score, P0/P1 findings) theo file path được resolved; /polish đọc snapshot đó làm fix backlog. Teammate trỏ vào cùng file sẽ inherit cùng memory, và score trend tồn tại qua các sessions.
5. Scripts phản hồi ngay (Just-in-time delivery)
LLMs compress instructions trong skill dài - giống người đọc lướt qua tài liệu dài. Solution: nếu có một bước quan trọng hay ngã rẽ mà model phải xử lý đúng, hãy để model chạy script và deliver instruction qua stdout. "The exit value is the prompt." Computed, just-in-time instructions steer cứng hơn bất kỳ text tĩnh nào - nhưng đánh đổi: technique này breaks prompt caching.
6. Hooks kháng cự (Uninvited guardrails)
Mọi thứ trên chỉ hoạt động khi được invoke. Nhưng agent làm những edit tệ nhất khi không có skill nào được gọi cả. Đây là lúc hooks phát huy: PostToolUse hook chạy sau MỖI file edit, không cần invoke skill. Impeccable dùng hooks để chạy deterministic slop engine, inject findings vào system reminder, và agent tự fix. Passive guardrails - cực kỳ mạnh, nhưng cần weeks calibration và có thể burn tokens nếu không cẩn thận.
7. Kết nối browser (Live-wire)
Fine-tuning visual bằng cách gõ chat thật sự khổ sở ("thêm một chút padding, không, ấm hơn, ít hơn"). Một tiny server inject picker vào dev page, agent chạy blocking poll, user click generate trong app đang chạy - đó là event poll returns. Agent, trong cùng thread, edit file và reply; page update. Đây là multimodal UX mà không cần MCP hay React riêng.
8. Compile mọi harness (Cross-runtime distribution)
Skill của bạn viết trên Codex/GPT có thể không hoạt động trên Claude Code/Opus. Sub-agents implemented khác nhau; Codex cần explicit permission; Claude auto-wake khi background job exit, Codex không. Solution: treat skill như source code với build step. One source (SKILL.src.md) compile sang nhiều harness khác nhau - per-model bans compile chỉ vào model đó, không làm degrade model khác.
9. Design cho model yếu nhất
Nếu muốn adoption tối đa, bạn không thể chỉ support GPT latest và Claude Sonnet. Bạn cũng phải support Haiku, Terra/Luna, Gemini Flash, và những gì user của bạn thực sự dùng. Rule đơn giản nhất: "Nếu gate trong skill có thể bị skip, nó sẽ bị skip. Hãy làm nó un-skippable." Haiku là test baseline của Impeccable. live.md viết step-by-step, không implicit gì cả.
Ứng dụng vào startup và AI agent workflows
Với các startup đang xây automation workflows bằng Claude Code hay Codex, các dark arts này translate trực tiếp:
DA#4 (Memory) + DA#6 (Hooks) là combo mạnh nhất cho CI/CD pipelines. Skill giữ state qua sessions, hooks chạy mọi lúc - bạn có guardrails không cần ai invoke thủ công, và audit trail tự động across runs.
DA#3 (Routing) giải quyết vấn đề phổ biến nhất khi scale skills: SKILL.md trở nên quá lớn và model bắt đầu miss instructions. Thay vì một monolith, build routing layer để load đúng expert context cho đúng lệnh.
DA#2 (Divergence) + DA#1 (Argue) đặc biệt valuable khi dùng AI cho content generation, naming, hay creative work - những lĩnh vực mà model gravity kéo về "AI median" rõ nhất. Nếu output của bạn đang trông giống nhau mãi, đây là lý do.
DA#8 (Compile) trở thành critical khi team của bạn dùng nhiều AI tools khác nhau. Đừng viết skill riêng cho từng tool - viết một source, compile ra nhiều targets.
Kết: prose là điểm khởi đầu, không phải đích đến
Bakaus kết bài bằng một observation quan trọng: rất ít trong số 9 kỹ thuật này liên quan đến ngôn từ trong skill. Đó không phải vì words không quan trọng - ông chạy ablation evals cho gần mọi dòng trong Impeccable. Mà vì words không phải là nơi leverage thực sự nằm.
Một great skill không phải là prompt với accessories. Nó là harness extension: spawn sub-agents mà harness không tự làm, guard edits mà bạn không bao giờ yêu cầu check, giữ memory mà session không có, compile vào runtimes chưa bao giờ thấy.
Bạn sẽ iterate prose mãi mãi, và bạn nên. Nhưng điều thực sự phá vỡ median là mọi thứ xung quanh nó.
via Paul Bakaus trên X - Impeccable: impeccable.style
