fix(install): gate confluence for every profile and dedup PROFILE selection

- Add 'confluence' (always-enabled, per README) to COMMON_BUNDLED so a
  default install (no PI_KIT_PROFILE / no tty) no longer silently strips
  it from settings.json. The allowlist now covers every skill under skills/.
- Deduplicate PROFILES in profiles_from_text: skip a canonical name already
  present, so 'frontend,1' or 'backend backend' no longer causes a redundant
  'npx skills add' call or a misleading 'Профили: frontend frontend'.
- Ship the multi-profile refactor it builds on: merged profile sets,
  profile_skills()/add_word() helpers, README updates, and the pm-task-spec
  bundled skill.

Validated: bash -n; functional checks for dedup and allowlist coverage.
This commit is contained in:
Aleksey Shakhmatov
2026-08-10 12:11:53 +03:00
parent 0c6e590273
commit 3c44853cde
3 changed files with 244 additions and 80 deletions
+17 -10
View File
@@ -17,8 +17,8 @@ curl -fsSL https://git.codelab.vc/ai/pi-kit/raw/branch/stable/install.sh | bash
```
Скрипт проверит `git` и Node.js (>= 20) — оба обязательны: git нужен для `pi install git:...`,
Node для Pi. Затем поставит Pi (если нет), установит этот пакет, **спросит твой профиль**, поставит
нужные скилы и **интерактивно настроит окружение** (`TRACKER_URL`, `CONFLUENCE_URL`,
Node для Pi. Затем поставит Pi (если нет), установит этот пакет, **спросит один или несколько твоих профилей**,
поставит нужные скилы (их наборы объединяются) и **интерактивно настроит окружение** (`TRACKER_URL`, `CONFLUENCE_URL`,
`JIRA_TOKEN`, `CONFLUENCE_TOKEN`, `GITLAB_TOKEN`, ключ LLM-провайдера). Секреты вводятся скрыто и
сохраняются в
`~/.config/pi-kit/env.sh` (`chmod 600`), который подключается из твоего `~/.zshrc`/`~/.bashrc`.
@@ -30,12 +30,16 @@ Pi провайдер-агностичен — модель/провайдера
Пропустить интерактивную настройку окружения: `PI_KIT_SETUP_ENV=0`. Значения потом можно
поменять прямо в `~/.config/pi-kit/env.sh` или перезапустив `./install.sh`.
Профиль можно задать заранее (для CI/неинтерактивной установки):
Профили можно задать заранее (для CI/неинтерактивной установки) — через запятую:
```bash
PI_KIT_PROFILE=backend curl -fsSL https://git.codelab.vc/ai/pi-kit/raw/branch/stable/install.sh | bash
PI_KIT_PROFILE=backend,qa curl -fsSL https://git.codelab.vc/ai/pi-kit/raw/branch/stable/install.sh | bash
```
Один профиль тоже подходит: `PI_KIT_PROFILE=backend`. Скилы выбранных профилей
**объединяются** (дубли убираются), а `jira-workflow`/`repo-map`/`docs-map` и общие
публичные скилы ставятся всегда.
### Профили и скилы
Общее для всех: команды `/bugfix /feature /review /rfc /kit-config /kit-doctor /kit-help`,
@@ -54,7 +58,8 @@ guardrails, скиллы `jira-workflow`, `confluence`, `repo-map`, `docs-map`,
сжатой постановки задачи до структурированной, пригодной для передачи в разработку)
без языковых стандартов кода.
Сменить профиль позже: `PI_KIT_PROFILE=frontend ./install.sh` (или перезапусти установку).
Сменить/добавить профиль позже: `PI_KIT_PROFILE=frontend,qa ./install.sh` (или перезапусти установку
и выбери несколько). Уже установленные наборы скилов можно дополнить, указав нужные профили ещё раз.
Либо вручную (канал `stable` по умолчанию):
@@ -208,17 +213,19 @@ pi-kit/
### Профили и гейтинг скилов
`install.sh` спрашивает профиль (или берёт `PI_KIT_PROFILE`) и делает две вещи:
`install.sh` спрашивает один или несколько профилей (или берёт `PI_KIT_PROFILE`) и делает две вещи:
1. **Гейтит наши скилы** — переписывает запись пакета в `~/.pi/agent/settings.json` в
object-форму `{"source": "...", "skills": ["skills/go-standards", ...]}`, чтобы грузились
только скилы профиля. Prompts и расширения не гейтятся (их ключи опущены → грузятся все).
только скилы выбранных профилей. Prompts и расширения не гейтятся (их ключи опущены → грузятся все).
2. **Ставит публичные скилы** через `npx skills add <repo> --skill <name> --global` в
`~/.agents/skills/` (Pi читает эту папку). Чужой код в наш репо не вендорится.
Чтобы поменять маппинг профиль→скилы — правь блок `case "$PROFILE"` и `COMMON_PUBLIC_SKILLS`
в `install.sh`. Языковой скилл добавляется как обычный (см. ниже) и подключается к нужному
профилю в этом `case`. Профили: `frontend`, `backend`, `qa`, `mobile`, `pm`.
Наборы скилов нескольких профилей объединяются (путь `frontend+qa` даст и `typescript`
и `python` стандарты). Чтобы поменять маппинг профиль→скилы — правь функцию `profile_skills()`
и `COMMON_PUBLIC_SKILLS` в `install.sh`. Языковой скилл добавляется как обычный (см. ниже)
и подключается к нужному профилю в этой функции. Профили: `frontend`, `backend`, `qa`,
`mobile`, `pm` — любые сочетаются между собой.
### Как добавить шаблон-команду