agentsclimarketplace

Artifactor

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

Exocortex template: fork & deploy your AI-powered personal knowledge system with Claude Code

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.

What its author says it does

Copied from the file, not written here

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.

SKILL.md

4.9 KB, 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 -->

Keep looking

Skills are one crate of 328,083. 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.