agentsclimarketplace

Artifactor

Skill TserenTserenov/FMT-exocortex-template/.claude/skills/artifactor

Classifies raw pilot request → structured JSON {task_type, class, artifact, budget_estimate, confidence, routing_tag, resolution_path}. Keyword-fast (<200ms) or Haiku fallback (<60s). Does NOT create WP or call executor.From its SKILL.md

Install
npx -y skills add TserenTserenov/FMT-exocortex-template --skill artifactor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • runs commandsInstructs the agent to run 1 command, including `python3 "${IWE_SCRIPTS:-$HOME/IWE/scripts}/artifactor.py" "$ARGUMENTS"`.

SKILL.md

4.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

/artifactor — Артефактор-Постановщик

Роль: DP.ROLE.058 Артефактор-Постановщик
Триггер: запрос без routing-tag (Маршрутизатор → Артефактор) или /artifactor "текст"
Service Clause: DP.SC.160

When to use

Classifies raw pilot request → structured JSON {task_type, class, artifact, budget_estimate, confidence, routing_tag, resolution_path}. Keyword-fast (<200ms) or Haiku fallback (<60s). Does NOT create WP or call executor.

Обещание (контракт)

Вход: сырой текст запроса пилота (любой длины, без routing-tag)
Выход: JSON 7 полей → stdout:

{
  "task_type": "string",
  "class": "trivial | closed-loop | open-loop | problem-framing",
  "artifact": "string (одна строка на русском — существительное-результат)",
  "budget_estimate": "~Xh | ?",
  "confidence": "high | low",
  "routing_tag": "string",
  "resolution_path": "keyword | llm"
}

Инвариант:

  • НЕ создаёт РП, НЕ вызывает исполнителя, НЕ задаёт уточняющих вопросов
  • confidence=high только при keyword-пути; confidence=low при LLM-пути
  • При запросе <5 слов: вернуть {"error": "INSUFFICIENT_INPUT"}, стоп
  • budget_estimate: "?" только при problem-framing или полной неопределённости

Algorithm

Шаг 1. Keyword-lookup

Запустить скрипт (возвращает JSON или сигнал):

python3 "${IWE_SCRIPTS:-$HOME/IWE/scripts}/artifactor.py" "$ARGUMENTS"

Интерпретация результата:

  • stdout = JSON (exit 0) → вернуть пилоту, стоп
  • stdout = INSUFFICIENT_INPUT (exit 1) → вернуть {"error": "INSUFFICIENT_INPUT"}, стоп
  • stdout = NO_KEYWORD_MATCH (exit 2) → перейти к Шагу 2

Шаг 2. LLM-классификация (fallback при NO_KEYWORD_MATCH)

Заполнить все 7 полей, используя правила ниже. Вернуть JSON с resolution_path: "llm" и confidence: "low".

Правила class:

КлассКритерий
trivialПротокол без неопределённости (day-open, week-close, peer-сессия)
closed-loopЧёткая спецификация + известный метод (баг-фикс, миграция, ревью, триаж)
open-loopНет спецификации, нужно генерировать (контент-план, диагностика, сценарии)
problem-framingРасплывчато, метод неизвестен (идеи, концепции, «что-то придумать с X»)

При сомнении — выбирать более широкий класс (open-loop, не closed-loop).

Правила artifact: одна строка на русском, существительное-результат.
Примеры: «Список тем для трёх постов», «Диагностический отчёт латентности», «ТЗ сценариев».

Правила budget_estimate:

  • trivial~0.5h
  • closed-loop~2h (если нет конкретного числа в запросе)
  • open-loop~3h
  • problem-framing?

Поле routing_tag = значение task_type (snake_case).

Шаг 3. Вернуть результат

Вывести JSON в stdout. Без дополнительных пояснений.

Режим отказа

СценарийПоведение
Запрос < 5 слов{"error": "INSUFFICIENT_INPUT"}
Скрипт не найден / сбойПерейти к Шагу 2 напрямую
Запрос на иностранном языкеКлассифицировать как есть, confidence: low
<!-- USER-SPACE --> <!-- /USER-SPACE -->

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.