BC feishu-doc-scraper
Извлекает документы Feishu (Lark), страницы/коллекции Wiki, электронные таблицы и стенограммы Minutes (妙记) в локальный Markdown через API lark-cli (без переписывания содержимого LLM; резервный вариант с использованием браузера DOM, когда lark-cli не может получить доступ к контенту). Используйте, когда источником является URL Feishu/Lark и важна точность — 导出飞书文档/合集/妙记转写, 把飞书 wiki/知识库转 markdown, архивирование коллекции Feishu, экспорт стенограммы 妙记 или сохранение страницы Feishu — даже если пользователь просто говорит «клиппинг», «архивирование», «конвертация» или «сохрани это». Также охватывает путь преобразования .docx, экспортированного владельцем, в точный Markdown. Чтение документов включает комментарии, отзывы и все ответы в выбранной решенной области; комментарии Minutes не входят в эту возможность.
машинный переводПоказать оригиналСкрыть оригинал«Extract Feishu (Lark) Docs, Wiki pages/collections, spreadsheets, and…»
Extract Feishu (Lark) Docs, Wiki pages/collections, spreadsheets, and Minutes (妙记) transcripts into faithful local Markdown via the lark-cli API (no LLM rewriting of the body; browser-DOM fallback when lark-cli can't reach the content). Use whenever the source is a Feishu/Lark URL and fidelity matters — 导出飞书文档/合集/妙记转写, 把飞书 wiki/知识库转 markdown, archiving a Feishu collection, exporting a 妙记 transcript, or saving a Feishu page — even if the user only says clipping, archiving, converting, or "save this". Also covers the owner-exported .docx → faithful Markdown path. Document reading includes comments, feedback and all replies in the selected solved scope; Minutes comments are outside this capability.
Извлекает документы Feishu (Lark), страницы/коллекции Wiki, электронные таблицы и стенограммы Minutes (妙记) в локальный Markdown через API lark-cli (без…
Как процесс C 63/100 · Есть пробелы — слабые места: результат и критерий готовности, входы и предусловия, повторный запуск
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
Инструкции или скрипты отправляют данные наружу: переменные окружения, ключи, содержимое файлов, историю чата. Вы можете не заметить этого в диалоге, потому что агент выполнит отправку как «часть задачи».
Если отправка не нужна для задачи, уберите её: каталоги помечают такие скиллы как подозрительные и снимают с выдачи. Если нужна, назовите адрес явно, объясните, что именно уходит, и дайте пользователю выключатель.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
В файлах есть невидимые символы, закодированные команды или спрятанные комментарии для модели. То, что вы читаете, отличается от того, что видит агент.
Уберите невидимые символы (часто они попадают из копипаста) и закодированные строки: их не пропустит ни один каталог. Инструкции для модели должны быть видны и человеку.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
- Тело SKILL.md длиннее 5 000 токенов: вынесите справочные детали в references/ и подключайте по необходимости.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 3
-
высокая Утечка данных
intent-browser-credential-storescripts/download_feishu_images.py:200Доступ к хранилищу паролей / cookies браузераcookies = brow…ome()
Средние и низкие: 2
-
средняя Обфускация
uni-zero-widthscripts/feishu_dom_capture.js:53Невидимые символы нулевой ширины (возможен скрытый текст) (6 шт.)return result.replace(/[␀␀]/g, '');
-
средняя Обфускация
uni-zero-widthscripts/restore_docx_headings.py:54Невидимые символы нулевой ширины (возможен скрытый текст) (4 шт.)_ZERO_WIDTH = "␀␀␀␀"
Просканировано файлов: 18. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
body-longтело SKILL.md ≈ 6483 токенов (рекомендуется < 5000); вынесите детали в references/ - заметка
edit-residueв тексте есть пометки об устаревшем (строки 88): проверьте, не остались ли старые правила рядом с новыми — полная проверка читает текст на противоречия
Процессный рейтинг: все десять параметров 63/100
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 30Повторный запуск. Изменяющих операций: 7, без проверки текущего состояния
- 40Результат и критерий готовности. Не сказано, что считать результатом
- 60Инструменты и файлы. Используются инструменты (bash, web, python, node), но во frontmatter они не объявлены
- 70Когда включается. Сказано, когда применять, но не сказано, когда не стоит
- 70Стоимость исполнения. Тело инструкции 6483 токенов
- 100Шаги. Шагов: 51
- 100Ошибки и развилки. Развилок: 1, есть раздел про ошибки
- 100Согласованность. Имя и обязательные поля на месте
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
- low Разделов верхнего уровня: 11. Похоже на несколько доменов в одном скилле
- low Ответ описан самодельной разметкой (25 тегов): типизированный вызов надёжнее
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- +1Лицензия не указана
- +2Инструкции на одном языке
- +3Длина description 704 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 12 заголовков
- +3Пошаговые инструкции: 51 пунктов
- +4Есть примеры (8 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (9 из 9)
- +3Все 8 скриптов описаны в инструкциях
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 81.