Хорошие Skills лаконичны, хорошо структурированы и протестированы в реальном использовании. Это руководство содержит практические рекомендации по созданию Skills, которые Claude может обнаружить и эффективно использовать.
Для концептуального понимания того, как работают Skills, см. обзор Skills.
Контекстное окно — это общественное благо. Ваш Skill делит контекстное окно со всем остальным, что нужно знать Claude, включая:
Не каждый токен в вашем Skill имеет немедленную стоимость. При запуске предварительно загружаются только метаданные (имя и описание) всех Skills. Claude читает SKILL.md только когда Skill становится релевантным, и читает дополнительные файлы только по мере необходимости. Однако лаконичность в SKILL.md по-прежнему важна: как только Claude загружает его, каждый токен конкурирует с историей разговора и другим контекстом.
Предположение по умолчанию: Claude уже очень умный
Добавляйте только контекст, который Claude еще не имеет. Проверьте каждую информацию:
Хороший пример: Лаконичный (примерно 50 токенов):
## Извлечение текста из PDF
Используйте pdfplumber для извлечения текста:
```python
import pdfplumber
with pdfplumber.open("file.pdf") as pdf:
text = pdf.pages[0].extract_text()
```Плохой пример: Слишком многословный (примерно 150 токенов):
## Извлечение текста из PDF
PDF (Portable Document Format) — это распространённый формат файлов, содержащий
текст, изображения и другое содержимое. Для извлечения текста из PDF вам потребуется
использовать библиотеку. Доступно много библиотек для обработки PDF, но
pdfplumber рекомендуется, потому что он легко использовать и хорошо справляется с большинством случаев.
Сначала вам нужно установить его с помощью pip. Затем вы можете использовать код ниже...Лаконичная версия предполагает, что Claude знает, что такое PDF и как работают библиотеки.
Соответствуйте уровню специфичности хрупкости и изменчивости задачи.
Высокая свобода (текстовые инструкции):
Используйте когда:
Пример:
## Процесс проверки кода
1. Анализируйте структуру и организацию кода
2. Проверьте потенциальные ошибки или граничные случаи
3. Предложите улучшения для читаемости и поддерживаемости
4. Проверьте соответствие соглашениям проектаСредняя свобода (псевдокод или скрипты с параметрами):
Используйте когда:
Пример:
## Генерирование отчёта
Используйте этот шаблон и настраивайте по мере необходимости:
```python
def generate_report(data, format="markdown", include_charts=True):
# Обработка данных
# Генерирование вывода в указанном формате
# Опционально включение визуализаций
```Низкая свобода (специфические скрипты, мало или нет параметров):
Используйте когда:
Пример:
## Миграция базы данных
Запустите точно этот скрипт:
```bash
python scripts/migrate.py --verify --backup
```
Не изменяйте команду и не добавляйте дополнительные флаги.Аналогия: Думайте о Claude как о роботе, исследующем путь:
Skills действуют как дополнения к моделям, поэтому эффективность зависит от базовой модели. Тестируйте ваш Skill со всеми моделями, которые вы планируете использовать.
Рекомендации по тестированию по моделям:
То, что идеально работает для Opus, может потребовать больше деталей для Haiku. Если вы планируете использовать ваш Skill с несколькими моделями, стремитесь к инструкциям, которые хорошо работают со всеми из них.
YAML Frontmatter: Frontmatter SKILL.md требует два поля:
name:
description:
Для полных деталей структуры Skill см. обзор Skills.
Используйте последовательные паттерны именования, чтобы Skills было легче ссылаться и обсуждать. Рассмотрите использование герундиальной формы (глагол + -ing) для имён Skills, так как это ясно описывает деятельность или возможность, которую предоставляет Skill.
Помните, что поле name должно использовать только строчные буквы, цифры и дефисы.
Хорошие примеры именования (герундиальная форма):
processing-pdfsanalyzing-spreadsheetsmanaging-databasestesting-codewriting-documentationПриемлемые альтернативы:
pdf-processing, spreadsheet-analysisprocess-pdfs, analyze-spreadsheetsИзбегайте:
helper, utils, toolsdocuments, data, filesanthropic-helper, claude-toolsСогласованное именование облегчает:
Поле description позволяет обнаруживать Skill и должно включать как то, что делает Skill, так и когда его использовать.
Всегда пишите от третьего лица. Описание внедряется в системный промпт, и несогласованная точка зрения может вызвать проблемы с обнаружением.
Будьте конкретны и включайте ключевые термины. Включайте как то, что делает Skill, так и специфические триггеры/контексты для когда его использовать.
Каждый Skill имеет ровно одно поле описания. Описание критично для выбора skill: Claude использует его для выбора правильного Skill из потенциально 100+ доступных Skills. Ваше описание должно предоставить достаточно деталей для Claude, чтобы знать, когда выбрать этот Skill, в то время как остальная часть SKILL.md предоставляет детали реализации.
Эффективные примеры:
Skill обработки PDF:
description: Извлекает текст и таблицы из файлов PDF, заполняет формы, объединяет документы. Используйте при работе с файлами PDF или когда пользователь упоминает PDF, формы или извлечение документов.Skill анализа Excel:
description: Анализирует электронные таблицы Excel, создаёт сводные таблицы, генерирует диаграммы. Используйте при анализе файлов Excel, электронных таблиц, табличных данных или файлов .xlsx.Skill помощника Git Commit:
description: Генерирует описательные сообщения коммитов путём анализа git diffs. Используйте когда пользователь просит помощь в написании сообщений коммитов или проверке поставленных на сцену изменений.Избегайте неясных описаний, подобных этим:
description: Помогает с документамиdescription: Обрабатывает данныеdescription: Делает что-то с файламиSKILL.md служит обзором, который указывает Claude на подробные материалы по мере необходимости, как оглавление в руководстве по адаптации. Для объяснения того, как работает прогрессивное раскрытие, см. Как работают Skills в обзоре.
Практическое руководство:
Базовый Skill начинается с одного файла SKILL.md, содержащего метаданные и инструкции:

По мере роста вашего Skill вы можете объединить дополнительное содержимое, которое Claude загружает только при необходимости:

Полная структура директории Skill может выглядеть так:
pdf/
├── SKILL.md # Основные инструкции (загружаются при срабатывании)
├── FORMS.md # Руководство по заполнению форм (загружается по мере необходимости)
├── reference.md # Справка по API (загружается по мере необходимости)
├── examples.md # Примеры использования (загружаются по мере необходимости)
└── scripts/
├── analyze_form.py # Служебный скрипт (выполняется, не загружается)
├── fill_form.py # Скрипт заполнения форм
└── validate.py # Скрипт валидации---
name: pdf-processing
description: Извлекает текст и таблицы из файлов PDF, заполняет формы и объединяет документы. Используйте при работе с файлами PDF или когда пользователь упоминает PDF, формы или извлечение документов.
---
# Обработка PDF
## Быстрый старт
Извлеките текст с помощью pdfplumber:
```python
import pdfplumber
with pdfplumber.open("file.pdf") as pdf:
text = pdf.pages[0].extract_text()
```
## Расширенные возможности
**Заполнение форм**: См. [FORMS.md](FORMS.md) для полного руководства
**Справка по API**: См. [REFERENCE.md](REFERENCE.md) для всех методов
**Примеры**: См. [EXAMPLES.md](EXAMPLES.md) для распространённых паттерновClaude загружает FORMS.md, REFERENCE.md или EXAMPLES.md только при необходимости.
Для Skills с несколькими доменами организуйте содержимое по доменам, чтобы избежать загрузки нерелевантного контекста. Когда пользователь спрашивает о метриках продаж, Claude нужно только прочитать схемы, связанные с продажами, а не данные финансов или маркетинга. Это держит использование токенов низким и контекст сосредоточенным.
bigquery-skill/
├── SKILL.md (обзор и навигация)
└── reference/
├── finance.md (доход, метрики выставления счётов)
├── sales.md (возможности, конвейер)
├── product.md (использование API, функции)
└── marketing.md (кампании, атрибуция)# Анализ данных BigQuery
## Доступные наборы данных
**Финансы**: Доход, ARR, выставление счётов → См. [reference/finance.md](reference/finance.md)
**Продажи**: Возможности, конвейер, счета → См. [reference/sales.md](reference/sales.md)
**Продукт**: Использование API, функции, внедрение → См. [reference/product.md](reference/product.md)
**Маркетинг**: Кампании, атрибуция, электронная почта → См. [reference/marketing.md](reference/marketing.md)
## Быстрый поиск
Найдите специфические метрики, используя grep:
```bash
grep -i "revenue" reference/finance.md
grep -i "pipeline" reference/sales.md
grep -i "api usage" reference/product.md
```Показывайте базовое содержимое, ссылайтесь на расширенное содержимое:
# Обработка DOCX
## Создание документов
Используйте docx-js для новых документов. См. [DOCX-JS.md](DOCX-JS.md).
## Редактирование документов
Для простых правок изменяйте XML напрямую.
**Для отслеживания изменений**: См. [REDLINING.md](REDLINING.md)
**Для деталей OOXML**: См. [OOXML.md](OOXML.md)Claude читает REDLINING.md или OOXML.md только когда пользователю нужны эти функции.
Claude может частично читать файлы, когда они ссылаются из других ссылаемых файлов. При встрече с вложенными ссылками Claude может использовать команды, такие как head -100, для предварительного просмотра содержимого, а не чтения целых файлов, что приводит к неполной информации.
Держите ссылки на один уровень глубины от SKILL.md. Все справочные файлы должны ссылаться непосредственно из SKILL.md, чтобы гарантировать, что Claude читает полные файлы при необходимости.
Плохой пример: Слишком глубоко:
# SKILL.md
См. [advanced.md](advanced.md)...
# advanced.md
См. [details.md](details.md)...
# details.md
Вот фактическая информация...Хороший пример: Один уровень глубины:
# SKILL.md
**Базовое использование**: [инструкции в SKILL.md]
**Расширенные возможности**: См. [advanced.md](advanced.md)
**Справка по API**: См. [reference.md](reference.md)
**Примеры**: См. [examples.md](examples.md)Для справочных файлов длиннее 100 строк включите оглавление в верхней части. Это гарантирует, что Claude может увидеть полный объём доступной информации даже при предварительном просмотре с частичными чтениями.
Пример:
# Справка по API
## Содержание
- Аутентификация и настройка
- Основные методы (создание, чтение, обновление, удаление)
- Расширенные возможности (пакетные операции, вебхуки)
- Паттерны обработки ошибок
- Примеры кода
## Аутентификация и настройка
...
## Основные методы
...Claude может затем прочитать полный файл или перейти к специфическим разделам по мере необходимости.
Для деталей о том, как эта архитектура на основе файловой системы позволяет прогрессивное раскрытие, см. раздел Среда выполнения в разделе Advanced ниже.
Разбейте сложные операции на ясные, последовательные шаги. Для особенно сложных рабочих процессов предоставьте контрольный список, который Claude может скопировать в свой ответ и отмечать по мере прогресса.
Пример 1: Рабочий процесс синтеза исследований (для Skills без кода):
## Рабочий процесс синтеза исследований
Скопируйте этот контрольный список и отслеживайте ваш прогресс:
```
Прогресс исследования:
- [ ] Шаг 1: Прочитайте все исходные документы
- [ ] Шаг 2: Определите ключевые темы
- [ ] Шаг 3: Перекрёстно ссылайтесь на утверждения
- [ ] Шаг 4: Создайте структурированное резюме
- [ ] Шаг 5: Проверьте цитирования
```
**Шаг 1: Прочитайте все исходные документы**
Просмотрите каждый документ в директории `sources/`. Отметьте основные аргументы и подтверждающие доказательства.
**Шаг 2: Определите ключевые темы**
Ищите паттерны по источникам. Какие темы повторяются? Где источники согласны или не согласны?
**Шаг 3: Перекрёстно ссылайтесь на утверждения**
Для каждого основного утверждения проверьте, что оно появляется в исходном материале. Отметьте, какой источник поддерживает каждый пункт.
**Шаг 4: Создайте структурированное резюме**
Организуйте результаты по темам. Включите:
- Основное утверждение
- Подтверждающие доказательства из источников
- Конфликтующие точки зрения (если есть)
**Шаг 5: Проверьте цитирования**
Проверьте, что каждое утверждение ссылается на правильный исходный документ. Если цитирования неполные, вернитесь к Шагу 3.Этот пример показывает, как рабочие процессы применяются к задачам анализа, которые не требуют кода. Паттерн контрольного списка работает для любого сложного, многошагового процесса.
Пример 2: Рабочий процесс заполнения форм PDF (для Skills с кодом):
## Рабочий процесс заполнения форм PDF
Скопируйте этот контрольный список и отмечайте элементы по мере их завершения:
```
Прогресс задачи:
- [ ] Шаг 1: Анализируйте форму (запустите analyze_form.py)
- [ ] Шаг 2: Создайте сопоставление полей (отредактируйте fields.json)
- [ ] Шаг 3: Проверьте сопоставление (запустите validate_fields.py)
- [ ] Шаг 4: Заполните форму (запустите fill_form.py)
- [ ] Шаг 5: Проверьте вывод (запустите verify_output.py)
```
**Шаг 1: Анализируйте форму**
Запустите: `python scripts/analyze_form.py input.pdf`
Это извлекает поля формы и их местоположения, сохраняя в `fields.json`.
**Шаг 2: Создайте сопоставление полей**
Отредактируйте `fields.json`, чтобы добавить значения для каждого поля.
**Шаг 3: Проверьте сопоставление**
Запустите: `python scripts/validate_fields.py fields.json`
Исправьте любые ошибки валидации перед продолжением.
**Шаг 4: Заполните форму**
Запустите: `python scripts/fill_form.py input.pdf fields.json output.pdf`
**Шаг 5: Проверьте вывод**
Запустите: `python scripts/verify_output.py output.pdf`
Если проверка не пройдена, вернитесь к Шагу 2.Ясные шаги предотвращают пропуск Claude критических проверок валидации. Контрольный список помогает как Claude, так и вам отслеживать прогресс через многошаговые рабочие процессы.
Распространённый паттерн: Запустите валидатор → исправьте ошибки → повторите
Этот паттерн значительно улучшает качество вывода.
Пример 1: Соответствие руководству стиля (для Skills без кода):
## Процесс проверки содержимого
1. Составьте ваше содержимое, следуя руководствам в STYLE_GUIDE.md
2. Проверьте против контрольного списка:
- Проверьте консистентность терминологии
- Проверьте, что примеры следуют стандартному формату
- Подтвердите, что все требуемые разделы присутствуют
3. Если найдены проблемы:
- Отметьте каждую проблему со специфической ссылкой на раздел
- Пересмотрите содержимое
- Проверьте контрольный список снова
4. Только продолжайте, когда все требования выполнены
5. Завершите и сохраните документЭто показывает паттерн цикла валидации, используя справочные документы вместо скриптов. "Валидатор" — это STYLE_GUIDE.md, и Claude выполняет проверку, читая и сравнивая.
Пример 2: Процесс редактирования документа (для Skills с кодом):
## Процесс редактирования документа
1. Сделайте ваши правки в `word/document.xml`
2. **Проверьте немедленно**: `python ooxml/scripts/validate.py unpacked_dir/`
3. Если валидация не пройдена:
- Внимательно прочитайте сообщение об ошибке
- Исправьте проблемы в XML
- Запустите валидацию снова
4. **Только продолжайте, когда валидация пройдена**
5. Пересоберите: `python ooxml/scripts/pack.py unpacked_dir/ output.docx`
6. Протестируйте выходной документЦикл валидации ловит ошибки рано.
Не включайте информацию, которая устареет:
Плохой пример: Чувствительный ко времени (станет неправильным):
Если вы делаете это до августа 2025, используйте старый API.
После августа 2025 используйте новый API.Хороший пример (используйте раздел "старые паттерны"):
## Текущий метод
Используйте конечную точку API v2: `api.example.com/v2/messages`
## Старые паттерны
<details>
<summary>Устаревший API v1 (устарел 2025-08)</summary>
API v1 использовал: `api.example.com/v1/messages`
Эта конечная точка больше не поддерживается.
</details>Раздел старых паттернов предоставляет исторический контекст без загромождения основного содержимого.
Выберите один термин и используйте его на протяжении всего Skill:
Хорошо - Согласованно:
Плохо - Несогласованно:
Согласованность помогает Claude понимать и следовать инструкциям.
Предоставьте шаблоны для формата вывода. Соответствуйте уровню строгости вашим потребностям.
Для строгих требований (как ответы API или форматы данных):
## Структура отчёта
ВСЕГДА используйте эту точную структуру шаблона:
```markdown
# [Название анализа]
## Резюме руководителя
[Однопараграфный обзор ключевых результатов]
## Ключевые результаты
- Результат 1 с подтверждающими данными
- Результат 2 с подтверждающими данными
- Результат 3 с подтверждающими данными
## Рекомендации
1. Специфическая действенная рекомендация
2. Специфическая действенная рекомендация
```Для гибкого руководства (когда адаптация полезна):
## Структура отчёта
Вот разумный формат по умолчанию, но используйте ваше лучшее суждение на основе анализа:
```markdown
# [Название анализа]
## Резюме руководителя
[Обзор]
## Ключевые результаты
[Адаптируйте разделы на основе того, что вы обнаружите]
## Рекомендации
[Адаптируйте к специфическому контексту]
```
Адаптируйте разделы по мере необходимости для специфического типа анализа.Для Skills, где качество вывода зависит от просмотра примеров, предоставьте пары вход/вывод, как в обычном промптинге:
## Формат сообщения коммита
Генерируйте сообщения коммитов, следуя этим примерам:
**Пример 1:**
Вход: Добавлена аутентификация пользователя с JWT токенами
Вывод:
```
feat(auth): implement JWT-based authentication
Add login endpoint and token validation middleware
```
**Пример 2:**
Вход: Исправлена ошибка, где даты отображались неправильно в отчётах
Вывод:
```
fix(reports): correct date formatting in timezone conversion
Use UTC timestamps consistently across report generation
```
**Пример 3:**
Вход: Обновлены зависимости и переработана обработка ошибок
Вывод:
```
chore: update dependencies and refactor error handling
- Upgrade lodash to 4.17.21
- Standardize error response format across endpoints
```
Следуйте этому стилю: type(scope): краткое описание, затем подробное объяснение.Примеры помогают Claude понять желаемый стиль и уровень деталей более ясно, чем описания одни.
Направляйте Claude через точки решения:
## Рабочий процесс модификации документа
1. Определите тип модификации:
**Создание нового содержимого?** → Следуйте "Рабочему процессу создания" ниже
**Редактирование существующего содержимого?** → Следуйте "Рабочему процессу редактирования" ниже
2. Рабочий процесс создания:
- Используйте библиотеку docx-js
- Постройте документ с нуля
- Экспортируйте в формат .docx
3. Рабочий процесс редактирования:
- Распакуйте существующий документ
- Изменяйте XML напрямую
- Проверяйте после каждого изменения
- Пересоберите при завершенииЕсли рабочие процессы становятся большими или сложными со многими шагами, рассмотрите их перемещение в отдельные файлы и скажите Claude прочитать соответствующий файл на основе задачи.
Создайте оценки ДО написания обширной документации. Это гарантирует, что ваш Skill решает реальные проблемы, а не документирует воображаемые.
Разработка, управляемая оценками:
Этот подход гарантирует, что вы решаете фактические проблемы, а не предугадываете требования, которые могут никогда не материализоваться.
Структура оценки:
{
"skills": ["pdf-processing"],
"query": "Extract all text from this PDF file and save it to output.txt",
"files": ["test-files/document.pdf"],
"expected_behavior": [
"Successfully reads the PDF file using an appropriate PDF processing library or command-line tool",
"Extracts text content from all pages in the document without missing any pages",
"Saves the extracted text to a file named output.txt in a clear, readable format"
]
}Этот пример демонстрирует оценку, управляемую данными, с простой рубрикой тестирования. В настоящее время нет встроенного способа запустить эти оценки. Пользователи могут создать свою собственную систему оценки. Оценки — это ваш источник истины для измерения эффективности Skill.
Наиболее эффективный процесс разработки Skill включает Claude. Работайте с одним экземпляром Claude ("Claude A") для создания Skill, который используется другими экземплярами ("Claude B"). Claude A помогает вам проектировать и уточнять инструкции, в то время как Claude B тестирует их в реальных задачах. Это работает, потому что модели Claude понимают как написание эффективных инструкций агента, так и информацию, которая нужна агентам.
Создание нового Skill:
Завершите задачу без Skill: Работайте через проблему с Claude A, используя обычный промптинг. По мере работы вы естественно предоставите контекст, объясните предпочтения и поделитесь процедурными знаниями. Обратите внимание на информацию, которую вы повторно предоставляете.
Определите переиспользуемый паттерн: После завершения задачи определите, какой контекст вы предоставили, который был бы полезен для похожих будущих задач.
Пример: Если вы работали через анализ BigQuery, вы могли предоставить имена таблиц, определения полей, правила фильтрации (как "всегда исключайте тестовые счета") и распространённые паттерны запросов.
Попросите Claude A создать Skill: "Создайте Skill, который захватывает этот паттерн анализа BigQuery, который мы только что использовали. Включите схемы таблиц, соглашения об именовании и правило о фильтрации тестовых счетов."
Модели Claude понимают формат и структуру Skill нативно. Вам не нужны специальные системные промпты или "writing skills" skill, чтобы получить Claude для создания Skills. Просто попросите Claude создать Skill и он генерирует правильно структурированное содержимое SKILL.md с соответствующим frontmatter и телом.
Проверьте лаконичность: Проверьте, что Claude A не добавил ненужные объяснения. Спросите: "Удалите объяснение о том, что означает коэффициент выигрыша — Claude это уже знает."
Улучшите информационную архитектуру: Попросите Claude A организовать содержимое более эффективно. Например: "Организуйте это так, чтобы схема таблицы была в отдельном справочном файле. Мы можем добавить больше таблиц позже."
Тестируйте на похожих задачах: Используйте Skill с Claude B (свежий экземпляр с загруженным Skill) на связанных случаях использования. Наблюдайте, находит ли Claude B правильную информацию, применяет ли правила правильно и успешно ли справляется с задачей.
Итерируйте на основе наблюдения: Если Claude B борется или что-то пропускает, вернитесь к Claude A со специфичностью: "Когда Claude использовал этот Skill, он забыл отфильтровать по дате для Q4. Должны ли мы добавить раздел о паттернах фильтрации по датам?"
Итерирование существующих Skills:
Тот же иерархический паттерн продолжается при улучшении Skills. Вы чередуетесь между:
Используйте Skill в реальных рабочих процессах: Дайте Claude B (с загруженным Skill) фактические задачи, не тестовые сценарии
Наблюдайте поведение Claude B: Отметьте, где оно борется, где успешно или делает неожиданный выбор
Пример наблюдения: "Когда я попросил Claude B для регионального отчёта о продажах, он написал запрос, но забыл отфильтровать тестовые счета, даже хотя Skill упоминает это правило."
Вернитесь к Claude A для улучшений: Поделитесь текущим SKILL.md и описите, что вы наблюдали. Спросите: "Я заметил, что Claude B забыл отфильтровать тестовые счета при запросе регионального отчёта. Skill упоминает фильтрацию, но может быть это не достаточно выделено?"
Проверьте предложения Claude A: Claude A может предложить переорганизацию, чтобы сделать правила более выделенными, использование более сильного языка, как "ДОЛЖНЫ фильтровать" вместо "всегда фильтруйте", или переструктурирование раздела рабочего процесса.
Применяйте и тестируйте изменения: Обновите Skill с уточнениями Claude A, затем тестируйте снова с Claude B на похожих запросах
Повторяйте на основе использования: Продолжайте этот цикл наблюдение-уточнение-тест по мере встречи с новыми сценариями. Каждая итерация улучшает Skill на основе реального поведения агента, не предположений.
Сбор обратной связи команды:
Почему этот подход работает: Claude A понимает потребности агента, вы предоставляете экспертизу домена, Claude B раскрывает пробелы через реальное использование, и итеративное уточнение улучшает Skills на основе наблюдаемого поведения, а не предположений.
По мере итерирования Skills обратите внимание на то, как Claude фактически их использует на практике. Смотрите на:
Итерируйте на основе этих наблюдений, а не предположений. 'name' и 'description' в метаданных вашего Skill особенно критичны. Claude использует их при решении, активировать ли Skill в ответ на текущую задачу. Убедитесь, что они ясно описывают, что делает Skill и когда его использовать.
Всегда используйте прямые слэши в путях файлов, даже на Windows:
scripts/helper.py, reference/guide.mdscripts\helper.py, reference\guide.mdПути в стиле Unix работают на всех платформах, в то время как пути в стиле Windows вызывают ошибки на системах Unix.
Не представляйте несколько подходов, если это не необходимо:
**Плохой пример: Слишком много выборов** (запутанно):
"Вы можете использовать pypdf, или pdfplumber, или PyMuPDF, или pdf2image, или..."
**Хороший пример: Предоставьте по умолчанию** (с люком):
"Используйте pdfplumber для извлечения текста:
```python
import pdfplumber
```
Для отсканированных PDF, требующих OCR, используйте pdf2image с pytesseract вместо этого."Разделы ниже сосредоточены на Skills, которые включают исполняемые скрипты. Если ваш Skill использует только инструкции markdown, перейдите к Контрольный список для эффективных Skills.
При написании скриптов для Skills обрабатывайте условия ошибок, а не перекладывайте на Claude.
Хороший пример: Явно обрабатывайте ошибки:
def process_file(path):
"""Process a file, creating it if it doesn't exist."""
try:
with open(path) as f:
return f.read()
except FileNotFoundError:
# Create file with default content instead of failing
print(f"File {path} not found, creating default")
with open(path, "w") as f:
f.write("")
return ""
except PermissionError:
# Provide alternative instead of failing
print(f"Cannot access {path}, using default")
return ""Плохой пример: Перекладывайте на Claude:
def process_file(path):
# Just fail and let Claude figure it out
return open(path).read()Параметры конфигурации также должны быть обоснованы и задокументированы, чтобы избежать "магических констант" (закон Остерхаута). Если вы не знаете правильное значение, как Claude его определит?
Хороший пример: Самодокументирующийся:
# HTTP requests typically complete within 30 seconds
# Longer timeout accounts for slow connections
REQUEST_TIMEOUT = 30
# Three retries balances reliability vs speed
# Most intermittent failures resolve by the second retry
MAX_RETRIES = 3Плохой пример: Магические числа:
TIMEOUT = 47 # Why 47?
RETRIES = 5 # Why 5?Даже если Claude мог бы написать скрипт, предварительно созданные скрипты предлагают преимущества:
Преимущества служебных скриптов:

Диаграмма выше показывает, как исполняемые скрипты работают рядом с файлами инструкций. Файл инструкций (forms.md) ссылается на скрипт, и Claude может его выполнить без загрузки его содержимого в контекст.
Важное различие: Уточните в ваших инструкциях, должен ли Claude:
analyze_form.py для извлечения полей"analyze_form.py для алгоритма извлечения полей"Для большинства служебных скриптов выполнение предпочтительно, потому что оно более надёжно и эффективно. См. раздел Среда выполнения ниже для деталей о том, как работает выполнение скриптов.
Пример:
## Служебные скрипты
**analyze_form.py**: Извлеките все поля формы из PDF
```bash
python scripts/analyze_form.py input.pdf > fields.json
```
Формат вывода:
```json
{
"field_name": {"type": "text", "x": 100, "y": 200},
"signature": {"type": "sig", "x": 150, "y": 500}
}
```
**validate_boxes.py**: Проверьте на перекрывающиеся ограничивающие коробки
```bash
python scripts/validate_boxes.py fields.json
# Returns: "OK" or lists conflicts
```
**fill_form.py**: Применить значения полей к PDF
```bash
python scripts/fill_form.py input.pdf fields.json output.pdf
```Когда входные данные можно отобразить в виде изображений, попросите Claude проанализировать их:
## Анализ макета формы
1. Преобразуйте PDF в изображения:
```bash
python scripts/pdf_to_images.py form.pdf
```
2. Проанализируйте каждое изображение страницы, чтобы определить поля формы
3. Claude может визуально видеть расположение и типы полейВ этом примере вам нужно будет написать скрипт pdf_to_images.py.
Возможности зрения Claude помогают понять макеты и структуры.
Когда Claude выполняет сложные открытые задачи, он может допустить ошибки. Паттерн "план-проверка-выполнение" ловит ошибки на ранней стадии, заставляя Claude сначала создать план в структурированном формате, а затем проверить этот план с помощью скрипта перед его выполнением.
Пример: Представьте, что вы просите Claude обновить 50 полей формы в PDF на основе электронной таблицы. Без проверки Claude может ссылаться на несуществующие поля, создавать конфликтующие значения, пропускать обязательные поля или неправильно применять обновления.
Решение: Используйте паттерн рабочего процесса, показанный выше (заполнение формы PDF), но добавьте промежуточный файл changes.json, который проверяется перед применением изменений. Рабочий процесс становится: анализ → создание файла плана → проверка плана → выполнение → проверка.
Почему этот паттерн работает:
Когда использовать: Пакетные операции, деструктивные изменения, сложные правила валидации, высокорисковые операции.
Совет по реализации: Сделайте скрипты валидации подробными с конкретными сообщениями об ошибках, такими как "Поле 'signature_date' не найдено. Доступные поля: customer_name, order_total, signature_date_signed", чтобы помочь Claude исправить проблемы.
Навыки работают в среде выполнения кода с ограничениями, зависящими от платформы:
Перечислите необходимые пакеты в вашем SKILL.md и убедитесь, что они доступны в документации инструмента выполнения кода.
Навыки работают в среде выполнения кода с доступом к файловой системе, командам bash и возможностями выполнения кода. Для концептуального объяснения этой архитектуры см. Архитектура навыков в обзоре.
Как это влияет на вашу разработку:
Как Claude получает доступ к навыкам:
reference/guide.md), а не обратные слэшиform_validation_rules.md, а не doc2.mdreference/finance.md, reference/sales.mddocs/file1.md, docs/file2.mdvalidate_form.py вместо того, чтобы просить Claude генерировать код валидацииanalyze_form.py для извлечения полей" (выполнить)analyze_form.py для алгоритма извлечения" (прочитать как справку)Пример:
bigquery-skill/
├── SKILL.md (обзор, указывает на справочные файлы)
└── reference/
├── finance.md (метрики доходов)
├── sales.md (данные конвейера)
└── product.md (аналитика использования)Когда пользователь спрашивает о доходах, Claude читает SKILL.md, видит ссылку на reference/finance.md и вызывает bash для чтения только этого файла. Файлы sales.md и product.md остаются в файловой системе, потребляя нулевые токены контекста до тех пор, пока они не понадобятся. Эта модель на основе файловой системы позволяет постепенное раскрытие информации. Claude может навигировать и выборочно загружать ровно то, что требуется для каждой задачи.
Для полной информации о технической архитектуре см. Как работают навыки в обзоре навыков.
Если ваш навык использует инструменты MCP (Model Context Protocol), всегда используйте полные имена инструментов, чтобы избежать ошибок "инструмент не найден".
Формат: ServerName:tool_name
Пример:
Используйте инструмент BigQuery:bigquery_schema для получения схем таблиц.
Используйте инструмент GitHub:create_issue для создания проблем.Где:
BigQuery и GitHub — имена серверов MCPbigquery_schema и create_issue — имена инструментов в этих серверахБез префикса сервера Claude может не найти инструмент, особенно когда доступно несколько серверов MCP.
Не предполагайте, что пакеты доступны:
**Плохой пример: предполагает установку**:
"Используйте библиотеку pdf для обработки файла."
**Хороший пример: явно о зависимостях**:
"Установите необходимый пакет: `pip install pypdf`
Затем используйте его:
```python
from pypdf import PdfReader
reader = PdfReader("file.pdf")
```"Frontmatter SKILL.md требует полей name и description с конкретными правилами валидации:
name: Максимум 64 символа, только строчные буквы/цифры/дефисы, без XML-тегов, без зарезервированных словdescription: Максимум 1024 символа, не пусто, без XML-теговПолные детали структуры см. в обзоре навыков.
Держите тело SKILL.md под 500 строк для оптимальной производительности. Если ваше содержимое превышает это, разделите его на отдельные файлы, используя паттерны постепенного раскрытия информации, описанные ранее. Для архитектурных деталей см. обзор навыков.
Перед тем как поделиться навыком, проверьте:
Создайте свой первый навык
Создавайте и управляйте навыками в Claude Code
Загружайте и используйте навыки программно
Was this page helpful?