feat(agents-canon): AGENTS.md canon everywhere — bootstrap v2.0.0 writes AGENTS.md + CLAUDE.md pointer; 15 skills retarget triggers/rule refs from CLAUDE.md to AGENTS.md (semver bumps); dist rebuilt
This commit is contained in:
@@ -54,12 +54,12 @@ project's folder and it will, in one pass:
|
||||
- create a starter `README.md`
|
||||
- lay out `.wiki/` per the [Karpathy LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) (delegated to [`setup-wiki`](skills/setup-wiki/))
|
||||
- lay out `.tasks/` with the canonical task board (delegated to [`setup-tasks`](skills/setup-tasks/))
|
||||
- write `CLAUDE.md` with skill triggers (`use project wiki`, `use task management system`, `check across all projects`, `we're on Windows`)
|
||||
- write `AGENTS.md` (canon) with skill triggers (`use project wiki`, `use task management system`, `check across all projects`, `we're on Windows`) plus a `CLAUDE.md` legacy pointer
|
||||
- record the skill versions used in `.wiki/concepts/bootstrap-manifest.md` so cross-project layout drift stays debuggable
|
||||
|
||||
Two modes, picked automatically: **init** for an empty folder, **upgrade**
|
||||
for an existing project (the skill only fills the gaps and never overwrites
|
||||
without explicit confirmation). On upgrade, `CLAUDE.md` is merged
|
||||
without explicit confirmation). On upgrade, `AGENTS.md` is merged
|
||||
idempotently — only canonical trigger lines that aren't already present are
|
||||
appended after explicit confirm, so re-running `project-bootstrap` after a
|
||||
template change picks up the new triggers without duplicating the old ones.
|
||||
@@ -146,7 +146,7 @@ skills/
|
||||
│ └── build-hermes.py
|
||||
├── .wiki/ ← design docs, notes
|
||||
├── .tasks/ ← STATUS.md
|
||||
├── CLAUDE.md
|
||||
├── AGENTS.md ← canon (CLAUDE.md is a legacy pointer)
|
||||
└── README.md (this file — see README.ru.md for Russian)
|
||||
```
|
||||
|
||||
|
||||
@@ -38,12 +38,12 @@ bash scripts/install.sh using-wiki caveman
|
||||
- создаст стартовый `README.md`
|
||||
- развернёт `.wiki/` по [паттерну Karpathy LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) (делегируется в [`setup-wiki`](skills/setup-wiki/))
|
||||
- развернёт `.tasks/` с канонической доской задач (делегируется в [`setup-tasks`](skills/setup-tasks/))
|
||||
- запишет `CLAUDE.md` со скилл-триггерами (`use project wiki`, `use task management system`, `check across all projects`, `we're on Windows`)
|
||||
- запишет `AGENTS.md` (канон) со скилл-триггерами + `CLAUDE.md`-указатель (`use project wiki`, `use task management system`, `check across all projects`, `we're on Windows`)
|
||||
- зафиксирует версии использованных скиллов в `.wiki/concepts/bootstrap-manifest.md`, чтобы дрифт раскладки между проектами оставался отлаживаемым
|
||||
|
||||
Два режима, выбирается автоматически: **init** для пустой папки и **upgrade**
|
||||
для существующего проекта (скилл только дозаполняет пробелы и ничего не
|
||||
перезаписывает без явного подтверждения). В режиме upgrade `CLAUDE.md`
|
||||
перезаписывает без явного подтверждения). В режиме upgrade `AGENTS.md`
|
||||
сливается идемпотентно — только канонические триггер-строки, которых ещё
|
||||
нет в файле, дописываются после явного подтверждения, поэтому повторный
|
||||
запуск `project-bootstrap` после обновления шаблона подтягивает новые
|
||||
@@ -107,7 +107,7 @@ skills/
|
||||
│ └── install.sh
|
||||
├── .wiki/ ← дизайн-доки, заметки
|
||||
├── .tasks/ ← STATUS.md
|
||||
├── CLAUDE.md
|
||||
├── AGENTS.md ← канон (CLAUDE.md — legacy-указатель)
|
||||
└── README.md
|
||||
```
|
||||
|
||||
|
||||
BIN
dist/caveman-compress.skill
vendored
BIN
dist/caveman-compress.skill
vendored
Binary file not shown.
BIN
dist/code-review.skill
vendored
BIN
dist/code-review.skill
vendored
Binary file not shown.
BIN
dist/delegate-task.skill
vendored
BIN
dist/delegate-task.skill
vendored
Binary file not shown.
BIN
dist/inter-session-peer-discipline.skill
vendored
BIN
dist/inter-session-peer-discipline.skill
vendored
Binary file not shown.
BIN
dist/private-dev-public-publish.skill
vendored
BIN
dist/private-dev-public-publish.skill
vendored
Binary file not shown.
BIN
dist/project-bootstrap.skill
vendored
BIN
dist/project-bootstrap.skill
vendored
Binary file not shown.
BIN
dist/project-discipline.skill
vendored
BIN
dist/project-discipline.skill
vendored
Binary file not shown.
BIN
dist/pulling-before-work.skill
vendored
BIN
dist/pulling-before-work.skill
vendored
Binary file not shown.
BIN
dist/recommend-dont-menu.skill
vendored
BIN
dist/recommend-dont-menu.skill
vendored
Binary file not shown.
BIN
dist/review-kit-pi-method.skill
vendored
BIN
dist/review-kit-pi-method.skill
vendored
Binary file not shown.
BIN
dist/session-handoff.skill
vendored
BIN
dist/session-handoff.skill
vendored
Binary file not shown.
BIN
dist/session-inbox-monitor.skill
vendored
BIN
dist/session-inbox-monitor.skill
vendored
Binary file not shown.
BIN
dist/setup-interns.skill
vendored
BIN
dist/setup-interns.skill
vendored
Binary file not shown.
BIN
dist/tdd-criteria.skill
vendored
BIN
dist/tdd-criteria.skill
vendored
Binary file not shown.
BIN
dist/using-interns.skill
vendored
BIN
dist/using-interns.skill
vendored
Binary file not shown.
BIN
dist/writing-skills.skill
vendored
BIN
dist/writing-skills.skill
vendored
Binary file not shown.
@@ -10,18 +10,18 @@
|
||||
|
||||
---
|
||||
|
||||
A Claude Code skill that compresses your project memory files (`CLAUDE.md`, todos, preferences) into caveman format — so every session loads fewer tokens automatically.
|
||||
A Claude Code skill that compresses your project memory files (`AGENTS.md` / `CLAUDE.md`, todos, preferences) into caveman format — so every session loads fewer tokens automatically.
|
||||
|
||||
Claude read `CLAUDE.md` on every session start. If file big, cost big. Caveman make file small. Cost go down forever.
|
||||
Agents read `AGENTS.md` / `CLAUDE.md` on every session start. If file big, cost big. Caveman make file small. Cost go down forever.
|
||||
|
||||
## What It Do
|
||||
|
||||
```
|
||||
/caveman:compress CLAUDE.md
|
||||
/caveman:compress AGENTS.md
|
||||
```
|
||||
|
||||
```
|
||||
CLAUDE.md ← compressed (Claude reads this — fewer tokens every session)
|
||||
AGENTS.md ← compressed (agents read this — fewer tokens every session)
|
||||
CLAUDE.original.md ← human-readable backup (you edit this)
|
||||
```
|
||||
|
||||
@@ -89,7 +89,7 @@ caveman-compress/
|
||||
|
||||
Examples:
|
||||
```
|
||||
/caveman:compress CLAUDE.md
|
||||
/caveman:compress AGENTS.md
|
||||
/caveman:compress docs/preferences.md
|
||||
/caveman:compress todos.md
|
||||
```
|
||||
@@ -106,7 +106,7 @@ Examples:
|
||||
## How It Work
|
||||
|
||||
```
|
||||
/caveman:compress CLAUDE.md
|
||||
/caveman:compress AGENTS.md
|
||||
↓
|
||||
detect file type (no tokens)
|
||||
↓
|
||||
@@ -120,7 +120,7 @@ if errors: Claude fixes cherry-picked issues only (tokens — targeted fix)
|
||||
↓
|
||||
retry up to 2 times
|
||||
↓
|
||||
write compressed → CLAUDE.md
|
||||
write compressed → AGENTS.md
|
||||
write original → CLAUDE.original.md
|
||||
```
|
||||
|
||||
@@ -142,7 +142,7 @@ Caveman compress natural language. It never touch:
|
||||
|
||||
## Why This Matter
|
||||
|
||||
`CLAUDE.md` loads on **every session start**. A 1000-token project memory file costs tokens every single time you open a project. Over 100 sessions that's 100,000 tokens of overhead — just for context you already wrote.
|
||||
`AGENTS.md` / `CLAUDE.md` load on **every session start**. A 1000-token project memory file costs tokens every single time you open a project. Over 100 sessions that's 100,000 tokens of overhead — just for context you already wrote.
|
||||
|
||||
Caveman cut that by ~46% on average. Same instructions. Same accuracy. Less waste.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
name: caveman-compress
|
||||
adapted-from: JuliusBrussee/caveman @ 0993277 (MIT) — vendored copy
|
||||
version: 1.0.1
|
||||
version: 1.0.2
|
||||
description: >
|
||||
Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format
|
||||
Compress natural language memory files (AGENTS.md / CLAUDE.md, todos, preferences) into caveman format
|
||||
to save input tokens. Preserves all technical substance, code, URLs, and structure.
|
||||
Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.
|
||||
Trigger: /caveman:compress <filepath> or "compress memory file"
|
||||
@@ -13,7 +13,7 @@ description: >
|
||||
|
||||
## Purpose
|
||||
|
||||
Compress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `<filename>.original.md`.
|
||||
Compress natural language files (AGENTS.md / CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `<filename>.original.md`.
|
||||
|
||||
## Trigger
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: code-review
|
||||
adapted-from: "mattpocock/skills @ 84fdeffd12f2ee307994d1eb6feb48173b6e0502 (MIT) — two-axis structure + Fowler baseline; format: caveman-review"
|
||||
version: 0.1.0
|
||||
version: 0.1.1
|
||||
description: >
|
||||
Two-axis review of a diff since a fixed point (commit, branch, tag,
|
||||
merge-base) — Standards (does the code follow the repo's documented
|
||||
@@ -74,7 +74,7 @@ Look for the originating spec, in this order:
|
||||
|
||||
Anything in the repo that documents how code should be written:
|
||||
`CODING_STANDARDS.md`, `CONTRIBUTING.md`, the project's `.wiki/CLAUDE.md`
|
||||
schema, CLAUDE.md conventions.
|
||||
schema, root AGENTS.md conventions.
|
||||
|
||||
On top of whatever the repo documents, the Standards axis always carries the
|
||||
**smell baseline** below — a fixed set of Fowler code smells (_Refactoring_,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: delegate-task
|
||||
author: ours
|
||||
version: 0.2.4
|
||||
version: 0.2.5
|
||||
description: >
|
||||
Use when delegating a task to another agent or project via
|
||||
mcp__projects-meta__tasks_create. Triggers: «делегировать таску»,
|
||||
@@ -85,7 +85,7 @@ description: >
|
||||
|
||||
Значение: `true` (следующий трек = «см. STATUS.md») либо строка-hint с названием следующего трека. Потребитель — `using-tasks` v1.2.0+ (Task completion step 6): после close печатает `🔚 SESSION BOUNDARY …` и останавливается, не клеймя следующую задачу. Дизайн: `.wiki/concepts/delegate-task-session-break.md`.
|
||||
|
||||
**Почему `invoke` а не триггер-фраза:** CLAUDE.md ненадёжен (уплывает при compression, слабые модели игнорируют). Тело задачи читается активно — императив `invoke` это прямая команда, не пассивный матчинг.
|
||||
**Почему `invoke` а не триггер-фраза:** AGENTS.md ненадёжен (уплывает при compression, слабые модели игнорируют). Тело задачи читается активно — императив `invoke` это прямая команда, не пассивный матчинг.
|
||||
|
||||
### 3. Dry-run preview
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: inter-session-peer-discipline
|
||||
author: ours
|
||||
version: 0.1.1
|
||||
version: 0.1.2
|
||||
description: >
|
||||
Use whenever exchanging messages with another agent session over an inbox /
|
||||
peer channel (`.claude-inbox/`, inter-session messaging). Treat a peer
|
||||
@@ -20,7 +20,7 @@ description: >
|
||||
|
||||
**Whenever** you send or receive a message over an inter-session channel — `.claude-inbox/`, peer-to-peer agent messaging, or any "another session wrote to me" context.
|
||||
|
||||
**At session start** when `CLAUDE.md` has a trigger line like:
|
||||
**At session start** when `AGENTS.md` has a trigger line like:
|
||||
- `inter-session messaging: peer not authority`
|
||||
|
||||
## The rule
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: private-dev-public-publish
|
||||
author: ours
|
||||
version: 0.2.0
|
||||
version: 0.2.1
|
||||
description: Use when setting up or maintaining a publishable open-source port/fork that should be developed privately but published cleanly — messy development on a PRIVATE Gitea repo (with `.wiki/`+`.tasks/` inside), and a curated COPY of finished work into a PUBLIC GitHub fork that preserves upstream lineage (stays a fork, keeps attribution; GPL-clean). Triggers - «опубликовать форк/порт на гитхаб», «разработку держать приватно, релиз публичный», «приватный гитеа + публичный гитхаб», «publish a fork without exposing dev history», «curated publish to GitHub», «как правильно форкнуть open-source для публикации». NOT for purely-private projects, purely-public open development, or greenfield bootstrap (use project-bootstrap).
|
||||
---
|
||||
|
||||
@@ -11,7 +11,7 @@ Two-repo topology for a publishable open-source port/fork: develop messily on a
|
||||
|
||||
| Role | Where | Contents | Visibility |
|
||||
|---|---|---|---|
|
||||
| **Dev** | private Gitea repo | upstream base + all development + `.wiki/`+`.tasks/`+`CLAUDE.md`; messy history | private |
|
||||
| **Dev** | private Gitea repo | upstream base + all development + `.wiki/`+`.tasks/`+`AGENTS.md`; messy history | private |
|
||||
| **Publish** | public GitHub fork | code only, curated clean commits, upstream lineage (stays a fork) | public |
|
||||
|
||||
You work in the Gitea (dev) folder; matured work is **copied as files** into the GitHub (pub) folder → one clean commit → push.
|
||||
@@ -20,7 +20,7 @@ You work in the Gitea (dev) folder; matured work is **copied as files** into the
|
||||
|
||||
- You're porting/forking an open-source project and intend to publish it, but the development is exploratory (experiments, dead-ends, reverts) you don't want in public history.
|
||||
- You want attribution and licence lineage to hold (the public repo must stay a real fork of upstream).
|
||||
- You need a place for `.wiki/` + `.tasks/` + `CLAUDE.md` that never ships publicly.
|
||||
- You need a place for `.wiki/` + `.tasks/` + `AGENTS.md` that never ships publicly.
|
||||
|
||||
**Why curated publication is legitimate (GPL/OSI):** the licence requires the source of what you **distribute** (the release), not your development history. A curated publish is clean as long as the public repo (1) stays a fork of upstream (lineage = attribution) and (2) contains the complete buildable source of the release.
|
||||
|
||||
@@ -34,14 +34,14 @@ You work in the Gitea (dev) folder; matured work is **copied as files** into the
|
||||
|
||||
1. **Establish provenance.** Identify which upstream commit/fork is your real base. If history was lost, content-match the tree; find the author's PR/fork for the fix you're carrying so attribution is correct.
|
||||
2. **Fork canonical upstream on GitHub** (`gh repo fork`) → the public showcase. `upstream` remote = the original. Bring in needed third-party fixes via `cherry-pick` (preserves authorship) or merge.
|
||||
3. **Create the private Gitea dev repo** on the same base: clone the GitHub fork locally, add the Gitea repo as a remote, and push the base there — this carries the upstream lineage into the private repo. Put meta (`.wiki/`+`.tasks/`+`CLAUDE.md`) inside it. **Trap:** a global `~/.config/git/ignore` (`core.excludesfile`) may silently ignore `.wiki/`/`.tasks/` → add local `!`-negation lines in the repo's `.gitignore`.
|
||||
3. **Create the private Gitea dev repo** on the same base: clone the GitHub fork locally, add the Gitea repo as a remote, and push the base there — this carries the upstream lineage into the private repo. Put meta (`.wiki/`+`.tasks/`+`AGENTS.md`) inside it. **Trap:** a global `~/.config/git/ignore` (`core.excludesfile`) may silently ignore `.wiki/`/`.tasks/` → add local `!`-negation lines in the repo's `.gitignore`.
|
||||
4. **Two local folders:** dev (the Gitea private clone — your primary working copy) and pub (a clone of the GitHub fork; its `origin` = your fork, `upstream` = canonical).
|
||||
5. **Publish:** copy the **code files** dev→pub, **excluding meta** (`.wiki/`, `.tasks/`, `CLAUDE.md`, and any private notes — these must never reach the public fork; also list them in the pub repo's `.gitignore` as a backstop). Run `git status` in pub to confirm no meta is staged. Make one clean commit, `push origin` (github). Never reconstruct history — "copy" means lay files into the fork's tree.
|
||||
5. **Publish:** copy the **code files** dev→pub, **excluding meta** (`.wiki/`, `.tasks/`, `AGENTS.md`, and any private notes — these must never reach the public fork; also list them in the pub repo's `.gitignore` as a backstop). Run `git status` in pub to confirm no meta is staged. Make one clean commit, `push origin` (github). Never reconstruct history — "copy" means lay files into the fork's tree.
|
||||
|
||||
## Failure modes
|
||||
|
||||
- **Public folder is no longer a fork (rootless snapshot)** → attribution/lineage lost. Do NOT start history from scratch; "copy" = place files into the fork's tree, keep the fork relationship.
|
||||
- **Private meta copied into the public fork** (`.wiki/`/`.tasks/`/`CLAUDE.md` leak) → dev internals exposed publicly. The dev→pub copy MUST exclude meta; keep those paths in the pub repo's `.gitignore` and check `git status` in pub before committing.
|
||||
- **Private meta copied into the public fork** (`.wiki/`/`.tasks/`/`AGENTS.md` leak) → dev internals exposed publicly. The dev→pub copy MUST exclude meta; keep those paths in the pub repo's `.gitignore` and check `git status` in pub before committing.
|
||||
- **meta silently not committed** in the *private* repo (global gitignore swallows `.wiki/`/`.tasks/`) → verify with `git check-ignore .wiki .tasks`; add negation lines if matched.
|
||||
- **Release without complete source in the public repo** → GPL violation. The public release must be fully buildable from what's published.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Initializes or upgrades a project workspace in one pass: git, `.gitignore`,
|
||||
`README.md`, `.wiki/` (Karpathy's LLM Wiki layout), `.tasks/` (per-task board),
|
||||
and `CLAUDE.md` with skill triggers.
|
||||
and `AGENTS.md` (canon) with skill triggers + `CLAUDE.md` legacy pointer.
|
||||
|
||||
Operates in two modes, picked automatically:
|
||||
|
||||
@@ -44,23 +44,24 @@ projects bootstrapped at different times debuggable.
|
||||
| `README.md` | minimal stub | Skipped if file exists. |
|
||||
| `.wiki/` | delegated to `setup-wiki` | Karpathy LLM Wiki layout — `CLAUDE.md`, `index.md`, `log.md`, `overview.md`, `raw/`, `entities/`, `concepts/`, `packages/`, `sources/`. |
|
||||
| `.tasks/` | delegated to `setup-tasks` | Canonical board — `STATUS.md` plus per-task `<task-slug>.md` files. |
|
||||
| `CLAUDE.md` | `assets/CLAUDE.md.template` | Skill triggers (`use project wiki`, `use task management system`, etc.). On non-Windows hosts, swap the `we're on Windows` line for `we're on Linux` / `we're on macOS`. On upgrade, the template is treated as a canonical set and merged idempotently — only missing trigger lines are appended after user confirm. Re-runs are no-ops. |
|
||||
| `AGENTS.md` | `assets/AGENTS.md.template` | **Canon** — skill triggers (`use project wiki`, `use task management system`, etc.). On non-Windows hosts, swap the `we're on Windows` line for `we're on Linux` / `we're on macOS`. On upgrade, the template is treated as a canonical set and merged idempotently — only missing trigger lines are appended after user confirm. Re-runs are no-ops. |
|
||||
| `CLAUDE.md` | generated pointer | `Canon is AGENTS.md. Read AGENTS.md.` — legacy pointer for tooling that looks for the old name. |
|
||||
| `.wiki/concepts/bootstrap-manifest.md` | generated | Records which skill versions initialized the project, so cross-project layout drift is debuggable. |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Detect mode.** Inspect the current directory — git, `.wiki/`, `.tasks/`,
|
||||
`CLAUDE.md`, `README.md` — and print a single summary block: what was
|
||||
`AGENTS.md`, `CLAUDE.md`, `README.md` — and print a single summary block: what was
|
||||
found, what will be created, what will be skipped.
|
||||
2. **Confirm.** One question, one confirmation. Nothing is written before the
|
||||
user agrees.
|
||||
3. **Steps 1–5.** Create or skip each piece in order — git, README, `.wiki/`,
|
||||
`.tasks/`, `CLAUDE.md`. Steps 3 and 4 delegate to the setup-skills.
|
||||
`.tasks/`, `AGENTS.md` + `CLAUDE.md` pointer. Steps 3 and 4 delegate to the setup-skills.
|
||||
4. **Step 5.5.** Write `bootstrap-manifest.md` recording the versions of
|
||||
`project-bootstrap`, `setup-wiki`, `setup-tasks`, `project-discipline`,
|
||||
`setup-interns`, and `using-interns` used.
|
||||
5. **Step 5.6.** Skill dependencies check. Walk the canonical trigger list
|
||||
in `CLAUDE.md`, look each up in an embedded `trigger → fulfiller` map,
|
||||
in `AGENTS.md`, look each up in an embedded `trigger → fulfiller` map,
|
||||
detect what's missing on this host (`~/.claude/skills/<name>/SKILL.md`
|
||||
for skills, `~/.claude/plugins/installed_plugins.json` for plugins),
|
||||
and print one chat-only block listing every missing fulfiller with a
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
name: project-bootstrap
|
||||
author: ours
|
||||
version: 1.13.0
|
||||
version: 2.0.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.
|
||||
.wiki/ using Karpathy's method, .tasks/ for task tracking, AGENTS.md (canon) with
|
||||
skill triggers + CLAUDE.md legacy pointer.
|
||||
Creates remote Gitea repo and syncs projects-meta cache for greenfield projects.
|
||||
Use this skill when the user says "initialize project", "bootstrap", "setup project",
|
||||
"upgrade project", "add wiki", "add tasks", "start project", "set everything up",
|
||||
@@ -46,7 +47,7 @@ Show the user a summary in one block — what was found, what will be created:
|
||||
Mode: greenfield-full (new project + remote create)
|
||||
|
||||
Found: (empty directory)
|
||||
Create: git .wiki .tasks CLAUDE.md .gitignore README.md remote
|
||||
Create: git .wiki .tasks AGENTS.md CLAUDE.md .gitignore README.md remote
|
||||
```
|
||||
|
||||
Ask one question: "Looks right? Shall we proceed?" — and wait for confirmation.
|
||||
@@ -320,22 +321,41 @@ If `setup-tasks` is not installed, **stop** and tell the user — same rule as S
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — CLAUDE.md
|
||||
## Step 5 — AGENTS.md (canon) + CLAUDE.md pointer
|
||||
|
||||
Two paths, picked by file presence:
|
||||
**Canon is `AGENTS.md`** (cross-agent standard: pi prefers `AGENTS.md` over
|
||||
`CLAUDE.md` when both exist — confirmed in pi's `resource-loader`; Claude Code
|
||||
reads `AGENTS.md` as fallback). `CLAUDE.md` is a legacy pointer file for
|
||||
tooling that looks for it by name. Both files are always written together;
|
||||
the canon content lives only in `AGENTS.md`.
|
||||
|
||||
### Init (file does not exist)
|
||||
Three paths, picked by file presence:
|
||||
|
||||
Create `CLAUDE.md` from `assets/CLAUDE.md.template`. Substitute the platform line
|
||||
on non-Windows hosts (`we're on Linux` / `we're on macOS` instead of
|
||||
`we're on Windows`).
|
||||
### Init (neither file exists)
|
||||
|
||||
### Upgrade (file exists) — idempotent merge
|
||||
Create `AGENTS.md` from `assets/AGENTS.md.template` (canon content). Substitute
|
||||
the platform line on non-Windows hosts (`we're on Linux` / `we're on macOS`
|
||||
instead of `we're on Windows`). Then write the `CLAUDE.md` pointer:
|
||||
|
||||
```markdown
|
||||
# CLAUDE.md — legacy pointer
|
||||
|
||||
Canon is `AGENTS.md`. Read `AGENTS.md` — it contains all project instructions.
|
||||
```
|
||||
|
||||
### Migrate (CLAUDE.md exists, AGENTS.md does not)
|
||||
|
||||
The project predates the AGENTS.md canon. Offer to migrate: `git mv CLAUDE.md
|
||||
AGENTS.md`, fix the first-line header if it was `# CLAUDE.md`, then write the
|
||||
`CLAUDE.md` pointer. Ask one question — "Migrate CLAUDE.md → AGENTS.md?" —
|
||||
and wait for confirmation. On confirm, proceed to the Upgrade merge below.
|
||||
|
||||
### Upgrade (AGENTS.md exists) — idempotent merge
|
||||
|
||||
Treat the template as the canonical trigger set and reconcile the existing file
|
||||
against it. Re-runs are no-ops once the file is in canon.
|
||||
|
||||
1. Read the existing `CLAUDE.md`.
|
||||
1. Read the existing `AGENTS.md`.
|
||||
2. For each non-empty, non-comment line in the template, decide whether it's
|
||||
already present:
|
||||
- **Trigger lines** (everything except the platform line) — present iff any
|
||||
@@ -346,19 +366,20 @@ against it. Re-runs are no-ops once the file is in canon.
|
||||
matches `we're on (windows|linux|macos)` case-insensitively. If the user
|
||||
pinned a different platform on purpose, **leave it alone**. Only append
|
||||
the host-appropriate platform line when none of the three is present.
|
||||
3. Collect missing lines. If none → print `CLAUDE.md already canon — no changes`
|
||||
3. Collect missing lines. If none → print `AGENTS.md already canon — no changes`
|
||||
and skip to Step 5.5.
|
||||
4. Show the user the diff (N lines, exact text to append) and ask one question:
|
||||
"Append these N missing canonical triggers to the end of CLAUDE.md?" Wait
|
||||
"Append these N missing canonical triggers to the end of AGENTS.md?" Wait
|
||||
for explicit confirmation before writing.
|
||||
5. On confirm: append a single newline (if the file doesn't end with one) and
|
||||
then the missing lines, one per line. Don't rewrite the file — only append.
|
||||
Don't reorder existing lines. Don't dedupe within the existing file.
|
||||
6. Ensure the `CLAUDE.md` pointer exists; if missing, write it.
|
||||
|
||||
Template contents (`assets/CLAUDE.md.template` — source of truth):
|
||||
Template contents (`assets/AGENTS.md.template` — source of truth):
|
||||
|
||||
```markdown
|
||||
# CLAUDE.md
|
||||
# AGENTS.md
|
||||
# Agent instructions. Each line is a trigger for an installed skill.
|
||||
|
||||
talk like a caveman
|
||||
@@ -388,8 +409,8 @@ if `pulling-before-work` is not in `~/.claude/skills/`; otherwise the trigger is
|
||||
silently dead like any other absent skill.
|
||||
|
||||
The `follow project discipline` line activates the `project-discipline` skill,
|
||||
which codifies four cross-project rules: (1) project CLAUDE.md / .wiki/CLAUDE.md
|
||||
/ .tasks/ override defaults from any other skill; (2) all work on master/main,
|
||||
which codifies four cross-project rules: (1) project AGENTS.md / CLAUDE.md /
|
||||
.wiki/CLAUDE.md / .tasks/ override defaults from any other skill; (2) all work on master/main,
|
||||
no feature branches without explicit user approval; (3) version bump on every
|
||||
edit of versioned artifacts per semver, recorded in commit; (4) commit freely,
|
||||
push only after explicit per-session approval. Install the skill on the host
|
||||
@@ -468,7 +489,7 @@ If a delegated setup-skill is unavailable on this machine (e.g. user installed o
|
||||
|
||||
## Step 5.6 — Skill dependencies check (chat-only, never auto-install)
|
||||
|
||||
The `CLAUDE.md` template just written contains canonical trigger lines.
|
||||
The `AGENTS.md` template just written contains canonical trigger lines.
|
||||
Each one is a no-op unless the corresponding skill or plugin is installed
|
||||
on the host. On a fresh machine these are often absent, and the user
|
||||
won't know the trigger is silently dead. Detect what's missing on this
|
||||
@@ -477,11 +498,11 @@ project file, never auto-install.
|
||||
|
||||
### Trigger → fulfiller map
|
||||
|
||||
Source of truth for this map is the canonical `assets/CLAUDE.md.template`.
|
||||
Source of truth for this map is the canonical `assets/AGENTS.md.template`.
|
||||
When a new trigger is added there, also add a row here in the same commit.
|
||||
Mismatch between template and map → silent gaps in the recommendation.
|
||||
|
||||
| Trigger line in `CLAUDE.md` | Fulfiller | Kind | Detection path | Install command |
|
||||
| Trigger line in `AGENTS.md` | Fulfiller | Kind | Detection path | Install command |
|
||||
|---|---|---|---|---|
|
||||
| `talk like a caveman` | `caveman` | skill | `~/.claude/skills/caveman/SKILL.md` | `bash scripts/install.sh caveman` |
|
||||
| `use project wiki` | `using-wiki` | skill | `~/.claude/skills/using-wiki/SKILL.md` | `bash scripts/install.sh using-wiki` |
|
||||
@@ -497,7 +518,7 @@ Mismatch between template and map → silent gaps in the recommendation.
|
||||
|
||||
### Algorithm
|
||||
|
||||
1. Read the project's `CLAUDE.md` (just-written or pre-existing). Extract
|
||||
1. Read the project's `AGENTS.md` (just-written or pre-existing). Extract
|
||||
every non-empty, non-comment line — these are the active triggers for
|
||||
THIS project. The user may have removed canonical lines on purpose;
|
||||
respect that — only check what's actually in the file.
|
||||
@@ -515,7 +536,7 @@ Mismatch between template and map → silent gaps in the recommendation.
|
||||
- **All present** — print one line:
|
||||
|
||||
```
|
||||
✅ all skill dependencies satisfied — every CLAUDE.md trigger has its fulfiller on this host.
|
||||
✅ all skill dependencies satisfied — every AGENTS.md trigger has its fulfiller on this host.
|
||||
```
|
||||
|
||||
Skip to Step 6.
|
||||
@@ -524,9 +545,9 @@ Mismatch between template and map → silent gaps in the recommendation.
|
||||
write it into any project file:
|
||||
|
||||
```
|
||||
ℹ️ Recommended: install the following to fulfill CLAUDE.md triggers
|
||||
ℹ️ Recommended: install the following to fulfill AGENTS.md triggers
|
||||
|
||||
The triggers below are present in CLAUDE.md but their fulfillers are
|
||||
The triggers below are present in AGENTS.md but their fulfillers are
|
||||
missing on this machine — they're silently no-ops until installed:
|
||||
|
||||
trigger fulfiller (kind)
|
||||
@@ -555,7 +576,7 @@ Mismatch between template and map → silent gaps in the recommendation.
|
||||
skill, and silently mutating user-level skill / plugin state without
|
||||
consent is overreach. The recommendation is informational. The user can
|
||||
install some / all / none of the recommendations, or remove canonical
|
||||
lines from `CLAUDE.md` to lean the project's trigger set down.
|
||||
lines from `AGENTS.md` to lean the project's trigger set down.
|
||||
|
||||
## Step 6 — Commit
|
||||
|
||||
@@ -567,7 +588,7 @@ git commit -m "chore: bootstrap project structure"
|
||||
If the repo already had commits — commit only the files just created:
|
||||
|
||||
```bash
|
||||
git add .wiki/ .tasks/ CLAUDE.md .gitignore README.md
|
||||
git add .wiki/ .tasks/ AGENTS.md CLAUDE.md .gitignore README.md
|
||||
git commit -m "chore: upgrade project structure"
|
||||
```
|
||||
|
||||
@@ -581,7 +602,8 @@ Print a final report:
|
||||
✅ Done! Created:
|
||||
.wiki/ — project wiki (Karpathy method)
|
||||
.tasks/ — task tracking system
|
||||
CLAUDE.md — skill triggers
|
||||
AGENTS.md — skill triggers (canon)
|
||||
CLAUDE.md — legacy pointer
|
||||
.gitignore — standard template
|
||||
README.md — starter file
|
||||
remote — Gitea repo created and pushed
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# CLAUDE.md
|
||||
# AGENTS.md
|
||||
# Agent instructions. Each line is a trigger for an installed skill.
|
||||
|
||||
talk like a caveman
|
||||
@@ -5,12 +5,12 @@ guarantees that hold in a tightly-maintained repo apply everywhere.
|
||||
|
||||
## When it triggers
|
||||
|
||||
- **Session start** — when `CLAUDE.md` contains the line `follow project discipline` (added by `project-bootstrap` v1.5.0+).
|
||||
- **Session start** — when `AGENTS.md` contains the line `follow project discipline` (added by `project-bootstrap` v2.0.0+).
|
||||
- **In-chat** — when the user says "use project discipline", "соблюди дисциплину", "проектные правила", or close variants.
|
||||
|
||||
## The four rules
|
||||
|
||||
1. **Project conventions over skill defaults.** `CLAUDE.md` / `.wiki/CLAUDE.md` / `.tasks/` override any other skill's defaults. Specs go to `.wiki/concepts/`, tasks to `.tasks/`.
|
||||
1. **Project conventions over skill defaults.** `AGENTS.md` / `.wiki/CLAUDE.md` / `.tasks/` override any other skill's defaults. Specs go to `.wiki/concepts/`, tasks to `.tasks/`.
|
||||
2. **Master-only.** All work on `master` (or `main`). No feature branches without explicit user approval.
|
||||
3. **Semver discipline.** Bump `version:` in `SKILL.md` / `package.json` / `pyproject.toml` on every edit per MAJOR / MINOR / PATCH; record in commit message; rebuild `dist/` artifacts after.
|
||||
4. **Push freely by default.** No confirmation needed for push; a local push-gate skill (e.g. books — auto-deploy) overrides per project. Force / delete / non-ff push always asks.
|
||||
@@ -19,11 +19,11 @@ guarantees that hold in a tightly-maintained repo apply everywhere.
|
||||
|
||||
None. The skill is a textual policy document; it takes no actions and has no
|
||||
external dependencies. Activate it by adding `follow project discipline` to
|
||||
`CLAUDE.md` (or use `project-bootstrap` v1.5.0+ which adds it automatically).
|
||||
`AGENTS.md` (or use `project-bootstrap` v2.0.0+ which adds it automatically).
|
||||
|
||||
## Related
|
||||
|
||||
- `project-bootstrap` (v1.5.0+) — adds the trigger line to new and existing projects' `CLAUDE.md`.
|
||||
- `project-bootstrap` (v2.0.0+) — adds the trigger line to new and existing projects' `AGENTS.md`.
|
||||
- `pulling-before-work` — companion skill activated by the canonical template; pulls origin once at session start (`git pull --ff-only`).
|
||||
- `using-tasks` / `using-wiki` — the format conventions Rule 1 routes work into.
|
||||
- `.wiki/concepts/project-discipline-design.md` (in `skills`) — full design rationale.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
name: project-discipline
|
||||
author: ours
|
||||
version: 0.2.1
|
||||
version: 0.2.2
|
||||
description: >
|
||||
Codifies five cross-project discipline rules: (1) project CLAUDE.md /
|
||||
Codifies five cross-project discipline rules: (1) project AGENTS.md /
|
||||
.wiki/CLAUDE.md / .tasks/ override defaults from other skills (specs →
|
||||
.wiki/concepts/, tasks → .tasks/); (2) master-only, no feature branches
|
||||
without approval; (3) semver bump on every edit of versioned artifacts
|
||||
@@ -13,7 +13,7 @@ description: >
|
||||
overrides per project; force/delete/non-ff always ask;
|
||||
(5) transit/brainstorm workspaces — artifacts to .brainstorm/ or global wiki
|
||||
only via explicit user direction. Activated by "follow project discipline"
|
||||
trigger in CLAUDE.md (added by project-bootstrap v1.5.0+).
|
||||
trigger in AGENTS.md (added by project-bootstrap v2.0.0+).
|
||||
---
|
||||
|
||||
# project-discipline
|
||||
@@ -22,7 +22,7 @@ description: >
|
||||
|
||||
## When this runs
|
||||
|
||||
**At session start** — when `CLAUDE.md` contains the line `follow project discipline`. The skill is a policy document; the agent reads it and applies the four rules to all subsequent work in the session.
|
||||
**At session start** — when `AGENTS.md` contains the line `follow project discipline`. The skill is a policy document; the agent reads it and applies the four rules to all subsequent work in the session.
|
||||
|
||||
**On explicit reference** — when the user says "use project discipline", "соблюди дисциплину", "проектные правила", "что у меня по правилам?", or close variants asking about/applying the rules.
|
||||
|
||||
@@ -32,11 +32,11 @@ The skill itself takes no actions and has no external side-effects. It instructs
|
||||
|
||||
Before applying defaults from any other skill (frontend-design, mcp-builder, etc.), read in this order:
|
||||
|
||||
1. `CLAUDE.md` in the project root.
|
||||
1. `AGENTS.md` in the project root.
|
||||
2. `.wiki/CLAUDE.md` (if it exists).
|
||||
3. `.tasks/STATUS.md` (if it exists).
|
||||
|
||||
Any path, format, or workflow explicitly stated in those files **overrides the skill default**.
|
||||
Any path, format, or workflow explicitly stated in those files **overrides the skill default**. (CLAUDE.md, where present, is a legacy pointer — read it, then follow the canon in AGENTS.md.)
|
||||
|
||||
Concrete consequences:
|
||||
|
||||
@@ -102,12 +102,12 @@ Anything else is an ordinary fast-forward push and proceeds without a gate.
|
||||
Some workspaces are **transit zones** — discussion areas with no `.tasks/`, where brainstorm artifacts are explicitly NOT auto-promoted to project wikis.
|
||||
|
||||
**Default destination for brainstorm artifacts:**
|
||||
- **In-progress brainstorm outputs** → `.brainstorm/<topic>.md` (or whatever the workspace's README/CLAUDE.md declares)
|
||||
- **In-progress brainstorm outputs** → `.brainstorm/<topic>.md` (or whatever the workspace's README/AGENTS.md declares)
|
||||
- **Mature, cross-cutting outputs** → `~/projects/.wiki/concepts/<topic>-design.md` via `mcp__projects-meta__knowledge_ingest` — **only** when user explicitly directs this
|
||||
|
||||
**Agent must NOT auto-promote** brainstorm artifacts to global wikis by analogy with Rule 1. Convergence-moment (move from workspace to permanent wiki) is a user decision, not an automatic action.
|
||||
|
||||
**Example:** `~/projects/.meeting-room/` is a transit zone. Its CLAUDE.md explicitly states "no `.tasks/`, transit zone, artifacts go to `.brainstorm/` or global wiki via user command." Rule 1's "project conventions override" applies, but the override is explicit in the workspace contract — auto-promotion by analogy would violate that contract.
|
||||
**Example:** `~/projects/.meeting-room/` is a transit zone. Its AGENTS.md explicitly states "no `.tasks/`, transit zone, artifacts go to `.brainstorm/` or global wiki via user command." Rule 1's "project conventions override" applies, but the override is explicit in the workspace contract — auto-promotion by analogy would violate that contract.
|
||||
|
||||
**When in doubt:** ask the user "this goes to `.brainstorm/`, or should I promote to shared wiki?" rather than assuming.
|
||||
|
||||
@@ -115,7 +115,7 @@ Some workspaces are **transit zones** — discussion areas with no `.tasks/`, wh
|
||||
|
||||
The skill **does not**:
|
||||
|
||||
- modify `CLAUDE.md` (that's `project-bootstrap`'s job);
|
||||
- modify `AGENTS.md` (that's `project-bootstrap`'s job);
|
||||
- enforce rules via git hooks / pre-commit / CI (this is agent discipline, not tooling);
|
||||
- manage `settings.json` permissions (that's `update-config`);
|
||||
- check the existence of `.wiki/` / `.tasks/` (that's `setup-wiki` / `setup-tasks` / `project-bootstrap`); if a project doesn't have them, Rule 1 simply finds no overrides and falls back to skill defaults.
|
||||
@@ -124,4 +124,4 @@ The skill **does not**:
|
||||
|
||||
In a tightly-disciplined repo (`skills`) the four rules already hold by accident — the agent reads `.wiki/CLAUDE.md`, knows specs go to `.wiki/concepts/`, knows to bump `version:`, knows not to push without confirmation. In **other** projects of the same user, that discipline does not transfer: the agent falls back to vendor-default paths (`docs/specs/`, `docs/plans/`), branches on a whim, forgets `version:` bumps, and pushes without asking. This skill makes the discipline explicit and portable.
|
||||
|
||||
Full design rationale (why one skill instead of four, why a skill instead of inline `CLAUDE.md` lines, scope of each rule, push-permission mechanism choice) lives in `.wiki/concepts/project-discipline-design.md` (in this repo; in other projects bootstrapped from this repo, the design lives in `skills`).
|
||||
Full design rationale (why one skill instead of four, why a skill instead of inline `AGENTS.md` lines, scope of each rule, push-permission mechanism choice) lives in `.wiki/concepts/project-discipline-design.md` (in this repo; in other projects bootstrapped from this repo, the design lives in `skills`).
|
||||
|
||||
@@ -6,7 +6,7 @@ footgun without trampling dirty work-trees or auto-merging.
|
||||
|
||||
## When it triggers
|
||||
|
||||
- **Session start** — when `CLAUDE.md` contains the line `pull remote before work` (added by `project-bootstrap` v1.4.0+).
|
||||
- **Session start** — when `AGENTS.md` contains the line `pull remote before work` (added by `project-bootstrap` v2.0.0+).
|
||||
- **In-chat** — when the user says `sync`, `resync`, `pull`, `обнови репо`, `git pull please`, or close variants.
|
||||
|
||||
Stays silent in non-git folders. Prints one informational line and exits in:
|
||||
@@ -25,5 +25,5 @@ remote, so it's safe to leave activated everywhere.
|
||||
|
||||
## Related
|
||||
|
||||
- `project-bootstrap` (v1.4.0+) — adds the trigger line to new and existing projects' `CLAUDE.md`.
|
||||
- `project-bootstrap` (v2.0.0+) — adds the trigger line to new and existing projects' `AGENTS.md`.
|
||||
- `.wiki/concepts/pulling-before-work-design.md` (in projects bootstrapped from this repo: this design lives in `skills`) — full design rationale.
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
---
|
||||
name: pulling-before-work
|
||||
author: ours
|
||||
version: 1.0.0
|
||||
version: 1.0.1
|
||||
description: >
|
||||
Pulls the current branch from origin once at session start and on explicit
|
||||
re-sync requests. Use when CLAUDE.md contains the trigger line "pull remote
|
||||
re-sync requests. Use when AGENTS.md contains the trigger line "pull remote
|
||||
before work", or when the user says "sync", "resync", "pull", "обнови репо",
|
||||
"git pull please", or close variants asking to refresh from the remote.
|
||||
Runs `git pull --ff-only` — never auto-merges or rebases. Stays silent in
|
||||
non-git folders. Prints one informational line and exits when there is no
|
||||
origin remote, no upstream tracking, the working tree is dirty, or HEAD is
|
||||
detached. Does not stash, commit, or push. Activated by `project-bootstrap`
|
||||
v1.4.0+ via the canonical CLAUDE.md template.
|
||||
v1.4.0+ via the canonical AGENTS.md template.
|
||||
---
|
||||
|
||||
# pulling-before-work
|
||||
@@ -20,7 +20,7 @@ description: >
|
||||
|
||||
## When this runs
|
||||
|
||||
**At session start** — once, when the skill is activated by the `pull remote before work` line in `CLAUDE.md`. The cycle below runs immediately.
|
||||
**At session start** — once, when the skill is activated by the `pull remote before work` line in `AGENTS.md`. The cycle below runs immediately.
|
||||
|
||||
**On explicit re-sync** — when the user says any of: `sync`, `resync`, `pull`, `обнови репо`, `pull please`, `git pull`, `подтяни`, `pull from origin`. Re-runs the full cycle. There is no per-session counter; the user is always allowed to ask.
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ bash scripts/install.sh recommend-dont-menu
|
||||
|
||||
## Trigger line
|
||||
|
||||
Add to `CLAUDE.md`:
|
||||
Add to `AGENTS.md`:
|
||||
```
|
||||
prefer single recommendations
|
||||
```
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: recommend-dont-menu
|
||||
author: ours
|
||||
version: 0.1.1
|
||||
version: 0.1.2
|
||||
description: >
|
||||
Use during design discussions, brainstorming, architecture reviews, or any
|
||||
"what should we do" question — give one argued recommendation with explicit
|
||||
@@ -15,7 +15,7 @@ description: >
|
||||
|
||||
## When this runs
|
||||
|
||||
**At session start** — when `CLAUDE.md` contains any trigger line:
|
||||
**At session start** — when `AGENTS.md` contains any trigger line:
|
||||
- `prefer single recommendations`
|
||||
- `recommend, don't menu`
|
||||
- `argued recommendations`
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: review-kit-pi-method
|
||||
author: ours
|
||||
version: 0.1.0
|
||||
version: 0.1.1
|
||||
description: >
|
||||
Spawn clean-context non-implementer subagents for review, trigger-testing,
|
||||
and spec validation under pi — the pi-native port of the review-kit method.
|
||||
@@ -36,7 +36,7 @@ pi -p -nc -ns -nt --no-session "<question>"
|
||||
| `--no-session` | ephemeral, nothing persisted |
|
||||
|
||||
Verified live (pi v0.84.1): with `-nc -ns -nt` the subagent reports "no
|
||||
project-specific instructions" and cannot recite CLAUDE.md rules; without the
|
||||
project-specific instructions" and cannot recite AGENTS.md rules; without the
|
||||
flags it can quote them verbatim. The difference is the anti-priming
|
||||
guarantee: **the review verdict is not contaminated by the reviewer knowing
|
||||
what the implementer intended.**
|
||||
@@ -51,7 +51,7 @@ Before trusting a verdict, confirm the spawn was clean:
|
||||
- [ ] `--no-session` — no session bleed
|
||||
- [ ] The question does NOT name the expected answer, the skill name being
|
||||
tested, or the files to read (naming them re-primes: e.g. "what does
|
||||
CLAUDE.md say about X" makes the subagent read it via tools — only
|
||||
AGENTS.md say about X" makes the subagent read it via tools — only
|
||||
`-nt` blocks that, keep it)
|
||||
|
||||
## Prompting rules
|
||||
@@ -75,7 +75,7 @@ Before trusting a verdict, confirm the spawn was clean:
|
||||
| Trigger discrimination (skill activation) | clean `-nc -ns -nt` |
|
||||
| Skill/code review by non-implementer | clean `-nc -ns -nt`, plus the review scope in the prompt (what to check, NOT the expected verdict) |
|
||||
| Spec validation (loop-me criterion) | clean `-nc -ns -nt`, prompt = "given this spec, what would you need to ask before building it?" — any question ⇒ spec not done |
|
||||
| Context-aware review (reviewer needs project conventions) | WITHOUT `-nc` (let it read CLAUDE.md), but still `-ns -nt --no-session`, and prompt from a neutral third-person role ("a senior engineer reviewing this change") |
|
||||
| Context-aware review (reviewer needs project conventions) | WITHOUT `-nc` (let it read AGENTS.md / CLAUDE.md), but still `-ns -nt --no-session`, and prompt from a neutral third-person role ("a senior engineer reviewing this change") |
|
||||
|
||||
## Pitfalls
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
name: session-handoff
|
||||
author: ours
|
||||
version: 0.5.0
|
||||
description: "Sliding handoff between CC sessions via .tasks/NEXT_SESSION.md. Read on session start: orient agent, ask user before action. Write on session-end phrase or substantive commit. On session-end the agent ALSO runs the closing ritual on its own (idea 7: no invitation needed): handoff write + PROPOSE wiki-ingest of session knowledge + PROPOSE task-board closes — mutations only after user confirmation. Session-end phrases: «завершаем сессию», «сворачиваемся», «закругляемся», «wrap up session», «end session», «we're done for now». Trigger-line in CLAUDE.md: `session handoff: read on start, write on end`. Skip task-zone phrases: «закрываем эту таску», «pause», «отбой», «разбегаемся»."
|
||||
version: 0.5.1
|
||||
description: "Sliding handoff between CC sessions via .tasks/NEXT_SESSION.md. Read on session start: orient agent, ask user before action. Write on session-end phrase or substantive commit. On session-end the agent ALSO runs the closing ritual on its own (idea 7: no invitation needed): handoff write + PROPOSE wiki-ingest of session knowledge + PROPOSE task-board closes — mutations only after user confirmation. Session-end phrases: «завершаем сессию», «сворачиваемся», «закругляемся», «wrap up session», «end session», «we're done for now». Trigger-line in AGENTS.md: `session handoff: read on start, write on end`. Skip task-zone phrases: «закрываем эту таску», «pause», «отбой», «разбегаемся»."
|
||||
---
|
||||
|
||||
# session-handoff
|
||||
@@ -16,7 +16,7 @@ Forward-looking, не timeline: handoff = связка новых вещей к
|
||||
## When to use
|
||||
|
||||
**Read mode (session start):**
|
||||
- CLAUDE.md проекта содержит trigger-строку `session handoff: read on start, write on end`.
|
||||
- AGENTS.md проекта содержит trigger-строку `session handoff: read on start, write on end`.
|
||||
- Файл `.tasks/NEXT_SESSION.md` существует.
|
||||
|
||||
**Write mode (session end / substantive commit):**
|
||||
@@ -35,7 +35,7 @@ Forward-looking, не timeline: handoff = связка новых вещей к
|
||||
- «отбой», «разбегаемся» — слишком broad, может относиться к другому контексту.
|
||||
- «сейчас завершу одну задачу и тогда поговорим» — частичное завершение.
|
||||
- Не-git папка, или `.tasks/` отсутствует — silent exit.
|
||||
- CLAUDE.md проекта НЕ содержит trigger-строку — silent exit.
|
||||
- AGENTS.md проекта НЕ содержит trigger-строку — silent exit.
|
||||
|
||||
При неоднозначности — **ASK**, не угадывать: «закрываем сессию или таску?»
|
||||
|
||||
@@ -125,7 +125,7 @@ Forward-looking, не timeline: handoff = связка новых вещей к
|
||||
|
||||
## Failure modes
|
||||
|
||||
- **CLAUDE.md без trigger-строки** → silent exit, не вмешиваться. Скил project-opt-in.
|
||||
- **AGENTS.md без trigger-строки** → silent exit, не вмешиваться. Скил project-opt-in.
|
||||
- **Не git-repo / `.tasks/` отсутствует** → silent exit. Скил требует обоих условий.
|
||||
- **`.tasks/NEXT_SESSION.md` отсутствует** в read mode → silent exit (первая сессия проекта, нечего читать).
|
||||
- **Неоднозначная фраза** («закругляемся» в контексте отдельной таски, а не сессии) → ASK user'а «закрываем сессию или таску?», не угадывать.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: session-inbox-monitor
|
||||
author: ours
|
||||
version: 0.4.0
|
||||
version: 0.4.1
|
||||
description: >
|
||||
Raises a persistent Monitor (Monitor tool, NOT background Bash) on the
|
||||
project's `.agents/inbox/` at the start of an interactive session, so
|
||||
@@ -9,7 +9,7 @@ description: >
|
||||
session end on its own. A paired SessionStart hook injects the
|
||||
raise-instruction and first sweeps orphaned monitors of this inbox (a
|
||||
`/clear` leaves them running → re-raise would stack duplicates). Triggers:
|
||||
CLAUDE.md line `inbox monitor: raise on start`, or «подними монитор почты»,
|
||||
AGENTS.md line `inbox monitor: raise on start`, or «подними монитор почты»,
|
||||
«настрой авто-монитор инбокса», «raise inbox monitor», «auto-arm inbox
|
||||
watcher». Headless (`claude -p`): does NOT raise — Monitor doesn't work
|
||||
there; rely on the Stop-hook inbox pickup + Notify/ntfy. Pi (pi-coding-agent)
|
||||
@@ -33,7 +33,7 @@ for free on session end. Headless sessions skip it and rely on the pull-model
|
||||
instruction at the start of every interactive session of an opted-in project.
|
||||
You act on that injection — raise the monitor as your first action — without a
|
||||
user phrase.
|
||||
- **On request.** CLAUDE.md line `inbox monitor: raise on start`, or «подними
|
||||
- **On request.** AGENTS.md line `inbox monitor: raise on start`, or «подними
|
||||
монитор почты», «настрой авто-монитор инбокса», «raise inbox monitor»,
|
||||
«auto-arm inbox watcher».
|
||||
- **NOT for** handling the content of a received message (→
|
||||
@@ -84,7 +84,7 @@ for free on session end. Headless sessions skip it and rely on the pull-model
|
||||
```
|
||||
- Twin pattern: `poller-interactive-lock-writer` (`interactive-lock.ps1`).
|
||||
- Opt-in per project: the hook fires only when the project has a `.agents/inbox/`
|
||||
directory **or** a CLAUDE.md line `inbox monitor: raise on start`.
|
||||
directory **or** an AGENTS.md line `inbox monitor: raise on start`.
|
||||
|
||||
## Failure modes
|
||||
|
||||
@@ -144,7 +144,7 @@ capability, but each session only ever touches its own project's inbox.
|
||||
directory), hot-reload with `/reload`. Test:
|
||||
`node --experimental-strip-types .common/lib/pi-extensions/inbox-monitor.test.mjs`
|
||||
(incl. decoy check — another project's inbox is never touched).
|
||||
- **Opt-in per project** — same as CC: `.agents/inbox/` dir exists OR CLAUDE.md
|
||||
- **Opt-in per project** — same as CC: `.agents/inbox/` dir exists OR AGENTS.md
|
||||
line `inbox monitor: raise on start`.
|
||||
- **PUSH:** 15s poll of the session's own inbox (interactive only). **PULL:**
|
||||
`agent_settled` sweep — the pi equivalent of the CC Stop-hook pickup. Both
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: setup-interns
|
||||
author: ours
|
||||
version: 0.4.0
|
||||
version: 0.4.1
|
||||
description: Installs and configures the local `interns` MCP server — clones the repo to `~/projects/.common/lib/interns-mcp/` (or uses an existing clone), `pip install -e` it, writes `~/.config/projects-secrets/interns.env` with endpoint API keys, and registers `mcpServers.interns` in `~/.claude.json`. Use this skill when the user says "install interns", "set up interns", "configure interns", "настрой интернов", "установи интернов", "interns не работает", "interns isn't working", or whenever the `mcp__interns__*` tools are missing in a session that needs delegation. Cross-platform — Windows / Linux / macOS. Mutates user-level config and writes secrets; pauses for confirmation before every write.
|
||||
---
|
||||
|
||||
@@ -205,7 +205,7 @@ After restart:
|
||||
• Backups saved at ~/.claude.json.bak-<ts> (and interns.env.bak-<ts>
|
||||
if it existed before)
|
||||
|
||||
Runtime policy lives in `using-interns`. CLAUDE.md trigger:
|
||||
Runtime policy lives in `using-interns`. AGENTS.md trigger:
|
||||
delegate to interns when allowed
|
||||
project-bootstrap 1.6.0+ adds it to new projects automatically.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: tdd-criteria
|
||||
author: ours
|
||||
version: 0.3.0
|
||||
version: 0.3.1
|
||||
description: >
|
||||
TDD by default with four bright-line carve-outs. Applies before any code
|
||||
change. Triggers: "TDD", "test-driven", "следуй TDD", "use TDD",
|
||||
@@ -16,7 +16,7 @@ description: >
|
||||
|
||||
## When this runs
|
||||
|
||||
**At session start** — when `CLAUDE.md` contains the line `follow tdd-criteria`.
|
||||
**At session start** — when `AGENTS.md` contains the line `follow tdd-criteria`.
|
||||
|
||||
**Before any code change** — touching a `*.ts`, `*.js`, `*.py`, `*.go`, `*.rs`, `*.java`, `*.rb`, `*.ex`, `*.swift`, `*.kt`, `*.cs`, `*.php`, or similar source file triggers the decision algorithm below.
|
||||
|
||||
@@ -100,7 +100,7 @@ Pure policy — no agent-specific tool references in this body. Works on Claude,
|
||||
## Out of scope
|
||||
|
||||
- Does not enforce via git hooks (separate optional task: `tdd-criteria-precommit-hook`).
|
||||
- Does not modify project `CLAUDE.md` (that's `project-bootstrap`'s job).
|
||||
- Does not modify project `AGENTS.md` (that's `project-bootstrap`'s job).
|
||||
- Does not run tests.
|
||||
- Does not apply rule 4 retroactively to tests written before the rule was adopted.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ Full design: `.wiki/concepts/interns-design.md` (in this repo) — Layer 1 / 2 /
|
||||
|
||||
## When it triggers
|
||||
|
||||
- CLAUDE.md contains `delegate to interns when allowed` (added by `project-bootstrap` 1.6.0+).
|
||||
- AGENTS.md contains `delegate to interns when allowed` (added by `project-bootstrap` 2.0.0+).
|
||||
- User says: "use interns", "delegate to an intern", "разреши интернов", "allow interns", "go ahead with interns".
|
||||
- Claude is about to read 3+ files, or one file > 400 lines, just to build context.
|
||||
- Claude is about to update `.wiki/log.md` or write a session summary from a long transcript.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: using-interns
|
||||
author: ours
|
||||
version: 0.3.1
|
||||
version: 0.3.2
|
||||
description: >
|
||||
Use when delegating predictable bulk reads or summarization to cheap intern LLMs via the l
|
||||
ocal `interns` MCP server (`mcp__interns__bulk_text_read`, `mcp__interns__transcript_disti
|
||||
ll`, etc.) so the main agent saves quota. Activated by `delegate to interns when allowed`
|
||||
in CLAUDE.md or explicit phrases: «разреши интернов», "use interns", "allow interns". Also
|
||||
in AGENTS.md or explicit phrases: «разреши интернов», "use interns", "allow interns". Also
|
||||
activates proactively when about to read 3+ files for context, a single file >400 lines,
|
||||
or distill a long transcript — surface the offer «знаю, что есть интерны — заюзать?» first
|
||||
. Per-session grant mirrors project-discipline Rule 4: ask-mode default, always-ask for `.
|
||||
@@ -27,7 +27,7 @@ The catalog:
|
||||
| `mcp__interns__bulk_text_read` | Reads N files end-to-end and answers a focused question with file:line citations. | Claude was about to read 3+ files or one file > 400 lines just to extract context. |
|
||||
| `mcp__interns__transcript_distill` | Compresses a session transcript / log into a structured action list (decisions / open questions / next steps). | Before updating `.wiki/log.md` or producing a session summary. |
|
||||
| `mcp__interns__repo_read` | Packs a directory/repo via `repomix` and answers a focused question about the codebase. | Whole-repo or whole-directory questions — architecture, "where is X used", "what does module Y do". See Routing hints for `repo_read` vs `bulk_text_read`. |
|
||||
| `mcp__interns__grep_audit` | Deterministic grep matrix over N paths × M patterns. **No LLM call, no endpoint cost.** Returns ✅/❌/⚠️ table or JSON. | Contains/not-contains audits — checking a set of CLAUDE.md / SKILL.md / frontmatter files for canonical strings. See Routing hints for `grep_audit` vs `bulk_text_read`. |
|
||||
| `mcp__interns__grep_audit` | Deterministic grep matrix over N paths × M patterns. **No LLM call, no endpoint cost.** Returns ✅/❌/⚠️ table or JSON. | Contains/not-contains audits — checking a set of AGENTS.md / CLAUDE.md / SKILL.md / frontmatter files for canonical strings. See Routing hints for `grep_audit` vs `bulk_text_read`. |
|
||||
|
||||
LLM-backed interns currently run on Ollama Cloud (`deepseek-v4-flash`, ~$0.002 / call). `grep_audit` is the catalog's first LLM-free intern — zero cost, zero hallucination boundary. Adding a new intern is a config-only change — see `.wiki/concepts/interns-design.md` § "Как добавить нового интерна".
|
||||
|
||||
@@ -142,7 +142,7 @@ Any call with estimated cost > $0.10 (per the `tokens × price_per_M` config in
|
||||
| Don't delegate editing or debugging a specific file to `repo_read` | Read the file yourself. `repo_read` is for comprehension, not modification. |
|
||||
| Updating `.wiki/log.md` or session-summary doc | `transcript_distill` |
|
||||
| Compressing a long brainstorm transcript before quoting in a design doc | `transcript_distill` |
|
||||
| Audit N paths × M patterns (contains/not-contains matrix — checking CLAUDE.md / SKILL.md / frontmatter for canonical strings) | `grep_audit` — deterministic, no LLM call, zero cost, zero hallucination boundary |
|
||||
| Audit N paths × M patterns (contains/not-contains matrix — checking AGENTS.md / CLAUDE.md / SKILL.md / frontmatter for canonical strings) | `grep_audit` — deterministic, no LLM call, zero cost, zero hallucination boundary |
|
||||
| `bulk_text_read` vs `grep_audit` | `bulk_text_read` is Q&A with an LLM over files; `grep_audit` is deterministic contains/not-contains. Semantic match (paraphrase, intent) → `bulk_text_read` with a question, not `grep_audit`. |
|
||||
| Always-ask paths apply uniformly to `grep_audit` | The server still opens the file even without an LLM call — no special "safe intern" carve-out. Same `.env` / secrets / keys / SSH gate as the LLM-backed interns. |
|
||||
| (Future interns in `config.yaml`) | per the description in the catalog |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: writing-skills
|
||||
adapted-from: obra/superpowers @ 6.2.0 (MIT) — TDD-for-skills core; ideya 8 self-skill-authoring (workshop record)
|
||||
version: 0.1.0
|
||||
version: 0.1.1
|
||||
description: >
|
||||
Authoring agent skills TDD-style — RED-GREEN-REFACTOR applied to SKILL.md
|
||||
documents. Use when creating a new skill, editing an existing one, or
|
||||
@@ -37,7 +37,7 @@ any self-authoring trigger, FIRST check for a double/coverage:
|
||||
1. Does a skill already exist that covers this? (catalog + adapted-from
|
||||
sources: mattpocock/skills, obra/superpowers, vendor skills)
|
||||
2. Should this be a **new skill**, an **extension of an existing one**, a
|
||||
**rule in CLAUDE.md**, or **nothing** (one-off coincidence)?
|
||||
**rule in AGENTS.md**, or **nothing** (one-off coincidence)?
|
||||
|
||||
Only proceed to the TDD cycle if the answer is genuinely "new skill". If the
|
||||
pattern is project-specific, it belongs in the project's `.agents/skills/`
|
||||
|
||||
Reference in New Issue
Block a user