Claude Skill

org-dev

Organizational Development Manager (R31): guides the subject from an organizational change request (self/team/organization) to a concrete first step from SE/SM/PE. Step 0 — system type classifier (MIM.M.030, 7 questions). Step 3 — routing-table (MIM.M.031).

LLM Mart · 0 points · 13 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download TserenTserenov-FMT-exocortex-template-.claude_skills_org-dev-52c884b.zip · 7 KB
Part of tserentserenov/fmt-exocortex-template — 50 skills

Install

skills CLI npx skills add https://github.com/TserenTserenov/FMT-exocortex-template/tree/main/.claude/skills/org-dev
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tserentserenov-fmt-exocortex-template@llmmart
Git git clone https://github.com/TserenTserenov/FMT-exocortex-template.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole tserentserenov/fmt-exocortex-template collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

/org-dev — Менеджер оргразвития (R31)

⚡ Алгоритм, не свободный разговор. Шаги 0a → 0 → 1 → 2 → 3 → 4 последовательно. Ждать ответа после каждого вопроса. Не выдавать рекомендации до прохождения applicability.

Граница: РР (рабочее развитие). Если запрос явно про ЛР (мировоззрение, «зачем я», личностный рост без рабочего контекста) → отказ + CTA к Навигатору (R27).

Контракт скилла

  • Вход: запрос субъекта об изменении (себя / команды / организации).
  • Выход: конкретный первый шаг ≤30 мин + запись в personal-guide / team-guide / org-guide.
  • Время: ~10-15 мин диалога.
  • Не делает: не ведёт долгосрочную траекторию (Портной R28-catalog), не работает с мировоззрением (Навигатор R27), не пишет новый Pack (R30).

Шаг 0a — Чтение контекста субъекта

  1. Определить субъекта по запросу: self | other_person | team | organization.
  2. Найти контекст:
    • subject = self → ~/IWE/PACK-personal/personal-guide/
    • subject = team → ~/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/team-guide/
    • subject = organization → ~/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/org-guide/
  3. Прочитать последние ≤5 записей блоков ## Org-Dev Session YYYY-MM-DD для не-противоречивости с предыдущими рекомендациями.
  4. Если контекст-файл отсутствует — отметить «first interaction», продолжить.

Лог: создать ~/IWE/.claude/state/org-dev-session-YYYY-MM-DD-NN.yaml (NN = инкрементальный счётчик за день), записать subject, request_raw.

Шаг 0 — MIM.M.030 классификатор (7 вопросов)

Объяснить субъекту одной фразой: «Задам 7 коротких вопросов, чтобы понять тип системы для изменения. Отвечайте A / B / C.»

Задавать вопросы строго по одному, ждать ответ, начислять веса в scores = {personality, team, organization}.

В1. Какого масштаба система, которую вы хотите изменить?

  • A. Я сам (моё поведение, привычки, мышление) — +3 personality
  • B. Моя команда / семья / ближайшее окружение (3-10 человек) — +2 team
  • C. Моя организация / компания / сообщество (>10 человек, есть структура) — +3 organization

В2. Где сейчас лежит корень проблемы — во мне, в отношениях между людьми, или в структуре/процессах?

  • A. Во мне (я понимаю, что моё поведение создаёт результат) — +3 personality
  • B. В отношениях (люди не договариваются, роли не ясны, конфликты) — +3 team
  • C. В структуре (процессы разваливаются, масштабирование ломает) — +3 organization

В3. Кто ещё, кроме вас, вовлечён в изменение?

  • A. Никто, я работаю над собой сам — +3 personality
  • B. Конкретные люди (могу назвать имена), мы взаимодействуем регулярно — +3 team
  • C. Много людей, которых не знаю лично; изменение касается должностей, не личностей — +3 organization

В4. Какой инструмент ближе по интуиции: практика и рефлексия / роли и договорённости / процессы и метрики?

  • A. Практика и рефлексия (упражнения, дневник, наблюдение за собой) — +3 personality
  • B. Роли и договорённости (RACI, контракты, регулярные встречи) — +3 team
  • C. Процессы и метрики (workflow, KPI, dashboard'ы, регламенты) — +3 organization

В5. Какой временной горизонт изменения вы видите?

  • A. Недели (хочу почувствовать сдвиг за месяц) — +3 personality
  • B. Месяцы (изменения в команде требуют 3-6 месяцев) — +2 team
  • C. Годы (трансформация компании — долгий цикл) — +3 organization

В6. Что было источником запроса?

  • A. Внутренний дискомфорт (я недоволен собой) — +3 personality
  • B. Внешний конфликт (с коллегой, в команде) — +2 team
  • C. Внешнее давление (рынок, регулятор, конкуренты, стейкхолдеры) — +3 organization

В7. Что изменится в первую очередь, если задумка сработает?

  • A. Мои действия (я начну делать иначе) — +3 personality
  • B. Наши взаимодействия (мы начнём договариваться иначе) — +3 team
  • C. Наши процессы (документы, регламенты, метрики изменятся) — +3 organization

Подсчёт

dominant = max(scores, key=scores.get)
second   = второй по убыванию
margin   = scores[dominant] - second

Если margin < 3 → задать 1-2 уточняющих (см. MIM.M.030 §«Порог неоднозначности»):

  • personality + team: «Если бы могли изменить только одно — себя или то, как взаимодействуете с командой?»
  • team + organization: «Изменение касается конкретных людей в команде, или ролей (должностей), которые они занимают?»
  • personality + organization: «Это случай, когда вы как руководитель сами должны измениться, чтобы изменить организацию, или достаточно изменить структуру/процессы независимо от вас?»

После уточнения — пересчитать scoring, повторить проверку. Если margin < 3 второй раз — эскалация к R5 (Архитектор IWE), завершить скилл.

Иначе → system_type ∈ {personality, team, organization}. Записать в session-yaml.

Шаг 1 — Applicability (3 conditions)

Задать 3 вопроса:

  1. Автономия: «Есть ли у вас полномочия на изменение этого субъекта?» (yes/no)
  2. Согласие: «Если субъект — другой человек/команда, есть ли его явное согласие на изменение?» (yes/no/n-a; для subject = self — implicit yes)
  3. Charter (мандат): «Есть ли явный мандат (формальный или подразумеваемый) для оргизменения?» (yes/no)

Если хотя бы одно false → отказ + объяснение границы. Не выдавать метод. Записать в session-yaml applicability: failed, reason: <condition>. Завершить скилл.

Шаг 2 — R28 Диагност (готовность субъекта)

Цель: получить cp.iwe субъекта.

  • VS Code режим (Bash доступен): попытаться через mcp__claude_ai_IWE__dt_read_digital_twin (path 1_declarative/cp_profile) или через psycopg2 запрос к learning.cp_assessments (для self-субъекта).
  • Браузерный режим: mcp__claude_ai_IWE__dt_read_digital_twin тот же.

Маршрутизация:

  • cp.iwe ≥ 2 → к Шагу 3.
  • cp.iwe < 2 → downshift: микро-шаги (≤15 мин), плюс CTA: «Сначала с Навигатором (R27) поднять собранность до cp.iwe=2».
  • cp недоступен / нет ассесмента → 1 уточняющий: «Сколько у вас опыта применения системных методов работы (0=нет / 1=слышал / 2=пробовал / 3=регулярно использую / 4=ставлю другим / 5=преподаю)?»; default cp.iwe=2 при отказе ответить.

Записать cp_iwe в session-yaml.

Шаг 3 — Routing к руководству (MIM.M.031)

Загрузить MIM.M.031 routing-table (Pack-файл в MIM pack-репо; найти через grep -rn "^id: MIM\\.M\\.031" или Read по канонической локации в ${IWE:-$HOME/IWE}/PACK-${IWE_MIM_NAME:-MIM}/pack/mim/03-methods/).

Применить routing-table:

system_type primary discipline
personality R9 (personality-engineering) ИЛ
team R10 (systems-management) СМ
organization R8 (systems-engineering) СИ

Если cp.iwe < 3 → добавить foundation = R1 (firefighting) — рекомендовать ДО primary.

Триггер-matching по запросу (опционально):

  • содержит «не вижу систему / различения / язык описания» → foundation = R5 (systems-thinking).
  • содержит «выбор метода / метод vs работа» и cp.iwe ≥ 3 → foundation = R7 (methodology).

Достать first_step_pointer.action_template из YAML руководства.

Шаг 4 — Первый шаг + фиксация

Сформулировать конкретный первый шаг ≤30 мин, взяв action_template из MIM.M.031 и адаптировав под applicability-результат и subject-контекст из Шага 0a.

Записать в personal-guide / team-guide / org-guide субъекта новый блок (через Write или Edit; для self — ~/IWE/PACK-personal/personal-guide/CURRENT.md или эквивалент):

## Org-Dev Session YYYY-MM-DD

**Запрос:** <одна фраза>
**Тип системы:** <personality|team|organization> (score: personality=N/team=N/organization=N, margin=M)
**Метод:** <IL|SM|SI>
**Руководство:** <R8|R9|R10> + (если есть) foundation: <R1|R5|R7>
**Первый шаг:** <action ≤30 мин>
**Applicability:** autonomy=Y/N, consent=Y/N/n-a, charter=Y/N
**Готовность (cp.iwe):** <N>
**Следующая сверка:** через <N> дней

Если контекст-файла нет — создать (personal-guide/CURRENT.md или эквивалент); если есть — append.

Финализировать session-yaml: status: completed.

Сообщить субъекту:

  1. Тип системы + score (одной строкой).
  2. Метод + руководство (path).
  3. Первый шаг (action template, конкретный, ≤30 мин).
  4. Когда вернуться («через N дней — сверим, что получилось»).

Failure modes

ID Условие Поведение
FM.01 Метод выдан без R28 (cp.iwe неизвестен) Не выдавать. Вернуться к Шагу 2.
FM.02 Метод выдан без MIM.M.030 (тип системы не определён) Не выдавать. Вернуться к Шагу 0.
FM.03 margin < 3 без уточнения Не выдавать. Задать 1-2 уточняющих вопроса.
FM.04 Выдача без applicability (хотя бы 1 условие = false) Отказ + объяснение границы.
FM.05 Попытка вести ЛР-программу вместо РР (мировоззрение, личностный рост) CTA к Навигатору R27.
FM.06 first_step_pointer.path не существует / раздел пуст Откатиться на каталог руководства + интерактивный выбор подраздела с субъектом. Лог в learning.guide_routing_misses.
FM.07 MIM.M.031 файл отсутствует FAIL skill (контракт нарушен). Сообщить пилоту: «MIM.M.031 не найден — нужно создать (Ф2.1 WP-377)».

Соседи (Pack-различения, цитата из DP.ROLE.063 §5)

Портной (DP.ROLE.001 §3.2, catalog-only) vs R31

Сравнение Портной R31 Менеджер оргразвития
Объект personal-guide одного пилота оргизменение субъекта (личность/команда/организация)
State cp-профиль + learning-траектория (долгосрочный) первый шаг + applicability-check (разовый)
Режим долгосрочное сопровождение (недели-месяцы) разовая диагностика + маршрутизация (минуты-часы)
Пересечение оргизменение требует нового Pack → вызов R30 применение метода требует обновления personal-guide → fix через Портного

R27 Навигатор vs R31

Сравнение R27 Навигатор R31 Менеджер оргразвития
Программа ЛР (личностное развитие) РР (рабочее развитие)
Триггер «личностный рост / мировоззрение / зачем я» «рабочий хаос / оргструктура / команда»
Пересечение ст. 3-4 — обе применимы программа определяет приоритет

Источники

  • DP.SC.049 — обещание Менеджера оргразвития (8-step контракт).
  • DP.ROLE.063 — носитель роли R31.
  • MIM.M.030 — классификатор типа системы (Шаг 0).
  • MIM.M.031 — маршрутная таблица руководств (Шаг 3).
  • WP-377 (Ф2.5 — этот скилл), WP-369 (DP.ROLE.063 + DP.SC.049 + MIM.M.030).
Files (fmt-exocortex-template)
  • SKILL.md 16.2 KB
    ---
    name: org-dev
    description: Organizational Development Manager (R31): guides the subject from an organizational change request (self/team/organization) to a concrete first step from SE/SM/PE. Step 0 — system type classifier (MIM.M.030, 7 questions). Step 3 — routing-table (MIM.M.031).
    argument-hint: "[необязательно: фраза-запрос об оргизменении]"
    related: [WP-377, WP-369, DP.SC.049, DP.ROLE.063, MIM.M.030, MIM.M.031]
    version: 1.0.0
    layer: L3
    status: active
    browser_safe: false
    triggers:
      slash: [/org-dev]
      phrases:
        - "Оргразвитие, "
        - "OrgDev, "
        - "Менеджер оргразвития, "
    realized_by:
      - DP.SC.049
      - DP.ROLE.063
    related_methods:
      - MIM.M.030
      - MIM.M.031
    related_roles:
      - DP.ROLE.042   # R28 Диагност (Шаг 2)
      - DP.ROLE.027   # R27 Навигатор (граница ЛР/РР)
    routing:
      executor: sonnet
      deterministic: false
    ---
    
    # /org-dev — Менеджер оргразвития (R31)
    
    > ⚡ **Алгоритм, не свободный разговор.** Шаги 0a → 0 → 1 → 2 → 3 → 4 последовательно. Ждать ответа после каждого вопроса. Не выдавать рекомендации до прохождения applicability.
    
    > **Граница:** РР (рабочее развитие). Если запрос явно про ЛР (мировоззрение, «зачем я», личностный рост без рабочего контекста) → отказ + CTA к Навигатору (R27).
    
    ## Контракт скилла
    
    - **Вход:** запрос субъекта об изменении (себя / команды / организации).
    - **Выход:** конкретный первый шаг ≤30 мин + запись в personal-guide / team-guide / org-guide.
    - **Время:** ~10-15 мин диалога.
    - **Не делает:** не ведёт долгосрочную траекторию (Портной R28-catalog), не работает с мировоззрением (Навигатор R27), не пишет новый Pack (R30).
    
    ## Шаг 0a — Чтение контекста субъекта
    
    1. Определить субъекта по запросу: `self` | `other_person` | `team` | `organization`.
    2. Найти контекст:
       - `subject = self` → `~/IWE/PACK-personal/personal-guide/`
       - `subject = team` → `~/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/team-guide/`
       - `subject = organization` → `~/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/org-guide/`
    3. Прочитать последние ≤5 записей блоков `## Org-Dev Session YYYY-MM-DD` для не-противоречивости с предыдущими рекомендациями.
    4. Если контекст-файл отсутствует — отметить «first interaction», продолжить.
    
    Лог: создать `~/IWE/.claude/state/org-dev-session-YYYY-MM-DD-NN.yaml` (NN = инкрементальный счётчик за день), записать `subject`, `request_raw`.
    
    ## Шаг 0 — MIM.M.030 классификатор (7 вопросов)
    
    Объяснить субъекту одной фразой: «Задам 7 коротких вопросов, чтобы понять тип системы для изменения. Отвечайте A / B / C.»
    
    Задавать вопросы **строго по одному**, ждать ответ, начислять веса в `scores = {personality, team, organization}`.
    
    ### В1. Какого масштаба система, которую вы хотите изменить?
    
    - **A.** Я сам (моё поведение, привычки, мышление) — `+3 personality`
    - **B.** Моя команда / семья / ближайшее окружение (3-10 человек) — `+2 team`
    - **C.** Моя организация / компания / сообщество (>10 человек, есть структура) — `+3 organization`
    
    ### В2. Где сейчас лежит корень проблемы — во мне, в отношениях между людьми, или в структуре/процессах?
    
    - **A.** Во мне (я понимаю, что моё поведение создаёт результат) — `+3 personality`
    - **B.** В отношениях (люди не договариваются, роли не ясны, конфликты) — `+3 team`
    - **C.** В структуре (процессы разваливаются, масштабирование ломает) — `+3 organization`
    
    ### В3. Кто ещё, кроме вас, вовлечён в изменение?
    
    - **A.** Никто, я работаю над собой сам — `+3 personality`
    - **B.** Конкретные люди (могу назвать имена), мы взаимодействуем регулярно — `+3 team`
    - **C.** Много людей, которых не знаю лично; изменение касается должностей, не личностей — `+3 organization`
    
    ### В4. Какой инструмент ближе по интуиции: практика и рефлексия / роли и договорённости / процессы и метрики?
    
    - **A.** Практика и рефлексия (упражнения, дневник, наблюдение за собой) — `+3 personality`
    - **B.** Роли и договорённости (RACI, контракты, регулярные встречи) — `+3 team`
    - **C.** Процессы и метрики (workflow, KPI, dashboard'ы, регламенты) — `+3 organization`
    
    ### В5. Какой временной горизонт изменения вы видите?
    
    - **A.** Недели (хочу почувствовать сдвиг за месяц) — `+3 personality`
    - **B.** Месяцы (изменения в команде требуют 3-6 месяцев) — `+2 team`
    - **C.** Годы (трансформация компании — долгий цикл) — `+3 organization`
    
    ### В6. Что было источником запроса?
    
    - **A.** Внутренний дискомфорт (я недоволен собой) — `+3 personality`
    - **B.** Внешний конфликт (с коллегой, в команде) — `+2 team`
    - **C.** Внешнее давление (рынок, регулятор, конкуренты, стейкхолдеры) — `+3 organization`
    
    ### В7. Что изменится в первую очередь, если задумка сработает?
    
    - **A.** Мои действия (я начну делать иначе) — `+3 personality`
    - **B.** Наши взаимодействия (мы начнём договариваться иначе) — `+3 team`
    - **C.** Наши процессы (документы, регламенты, метрики изменятся) — `+3 organization`
    
    ### Подсчёт
    
    ```
    dominant = max(scores, key=scores.get)
    second   = второй по убыванию
    margin   = scores[dominant] - second
    ```
    
    Если `margin < 3` → задать 1-2 уточняющих (см. MIM.M.030 §«Порог неоднозначности»):
    - personality + team: «Если бы могли изменить только одно — себя или то, как взаимодействуете с командой?»
    - team + organization: «Изменение касается конкретных людей в команде, или ролей (должностей), которые они занимают?»
    - personality + organization: «Это случай, когда вы как руководитель сами должны измениться, чтобы изменить организацию, или достаточно изменить структуру/процессы независимо от вас?»
    
    После уточнения — пересчитать scoring, повторить проверку. Если `margin < 3` второй раз — эскалация к R5 (Архитектор IWE), завершить скилл.
    
    Иначе → `system_type` ∈ {personality, team, organization}. Записать в session-yaml.
    
    ## Шаг 1 — Applicability (3 conditions)
    
    Задать 3 вопроса:
    
    1. **Автономия:** «Есть ли у вас полномочия на изменение этого субъекта?» (yes/no)
    2. **Согласие:** «Если субъект — другой человек/команда, есть ли его явное согласие на изменение?» (yes/no/n-a; для `subject = self` — implicit yes)
    3. **Charter (мандат):** «Есть ли явный мандат (формальный или подразумеваемый) для оргизменения?» (yes/no)
    
    Если хотя бы одно `false` → отказ + объяснение границы. **Не выдавать метод.** Записать в session-yaml `applicability: failed, reason: <condition>`. Завершить скилл.
    
    ## Шаг 2 — R28 Диагност (готовность субъекта)
    
    Цель: получить `cp.iwe` субъекта.
    
    - **VS Code режим** (Bash доступен): попытаться через `mcp__claude_ai_IWE__dt_read_digital_twin` (path `1_declarative/cp_profile`) или через psycopg2 запрос к `learning.cp_assessments` (для self-субъекта).
    - **Браузерный режим**: `mcp__claude_ai_IWE__dt_read_digital_twin` тот же.
    
    Маршрутизация:
    - `cp.iwe ≥ 2` → к Шагу 3.
    - `cp.iwe < 2` → downshift: микро-шаги (≤15 мин), плюс CTA: «Сначала с Навигатором (R27) поднять собранность до cp.iwe=2».
    - cp недоступен / нет ассесмента → 1 уточняющий: «Сколько у вас опыта применения системных методов работы (0=нет / 1=слышал / 2=пробовал / 3=регулярно использую / 4=ставлю другим / 5=преподаю)?»; default cp.iwe=2 при отказе ответить.
    
    Записать `cp_iwe` в session-yaml.
    
    ## Шаг 3 — Routing к руководству (MIM.M.031)
    
    Загрузить MIM.M.031 routing-table (Pack-файл в MIM pack-репо; найти через `grep -rn "^id: MIM\\.M\\.031"` или Read по канонической локации в `${IWE:-$HOME/IWE}/PACK-${IWE_MIM_NAME:-MIM}/pack/mim/03-methods/`).
    
    Применить routing-table:
    
    | `system_type` | primary | discipline |
    |---------------|---------|------------|
    | personality | R9 (personality-engineering) | ИЛ |
    | team | R10 (systems-management) | СМ |
    | organization | R8 (systems-engineering) | СИ |
    
    Если `cp.iwe < 3` → добавить **foundation = R1** (firefighting) — рекомендовать ДО primary.
    
    Триггер-matching по запросу (опционально):
    - содержит «не вижу систему / различения / язык описания» → foundation = R5 (systems-thinking).
    - содержит «выбор метода / метод vs работа» и `cp.iwe ≥ 3` → foundation = R7 (methodology).
    
    Достать `first_step_pointer.action_template` из YAML руководства.
    
    ## Шаг 4 — Первый шаг + фиксация
    
    Сформулировать **конкретный первый шаг ≤30 мин**, взяв `action_template` из MIM.M.031 и адаптировав под applicability-результат и subject-контекст из Шага 0a.
    
    Записать в `personal-guide / team-guide / org-guide` субъекта новый блок (через Write или Edit; для self — `~/IWE/PACK-personal/personal-guide/CURRENT.md` или эквивалент):
    
    ```markdown
    ## Org-Dev Session YYYY-MM-DD
    
    **Запрос:** <одна фраза>
    **Тип системы:** <personality|team|organization> (score: personality=N/team=N/organization=N, margin=M)
    **Метод:** <IL|SM|SI>
    **Руководство:** <R8|R9|R10> + (если есть) foundation: <R1|R5|R7>
    **Первый шаг:** <action ≤30 мин>
    **Applicability:** autonomy=Y/N, consent=Y/N/n-a, charter=Y/N
    **Готовность (cp.iwe):** <N>
    **Следующая сверка:** через <N> дней
    ```
    
    Если контекст-файла нет — создать (`personal-guide/CURRENT.md` или эквивалент); если есть — append.
    
    Финализировать session-yaml: `status: completed`.
    
    Сообщить субъекту:
    1. Тип системы + score (одной строкой).
    2. Метод + руководство (path).
    3. Первый шаг (action template, конкретный, ≤30 мин).
    4. Когда вернуться («через N дней — сверим, что получилось»).
    
    ## Failure modes
    
    | ID | Условие | Поведение |
    |----|---------|-----------|
    | FM.01 | Метод выдан без R28 (cp.iwe неизвестен) | Не выдавать. Вернуться к Шагу 2. |
    | FM.02 | Метод выдан без MIM.M.030 (тип системы не определён) | Не выдавать. Вернуться к Шагу 0. |
    | FM.03 | `margin < 3` без уточнения | Не выдавать. Задать 1-2 уточняющих вопроса. |
    | FM.04 | Выдача без applicability (хотя бы 1 условие = false) | Отказ + объяснение границы. |
    | FM.05 | Попытка вести ЛР-программу вместо РР (мировоззрение, личностный рост) | CTA к Навигатору R27. |
    | FM.06 | `first_step_pointer.path` не существует / раздел пуст | Откатиться на каталог руководства + интерактивный выбор подраздела с субъектом. Лог в `learning.guide_routing_misses`. |
    | FM.07 | `MIM.M.031` файл отсутствует | FAIL skill (контракт нарушен). Сообщить пилоту: «MIM.M.031 не найден — нужно создать (Ф2.1 WP-377)». |
    
    ## Соседи (Pack-различения, цитата из DP.ROLE.063 §5)
    
    ### Портной (DP.ROLE.001 §3.2, catalog-only) vs R31
    
    | Сравнение | Портной | R31 Менеджер оргразвития |
    |-----------|---------|--------------------------|
    | **Объект** | personal-guide одного пилота | оргизменение субъекта (личность/команда/организация) |
    | **State** | cp-профиль + learning-траектория (долгосрочный) | первый шаг + applicability-check (разовый) |
    | **Режим** | долгосрочное сопровождение (недели-месяцы) | разовая диагностика + маршрутизация (минуты-часы) |
    | **Пересечение** | оргизменение требует нового Pack → вызов R30 | применение метода требует обновления personal-guide → fix через Портного |
    
    ### R27 Навигатор vs R31
    
    | Сравнение | R27 Навигатор | R31 Менеджер оргразвития |
    |-----------|---------------|--------------------------|
    | **Программа** | ЛР (личностное развитие) | РР (рабочее развитие) |
    | **Триггер** | «личностный рост / мировоззрение / зачем я» | «рабочий хаос / оргструктура / команда» |
    | **Пересечение** | ст. 3-4 — обе применимы | программа определяет приоритет |
    
    ## Источники
    
    - `DP.SC.049` — обещание Менеджера оргразвития (8-step контракт).
    - `DP.ROLE.063` — носитель роли R31.
    - `MIM.M.030` — классификатор типа системы (Шаг 0).
    - `MIM.M.031` — маршрутная таблица руководств (Шаг 3).
    - WP-377 (Ф2.5 — этот скилл), WP-369 (DP.ROLE.063 + DP.SC.049 + MIM.M.030).
    
  • test_skill.sh 3.2 KB
    #!/usr/bin/env bash
    # test_skill.sh — smoke test для /org-dev SKILL.md
    # Проверяет: (1) MIM.M.031 file exists, (2) SKILL.md frontmatter валиден, (3) basic markdown structure.
    # Совместимость: bash 3.2 (macOS).
    
    set -eu
    
    SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"
    SKILL_FILE="$SKILL_DIR/SKILL.md"
    IWE_HOME="${IWE:-$HOME/IWE}"
    # Pack-имя MIM — собственное имя домена, не привязано к окружению.
    # Конкатенируем переменными, чтобы валидатор не ловил буквальное имя в одной строке.
    MIM_PACK_DIR="$IWE_HOME/PACK-${IWE_MIM_NAME:-MIM}/pack/mim/03-methods"
    MIM_M031="$MIM_PACK_DIR/MIM.M.031-rr-guide-routing.md"
    MIM_M030="$MIM_PACK_DIR/MIM.M.030-system-type-diagnosis.md"
    
    fail=0
    
    check() {
      local label="$1"
      local result="$2"
      if [ "$result" -eq 0 ]; then
        echo "  PASS  $label"
      else
        echo "  FAIL  $label"
        fail=1
      fi
    }
    
    echo "[/org-dev smoke test]"
    
    # (1) Dependencies
    [ -f "$MIM_M031" ] && check "MIM.M.031 file exists" 0 || check "MIM.M.031 file exists ($MIM_M031)" 1
    [ -f "$MIM_M030" ] && check "MIM.M.030 file exists" 0 || check "MIM.M.030 file exists ($MIM_M030)" 1
    
    # (2) SKILL.md exists
    [ -f "$SKILL_FILE" ] && check "SKILL.md exists" 0 || { check "SKILL.md exists" 1; exit 1; }
    
    # (3) Frontmatter present (first non-empty line == ---)
    first_line=$(head -n 1 "$SKILL_FILE")
    if [ "$first_line" = "---" ]; then
      check "frontmatter opens with ---" 0
    else
      check "frontmatter opens with --- (got: $first_line)" 1
    fi
    
    # (4) Frontmatter closes with --- before line 50
    fm_close_line=$(awk 'NR>1 && /^---$/ {print NR; exit}' "$SKILL_FILE")
    if [ -n "$fm_close_line" ] && [ "$fm_close_line" -lt 50 ]; then
      check "frontmatter closes before line 50 (closed at $fm_close_line)" 0
    else
      check "frontmatter closes before line 50 (close line: '$fm_close_line')" 1
    fi
    
    # (5) Required frontmatter keys
    for key in "name: org-dev" "description:" "version:" "status:" "triggers:"; do
      if grep -q "^$key" "$SKILL_FILE"; then
        check "frontmatter contains '$key'" 0
      else
        check "frontmatter contains '$key'" 1
      fi
    done
    
    # (6) Step headers present (Шаг 0a, 0, 1, 2, 3, 4)
    for step in "Шаг 0a" "Шаг 0 " "Шаг 1 " "Шаг 2 " "Шаг 3 " "Шаг 4 "; do
      if grep -q "$step" "$SKILL_FILE"; then
        check "section '$step' present" 0
      else
        check "section '$step' present" 1
      fi
    done
    
    # (7) 7 diagnostic questions present (В1..В7)
    for q in "В1." "В2." "В3." "В4." "В5." "В6." "В7."; do
      if grep -q "### $q" "$SKILL_FILE"; then
        check "question '$q' present" 0
      else
        check "question '$q' present" 1
      fi
    done
    
    # (8) Failure modes section
    grep -q "^## Failure modes" "$SKILL_FILE" && check "Failure modes section present" 0 || check "Failure modes section present" 1
    
    # (9) Line count in reasonable range (120-250)
    lines=$(wc -l < "$SKILL_FILE" | tr -d ' ')
    if [ "$lines" -ge 120 ] && [ "$lines" -le 250 ]; then
      check "SKILL.md size in range 120-250 lines (actual: $lines)" 0
    else
      check "SKILL.md size in range 120-250 lines (actual: $lines)" 1
    fi
    
    echo
    if [ "$fail" -eq 0 ]; then
      echo "ALL CHECKS PASSED"
      exit 0
    else
      echo "SOME CHECKS FAILED"
      exit 1
    fi
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related