Skillforge
Skillforge -- это автоматизированный конвейер PRX для обнаружения, оценки и интеграции новых навыков (инструментов) из внешних источников. Вместо ручной настройки каждого инструмента Skillforge может разведывать GitHub-репозитории и реестр Clawhub, оценивать, подходит ли обнаруженный навык для нужд вашего агента, и генерировать манифест интеграции -- всё без вмешательства человека.
Обзор
Конвейер Skillforge состоит из трёх этапов:
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Разведка │────▶│ Оценка │────▶│ Интеграция │
│ │ │ │ │ │
│ Обнаружение │ │ Скоринг │ │ Генерация │
│ навыков из │ │ фитнеса, │ │ манифеста, │
│ GitHub, │ │ проверка │ │ внедрение │
│ Clawhub │ │ безопасности │ │ в конфиг │
└─────────────┘ └──────────────┘ └──────────────┘| Этап | Трейт | Ответственность |
|---|---|---|
| Разведка | Scout | Обнаружение кандидатов навыков из настроенных источников |
| Оценка | Evaluator | Скоринг каждого кандидата по фитнесу, безопасности и совместимости |
| Интеграция | Integrator | Генерация манифестов и регистрация навыков в реестре инструментов |
Архитектура
Skillforge построен на трёх ключевых асинхронных трейтах: Scout (обнаруживает кандидатов по SearchCriteria), Evaluator (оценивает кандидатов по фитнесу и безопасности) и Integrator (генерирует манифесты и регистрирует навыки). Каждый трейт может иметь множество реализаций, и оркестратор конвейера выполняет их последовательно, фильтруя кандидатов на каждом этапе.
Конфигурация
[skillforge]
enabled = true
# Автоматическое обнаружение: периодический поиск новых навыков.
auto_discover = false
discover_interval_hours = 24
# Минимальный балл оценки (0.0-1.0) для интеграции навыка.
min_fitness_score = 0.7
# Требовать ручное одобрение перед интеграцией обнаруженных навыков.
require_approval = true
# Максимальное количество навыков для оценки за один цикл обнаружения.
max_candidates = 20Источники разведки
Настройте, где Skillforge ищет навыки:
[skillforge.sources.github]
enabled = true
# GitHub-репозитории для поиска.
# Поддерживает паттерны org/user и обнаружение по темам.
search_topics = ["prx-skill", "mcp-server", "ai-tool"]
search_orgs = ["openprx", "modelcontextprotocol"]
# Ограничение частоты для вызовов GitHub API.
max_requests_per_hour = 30
# Токен GitHub для повышенных лимитов (опционально).
# token = "${GITHUB_TOKEN}"
[skillforge.sources.clawhub]
enabled = true
# Эндпоинт реестра Clawhub.
registry_url = "https://registry.clawhub.dev"
# Категории для поиска.
categories = ["tools", "integrations", "automation"]Этап разведки
Разведчик обнаруживает кандидатов навыков из настроенных источников. Каждый источник реализует трейт Scout по-своему:
Разведчик GitHub
Ищет на GitHub репозитории, соответствующие настроенным темам, организациям или поисковым запросам. Для каждого подходящего репозитория разведчик извлекает:
- Метаданные репозитория (имя, описание, звёзды, дата последнего обновления)
- Содержимое README (для анализа возможностей)
- Файлы манифестов (
prx-skill.toml,mcp.json,package.json) - Информацию о лицензии
Разведчик Clawhub
Запрашивает API реестра Clawhub для опубликованных навыков. Clawhub предоставляет структурированные метаданные, включая:
- Имя навыка, версию и описание
- Схемы ввода/вывода
- Требования к зависимостям
- Теги совместимости (версия PRX, ОС, среда выполнения)
Критерии поиска
pub struct SearchCriteria {
/// Ключевые слова, описывающие желаемую возможность.
pub keywords: Vec<String>,
/// Требуемая среда выполнения: "native", "docker", "wasm" или "any".
pub runtime: String,
/// Минимальное количество звёзд репозитория (только GitHub).
pub min_stars: u32,
/// Максимальный возраст последнего коммита в днях.
pub max_age_days: u32,
/// Требуемые типы лицензий (напр., "MIT", "Apache-2.0").
pub licenses: Vec<String>,
}Этап оценки
Каждый кандидат проходит через оценщик, который выдаёт балл фитнеса и оценку безопасности:
Критерии оценки
| Критерий | Вес | Описание |
|---|---|---|
| Релевантность | 30% | Насколько навык соответствует критериям поиска |
| Качество | 25% | Сигналы качества кода: тесты, CI, документация |
| Безопасность | 25% | Совместимость лицензии, аудит зависимостей, отсутствие опасных паттернов |
| Сопровождение | 10% | Недавние коммиты, активные мейнтейнеры, время ответа на issues |
| Совместимость | 10% | Совместимость с версией PRX, выполнение требований среды выполнения |
Проверки безопасности
Оценщик выполняет автоматический анализ безопасности: сканирование совместимости лицензий, аудит уязвимостей зависимостей, обнаружение опасных паттернов кода (сетевые вызовы, доступ к файловой системе, eval) и верификацию совместимости с песочницей.
Структура Evaluation содержит общий fitness_score (0.0-1.0), баллы по каждому критерию, security_status (safe/caution/blocked), человекочитаемое резюме и список замечаний.
Этап интеграции
Навыки, прошедшие порог оценки, переходят на этап интеграции:
Генерация манифеста
Интегратор генерирует Manifest, описывающий, как установить и зарегистрировать навык:
# Сгенерированный манифест: ~/.local/share/openprx/skills/web-scraper/manifest.toml
[skill]
name = "web-scraper"
version = "1.2.0"
source = "github:example/web-scraper"
runtime = "docker"
fitness_score = 0.85
integrated_at = "2026-03-21T10:30:00Z"
[skill.tool]
name = "web_scrape"
description = "Scrape and extract structured data from web pages."
[skill.tool.parameters]
url = { type = "string", required = true, description = "URL to scrape" }
selector = { type = "string", required = false, description = "CSS selector" }
format = { type = "string", required = false, default = "text", description = "Output format" }
[skill.runtime]
image = "example/web-scraper:1.2.0"
network = "restricted"
timeout_secs = 30Регистрация
После генерации манифеста навык регистрируется в реестре инструментов PRX. Если require_approval = true, манифест ставится в очередь на рассмотрение:
# Список ожидающих интеграций навыков
prx skillforge pending
# Обзор ожидающего навыка
prx skillforge review web-scraper
# Одобрение интеграции
prx skillforge approve web-scraper
# Отклонение интеграции
prx skillforge reject web-scraper --reason "Security concerns"CLI-команды
# Ручной запуск цикла обнаружения
prx skillforge discover
# Обнаружение с конкретными ключевыми словами
prx skillforge discover --keywords "web scraping" "data extraction"
# Оценка конкретного репозитория
prx skillforge evaluate github:example/web-scraper
# Список всех интегрированных навыков
prx skillforge list
# Показать детали навыка
prx skillforge info web-scraper
# Удалить интегрированный навык
prx skillforge remove web-scraper
# Переоценить все интегрированные навыки (проверка обновлений, проблем безопасности)
prx skillforge auditИнтеграция с самоэволюцией
Skillforge интегрируется с конвейером самоэволюции PRX. Когда агент выявляет пробел в возможностях, он может автоматически запустить цикл обнаружения -- разведку, оценку и (при одобрении) интеграцию подходящего навыка для следующего хода.
Замечания по безопасности
- Шлюзы одобрения -- всегда устанавливайте
require_approval = trueв продакшене. Автоматическая интеграция недоверенного кода представляет угрозу безопасности. - Применение песочницы -- интегрированные навыки выполняются в тех же ограничениях песочницы, что и встроенные инструменты. Бэкенд песочницы должен быть настроен.
- Доверие к источникам -- включайте только те источники разведки, которым доверяете. Публичный поиск на GitHub может вернуть вредоносные репозитории.
- Проверка манифестов -- проверяйте сгенерированные манифесты перед одобрением. Обратите внимание на настройки
runtime,networkиtimeout_secs. - Журнал аудита -- все операции Skillforge логируются в журнале активности для проверки соответствия.