feat(skills): project-bootstrap@1.11.0 — .gitignore meta-isolation block

Step 1 now ships agent meta-paths inversions (`!.claude/`, `!.tasks/`,
`!.wiki/`, `!.brainstorm/`, `!.archive/`, `!.mcp/`, `!.mcp.json`,
`!MEMORY.md`) so own greenfield/upgrade projects re-enable visibility
against the global `core.excludesFile` cutter (`~/.config/git/ignore`)
that hides obvyaska from forks of upstream open-source. Without it any
fresh bootstrap landed an empty first commit on machines with the global
configured: setup-wiki/setup-tasks/Step 5 created .wiki/.tasks/CLAUDE.md
but git ignored them.

Two cases handled in Step 1:
- no .gitignore → write template (block included unconditionally)
- existing .gitignore → marker-based (`# AI обвеска — слой 2:`)
  append-if-missing; idempotent on re-run

Smoke-tested in %TEMP%\test-bootstrap-meta-iso: all 3 acceptance
criteria pass + negative control (strip block → global hides) +
idempotency (re-run with marker present skips). Source concept:
workshop wiki concepts/meta-out-of-repo.md. Closes board task
[meta-isolation-bootstrap-skill-update].

MINOR bump (1.10.1 → 1.11.0) — new feature, backward-compat.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-10 14:27:59 +03:00
parent c65fd26489
commit 6d503b16dc
6 changed files with 88 additions and 8 deletions

View File

@@ -724,7 +724,7 @@ Pattern для починки уже отработан в `setup-projects-meta`
---
## [meta-isolation-bootstrap-skill-update] — Обновить `project-bootstrap` skill чтобы для своих новых проектов он создавал локальный `.gitignore` с `!`-инверсиями мета-путей. Без обновления любой новый bootstrap'нутый проект ломается сразу: `.tasks/`, `.wiki/`, `.claude/` создаются, но git их не видит из-за глобального `core.excludesFile`, и в первый коммит они не попадают.
## 🟢 [meta-isolation-bootstrap-skill-update] — Обновить `project-bootstrap` skill чтобы для своих новых проектов он создавал локальный `.gitignore` с `!`-инверсиями мета-путей. Без обновления любой новый bootstrap'нутый проект ломается сразу: `.tasks/`, `.wiki/`, `.claude/` создаются, но git их не видит из-за глобального `core.excludesFile`, и в первый коммит они не попадают.
**Источник:** `.workshop/.wiki/concepts/meta-out-of-repo.md` — секции «Слой 2» и «Новые проекты».
@@ -761,10 +761,11 @@ Pattern для починки уже отработан в `setup-projects-meta`
**Не делать:** не клади инверсии безусловно, без проверки что цель — свой репо. В чужих форках это потенциально создаст расхождение с upstream'ом (новый файл в `.gitignore`). Если bootstrap отрабатывает только для своих новых проектов — этот edge-case не релевантен; уточнить в коде скила.
**Status:** ready
**Where I stopped:** (not started)
**Next action:** Прочитать текущий `project-bootstrap` SKILL.md (`~/projects/claude-skills/skills/project-bootstrap/SKILL.md`) чтобы понять структуру шагов и где встроить запись `.gitignore`. Добавить шаг после `git init`. MINOR-bump в frontmatter version. Тестовый run на greenfield: `mkdir /tmp/test-bootstrap && cd /tmp/test-bootstrap && /project-bootstrap` (или эквивалент через агента) → проверить acceptance. Коммит: `feat(skills): project-bootstrap adds local meta-paths inversions for own projects`.
**Branch:** n/a
**Status:** done
**Where I stopped:** v1.11.0 shipped + installed. Template carries meta-isolation block; SKILL.md Step 1 documents greenfield (template) + upgrade-case marker-append. Smoke test on `%TEMP%\test-bootstrap-meta-iso` passed all 3 acceptance + negative control + idempotency. Wiki: `concepts/project-bootstrap-meta-isolation.md` + index + log entries.
**Next action:** (closed)
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-10T11:04:56.068Z -->
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-05-10 / note: project-bootstrap v1.11.0 — .gitignore meta-isolation block (template + upgrade-case marker append); 3/3 acceptance proven via greenfield smoke + negative control + idempotency check -->
---