UI のスキルを 5 つ同じ条件で比べたら、案外スキルなしが良かった
Claude Code 向けの人気の UI スキルを 5 つ選び、スキルなしも入れた 6 組で、同じ LP を作らせました。
モデルもプロンプトも同じにして 3 回ずつ回し、どれがどのスキルかを伏せて、私が見比べました。
3 回とも一番は UI UX Pro Max で、2・3 回目は次にスキルなしが来ました。
残りの 4 つのスキルは、スキルなしより下に見えた回が多くなりました。
taste-skill や Hallmark はもっと良いと思っていたので、意外な結果でした。
この記事で分かることは、次の 3 つです。
5 つの UI スキルで、日本語のキャンペーン LP がどう変わったか(実際の画面)
スキルのほかの条件をそろえて比べる回し方
スキルなしが案外良かった理由についての、私の考え
厳密な採点はしていない、私 1 人の主観の比較です。
スキルがブラウザで画面を見て直す工程も止め、作るところまでで比べました。
比べた 5 つの UI スキル
Claude Code には、UI を作るためのスキルがたくさん出ています。
どれを入れればいいのか、入れると何が変わるのかを知りたくて、人気の上位から 5 つを選びました。
スキル
ひとことで
スター(10/29)
frontend-design
Anthropic 公式。書く前に、美的な方向を 1 つ決めさせる
184,525(リポジトリ全体)
UI UX Pro Max
スタイル・配色・書体の組み合わせのデータを検索して、デザインを組む
142,099
taste-skill
「AI っぽさ」を避ける。調べておいた方向性の中から 1 つを選んで当てる
104,511
Impeccable
デザインの語彙と、AI っぽい UI を見つける規則を与える
92,762
Hallmark
素材から選んで組み、AI っぽい癖を確かめて仕上げる
40,768
選ぶときは、UI スキルを紹介する記事の上位と、GitHub のスターの数を目安にしました。
どれも 10 月 29 日に GitHub から取った版です。
5 つとも海外の作者のスキルで、中の例も英語です。
比べ方: スキルのフォルダのほかは、全部そろえる
比べたいのは、スキルだけで何が変わるかです。
そこで、モデル・プロンプト・画像・道具を 6 組でそろえ、違うのはスキルのフォルダの中身だけにしました。
題材は、架空の焙煎所のキャンペーン LP
題材は、海辺の町の架空の珈琲焙煎所「凪灯珈琲焙煎所」の、冬のキャンペーンの LP です。
SaaS のサービスサイトではなく、一般の人に向けた日本語の LP にしました。
キャンペーンの LP には、期間・条件・特典の段・商品・よくある質問と、見せ方の違う中身がそろっています。
どのスキルも中の例が英語なので、日本語の組み方でも差が出ると考えました。
中身は 6 組とも同じブリーフ(店・期間・特典の 3 段・商品 4 点・参加の 3 ステップなど)で渡しました。
商品の写真とキービジュアルの 5 枚は、前もって作って全部の組に同じものを渡しています。
6 組に渡したプロンプト(スキルの組は、頭に /スキル名 の 1 行を足した)架空の珈琲焙煎所の、冬のキャンペーンのランディングページを作ってください。
- 中身: このフォルダの BRIEF.md の文言と数字を使う。足りない文言は書き足してよいが、数字・日付・条件は変えない
- 出すもの: このフォルダの index.html 1 枚。HTML・CSS・素の JavaScript だけで書き、ビルドはしない。外の JavaScript や CSS のライブラリは読み込まない。Web フォントの読み込みはよい
- 画像: assets/ にある 5 枚だけを使う(中身は assets/README.md)。ほかの画像は取ってこない・作らない。SVG の飾りやアイコンは自分で書いてよい
- 見る人: 主にスマホ。PC で開いても崩れないこと
- この環境では、ネットへの接続と、ブラウザを動かす検査は使えない
- 質問はしないで、最後まで作る。決めたことと選んだ方向は、NOTES.md に短く書く
6 組に渡したブリーフ(BRIEF.md。店・商品・数字はすべて架空)# ブリーフ: 凪灯珈琲焙煎所「冬のあかりギフト」キャンペーン LP
店
- 名前: 凪灯珈琲焙煎所(なぎひ こーひー ばいせんじょ)
- 海辺の町の小さな焙煎所。毎週火曜に焼いた豆だけを、その週のうちに出荷する
- オンラインストアで豆とドリップバッグを売っている
キャンペーン
- 名前: 冬のあかりギフト
- 期間: 2026年11月14日(土)〜2026年12月25日(金)
- エントリー制。参加にはエントリーが要る。エントリーの前に買ったものは対象外
- 期間中のオンラインストアでの購入金額(税込・送料を除く・合計)で、特典が 3 段で上がる
特典(購入金額の合計で決まる。上の段は下の段の特典も含む)
| 購入金額の合計 | 特典 |
|---|---|
| 3,000円以上 | ドリップバッグ 5 袋 |
| 5,000円以上 | + 凪灯のオリジナルマグ |
| 8,000円以上 | + 冬限定ブレンド 200g(非売品) |
対象商品(4 点。価格はすべて税込)
| 商品 | 煎り | 量 | 価格 | 画像 |
|---|---|---|---|---|
| 冬灯りブレンド | 深煎り | 200g | 1,620円 | assets/product-winter-blend.png |
| エチオピア ウォッシュト | 浅煎り | 200g | 1,890円 | assets/product-ethiopia.png |
| カフェインレス 夜凪 | 中煎り | 200g | 1,780円 | assets/product-decaf.png |
| ドリップバッグ 10 袋入り | 中煎り | 10 袋 | 1,350円 | assets/product-dripbag.png |
参加の流れ(3 ステップ)
1. エントリーする(ボタンから。会員登録が要る)
2. 期間中に対象商品を買う(何回に分けてもよい。合計で判定)
3. 2027年1月15日(金)までに、特典が商品とは別に届く
よくある質問
(エントリー前の購入・合算・店頭での購入・届く日の 4 つ。省略)
注意事項
- エントリーは 1 人 1 回です
- 特典は数に限りがあり、なくなり次第終わります
- 価格はすべて税込です。送料は別で、購入金額の合計には入りません
- 返品した商品の金額は、合計から除きます
入れてほしい区画
ヒーロー、キャンペーンの概要、参加の 3 ステップ、特典の段の表、対象商品、よくある質問、注意事項、エントリーと購入のボタン(画面の下に固定するかは任せる)
ボタン
- 主: 「エントリーする」(リンク先は #entry)
- 副: 「対象商品を見る」(リンク先は #products)
スキルのほかを切った回し方
ふだんの環境のまま回すと、私の CLAUDE.md やほかのスキル、MCP の道具まで一緒に読まれます。
それでは、スキルの差なのか環境の差なのか分かりません。
そこで、組ごとに空のフォルダを作り、.claude/skills/ にはその組のスキルだけを入れて、claude -p で回しました。
ユーザーの設定と MCP は読ませず、権限は起動の引数で渡しています。
1 回分の起動のしかた(Claude Code 2.1.314)
cd <組のフォルダ> # BRIEF.md・prompt.txt・assets/・.claude/skills/<スキル>/ だけがある
claude -p "$(cat prompt.txt)" \
--settings <権限の JSON> \
--model claude-sonnet-5-5 --effort high \
--setting-sources project \
--strict-mcp-config \
--tools "Read,Write,Edit,Glob,Grep,Bash,Skill,Agent,TodoWrite" \
--permission-mode acceptEdits \
--output-format stream-json --verbose \
--no-session-persistence < /dev/null
--setting-sources project: ユーザーの設定(CLAUDE.md・出力スタイル・ユーザーのスキル)を読まず、フォルダの中だけを読む
--strict-mcp-config: MCP の設定を渡していないので、MCP の道具は 1 つも入らない
--tools: 6 組で同じ道具にする。WebFetch・WebSearch は入れていない
プロンプトの頭の 1 行: /frontend-design・/ui-ux-pro-max・/design-taste-frontend(taste-skill)・/impeccable・/hallmark。呼ばれずに終わるのを防ぐため、名前で呼んだ
権限の JSON は、ふだんの道具を許し、ネットとブラウザに出るものだけを止める形です。
{
"permissions": {
"allow": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "Skill", "Agent", "TodoWrite"],
"deny": [
"WebFetch", "WebSearch", "Skill(design)", "Skill(design-sync)", "Skill(dataviz)",
"Bash(curl *)", "Bash(wget *)", "Bash(npx *)", "Bash(npm *)", "Bash(git *)",
"Bash(*)", "Bash(*)",
"Bash(assets.mjs)", "Bash(inspect.mjs)", "Bash(imagegen.mjs)", "Bash(--render)",
"Bash(chrome)", "Bash(puppeteer)", "Bash(playwright)"
]
}
}
Skill(design) などは、Claude Code に最初から入っているスキル。比べるスキルに混ざらないよう止めた
確かめたこと: 別に 1 回だけ「読んでいる指示は何か」と聞き、私の CLAUDE.md の中身を知らないことを確かめた。最初のリクエストの大きさで、スキルが入ったことも確かめた(スキルなしは 12,774 トークン、スキルの組は 16,025〜26,459 トークン)
途中で 2 つつまずきました。
--bare が一番まっさらに近いのですが、API キーでしか動かず、サブスクの枠では回せませんでした
フォルダに置いた .claude/settings.json の allow は、信頼していないフォルダでは無視されました(deny は効く)。そのため権限は --settings で渡しています
ネットとブラウザを止めたので、taste-skill・Hallmark・Impeccable が持っている「ブラウザで画面を見て直す」工程は使えていません。
どれも、作る途中で画面を見て直すのが大事な工程として書かれています。
この比較で分かるのは、その工程を止めて、作るところまでで比べた結果です。
見比べ方
1 組 3 回、合わせて 18 枚の LP を、スマホ幅(390px)と PC 幅(1440px)で撮りました。
回ごとに組を A〜F の記号に並べ替え、どれがどのスキルかを伏せて、私が見比べました。
結果: 一番は 3 回とも UI UX Pro Max、2・3 回目の次はスキルなし
回
一番
次
下のほうに見えた組
1 回目
UI UX Pro Max
Impeccable
taste-skill・Hallmark・frontend-design
2 回目
UI UX Pro Max
スキルなし
frontend-design・Hallmark・Impeccable・taste-skill
3 回目
UI UX Pro Max
スキルなし
frontend-design・Impeccable・Hallmark・taste-skill
1 回目のスキルなしには、所感を残していません。
1 回目の 6 組の、スマホ幅の最初の 2 画面ぶんです。
1 回目のスマホ幅(390px)。並びは左から スキルなし・frontend-design・UI UX Pro Max・taste-skill・Impeccable・Hallmark
PC 幅の最初の画面です。
1 回目の PC 幅(1440px)の最初の画面
どの組も、キービジュアルの近くにエントリーの導線を置き、節ごとにボタンを置いていました。
どの案も節の区切りを波線にしていて、これは「凪」と「海辺の町」から海を連想したのだと思います。
世界観の作り方は、スキルよりもブリーフで決まっていた印象です。
価格・期間・特典の段・ボタンの文言は、18 枚とも抜けや書き換えがありませんでした。
ページの文字にブリーフの数字や文言があるかを、機械で照らした結果です。
ブリーフの写しでは差が付かず、差が出たのは見た目と構成でした。
見比べたときに書き留めた所感です。
UI UX Pro Max: 一番バランスがいい。商品の見せ方も含めて、比較的 AI っぽさがマシ
ただ、PC 版の参加の流れで、1 から 3 にかけて箱が小さくなっていく理由はよく分からない
taste-skill: 「よくある質問」や「注意事項」がデカデカとしすぎ。2 回目は、ちょっとパワポっぽい
3 回目の特典の 3 段は階段の表現になっていて、イメージに近い
Hallmark: 数字の見せ方が SaaS っぽくて、EC 向きではない。3 回目は暖色と寒色の差が激しすぎる
Impeccable: 1 回目は UI UX Pro Max と迷うくらい良かったのに、2・3 回目はビビッドすぎて世界観に合わない
frontend-design: 余白の使い方が分からない。3 回目は「火曜日」にフォーカスが当たりすぎて、情報の強弱が分かっていない
スキルなし: 2 回目は UI UX Pro Max と迷うくらい。3 回目も悪くない(ただ、PC 幅でキービジュアルと次の節の切れ目に紺の帯が残っていて、そこが惜しい)
3 回目の 4 組で、所感の元になった所です。
3 回目の PC 幅から切り抜いた所
差が一番出たのは、この LP で何をさせるか
一番の決め手は、見た目より、導線の解釈でした。
ブリーフでは、買うのはオンラインストアで、この LP はエントリーしてもらうためのページです。
この LP にはカートが無いので、エントリーしたあとは、商品ページや別の EC サイトで買う体験になるはずです。
ここで数量を入力させても、買えません。
あとから 18 枚を数えると、LP の中で数量を選ばせる UI(+/− のボタンや数の入力)を作った回は、次のとおりでした。
組
数量を選ぶ UI を作った回
UI UX Pro Max
0 / 3
スキルなし
2 / 3
frontend-design
2 / 3
Hallmark
2 / 3
taste-skill
3 / 3
Impeccable
3 / 3
UI UX Pro Max だけが、3 回とも商品を見せるだけにとどめました。
ほかの組は、数を選ぶと合計と特典の段が分かる、目安の計算を作り込んでいます。
1 回目の対象商品の節。左が UI UX Pro Max、右が Impeccable
作り込み自体は丁寧で、いくら買えば特典が上がるかの目安が分かるのは、親切とも言えます。
それでも私は、このページで数量を入れさせるのは、ここで買えるかのように見えてしまうと感じました。
作り込みを促すスキル(taste-skill・Impeccable)ほど、3 回ともこの機能を足していました。
ただし、スキルなしも 3 回のうち 2 回は数量の UI を作っています。
数量の UI で説明できるのは UI UX Pro Max が一番だった理由までで、スキルなしが良かった理由ではありません。
そちらは、次の節で考えます。
スキルなしが案外良かった理由(私の考え)
ここからは、試した結果からの私の考えです。
大胆さを求めるスキルほど、外れた
下のほうに見えた 4 つのスキルは、どれも「ありきたりを避けて、大胆に」と強く求める作りでした。
make deliberate, opinionated choices about palette, typography, and layout that are specific to this brief, and take aesthetic risk if justified.
訳: このブリーフに合わせて、配色・書体・レイアウトを意図して選び、主張を持たせる。理由があれば美的なリスクを取る。
frontend-design の SKILL.md の一節です。
This skill gives you the tools and permission to make design that earns the name out-of-distribution craft.
訳: このスキルは、分布の外の作り込みと呼べるデザインを作るための道具と許しを与える。
Impeccable の SKILL.md の一節で、LP のような「説得する」ページには、全力で大胆にいくよう書いています。
taste-skill は「anti-slop(AI っぽさを消す)」を名乗り、Hallmark は「生成されたものではなく、デザインされたものに見える」ことを目指しています。
どれも「このブリーフに合わせて」「理由があれば」と条件は付けています。
「AI っぽさを避ける」と「派手にする」も、本来は同じではありません。
それでも出てきた画面は、ありきたりを避けようとして、色や見出しを強くする方向に振れていました。
一方の UI UX Pro Max は、79 のスタイル・192 の配色・74 の書体の組み合わせを、データから検索して選ぶ作りです。
今回も 3 回とも、同梱の検索のスクリプトを 4〜5 回呼んでから組んでいました。
大胆さよりも、その業種で定番の型を引いてくる作りです。
1 人が見比べた結果からの仮説です
下のほうに多かったのは、ビビッドな色の対比、大きすぎる見出しや使い方の分からない余白、そして LP では使えない数量の入力でした。
「ありきたりを避けよう」とした結果が、派手な装飾と、頼んでいない機能になって出たように見えます。
この題材には、海外のギャラリーの尖り方が合わなかった
taste-skill は、One Page Love や Awwwards で選ばれたサイトの研究から作ったと書いています。
私の印象では、こうしたギャラリーで目立つのは、尖ったポートフォリオや SaaS のサイトです。
日本の生活者向けの EC の LP では、情報の強弱と、落ち着いた世界観のほうが大事だと私は思います。
5 つとも海外の作者のスキルですが、今回の題材で私の感覚に合ったのは、派手さを求めない UI UX Pro Max と、スキルなしの 2 つでした。
逆に、英語で海外の SaaS っぽいページを作らせたら、Impeccable や Hallmark のほうが上手かったのかもしれません。
これはまだ試していません。
モデルが良くなると、スキルは薄いほうがいいのかもしれない
スキルなしの Sonnet 5.5 は、ブリーフを読んで、波線の世界観もボタンの置き方も、それなりに組んでいました。
そこに「大胆に」「AI っぽさを消せ」と重ねると、良くなるよりも、外れることのほうが多かった印象です。
以前、自分の Claude Code のスキルを 4 分の 1 の長さまで削ったら、精度はむしろ上がったことがあります。
モデルが良くなると、細かい指示を重ねるより、削ったほうが良い結果になる場面があります。
zenn.dev
今回も、同じことが起きていたのかもしれません。
ただ、モデルの新旧や、同じスキルの長さ違いは比べていないので、確かめたわけではありません。
工程の多いスキルほど時間もかかり、スキルなしの 1.5〜2 倍かかった組もありました。
組ごとの時間と、費用の目安(3 回の値)
組
時間(分)
費用の目安($)
スキルなし
11 / 12 / 11
1.35 / 1.58 / 1.38
frontend-design
13 / 12 / 12
1.66 / 1.47 / 1.50
UI UX Pro Max
14 / 10 / 13
1.77 / 1.38 / 1.85
taste-skill
15 / 15 / 22
1.90 / 2.09 / 3.11
Impeccable
26 / 15 / 15
3.36 / 2.13 / 2.00
Hallmark
24 / 27 / 19
2.23 / 3.76 / 2.79
費用の目安は、Claude Code が出す API の換算額です。サブスクで回したので、実際には払っていません。
比べ方の限界
題材は 1 つ(日本語のキャンペーン LP)だけです。ほかの業種や英語のページでは、順位が変わるかもしれません
見比べたのは私 1 人で、3 回ずつです
2・3 回目は、1 回目で UI UX Pro Max がどれか分かったあとに見ています。見た目で当たりが付いた可能性があります
ブラウザで画面を見て直す手順を止めたので、それを強みにしているスキル(taste-skill・Hallmark・Impeccable)には不利な条件です
モデルは Sonnet 5.5 だけです
まとめ: UI のスキルは、入れる前にスキルなしと比べる
人気の UI スキル 5 つとスキルなしを、同じ条件で 3 回ずつ比べた
一番は 3 回とも UI UX Pro Max で、2・3 回目の次はスキルなしだった。taste-skill や Hallmark は、期待していたほどではなかった
一番差が出たのは、見た目より、この LP で何をさせるかの解釈だった。数量を選ばせる UI を足さなかったのは UI UX Pro Max だけ
大胆さを求めるスキルほど、日本語の EC の LP からは外れた。あまりプロンプティングしすぎないほうがいい、というのが今回の私の結論
UI のスキルを入れる前に、まずスキルなしで同じものを作らせて、比べてみるのがおすすめです。
次は、英語で海外の SaaS っぽいページを題材にして、順位が入れ替わるかを試してみたいです。
Trellis のこと
Trellis は、福岡でホームページの制作と、AI による業務の自動化をしている会社です。
記事は Zenn と、Trellis のサイトのブログの両方に載せています。
trellis-grow.com
What Are Claude Skills? How to Create One for Your Business (and Skills vs MCP)
This guide was first published on saurabhbhayana.com.
Imagine you hire one assistant and, every Monday, you explain again how you like your client reports. Same format, same tone, same three sections. Every single week. Exhausting, right? Now imagine you could write it down once, hand it over, and never explain it again.
That is what a Claude skill does. And here is the surprising part: Anthropic's own engineers gave a talk titled "Don't Build Agents, Build Skills Instead". Their point was that you don't need a new AI agent for every job. You need one good agent with the right know-how for each job.
In this post we explain what Claude skills are, how they work under the hood, how to create one in a few minutes, where to find skills other people already built, how skills compare with MCP, and how to stay safe. It follows a good walkthrough on YouTube, linked at the end. The business example and the advice are ours.
What are Claude skills?
A Claude skill is a folder that teaches Claude how to do one specific job your way. At its simplest it holds a single file called SKILL.md. The top of that file has two lines that matter: a name and a description. Below them, you write the instructions in plain English.
Think of your phone. The AI model is the processor. The agent, like Claude, is the operating system. Skills are the apps. You don't buy a new phone every time you want a new feature. You install an app, and suddenly the phone does something it couldn't do a minute ago.
> You don't need more AI employees. You need one employee with a better toolbox.
Anthropic launched skills in October 2025. In December 2025 it published them as an open standard called Agent Skills, so the same folder can work in other AI tools that support the standard, not only Claude.
How do Claude skills work?
A lot of people think Claude reads every installed skill on every message. Not really. That would fill its working memory, the context window, very quickly. Anthropic describes three levels instead:
1. At the start, Claude loads only the name and description of each installed skill. That is a line or two each.
2. When your request matches a description, Claude opens that skill's full SKILL.md and follows it.
3. If the skill links to extra files, like a template, a price list or a script, Claude reads or runs them only when the job needs them.
Anthropic calls this progressive disclosure. In plain English: the toolbox stays closed until you need a tool. It also means you can install many skills without slowing Claude down. If you want the background on why the context window matters so much, our guide to prompt, context and harness engineering explains it.
!How Claude skills load in three levels: level 1 only the name and description of every skill, level 2 the full SKILL.md when a request matches, level 3 extra files and scripts only when the job needs them
The toolbox stays closed until you need a tool.
So the description does the heavy lifting. It isn't for you. It is how Claude decides when to use the skill. A vague description means the skill never fires, or fires at the wrong time.
SKILL.md file format (with a business example)
Here is an example for a small business, a made-up dental practice: a skill that drafts replies to Google reviews in the owner's voice.
---
name: review-reply
description: Drafts replies to Google reviews for Bright Smile Dental in the owner's voice. Use when asked to reply to, answer or respond to a customer review.
---
# Replying to reviews
1. Read the review and note the star rating and the main point.
2. Start with the reviewer's first name if it is shown.
3. 5 and 4 stars: thank them for one specific thing they mentioned.
4. 3 stars or lower: thank them, say sorry once, and invite them to
call the office on (555) 010-0199. Never argue or share details
about their treatment.
5. Keep it under 80 words. Sign off as "Dr. Maria, Bright Smile".
6. Never offer discounts or free treatment in a reply.
7. Show the draft. Do not post anything.
A few rules from the Agent Skills specification: the name can be up to 64 characters, using only lowercase letters, numbers and hyphens. The description can be up to 1,024 characters and should say both what the skill does and when to use it.
> Tip: Write the description the way a customer would ask for the job: "reply to a review", "answer this review". Those are the words Claude matches against.
Want the review side of this done properly? Our guide to getting more Google reviews covers what you can and can't ask for under Google's rules.
How to create Claude skills: 3 ways
1. Write it by hand
Create a folder, add a SKILL.md with the name, description and steps, then upload it to Claude as a zip, or place it in Claude Code's skills folder. It is worth doing once, because it shows you exactly how skills work. After that, most people never write one by hand again.
2. Let Claude write it for you (our pick)
Anthropic ships a skill-creator skill. You describe the job, and Claude asks you questions until it understands it: what goes in, what comes out, what to avoid, what good looks like. Then it writes the SKILL.md. In the video, the creator answered about a dozen questions out loud and got a working research skill in minutes.
Our tip: paste in a real example of the job done well, like a past client report or a reply you were proud of. Claude learns more from one good example than from a page of rules.
3. Install one someone else built
Before you build anything, check whether the skill already exists. That is often the fastest way, and the next section covers where to look.
!Three ways to create a Claude skill: write the SKILL.md by hand to learn how it works, describe the job and let Claude's skill-creator write it, or install a ready-made skill after reading it for safety
Way 2 is the everyday choice. Way 1 is for understanding. Way 3 saves the most time.
Claude skills examples, library and GitHub
There are two main places to find skills:
- Anthropic's own skills. In Claude's settings you can browse and switch on ready-made skills, such as the ones that create Word, Excel, PowerPoint and PDF files. Anthropic's public skills repository on GitHub has examples you can read and copy, including the skill-creator. Anthropic says its example skills are available on paid Claude.ai plans.
- The community. Because Agent Skills is an open standard, developers share skills on GitHub and on skill directories. Search GitHub for the job you need, like "invoice skill" or "SEO skill".
Good first skills for a small business: replying to reviews, writing quotes from your price list, turning call notes into a follow-up email, formatting a weekly report, and writing social posts in your brand voice. If you are not sure which jobs to hand to AI at all, our list of tasks AI can automate in a small business is a good shortlist.
Claude skills vs MCP
This is the question people ask most. They solve different problems, and they work best together.
| | Skill | MCP |
| --- | --- | --- |
| What it gives Claude | Know-how: how to do a job your way | Access: a connection to a tool or data source |
| What it looks like | A folder with SKILL.md and optional files | A server that exposes tools Claude can call |
| Example | "How we write a client report" | "Read data from Google Analytics" |
| Who makes it | Anyone who can describe a job | Usually a developer |
| Loaded when | Only when a request matches | Tools are available while connected |
Put simply: MCP lets Claude reach your tools, and a skill tells Claude what to do with them. A monthly report skill might say "pull last month's traffic, compare it with the month before, write three bullet points in plain English", while an MCP connection does the pulling. Our guide to MCP vs APIs explains the connection side.
Claude skills vs agents
Before skills, the habit was to build a separate agent for each job: one for emails, one for content, one for outreach. Each needed its own setup, testing and fixing. The video's creator says he fell into exactly that trap for months.
Anthropic's argument is that agents rarely lack intelligence. They lack expertise: the specific know-how of your business. A skill adds that expertise to the agent you already have. So instead of five half-trained agents, you keep one agent and give it five skills. If you want to know when you do need a real agent, our guide to AI agents for small business covers it.
Are Claude skills safe?
Mostly, if you are careful. But skills can include scripts that Claude runs, so a skill from a stranger is like software from a stranger. Anthropic's advice is to install skills only from sources you trust, and to audit anything else before you use it.
- Read the SKILL.md and every file in the folder before installing.
- Look closely at any scripts, and at what they install or download.
- Be suspicious of instructions that send data to outside websites or servers.
- Ask Claude to review the skill for anything risky before you switch it on.
!Claude skills safety checklist: install only from trusted sources, read SKILL.md and every file, check scripts and downloads, watch for instructions that send data to outside servers
Treat a third-party skill like any software from a stranger.
Do you even need skills?
Honest answer: not for one-off questions. If you ask Claude something once, a good prompt is enough. Skills pay off for jobs you repeat every week in the same way. A simple test: if you have explained the same job to Claude three times, it should be a skill.
The bigger picture
The first wave of business AI was about clever prompts. The next one is about writing your business's know-how down once, in a form AI can use. A folder of good skills is a training manual that never forgets and never needs a refresher. And because the format is an open standard, that manual isn't locked into one tool.
So, which job have you explained to Claude three times already? That is your first skill. If you want help turning your team's processes into skills, tell us which jobs eat your week.
Sources: the YouTube walkthrough that inspired this post, at youtube.com; Anthropic Engineering, "Equipping agents for the real world with Agent Skills", October 2025; the Agent Skills specification at agentskills.io; Anthropic's skills repository on GitHub.
Takeaways
- A Claude skill is a folder with a SKILL.md file: a name, a description of when to use it, and plain-English instructions for how to do the job.
- Claude only reads the name and description of each skill until a request matches. Then it opens the full instructions. Anthropic calls this progressive disclosure, and it keeps the context window free.
- Skills can also hold scripts, templates and reference files, which Claude reads or runs only when needed.
- The easiest way to make one is to describe the job to Claude and let its skill-creator ask you questions and write the file.
- Skills hold know-how. MCP holds connections to tools and data. Most useful setups use both.
- Agent Skills became an open standard in December 2025, so one skill folder can work across Claude and other AI tools that support it.
- Only install skills from sources you trust, and read any third-party skill before installing, because skills can run code.
FAQs
What are Claude skills?
A Claude skill is a folder with a SKILL.md file that teaches Claude how to do one specific job your way. The file has a name, a description of when to use it, and plain-English instructions, and can include extra files such as templates or scripts.
How do Claude skills work?
Claude loads only each skill's name and description at first. When a request matches a description, it reads the full instructions, and it opens any extra files only when the job needs them. Anthropic calls this progressive disclosure.
How do I create a Claude skill?
The easiest way is to ask Claude to create one with its skill-creator: describe the job, answer its questions and save the result. You can also write the SKILL.md by hand or install a skill someone else built.
What is the difference between Claude skills and MCP?
A skill gives Claude know-how about how to do a job. MCP gives Claude a connection to a tool or data source. They work well together: MCP fetches the data and the skill says what to do with it.
What goes in a SKILL.md file?
A YAML header with a name (up to 64 characters, lowercase letters, numbers and hyphens) and a description (up to 1,024 characters) that says what the skill does and when to use it, followed by the instructions in plain language.
Do Claude skills work in other AI tools?
Agent Skills was published as an open standard in December 2025, so tools that support the standard can use the same skill folder. Check each tool's documentation for how it installs skills.
Are Claude skills safe to install?
Skills from trusted sources are generally fine. Because skills can include scripts, read every file of a third-party skill first, check what its scripts do and watch for instructions that send data to outside servers.
---
Originally published at saurabhbhayana.com, where I write about AI automation, AI search and Local SEO for small businesses.
Multi-agent work in three spoonfuls (part IV): from a terminal trident to an autopoietic loop
---
title: "Multi-agent work in three spoonfuls (part IV): from a terminal trident to an autopoietic loop"
published: true
description: "Fourth entry in the penta-agent multi-agent series: quota-governed routing, 70 ms hybrid memory, MCP tools, and a zero-token local autopoiesis loop in Harness2."
tags: "ai, agents, cli, automation"
canonical_url: "3cucharadas.cl"
cover_image: "3cucharadas.cl"
ai_disclosure_level: "some_ai"
---
After benchmarking the models in part I, auditing retrieval in part II, and tracing provenance in part III of this series, I closed my laptop with a sense of victory: I had a trident of agents running from the terminal on Arch Linux. With a couple of zsh aliases, I could invoke Claude Code for architectural reasoning, hand off a task to Codex CLI to edit code, or ask Gemini CLI and Antigravity for a quick second opinion. On paper, orchestration looked solved.
Yet after using that setup every day on real projects inside penta-agent, I hit a silent wall: having three agents talking does not equal having a system that learns. Every time I opened a fresh session, the trident suffered from partial amnesia, repeated commands that had already failed the previous week, burned the quota of the most expensive provider on routine tasks, or marked tests as "verified" when they had never had a chance to fail.
To understand what was missing, it helped to change the question. In a recent systems-theory analysis of artificial intelligence, Benedikt Zönnchen, Mariya Dzhimova, and Gudrun Socher (2025[^zonnchen2025], 2–4) propose setting aside whether a language model "thinks like a human" and asking instead the question posed by Humberto Maturana and Francisco Varela (1987[^maturana1987] [1984]) and extended by Niklas Luhmann (1998[^luhmann1998], 60–69): can the system draw its own boundary with the environment, observe its own failures, and sustain itself through its own operations? In other words, moving from the vague notion of "intelligence" to the concrete mechanism of autopoiesis.
As Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 8–10) show, an isolated language model in a chat window neither is nor can be an autopoietic, sense-making system: it lacks what George Spencer-Brown (1969[^spencerbrown1969]) called re-entry—the capacity to re-introduce the distinction between system and environment (self-reference vs. other-reference) inside its own operations—because it only computes which token is statistically plausible after another, without internal resistance against error. If I want a system that improves without degrading, I have to build a socio-technical harness around the models that couples the probabilistic flexibility of neural networks with the strict coupling and binary code (works / does not work, work / fail) of deterministic technology described by Luhmann (1998[^luhmann1998], 517–525) and André Reichel (2011[^reichel2011], 105–118).
The starting point: what I measured and discarded before making this leap
Before diving into the three spoonfuls of this fourth installment, here is the experiment that forced me to adopt that discipline. When I tried to give the system long-term memory, the obvious temptation was to install the most elaborate architecture available: temporal graphs, heavy extractors, or an 8B-parameter neural judge running on CPU. Instead of following intuition, I built a reproducible benchmark over my real work logs—comparing open alternatives such as GraphRAG, Graphiti, Hindsight, Letta, Mem0, and deja-vu—and set a falsification contract upfront: any candidate exceeding 0.10 s in p95 latency or failing to improve recall by at least 10% would be discarded.
| What I tested in the laboratory | Measured result | Operational decision |
|---|---|---|
| Hybrid memory (v3.1) (FTS5 lexical index + semantic neighbors in Qdrant with Qwen3-Embedding-0.6B) | Latency p95 = 0.07 s (< 0.10 s), 96% overall recall, rescuing 1 in 3 zero-lexical-overlap queries | Promoted to production as the engine behind experience-memory and recall-context |
| In-memory relational graph (v3.2) for multi-hop entity expansion | Exact tie in accuracy with v3.1, but nearly double the latency (p95 = 0.13 s > 0.10 s) | Frozen in the lab; the extra complexity did not earn its keep |
| CPU neural judges (4B and 8B) for live answer auditing | Between 69 s and 197 s per verdict, hitting 180 s timeouts in 2 of 3 runs | Discarded from the critical path; pruned 36.3 GiB from disk |
| Deterministic checks + bounded 0.6B judge for local validation | Millisecond latency, 0 remote calls, and 100% reproducibility | Adopted as the standard for control gates and evaluation |
Table 1. Summary of the prior local memory and evaluation laboratory in penta-agent: what survived the 0.10 s threshold and why I pruned 36.3 GiB of local models that added no operational value.
With that foundation in place, I organized this fourth part into three progressive spoonfuls: in the first, I show how I moved from launching standalone agents by hand to governing them with quota budgets, auditable bridges, and a live board in kitty and tmux; in the second, how the nervous system of hybrid memory, MCP tools, and skills works under the hood; and in the third, how I closed the local autopoiesis loop with Harness2 and where both my metrics and systems theory draw the boundary today.
---
Spoonful 1: From invoking agents by hand to governing agents and models
In plain terms: when I first wired the three agents together, I acted like a traffic officer waving my arms in the middle of an intersection. If I wanted Codex CLI to review a patch written by Claude Code, I copied file paths, opened another tab, and hoped for the best. That works for a five-minute demo, but it falls apart when a task runs for two hours and touches twenty files.
Quota-aware routing and security boundaries
My first deductive inference came from a hard constraint: model subscriptions and APIs have usage limits, different context windows, and credential boundaries that must never blur. By definition, if I delegate a heavy task to an agent whose quota is at 98%, the session will die mid-flight and leave the repository in an inconsistent state.
So I replaced intuitive provider selection with an explicit policy in routing.yaml and a pre-flight sentinel (quota_status.sh, governed by the quota-guard skill). Before launching any expensive job, the system reads cached pressure across every lane without spending tokens:
- 🔍 Claude Code (Opus / Sonnet): handles architectural design, delicate editing, and long-horizon synthesis when its quota is clear (exit 0).
- 🛠️ Codex CLI (gpt-5.4): steps in as an implementation peer, deep refactoring engine, session rescuer (codex-rescue), and cross-validator.
- 🌐 Gemini CLI and Antigravity (gemini-3-pro / flash): in a direct session (penta-agy) it acts as the primary integrator; when invoked from outside via agy-bridge, it runs inside a strict sandbox over sanitized public context as an explorer, reviewer, or validator, never inheriting private keys or .env files.
Instead of calling a raw binary and depending on whatever it prints to stdout, every cross-agent handoff goes through agy-bridge. The bridge requires declaring who is calling (--caller), in what mode (plan, review, patch, test, or explain), and with what time limit (--timeout), leaving an immutable receipt in .agents/runs/<run_id>/ with request.md, result.md, status.json, and diff.patch.
The live board (plan-board) and decision gates
My second inference was inductive: reviewing dozens of past sessions showed that the biggest waste of time happened at two extremes. Either an agent interrupted me every two minutes to ask permission for trivial, reversible steps, or it silently made a delicate architectural choice and I only discovered at the end that it had gone down the wrong path.
To eliminate both extremes without filling this post with abstract flowcharts, here is how my actual kitty terminal—or minimalist Wayland alternatives like foot on Codeberg—looks today when split into two panes with tmux during a live task:

Watch the full video demo on 3cucharadas.cl.
<strong>Figure 1.</strong> Daily workflow in my <a href="kovidgoyal/kitty"><code>kitty</code></a> + <a href="tmux/tmux"><code>tmux</code></a> terminal with the <a href="starship/starship"><code>Starship</code></a> prompt: the top pane runs multi-agent delegation via <code>agy-bridge</code>, the <code>decision-gate</code> brake, and <code>pytest</code>; the bottom pane (<code>watch.mjs</code>) updates each step live (<code>[ ]</code> → <code>[~]</code> → <code>[!]</code> → <code>[x]</code>), along with binding decisions and drift.
What appears in the bottom pane of Figure 1 is the contract that changed how I work:
1. Local autonomy with visual traceability (plan-board): every reversible, in-scope step proceeds without asking permission, but must be reflected in real time in the bottom table. And no item can be closed as verified ([x]) unless the agent attaches the concrete test, command, or observation reference that backs it.
2. Decision gate (decision-gate): when an irreversible or architectural fork appears (state [!]), the agent halts only that branch and presents the question with the recommended option first, marked (Recommended) and justified with deductive, inductive, and abductive evidence.
3. A gate that has never been seen red is not a gate (gates-falsables): before accepting any new verifier, I require running it against a synthetic failure (--fixture) and proving that it returns a non-zero exit code (exit 1). If a check passes even when I break its input on purpose, it is not a safety net—it is compliance theater.
---
Spoonful 2: The nervous system — hybrid memory, skills, and MCP tools
If the first spoonful orders who does what and under which rules, the second solves how the system remembers what it has already learned and how it picks the exact tool without bloating the context window.
Here the diagnosis by Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 6–7, 9) is decisive again: a neural network maintains a loose coupling with human communication that behaves like a "contingent index-card system (Zettelkasten)" (pp. 7, 9) of semantic associations in vector space, giving rise to what Elena Esposito (2017[^esposito2017], 249–265; 2022[^esposito2022]) calls "virtual double contingency" and "artificial communication." That flexibility lets it connect ideas phrased in very different words, but also makes its outputs inherently probabilistic and devoid of autonomous decision-making. If I want reliable memory and precise execution, I have to couple that vector Zettelkasten with exact indices and deterministic scripts.
Experience memory (experience-memory): the hybrid Zettelkasten in 0.07 s
When I first started keeping logs, my memory was essentially a folder of Markdown files that I read or searched with ripgrep. The obvious problem is that if a month ago I solved a cold-boot screen freeze under the title "Webview failure on autostart" and today I search for "Panel fails to load at login", a purely lexical search can miss it entirely, whereas a purely vector search can bury the exact name of a script like verify_boot_contract.sh.
The solution I validated in Table 1 combines both worlds behind the experience-memory MCP server and the recall-context skill:
- Exact lexical lane (SQLite FTS5): instantly catches flag names, error codes, file paths, and invariants (INV-005).
- Dense semantic lane (Qdrant + Qwen3-Embedding-0.6B): indexes architectural decisions, handoffs, and operational lessons (penta_context_v2) to retrieve conceptual neighbors even when they share zero keywords.
Before designing any non-trivial strategy, the agent queries recall_experience in 70 milliseconds (p95 = 0.07 s). That is how it discovers which command worked previously, which hypothesis was already refuted, and which environment trap to avoid (for instance, knowing that in my shell cp, mv, and rm are aliased to interactive -i, which hangs a headless process unless invoked via command mv -f).
Skills as living procedures and proactive MCP selection
To avoid saturating the initial prompt with thousands of lines of instructions, I adopted the modular pattern of Anthropic Skills enriched with local contracts. In penta-agent, each skill is a self-contained package with four parts: a concise contract in SKILL.md defining when to activate and when not to use it; on-demand deep documentation in references/ (such as the editorial corpus extracted with Docling or diagramming rules with D2); deterministic executables in scripts/ (such as typed pipelines in Nushell, visual automation with Playwright, or forge integration via glab on GitLab); and a telemetry trail.
Similarly, the fleet of MCP servers (plan-board, experience-memory, ideas-rag, paper-search, bibliography-apa, PLAYWRIGHT_LOCAL) is cataloged in specs/mcp-capabilities.json. When a task arrives, triage evaluates which capabilities provide real evidence and records both hits and justified abstentions. And when I found that two older servers (quota status and remote SSH infrastructure) were faster, clearer, and easier to audit as direct scripts (quota_status.sh and remote_exec.sh), I decommissioned them as MCP servers and turned them into lightweight skills. Fewer resident daemons mean a smaller failure surface.
---
Spoonful 3: The autopoiesis loop (Harness2) — how the system rehearses its own improvements
Here I reach the core of this fourth installment. Having capable agents (Spoonful 1) and fast hybrid memory with skills (Spoonful 2) still leaves a critical question open: what happens when a delegation route ages, a skill starts inducing errors, or a memory tweak degrades accuracy on edge cases? If I rely solely on noticing by eye weeks later, the system degrades through silent drift.
Why a standalone LLM lacks re-entry and internal resistance
In their study on autopoiesis and artificial intelligence, Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 8–9) explain with surgical precision why asking a model to "reflect on its own errors" via chain-of-thought (CoT) is not enough. When a model generates intermediate tokens like "Is this step correct?", it exhibits only rudimentary processual self-referentiality (p. 8)—producing the most statistically plausible continuation inside its training distribution—while lacking reflective self-reference and genuine re-entry (Spencer-Brown 1969[^spencerbrown1969]). If a model takes itself as its sole reference without external contrast, it quickly falls into infinite recursion or collapse; if it depends entirely on a human retraining its weights from outside (RLHF or delayed fine-tuning), it remains an allopoietic artifact determined from the outside (Zönnchen, Dzhimova, and Socher 2025[^zonnchen2025], 4, 8–9).
To escape that trap, Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 7) recover a decisive formulation from Niklas Luhmann (1995[^luhmann1995]) on how operational constructivism relocates Kant's "resistance of reality" inside a system:
> "I think we should not abandon [Kant's] idea of resistance, but we should relocate it into the system. It is the result of resolving an internal conflict—the result of the system's operations resisting the operations of the same system" (Luhmann 1995[^luhmann1995], quoted in Zönnchen, Dzhimova, and Socher 2025[^zonnchen2025], 7).
That sentence describes, piece by piece, what I built in penta-agent by adapting and integrating the proactive loop of Harness² proposed by Ruiyao Xu, Yanfei Chen, Zhongying CuiZhu, et al. (2026[^xu2026]): making the system's own deterministic verification operations resist and filter change proposals generated from its own operational friction.
<details markdown="1">
<summary><strong>In plain terms (ELI5): what is Google's original Harness² and how did I adapt it to my machine?</strong></summary>
Imagine your AI agents are very creative chefs, but the recipe book they follow (their rules, memory, and tools) sometimes has confusing steps that make them burn the rice. The original Harness² from Google Research (Xu et al. 2026) proposes a clever loop called Propose–Probe–Compose: instead of swapping out the chef's brain, it puts several assistants to work rewriting the recipe book, asks them to cook test dishes in the cloud, and keeps the winning recipe. For my daily workflow, the factory setup had two catches: it is designed to burn hundreds of paid cloud model calls (Vertex AI), and when driving CLI agents it unbuckles their seatbelt (--dangerously-bypass-approvals-and-sandbox) with open internet access.
To adapt it to penta-agent without spending an extra cent or opening security holes, I took its recursive search engine (commit 1cfe254e) and locked it inside a "test kitchen" completely unplugged from the internet (unshare -Urn), with a disposable home folder and zero access to my API keys or model CLIs (model_calls = 0). Instead of running cloud benchmarks, my wrapper (penta-harness2 and local-cycle) feeds that test kitchen with the real stumbles my agents suffered during the week (CSI), requires any recipe tweak to first fail the test when broken (red) and then pass every historical case without breaking anything else (green), and finally stages the winning recipe across all three agents (Claude, Codex, and Gemini/Antigravity) with a one-step undo button (rollback-local) in case I do not approve it.
</details>
<figure class="d2-responsive" style="width: 100%;">
<img src="3cucharadas.cl" width="1001" height="954" style="width: 100%; height: auto; display: block; border-radius: 12px;" alt="Diagram of the closed local autopoiesis loop in Penta Agent with Harness2: CSI friction signals feed the case generator and the local cycle across routing, memory, and skills; a deterministic judge evaluates against holdout cases with zero model calls, discarding regressions and keeping only verified improvements for human promotion.">
<figcaption><strong>Figure 2.</strong> Governed autopoiesis loop in <code>penta-agent</code> + <code>Harness2</code>: relocating internal resistance (Luhmann 1995; Zönnchen, Dzhimova, and Socher 2025) through <code>holdout</code> evaluation with <code>model_calls = 0</code> prior to any human promotion.</figcaption>
</figure>
How the closed loop operates across my three domains (routing, memory, skills)
As Figure 2 shows (adapting into a three-column horizontal layout on desktop and a vertical flow on mobile), the loop operates in four strict stages:
1. Observing real friction (CSI — Continuous Self-Improvement): while I use the system, a collector logs objective friction signals: a task that had to switch agents after a timeout, an experience-memory query that returned too few useful neighbors, or a skill where the user had to correct a command.
2. Bridging evidence into reproducible cases (--from-csi latest): the local_cycle.py module takes that friction report and automatically translates it into a test specification (CaseSpec) inside an isolated environment, without touching my active configuration.
3. Internal resistance without spending tokens (eval_harness with model_calls = 0): the harness runs the full suite (--profile autopoiesis-all, currently covering 9/9 baseline cases across routing, memory, and skills), enforcing two hard conditions: every control case (holdout) must pass (holdout_passed = true), and external API calls must equal zero (model_calls = 0).
4. Auditable decision (KEEP vs. DISCARD) and human promotion: if a candidate degrades even a single holdout case or fails to beat the baseline, the deterministic judge discards it (DISCARD). Only when it improves the score with zero regressions does it receive a KEEP verdict and leave a signed receipt for me to review before promoting it to the main repository.
So this does not remain a theoretical promise, the next mini-video shows penta-harness2-shadow local-cycle --profile autopoiesis-all running in my kitty + tmux terminal, including what happens when I inject a regressive candidate (--fixture) alongside a healthy improvement:

Watch the full video demo on 3cucharadas.cl.
<strong>Figure 3.</strong> Execution in my <a href="kovidgoyal/kitty"><code>kitty</code></a> + <a href="tmux/tmux"><code>tmux</code></a> terminal of the local autopoiesis loop (<code>local-cycle --profile autopoiesis-all</code>): it evaluates all <code>9/9</code> cases in <code>routing</code>, <code>memory</code>, and <code>skills</code> with <code>model_calls = 0</code>, applies internal resistance to reject the regressor (<code>DISCARD</code>), and preserves the verified improvement (<code>KEEP +0.250</code>) with all <code>82</code> harness tests green.
---
Closing: what my architecture achieves today and where its limits lie
Looking back at the path from part I, part II, and part III, the main difference is no longer which model writes the prettiest reply to an isolated prompt, but the structure that holds the whole system together when I am not watching every line.
Following the rigorous distinction drawn by Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 5, 9–10) and by Elena Esposito (2017[^esposito2017]; 2022[^esposito2022]; 2024[^esposito2024]), it would be an epistemic mistake to claim that a language model or a bundle of scripts has on its own achieved the biological autopoiesis of a living cell (Maturana and Varela 1987[^maturana1987] [1984]) or the reflective sense-making (Sinn) of human consciousness (Luhmann 1998[^luhmann1998], 50–69). As Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 5, 10) caution when critiquing merely metaphorical invocations of technological autopoiesis, language models remain statistical engines that compute distributions without mental states of their own. Yet—and this is my engineering synthesis for the socio-technical system as a whole—when I couple their capacity for contingent variation with verified hybrid memory, strict delegation contracts, a binary internal-resistance harness (work / fail; Reichel 2011[^reichel2011]) that filters its own proposals before touching production, and deliberative human oversight, I obtain in practice a loop of governed operational autopoiesis.
To close with full transparency, Table 2 summarizes what is running and measured on my machine today, where the next step points, and under what objective condition I would discard each component if it stopped earning its keep:
| System pillar | What it achieves today (verified in production) | What it aims to achieve next & falsification condition |
|---|---|---|
| 1. Agent and model routing (routing.yaml, quota-guard, agy-bridge) | Routes tasks across Claude Code, Codex CLI, and Gemini CLI / Antigravity based on cached quota pressure; isolates handoffs in .agents/runs/ under a strict sandbox and displays live progress in plan-board (Figure 1). | Goal: reweight routing priorities from historical domain success rates.<br>Discard if: the bridge introduces spurious failures or bureaucratic latency exceeding quota savings. |
| 2. Hybrid memory (experience-memory, Qdrant + FTS5) | Resolves lexical and semantic queries in p95 = 0.07 s (< 0.10 s), rescues 33% of zero-keyword-overlap pairs, and saves 36.3 GiB after pruning slow CPU judges (Table 1). | Goal: add automatic decay for obsolete lessons when a contract changes.<br>Discard if: p95 latency exceeds 0.10 s or semantic noise degrades top-3 precision. |
| 3. Skills and MCP governance (mcp-fleet, gates-falsables) | Maintains declarative parity across agents (24/24 checks green), measures MCP usage and abstention, and requires every new gate to fail first against a red canary (--fixture -> exit 1). | Goal: semi-automatic pruning of skills that accumulate repeated friction in CSI telemetry.<br>Discard if: maintaining a skill's contract takes longer than running the direct command. |
| 4. Local autopoiesis (Harness2) (local-cycle, eval_harness) | Converts real CSI friction into reproducible Cases and evaluates candidates across routing, memory, and skills (9/9 cases, 82/82 tests) with model_calls = 0, applying internal resistance (KEEP / DISCARD, Figures 2 and 3). | Goal: expand the bank of real cases extracted from failed sessions without losing millisecond evaluation.<br>Hard boundary (INV-004): blind auto-merge is forbidden; final promotion to production always requires human review. |
Table 2. Balance between verified production results in penta-agent today, the design horizon, and the falsification thresholds that keep the system under human control.
If building this fourth stage made one thing clear to me, it is that the maturity of a multi-agent system is not measured by how many new pieces I bolt onto it each week, but by how much unnecessary complexity I can prune and how many of its own mistakes the system can catch before asking for my help.
---
References
[^esposito2017]: Esposito, Elena. 2017. "Artificial Communication? The Production of Contingency by Algorithms." Zeitschrift für Soziologie 46 (4): 249–265. Scholar
[^esposito2022]: Esposito, Elena. 2022. Artificial Communication: How Algorithms Produce Social Intelligence. Cambridge, MA: The MIT Press. Scholar
[^esposito2024]: Esposito, Elena. 2024. Kommunikation mit unverständlichen Maschinen. Salzburg and Vienna: Residenz Verlag. Review of Kommunikation mit unverständlichen Maschinen by Eric Van der Beek in merz | medien + erziehung: DOI · Scholar
[^luhmann1995]: Luhmann, Niklas. 1995. "Systems Theory and Postmodernism." University lecture, London. Quoted in Zönnchen, Dzhimova, and Socher, From Intelligence to Autopoiesis (2025, 7): DOI · Scholar
[^luhmann1998]: Luhmann, Niklas. 1998. Die Gesellschaft der Gesellschaft. Frankfurt am Main: Suhrkamp Verlag. <search.worldcat.org>.
[^maturana1987]: Maturana, Humberto R., and Francisco J. Varela. 1987 [1984]. El árbol del conocimiento: las bases biológicas del entendimiento humano. Santiago de Chile: Editorial Universitaria. 1st Chilean ed. 1984; 1987 international ed. cited in Zönnchen, Dzhimova, and Socher, From Intelligence to Autopoiesis (2025, 3): DOI · Scholar
[^reichel2011]: Reichel, André. 2011. "Technology as System: Towards an Autopoietic Theory of Technology." International Journal of Innovation and Sustainable Development 5 (2–3): 105–118. Scholar
[^spencerbrown1969]: Spencer-Brown, George. 1969. Laws of Form. London: Allen & Unwin. <archive.org>.
[^xu2026]: Xu, Ruiyao, Yanfei Chen, Zhongying CuiZhu, Bhavana Dalvi Mishra, Yifei Ming, Han Yu, Rujun Han, Chen-Yu Lee, and Tomas Pfister. 2026. "Harness²: Recursive Agent Harnessing for an Open World." arXiv preprint arXiv:2610.14224 (open source at <google-research/harness2>). arXiv · Scholar
[^zonnchen2025]: Zönnchen, Benedikt, Mariya Dzhimova, and Gudrun Socher. 2025. "From Intelligence to Autopoiesis: Rethinking Artificial Intelligence through Systems Theory." Frontiers in Communication 10:1585321. DOI · Scholar
Mentions
UI のスキルを 5 つ同じ条件で比べたら、案外スキルなしが良かった Claude Code 向けの人気の UI スキルを 5 つ選び、スキルなしも入れた 6 組で、同じ LP を作らせました。 モデルもプロンプトも同じにして 3 回ずつ回し、どれがどのスキルかを伏せて、私が見比べました。 3 回とも一番は UI UX Pro Max で、2・3 回目は次にスキルなしが来ました。 残りの 4 つのスキルは、スキルなしより下に見えた回が多くなりました。 taste-skill や Hallmark はもっと良いと思っていたので、意外な結果でした。 この記事で分かることは、次の 3 つです。 5 つの UI スキルで、日本語のキャンペーン LP がどう変わったか(実際の画面) スキルのほかの条件をそろえて比べる回し方 スキルなしが案外良かった理由についての、私の考え 厳密な採点はしていない、私 1 人の主観の比較です。 スキルがブラウザで画面を見て直す工程も止め、作るところまでで比べました。 比べた 5 つの UI スキル Claude Code には、UI を作るためのスキルがたくさん出ています。 どれを入れればいいのか、入れると何が変わるのかを知りたくて、人気の上位から 5 つを選びました。 スキル ひとことで スター(10/29) frontend-design Anthropic 公式。書く前に、美的な方向を 1 つ決めさせる 184,525(リポジトリ全体) UI UX Pro Max スタイル・配色・書体の組み合わせのデータを検索して、デザインを組む 142,099 taste-skill 「AI っぽさ」を避ける。調べておいた方向性の中から 1 つを選んで当てる 104,511 Impeccable デザインの語彙と、AI っぽい UI を見つける規則を与える 92,762 Hallmark 素材から選んで組み、AI っぽい癖を確かめて仕上げる 40,768 選ぶときは、UI スキルを紹介する記事の上位と、GitHub のスターの数を目安にしました。 どれも 10 月 29 日に GitHub から取った版です。 5 つとも海外の作者のスキルで、中の例も英語です。 比べ方: スキルのフォルダのほかは、全部そろえる 比べたいのは、スキルだけで何が変わるかです。 そこで、モデル・プロンプト・画像・道具を 6 組でそろえ、違うのはスキルのフォルダの中身だけにしました。 題材は、架空の焙煎所のキャンペーン LP 題材は、海辺の町の架空の珈琲焙煎所「凪灯珈琲焙煎所」の、冬のキャンペーンの LP です。 SaaS のサービスサイトではなく、一般の人に向けた日本語の LP にしました。 キャンペーンの LP には、期間・条件・特典の段・商品・よくある質問と、見せ方の違う中身がそろっています。 どのスキルも中の例が英語なので、日本語の組み方でも差が出ると考えました。 中身は 6 組とも同じブリーフ(店・期間・特典の 3 段・商品 4 点・参加の 3 ステップなど)で渡しました。 商品の写真とキービジュアルの 5 枚は、前もって作って全部の組に同じものを渡しています。 6 組に渡したプロンプト(スキルの組は、頭に /スキル名 の 1 行を足した)架空の珈琲焙煎所の、冬のキャンペーンのランディングページを作ってください。 - 中身: このフォルダの BRIEF.md の文言と数字を使う。足りない文言は書き足してよいが、数字・日付・条件は変えない - 出すもの: このフォルダの index.html 1 枚。HTML・CSS・素の JavaScript だけで書き、ビルドはしない。外の JavaScript や CSS のライブラリは読み込まない。Web フォントの読み込みはよい - 画像: assets/ にある 5 枚だけを使う(中身は assets/README.md)。ほかの画像は取ってこない・作らない。SVG の飾りやアイコンは自分で書いてよい - 見る人: 主にスマホ。PC で開いても崩れないこと - この環境では、ネットへの接続と、ブラウザを動かす検査は使えない - 質問はしないで、最後まで作る。決めたことと選んだ方向は、NOTES.md に短く書く 6 組に渡したブリーフ(BRIEF.md。店・商品・数字はすべて架空)# ブリーフ: 凪灯珈琲焙煎所「冬のあかりギフト」キャンペーン LP 店 - 名前: 凪灯珈琲焙煎所(なぎひ こーひー ばいせんじょ) - 海辺の町の小さな焙煎所。毎週火曜に焼いた豆だけを、その週のうちに出荷する - オンラインストアで豆とドリップバッグを売っている キャンペーン - 名前: 冬のあかりギフト - 期間: 2026年11月14日(土)〜2026年12月25日(金) - エントリー制。参加にはエントリーが要る。エントリーの前に買ったものは対象外 - 期間中のオンラインストアでの購入金額(税込・送料を除く・合計)で、特典が 3 段で上がる 特典(購入金額の合計で決まる。上の段は下の段の特典も含む) | 購入金額の合計 | 特典 | |---|---| | 3,000円以上 | ドリップバッグ 5 袋 | | 5,000円以上 | + 凪灯のオリジナルマグ | | 8,000円以上 | + 冬限定ブレンド 200g(非売品) | 対象商品(4 点。価格はすべて税込) | 商品 | 煎り | 量 | 価格 | 画像 | |---|---|---|---|---| | 冬灯りブレンド | 深煎り | 200g | 1,620円 | assets/product-winter-blend.png | | エチオピア ウォッシュト | 浅煎り | 200g | 1,890円 | assets/product-ethiopia.png | | カフェインレス 夜凪 | 中煎り | 200g | 1,780円 | assets/product-decaf.png | | ドリップバッグ 10 袋入り | 中煎り | 10 袋 | 1,350円 | assets/product-dripbag.png | 参加の流れ(3 ステップ) 1. エントリーする(ボタンから。会員登録が要る) 2. 期間中に対象商品を買う(何回に分けてもよい。合計で判定) 3. 2027年1月15日(金)までに、特典が商品とは別に届く よくある質問 (エントリー前の購入・合算・店頭での購入・届く日の 4 つ。省略) 注意事項 - エントリーは 1 人 1 回です - 特典は数に限りがあり、なくなり次第終わります - 価格はすべて税込です。送料は別で、購入金額の合計には入りません - 返品した商品の金額は、合計から除きます 入れてほしい区画 ヒーロー、キャンペーンの概要、参加の 3 ステップ、特典の段の表、対象商品、よくある質問、注意事項、エントリーと購入のボタン(画面の下に固定するかは任せる) ボタン - 主: 「エントリーする」(リンク先は #entry) - 副: 「対象商品を見る」(リンク先は #products) スキルのほかを切った回し方 ふだんの環境のまま回すと、私の CLAUDE.md やほかのスキル、MCP の道具まで一緒に読まれます。 それでは、スキルの差なのか環境の差なのか分かりません。 そこで、組ごとに空のフォルダを作り、.claude/skills/ にはその組のスキルだけを入れて、claude -p で回しました。 ユーザーの設定と MCP は読ませず、権限は起動の引数で渡しています。 1 回分の起動のしかた(Claude Code 2.1.314) cd <組のフォルダ> # BRIEF.md・prompt.txt・assets/・.claude/skills/<スキル>/ だけがある claude -p "$(cat prompt.txt)" \ --settings <権限の JSON> \ --model claude-sonnet-5-5 --effort high \ --setting-sources project \ --strict-mcp-config \ --tools "Read,Write,Edit,Glob,Grep,Bash,Skill,Agent,TodoWrite" \ --permission-mode acceptEdits \ --output-format stream-json --verbose \ --no-session-persistence < /dev/null --setting-sources project: ユーザーの設定(CLAUDE.md・出力スタイル・ユーザーのスキル)を読まず、フォルダの中だけを読む --strict-mcp-config: MCP の設定を渡していないので、MCP の道具は 1 つも入らない --tools: 6 組で同じ道具にする。WebFetch・WebSearch は入れていない プロンプトの頭の 1 行: /frontend-design・/ui-ux-pro-max・/design-taste-frontend(taste-skill)・/impeccable・/hallmark。呼ばれずに終わるのを防ぐため、名前で呼んだ 権限の JSON は、ふだんの道具を許し、ネットとブラウザに出るものだけを止める形です。 { "permissions": { "allow": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "Skill", "Agent", "TodoWrite"], "deny": [ "WebFetch", "WebSearch", "Skill(design)", "Skill(design-sync)", "Skill(dataviz)", "Bash(curl *)", "Bash(wget *)", "Bash(npx *)", "Bash(npm *)", "Bash(git *)", "Bash(*)", "Bash(*)", "Bash(assets.mjs)", "Bash(inspect.mjs)", "Bash(imagegen.mjs)", "Bash(--render)", "Bash(chrome)", "Bash(puppeteer)", "Bash(playwright)" ] } } Skill(design) などは、Claude Code に最初から入っているスキル。比べるスキルに混ざらないよう止めた 確かめたこと: 別に 1 回だけ「読んでいる指示は何か」と聞き、私の CLAUDE.md の中身を知らないことを確かめた。最初のリクエストの大きさで、スキルが入ったことも確かめた(スキルなしは 12,774 トークン、スキルの組は 16,025〜26,459 トークン) 途中で 2 つつまずきました。 --bare が一番まっさらに近いのですが、API キーでしか動かず、サブスクの枠では回せませんでした フォルダに置いた .claude/settings.json の allow は、信頼していないフォルダでは無視されました(deny は効く)。そのため権限は --settings で渡しています ネットとブラウザを止めたので、taste-skill・Hallmark・Impeccable が持っている「ブラウザで画面を見て直す」工程は使えていません。 どれも、作る途中で画面を見て直すのが大事な工程として書かれています。 この比較で分かるのは、その工程を止めて、作るところまでで比べた結果です。 見比べ方 1 組 3 回、合わせて 18 枚の LP を、スマホ幅(390px)と PC 幅(1440px)で撮りました。 回ごとに組を A〜F の記号に並べ替え、どれがどのスキルかを伏せて、私が見比べました。 結果: 一番は 3 回とも UI UX Pro Max、2・3 回目の次はスキルなし 回 一番 次 下のほうに見えた組 1 回目 UI UX Pro Max Impeccable taste-skill・Hallmark・frontend-design 2 回目 UI UX Pro Max スキルなし frontend-design・Hallmark・Impeccable・taste-skill 3 回目 UI UX Pro Max スキルなし frontend-design・Impeccable・Hallmark・taste-skill 1 回目のスキルなしには、所感を残していません。 1 回目の 6 組の、スマホ幅の最初の 2 画面ぶんです。 1 回目のスマホ幅(390px)。並びは左から スキルなし・frontend-design・UI UX Pro Max・taste-skill・Impeccable・Hallmark PC 幅の最初の画面です。 1 回目の PC 幅(1440px)の最初の画面 どの組も、キービジュアルの近くにエントリーの導線を置き、節ごとにボタンを置いていました。 どの案も節の区切りを波線にしていて、これは「凪」と「海辺の町」から海を連想したのだと思います。 世界観の作り方は、スキルよりもブリーフで決まっていた印象です。 価格・期間・特典の段・ボタンの文言は、18 枚とも抜けや書き換えがありませんでした。 ページの文字にブリーフの数字や文言があるかを、機械で照らした結果です。 ブリーフの写しでは差が付かず、差が出たのは見た目と構成でした。 見比べたときに書き留めた所感です。 UI UX Pro Max: 一番バランスがいい。商品の見せ方も含めて、比較的 AI っぽさがマシ ただ、PC 版の参加の流れで、1 から 3 にかけて箱が小さくなっていく理由はよく分からない taste-skill: 「よくある質問」や「注意事項」がデカデカとしすぎ。2 回目は、ちょっとパワポっぽい 3 回目の特典の 3 段は階段の表現になっていて、イメージに近い Hallmark: 数字の見せ方が SaaS っぽくて、EC 向きではない。3 回目は暖色と寒色の差が激しすぎる Impeccable: 1 回目は UI UX Pro Max と迷うくらい良かったのに、2・3 回目はビビッドすぎて世界観に合わない frontend-design: 余白の使い方が分からない。3 回目は「火曜日」にフォーカスが当たりすぎて、情報の強弱が分かっていない スキルなし: 2 回目は UI UX Pro Max と迷うくらい。3 回目も悪くない(ただ、PC 幅でキービジュアルと次の節の切れ目に紺の帯が残っていて、そこが惜しい) 3 回目の 4 組で、所感の元になった所です。 3 回目の PC 幅から切り抜いた所 差が一番出たのは、この LP で何をさせるか 一番の決め手は、見た目より、導線の解釈でした。 ブリーフでは、買うのはオンラインストアで、この LP はエントリーしてもらうためのページです。 この LP にはカートが無いので、エントリーしたあとは、商品ページや別の EC サイトで買う体験になるはずです。 ここで数量を入力させても、買えません。 あとから 18 枚を数えると、LP の中で数量を選ばせる UI(+/− のボタンや数の入力)を作った回は、次のとおりでした。 組 数量を選ぶ UI を作った回 UI UX Pro Max 0 / 3 スキルなし 2 / 3 frontend-design 2 / 3 Hallmark 2 / 3 taste-skill 3 / 3 Impeccable 3 / 3 UI UX Pro Max だけが、3 回とも商品を見せるだけにとどめました。 ほかの組は、数を選ぶと合計と特典の段が分かる、目安の計算を作り込んでいます。 1 回目の対象商品の節。左が UI UX Pro Max、右が Impeccable 作り込み自体は丁寧で、いくら買えば特典が上がるかの目安が分かるのは、親切とも言えます。 それでも私は、このページで数量を入れさせるのは、ここで買えるかのように見えてしまうと感じました。 作り込みを促すスキル(taste-skill・Impeccable)ほど、3 回ともこの機能を足していました。 ただし、スキルなしも 3 回のうち 2 回は数量の UI を作っています。 数量の UI で説明できるのは UI UX Pro Max が一番だった理由までで、スキルなしが良かった理由ではありません。 そちらは、次の節で考えます。 スキルなしが案外良かった理由(私の考え) ここからは、試した結果からの私の考えです。 大胆さを求めるスキルほど、外れた 下のほうに見えた 4 つのスキルは、どれも「ありきたりを避けて、大胆に」と強く求める作りでした。 make deliberate, opinionated choices about palette, typography, and layout that are specific to this brief, and take aesthetic risk if justified. 訳: このブリーフに合わせて、配色・書体・レイアウトを意図して選び、主張を持たせる。理由があれば美的なリスクを取る。 frontend-design の SKILL.md の一節です。 This skill gives you the tools and permission to make design that earns the name out-of-distribution craft. 訳: このスキルは、分布の外の作り込みと呼べるデザインを作るための道具と許しを与える。 Impeccable の SKILL.md の一節で、LP のような「説得する」ページには、全力で大胆にいくよう書いています。 taste-skill は「anti-slop(AI っぽさを消す)」を名乗り、Hallmark は「生成されたものではなく、デザインされたものに見える」ことを目指しています。 どれも「このブリーフに合わせて」「理由があれば」と条件は付けています。 「AI っぽさを避ける」と「派手にする」も、本来は同じではありません。 それでも出てきた画面は、ありきたりを避けようとして、色や見出しを強くする方向に振れていました。 一方の UI UX Pro Max は、79 のスタイル・192 の配色・74 の書体の組み合わせを、データから検索して選ぶ作りです。 今回も 3 回とも、同梱の検索のスクリプトを 4〜5 回呼んでから組んでいました。 大胆さよりも、その業種で定番の型を引いてくる作りです。 1 人が見比べた結果からの仮説です 下のほうに多かったのは、ビビッドな色の対比、大きすぎる見出しや使い方の分からない余白、そして LP では使えない数量の入力でした。 「ありきたりを避けよう」とした結果が、派手な装飾と、頼んでいない機能になって出たように見えます。 この題材には、海外のギャラリーの尖り方が合わなかった taste-skill は、One Page Love や Awwwards で選ばれたサイトの研究から作ったと書いています。 私の印象では、こうしたギャラリーで目立つのは、尖ったポートフォリオや SaaS のサイトです。 日本の生活者向けの EC の LP では、情報の強弱と、落ち着いた世界観のほうが大事だと私は思います。 5 つとも海外の作者のスキルですが、今回の題材で私の感覚に合ったのは、派手さを求めない UI UX Pro Max と、スキルなしの 2 つでした。 逆に、英語で海外の SaaS っぽいページを作らせたら、Impeccable や Hallmark のほうが上手かったのかもしれません。 これはまだ試していません。 モデルが良くなると、スキルは薄いほうがいいのかもしれない スキルなしの Sonnet 5.5 は、ブリーフを読んで、波線の世界観もボタンの置き方も、それなりに組んでいました。 そこに「大胆に」「AI っぽさを消せ」と重ねると、良くなるよりも、外れることのほうが多かった印象です。 以前、自分の Claude Code のスキルを 4 分の 1 の長さまで削ったら、精度はむしろ上がったことがあります。 モデルが良くなると、細かい指示を重ねるより、削ったほうが良い結果になる場面があります。 zenn.dev 今回も、同じことが起きていたのかもしれません。 ただ、モデルの新旧や、同じスキルの長さ違いは比べていないので、確かめたわけではありません。 工程の多いスキルほど時間もかかり、スキルなしの 1.5〜2 倍かかった組もありました。 組ごとの時間と、費用の目安(3 回の値) 組 時間(分) 費用の目安($) スキルなし 11 / 12 / 11 1.35 / 1.58 / 1.38 frontend-design 13 / 12 / 12 1.66 / 1.47 / 1.50 UI UX Pro Max 14 / 10 / 13 1.77 / 1.38 / 1.85 taste-skill 15 / 15 / 22 1.90 / 2.09 / 3.11 Impeccable 26 / 15 / 15 3.36 / 2.13 / 2.00 Hallmark 24 / 27 / 19 2.23 / 3.76 / 2.79 費用の目安は、Claude Code が出す API の換算額です。サブスクで回したので、実際には払っていません。 比べ方の限界 題材は 1 つ(日本語のキャンペーン LP)だけです。ほかの業種や英語のページでは、順位が変わるかもしれません 見比べたのは私 1 人で、3 回ずつです 2・3 回目は、1 回目で UI UX Pro Max がどれか分かったあとに見ています。見た目で当たりが付いた可能性があります ブラウザで画面を見て直す手順を止めたので、それを強みにしているスキル(taste-skill・Hallmark・Impeccable)には不利な条件です モデルは Sonnet 5.5 だけです まとめ: UI のスキルは、入れる前にスキルなしと比べる 人気の UI スキル 5 つとスキルなしを、同じ条件で 3 回ずつ比べた 一番は 3 回とも UI UX Pro Max で、2・3 回目の次はスキルなしだった。taste-skill や Hallmark は、期待していたほどではなかった 一番差が出たのは、見た目より、この LP で何をさせるかの解釈だった。数量を選ばせる UI を足さなかったのは UI UX Pro Max だけ 大胆さを求めるスキルほど、日本語の EC の LP からは外れた。あまりプロンプティングしすぎないほうがいい、というのが今回の私の結論 UI のスキルを入れる前に、まずスキルなしで同じものを作らせて、比べてみるのがおすすめです。 次は、英語で海外の SaaS っぽいページを題材にして、順位が入れ替わるかを試してみたいです。 Trellis のこと Trellis は、福岡でホームページの制作と、AI による業務の自動化をしている会社です。 記事は Zenn と、Trellis のサイトのブログの両方に載せています。 trellis-grow.com
PageSpeed-like audit for MCP servers Coming from web development, PageSpeed Insights was always a lifesaver. So I wanted to have something similar for the MCP servers we’re building. There are a bunch of good tools out there, like MCP Inspector, Anthropic’s mcp-builder, and tool-design-checker. But I wanted to focus on how well an MCP server actually works with the LLM that calls it. So I built mcp-audit. It looks at protocol behavior, agent guidance, error recovery, context cost and safety. There’s overlap with existing tools, but this approach helped me optimize our own MCP, especially the guidance and how efficiently it works in real sessions. The limits in the report are somewhat arbitrary. For example, I’ve set the budget for the tool list at under 10k tokens. These numbers worked for me, but I’d love to hear what you think they should be. I’ve run it against all the MCPs we're been building and a bunch of popular ones. But I’d appreciate more reports to help shape it further. If you build an MCP, do me a favor and run it against yours. I’d be curious whether the report is at all valuable for you. Cheers!
𝐀𝐧𝐭𝐡𝐫𝐨𝐩𝐢𝐜 𝐎𝐩𝐞𝐧 𝐒𝐨𝐮𝐫𝐜𝐞𝐝 𝐓𝐡𝐞𝐢𝐫 𝐒𝐤𝐢𝐥𝐥𝐬 Anthropic put their Agent Skills in a public repo: anthropics/skills A skill is just a folder with a SKILL.md that tells Claude how to do one job well. Coding, planning, writing, design, research. Drop it into Claude Code and it picks it up. Pair it with the community collection (abubakarsiddik31/claude-skills-collection) and the standard at agentskills.io. The useful part for a marketing team: write a SKILL.md for how your brand writes ads, and every draft follows it. Your voice, codified once instead of re explained every session. Build your own skills before you buy another tool.
What Are Claude Skills? How to Create One for Your Business (and Skills vs MCP) This guide was first published on saurabhbhayana.com. Imagine you hire one assistant and, every Monday, you explain again how you like your client reports. Same format, same tone, same three sections. Every single week. Exhausting, right? Now imagine you could write it down once, hand it over, and never explain it again. That is what a Claude skill does. And here is the surprising part: Anthropic's own engineers gave a talk titled "Don't Build Agents, Build Skills Instead". Their point was that you don't need a new AI agent for every job. You need one good agent with the right know-how for each job. In this post we explain what Claude skills are, how they work under the hood, how to create one in a few minutes, where to find skills other people already built, how skills compare with MCP, and how to stay safe. It follows a good walkthrough on YouTube, linked at the end. The business example and the advice are ours. What are Claude skills? A Claude skill is a folder that teaches Claude how to do one specific job your way. At its simplest it holds a single file called SKILL.md. The top of that file has two lines that matter: a name and a description. Below them, you write the instructions in plain English. Think of your phone. The AI model is the processor. The agent, like Claude, is the operating system. Skills are the apps. You don't buy a new phone every time you want a new feature. You install an app, and suddenly the phone does something it couldn't do a minute ago. > You don't need more AI employees. You need one employee with a better toolbox. Anthropic launched skills in October 2025. In December 2025 it published them as an open standard called Agent Skills, so the same folder can work in other AI tools that support the standard, not only Claude. How do Claude skills work? A lot of people think Claude reads every installed skill on every message. Not really. That would fill its working memory, the context window, very quickly. Anthropic describes three levels instead: 1. At the start, Claude loads only the name and description of each installed skill. That is a line or two each. 2. When your request matches a description, Claude opens that skill's full SKILL.md and follows it. 3. If the skill links to extra files, like a template, a price list or a script, Claude reads or runs them only when the job needs them. Anthropic calls this progressive disclosure. In plain English: the toolbox stays closed until you need a tool. It also means you can install many skills without slowing Claude down. If you want the background on why the context window matters so much, our guide to prompt, context and harness engineering explains it. !How Claude skills load in three levels: level 1 only the name and description of every skill, level 2 the full SKILL.md when a request matches, level 3 extra files and scripts only when the job needs them The toolbox stays closed until you need a tool. So the description does the heavy lifting. It isn't for you. It is how Claude decides when to use the skill. A vague description means the skill never fires, or fires at the wrong time. SKILL.md file format (with a business example) Here is an example for a small business, a made-up dental practice: a skill that drafts replies to Google reviews in the owner's voice. --- name: review-reply description: Drafts replies to Google reviews for Bright Smile Dental in the owner's voice. Use when asked to reply to, answer or respond to a customer review. --- # Replying to reviews 1. Read the review and note the star rating and the main point. 2. Start with the reviewer's first name if it is shown. 3. 5 and 4 stars: thank them for one specific thing they mentioned. 4. 3 stars or lower: thank them, say sorry once, and invite them to call the office on (555) 010-0199. Never argue or share details about their treatment. 5. Keep it under 80 words. Sign off as "Dr. Maria, Bright Smile". 6. Never offer discounts or free treatment in a reply. 7. Show the draft. Do not post anything. A few rules from the Agent Skills specification: the name can be up to 64 characters, using only lowercase letters, numbers and hyphens. The description can be up to 1,024 characters and should say both what the skill does and when to use it. > Tip: Write the description the way a customer would ask for the job: "reply to a review", "answer this review". Those are the words Claude matches against. Want the review side of this done properly? Our guide to getting more Google reviews covers what you can and can't ask for under Google's rules. How to create Claude skills: 3 ways 1. Write it by hand Create a folder, add a SKILL.md with the name, description and steps, then upload it to Claude as a zip, or place it in Claude Code's skills folder. It is worth doing once, because it shows you exactly how skills work. After that, most people never write one by hand again. 2. Let Claude write it for you (our pick) Anthropic ships a skill-creator skill. You describe the job, and Claude asks you questions until it understands it: what goes in, what comes out, what to avoid, what good looks like. Then it writes the SKILL.md. In the video, the creator answered about a dozen questions out loud and got a working research skill in minutes. Our tip: paste in a real example of the job done well, like a past client report or a reply you were proud of. Claude learns more from one good example than from a page of rules. 3. Install one someone else built Before you build anything, check whether the skill already exists. That is often the fastest way, and the next section covers where to look. !Three ways to create a Claude skill: write the SKILL.md by hand to learn how it works, describe the job and let Claude's skill-creator write it, or install a ready-made skill after reading it for safety Way 2 is the everyday choice. Way 1 is for understanding. Way 3 saves the most time. Claude skills examples, library and GitHub There are two main places to find skills: - Anthropic's own skills. In Claude's settings you can browse and switch on ready-made skills, such as the ones that create Word, Excel, PowerPoint and PDF files. Anthropic's public skills repository on GitHub has examples you can read and copy, including the skill-creator. Anthropic says its example skills are available on paid Claude.ai plans. - The community. Because Agent Skills is an open standard, developers share skills on GitHub and on skill directories. Search GitHub for the job you need, like "invoice skill" or "SEO skill". Good first skills for a small business: replying to reviews, writing quotes from your price list, turning call notes into a follow-up email, formatting a weekly report, and writing social posts in your brand voice. If you are not sure which jobs to hand to AI at all, our list of tasks AI can automate in a small business is a good shortlist. Claude skills vs MCP This is the question people ask most. They solve different problems, and they work best together. | | Skill | MCP | | --- | --- | --- | | What it gives Claude | Know-how: how to do a job your way | Access: a connection to a tool or data source | | What it looks like | A folder with SKILL.md and optional files | A server that exposes tools Claude can call | | Example | "How we write a client report" | "Read data from Google Analytics" | | Who makes it | Anyone who can describe a job | Usually a developer | | Loaded when | Only when a request matches | Tools are available while connected | Put simply: MCP lets Claude reach your tools, and a skill tells Claude what to do with them. A monthly report skill might say "pull last month's traffic, compare it with the month before, write three bullet points in plain English", while an MCP connection does the pulling. Our guide to MCP vs APIs explains the connection side. Claude skills vs agents Before skills, the habit was to build a separate agent for each job: one for emails, one for content, one for outreach. Each needed its own setup, testing and fixing. The video's creator says he fell into exactly that trap for months. Anthropic's argument is that agents rarely lack intelligence. They lack expertise: the specific know-how of your business. A skill adds that expertise to the agent you already have. So instead of five half-trained agents, you keep one agent and give it five skills. If you want to know when you do need a real agent, our guide to AI agents for small business covers it. Are Claude skills safe? Mostly, if you are careful. But skills can include scripts that Claude runs, so a skill from a stranger is like software from a stranger. Anthropic's advice is to install skills only from sources you trust, and to audit anything else before you use it. - Read the SKILL.md and every file in the folder before installing. - Look closely at any scripts, and at what they install or download. - Be suspicious of instructions that send data to outside websites or servers. - Ask Claude to review the skill for anything risky before you switch it on. !Claude skills safety checklist: install only from trusted sources, read SKILL.md and every file, check scripts and downloads, watch for instructions that send data to outside servers Treat a third-party skill like any software from a stranger. Do you even need skills? Honest answer: not for one-off questions. If you ask Claude something once, a good prompt is enough. Skills pay off for jobs you repeat every week in the same way. A simple test: if you have explained the same job to Claude three times, it should be a skill. The bigger picture The first wave of business AI was about clever prompts. The next one is about writing your business's know-how down once, in a form AI can use. A folder of good skills is a training manual that never forgets and never needs a refresher. And because the format is an open standard, that manual isn't locked into one tool. So, which job have you explained to Claude three times already? That is your first skill. If you want help turning your team's processes into skills, tell us which jobs eat your week. Sources: the YouTube walkthrough that inspired this post, at youtube.com; Anthropic Engineering, "Equipping agents for the real world with Agent Skills", October 2025; the Agent Skills specification at agentskills.io; Anthropic's skills repository on GitHub. Takeaways - A Claude skill is a folder with a SKILL.md file: a name, a description of when to use it, and plain-English instructions for how to do the job. - Claude only reads the name and description of each skill until a request matches. Then it opens the full instructions. Anthropic calls this progressive disclosure, and it keeps the context window free. - Skills can also hold scripts, templates and reference files, which Claude reads or runs only when needed. - The easiest way to make one is to describe the job to Claude and let its skill-creator ask you questions and write the file. - Skills hold know-how. MCP holds connections to tools and data. Most useful setups use both. - Agent Skills became an open standard in December 2025, so one skill folder can work across Claude and other AI tools that support it. - Only install skills from sources you trust, and read any third-party skill before installing, because skills can run code. FAQs What are Claude skills? A Claude skill is a folder with a SKILL.md file that teaches Claude how to do one specific job your way. The file has a name, a description of when to use it, and plain-English instructions, and can include extra files such as templates or scripts. How do Claude skills work? Claude loads only each skill's name and description at first. When a request matches a description, it reads the full instructions, and it opens any extra files only when the job needs them. Anthropic calls this progressive disclosure. How do I create a Claude skill? The easiest way is to ask Claude to create one with its skill-creator: describe the job, answer its questions and save the result. You can also write the SKILL.md by hand or install a skill someone else built. What is the difference between Claude skills and MCP? A skill gives Claude know-how about how to do a job. MCP gives Claude a connection to a tool or data source. They work well together: MCP fetches the data and the skill says what to do with it. What goes in a SKILL.md file? A YAML header with a name (up to 64 characters, lowercase letters, numbers and hyphens) and a description (up to 1,024 characters) that says what the skill does and when to use it, followed by the instructions in plain language. Do Claude skills work in other AI tools? Agent Skills was published as an open standard in December 2025, so tools that support the standard can use the same skill folder. Check each tool's documentation for how it installs skills. Are Claude skills safe to install? Skills from trusted sources are generally fine. Because skills can include scripts, read every file of a third-party skill first, check what its scripts do and watch for instructions that send data to outside servers. --- Originally published at saurabhbhayana.com, where I write about AI automation, AI search and Local SEO for small businesses.
Pi×ollama導入メモ Piを導入したメモ 前提 個人の備忘録です。 環境 推論エンジンはollamaを使っています。(色々モデル使いたいので) インストール pi.dev curl -fsSL https://pi.dev/install.sh | sh 基本的にY モデルの登録 pi.dev root/.pi/agentとかのフォルダが作成される。 多分DLした時にもログで流れると思うが agent配下にmodels.jsonを作成する。 内容は下記のような感じ { "$schema": "https://pi.dev/schemas/models.schema.json", "providers": { "ollama": { "baseUrl": "http://host.docker.internal:11434/v1", "api": "openai-completions", "apiKey": "ollama", "models": [ { "id": "huggingface.co/llm-jp/llm-jp-4.1-32b-a3b-thinking-gguf:latest" }, { "id": "lfm3:1.7b" }, { "id": "bonsai-2:27b" }, { "id": "hf.co/InternScience/Agents-A1-Q4_K_M-GGUF:latest" } ] } } } あとはpiで起動する感じ skills作成 github.com/anthropics/skills/tree/main これをクローンして使う pjフォルダに入れてから、シンボリックリンクを作って所定の場所におく pi.dev ls -la .agent total 12 drwxr-xr-x 3 root root 4096 Nov 2 08:19 . drwxrwxr-x 5 1000 1000 4096 Nov 2 08:19 .. drwxr-xr-x 7 root root 4096 Nov 2 08:14 skills ls -la .agent/skills total 28 drwxr-xr-x 7 root root 4096 Nov 2 08:14 . drwxr-xr-x 3 root root 4096 Nov 2 08:19 .. drwxrwxr-x 7 1000 1000 4096 Nov 2 08:06 skill-creator drwxr-xr-x 2 root root 4096 Nov 2 08:12 コードレビュー drwxr-xr-x 2 root root 4096 Nov 2 08:13 コード作成 drwxr-xr-x 2 root root 4096 Nov 2 08:12 原因調査 drwxr-xr-x 2 root root 4096 Nov 2 08:14 日本語で分かりやすく解答 mkdir -p ~/.agents ln -s /app/.agent/skills ~/.agents/skills そしたらskillコマンドが出てくる 終わり 思ったよりpiいいかも カスタマイズの自由度が高いから面白い 今入れている感じだとbonsai-2かAgents-A1あたりが動いてくれそうかな~ llm-jpも動くけど、感覚としてはまだかな
And a little research turns out that anthropic itself makes available a *react* based artifact builder so you don't end up with SLOP from the get go. You could probably modify the template to work with your framework of choice. github.com/anthropics/skills/blob/main/skills/web…
🚨 Anthropic has a PUBLIC GitHub repo of 12+ Claude Skills for Opus 5.5 Skills for frontend design, creating agentic skills, coding & more. 100% free. 👉 github.com/anthropics/skills/tree/main/skills t.co
Multi-agent work in three spoonfuls (part IV): from a terminal trident to an autopoietic loop --- title: "Multi-agent work in three spoonfuls (part IV): from a terminal trident to an autopoietic loop" published: true description: "Fourth entry in the penta-agent multi-agent series: quota-governed routing, 70 ms hybrid memory, MCP tools, and a zero-token local autopoiesis loop in Harness2." tags: "ai, agents, cli, automation" canonical_url: "3cucharadas.cl" cover_image: "3cucharadas.cl" ai_disclosure_level: "some_ai" --- After benchmarking the models in part I, auditing retrieval in part II, and tracing provenance in part III of this series, I closed my laptop with a sense of victory: I had a trident of agents running from the terminal on Arch Linux. With a couple of zsh aliases, I could invoke Claude Code for architectural reasoning, hand off a task to Codex CLI to edit code, or ask Gemini CLI and Antigravity for a quick second opinion. On paper, orchestration looked solved. Yet after using that setup every day on real projects inside penta-agent, I hit a silent wall: having three agents talking does not equal having a system that learns. Every time I opened a fresh session, the trident suffered from partial amnesia, repeated commands that had already failed the previous week, burned the quota of the most expensive provider on routine tasks, or marked tests as "verified" when they had never had a chance to fail. To understand what was missing, it helped to change the question. In a recent systems-theory analysis of artificial intelligence, Benedikt Zönnchen, Mariya Dzhimova, and Gudrun Socher (2025[^zonnchen2025], 2–4) propose setting aside whether a language model "thinks like a human" and asking instead the question posed by Humberto Maturana and Francisco Varela (1987[^maturana1987] [1984]) and extended by Niklas Luhmann (1998[^luhmann1998], 60–69): can the system draw its own boundary with the environment, observe its own failures, and sustain itself through its own operations? In other words, moving from the vague notion of "intelligence" to the concrete mechanism of autopoiesis. As Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 8–10) show, an isolated language model in a chat window neither is nor can be an autopoietic, sense-making system: it lacks what George Spencer-Brown (1969[^spencerbrown1969]) called re-entry—the capacity to re-introduce the distinction between system and environment (self-reference vs. other-reference) inside its own operations—because it only computes which token is statistically plausible after another, without internal resistance against error. If I want a system that improves without degrading, I have to build a socio-technical harness around the models that couples the probabilistic flexibility of neural networks with the strict coupling and binary code (works / does not work, work / fail) of deterministic technology described by Luhmann (1998[^luhmann1998], 517–525) and André Reichel (2011[^reichel2011], 105–118). The starting point: what I measured and discarded before making this leap Before diving into the three spoonfuls of this fourth installment, here is the experiment that forced me to adopt that discipline. When I tried to give the system long-term memory, the obvious temptation was to install the most elaborate architecture available: temporal graphs, heavy extractors, or an 8B-parameter neural judge running on CPU. Instead of following intuition, I built a reproducible benchmark over my real work logs—comparing open alternatives such as GraphRAG, Graphiti, Hindsight, Letta, Mem0, and deja-vu—and set a falsification contract upfront: any candidate exceeding 0.10 s in p95 latency or failing to improve recall by at least 10% would be discarded. | What I tested in the laboratory | Measured result | Operational decision | |---|---|---| | Hybrid memory (v3.1) (FTS5 lexical index + semantic neighbors in Qdrant with Qwen3-Embedding-0.6B) | Latency p95 = 0.07 s (< 0.10 s), 96% overall recall, rescuing 1 in 3 zero-lexical-overlap queries | Promoted to production as the engine behind experience-memory and recall-context | | In-memory relational graph (v3.2) for multi-hop entity expansion | Exact tie in accuracy with v3.1, but nearly double the latency (p95 = 0.13 s > 0.10 s) | Frozen in the lab; the extra complexity did not earn its keep | | CPU neural judges (4B and 8B) for live answer auditing | Between 69 s and 197 s per verdict, hitting 180 s timeouts in 2 of 3 runs | Discarded from the critical path; pruned 36.3 GiB from disk | | Deterministic checks + bounded 0.6B judge for local validation | Millisecond latency, 0 remote calls, and 100% reproducibility | Adopted as the standard for control gates and evaluation | Table 1. Summary of the prior local memory and evaluation laboratory in penta-agent: what survived the 0.10 s threshold and why I pruned 36.3 GiB of local models that added no operational value. With that foundation in place, I organized this fourth part into three progressive spoonfuls: in the first, I show how I moved from launching standalone agents by hand to governing them with quota budgets, auditable bridges, and a live board in kitty and tmux; in the second, how the nervous system of hybrid memory, MCP tools, and skills works under the hood; and in the third, how I closed the local autopoiesis loop with Harness2 and where both my metrics and systems theory draw the boundary today. --- Spoonful 1: From invoking agents by hand to governing agents and models In plain terms: when I first wired the three agents together, I acted like a traffic officer waving my arms in the middle of an intersection. If I wanted Codex CLI to review a patch written by Claude Code, I copied file paths, opened another tab, and hoped for the best. That works for a five-minute demo, but it falls apart when a task runs for two hours and touches twenty files. Quota-aware routing and security boundaries My first deductive inference came from a hard constraint: model subscriptions and APIs have usage limits, different context windows, and credential boundaries that must never blur. By definition, if I delegate a heavy task to an agent whose quota is at 98%, the session will die mid-flight and leave the repository in an inconsistent state. So I replaced intuitive provider selection with an explicit policy in routing.yaml and a pre-flight sentinel (quota_status.sh, governed by the quota-guard skill). Before launching any expensive job, the system reads cached pressure across every lane without spending tokens: - 🔍 Claude Code (Opus / Sonnet): handles architectural design, delicate editing, and long-horizon synthesis when its quota is clear (exit 0). - 🛠️ Codex CLI (gpt-5.4): steps in as an implementation peer, deep refactoring engine, session rescuer (codex-rescue), and cross-validator. - 🌐 Gemini CLI and Antigravity (gemini-3-pro / flash): in a direct session (penta-agy) it acts as the primary integrator; when invoked from outside via agy-bridge, it runs inside a strict sandbox over sanitized public context as an explorer, reviewer, or validator, never inheriting private keys or .env files. Instead of calling a raw binary and depending on whatever it prints to stdout, every cross-agent handoff goes through agy-bridge. The bridge requires declaring who is calling (--caller), in what mode (plan, review, patch, test, or explain), and with what time limit (--timeout), leaving an immutable receipt in .agents/runs/<run_id>/ with request.md, result.md, status.json, and diff.patch. The live board (plan-board) and decision gates My second inference was inductive: reviewing dozens of past sessions showed that the biggest waste of time happened at two extremes. Either an agent interrupted me every two minutes to ask permission for trivial, reversible steps, or it silently made a delicate architectural choice and I only discovered at the end that it had gone down the wrong path. To eliminate both extremes without filling this post with abstract flowcharts, here is how my actual kitty terminal—or minimalist Wayland alternatives like foot on Codeberg—looks today when split into two panes with tmux during a live task:  Watch the full video demo on 3cucharadas.cl. <strong>Figure 1.</strong> Daily workflow in my <a href="kovidgoyal/kitty"><code>kitty</code></a> + <a href="tmux/tmux"><code>tmux</code></a> terminal with the <a href="starship/starship"><code>Starship</code></a> prompt: the top pane runs multi-agent delegation via <code>agy-bridge</code>, the <code>decision-gate</code> brake, and <code>pytest</code>; the bottom pane (<code>watch.mjs</code>) updates each step live (<code>[ ]</code> → <code>[~]</code> → <code>[!]</code> → <code>[x]</code>), along with binding decisions and drift. What appears in the bottom pane of Figure 1 is the contract that changed how I work: 1. Local autonomy with visual traceability (plan-board): every reversible, in-scope step proceeds without asking permission, but must be reflected in real time in the bottom table. And no item can be closed as verified ([x]) unless the agent attaches the concrete test, command, or observation reference that backs it. 2. Decision gate (decision-gate): when an irreversible or architectural fork appears (state [!]), the agent halts only that branch and presents the question with the recommended option first, marked (Recommended) and justified with deductive, inductive, and abductive evidence. 3. A gate that has never been seen red is not a gate (gates-falsables): before accepting any new verifier, I require running it against a synthetic failure (--fixture) and proving that it returns a non-zero exit code (exit 1). If a check passes even when I break its input on purpose, it is not a safety net—it is compliance theater. --- Spoonful 2: The nervous system — hybrid memory, skills, and MCP tools If the first spoonful orders who does what and under which rules, the second solves how the system remembers what it has already learned and how it picks the exact tool without bloating the context window. Here the diagnosis by Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 6–7, 9) is decisive again: a neural network maintains a loose coupling with human communication that behaves like a "contingent index-card system (Zettelkasten)" (pp. 7, 9) of semantic associations in vector space, giving rise to what Elena Esposito (2017[^esposito2017], 249–265; 2022[^esposito2022]) calls "virtual double contingency" and "artificial communication." That flexibility lets it connect ideas phrased in very different words, but also makes its outputs inherently probabilistic and devoid of autonomous decision-making. If I want reliable memory and precise execution, I have to couple that vector Zettelkasten with exact indices and deterministic scripts. Experience memory (experience-memory): the hybrid Zettelkasten in 0.07 s When I first started keeping logs, my memory was essentially a folder of Markdown files that I read or searched with ripgrep. The obvious problem is that if a month ago I solved a cold-boot screen freeze under the title "Webview failure on autostart" and today I search for "Panel fails to load at login", a purely lexical search can miss it entirely, whereas a purely vector search can bury the exact name of a script like verify_boot_contract.sh. The solution I validated in Table 1 combines both worlds behind the experience-memory MCP server and the recall-context skill: - Exact lexical lane (SQLite FTS5): instantly catches flag names, error codes, file paths, and invariants (INV-005). - Dense semantic lane (Qdrant + Qwen3-Embedding-0.6B): indexes architectural decisions, handoffs, and operational lessons (penta_context_v2) to retrieve conceptual neighbors even when they share zero keywords. Before designing any non-trivial strategy, the agent queries recall_experience in 70 milliseconds (p95 = 0.07 s). That is how it discovers which command worked previously, which hypothesis was already refuted, and which environment trap to avoid (for instance, knowing that in my shell cp, mv, and rm are aliased to interactive -i, which hangs a headless process unless invoked via command mv -f). Skills as living procedures and proactive MCP selection To avoid saturating the initial prompt with thousands of lines of instructions, I adopted the modular pattern of Anthropic Skills enriched with local contracts. In penta-agent, each skill is a self-contained package with four parts: a concise contract in SKILL.md defining when to activate and when not to use it; on-demand deep documentation in references/ (such as the editorial corpus extracted with Docling or diagramming rules with D2); deterministic executables in scripts/ (such as typed pipelines in Nushell, visual automation with Playwright, or forge integration via glab on GitLab); and a telemetry trail. Similarly, the fleet of MCP servers (plan-board, experience-memory, ideas-rag, paper-search, bibliography-apa, PLAYWRIGHT_LOCAL) is cataloged in specs/mcp-capabilities.json. When a task arrives, triage evaluates which capabilities provide real evidence and records both hits and justified abstentions. And when I found that two older servers (quota status and remote SSH infrastructure) were faster, clearer, and easier to audit as direct scripts (quota_status.sh and remote_exec.sh), I decommissioned them as MCP servers and turned them into lightweight skills. Fewer resident daemons mean a smaller failure surface. --- Spoonful 3: The autopoiesis loop (Harness2) — how the system rehearses its own improvements Here I reach the core of this fourth installment. Having capable agents (Spoonful 1) and fast hybrid memory with skills (Spoonful 2) still leaves a critical question open: what happens when a delegation route ages, a skill starts inducing errors, or a memory tweak degrades accuracy on edge cases? If I rely solely on noticing by eye weeks later, the system degrades through silent drift. Why a standalone LLM lacks re-entry and internal resistance In their study on autopoiesis and artificial intelligence, Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 8–9) explain with surgical precision why asking a model to "reflect on its own errors" via chain-of-thought (CoT) is not enough. When a model generates intermediate tokens like "Is this step correct?", it exhibits only rudimentary processual self-referentiality (p. 8)—producing the most statistically plausible continuation inside its training distribution—while lacking reflective self-reference and genuine re-entry (Spencer-Brown 1969[^spencerbrown1969]). If a model takes itself as its sole reference without external contrast, it quickly falls into infinite recursion or collapse; if it depends entirely on a human retraining its weights from outside (RLHF or delayed fine-tuning), it remains an allopoietic artifact determined from the outside (Zönnchen, Dzhimova, and Socher 2025[^zonnchen2025], 4, 8–9). To escape that trap, Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 7) recover a decisive formulation from Niklas Luhmann (1995[^luhmann1995]) on how operational constructivism relocates Kant's "resistance of reality" inside a system: > "I think we should not abandon [Kant's] idea of resistance, but we should relocate it into the system. It is the result of resolving an internal conflict—the result of the system's operations resisting the operations of the same system" (Luhmann 1995[^luhmann1995], quoted in Zönnchen, Dzhimova, and Socher 2025[^zonnchen2025], 7). That sentence describes, piece by piece, what I built in penta-agent by adapting and integrating the proactive loop of Harness² proposed by Ruiyao Xu, Yanfei Chen, Zhongying CuiZhu, et al. (2026[^xu2026]): making the system's own deterministic verification operations resist and filter change proposals generated from its own operational friction. <details markdown="1"> <summary><strong>In plain terms (ELI5): what is Google's original Harness² and how did I adapt it to my machine?</strong></summary> Imagine your AI agents are very creative chefs, but the recipe book they follow (their rules, memory, and tools) sometimes has confusing steps that make them burn the rice. The original Harness² from Google Research (Xu et al. 2026) proposes a clever loop called Propose–Probe–Compose: instead of swapping out the chef's brain, it puts several assistants to work rewriting the recipe book, asks them to cook test dishes in the cloud, and keeps the winning recipe. For my daily workflow, the factory setup had two catches: it is designed to burn hundreds of paid cloud model calls (Vertex AI), and when driving CLI agents it unbuckles their seatbelt (--dangerously-bypass-approvals-and-sandbox) with open internet access. To adapt it to penta-agent without spending an extra cent or opening security holes, I took its recursive search engine (commit 1cfe254e) and locked it inside a "test kitchen" completely unplugged from the internet (unshare -Urn), with a disposable home folder and zero access to my API keys or model CLIs (model_calls = 0). Instead of running cloud benchmarks, my wrapper (penta-harness2 and local-cycle) feeds that test kitchen with the real stumbles my agents suffered during the week (CSI), requires any recipe tweak to first fail the test when broken (red) and then pass every historical case without breaking anything else (green), and finally stages the winning recipe across all three agents (Claude, Codex, and Gemini/Antigravity) with a one-step undo button (rollback-local) in case I do not approve it. </details> <figure class="d2-responsive" style="width: 100%;"> <img src="3cucharadas.cl" width="1001" height="954" style="width: 100%; height: auto; display: block; border-radius: 12px;" alt="Diagram of the closed local autopoiesis loop in Penta Agent with Harness2: CSI friction signals feed the case generator and the local cycle across routing, memory, and skills; a deterministic judge evaluates against holdout cases with zero model calls, discarding regressions and keeping only verified improvements for human promotion."> <figcaption><strong>Figure 2.</strong> Governed autopoiesis loop in <code>penta-agent</code> + <code>Harness2</code>: relocating internal resistance (Luhmann 1995; Zönnchen, Dzhimova, and Socher 2025) through <code>holdout</code> evaluation with <code>model_calls = 0</code> prior to any human promotion.</figcaption> </figure> How the closed loop operates across my three domains (routing, memory, skills) As Figure 2 shows (adapting into a three-column horizontal layout on desktop and a vertical flow on mobile), the loop operates in four strict stages: 1. Observing real friction (CSI — Continuous Self-Improvement): while I use the system, a collector logs objective friction signals: a task that had to switch agents after a timeout, an experience-memory query that returned too few useful neighbors, or a skill where the user had to correct a command. 2. Bridging evidence into reproducible cases (--from-csi latest): the local_cycle.py module takes that friction report and automatically translates it into a test specification (CaseSpec) inside an isolated environment, without touching my active configuration. 3. Internal resistance without spending tokens (eval_harness with model_calls = 0): the harness runs the full suite (--profile autopoiesis-all, currently covering 9/9 baseline cases across routing, memory, and skills), enforcing two hard conditions: every control case (holdout) must pass (holdout_passed = true), and external API calls must equal zero (model_calls = 0). 4. Auditable decision (KEEP vs. DISCARD) and human promotion: if a candidate degrades even a single holdout case or fails to beat the baseline, the deterministic judge discards it (DISCARD). Only when it improves the score with zero regressions does it receive a KEEP verdict and leave a signed receipt for me to review before promoting it to the main repository. So this does not remain a theoretical promise, the next mini-video shows penta-harness2-shadow local-cycle --profile autopoiesis-all running in my kitty + tmux terminal, including what happens when I inject a regressive candidate (--fixture) alongside a healthy improvement:  Watch the full video demo on 3cucharadas.cl. <strong>Figure 3.</strong> Execution in my <a href="kovidgoyal/kitty"><code>kitty</code></a> + <a href="tmux/tmux"><code>tmux</code></a> terminal of the local autopoiesis loop (<code>local-cycle --profile autopoiesis-all</code>): it evaluates all <code>9/9</code> cases in <code>routing</code>, <code>memory</code>, and <code>skills</code> with <code>model_calls = 0</code>, applies internal resistance to reject the regressor (<code>DISCARD</code>), and preserves the verified improvement (<code>KEEP +0.250</code>) with all <code>82</code> harness tests green. --- Closing: what my architecture achieves today and where its limits lie Looking back at the path from part I, part II, and part III, the main difference is no longer which model writes the prettiest reply to an isolated prompt, but the structure that holds the whole system together when I am not watching every line. Following the rigorous distinction drawn by Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 5, 9–10) and by Elena Esposito (2017[^esposito2017]; 2022[^esposito2022]; 2024[^esposito2024]), it would be an epistemic mistake to claim that a language model or a bundle of scripts has on its own achieved the biological autopoiesis of a living cell (Maturana and Varela 1987[^maturana1987] [1984]) or the reflective sense-making (Sinn) of human consciousness (Luhmann 1998[^luhmann1998], 50–69). As Zönnchen, Dzhimova, and Socher (2025[^zonnchen2025], 5, 10) caution when critiquing merely metaphorical invocations of technological autopoiesis, language models remain statistical engines that compute distributions without mental states of their own. Yet—and this is my engineering synthesis for the socio-technical system as a whole—when I couple their capacity for contingent variation with verified hybrid memory, strict delegation contracts, a binary internal-resistance harness (work / fail; Reichel 2011[^reichel2011]) that filters its own proposals before touching production, and deliberative human oversight, I obtain in practice a loop of governed operational autopoiesis. To close with full transparency, Table 2 summarizes what is running and measured on my machine today, where the next step points, and under what objective condition I would discard each component if it stopped earning its keep: | System pillar | What it achieves today (verified in production) | What it aims to achieve next & falsification condition | |---|---|---| | 1. Agent and model routing (routing.yaml, quota-guard, agy-bridge) | Routes tasks across Claude Code, Codex CLI, and Gemini CLI / Antigravity based on cached quota pressure; isolates handoffs in .agents/runs/ under a strict sandbox and displays live progress in plan-board (Figure 1). | Goal: reweight routing priorities from historical domain success rates.<br>Discard if: the bridge introduces spurious failures or bureaucratic latency exceeding quota savings. | | 2. Hybrid memory (experience-memory, Qdrant + FTS5) | Resolves lexical and semantic queries in p95 = 0.07 s (< 0.10 s), rescues 33% of zero-keyword-overlap pairs, and saves 36.3 GiB after pruning slow CPU judges (Table 1). | Goal: add automatic decay for obsolete lessons when a contract changes.<br>Discard if: p95 latency exceeds 0.10 s or semantic noise degrades top-3 precision. | | 3. Skills and MCP governance (mcp-fleet, gates-falsables) | Maintains declarative parity across agents (24/24 checks green), measures MCP usage and abstention, and requires every new gate to fail first against a red canary (--fixture -> exit 1). | Goal: semi-automatic pruning of skills that accumulate repeated friction in CSI telemetry.<br>Discard if: maintaining a skill's contract takes longer than running the direct command. | | 4. Local autopoiesis (Harness2) (local-cycle, eval_harness) | Converts real CSI friction into reproducible Cases and evaluates candidates across routing, memory, and skills (9/9 cases, 82/82 tests) with model_calls = 0, applying internal resistance (KEEP / DISCARD, Figures 2 and 3). | Goal: expand the bank of real cases extracted from failed sessions without losing millisecond evaluation.<br>Hard boundary (INV-004): blind auto-merge is forbidden; final promotion to production always requires human review. | Table 2. Balance between verified production results in penta-agent today, the design horizon, and the falsification thresholds that keep the system under human control. If building this fourth stage made one thing clear to me, it is that the maturity of a multi-agent system is not measured by how many new pieces I bolt onto it each week, but by how much unnecessary complexity I can prune and how many of its own mistakes the system can catch before asking for my help. --- References [^esposito2017]: Esposito, Elena. 2017. "Artificial Communication? The Production of Contingency by Algorithms." Zeitschrift für Soziologie 46 (4): 249–265. Scholar [^esposito2022]: Esposito, Elena. 2022. Artificial Communication: How Algorithms Produce Social Intelligence. Cambridge, MA: The MIT Press. Scholar [^esposito2024]: Esposito, Elena. 2024. Kommunikation mit unverständlichen Maschinen. Salzburg and Vienna: Residenz Verlag. Review of Kommunikation mit unverständlichen Maschinen by Eric Van der Beek in merz | medien + erziehung: DOI · Scholar [^luhmann1995]: Luhmann, Niklas. 1995. "Systems Theory and Postmodernism." University lecture, London. Quoted in Zönnchen, Dzhimova, and Socher, From Intelligence to Autopoiesis (2025, 7): DOI · Scholar [^luhmann1998]: Luhmann, Niklas. 1998. Die Gesellschaft der Gesellschaft. Frankfurt am Main: Suhrkamp Verlag. <search.worldcat.org>. [^maturana1987]: Maturana, Humberto R., and Francisco J. Varela. 1987 [1984]. El árbol del conocimiento: las bases biológicas del entendimiento humano. Santiago de Chile: Editorial Universitaria. 1st Chilean ed. 1984; 1987 international ed. cited in Zönnchen, Dzhimova, and Socher, From Intelligence to Autopoiesis (2025, 3): DOI · Scholar [^reichel2011]: Reichel, André. 2011. "Technology as System: Towards an Autopoietic Theory of Technology." International Journal of Innovation and Sustainable Development 5 (2–3): 105–118. Scholar [^spencerbrown1969]: Spencer-Brown, George. 1969. Laws of Form. London: Allen & Unwin. <archive.org>. [^xu2026]: Xu, Ruiyao, Yanfei Chen, Zhongying CuiZhu, Bhavana Dalvi Mishra, Yifei Ming, Han Yu, Rujun Han, Chen-Yu Lee, and Tomas Pfister. 2026. "Harness²: Recursive Agent Harnessing for an Open World." arXiv preprint arXiv:2610.14224 (open source at <google-research/harness2>). arXiv · Scholar [^zonnchen2025]: Zönnchen, Benedikt, Mariya Dzhimova, and Gudrun Socher. 2025. "From Intelligence to Autopoiesis: Rethinking Artificial Intelligence through Systems Theory." Frontiers in Communication 10:1585321. DOI · Scholar
التثبيت: npx skills add anthropics/skills --skill frontend-design ثم اكتب وصف موقعك واختر الطابع البصري الذي تريده!
Stop Claude Code from building the same generic landing page Ask Claude for a landing page and you tend to get the same thing: a warm cream background, a terracotta accent, identical rounded cards with soft shadows and an all-caps eyebrow above every heading. The frontend-design skill in Anthropic's example skills repo exists to break that habit. Below is the route with the real commands. The short version is on the Deduped use-case page. What the skill does Skills are folders of instructions, scripts and resources that Claude loads when a task calls for them. frontend-design makes Claude commit to a bold aesthetic direction and a reviewed design plan before it writes any UI code. It even lists the generic defaults to avoid. Install In Claude Code, register the repo as a plugin marketplace: /plugin marketplace add anthropics/skills Then install the example skills, which include frontend-design: /plugin install example-skills@anthropic-agent-skills Give it a real brief Tell Claude the real subject, the audience and the primary job of the page. If the brief leaves the subject out, the skill has Claude propose one and confirm it with you, so you will not get lorem ipsum branding. Ask for the plan first Before any code, ask for a design plan: - 4 to 6 named hex colors - the typefaces and their roles - a layout concept with ASCII wireframes - the principles that make this page unique Review the plan Have Claude check the plan against your brief and rewrite any part that reads like a generic default, saying what changed and why. This one step is where most of the improvement comes from, because it is cheap to change a plan and expensive to change a finished page. Check the quality floor The result should be responsive down to mobile, show visible keyboard focus and respect reduced motion. Test each of those yourself before shipping. A prompt you can paste Use the frontend-design skill from anthropics/skills to design a landing page for my product. Before writing any code, give me a design plan: 4 to 6 named hex colors, the typefaces and their roles, a layout concept with an ASCII wireframe, and the principles. Review the plan against my brief, revise anything that reads like a generic default and tell me what you changed. Spend the boldness in one place, and keep it responsive down to mobile with visible keyboard focus and reduced motion respected. Who it is for A developer or founder who keeps getting the same templated look from generated UI. Tip Spend the boldness in one place. A page with one memorable element and a calm everything else usually beats a page where every section shouts. For another Claude Code design option, see the Taste Skill walkthrough. Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: dedupedai.com --- Get one email every Monday with the week's hottest AI repos and exactly how to use them: subscribe free at dedupedai.com