diff --git a/CHANGELOG.md b/CHANGELOG.md index e53af0a..3a69226 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,16 @@ - Пример конфига в README приведён в соответствие с реальным `config/company.json`. ### Added +- **Нативные инструменты** для Jira/Confluence/GitLab вместо MCP-моста и bash-скриптов: + `jira_issue_*` (get/create/update/comment/transition/search/link_mr), + `gitlab_mr_create`/`gitlab_pipeline_status`/`gitlab_code_search`, + `confluence_search`/`confluence_page_get`/`confluence_page_create`. + Логика — в чистых модулях `extensions/lib/{jira,gitlab,confluence,atlassian}.ts` + (unit-тесты `test/api.test.ts`), URL — из `config/company.json`, токены — из env. +- Новый скилл `confluence` (поиск/чтение/создание страниц wiki). +- `install.sh`: дефолтные URL сервисов берутся из `config/company.json` и предлагаются + с подтверждением/вводом; добавлены `CONFLUENCE_URL`/`CONFLUENCE_TOKEN` и короткие справки + «где взять токен» для Jira/Confluence/GitLab. - `uninstall.sh` — полное удаление кита одной командой с подтверждением (пакет+клон, публичные скилы, `~/.config/pi-kit` с токенами, блок в shell-rc; флаги `PI_KIT_UNINSTALL`/`PI_KIT_KEEP_CONFIG`/`PI_KIT_KEEP_SKILLS`); покрыт тестами @@ -27,6 +37,15 @@ - Audit-endpoint: повторные попытки POST (до 3, с backoff), по-прежнему best-effort. - Явная проверка версии Node в тестах: `npm test` требует ≥ 22.6 (type-stripping), документировано в README/RELEASING. +- Новый профиль `pm` — для продакт-менеджеров: добавляет скилл `pm-task-spec` + (доведение сжатой постановки задачи до структурированной, пригодной для передачи + в разработку) без языковых стандартов кода. + +### Changed +- MCP-мост (`mcp-bridge.ts`, `config/mcp.json`, `docs/mcp.md`, команда `/mcp-status`, + опциональная зависимость `@modelcontextprotocol/sdk`) **удалён** как часть перехода на + нативные инструменты; bash-скрипты `skills/jira-workflow/scripts/*.sh` убраны. +- `jira-workflow` переписан на вызов нативных инструментов (без bash/MCP). ## [0.2.1] — 2026-07-16 diff --git a/README.md b/README.md index 39cec02..b1b2cd0 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,14 @@ guardrails и скиллы со знанием того, где у нас код curl -fsSL https://git.codelab.vc/ai/pi-kit/raw/branch/stable/install.sh | bash ``` -Скрипт проверит Node.js (>= 20), поставит Pi (если нет), установит этот пакет, **спросит -твой профиль**, поставит нужные скилы и **интерактивно настроит окружение** (`TRACKER_URL`, -`JIRA_TOKEN`, `GITLAB_TOKEN`, ключ LLM-провайдера). Секреты вводятся скрыто и сохраняются в +Скрипт проверит `git` и Node.js (>= 20) — оба обязательны: git нужен для `pi install git:...`, +Node для Pi. Затем поставит Pi (если нет), установит этот пакет, **спросит твой профиль**, поставит +нужные скилы и **интерактивно настроит окружение** (`TRACKER_URL`, `CONFLUENCE_URL`, +`JIRA_TOKEN`, `CONFLUENCE_TOKEN`, `GITLAB_TOKEN`, ключ LLM-провайдера). Секреты вводятся скрыто и +сохраняются в `~/.config/pi-kit/env.sh` (`chmod 600`), который подключается из твоего `~/.zshrc`/`~/.bashrc`. +Установщик просит подтвердить дефолтные URL сервисов (из `config/company.json`) и при запросе +каждого токена показывает короткую справку, где его получить. Pi провайдер-агностичен — модель/провайдера пакет не навязывает, каждый выбирает свой (Anthropic, OpenAI, OpenRouter, …). @@ -34,8 +38,8 @@ PI_KIT_PROFILE=backend curl -fsSL https://git.codelab.vc/ai/pi-kit/raw/branch/st ### Профили и скилы -Общее для всех: команды `/bugfix /feature /review /rfc /kit-config /kit-doctor /kit-help /mcp-status`, -guardrails, скилы `jira-workflow`, `repo-map`, `docs-map`, и публичные `grill-me`, `grill-with-docs`, +Общее для всех: команды `/bugfix /feature /review /rfc /kit-config /kit-doctor /kit-help`, +guardrails, скиллы `jira-workflow`, `confluence`, `repo-map`, `docs-map`, и публичные `grill-me`, `grill-with-docs`, `code-review`, `diagnosing-bugs`. Дополнительно по профилю: | Профиль | Языковые стандарты | Доп. публичные скилы | @@ -44,6 +48,11 @@ guardrails, скилы `jira-workflow`, `repo-map`, `docs-map`, и публич | `backend` | go, rust, python | — | | `qa` | python, typescript | — | | `mobile` | kotlin, swift | — | +| `pm` | — | — (бандл `pm-task-spec`) | + +Профиль `pm` — для продакт-менеджеров: подключает скилл **`pm-task-spec`** (доведение +сжатой постановки задачи до структурированной, пригодной для передачи в разработку) +без языковых стандартов кода. Сменить профиль позже: `PI_KIT_PROFILE=frontend ./install.sh` (или перезапусти установку). @@ -75,16 +84,34 @@ pi update --extensions | `/kit-config` | Показать действующие корпоративные значения и их источник (local/remote) | | `/kit-doctor` | Health-check окружения (node, версия/канал, конфиг, env, токены; подсветит незаполненные поля) | | `/kit-help` | Каталог возможностей: команды, скилы, guardrails | -| `/mcp-status` | Статус MCP-серверов (Jira/Confluence/GitLab; по умолчанию выключены — см. `docs/mcp.md`) | + +### Нативные инструменты (Jira / Confluence / GitLab) + +Вместо MCP-моста и bash-скриптов работа с корпоративными API реализована как **нативные +инструменты pi** (`pi.registerTool`) — агент вызывает их напрямую. URL берутся из +`config/company.json`, токены — из `env.sh`. + +| Область | Инструменты | +|---|---| +| Jira | `jira_issue_get`, `jira_issue_create`, `jira_issue_update`, `jira_issue_comment`, `jira_issue_transition`, `jira_search`, `jira_link_mr` | +| GitLab | `gitlab_mr_create`, `gitlab_pipeline_status`, `gitlab_code_search` | +| Confluence | `confluence_search`, `confluence_page_get`, `confluence_page_create` | + +Разбирают их скиллы `jira-workflow` и `confluence`; логика вынесена в чистые модули +`extensions/lib/{jira,gitlab,confluence}.ts` (unit-тестируются). ### Скиллы Подключаются автоматически, когда задача им соответствует: -- **jira-workflow** — работа с трекером (чтение тикетов, комментарии, ссылки и создание MR). +- **jira-workflow** — работа с трекером через нативные инструменты `jira_issue_*` + (чтение, создание/обновление, комментарии, переходы, JQL-поиск, привязка MR). +- **confluence** — поиск/чтение/создание страниц через `confluence_search`, `confluence_page_*`. - **repo-map** — как ориентироваться в наших репозиториях (если карта не заполнена — скилл скажет об этом и не будет выдумывать). - **docs-map** — как искать и куда писать документацию. +- **pm-task-spec** — постановка задачи продакт-менеджером: выявляет слабые места, опрашивает + по ключевым доменам и выдаёт готовую структурированную постановку (подключается по профилю `pm`). - **Языковые стандарты** — `-standards` для `go`/`rust`/`python`/`typescript`/`kotlin`/`swift`: структура, линтеры, тесты, коммиты/MR. Подключаются **по профилю** (см. таблицу выше), промпты команд ссылаются на них обобщённо (`-standards`), а не на конкретный язык. @@ -114,19 +141,18 @@ pi update --extensions pi-kit/ ├── package.json # манифест: секция "pi" + Pi-библиотеки в peerDependencies ("*") ├── config/company.json # ЕДИНЫЙ источник правды: gitHost, trackerUrl, docsUrl, repoMap, rules, remoteConfigUrl -├── extensions/ # TS-расширения (guardrails + инъекция контекста) +├── extensions/ # TS-расширения (guardrails + нативные инструменты + контекст) │ ├── company-context.ts + company-context.md # контекст сессии + /kit-config +│ ├── jira-tools.ts gitlab-tools.ts confluence-tools.ts # нативные инструменты API │ ├── protected-paths.ts │ ├── permission-gate.ts │ ├── secret-scanner.ts commit-guard.ts llm-redaction.ts audit-log.ts -│ ├── mcp-bridge.ts # Jira/Confluence/GitLab MCP (по умолч. выкл.) │ ├── kit-cli.ts # /kit-doctor, /kit-help -│ └── lib/ # общий код (secrets, audit, company-config) -├── skills/ # SKILL.md-скиллы (jira-workflow/repo-map/docs-map + -standards) +│ └── lib/ # общий код (jira, gitlab, confluence, secrets, audit, company-config) +├── skills/ # SKILL.md-скиллы (jira-workflow/confluence/repo-map/docs-map/pm-task-spec + -standards) ├── prompts/ # шаблоны команд (/bugfix, /feature, /review, /rfc) -├── test/ # guardrails.test.ts (node) + shell/uninstall shell-тесты -├── docs/mcp.md # документация MCP-интеграций -├── install.sh # bootstrap для новых сотрудников +├── test/ # guardrails.test.ts + api.test.ts (node) + shell/uninstall shell-тесты +├── install.sh # bootstrap для новых сотрудников (дефолты URL из company.json + справки по токенам) └── uninstall.sh # полное удаление кита (с подтверждением) ``` @@ -146,7 +172,8 @@ pi-kit/ "docsUrl": "https://wiki.mvideo.ru", "repoMap": "TODO: где какой код лежит", "rules": ["не коммитить секреты", "не пушить в main", "MR обязателен"], - "remoteConfigUrl": null + "remoteConfigUrl": null, + "auditEndpoint": null } ``` @@ -191,7 +218,7 @@ pi-kit/ Чтобы поменять маппинг профиль→скилы — правь блок `case "$PROFILE"` и `COMMON_PUBLIC_SKILLS` в `install.sh`. Языковой скилл добавляется как обычный (см. ниже) и подключается к нужному -профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile`. +профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile`, `pm`. ### Как добавить шаблон-команду