All skills

Компилирует личные книги, PDF/EPUB/TXT/Markdown и длинные материалы в прикладной Claude Code skill с картой источников, решающими правилами, плейбуками, словарём и проверкой качества. Используй, когда пользователь просит превратить книгу, документ, учебник, статью или набор заметок в рабочий скилл, личную карту знаний, прикладного советника, справочник по источнику или reusable skill.

Use this Skill: https://skilld.dev/gh/artwist-polyakov/polyakov-claude-skills/knowledge-compiler

This session only. Nothing lands on disk.

referencesOUTPUT_SCHEMA.md

≈3.3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Output Schema

Готовый навык создаётся как обычный Claude Code skill:

dist/<skill-name>/
├── SKILL.md
└── references/
    ├── concepts.md
    ├── decision-rules.md
    ├── playbooks.md
    ├── anti-patterns.md
    ├── glossary.md
    ├── source-map.json
    ├── source-index.md
    └── knowledge-manifest.json

SKILL.md

Главный файл должен быть коротким рабочим протоколом:

  • для каких задач использовать навык;
  • как агент должен думать с материалом;
  • какие reference-файлы читать для разных вопросов;
  • ограничения и предупреждения;
  • не больше 2000 слов.

Не превращай SKILL.md в пересказ книги. Главные детали живут в references/.

Тезисы и ссылки

Каждый тезис из source-map.json имеет уникальный claim_id: строчные латинские буквы и цифры, слова разделены одиночными дефисами, например concept-event-sourcing. Точные имена вида seg-<число> зарезервированы для сегментов и не подходят для тезисов. В файле, указанном в artifact, должен быть ровно один заголовок второго уровня ## <claim_id> вне блоков кода и HTML-комментариев. Другие заголовки не должны давать тот же якорь: например, # Concept Event Sourcing конфликтует с ## concept-event-sourcing. Отдельные поля для заголовка и якоря не нужны.

Явные HTML-якоря (id у элементов и name у <a>) в том же файле также не должны совпадать с claim_id. Сравниваются точные значения с учётом регистра; такие якоря не меняют автоматические суффиксы заголовков.

Предпочитай кликабельный источник: в файлах непосредственно внутри references/ это [seg-001](source-index.md#seg-001), из SKILL.md — [seg-001](references/source-index.md#seg-001). Для вложенных файлов подстрой относительный путь. Если ссылка содержит отдельный идентификатор seg-<число> в тексте или якоре, она должна вести в references/source-index.md этого навыка, к существующему сегменту с тем же номером. Внешний адрес, другой файл или другой номер не подходят.

Идентификатор сегмента распознаётся отдельно от соседних букв, цифр, _ и -, а не как подстрока другого имени. Например, concept-seg-001 — допустимый claim_id, и ссылка [Тезис](concepts.md#concept-seg-001) не является ссылкой на сегмент. Но явная подпись seg-001 требует точного якоря #seg-001, даже если адрес содержит другое составное имя. Проверка произвольных ссылок между документами в этот контракт не входит.

Простые указатели Источник: seg-001 также допустимы: номер должен существовать в карте источников, а перейти к нему можно через указатель. Превращать все упоминания в гиперссылки не обязательно.

Происхождение тезиса задаёт source_segments в карте; указатель строит обратные ссылки только из этого списка. Повторять все источники в тексте карточки не обязательно, а ссылка для сравнения или пояснения не становится источником тезиса автоматически. Явные подписи «Источник» согласуй с картой при компиляции. Скрипт проверяет существование сегментов и назначение ссылок, но не определяет роль каждого упоминания в тексте и не сверяет множество упоминаний раздела с source_segments.

concepts.md

Карточки понятий:

## concept-id

**Смысл:** одно-два предложения.
**Когда применять:** ситуации.
**Как распознать:** признаки в задаче пользователя.
**Связано:** другие concept-id.
**Источник:** [seg-001](source-index.md#seg-001).

decision-rules.md

Правила принятия решений:

## rule-id

Если <условие>, то <действие>, потому что <принцип>.

- Проверь: контрольные вопросы.
- Не делай: типовая ошибка.
- Источник: [seg-001](source-index.md#seg-001).

playbooks.md

Плейбук — прикладной сценарий, который можно выполнить:

## playbook-id

**Задача:** где помогает.
**Шаги:** 3-7 действий.
**Выход:** что должно получиться.
**Контроль качества:** как понять, что сработало.
**Источник:** [seg-001](source-index.md#seg-001).

source-map.json

Минимальная схема:

{
  "source_id": "sha256:<hash>",
  "segments": [
    {
      "segment_id": "seg-001",
      "title": "Глава 1",
      "char_start": 0,
      "char_end": 12000,
      "line_start": 1,
      "line_end": 340,
      "confidence": 0.82
    }
  ],
  "claims": [
    {
      "claim_id": "concept-event-sourcing",
      "artifact": "references/concepts.md",
      "source_segments": ["seg-001"],
      "extraction_type": "synthesized",
      "verbatim_quote_words": 0,
      "confidence": 0.86
    }
  ]
}

segments, claims и source_segments — непустые списки. segment_id имеет вид seg-<число> и уникален. source_segments содержит ссылки на существующие сегменты. artifact — относительный путь к существующему Markdown-файлу внутри references/, кроме производного source-index.md и других имён, ведущих к тому же файлу. Регистр расширения .md при проверке файлов не учитывается; сам путь сохраняется без изменений. Для примера выше в references/concepts.md нужен заголовок ## concept-event-sourcing.

source_id обязателен: строка sha256: и 64 строчных шестнадцатеричных символа. Он должен совпадать с source_sha256 в объекте knowledge-manifest.json. Заготовка копирует в оба поля хеш байтов исходного PDF/EPUB/TXT/Markdown из метаданных извлечения, а не хеш полученного source.txt.

Проверка подтверждает только согласованность сохранённых идентификаторов: она не пересчитывает хеш исходного файла и не доказывает, что переданный source.txt получен именно из него. Используй карту и извлечённый текст одной задачи компилятора; одинаково неверные идентификаторы эта проверка не выявляет.

У сегмента обязательны непустое название в корректном UTF-8, целочисленные координаты и confidence от 0 до 1. Символы считаются с 0, диапазон [char_start, char_end) непустой; строки — с 1, обе границы включены. Уверенность сегмента описывает разметку, а не достоверность связанных тезисов.

Диапазоны не должны выходить за пределы source.txt. Символы считаются в декодированном UTF-8 тексте, не в байтах; CRLF/CR при чтении приводятся к LF, как в сегментаторе. Число строк определяется через splitlines(): завершающий перенос не создаёт дополнительную строку, разделитель страниц \f учитывается.

Координаты должны согласовываться: line_start — строка символа char_start, line_end — строка последнего включённого символа char_end - 1. Разделитель строки относится к завершаемой строке. Проверка использует тот же расчёт, что и segment_text.py.

У каждого тезиса обязательны extraction_type, verbatim_quote_words и confidence. Число дословно процитированных слов — целое, неотрицательное; уверенность — число от 0 до 1 включительно. Логические значения вместо чисел не допускаются. Проверка контролирует эти поля, но не определяет фактическую достоверность тезиса и не пересчитывает цитаты.

Допустимые значения extraction_type:

  • synthesized — переработанная идея;
  • named-framework — сохранено авторское название метода;
  • short-quote — короткая цитата, если она действительно нужна;
  • inferred — вывод агента на основе нескольких мест источника.

source-index.md

Указатель генерирует quality_gate.py --write-source-index из заполненного source-map.json после успешных проверок. Заготовка навыка его не создаёт; вручную указатель не редактируй.

Сам путь указателя не должен быть символической ссылкой, а его файл не должен иметь жёстких ссылок под другими именами: это защищает самостоятельные документы от перезаписи. Дополнительные символические ссылки на указатель сами по себе не запрещены, но не могут использоваться в artifact тезиса; их содержимое проверяется по общим правилам Markdown.

Для каждого сегмента он содержит якорь seg-*, название, диапазоны строк и символов, уверенность и относительные ссылки на связанные тезисы в готовом навыке. Координаты относятся к извлечённому source.txt, а не к страницам PDF. Исходный текст, фрагменты источника и абсолютные локальные пути в указатель не входят; сам источник остаётся в кеше сборки.

knowledge-manifest.json

Фиксирует происхождение:

{
  "title": "Название",
  "author": "Автор",
  "scope": "individual",
  "source_file": "/path/to/file.pdf",
  "source_sha256": "sha256:...",
  "extraction_method": "pdftotext",
  "epub_title": "Название из OPF, если есть",
  "epub_author": "Автор из OPF, если есть",
  "epub_toc_source": "ncx",
  "created_at": "2026-05-07T12:00:00Z",
  "limitations": ["OCR not performed"]
}

Source: SKILL.md on GitHub

1 warning17d3 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    The skill is a document processing utility designed to compile PDF and EPUB files into new AI agent skills. It follows security best practices for document extraction and environment management. The primary risk is inherent to its function: it ingests untrusted external content and uses it to generate behavioral instructions for an agent, creating a surface for indirect prompt injection.

  • Socket17d

    1 alert: gptSecurity

  • Snyk17d

    Risk: LOW · No issues

Signed by skilld at 1cca906. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated 4 weeks ago

README badge

README badge for artwist-polyakov/polyakov-claude-skills/knowledge-compiler