SkillsVote — скилл
Два скилла подбирают другие скиллы под задачу: облачный скачивает их из индекса и собирает отзыв, локальный ищет по вашим папкам с SKILL.md
- 305 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Облачный вариант отправляет на api.skills.vote переписанную задачу и сводку действий по подзадачам, а ключ API хранит в файле .env внутри папки скилла
- Скачивает чужие скиллы с GitHub в проект, и агент затем следует их инструкциям и запускает их скрипты
- Запускает скрипты через `uv run` и может записывать токен GitHub в тот же файл .env
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/skillsvoteОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Облачный вариант отправляет на api.skills.vote переписанную задачу и сводку действий по подзадачам, а ключ API хранит в файле .env внутри папки скилла
- Скачивает чужие скиллы с GitHub в проект, и агент затем следует их инструкциям и запускает их скрипты
- Запускает скрипты через `uv run` и может записывать токен GitHub в тот же файл .env
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
SkillsVote от MemTensor решает проблему большого набора скиллов: вместо длинного списка в контексте агент получает только подходящие скиллы под конкретную задачу. В репозитории два скилла в папке integration/skills и исследовательский код, на котором авторы строили оценку. `skills-vote` работает с облачным сервисом. Агент переписывает задачу в самостоятельный поисковый запрос и один раз запускает `scripts/recommend.py` через `uv run`: скрипт отправляет запрос в api.skills.vote, получает список скиллов и скачивает их из GitHub в папку `.skills_vote/`. Выполнение может занять около пяти минут, и агент обязан дождаться конца. Когда задача сделана, `scripts/feedback.py` отправляет отзыв: какие скиллы реально применялись, чем закончилась каждая подзадача и какое окружение требовалось. `skills-vote-local` ищет в вашей собственной библиотеке и облачного ключа не требует. В `configs/config.yaml` вы перечисляете маски путей к SKILL.md, затем `scripts/route_prompt.py` выдает агенту инструкции по выбранному маршруту: основной агент или субагент, один проход или до трех. Метод поиска по умолчанию агентный, без индекса и сервиса эмбеддингов, а векторный на базе Chroma включается отдельно.
Для кого. Для тех, у кого десятки или тысячи скиллов и кто хочет, чтобы Claude Code, Codex или другой агент брал из них только нужные, а не грузил в контекст все описания сразу.
Подходит, если
- В агенте накопилось столько скиллов, что их описания занимают заметную часть контекста
- Перед сложной задачей хочется найти внешние скиллы под нее, а не перебирать каталоги вручную
- У команды есть частная библиотека SKILL.md, которую нельзя отправлять в облако
- Нужно собирать отзывы о том, какие подобранные скиллы реально пригодились в работе
- Вы изучаете подбор и эволюцию скиллов и хотите воспроизвести эксперименты авторов на Terminal-Bench
Не подходит, если
- Сеть недоступна или запросы нельзя отправлять наружу: облачный `skills-vote` ходит в api.skills.vote, офлайн годится только `skills-vote-local`
- Нужны оценка и развитие скиллов внутри локальной библиотеки: эта часть для `skills-vote-local` есть в дорожной карте авторов, но еще не выпущена
- На машине нельзя поставить менеджер `uv`: оба скилла запускают скрипты командой `uv run`
- Вы вообще не рассматриваете внешние скиллы: сам `skills-vote` предписывает в таком случае его пропустить
- Набор небольшой и вы знаете нужные скиллы: подбор оправдан для большой библиотеки, а для двух-трех скиллов хватит обычной установки
Пример запроса к агенту
Перед тем как начать, подбери скиллы под задачу: добавить интеграционные тесты для FastAPI-сервиса с моком шлюзаОграничения
- Облачному `skills-vote` нужен ключ `SKILLS_VOTE_API_KEY`, сведений о том, как его получить, в репозитории нет. Скачивание скиллов с GitHub без токена упирается в лимиты, для приватных репозиториев нужен `GH_TOKEN` или `GITHUB_TOKEN`.
- Поле `client_name` принимает семь значений: codex, codex-app, claude-code, cursor, gemini-cli, openclaw-cli, opencode. Остальные агенты это поле опускают.
- В дорожной карте не закрыты два пункта: атрибуция и эволюция для `skills-vote-local` и публикация траекторий основных экспериментов.
- Маршрут `subagent_multi_pass` из примера конфигурации требует, чтобы агент умел создавать субагентов. Если нет, запускается вариант с флагом `--fallback`.
- Векторный поиск требует службу эмбеддингов, в примере это совместимый с OpenAI адрес и ключ в переменной.
- Экспериментальная часть написана для Python 3.12 и новее и использует Harbor. Лицензия MIT.
Как отключить. Удалите папку скилла `skills-vote` или `skills-vote-local` из каталога скиллов агента, например командой `npx skills remove`. Для облачного варианта удалите файл .env в папке установленного скилла вместе с ключом и системную переменную `SKILLS_VOTE_API_KEY`, если ставили ее в профиль. Скачанные рекомендации лежат в `.skills_vote/` проекта, их можно удалить как обычные файлы.
Частые вопросы
Какие данные уходят в облако вместе с отзывом?
По описанию `feedback.py` это идентификатор сессии, семейство ОС, предполагаемая область записи, нужны ли права администратора, зависимость от сети, имена переменных окружения без значений, список исполняемых файлов и MCP-серверов и текстовая сводка по каждой подзадаче: цель, действия, применявшиеся скиллы, исход и его обоснование.
Куда попадают рекомендованные скиллы?
В папку `.skills_vote/` относительно текущего каталога, если в запросе не указан другой `download_dir`. Скрипт `download.py` берет файлы через GitHub API, поэтому лимиты и приватные репозитории упираются в токен.
Как выбрать маршрут в локальном варианте?
Поле `routing.mode` в `configs/config.yaml` принимает `main_single_pass`, `main_multi_pass`, `subagent_single_pass` и `subagent_multi_pass`. Пример конфигурации ставит последний с тремя проходами, а `retrieval.method` по умолчанию равен `agentic_search`.
Где искать скиллы в локальном режиме?
Маски путей задаются в `skill_library.include`, а исключения вроде .git, node_modules, .venv и dist уже есть в примере. При агентном поиске область поиска всегда ./.skills/, а скрипт `sync_skills.py` собирает туда найденные скиллы под псевдонимами.
На каких тестах авторы проверяли подход?
На Terminal-Bench Pro, Terminal-Bench 2.0 и SWE-Bench Pro. По их выводам подбор скиллов в нужный момент и эволюция по отзывам улучшают результат на длинных задачах. Конфигурации и скрипты воспроизведения описаны в docs/experiment.md, технический отчет опубликован на arXiv под номером 2605.18401.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыСкилл для создания, проверки и улучшения других скиллов: сначала архитектура, потом тесты, оценка и упаковка
CLI-менеджер скиллов для ИИ-агентов: установка из репозиториев, перевод между форматами разных агентов и раскладка в их конфигурацию
CLI, который определяет стек проекта и одной командой ставит подходящие скиллы для агентов из проверенного реестра
Darwin Skill
darwin-skill
Скилл для улучшения других скиллов: оценка SKILL.md по девяти критериям, правка, проверка тестовыми запросами и откат
Скилл, который помогает агенту писать другие скиллы по спецификации agentskills.io: структура, метаданные, прогрессивная подача и проверка
Скилл-оркестратор: замораживает требования, планирует задачу по фазам и сам подбирает из локальных скиллов те, что нужны для работы
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| SkillsVote (эта запись) | нет | 305 | |
| SkillNet | нет | 1 419 | отдельный CLI и Python SDK: ищет скиллы в общей публичной библиотеке, скачивает, создает новые и оценивает их |
| SkillCorpus | нет | 690 | открытый конвейер: собирает SKILL.md из репозиториев, проверяет безопасность и лицензии, оценивает качество и подбирает скиллы |
Коротко о README
Описание начинается с постановки задачи: как управлять жизненным циклом скиллов от сбора до обновления. Дальше идут четыре этапа цикла, новости с апреля по май 2026 года, дорожная карта с двумя незакрытыми пунктами, три бенчмарка и быстрый старт с таблицей двух вариантов установки. В репозитории лежат Python-пакет `skills_vote` с модулями рекомендации, отзыва, эволюции и маршрутизатора, скрипты экспериментов Harbor, Dockerfile и примеры рекомендаций на скиллах pdf, xlsx и других.
Бейдж для README
Исходный SKILL.md
---
name: skills-vote
description: Find the most relevant external agent skills for the current task, then submit grounded feedback about which skills were actually used and useful in the same session. Whenever you start a task, use this skill first.
metadata:
version: "1.1.0"
---
# Skill Discovery And Feedback
Read only this file first. Do not read `scripts/` or any other files in this skill unless this file or a script output explicitly tells you to do so.
Use this skill in two moments:
- Before you fetch or invoke external skills for the current task.
- After the task is effectively done, to report what skills were actually useful.
Skip this skill if you are not considering any external skills at all.
All paths mentioned in this file are relative to this skill root. `cd` to this root directory before running any command here.
## Preconditions
Before using this skill, ensure that:
- `SKILLS_VOTE_API_KEY` is set in the environment
- `uv` is installed and available on `PATH`
- the runtime can execute local scripts with `uv run`
- `GITHUB_TOKEN` or `GH_TOKEN` may be needed later if GitHub blocks skill downloads because the repo is private or rate-limited
1. Confirm `SKILLS_VOTE_API_KEY` is set:
- macOS or Linux: `bash scripts/check_api_key.sh`
- Windows PowerShell: `powershell -ExecutionPolicy Bypass -File scripts/check_api_key.ps1`
2. Verify that `uv` is installed: `uv -V`
3. If `uv` is missing, install it from the [official docs](https://docs.astral.sh/uv/getting-started/installation/).
- macOS or Linux:
- If curl is available, `curl -LsSf https://astral.sh/uv/install.sh | sh`
- Otherwise `wget -qOhttps://astral.sh/uv/install.sh | sh`
- Windows PowerShell: `powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"`
4. Verify again: `uv -V`
## Recommend
### Request schema
`recommend.py` accepts one JSON object with these fields:
`query` (`str`): A standalone, explicit, and retrieval-optimized description of the user's task. Rewrite the original request to improve clarity, specificity, and usefulness for search, retrieval, or downstream planning. When appropriate, include reasonable implied constraints, likely substeps, supporting tasks, or candidate approaches that are directly relevant to completing the task. Favor expansions that make the task easier to retrieve against or execute, but avoid adding weakly supported assumptions, unrelated details, or excessive verbosity. For example, if the original query is "make a video," the rewritten query may expand it into a fuller task such as planning the content, identifying the audience, drafting a script, preparing slides, designing charts or visual assets, considering animation tools like Manim, recording narration, editing the final video, and rehearsing delivery.
- `client_name` (`Literal["codex", "codex-app", "claude-code", "cursor", "gemini-cli", "openclaw-cli", "opencode"] | None = None`): Name of this agent. If unknown/unverified or not listed, omit the field or return `null`.
- `client_version` (`str | None = None`): Version of this agent. Prefer the exact version string reported by the client itself. If unknown/unverified, omit the field or return `null`.
- `download_dir` (`str = ".skills_vote/"`): Directory to download recommended skills into. Relative paths are resolved from the current working directory. The path must be writable from the current runtime.
### Example
Before sending the request, try to identify the `client_name` and `client_version` from the executable or CLI when possible. If no command exists to extract the version and it cannot be retrieved from the environment (e.g., some desktop apps), omit these fields.
| `client_name` | `client_version` | `command` | `output` |
| :-: | :-: | :-: | :-: |
| `openclaw-cli` | `2026.3.24` | `openclaw -v` | `OpenClaw 2026.3.24 (cff6dc9)` |
| `codex` | `0.117.0` | `codex -V` | `codex-cli 0.117.0` |
| `codex-app` | `26.325.21221` | `N/A` | `N/A` |