feat(skills): project-bootstrap 1.10.1→1.11.0 — meta-isolation in .gitignore

Add meta-isolation block to .gitignore to re-enable tracking of
`.claude/`, `.tasks/`, `.wiki/` etc. in own projects against
global core.excludesFile rule that hides them from forks.

Also update using-projects-meta description.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-12 20:39:17 +03:00
parent 02db589034
commit 2800dceb25
3 changed files with 48 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
---
name: using-projects-meta
version: 1.1.0
version: 1.2.0
description: Use when working across multiple projects on one or many machines — cross-project task aggregation (`mcp__projects-meta__tasks_*`), shared Gitea-backed wiki query / ingest (`mcp__projects-meta__knowledge_*`), or sync diagnostics (`mcp__projects-meta__meta_status`). Triggers on phrases like "across all projects", "what's on the boards", "check shared wiki", "search projects-wiki", "ingest into shared wiki", "что у меня на досках", "по всем проектам", "общая вики", "cross-project status", or any time the user wants to see / mutate state in another repo than the current cwd. v1.1.0 mandates a Step 0 freshness gate (probe `meta_status`, sync if stale, pull `projects-wiki` before shared-wiki writes) — see SKILL body. Mutation tools require two-step preview → confirm. Skip for the **current** project's tasks/wiki — those live on disk in `.tasks/` / `.wiki/`.
---
@@ -142,7 +142,7 @@ Use MCP only for **other** projects, **other** machines, or **shared** wiki cont
| `mcp__projects-meta__knowledge_ingest` | `target_project`, `type`, `slug`, `body` (+ opt `frontmatter`, `source_project`) | Three commits: `<type>/<slug>.md` + `index.md` + `log.md`. `type` ∈ entities / concepts / packages / sources / raw |
| `mcp__projects-meta__knowledge_promote` | `target_project`, `slug`, `body` (+ opt `frontmatter`, `source_project`) | Move `raw/<slug>.md``sources/<slug>.md` with auto `raw_path` link |
`target_project` is either a Gitea repo name, or `_meta` (the dedicated meta-tasks / meta-wiki repos from `auth.toml`).
`target_project` is **qualified** `<owner>/<repo>` (e.g. `victor/books`, `OpeItcLoc03/claude-skills`), or the literal `agenda` for the cross-project meta-board (resolves via `agenda_tasks_repo` in `auth.toml`). Bare names (`books`) are rejected with a hint to use the qualified form. Cross-cutting design: shared wiki → `concepts/projects-meta-multi-owner`.
## Examples
@@ -181,7 +181,7 @@ User: "заведи в проекте books задачу на миграцию `
```
1. mcp__projects-meta__tasks_create
target_project: "books"
target_project: "victor/books"
slug: "settings-json-migration"
description: "<...>"
next_action: "<...>"
@@ -203,7 +203,7 @@ User: "close `[projects-meta-skills]` in claude-skills"
```
1. mcp__projects-meta__tasks_close
target_project: "claude-skills"
target_project: "OpeItcLoc03/claude-skills"
slug: "projects-meta-skills"
note: "<one-line summary>"
(no `confirm`)
@@ -227,6 +227,7 @@ User: "close `[projects-meta-skills]` in claude-skills"
| Calling `knowledge_ingest` with the wrong `type` | `type` must be one of `entities` / `concepts` / `packages` / `sources` / `raw`. Mis-typed pages land in the wrong section and break `index.md`. |
| Vague `knowledge_search` queries ("auth", "config") | Specific multi-word queries return targeted snippets; vague ones return noise. |
| Forgetting `domain="all"` when searching across families | Default `domain` is auto-detected from cwd; use `"all"` if the wiki page lives in a different family. |
| Passing bare project name (`target_project: "books"`) to mutation tools | v2.x rejects bare names. Use qualified `<owner>/<repo>` (e.g. `victor/books`, `OpeItcLoc03/claude-skills`). Literal `agenda` is the only exception (cross-project meta-board). |
## Red flags

View File

@@ -1,6 +1,6 @@
---
name: project-bootstrap
version: 1.10.1
version: 1.11.0
description: >
Initializes or upgrades a project in the current folder: git, .gitignore, README.md,
.wiki/ using Karpathy's method, .tasks/ for task tracking, CLAUDE.md with skill triggers.
@@ -61,8 +61,37 @@ If git is not initialized:
git init
```
If `.gitignore` does not exist — create from template `assets/.gitignore.template`.
If it exists — leave it untouched.
### `.gitignore`
The template `assets/.gitignore.template` contains two parts:
1. Standard ignore rules (deps, build, env, IDE, OS, logs).
2. **Meta-isolation block**`!`-inversions for `.claude/`, `.tasks/`, `.wiki/`,
`.brainstorm/`, `.archive/`, `.mcp/`, `.mcp.json`, `MEMORY.md`. This block
re-enables tracking of agent meta-paths in **own** repos against the
global `core.excludesFile` rule (`~/.config/git/ignore`) that hides them
from forks of upstream open-source. Without it, the `.tasks/`, `.wiki/`,
and `.claude/` directories created by Steps 3-5 would be invisible to git
on machines where the global excludesFile is configured, and the first
commit would be empty of agent obvyaska. Full design: workshop wiki
`concepts/meta-out-of-repo.md` (sections "Слой 2" and "Новые проекты").
Two cases:
- **`.gitignore` does not exist** — create from `assets/.gitignore.template`
(block included unconditionally).
- **`.gitignore` exists** — check for the marker line
`# AI обвеска — слой 2:` (substring match, case-sensitive). If absent →
append the meta-isolation block (with the marker comment) to the end of
the file, prefixed by a blank line if the file does not already end with
one. If present → leave the file untouched.
The block is **scoped to own projects**. The bootstrap skill currently has no
fork-of-upstream mode (greenfield-full creates a brand-new Gitea repo;
add-remote and upgrade operate on the user's own repos), so the block is
applied unconditionally in all current modes. If a fork-bootstrap mode is
ever added, the block must be **omitted** there — putting `!.claude/` etc.
into a fork's `.gitignore` would diverge from upstream's ignore rules.
---

View File

@@ -27,3 +27,14 @@ Thumbs.db
# Logs
*.log
logs/
# AI обвеска — слой 2: переопределяем глобальный ~/.config/git/ignore
# для своих репо (см. global wiki concept meta-out-of-repo)
!.claude/
!.tasks/
!.wiki/
!.brainstorm/
!.archive/
!.mcp/
!.mcp.json
!MEMORY.md