feat: разворачивание комка operations — 9 навыков (роутер-реестр)
Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик operations развёрнут в 9 под-узлов #51a..#51i. process-doc уже был вынесен карточкой (operations-process-doc.contract.json) — ей заведён узел #51d. - 8 новых карточек: capacity-plan, change-request, compliance-tracking, process-optimization, risk-assessment, runbook, status-report, vendor-review - process-doc — узел #51d на существующую карточку operations:process-doc - nodes.yaml: узел #51 → #51a..#51i; триггеры распределены; ссылка L4 → operations:runbook - зонтик убран; registry-load.test: 138 узлов / 130 active Регрессия (без 5 pre-existing node:test файлов): 4365 passed, exit 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"skill": "operations",
|
||||
"kind": "external",
|
||||
"needs": ["задача по бизнес-процессу (документ/runbook/риск/capacity)"],
|
||||
"produces": ["процессный артефакт (process-doc/runbook/risk/capacity/...)"],
|
||||
"constraints": ["зонтик 9 скилов, 0 lifecycle-хуков", "process-doc → Mermaid-исходник рендерит mermaid (#37)", "НЕ as-is анализ из кода (process-analysis)"],
|
||||
"preview-form": "outline",
|
||||
"defaults": ["скил под тип артефакта"],
|
||||
"key-decisions": ["какой из 9 скилов под задачу"],
|
||||
"acceptance-criteria": ["процессный артефакт полон (шаги/владельцы)"],
|
||||
"source": { "version": "n/a", "hash": "0000000000000000000000000000000000000000000000000000000000000000", "path": "" }
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:capacity-plan",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"workload/ресурсы для анализа ёмкости"
|
||||
],
|
||||
"produces": [
|
||||
"прогноз utilization + рекомендации hire/deprioritize"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"capacity-plan — планирование ёмкости ресурсов"
|
||||
],
|
||||
"key-decisions": [
|
||||
"узкие места по ресурсам"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"ёмкость спрогнозирована"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:change-request",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"предлагаемое изменение системы/процесса"
|
||||
],
|
||||
"produces": [
|
||||
"change request: impact-анализ + rollback-план"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"change-request — управление изменениями (CAB)"
|
||||
],
|
||||
"key-decisions": [
|
||||
"риск и rollback"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"change задокументирован с rollback"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:compliance-tracking",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"требование комплаенса для отслеживания"
|
||||
],
|
||||
"produces": [
|
||||
"трекинг комплаенса + audit-readiness (SOC2/ISO/GDPR)"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"compliance-tracking — отслеживание требований"
|
||||
],
|
||||
"key-decisions": [
|
||||
"какие требования и сроки"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"комплаенс отслеживается"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:process-optimization",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"неэффективный процесс для улучшения"
|
||||
],
|
||||
"produces": [
|
||||
"оптимизация: устранение узких мест/лишних шагов"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"process-optimization — улучшение процессов"
|
||||
],
|
||||
"key-decisions": [
|
||||
"где bottleneck"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"процесс оптимизирован"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:risk-assessment",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"проект/вендор/процесс для оценки рисков"
|
||||
],
|
||||
"produces": [
|
||||
"risk register: идентификация, оценка, митигация"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"risk-assessment — оценка операционных рисков"
|
||||
],
|
||||
"key-decisions": [
|
||||
"какие риски критичны"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"риски оценены и митигированы"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:runbook",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"повторяемая операционная задача"
|
||||
],
|
||||
"produces": [
|
||||
"runbook: пошаговые команды, troubleshooting, rollback, эскалация"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"runbook — операционный пошаговый гайд"
|
||||
],
|
||||
"key-decisions": [
|
||||
"шаги и эскалация"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"runbook повторяемо исполним"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:status-report",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"данные проекта для статус-отчёта"
|
||||
],
|
||||
"produces": [
|
||||
"статус: KPI, риски, action items (green/yellow/red)"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"status-report — отчёт о статусе"
|
||||
],
|
||||
"key-decisions": [
|
||||
"что эскалировать"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"статус-отчёт читаем и actionable"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"skill": "operations:vendor-review",
|
||||
"kind": "external",
|
||||
"needs": [
|
||||
"вендор для оценки"
|
||||
],
|
||||
"produces": [
|
||||
"оценка вендора: TCO, риски, рекомендация"
|
||||
],
|
||||
"constraints": [
|
||||
"под-навык зонтика operations (бизнес-процессы)"
|
||||
],
|
||||
"preview-form": "outline",
|
||||
"defaults": [
|
||||
"vendor-review — оценка вендора"
|
||||
],
|
||||
"key-decisions": [
|
||||
"renew vs replace"
|
||||
],
|
||||
"acceptance-criteria": [
|
||||
"вендор оценён с TCO"
|
||||
],
|
||||
"source": {
|
||||
"version": "n/a",
|
||||
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": ""
|
||||
}
|
||||
}
|
||||
+120
-8
@@ -1327,26 +1327,138 @@ nodes:
|
||||
attributes:
|
||||
tooling_section: "§4.25 #50"
|
||||
|
||||
- id: "#51"
|
||||
name: "operations"
|
||||
slug: "operations"
|
||||
- id: "#51a"
|
||||
name: "operations-capacity-plan"
|
||||
slug: "operations:capacity-plan"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Плагин с 9 скилами для документирования и оптимизации бизнес-процессов: process-doc, runbook, capacity-plan, risk-assessment, compliance-tracking, change-request, vendor-review, status-report."
|
||||
capabilities: "Анализ ёмкости ресурсов + прогноз utilization (hire/deprioritize)."
|
||||
triggers:
|
||||
- {keyword: "capacity plan", weight: 1.0}
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51b"
|
||||
name: "operations-change-request"
|
||||
slug: "operations:change-request"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Change request: impact-анализ + rollback-план (CAB)."
|
||||
triggers: []
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51c"
|
||||
name: "operations-compliance-tracking"
|
||||
slug: "operations:compliance-tracking"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Отслеживание комплаенса + audit-readiness (SOC2/ISO/GDPR)."
|
||||
triggers: []
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51d"
|
||||
name: "operations-process-doc"
|
||||
slug: "operations:process-doc"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Структурированная документация бизнес-процесса (flowchart, RACI, SOP)."
|
||||
triggers:
|
||||
- {keyword: "бизнес-процесс документ", weight: 1.0}
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51e"
|
||||
name: "operations-process-optimization"
|
||||
slug: "operations:process-optimization"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Оптимизация процесса: устранение узких мест и лишних шагов."
|
||||
triggers:
|
||||
- {keyword: "документирование/оптимизация бизнес-процессов", weight: 1.0}
|
||||
- {keyword: "бизнес-процесс документ", weight: 1.0}
|
||||
- {keyword: "runbook", weight: 1.0}
|
||||
- {keyword: "capacity plan", weight: 1.0}
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51f"
|
||||
name: "operations-risk-assessment"
|
||||
slug: "operations:risk-assessment"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Оценка операционных рисков: risk register (идентификация, оценка, митигация)."
|
||||
triggers:
|
||||
- {keyword: "risk assessment", weight: 1.0}
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51g"
|
||||
name: "operations-runbook"
|
||||
slug: "operations:runbook"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Операционный runbook: пошаговые команды, troubleshooting, rollback, эскалация."
|
||||
triggers:
|
||||
- {keyword: "runbook", weight: 1.0}
|
||||
boundaries: []
|
||||
chain_membership: ["L4"]
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
install: "claude plugin install operations@knowledge-work-plugins"
|
||||
|
||||
- id: "#51h"
|
||||
name: "operations-status-report"
|
||||
slug: "operations:status-report"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Статус-отчёт: KPI, риски, action items (green/yellow/red)."
|
||||
triggers: []
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#51i"
|
||||
name: "operations-vendor-review"
|
||||
slug: "operations:vendor-review"
|
||||
category: "off-phase"
|
||||
subcategory: "business-process"
|
||||
status: "active"
|
||||
dormancy_reason: null
|
||||
capabilities: "Оценка вендора: TCO, риски, рекомендация (renew vs replace)."
|
||||
triggers: []
|
||||
boundaries: []
|
||||
chain_membership: []
|
||||
attributes:
|
||||
tooling_section: "§4.26 #51"
|
||||
|
||||
- id: "#52"
|
||||
name: "process-modeling"
|
||||
slug: "process-modeling"
|
||||
@@ -2408,7 +2520,7 @@ chains:
|
||||
sequence:
|
||||
- "adr-kit:adr"
|
||||
- "#37"
|
||||
- "#51"
|
||||
- "operations:runbook"
|
||||
- "#52"
|
||||
|
||||
L5:
|
||||
|
||||
@@ -117,8 +117,8 @@
|
||||
| hookify (1–2) | ⏸ развилка владельцу (slug hookify:hookify кривой) | |
|
||||
| product-management (8) | ✅ DONE | 0258b9d (pushed) |
|
||||
| design-plugin (7) | ✅ DONE | bf3d557 (committed, push deferred — observer-race) |
|
||||
| marketing-plugin (8) | ✅ DONE | этот коммит (push deferred) |
|
||||
| operations (8) | ⬜ | |
|
||||
| marketing-plugin (8) | ✅ DONE | committed (push deferred) |
|
||||
| operations (9: +process-doc узел) | ✅ DONE | этот коммит (push deferred) |
|
||||
| finance-plugin (7–8) | ⬜ | |
|
||||
| brand-voice (3) | ⬜ | |
|
||||
| ui-ux-pro-max (7, +правка PSR) | ⬜ | |
|
||||
|
||||
@@ -5,9 +5,9 @@ import { loadRegistry, clearCache, findByClassification, findByKeyword, findActi
|
||||
describe('registry-load', () => {
|
||||
beforeEach(() => clearCache());
|
||||
|
||||
it('loads registry (130 nodes: разворачивание #33/#19/#57/#36/#42/#46/#74 комков 18.06.2026)', () => {
|
||||
it('loads registry (138 nodes: разворачивание #33/#19/#57/#36/#42/#46/#74/#51 комков 18.06.2026)', () => {
|
||||
const r = loadRegistry();
|
||||
expect(r.nodes).toHaveLength(130);
|
||||
expect(r.nodes).toHaveLength(138);
|
||||
expect(r.version).toBe('0.1.0');
|
||||
});
|
||||
|
||||
@@ -46,9 +46,9 @@ describe('registry-load', () => {
|
||||
it('findActiveNodes excludes non-active (nodes.yaml registry)', () => {
|
||||
const r = loadRegistry();
|
||||
const active = findActiveNodes(r);
|
||||
// 130 nodes total; #1 historic, #17 dormant, #44/#50/#54/#67/#82/#83 deferred;
|
||||
// развёрнуты: #33→2, #19→14, #57→7, #36→2, #42→8, #46→7, #74 marketing→8 (+7) → 122 active
|
||||
expect(active).toHaveLength(122);
|
||||
// 138 nodes total; #1 historic, #17 dormant, #44/#50/#54/#67/#82/#83 deferred;
|
||||
// развёрнуты: #33→2,#19→14,#57→7,#36→2,#42→8,#46→7,#74→8,#51 operations→9 (+8) → 130 active
|
||||
expect(active).toHaveLength(130);
|
||||
expect(active.map(n => n.id)).toContain('#18');
|
||||
expect(active.map(n => n.id)).toContain('#19a');
|
||||
expect(active.map(n => n.id)).not.toContain('#1');
|
||||
|
||||
Reference in New Issue
Block a user