L0 progress snapshot — Win11 field-test (steps 1-10, 11a complete)
Captures the full step-by-step output of bootstrapping a fresh Win11 laptop through the factory L0a + L0b layers up to claude-skills install. Includes a Resume Point section listing what's done, what's in flight (11b — plugins), and what's next (11c — setup-* skills). Gap list (the harvest of this field-test) accumulates in the same file under 'Gaps / questions surfaced during field-test'. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -206,7 +206,11 @@ Set-Location $PROJECTS_DIR
|
||||
|
||||
---
|
||||
|
||||
### Шаг 9 — Склонировать .factory ⏳
|
||||
### Шаг 9 — Склонировать .factory ✅
|
||||
|
||||
**Pre-step (на директорской машине):** создать репо `git.kzntsv.site/OpeItcLoc03/factory` (private, без README), `git init -b master` в локальной `.factory/`, commit, `git push -u origin master`. Сделано 2026-05-06, root-commit `7e0c158`, 3 файла + папка L0.
|
||||
|
||||
**На новом ноуте:**
|
||||
|
||||
```powershell
|
||||
git clone https://git.kzntsv.site/OpeItcLoc03/factory.git "$PROJECTS_DIR\.factory"
|
||||
@@ -214,40 +218,86 @@ git clone https://git.kzntsv.site/OpeItcLoc03/factory.git "$PROJECTS_DIR\.factor
|
||||
|
||||
**Mapping**: gitea-имя репо = `factory` (без точки — gitea не любит точку в начале); локальная папка после клона = `.factory/` (с точкой, чтобы быть сиблингом `.common`/`.wiki`/etc). Это закреплённая конвенция для всех мета-репо.
|
||||
|
||||
**Замечание:** `factory` пока не в gitea (новый репо). До field-test'а нужно либо запушить с этой машины, либо bootstrap-ить через `--via-zip` (TBD).
|
||||
**Факт (2026-05-06):**
|
||||
- `git clone` прошёл без интерактивного запроса PAT — Windows Credential Vault уже знал `git.kzntsv.site` (либо через OAuth, либо PAT был сохранён GCM при предыдущей сессии). Удобно для этого ноута, но **gap** для свежей машины нового сотрудника.
|
||||
- `git log --oneline` → `7e0c158 Initial commit: factory skeleton + L0 install log (field-test 2026-05-06)` ✅
|
||||
- `git remote -v` → origin корректный.
|
||||
- 3 файла + L0/ ✅
|
||||
|
||||
**Факт:** ⏳
|
||||
**Gap для bootstrap.ps1:** на голой машине нового сотрудника GCM ещё не знает gitea. Скрипт должен явно открыть `https://git.kzntsv.site/user/settings/applications` в браузере, попросить пользователя сгенерить PAT (scopes: `read:repository` + `write:repository` + `read:user`) и нажать Enter. Дальше первый `git clone` всплывёт с GCM-prompt — пользователь введёт username + PAT, GCM сохранит в Credential Vault. Все последующие clone/push молчаливые.
|
||||
|
||||
---
|
||||
|
||||
### Шаг 10 — Записать home.toml ⏳
|
||||
### Шаг 10 — Записать home.toml 🔄
|
||||
|
||||
⚠ TOML strings с Windows-путями (backslashes) — должны быть **literal strings** (одинарные кавычки), иначе backslash интерпретируется как escape.
|
||||
|
||||
**Первая попытка** — через here-string `@" ... "@` — провалилась: после copy-paste закрывающий `"@` оказался с leading whitespace, PowerShell не закрыл here-string и завис в `>>` continuation prompt.
|
||||
|
||||
**Рабочая версия — без here-string, через array + Set-Content** (устойчиво к copy-paste):
|
||||
|
||||
```powershell
|
||||
$cfg = "$env:USERPROFILE\.config\factory"
|
||||
New-Item -ItemType Directory -Force -Path $cfg | Out-Null
|
||||
@"
|
||||
projects_dir = "$PROJECTS_DIR"
|
||||
client = "claude-code"
|
||||
installed_at = "$(Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ')"
|
||||
"@ | Out-File -Encoding utf8 "$cfg\home.toml"
|
||||
$now = Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ'
|
||||
|
||||
$lines = @(
|
||||
"# factory home — single source of machine-level state",
|
||||
"# auto-generated by L0b bootstrap; safe to edit by hand",
|
||||
"",
|
||||
"projects_dir = '$PROJECTS_DIR'",
|
||||
"client = 'claude-code'",
|
||||
"installed_at = '$now'"
|
||||
)
|
||||
$lines | Set-Content -Encoding utf8 "$cfg\home.toml"
|
||||
|
||||
Get-Content "$cfg\home.toml"
|
||||
```
|
||||
|
||||
**Факт:** ⏳
|
||||
**Факт (2026-05-06):**
|
||||
- Попытка 1 (here-string) — провалилась из-за whitespace перед `"@`.
|
||||
- Попытка 2 (array + Set-Content) — ✅. `home.toml` содержит:
|
||||
```toml
|
||||
# factory home — single source of machine-level state
|
||||
# auto-generated by L0b bootstrap; safe to edit by hand
|
||||
|
||||
projects_dir = 'C:\Users\vitya\projects'
|
||||
client = 'claude-code'
|
||||
installed_at = '2026-05-06T11:41:04Z'
|
||||
```
|
||||
- TOML literal strings корректно сохраняют backslashes Windows-пути.
|
||||
|
||||
**Gap для bootstrap.ps1**: НЕ использовать here-strings (`@" ... "@`) — слишком хрупкие к whitespace-ошибкам при copy-paste. Писать конфиги через `Set-Content -Value $array` или `[System.IO.File]::WriteAllText(...)`. Если нужна BOM-free UTF-8, на PS5.1 `Set-Content -Encoding utf8` создаёт UTF-8 *с BOM* — для cross-version совместимости лучше `[System.IO.File]::WriteAllText($path, $content, [System.Text.UTF8Encoding]::new($false))`.
|
||||
|
||||
---
|
||||
|
||||
### Шаг 11 — Запустить L1 (`factory install`) ⏳
|
||||
### Шаг 11 — Запустить L1 (`factory install`) — серия под-шагов
|
||||
|
||||
L1 пока не существует (нет Go-бинаря). Вместо него — **manual run** через Claude Code:
|
||||
L1 пока не существует (нет Go-бинаря). Вместо него — **manual run** через Claude Code, по под-шагам.
|
||||
|
||||
1. Запустить `claude` в `$PROJECTS_DIR`.
|
||||
2. Авторизоваться (`claude login`).
|
||||
3. Установить плагины superpowers + claude-skills (через `bash <claude-skills>/scripts/install.sh` после клонирования claude-skills).
|
||||
4. По очереди вызывать `/setup-projects-meta`, `/setup-interns`, `/setup-tasks`, `/setup-wiki`, `/setup-context7` — каждый со своим preview/confirm.
|
||||
#### Шаг 11a — клонировать claude-skills + установить скилы ✅
|
||||
|
||||
Этот шаг — самый "ручной", и именно он должен превратиться в L1 manifest после field-test'а.
|
||||
```powershell
|
||||
cd $PROJECTS_DIR
|
||||
git clone https://git.kzntsv.site/OpeItcLoc03/claude-skills.git
|
||||
cd claude-skills
|
||||
pwsh scripts/install.ps1
|
||||
Get-ChildItem -Path "$env:USERPROFILE\.claude\skills" -Directory | Select-Object Name
|
||||
```
|
||||
|
||||
**Факт:** ⏳
|
||||
**Факт (2026-05-06):**
|
||||
- Клон claude-skills (698 объектов, 557 КБ) ✅
|
||||
- В `claude-skills/scripts/` изначально не было `install.ps1` — только `install.sh`. Добавлен из директорской машины (commit `ef14594`, push в gitea), на ноуте `git pull --ff-only` подтянул.
|
||||
- `pwsh scripts/install.ps1` — **21 скилл** установлен в `C:\Users\vitya\.claude\skills\` (active-platform, caveman-*, find-skills, project-bootstrap, project-discipline, pulling-before-work, setup-context7, setup-interns, setup-projects-meta, setup-tasks, setup-wiki, using-context7, using-interns, using-markitdown, using-projects-meta, using-tasks, using-wiki) ✅
|
||||
- Финальный `Get-ChildItem` — те же 21 имени, всё на месте.
|
||||
|
||||
#### Шаг 11b — запустить claude, залогиниться, поставить плагины ⏳
|
||||
|
||||
(в работе)
|
||||
|
||||
#### Шаг 11c — пройтись по setup-* скилам ⏳
|
||||
|
||||
(в работе)
|
||||
|
||||
---
|
||||
|
||||
@@ -261,6 +311,41 @@ L1 пока не существует (нет Go-бинаря). Вместо н
|
||||
- **2026-05-06 conv**: в gitea репо называются БЕЗ точки (`factory`, не `.factory`). Локальная папка — С точкой (`.factory/`). Закрепить mapping `gitea_repo → local_path` в L1 manifest (вероятно как поле `target_dir` отдельно от `source.url`).
|
||||
- **2026-05-06 шаг 3**: после `winget install jdx.mise` PATH обновлён только для НОВЫХ сессий. App-execution-alias делает `mise --version` рабочим сразу, но команды из `mise activate pwsh` (которые туда не попадают) — нет. bootstrap.ps1 должен после установки mise самозавершиться с инструкцией "открой новую pwsh и запусти `bootstrap.ps1 --resume`" — НЕ пытаться `. $PROFILE` в той же сессии.
|
||||
- **2026-05-06 VS Code**: на чистой машине VS Code по дефолту цепляет Windows PowerShell 5.1, а не PS7 — даже если PS7 установлен. Нужно явно прописать в `settings.json`: `"terminal.integrated.defaultProfile.windows": "PowerShell"` + профиль с `path: "pwsh.exe"`. Кандидат на L0a опциональный шаг "configure VS Code" (если установлен).
|
||||
- **2026-05-06 шаг 11a**: в `claude-skills/scripts/` есть только `install.sh` (bash) — `install.ps1` отсутствует. На Windows-машине нативный путь — pwsh, а не git-bash. Нужно добавить `install.ps1` в `claude-skills` (PR в репо), сейчас обходимся inline-PS-блоком.
|
||||
|
||||
## Resume point — 2026-05-06 (перерыв)
|
||||
|
||||
**Состояние field-test'а на момент паузы:**
|
||||
|
||||
| Слой | Шаг | Статус |
|
||||
|---|---|---|
|
||||
| L0a | 1. Verify winget | ✅ |
|
||||
| L0a | 2. Core dev tools (git/gh/PS7) | ✅ |
|
||||
| L0a | 3. mise install | 🔄 (нужен restart, прошло) |
|
||||
| L0a | 4. node/python/go через mise | ✅ |
|
||||
| L0a | 5. git identity | ✅ |
|
||||
| L0a | 6. Claude Code (npm → native) | 🔄 (npm-зомби убран, native ОК) |
|
||||
| L0a | 7. Опциональные тулзы | ⏭ skipped (VS Code уже стоял; остальное докатим позже) |
|
||||
| L0b | 8. projects_dir | ✅ `C:\Users\vitya\projects` |
|
||||
| L0b | 9. Clone factory | ✅ root-commit `7e0c158` |
|
||||
| L0b | 10. home.toml | 🔄 (попытка 1 here-string подвисла; попытка 2 array+Set-Content ✅) |
|
||||
| L1-manual | 11a. claude-skills + 21 skill в `~\.claude\skills\` | ✅ commit `ef14594` (добавил install.ps1) |
|
||||
| L1-manual | 11b. claude login + плагины superpowers/context7 | ⏳ юзер прогоняет в перерыв |
|
||||
| L1-manual | 11c. setup-* скилы (projects-meta, interns, tasks, wiki, context7) | ⏳ TODO после 11b |
|
||||
|
||||
**Что юзер делает в перерыве:** под-шаг 11b — `claude` в `$PROJECTS_DIR\.factory`, OAuth login, `/plugin marketplace add claude-plugins-official`, `/plugin install superpowers@claude-plugins-official`, `/plugin install context7@claude-plugins-official`. После этого `/exit`.
|
||||
|
||||
**Первое действие после возвращения:**
|
||||
1. Спросить юзера: "Чем закончился 11b? Залогинился? Какие плагины встали? Видны `/setup-projects-meta`, `/active-platform` в slash-меню?"
|
||||
2. Если ОК — переходим к 11c: `/setup-projects-meta` (первый, потому что от него зависят interns и shared wiki). У этого скила интерактивный flow с preview/confirm — нужен PAT в `~/.config/projects-mcp/auth.toml`. Юзер уже в курсе, как генерить PAT.
|
||||
3. Дальше по списку: `/setup-interns` → `/setup-tasks` → `/setup-wiki` → `/setup-context7` (последний — может уже стоять, если плагин context7 поставился через `/plugin install` в 11b).
|
||||
|
||||
**Открытые design-вопросы** (в `.meeting-room/.brainstorm/factory-bootstrap.md`, секция "Открытые"): Q2 (где живёт factory.yaml), Q3 (slash-bridge для L2), Q4 (версионирование manifest'а), Q5 (secrets unification).
|
||||
|
||||
**Где смотреть после возвращения:**
|
||||
- Этот файл — пошаговый лог.
|
||||
- `.meeting-room/.brainstorm/factory-bootstrap.md` — design-буфер.
|
||||
- `git.kzntsv.site/OpeItcLoc03/factory` — если работаешь с другой машины, `git pull` сюда даст актуальный лог.
|
||||
|
||||
## Diff plan: log → bootstrap.ps1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user