From hi_flow
Use when operator needs to create a product spec for a single feature ("продуктовая спека", "спека на фичу", "продуктовый дизайн фичи", "анализ продукта", "анализ нашей фичи", "давай продумаем фичу"). Conducts structured brainstorm with hierarchical fork discovery using 8-category probing taxonomy + HAZOP guidewords + premortem. Outputs product-spec.md with cell-based decision tree, cross-cutting policies, reusable sub-policies. Solo-founder oriented, plain product Russian by default.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hi_flow:feature-specThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ведёт оператора от запроса фичи к подписанной product-spec.md, которая (1) даёт оператору фокус для deep review, (2) даёт следующей фазе (`hi_flow:arch-spec`) однозначное основание для архитектурного дизайна.
hi_flow:feature-spec — Feature-Level Product Spec SkillВедёт оператора от запроса фичи к подписанной product-spec.md, которая (1) даёт оператору фокус для deep review, (2) даёт следующей фазе (hi_flow:arch-spec) однозначное основание для архитектурного дизайна.
Skill systematically выявляет иерархические продуктовые развилки (forks) — конкретные поведенческие решения, edge cases, hard policies, критерии разграничения похожих ситуаций — через структурированный диалог с оператором.
hi_flow:product-spec).hi_flow:arch-spec, hi_flow:impl-plan).Один файл product-spec.md в формате, описанном ниже. Расположение: <project>/docs/specs/YYYY-MM-DD-<feature-slug>-product-spec.md (настраиваемо).
Skill активируется только на эти явные фразы:
После активации генерируй proposal по выбору пути:
Асимметрия cost'ов обосновывает conservative default: false negative (direct там, где нужен brainstorm) → пропущенные forks → архитектурный долг. Cost радикально выше потери времени на лишний brainstorm. В сомнении → brainstorm.
[Self-assessment: hi_flow:feature-spec]
Предлагаю: brainstorm / direct / skip
Причина: <одно-два предложения>
Факторы:
- Input completeness: high / medium / low
- Scope: small / medium / large
- Stakes: low / high
- Similarity: new / template available
- Cross-feature touches: isolated / many
Подтверди / измени.
Оператор может override любое предложение или сразу указать конкретный путь («запусти brainstorm под X», «direct по моему input'у»).
Все пути запускаются только после confirmation. Skill ничего не делает молча — каждый переход даёт оператору момент согласия / override.
После confirmation в self-assessment → один из трёх путей.
Завершение без артефакта. Если оператор не согласен с skip — он не подтверждает, а override'ит на direct или brainstorm в self-assessment proposal. Skip case рассмотрен только когда оператор явно сказал «да, skip». На skip-confirmation подтверди оператору exit одной короткой фразой («Закрываюсь, продуктовой составляющей не вижу») и заверши.
Читай input оператора, структурируй в product-spec.md по формату (см. ниже), покажи финальный draft, оператор апрувит или просит правки. Минимум диалога.
На direct path сохраняются: Sample dialogs (mandatory — оператор всё равно должен видеть concrete user paths) и базовая структура форматов (Контракт входа/выхода, Развилки cell-формата). Premortem — опционально, спроси оператора нужен ли он на direct path.
Три под-фазы: operator-dump → agent probing → closure.
Начни с одного открытого вопроса:
«Расскажи, что у тебя уже есть про эту фичу — цели, поведение, развилки, ограничения. Дамп всё, что в голове.»
Параллельно (если в проекте есть ARCHITECTURE.md) прочитай Module Map и Active Decisions — для понимания existing features (нужно для Cross-feature integration probe).
Дамп может быть пустым («хочу X, ничего пока не думал») — переходи к probing без него.
Идёшь через 8 probe-категорий (раздел Probing Taxonomy ниже) как floor checklist, плюс свободно добавляешь адаптивные probes по контексту.
Probing итеративный: вопрос → ответ оператора → запись в новый или существующий fork cell → следующий probe.
Park-and-continue: если оператор говорит «не знаю» / «позже» — записывай в Открыто и идёшь дальше. Никаких deadlock'ов.
Cross-cutting probes (всегда активны):
Closing probe (mandatory at end):
После coverage-based closure criterion enumerate все open items:
Решение — вероятный блокер для следующей фазы.Открыто поля — sub-questions, обычно не блокеры.Каждый item flag'ируй: вероятный блокер / желательно / уточнить. (В таблице Open items at closure используется та же лексика, см. раздел Output Format.)
Оператор per item решает: resolve сейчас / оставить для следующей фазы эскалации / out of scope.
После — пиши финальный product-spec.md, покажи оператору, жди подтверждения. На «да» — сохраняй и выходи. На правки — вноси и переспрашивай.
Переходи к Closure только при выполнении всех:
До этого — probing продолжается.
При обнаружении ambiguity, которую не можешь решить — эскалируй оператору. Не перезапускай предыдущую фазу (если она была — например, product-level skill).
Floor checklist для агента в Brainstorm path: 8 probe-категорий + 1 cross-cutting probe + 1 cross-cutting check + 1 closing probe + 1 closure criterion.
Проходи через все категории, но не обязан генерировать forks в каждой. Пустая категория — нормальный результат, если у фичи действительно нет соответствующих решений. Не заполняй искусственно — это путь к галлюцинациям.
Каждая категория имеет explicit Procedure (input → algorithm → output). Адаптивные probes допустимы как дополнение к процедуре, не замена.
Procedure:
Output: список полей с метаданными.
Procedure: для каждого поля прогонь HAZOP guidewords:
Каждый guideword → 1 probe «как бот реагирует на это?». Нерелевантные пропускай явно.
Output: forks для нетривиальных реакций.
Procedure:
Decision table format (внутри fork cell в качестве Branches replacement):
**Branches [XOR]** (decision table):
| field_a | field_b | branch | действие |
|---------|---------|--------|--------------------------------------|
| - | - | — | <inline action>. END. |
| + | - | F1.1 | <action или → see F1.1> |
| - | + | F1.2 | <action или → see F1.2> |
| + | + | F1.3 | <action или → see F1.3> |
Условные обозначения: + = есть/true, - = нет/false, * = don't-care (любое значение). Branch column пуст (—) для inline-веток без cell'и.
Output: combination forks / decision tables.
Procedure: per user-visible output walk через 5 стандартных user reactions:
Каждая → probe «как бот реагирует?».
Output: forks per (output, reaction).
Procedure: срабатывает если домен имеет ethical / safety / medical / legal риск.
Важно: не фабрикуй policy для нейтральных фич. Если риска нет — категория пропускается без записи.
Output: policy-forks. Уходят в раздел Cross-cutting policies, не в основное дерево.
Procedure: срабатывает при наличии ≥2 похожих внешне ситуаций.
Важно: не изобретай псевдо-disambiguation для заполнения категории. Если нет реальных near-misses — категория пропускается.
Output: disambiguation forks с критериями + examples.
Procedure: per state-change из Контракта выхода — 5 lifecycle вопросов:
Output: lifecycle forks.
Procedure:
ARCHITECTURE.md (если есть).Output: integration forks.
При появлении любой vague-формулировки определи flavor:
После каждого нового fork-ответа сверяй с уже зафиксированными. При противоречии — flag оператору эксплицитно:
«В F1.3 ты сказал X, в текущем F2.4 — предполагается Y. Конфликт. Какое решение верно / нужно ли пересмотр?»
После прохождения 8 категорий + cross-cutting checks:
«Представь, что фича запущена и через 3 месяца идут жалобы пользователей. Какие жалобы?»
Каждая воображаемая жалоба → потенциальный новый fork.
<project>/docs/specs/YYYY-MM-DD-<feature-slug>-product-spec.md (default; настраиваемо).
Спека самодостаточна для product context. Следующая фаза (arch-spec) читает её для понимания продукта, ARCHITECTURE.md для архитектурного контекста — без overlap.
Product-spec.md адресован оператору-продуктологу, не разработчику. Default — продуктовый русский язык. Английский жаргон допустим если он:
Жаргон, понятный только инженеру (extract-all, payload, throughput, idempotency, fallback и т.п.) — переводи или раскрывай на продуктовом языке.
# <Feature name>
## Sample dialogs
### Happy path
[concrete dialog]
### Corrected path
[concrete dialog]
### Refused / Edge path
[concrete dialog]
## Цель
[1-3 предложения; out of scope inline если есть явные исключения]
## Контракт входа
### От пользователя (raw)
- field: формы
### Из контекста
- field: тип, источник, обязательность, default
## Контракт выхода
- Запись: ...
- Возврат пользователю: ...
- Side effects: ...
## Развилки
[hierarchical decision tree]
## Cross-cutting policies
[orthogonal forks]
## Reusable sub-policies
[named blocks referenced from forks]
## Premortem findings (closing probe absorbed)
[absorbed concerns]
## Open items at closure
[skill-generated table]
3 концетных user path'а в формате диалога:
Якорь для оператора и для следующей фазы.
### F1.3.2. <название> [decision: что решаем] [status: OPEN | RESOLVED | OUT-OF-SCOPE | DEFERRED]
**Resolution:** <ответ + одна фраза reasoning'а> | OPEN — нужно решение
**Branches [XOR | OR | OPT]:**
- F1.3.2.1 — <branch label> → <inline action OR see deeper>
- F1.3.2.2 — <branch label> → see CC1 / see P-NAME
**Открыто:** <sub-questions, опционально>
**Связи:** <cross-references, опционально>
**Examples:** <конкретные сценарии, опционально>
Cardinality tags:
[XOR] — ровно одна ветка срабатывает[OR] — могут срабатывать одновременно[OPT] — необязательная веткаStatus tags:
RESOLVED — решение принятоOPEN — нужно решение, blocker для следующей фазыOUT-OF-SCOPE — явно выведено из scopeDEFERRED — отложено, не блокируетTerminal markers:
END. — ветка завершается этим действием→ see Fx.y.z — развёрнут глубже→ see CC1 / → see P-NAME — переход к cross-cutting / sub-policyResolution-first: Resolution всегда первая строка после header.
### CC1. <название>
**Pre-empts:** F1.3.*, F1.1
**Resolution:** ...
**Pattern:** *Если <событие> → отказ / требование / лог <действие>*
### P-INSIST-HANDLING
[блок, описывающий поведение]
**Used in:** F1.3.2.2, F2.5.1, F4.2
Happy path first. Проводи happy path end-to-end до того, как разрешишь branching. Reviewer всегда имеет cohesive narrative spine.
Sample dialog cohesion check. При написании sample dialogs проверяй, что каждый bot turn consistent с предыдущим user input. Если bot говорит / спрашивает то, что не следует из текущего state — это сигнал missing fork. Эксплицитно подними вопрос оператору и зафиксируй fork в дереве, прежде чем продолжать диалог. Sample dialogs — integrative test для forks tree, вторая safety net после coverage-based closure.
Depth budget — cap 3-4 уровней. При превышении предложи выделить sub-tree в named P-policy.
Cross-cutting detection. Если rule (a) pre-empts основной flow независимо от branch (например, медицинский отказ — отказывает на любой ветке F1.x), ИЛИ (b) повторяется в ≥2 ветках — suggest move в Cross-cutting section. Hard policies всегда уходят в CC по критерию (a).
Reusable block extraction. Suggest factor в P-policy если: (a) sub-tree логически идентичен другому fork'у, ИЛИ (b) блок описывает алгоритм / правило, на которое ссылаются ≥2 forks (как нормализация форматов ввода), ИЛИ (c) блок содержательно автономен (полноценная процедура с внутренней логикой, не сводимая к одной строке reasoning'а).
Decision tables вместо 2^N веток. Когда fork зависит от N независимых булевых флагов — предложи таблицу с don't-care.
Out-of-scope inline. Не отдельная секция. Если есть явные исключения, описывай inline в Цели или Контракте выхода.
F-life-N (F-life-1, F-life-2, ...).F-disamb-N.F-integ-N.CC1, CC2, CC3, ....P-NAME (например P-NORMALIZATION-DEADLINE, P-INSIST-HANDLING — UPPER_CASE-WITH-DASHES).Открыто, Связи, Examples — опциональные. Если пусты, строка не пишется.END. на терминальных ветках.references/example-goal-setting.md. Read this when generating own product-spec.md to anchor format and style.references/product-spec-template.md. Use as starting structure when writing.references/self-assessment-template.md.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub hedgeinform/hi_flow --plugin hi_flow