feat(registry): токенизация needs/produces — группа knowledge-work (этап 2b, роутер-реестр)

Phase 2b группа A: 43 контракта (product-management/design/marketing/
operations/finance/brand-voice) переведены с прозы на токены словаря.
Словарь +67, всего 106 токенов, v0.4.0.

Достроены мостовые цепочки графа:
- user-research -> research-synthesis / synthesize-research (raw-research)
- content-creation -> draft-content -> brand-review (content-framework/marketing-draft)
- journal-entry-prep -> close-management (close-entries)
- write-spec -> (feature-spec, кормит writing-plans)
- design-handoff <- ui-design (от frontend-design, цепочка в группе tools)

Тест: новый замок-тест группы (43 контракта проходят словарь + рёбра).
Регрессия 4369 passed, exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-19 10:10:32 +03:00
parent acd9bdc479
commit ef92b5e39e
45 changed files with 548 additions and 92 deletions
+403 -1
View File
@@ -1,5 +1,5 @@
{
"version": "0.3.0",
"version": "0.4.0",
"tokens": [
{
"token": "running-portal",
@@ -234,6 +234,408 @@
"category": "given",
"label": "намерение создать/править навык",
"description": "Намерение создать или править навык. Вход superpowers:writing-skills."
},
{
"token": "competitive-brief",
"category": "produced",
"label": "конкурентный бриф (продукт)",
"description": "Позиционирование/gap/угрозы по конкурентам. Выход product-management:competitive-brief."
},
{
"token": "metrics-scorecard",
"category": "produced",
"label": "разбор метрик + scorecard",
"description": "Тренды/scorecard/рекомендации по продуктовым метрикам. Выход product-management:metrics-review."
},
{
"token": "product-directions",
"category": "produced",
"label": "проработанные продукт-идеи",
"description": "Идеи и направления продукта (sparring-partner). Выход product-management:product-brainstorming."
},
{
"token": "updated-roadmap",
"category": "produced",
"label": "обновлённый роадмап",
"description": "Now/Next/Later роадмап. Выход product-management:roadmap-update."
},
{
"token": "sprint-plan",
"category": "produced",
"label": "план спринта",
"description": "Scope/оценки/цели/P0-vs-stretch. Выход product-management:sprint-planning."
},
{
"token": "stakeholder-update",
"category": "produced",
"label": "апдейт стейкхолдерам",
"description": "Апдейт под аудиторию (exec/eng/customer). Выход product-management:stakeholder-update."
},
{
"token": "research-insights",
"category": "produced",
"label": "инсайты исследования",
"description": "Структурированные инсайты/темы/рекомендации из сырого research. Выход synthesize-research / research-synthesis."
},
{
"token": "a11y-audit",
"category": "produced",
"label": "аудит доступности",
"description": "WCAG 2.1 AA аудит дизайна/страницы. Выход design-plugin:accessibility-review."
},
{
"token": "design-critique",
"category": "produced",
"label": "дизайн-критика",
"description": "Критика usability/иерархии/консистентности макета. Выход design-plugin:design-critique."
},
{
"token": "handoff-spec",
"category": "produced",
"label": "спека хэндоффа",
"description": "Токены/props/состояния/breakpoints/edge-cases для разработки. Выход design-plugin:design-handoff."
},
{
"token": "design-system-output",
"category": "produced",
"label": "аудит/док/паттерн дизайн-системы",
"description": "Аудит консистентности / документация / новый паттерн. Выход design-plugin:design-system."
},
{
"token": "ux-copy",
"category": "produced",
"label": "UX-копирайт",
"description": "Microcopy/ошибки/пустые состояния/CTA. Выход design-plugin:ux-copy."
},
{
"token": "brand-review-flags",
"category": "produced",
"label": "ревью бренд-контента",
"description": "Флаги по severity + before/after-фиксы. Выход marketing-plugin:brand-review."
},
{
"token": "campaign-brief",
"category": "produced",
"label": "бриф кампании",
"description": "Цели/аудитория/каналы/контент-календарь/метрики. Выход marketing-plugin:campaign-plan."
},
{
"token": "marketing-competitive-brief",
"category": "produced",
"label": "конкурентный бриф (маркетинг)",
"description": "Позиционирование/messaging-гэпы/угрозы/battlecards. Выход marketing-plugin:competitive-brief."
},
{
"token": "email-sequence",
"category": "produced",
"label": "email-цепочка",
"description": "Multi-email: ветвление/timing/бенчмарки. Выход marketing-plugin:email-sequence."
},
{
"token": "marketing-performance-report",
"category": "produced",
"label": "маркетинг-отчёт",
"description": "Тренды/инсайты/рекомендации оптимизации. Выход marketing-plugin:performance-report."
},
{
"token": "seo-audit",
"category": "produced",
"label": "SEO-аудит",
"description": "Keyword/тех-секция/контент-гэпы. Выход marketing-plugin:seo-audit."
},
{
"token": "capacity-forecast",
"category": "produced",
"label": "прогноз ёмкости",
"description": "Прогноз utilization + hire/deprioritize. Выход operations:capacity-plan."
},
{
"token": "change-request",
"category": "produced",
"label": "change request",
"description": "Impact-анализ + rollback-план. Выход operations:change-request."
},
{
"token": "compliance-tracking",
"category": "produced",
"label": "трекинг комплаенса",
"description": "Audit-readiness (SOC2/ISO/GDPR). Выход operations:compliance-tracking."
},
{
"token": "process-documentation",
"category": "produced",
"label": "документация процесса",
"description": "Structured process documentation. Выход operations:process-doc."
},
{
"token": "process-optimization",
"category": "produced",
"label": "оптимизация процесса",
"description": "Устранение узких мест/лишних шагов. Выход operations:process-optimization."
},
{
"token": "risk-register",
"category": "produced",
"label": "risk register",
"description": "Идентификация/оценка/митигация рисков. Выход operations:risk-assessment."
},
{
"token": "runbook",
"category": "produced",
"label": "runbook",
"description": "Пошаговые команды/troubleshooting/rollback/эскалация. Выход operations:runbook."
},
{
"token": "status-report",
"category": "produced",
"label": "статус-отчёт",
"description": "KPI/риски/action items (green/yellow/red). Выход operations:status-report."
},
{
"token": "vendor-assessment",
"category": "produced",
"label": "оценка вендора",
"description": "TCO/риски/рекомендация. Выход operations:vendor-review."
},
{
"token": "audit-workpapers",
"category": "produced",
"label": "SOX workpapers",
"description": "Workpapers/sample/классификация deficiency. Выход finance-plugin:audit-support."
},
{
"token": "close-calendar",
"category": "produced",
"label": "календарь close",
"description": "Sequencing/dependencies/статус month-end. Выход finance-plugin:close-management."
},
{
"token": "financial-statements",
"category": "produced",
"label": "финансовая отчётность",
"description": "P&L/balance sheet/cash flow + variance. Выход finance-plugin:financial-statements."
},
{
"token": "journal-entry",
"category": "produced",
"label": "проводка с обоснованием",
"description": "Journal entry с обоснованием для аудита. Выход finance-plugin:journal-entry."
},
{
"token": "reconciliation-result",
"category": "produced",
"label": "рекконсиляция",
"description": "Сверка + категоризация reconciling items. Выход finance-plugin:reconciliation."
},
{
"token": "sox-testing-result",
"category": "produced",
"label": "SOX-тестирование",
"description": "Sample/workpaper/оценка deficiency. Выход finance-plugin:sox-testing."
},
{
"token": "variance-analysis",
"category": "produced",
"label": "разбор variance",
"description": "Декомпозиция драйверов + waterfall + narrative. Выход finance-plugin:variance-analysis."
},
{
"token": "brand-aligned-content",
"category": "produced",
"label": "контент по голосу бренда",
"description": "Контент, выровненный по brand-гайдам. Выход brand-voice:brand-voice-enforcement."
},
{
"token": "brand-discovery-report",
"category": "produced",
"label": "discovery-отчёт бренда",
"description": "Найденные brand-материалы по платформам. Выход brand-voice:discover-brand."
},
{
"token": "brand-guidelines",
"category": "produced",
"label": "brand voice guidelines",
"description": "Гайдлайны голоса бренда из материалов. Выход brand-voice:guideline-generation."
},
{
"token": "competitor-input",
"category": "given",
"label": "конкурент(ы) для анализа",
"description": "Конкурент(ы)/область для анализа. Вход competitive-brief."
},
{
"token": "product-metrics",
"category": "given",
"label": "продуктовые метрики",
"description": "Набор продуктовых метрик для анализа. Вход product-management:metrics-review."
},
{
"token": "product-problem",
"category": "given",
"label": "продуктовая проблема",
"description": "Проблема/возможность для проработки. Вход product-management:product-brainstorming."
},
{
"token": "priority-change",
"category": "given",
"label": "изменение приоритетов",
"description": "Изменение приоритетов/новая инициатива. Вход product-management:roadmap-update."
},
{
"token": "backlog-and-capacity",
"category": "given",
"label": "бэклог + ёмкость",
"description": "Бэклог + ёмкость команды на спринт. Вход product-management:sprint-planning."
},
{
"token": "progress-input",
"category": "given",
"label": "прогресс для коммуникации",
"description": "Прогресс для стейкхолдеров. Вход product-management:stakeholder-update."
},
{
"token": "design-or-page",
"category": "given",
"label": "дизайн/страница",
"description": "Дизайн/макет/страница для аудита/критики. Вход accessibility-review / design-critique."
},
{
"token": "design-system-input",
"category": "given",
"label": "дизайн-система",
"description": "Дизайн-система для аудита/документации/расширения. Вход design-plugin:design-system."
},
{
"token": "ui-element-for-copy",
"category": "given",
"label": "элемент интерфейса под текст",
"description": "Элемент UI, требующий текста. Вход design-plugin:ux-copy."
},
{
"token": "marketing-goal",
"category": "given",
"label": "маркетинговая цель",
"description": "Цель (запуск/лидген/awareness). Вход marketing-plugin:campaign-plan."
},
{
"token": "email-goal",
"category": "given",
"label": "цель email-последовательности",
"description": "Цель email-цепочки. Вход marketing-plugin:email-sequence."
},
{
"token": "marketing-metrics",
"category": "given",
"label": "маркетинговые метрики",
"description": "Метрики для отчёта. Вход marketing-plugin:performance-report."
},
{
"token": "site-for-seo",
"category": "given",
"label": "сайт/контент для SEO",
"description": "Сайт/контент для SEO-аудита. Вход marketing-plugin:seo-audit."
},
{
"token": "workload-input",
"category": "given",
"label": "workload/ресурсы",
"description": "Workload/ресурсы для анализа ёмкости. Вход operations:capacity-plan."
},
{
"token": "proposed-change",
"category": "given",
"label": "предлагаемое изменение",
"description": "Изменение системы/процесса. Вход operations:change-request."
},
{
"token": "compliance-requirement",
"category": "given",
"label": "требование комплаенса",
"description": "Требование комплаенса для отслеживания. Вход operations:compliance-tracking."
},
{
"token": "as-is-process",
"category": "given",
"label": "as-is процесс (описание)",
"description": "As-is process description. Вход operations:process-doc."
},
{
"token": "inefficient-process",
"category": "given",
"label": "неэффективный процесс",
"description": "Процесс для улучшения. Вход operations:process-optimization."
},
{
"token": "risk-target",
"category": "given",
"label": "объект оценки рисков",
"description": "Проект/вендор/процесс для оценки рисков. Вход operations:risk-assessment."
},
{
"token": "operational-task",
"category": "given",
"label": "повторяемая операция",
"description": "Операционная задача для runbook. Вход operations:runbook."
},
{
"token": "project-data",
"category": "given",
"label": "данные проекта",
"description": "Данные для статус-отчёта. Вход operations:status-report."
},
{
"token": "vendor-input",
"category": "given",
"label": "вендор для оценки",
"description": "Вендор для оценки. Вход operations:vendor-review."
},
{
"token": "sox-control",
"category": "given",
"label": "SOX-контроль",
"description": "Контроль для SOX-404 тестирования. Вход audit-support / sox-testing."
},
{
"token": "financial-data",
"category": "given",
"label": "данные для отчётности",
"description": "Данные для финансовой отчётности. Вход finance-plugin:financial-statements."
},
{
"token": "transaction-for-entry",
"category": "given",
"label": "операция для проводки",
"description": "Операция для проводки (debits/credits). Вход finance-plugin:journal-entry."
},
{
"token": "gl-vs-subledger",
"category": "given",
"label": "GL vs subledger/bank",
"description": "GL-баланс vs subledger/bank для сверки. Вход finance-plugin:reconciliation."
},
{
"token": "financial-variance",
"category": "given",
"label": "финансовые variance",
"description": "Финансовые variance для разбора. Вход finance-plugin:variance-analysis."
},
{
"token": "content-for-brand",
"category": "given",
"label": "контент для brand-гайдов",
"description": "Контент для применения brand-гайдов. Вход brand-voice:brand-voice-enforcement."
},
{
"token": "brand-discovery-need",
"category": "given",
"label": "нужно найти brand-материалы",
"description": "Потребность найти разрозненные brand-материалы. Вход brand-voice:discover-brand."
},
{
"token": "brand-source-materials",
"category": "given",
"label": "исходные brand-материалы",
"description": "Docs/transcripts/recordings. Вход brand-voice:guideline-generation."
}
]
}
@@ -2,10 +2,10 @@
"skill": "brand-voice:brand-voice-enforcement",
"kind": "external",
"needs": [
"контент для применения brand-гайдов"
"content-for-brand"
],
"produces": [
"контент, выровненный по голосу бренда (email/pitch/LinkedIn/Slack/proposal)"
"brand-aligned-content"
],
"constraints": [
"под-навык зонтика brand-voice (вербальный бренд)",
@@ -2,10 +2,10 @@
"skill": "brand-voice:discover-brand",
"kind": "external",
"needs": [
"потребность найти разрозненные brand-материалы"
"brand-discovery-need"
],
"produces": [
"discovery-отчёт: найденные материалы (Notion/Confluence/Drive/Box/Figma/Gong/Slack)"
"brand-discovery-report"
],
"constraints": [
"под-навык зонтика brand-voice (вербальный бренд)",
@@ -2,10 +2,10 @@
"skill": "brand-voice:guideline-generation",
"kind": "external",
"needs": [
"исходные материалы (docs/transcripts/recordings)"
"brand-source-materials"
],
"produces": [
"brand voice guidelines из материалов"
"brand-guidelines"
],
"constraints": [
"под-навык зонтика brand-voice (вербальный бренд)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:accessibility-review",
"kind": "external",
"needs": [
"дизайн/страница для аудита доступности"
"design-or-page"
],
"produces": [
"WCAG 2.1 AA аудит: контраст, клавиатура, тач-таргеты, screen reader"
"a11y-audit"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:design-critique",
"kind": "external",
"needs": [
"макет/экран для структурной обратной связи"
"design-or-page"
],
"produces": [
"критика: usability, иерархия, консистентность"
"design-critique"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:design-handoff",
"kind": "external",
"needs": [
"готовый дизайн для передачи в разработку"
"ui-design"
],
"produces": [
"спека хэндоффа: токены, props, состояния, breakpoints, edge-cases"
"handoff-spec"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:design-system",
"kind": "external",
"needs": [
"дизайн-система для аудита/документации/расширения"
"design-system-input"
],
"produces": [
"аудит консистентности / документация компонента / новый паттерн"
"design-system-output"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:research-synthesis",
"kind": "external",
"needs": [
"сырой research (интервью/тесты/тикеты/NPS)"
"raw-research"
],
"produces": [
"темы, инсайты, сегменты, приоритеты"
"research-insights"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:user-research",
"kind": "external",
"needs": [
"потребность понять пользователей"
"user-understanding-need"
],
"produces": [
"план/гайд интервью, юзабилити-тест, опрос"
"raw-research"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "design-plugin:ux-copy",
"kind": "external",
"needs": [
"элемент интерфейса, требующий текста"
"ui-element-for-copy"
],
"produces": [
"UX-копирайт: microcopy, ошибки, пустые состояния, CTA"
"ux-copy"
],
"constraints": [
"под-навык зонтика design-plugin (дизайн до кода)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:audit-support",
"kind": "external",
"needs": [
"SOX-404 контроль для тестирования"
"sox-control"
],
"produces": [
"workpapers, sample selection, классификация deficiency"
"audit-workpapers"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:close-management",
"kind": "external",
"needs": [
"процесс month-end close для управления"
"close-entries"
],
"produces": [
"close-календарь: sequencing, dependencies, статус"
"close-calendar"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:financial-statements",
"kind": "external",
"needs": [
"данные для финансовой отчётности"
"financial-data"
],
"produces": [
"P&L, balance sheet, cash flow + variance vs budget"
"financial-statements"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:journal-entry-prep",
"kind": "external",
"needs": [
"накопления/prepaid/амортизация для month-end"
"close-source-data"
],
"produces": [
"подготовленные проводки close (accruals/prepaid/depreciation/payroll)"
"close-entries"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:journal-entry",
"kind": "external",
"needs": [
"операция для проводки (debits/credits)"
"transaction-for-entry"
],
"produces": [
"journal entry с обоснованием для аудита"
"journal-entry"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:reconciliation",
"kind": "external",
"needs": [
"GL-баланс vs subledger/bank для сверки"
"gl-vs-subledger"
],
"produces": [
"рекконсиляция + категоризация reconciling items"
"reconciliation-result"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:sox-testing",
"kind": "external",
"needs": [
"контроль для SOX-404 тестирования (US)"
"sox-control"
],
"produces": [
"sample, workpaper, оценка deficiency"
"sox-testing-result"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "finance-plugin:variance-analysis",
"kind": "external",
"needs": [
"финансовые variance для разбора"
"financial-variance"
],
"produces": [
"декомпозиция драйверов + waterfall + narrative"
"variance-analysis"
],
"constraints": [
"под-навык зонтика finance (US-GAAP финансы)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:brand-review",
"kind": "external",
"needs": [
"контент для проверки против голоса/гайда бренда"
"marketing-draft"
],
"produces": [
"ревью с флагами по severity + before/after-фиксы"
"brand-review-flags"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:campaign-plan",
"kind": "external",
"needs": [
"маркетинговая цель (запуск/лидген/awareness)"
"marketing-goal"
],
"produces": [
"бриф кампании: цели, аудитория, каналы, контент-календарь, метрики"
"campaign-brief"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:competitive-brief",
"kind": "external",
"needs": [
"конкурент(ы) для маркетингового анализа"
"competitor-input"
],
"produces": [
"позиционирование, messaging-гэпы, угрозы, battlecards"
"marketing-competitive-brief"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:content-creation",
"kind": "external",
"needs": [
"маркетинговая контент-задача (blog/social/email/landing/PR/case)"
"marketing-content-task"
],
"produces": [
"фреймворки и шаблоны контента под канал"
"content-framework"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:draft-content",
"kind": "external",
"needs": [
"готовность драфтить маркетинг-контент"
"content-framework"
],
"produces": [
"драфт с кросс-платформенным форматированием"
"marketing-draft"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:email-sequence",
"kind": "external",
"needs": [
"цель email-последовательности"
"email-goal"
],
"produces": [
"multi-email цепочка: ветвление, timing, бенчмарки"
"email-sequence"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:performance-report",
"kind": "external",
"needs": [
"маркетинговые метрики для отчёта"
"marketing-metrics"
],
"produces": [
"отчёт: тренды, инсайты, рекомендации оптимизации"
"marketing-performance-report"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -2,10 +2,10 @@
"skill": "marketing-plugin:seo-audit",
"kind": "external",
"needs": [
"сайт/контент для SEO-аудита"
"site-for-seo"
],
"produces": [
"SEO-аудит: keyword, тех-секция, контент-гэпы"
"seo-audit"
],
"constraints": [
"под-навык зонтика marketing (первичный resolver C1)",
@@ -1,12 +1,28 @@
{
"skill": "operations:process-doc",
"kind": "external",
"needs": ["as-is process description"],
"produces": ["structured process documentation"],
"constraints": ["marketplace skill — outputs doc only"],
"needs": [
"as-is-process"
],
"produces": [
"process-documentation"
],
"constraints": [
"marketplace skill — outputs doc only"
],
"preview-form": "none",
"defaults": ["follow operations plugin process-doc template"],
"key-decisions": ["scope of the process being documented"],
"acceptance-criteria": ["doc covers all process steps and owners"],
"source": { "version": "1.2.0", "hash": "0000000000000000000000000000000000000000000000000000000000000000", "path": "" }
"defaults": [
"follow operations plugin process-doc template"
],
"key-decisions": [
"scope of the process being documented"
],
"acceptance-criteria": [
"doc covers all process steps and owners"
],
"source": {
"version": "1.2.0",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -2,10 +2,10 @@
"skill": "operations:capacity-plan",
"kind": "external",
"needs": [
"workload/ресурсы для анализа ёмкости"
"workload-input"
],
"produces": [
"прогноз utilization + рекомендации hire/deprioritize"
"capacity-forecast"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:change-request",
"kind": "external",
"needs": [
"предлагаемое изменение системы/процесса"
"proposed-change"
],
"produces": [
"change request: impact-анализ + rollback-план"
"change-request"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:compliance-tracking",
"kind": "external",
"needs": [
"требование комплаенса для отслеживания"
"compliance-requirement"
],
"produces": [
"трекинг комплаенса + audit-readiness (SOC2/ISO/GDPR)"
"compliance-tracking"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:process-optimization",
"kind": "external",
"needs": [
"неэффективный процесс для улучшения"
"inefficient-process"
],
"produces": [
"оптимизация: устранение узких мест/лишних шагов"
"process-optimization"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:risk-assessment",
"kind": "external",
"needs": [
"проект/вендор/процесс для оценки рисков"
"risk-target"
],
"produces": [
"risk register: идентификация, оценка, митигация"
"risk-register"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:runbook",
"kind": "external",
"needs": [
"повторяемая операционная задача"
"operational-task"
],
"produces": [
"runbook: пошаговые команды, troubleshooting, rollback, эскалация"
"runbook"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:status-report",
"kind": "external",
"needs": [
"данные проекта для статус-отчёта"
"project-data"
],
"produces": [
"статус: KPI, риски, action items (green/yellow/red)"
"status-report"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "operations:vendor-review",
"kind": "external",
"needs": [
"вендор для оценки"
"vendor-input"
],
"produces": [
"оценка вендора: TCO, риски, рекомендация"
"vendor-assessment"
],
"constraints": [
"под-навык зонтика operations (бизнес-процессы)"
@@ -2,10 +2,10 @@
"skill": "product-management:competitive-brief",
"kind": "external",
"needs": [
"конкурент(ы)/область для анализа"
"competitor-input"
],
"produces": [
"конкурентный бриф: позиционирование, gap, угрозы"
"competitive-brief"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:metrics-review",
"kind": "external",
"needs": [
"набор продуктовых метрик для анализа"
"product-metrics"
],
"produces": [
"разбор трендов + scorecard + рекомендации"
"metrics-scorecard"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:product-brainstorming",
"kind": "external",
"needs": [
"продуктовая проблема/возможность для проработки"
"product-problem"
],
"produces": [
"проработанные идеи и направления (sparring-partner)"
"product-directions"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:roadmap-update",
"kind": "external",
"needs": [
"изменение приоритетов/новая инициатива"
"priority-change"
],
"produces": [
"обновлённый роадмап (Now/Next/Later)"
"updated-roadmap"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:sprint-planning",
"kind": "external",
"needs": [
"бэклог + ёмкость команды на спринт"
"backlog-and-capacity"
],
"produces": [
"план спринта: scope, оценки, цели, P0 vs stretch"
"sprint-plan"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:stakeholder-update",
"kind": "external",
"needs": [
"прогресс для коммуникации стейкхолдерам"
"progress-input"
],
"produces": [
"апдейт под аудиторию (exec/eng/customer)"
"stakeholder-update"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:synthesize-research",
"kind": "external",
"needs": [
"сырые интервью/опросы/тикеты"
"raw-research"
],
"produces": [
"структурированные инсайты + темы + рекомендации"
"research-insights"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
@@ -2,10 +2,10 @@
"skill": "product-management:write-spec",
"kind": "external",
"needs": [
"проблема/идея фичи для оформления в спеку/PRD"
"feature-intent"
],
"produces": [
"функциональная спецификация с goals/non-goals/метриками"
"feature-spec"
],
"constraints": [
"под-навык зонтика product-management (продуктовые церемонии)",
+38
View File
@@ -0,0 +1,38 @@
import { describe, it, expect } from 'vitest';
import { readFileSync, readdirSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, join } from 'node:path';
import { buildRegistry } from './skill-contract-registry.mjs';
import { loadVocabulary } from './capability-vocabulary.mjs';
import { buildDependencyGraph } from './coverage-machine.mjs';
const here = dirname(fileURLToPath(import.meta.url));
const cdir = join(here, '..', 'docs', 'registry', 'contracts');
const vocabPath = join(here, '..', 'docs', 'registry', 'capability-vocabulary.json');
const PREFIXES = ['product-management__', 'design-plugin__', 'marketing-plugin__', 'operations__', 'finance-plugin__', 'brand-voice__'];
const FILES = readdirSync(cdir).filter((f) =>
f.endsWith('.contract.json') && (PREFIXES.some((p) => f.startsWith(p)) || f === 'operations-process-doc.contract.json'));
const entries = FILES.map((f) => ({ contract: JSON.parse(readFileSync(join(cdir, f), 'utf8')), currentContent: '' }));
describe('Phase 2b группа knowledge-work — замок словаря + мостовые рёбра', () => {
const { tokens } = loadVocabulary({ path: vocabPath });
it('все knowledge-work контракты проходят замок словаря', () => {
expect(FILES.length).toBe(43);
const { contracts, errors } = buildRegistry(entries, { vocabTokens: tokens });
expect(errors).toEqual([]);
expect(contracts.length).toBe(43);
});
it('мостовые рёбра рабочих цепочек сформированы', () => {
const { contracts } = buildRegistry(entries, { vocabTokens: tokens });
const { edges } = buildDependencyGraph(contracts);
const has = (from, to) => edges.some((e) => e.from === from && e.to === to);
expect(has('marketing-plugin:content-creation', 'marketing-plugin:draft-content')).toBe(true); // content-framework
expect(has('marketing-plugin:draft-content', 'marketing-plugin:brand-review')).toBe(true); // marketing-draft
expect(has('finance-plugin:journal-entry-prep', 'finance-plugin:close-management')).toBe(true); // close-entries
expect(has('design-plugin:user-research', 'design-plugin:research-synthesis')).toBe(true); // raw-research
expect(has('design-plugin:user-research', 'product-management:synthesize-research')).toBe(true); // raw-research
});
});