Четириесет часа за да се изгради МЦП сервер кој служеше повици за преглед на кодот, еден колега фрли датотека за означување во Десет минути против четириесет часа, истиот исход. .claude/skills/ Тоа искуство ме научи на нешто што ниту една документација не го објаснува доволно јасно.Клод Код има три различни механизми за проширување, и тие имаат нула преклопување откако ќе разберете што всушност прави секој од нив. Зад овие три механизми се открива намерна архитектонска филозофија која вреди да се разбере пред да напишете една линија на конфигурација. Дизајн одлуки Архитектурата зад трите механизми Секое продолжување на Клод Код спаѓа во една од трите категории. Тие постојат како посебни механизми, бидејќи тие работат на фундаментално различни слоеви на системот. Ова не е случајно. Одговор: "Како Клод пристапува до системите надвор од границата на процесот?" Тие се одделни програми кои комуницираат со Клод преку JSON-RPC. Протоколот за модел контекст го дефинира форматот на жица (возила за алатки, читања на ресурси, шаблони за повици), но самиот сервер е само програма која зборува за JSON преку студио или HTTP. Тој ги одржува своите врски, својата состојба, својот животен циклус. Клод испраќа барање, серверот ја врши работата и враќа одговор. Реална меѓупроцесна комуникација со сите импликации што ги носи. MCP servers Одговор: "Како го користите Claude со различно однесување за различни задачи?" Под-агент е изолирана Claude сесија со сопствен системски повик, сопствен избор на модел, сопствен пристап до алатки и критички сопствен контекст прозорец. Кога повикувате под-агент, тој започнува свеж. Нема акумулиран контекст од претходниот разговор. Нема пристап до алатки надвор од она што експлицитно го дадовте. Изолацијата е функцијата. Subagents Одговор: "Како можете да инјектирате знаење за повторна употреба во разговор?" Вештина е датотека за означување која станува команда за намалување. Кога се повикува, нејзината содржина се инјектира директно во тековниот разговор како инструкции. Нема нов процес. Нема изолација. Нема посебен контекст. Само текст кој го обликува однесувањето на Клод во рамките на постоечката сесија. Skills Како MCP серверите всушност работат под капа Model Context Protocol е JSON-RPC 2.0 протокол. Кога Claude Code започнува, тој го лансира секој конфигуриран MCP сервер како дете процес и воспоставува двонасочен комуникациски канал преку студио. Кога Клод одлучува да користи алатка за MCP, секвенцата е: Claude генерира повик за алатка со име и JSON аргументи Claude Code го испраќа ова како JSON-RPC барање до соодветниот процес на серверот Серверот ја извршува барањето (пребарува база на податоци, повикува API, чита датотечен систем) Серверот го враќа резултатот како одговор JSON-RPC Клод Код го враќа одговорот во контекстот на Клод Ова е вистинска меѓупроцесна комуникација. Серверот може да се напише на кој било јазик. Може да одржува упорни врски со бази на податоци, да ги кешира резултатите, да имплементира ограничување на стапката, да ги спроведува контролите за пристап. Тоа е вистинска програма со реална состојба. { "mcpServers": { "analytics": { "command": "node", "args": ["./mcp-servers/analytics.js"], "env": { "DATABASE_URL": "postgresql://localhost/analytics", "MAX_ROWS": "1000", "QUERY_TIMEOUT_MS": "5000" } }, "deploy": { "command": "./mcp-servers/deploy-server", "args": ["--environment", "staging", "--read-only"], "env": { "API_TOKEN": "${DEPLOY_TOKEN}" } } } } на и Променливите на животната средина погоре не се карактеристики на протоколот MCP. Тие се безбедносни граници на ниво на апликација што аналитичкиот сервер ги спроведува внатрешно. Ова е важна архитектонска точка: протоколот MCP се занимава со комуникација, но вашиот сервер се занимава со политика. Ако Клод побара за секој ред во табела од десет милиони редови, протоколот со задоволство ќе го пренесе тоа барање. MAX_ROWS QUERY_TIMEOUT_MS За интеграции кои се критични за перформансите, каде што серверот обработува илјадници барања или одржува базени за поврзување, Rust вреди да се инвестира. опфаќа целиот процес од ракувањето со протоколот до распоредувањето на производството, вклучувајќи спојување на врските и грациозно исклучување. Водич за изградба на MCP сервери во Rust Оддалечените MCP сервери преку HTTP со SSE го следат истиот протокол, но го заменуваат студиото со HTTP транспорт. Ова е важно за споделена тимска инфраструктура каде што една единствена инстанца на MCP сервер им служи на повеќе програмери, но додава латентност на мрежата и бара аутентификација. Како суб-агентите работат под капа Субагентите не се посебна технологија. Тие се сесии на Клод Код со ограничени параметри. Кога повикувате под-агент, Клод Код започнува нов разговор со моделот назначен во конфигурацијата на агентот. Системскиот повик доаѓа од телото за означување на датотеката на агентот. Листата на алатки се филтрира само на она што го дозволува конфигурацијата на агентот. И критично, прозорецот за контекст е празен, освен за системскиот повик и задачата што ја дадовте на под-агентот. Оваа изолација има длабоки импликации и за трошоците и за квалитетот. Размислете за сесија за дебугирање каде што истражувате база на кодови дваесет минути. Вашиот главен контекст прозорец содржи десетици читања на датотеки, резултати за грабеж, стак траги и разговори. Ако сега побарате преглед на кодот во истата сесија, прегледот се случува во контекст на сето тоа бучава за дебугирање. Моделот мора да работи низ акумулираниот контекст за да се фокусира на задачата за преглед. Под-агентот започнува чист. Неговиот контекст содржи само системскиот повик (вашите критериуми за преглед) и датотеките што сте ги побарале да ги прегледате. Нема бучава. Нема акумулирана состојба. отколку главните сесии, бидејќи моделот е целосно фокусиран на задачата. Подобро --- name: code-reviewer description: Reviews code for quality, security, and style model: haiku tools: Read, Grep, Glob, Bash disallowedTools: Write, Edit mcpServers: - github maxTurns: 15 --- You are a code review specialist. You have read-only access to the codebase and the GitHub API. Review criteria: - No unwrap() in production code paths (use proper error handling) - All public functions have doc comments - Error types implement std::fmt::Display - No println! in library code (use tracing macros) - Integration tests exist for new API endpoints - No TODO without a linked issue number For each file, provide a pass/fail checklist and specific line references for any failures. Do not provide general advice — only specific findings. на Директивата го насочува овој под-агент до најевтиниот модел. За работа со усогласување на моделите како што се проверка на стилот и спроведување на конвенциите, Хаику функционира споредливо со Opus. model: haiku на Директивата создава тврда граница. Дури и ако системскиот повик рече „поправете ги сите проблеми што ги наоѓате“, под-агентот не може да ги модифицира датотеките. Ова се спроведува на слојот за пристап на алатките, а не на слојот за повик. Тоа е вистинска безбедносна граница. disallowedTools: Write, Edit на спречува сесии на суб-агенти кои ќе избегаат. Без ова, суб-агент кој анализира голема база на кодови може да итерира за педесет вртења, акумулирајќи трошоци. maxTurns: 15 Математиката на вистинските трошоци на моделот на рутирање Ова е местото каде суб-агентите плаќаат за себе, а потоа за некои. Размислете за тим од пет програмери, секој со околу десет прегледи на код дневно преку Claude Code. Без под-агенти, секој преглед работи во главната сесија на Opus. Со акумулација на контекст од друга работа, типичниот преглед може да потроши 15.000-25.000 влезни токени и да генерира 2.000-4.000 излезни токени. На цените на Opus, тоа не е тривијално во текот на педесет прегледи на ден. Со под-агент на Хаику, истиот преглед работи во чист контекст прозорец. Токените за влез паѓаат на 3.000-8.000 (системски повик плус кодот што се прегледува, без акумулиран контекст). И цената на Хаику по токен е драматично пониска од Opus. Комбинираниот ефект на помалиот контекст и поевтиниот модел обично ги намалува трошоците за преглед на кодот за 85-95%. Но, постои суптилна корист од трошоците. Бидејќи контекстните прозорци на суб-агентот се изолирани и чисти, рецензиите се побрзи. Помалиот контекст на влез значи помалку време за обработка. Прегледот на Haiku суб-агентот обично се враќа за 2-5 секунди. Истиот преглед во надуената сесија на Opus може да потрае 10-20 секунди. Повеќе од педесет дневни рецензии, што е значајна заштеда на време. Сепак, одлуката за рутирање на моделот не е секогаш очигледна. Некои задачи навистина имаат потреба од размислување на ниво на Опус. Длабоки сесии за дебугирање каде што моделот треба да држи комплексна состојба низ многу датотеки. Архитектурна анализа каде што моделот треба да размислува за системските импликации. Рефакторски задачи каде што моделот треба да разбере суптилни семантички односи. Овие треба да останат на Опус, но во изолирани под-агенти за контекстот да остане чист. За поширокиот сет на стратегии за трошоци, нашите покрива моделот на рутирање заедно со други пристапи како што се управување со контекст и инсистирање на знаци. Claude Code водич за оптимизација на трошоците Како вештините работат на Prompt Layer Вештините се архитектонски наједноставниот механизам, а таа едноставност е карактеристика. Името на директориумот станува командата slash. Клод Код Рајдс и инјектира нејзината содржина во тековниот разговор. .claude/skills/ /review .claude/skills/review/SKILL.md Нема процес. Нема изолација. Нема посебен контекст прозорец. Текстот на вештината се придружува на постоечкиот разговор како да сте го напишале сами. Ова значи дека вештините имаат корист од постоечкиот контекст на разговорот (Клод веќе знае на кои датотеки сте работеле), но тие исто така го наследуваат акумулираниот бучава на разговорот. # SQL Migration Standards Review the migration files for compliance with team standards. ## Naming Conventions - Tables: plural snake_case (user_sessions, not UserSession or user_session) - Columns: singular snake_case (created_at, not CreatedAt) - Indexes: idx_{table}_{columns} (idx_user_sessions_user_id) - Foreign keys: fk_{table}_{referenced_table} (fk_orders_users) ## Safety Requirements - All CREATE INDEX must use CONCURRENTLY - ALTER TABLE ADD COLUMN must include a DEFAULT for non-nullable columns - No DROP COLUMN without a preceding release that stops reading the column - All migrations must be reversible (provide both up and down) ## Query Patterns - Use EXISTS instead of IN for subqueries - Use COALESCE instead of CASE WHEN ... IS NULL - Avoid SELECT * in application code - Always specify column lists in INSERT statements Current schema for reference: $(cat db/schema.sql) Migration to review: $ARGUMENTS на Синтаксисот извршува команда на школка во времето на повикување и го вбризгува излезот. Ова дава ограничена динамичка способност на вештини. Тие можат да вклучуваат содржина на датотеки, променливи на животната средина или излез на команда, но тие не можат да одржуваат врски или да извршуваат повеќе чекори надворешни операции. $(cat db/schema.sql) на Променливите ги фаќаат сè по командата slash. Ќе се постави на патот на датотеката, овозможувајќи ви да ја насочите вештината кон одредени датотеки. $ARGUMENTS /migration db/migrations/20260311_add_sessions.sql $ARGUMENTS Вештините се моќни токму затоа што се едноставни.Секој може да напише еден. опфаќа како QA инженери, менаџери на производи и технички писатели создаваат ефективни вештини без допирање на код. Вештини за не-технички тимови Кога не треба да се користи секој механизам (анти-модели) Разбирањето на тоа што секој механизам прави добро е само половина од сликата. Анти-патерни на MCP серверот Ако информациите не се менуваат помеѓу повиците и не доаѓаат од надворешен систем, тоа е вештина. Видов тимови да градат MCP сервери кои враќаат стандарди за кодирање на компанијата, документација за API, па дури и водичи за стил. Do not build an MCP server to serve static content. Клод Код веќе ја има алатката Bash. Ако вашата „интеграција“ работи на извршување на командата CLI и анализирање на излезот, не ви е потребен MCP сервер. Вештина која ги инструктира Клод да го користат Bash со специфични команди е поедноставна. Не сè надворешно има потреба од MCP сервер. Ако Клод може да ја изврши командата CLI преку Bash, тоа е поедноставно отколку изградбата и одржувањето на MCP сервер. Do not build an MCP server when a Bash tool call would suffice. MCP серверите се неопходни кога ви е потребна далечинска изведба, опфаќање на дозволи, упорни врски или операции со статус. или трчање MCP серверите ја заработуваат својата сложеност кога повеќе агенти или корисници имаат потреба од споделен пристап, кога ви се потребни фини контроли за дозволи, или кога интеграцијата бара одржување на состојбата на повеќе барања. git log cargo test MCP серверот кој извршува произволен SQL против производство е оптоварено оружје. Секој сервер треба да ги спроведува временските ограничувања на прашањата, лимитите на редови, пристапот само за читање каде што е соодветно и валидацијата на влезот. Протоколот нема да ве заштити. Do not build an MCP server without safety boundaries. Антипатерни суб-агенти Под-агентите блескаат за повторена, специјализирана работа. Ако треба да направите нешто еднаш, само направете го тоа во главната сесија. Општото создавање и одржување на датотеката за конфигурација на агентот не вреди за ад-хок работа. Do not create a subagent for a one-off task. Некои задачи навистина бараат посилно размислување. Се обидов да извршам архитектонска анализа на Хаику еднаш. Идентификуваше проблеми на ниво на површината, но пропушти кружна зависност што Опус веднаш ја фати. Хаику е брилијантен за усогласување на шаблони и спроведување на контролните списоци. Се бори со задачите што бараат размислување во повеќе чекори низ многу датотеки. Do not route everything to Haiku to save money. Под-агент кој повикува на друг под-агент кој повикува на трет е анти-паттерн. Секој слој додава латентност и ја замаглува вистинската работа што се врши. Ако ви треба толку многу оркестрација, реструктурирајте го вашиот пристап. Обично одговорот е еден под-агент со пристап до повеќе MCP сервери и вештини, а не синџир на под-агенти. Do not create deeply nested subagent chains. Способност за анти-патерн Ако задачата бара податоци од надвор од сесијата на Клод, ви треба MCP сервер (или под-агент со MCP пристап). Do not write skills that require external data. Содржината на вештината се вбризгува во прозорецот на контекстот. Вештината со 5.000 зборови троши токени на секое повикување. Чувајте ги вештините фокусирани. да го инјектирате условно, наместо директно да го вградите во вештината. Do not write skills that are too long. $(cat reference.md) Вештината работи во тековниот контекст. Ако тековниот контекст е загаден со несврзана работа, ефикасноста на вештината опаѓа. Задачите кои бараат чиста рамка (ревизии, анализи, генерација на документација) се подобро сервирани од суб-агенти кои започнуваат со свеж контекст прозорец. Do not use skills for tasks that need isolation. Моделот на композиција во производството Трите механизми не се алтернативи. Тие се слоеви кои сочинуваат. Разбирањето на моделите на композиција е она што ја одвојува работната поставка од елегантна. Под-агентот може да има MCP сервери доделени на него. Ова создава опсежен пристап. Под-агентот за преглед на код може да стигне до API на GitHub преку GitHub MCP серверот, но не може да допре до вашата база на податоци или насока за имплементација. Под-агентот на базата на податоци-аналитичарот ја оптоварува вештината на sql-стандардите, така што секоја анализа ги следи конвенциите за именување и обрасците на прашањата на вашиот тим, без дека на под-агентот на аналитичарот му се потребни тие конвенции во системот. Можете да му дадете на суб-агент пристап до GitHub MCP серверот (за да може да ги чита ПР и коментари) додека не дозволувате пишување и уредување (за да не може да ги модифицира локалните датотеки). Во нашата производствена конфигурација на 8 приклучоци на пазарот, слоевите изгледаат вака: Layer 3: Skills (Team Knowledge) /review — code review checklist /migration — database migration standards /deploy-check — pre-deployment verification steps /sql-standards — SQL naming and query conventions /api-design — REST endpoint design patterns Layer 2: Subagents (Specialised Behaviour) code-reviewer (Haiku, read-only, GitHub MCP, review skill) debugger (Opus, full access, all MCP servers) database-analyst (Sonnet, read-only, PostgreSQL MCP, sql-standards skill) deploy-checker (Sonnet, read-only, deploy + analytics MCP, deploy-check skill) doc-writer (Haiku, read-only, no MCP, style-guide skill) Layer 1: MCP Servers (External Connections) analytics-db — PostgreSQL metrics database deploy-pipeline — deployment API wrapper github — GitHub API for PRs and issues content-api — CMS for documentation publishing postgresql — application database (read-only) Секој под-агент ги компонира точно MCP серверите и вештините што му се потребни, на ниво на модел кој одговара на неговата сложеност на задачата. Проверувачот на имплементација користи Sonnet затоа што треба да размислува за подготвеноста за имплементација низ повеќе извори на податоци. Проверувачот на документи користи Haiku затоа што техничкото пишување е првенствено споредба на шаблон со водич за стил. Проверувачот користи Opus затоа што дебугирањето навистина бара најсилно размислување. За целосни детали за тоа како овие слоеви работат заедно, нашиот водич на преминува низ комплетен модел на композиција. И за конфигурацијата на суб-агентот конкретно, нашата ги покрива сите предни области со примери. Приклучоци, MCP сервери и вештини како слоевирана архитектура Градежниот водич на агентот Клод Функција на одлуката По една година на градење на производствени приклучоци, одлуката е чиста функција на она што ви треба: def choose_mechanism(need): if need.requires_external_data or need.has_side_effects: return "MCP Server" if need.requires_different_model or need.requires_tool_restrictions or need.benefits_from_isolation: return "Subagent" if need.is_reusable_knowledge or need.is_workflow_template: return "Skill" if need.is_complex: return "Subagent + MCP Server + Skill" # compose all three Ако се најдете во изградба на MCP сервер кој враќа статичен текст, престанете. Тоа е вештина. Ако пишувате вештина која вели "запрашај базата на податоци", престанете. Тоа е MCP сервер. Ако користите скапи сесии на Opus за рутински проверки, престанете. Тоа е под-агент на Haiku. Што се промени за нас Пред да го разбереме триаголот, имавме MCP сервери кои ја вршеа работата на вештините, вештините кои се обидуваа да ја направат работата на MCP серверите, и воопшто немаше суб-агенти. По реструктурирањето: 34+ вештини ги кодираат конвенциите на нашиот тим низ кодот, работата на базата на податоци, распоредувањето, документацијата и дизајнот на API. Пет под-агенти се справуваат со специјализирани задачи на вистинската цена со вистинската контрола на пристапот. Четири MCP сервери се поврзуваат со токму надворешните системи кои треба да се поврзат, секој со соодветни безбедносни граници. Месечните трошоци значително паднаа.Квалитетот на прегледот се подобри затоа што суб-агентите започнуваат со чист контекст. Тимските конвенции станаа конзистентни затоа што вештините ги применуваат идентично за секој програмер.И MCP серверите станаа поедноставни затоа што престанаа да се обидуваат да бидат сè; тие само ги преклопуваат надворешните системи и ништо повеќе. Триаголот на екстензибилност не е теоретска рамка. Тоа е практична алатка која ве спречува да ја изградите погрешната работа. Која, имајќи предвид дека ја изградив погрешната работа три пати пред да го дознаам ова, вреди да се знае за тоа.