L0 11c-2: setup-interns blocked + 3 new gaps

- Pre-step: clone .common preserving sub-repo lib/projects-meta-mcp
- 1st run of /setup-interns  STOP at Phase 1 (.common/ not found)
  Reason: skill resolves <project-root>/.common cwd-relative;
  claude was launched from C:\Windows\System32 (no cd before)
- Surface 3 gaps:
  * setup-interns uses cwd-relative paths; setup-projects-meta uses
    absolute ~/projects/.common (fixed by using-projects-meta-fix-paths)
  * setup-projects-meta only mkdir's .common/lib/, doesn't clone the
    .common repo itself — every following setup-* skill breaks
  * bootstrap.ps1 must Set-Location $PROJECTS_DIR before launching claude
- Workaround: cd $PROJECTS_DIR, re-launch claude, re-run /setup-interns
- Followup task: setup-interns-fix-paths in claude-skills/.tasks/

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-06 15:26:41 +03:00
parent 965cdb788c
commit 51ca747af0

View File

@@ -340,9 +340,31 @@ claude
**Решение по экспозиции токена:** PAT (`9e0f1f71...546d`) утёк в чат и в `.git/config` двух клонов. Юзер сознательно скипнул ротацию (private gitea на собственном сервере, риск приемлемый). Зафиксировано как факт; технический gap для скила setup-projects-meta — отдельная задача `setup-projects-meta-token-leak` в `claude-skills/.tasks/`.
##### 11c-2 — `/setup-interns`
##### 11c-2 — `/setup-interns` 🔄
(после ротации токена)
**Pre-step (на ноуте):** клонировать `.common/` целиком, сохранив существующий sub-репо `lib/projects-meta-mcp/`:
```powershell
$common = "$PROJECTS_DIR\.common"
$tmp = "$PROJECTS_DIR\.common.bak-projects-meta-mcp"
Move-Item "$common\lib\projects-meta-mcp" $tmp
Remove-Item -Recurse -Force $common
git clone https://git.kzntsv.site/OpeItcLoc03/common.git $common
New-Item -ItemType Directory -Force -Path "$common\lib" | Out-Null
Move-Item $tmp "$common\lib\projects-meta-mcp"
```
Verify: `Test-Path "$common\lib\interns-mcp\pyproject.toml"`, `Test-Path "$common\config\interns\config.yaml"`, `Test-Path "$common\lib\projects-meta-mcp\dist\server.js"` — все True.
**Факт первого запуска (2026-05-06):**
- Phase 0 ✅ (Python 3.12.13 в mise, Node 24.15.0)
- Phase 1 ❌ STOP: ".common/lib/interns-mcp/ not found"
- **Причина:** скил `setup-interns` ищет `<project-root>/.common/...` **относительно cwd**. На ноуте `claude` был запущен из `C:\Windows\System32` — там нет `.common/`.
- Сравнение: `setup-projects-meta` SKILL.md уже исправлен на абсолютный `~/projects/.common/...` (через done-задачу `using-projects-meta-fix-paths`). У `setup-interns` тот же баг — task `setup-interns-fix-paths` открыт в `claude-skills/.tasks/STATUS.md`.
**Workaround для field-test:** `cd $PROJECTS_DIR` перед `claude`. Тогда cwd содержит `.common/` как ребёнка, скил его находит.
(второй запуск — после re-launch claude из `$PROJECTS_DIR`)
##### 11c-3 — `/setup-tasks`, 11c-4 — `/setup-wiki`, 11c-5 — `/setup-context7` ⏳
@@ -366,6 +388,8 @@ claude
- **2026-05-06 шаг 11c-1 / setup-projects-meta**: при first-clone без creds скил fallback'ается на `https://USER:TOKEN@host/...` → токен пишется в `.git/config` клонированного репо. Это утечка. Канон в скиле: `git -c http.extraheader="Authorization: token $T" clone …` (per-invocation, не персистит). Создать задачу `setup-projects-meta-token-leak` в `claude-skills/.tasks/`.
- **2026-05-06 шаг 11c-1**: `~\.claude.json` после первого `claude login` — без ключа `mcpServers`. Все setup-* должны идемпотентно добавлять корневой ключ. setup-projects-meta это сделал правильно — ок.
- **2026-05-06 шаг 11c-1 — security**: PAT, выданный юзером в чат, оказался в (a) транскрипте Claude / телеметрии, (b) `.git/config` двух клонов, (c) `auth.toml`. Юзер скипнул ротацию (private gitea, low-stakes). **Канон для bootstrap.ps1 (на будущее, для public hosts)**: токен запрашивать через `Read-Host -AsSecureString` в shell-промпте до запуска `claude`, не через чат. Для приватных gitea — на усмотрение администратора.
- **2026-05-06 шаг 11c-2 — cwd**: setup-* скилы расходятся в способе адресации `.common/`. `setup-projects-meta` использует абсолютный `~/projects/.common/...` (исправлено в done-задаче `using-projects-meta-fix-paths`). `setup-interns` всё ещё юзает cwd-относительный `<project-root>/.common/...`. На голой Win11 у юзера cwd при первом `claude` часто `C:\Windows\System32` (он не делает `cd`) — `setup-interns` падает в Phase 1. **Канон для bootstrap.ps1**: явно `Set-Location $PROJECTS_DIR` ДО запуска claude. Долгосрочно: фабрикa-aware скилы должны читать `projects_dir` из `~/.config/factory/home.toml`. Открыта задача `setup-interns-fix-paths` в `claude-skills/.tasks/`.
- **2026-05-06 шаг 11c-2 — `.common` clone**: `setup-projects-meta` создаёт только `.common/lib/projects-meta-mcp/` (через `mkdir -p ~/projects/.common/lib && git clone …`), но НЕ клонирует сам репо `.common`. В результате на новой машине после setup-projects-meta существует псевдо-`.common/` без `CLAUDE.md`, `config/`, `prompts/`, `scripts/`, `lib/interns-mcp/` — это ломает `setup-interns` и любой следующий setup-* в цепочке. **Канон для bootstrap.ps1 / для L1 manifest**: `dot-common` — отдельный компонент с `source: { type: git, url: "{gitea}/common" }, target: "{projects_dir}/.common"`, ставится ДО projects-meta-mcp. В текущем field-test'е сделан pre-step вручную (move projects-meta-mcp aside → clone .common → restore).
## Resume point — 2026-05-06 (перерыв)