fix(review): address review findings (guardrails, prompts, tests, docs)
- permission-gate: block refs/tags/v* pushes, rm -r -f separated flags, git reset --hard, git clean (verified against actual bypasses) - prompts: /bugfix /feature /review no longer hardcode go-standards — reference profile-gated <lang>-standards instead - company-context: drop hardcoded Go stack, note TRACKER_URL priority, warn on context truncation instead of silently dropping rules - repo-map/docs-map: graceful degradation when config values are TODO - /kit-doctor: warn on unfilled config fields (repoMap/trackerUrl/docsUrl) - audit: retry POSTs to endpoint (3 attempts, backoff), still best-effort - install.sh: remove TODO course URL from cheat sheet - tests: expand guardrails (43 node checks), add shell tests for create-mr.sh (scp/https origin parse, GITLAB_HOST override, protected branch refusal), cover company-context lib (normalize/fetch/truncation) and mcp-bridge - commit package-lock.json for reproducible installs - document npm test Node >= 22.6 requirement (type stripping)
This commit is contained in:
@@ -88,8 +88,9 @@ pi update --extensions
|
||||
### Guardrails (встроенная защита)
|
||||
|
||||
- **protected-paths** — блокирует запись/редактирование секретов, ключей, `.git/`, прод-конфигов (по пути).
|
||||
- **permission-gate** — переспрашивает перед опасными командами (`rm -rf`, force push,
|
||||
push в `main`/`master`/`release-*`, тег `v*` (прод-деплой), прод-`kubectl`, `docker system prune`, `sudo`).
|
||||
- **permission-gate** — переспрашивает перед опасными командами (`rm -rf`/`rm -r -f`, force push,
|
||||
push в `main`/`master`/`release-*`, тег `v*` (в т.ч. через `refs/tags/` — прод-деплой),
|
||||
`git reset --hard`, `git clean`, прод-`kubectl`, `docker system prune`, `sudo`).
|
||||
- **secret-scanner** — блокирует запись контента, похожего на секрет (по содержимому).
|
||||
- **commit-guard** — требует Conventional Commits и сканирует сообщение коммита на секреты.
|
||||
- **llm-redaction** — вырезает секреты из payload перед отправкой в LLM.
|
||||
@@ -112,7 +113,11 @@ pi-kit/
|
||||
├── extensions/ # TS-расширения (guardrails + инъекция контекста)
|
||||
│ ├── company-context.ts + company-context.md # контекст сессии + /kit-config
|
||||
│ ├── protected-paths.ts
|
||||
│ └── permission-gate.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/go-standards)
|
||||
├── prompts/ # шаблоны команд (/bugfix, /feature, /review, /rfc)
|
||||
└── install.sh # bootstrap для новых сотрудников
|
||||
@@ -129,15 +134,19 @@ pi-kit/
|
||||
|
||||
```json
|
||||
{
|
||||
"gitHost": "git.codelab.vc",
|
||||
"trackerUrl": "TODO",
|
||||
"docsUrl": "TODO",
|
||||
"gitHost": "gitlab.tech.mvideo.ru",
|
||||
"trackerUrl": "https://jira.mvideo.ru",
|
||||
"docsUrl": "https://wiki.mvideo.ru",
|
||||
"repoMap": "TODO: где какой код лежит",
|
||||
"rules": ["не коммитить секреты", "не пушить в main", "MR обязателен"],
|
||||
"remoteConfigUrl": null
|
||||
}
|
||||
```
|
||||
|
||||
> Значения выше — текущие действующие; в этом файле хранится **единственный** источник правды
|
||||
> (адрес самого репозитория pi-kit — `git.codelab.vc` — к нему отношения не имеет, он живёт
|
||||
> только в `install.sh`).
|
||||
|
||||
- Меняешь значение → правишь **только этот файл**. Скиллы и шаблоны на него ссылаются через
|
||||
корпоративный контекст сессии, который инжектит `company-context.ts`.
|
||||
- **`remoteConfigUrl`**: если указать URL, при старте сессии `company-context.ts` скачает свежий
|
||||
@@ -200,7 +209,7 @@ pi-kit/
|
||||
```bash
|
||||
# из корня репозитория
|
||||
pi install ./ # установить пакет из локальной папки
|
||||
npm test # прогнать тесты guardrails
|
||||
npm test # прогнать тесты guardrails и shell-скриптов
|
||||
pi # запустить: расширения загрузятся, команды /bugfix и т.д. появятся
|
||||
|
||||
# опциональный строгий typecheck (нужны peer-типы Pi):
|
||||
@@ -208,6 +217,9 @@ npm install
|
||||
npm run typecheck
|
||||
```
|
||||
|
||||
> ⚠️ `npm test` требует **Node.js ≥ 22.6** (type-stripping). Для сотрудников в `install.sh`
|
||||
> достаточно Node ≥ 20 — это требование тест-харнеса мейнтейнеров, не установки.
|
||||
|
||||
Минимальный чек-лист MR: расширения загружаются без ошибок; `/kit-config` показывает значения;
|
||||
запись в `.env` реально блокируется; изменение `config/company.json` отражается в `/kit-config`
|
||||
без других правок.
|
||||
|
||||
Reference in New Issue
Block a user