@event4u/agent-config 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.agent-src/rules/external-reference-deep-dive.md +69 -0
  2. package/.agent-src/templates/copilot-instructions.md +7 -0
  3. package/.claude-plugin/marketplace.json +27 -1
  4. package/CHANGELOG.md +49 -0
  5. package/README.md +1 -8
  6. package/docs/architecture.md +1 -1
  7. package/docs/contracts/installed-tools-lockfile.md +138 -0
  8. package/docs/development.md +37 -0
  9. package/docs/getting-started.md +1 -1
  10. package/docs/installation.md +14 -0
  11. package/docs/setup/per-ide/antigravity.md +63 -0
  12. package/docs/setup/per-ide/augment.md +77 -0
  13. package/docs/setup/per-ide/codebuddy.md +63 -0
  14. package/docs/setup/per-ide/continue.md +68 -0
  15. package/docs/setup/per-ide/droid.md +65 -0
  16. package/docs/setup/per-ide/jetbrains.md +76 -0
  17. package/docs/setup/per-ide/kilocode.md +66 -0
  18. package/docs/setup/per-ide/kiro.md +72 -0
  19. package/docs/setup/per-ide/opencode.md +62 -0
  20. package/docs/setup/per-ide/qoder.md +63 -0
  21. package/docs/setup/per-ide/roocode.md +68 -0
  22. package/docs/setup/per-ide/trae.md +63 -0
  23. package/docs/setup/per-ide/warp.md +63 -0
  24. package/docs/setup/per-ide/zed.md +73 -0
  25. package/package.json +1 -1
  26. package/scripts/_cli/cmd_doctor.py +351 -0
  27. package/scripts/_cli/cmd_prune.py +317 -0
  28. package/scripts/_cli/cmd_uninstall.py +465 -0
  29. package/scripts/_cli/cmd_update.py +26 -3
  30. package/scripts/_cli/cmd_versions.py +147 -0
  31. package/scripts/_lib/fs_atomic.py +116 -0
  32. package/scripts/_lib/installed_tools.py +188 -44
  33. package/scripts/_lib/json_pointers.py +260 -0
  34. package/scripts/agent-config +69 -0
  35. package/scripts/compress.py +78 -15
  36. package/scripts/install +8 -0
  37. package/scripts/install-hooks.sh +54 -1
  38. package/scripts/install.py +1053 -51
@@ -0,0 +1,69 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2b"
4
+ description: "When the user names an external repo, file, URL, or artifact as a reference — fetch the actual tree and inspect, never summarize from README or metadata"
5
+ alwaysApply: false
6
+ source: package
7
+ triggers:
8
+ - intent: "look at how X does it"
9
+ - intent: "compare with reference repo"
10
+ - intent: "use as template / vorlage"
11
+ - intent: "wie macht es X"
12
+ - intent: "vergleiche mit Y"
13
+ - intent: "schau dir Z an"
14
+ - intent: "study this competitor"
15
+ - keyword: "github.com/"
16
+ - keyword: "source of truth"
17
+ - phrase: "reference repo"
18
+ ---
19
+
20
+ # external-reference-deep-dive
21
+
22
+ ## The Iron Law
23
+
24
+ ```
25
+ EXTERNAL REFERENCE NAMED → DEEP-DIVE FIRST.
26
+ NO README-ONLY SUMMARIES. NO METADATA GUESSES.
27
+ INSPECT THE TREE, THE FRONTMATTER, THE CONFIGS, THE CODE.
28
+ ABSENCE-OF-EVIDENCE IS NOT EVIDENCE — FETCH BEFORE CLAIMING.
29
+ ```
30
+
31
+ Triggered when the user points to an external artifact (repo URL, `owner/repo`, file path, website, archive) **and** asks to analyze, compare, mirror, use as template, or "see how they do it". The user invested in naming the source — answer from the source, not from the cover.
32
+
33
+ ## Mandatory before drawing any conclusion
34
+
35
+ 1. **Use `/analyze-reference-repo`** (the canonical flow) when the artifact is a repo. Its Steps 2–5 are not optional shortcuts — they are the deep-dive contract: fetch listings (not just README), inspect key directories (`skills/`, `rules/`, `commands/`, `scripts/`, `.github/workflows/`, install configs, frontmatter samples), classify each axis adopt/adapt/reject/already.
36
+ 2. **For single files / websites** — fetch the actual content, not a summary. PDFs/DOCX/XLSX → `markitdown` first.
37
+ 3. **Cite verbatim** — every finding lands with a file path, line range, or URL fragment. "The README says X" is **not** a finding about implementation; it's a finding about marketing copy.
38
+ 4. **Surface what was inspected** — list the files / directories actually fetched, so the user can audit coverage.
39
+ 5. **"Not found" beats "probably not there"** — if a fetch budget was hit, say which subtrees are still un-inspected and ask before concluding absence.
40
+
41
+ ## Forbidden patterns
42
+
43
+ - Reading only the README / homepage / package description and reporting capabilities.
44
+ - Declaring "they don't support X" without listing the directories actually inspected.
45
+ - Repeating a surface-level claim across turns without re-fetching when the user pushes back.
46
+ - Treating `package.json` / `composer.json` keywords as evidence of behavior.
47
+ - Summarizing a competitor's installer story from prose instead of reading `scripts/install*`, `bin/*`, or the npm `bin` field.
48
+
49
+ ## Failure mode catalog
50
+
51
+ | Pattern | Why it fails | Fix |
52
+ |---|---|---|
53
+ | **README-summary-as-analysis** | Marketing prose ≠ implementation. Capabilities listed there may be aspirational, deprecated, or differently scoped. | Fetch the directory listing + 1–2 representative files per axis. |
54
+ | **"Nothing matches" without enumeration** | Claims absence without proof. The user has to re-prompt to force the real lookup. | Before saying "no X", list the directories scanned. If the budget caps, ask which to expand. |
55
+ | **Repeat-the-guess after pushback** | User says "really look" → agent re-paraphrases the same surface read. Burns trust. | On any pushback that names the source again, restart from a tree listing, not from prior notes. |
56
+ | **Cross-tool path inference from a single example** | One config file ≠ a convention. | Inspect ≥2 unrelated tool integrations before claiming a pattern is the project's universal anchor strategy. |
57
+
58
+ **Case-zero anchor.** May 2026 — `nextlevelbuilder/ui-ux-pro-max-skill` was named as the source of truth for 23 AI-tool anchors. Three rounds of "we have no content for these tools" were reported from README inference. The actual `tool-configs/*.json` files in the reference repo gave the exact directory layout per tool in one fetch. Cost: ~2 hours of user frustration. Lesson: when an external source is named, the first action is `GET /repos/{o}/{r}/contents/{interesting-subtree}` — not paraphrase.
59
+
60
+ ## Escape hatch
61
+
62
+ User explicitly fences the scope (*"quick scan only"*, *"just glance at the README"*, *"don't fetch the whole thing"*) → quick-scan path is allowed. Say so up front: *"Quick-scan mode per your scope — README + top-level layout only, not a full analysis."*
63
+
64
+ ## See also
65
+
66
+ - Command [`/analyze-reference-repo`](../commands/analyze-reference-repo.md) — canonical deep-dive flow.
67
+ - Rule [`think-before-action`](think-before-action.md) — sibling Iron Law for code paths in **this** repo; this rule is its mirror for **external** artifacts.
68
+ - Rule [`ask-when-uncertain`](ask-when-uncertain.md) — when a fetch budget caps, ask which subtree to expand instead of guessing.
69
+ - Skill [`markitdown`](../skills/markitdown/SKILL.md) — convert binary office formats before analysis.
@@ -25,11 +25,18 @@ This repository contains {{project_description_oneline}}.
25
25
  > rules, guidelines) and `AGENTS.md`. The instructions below are
26
26
  > self-contained for Copilot Code Review.
27
27
  >
28
+ > For multi-step workflows (refactors, new features, bug investigations),
29
+ > switch Copilot Chat to **Agent mode** — it can read this file plus
30
+ > `.augment/` and orchestrate tools. **Ask mode** and inline **Edit mode**
31
+ > stay local to the current selection.
32
+ >
28
33
  > For most tickets — feature, bug fix, or refactor — start with
29
34
  > `/implement-ticket` (see `.augment/commands/implement-ticket.md`). It drives
30
35
  > the linear flow `refine → memory → analyze → plan → implement → test →
31
36
  > verify → report`, blocks on ambiguity instead of guessing, and never
32
37
  > commits, pushes, or opens PRs on its own.
38
+ >
39
+ > See `docs/setup/per-ide/copilot.md` for the full activation guide.
33
40
 
34
41
  ## ✅ Scope Control
35
42
 
@@ -6,12 +6,38 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "2.2.2"
9
+ "version": "2.3.0",
10
+ "keywords": [
11
+ "agent-config",
12
+ "skills",
13
+ "rules",
14
+ "claude-code",
15
+ "augment",
16
+ "cursor",
17
+ "cline",
18
+ "windsurf",
19
+ "gemini",
20
+ "copilot",
21
+ "laravel",
22
+ "php",
23
+ "ai-coding"
24
+ ]
10
25
  },
11
26
  "plugins": [
12
27
  {
13
28
  "name": "agent-config",
14
29
  "description": "Full skill catalog \u2014 writing, reviewing, managing, and analyzing agent content, plus stack-specific skills for Laravel, PHP, Docker, AWS, Playwright, and more.",
30
+ "keywords": [
31
+ "skills",
32
+ "rules",
33
+ "commands",
34
+ "laravel",
35
+ "php",
36
+ "review",
37
+ "testing",
38
+ "infrastructure",
39
+ "documentation"
40
+ ],
15
41
  "source": "./",
16
42
  "strict": false,
17
43
  "skills": [
package/CHANGELOG.md CHANGED
@@ -343,6 +343,55 @@ our recommendation order, not its support status.
343
343
  users" tension without removing any path that an existing user
344
344
  might rely on.
345
345
 
346
+ ## [2.3.0](https://github.com/event4u-app/agent-config/compare/2.2.2...2.3.0) (2026-05-13)
347
+
348
+ ### Features
349
+
350
+ * **prune:** add --resume-uninstall for focused crash recovery ([1c98454](https://github.com/event4u-app/agent-config/commit/1c9845404f1e629f802494c732f7438aa4335c8e))
351
+ * **dev:** add dev:install-global and dev:link tasks for local development ([db4bdc9](https://github.com/event4u-app/agent-config/commit/db4bdc9794752791bb93235cc9cc3179df9b88df))
352
+ * **install:** manifest schema v2 + doctor + conflict detection + inline tag ([50c0892](https://github.com/event4u-app/agent-config/commit/50c0892bf01eb904e48dd786ef03c519f82be485))
353
+ * **cli:** add prune command for orphaned bridge markers ([d16abff](https://github.com/event4u-app/agent-config/commit/d16abff8ac9fd55ccd501d319785f463eb7cbeee))
354
+ * **cli:** add uninstall/versions subcommands and --offline mode ([12a8e75](https://github.com/event4u-app/agent-config/commit/12a8e75945f1d26c1412d17331788c8e51601cea))
355
+ * **install:** add workflow-mode activation hints to IDE bridges ([5e09e17](https://github.com/event4u-app/agent-config/commit/5e09e17f0de62b4113bd68839d6ce55a1527d4b1))
356
+ * **rules:** add external-reference-deep-dive hardening rule ([0d2c80c](https://github.com/event4u-app/agent-config/commit/0d2c80c0f418b80a67d08c4577cfe67ab6abe3db))
357
+ * **install:** expand global content deployment to 23 AI tools ([3ef13a7](https://github.com/event4u-app/agent-config/commit/3ef13a7c2ae16b95da9e5a49ec3a19c5cb211357))
358
+
359
+ ### Bug Fixes
360
+
361
+ * **install:** normalise manifest paths + surface doctor remediation hint ([b4662b6](https://github.com/event4u-app/agent-config/commit/b4662b609db6b1b4660652facc0efb10b36a5d51))
362
+ * **test:** patch USERPROFILE in isolated_lock fixture for Windows ([ac1c924](https://github.com/event4u-app/agent-config/commit/ac1c924e08822e09471c0cf0077ad69be531d7b5))
363
+
364
+ ### Documentation
365
+
366
+ * **readme:** remove stale vX.0 breaking-change notice ([d6aef9a](https://github.com/event4u-app/agent-config/commit/d6aef9acce3e5409f0ffc641ecf026af1f9bb863))
367
+ * **roadmap:** sharpen Phase 6 deferred trigger — name the collision ([d0a6dd2](https://github.com/event4u-app/agent-config/commit/d0a6dd28294c011d4135b4047e4e5252008fcf05))
368
+ * **roadmap:** close + archive multi-package coexistence ([3ef464f](https://github.com/event4u-app/agent-config/commit/3ef464fd6123ead7ca755542a1459e6a9e8e270b))
369
+ * **roadmap:** plan + close phases 1-5 of multi-package coexistence ([34967a5](https://github.com/event4u-app/agent-config/commit/34967a5e6525d4d742155ee3bd3fe0bb80d852bf))
370
+ * **install:** add installed-tools-lockfile wire contract ([c352db3](https://github.com/event4u-app/agent-config/commit/c352db383f6bf6dc328159289fa4d96abb2594c4))
371
+ * **setup:** add per-IDE activation guides for 14 tools ([6379a49](https://github.com/event4u-app/agent-config/commit/6379a49fed6ac3256c23ac8e04c69fa0d4f85aa2))
372
+
373
+ ### Tests
374
+
375
+ * **e2e:** cover shared JSON merges, sole-owner cleanup, conflict chain ([0ff50ae](https://github.com/event4u-app/agent-config/commit/0ff50ae617d878138376e535fc8b5c22a7677356))
376
+ * **install:** e2e multi-package coexistence scenario ([081318e](https://github.com/event4u-app/agent-config/commit/081318ea8e3c872548839d100117cbd9b4a1343a))
377
+ * **cli:** cover prune — orphans, dry-run, json, hard-floor ([0261ea2](https://github.com/event4u-app/agent-config/commit/0261ea2e1687e6904bdcb3083cb0d700b6ef82e5))
378
+
379
+ ### CI
380
+
381
+ * **tests:** bump per-shard parallelism explicitly to beat macOS nproc=3 ([83a3b4d](https://github.com/event4u-app/agent-config/commit/83a3b4d3bf6eefe10963d84525469aeb8e3b8abe))
382
+ * **tests:** bump install-tests shards 3→4 to keep macOS under 2min ([dd4d5bc](https://github.com/event4u-app/agent-config/commit/dd4d5bc385282d344809a057d015a968811d4a3b))
383
+ * **tests:** shard install-tests matrix to hit 1-2min/job target ([6a56416](https://github.com/event4u-app/agent-config/commit/6a564161f0a74601fe077d34c76f2f5a27657893))
384
+ * **tests:** parallelize install-tests + fix Windows UTF-8 encoding ([e346a26](https://github.com/event4u-app/agent-config/commit/e346a26e91be633a63e8c7d46fb09a3a6cdf800e))
385
+ * **tests:** bootstrap .augment/ projection before pytest ([e40371e](https://github.com/event4u-app/agent-config/commit/e40371ea7b0c345ee59eba8ba5e47328bf6aebe9))
386
+
387
+ ### Chores
388
+
389
+ * finalize changes ([7cbbe68](https://github.com/event4u-app/agent-config/commit/7cbbe6881e040d67fd0598df73b82b3fbd1278c0))
390
+ * regenerate router.json after kernel/tier rebuild ([ff5f10e](https://github.com/event4u-app/agent-config/commit/ff5f10e0589f46782ec6381a84377f22b90d7edc))
391
+ * **marketplace:** refresh marketplace.json manifest ([eb9b934](https://github.com/event4u-app/agent-config/commit/eb9b934f5b4573ec1fcde19f91f6a20637b8dbeb))
392
+
393
+ Tests: 3490 (+140 since 2.2.2)
394
+
346
395
  ## [2.2.2](https://github.com/event4u-app/agent-config/compare/2.2.1...2.2.2) (2026-05-12)
347
396
 
348
397
  ### Bug Fixes
package/README.md CHANGED
@@ -1,12 +1,5 @@
1
1
  # Agent Config — Governed Agent System
2
2
 
3
- > ⚠️ **Breaking change in vX.0** — `agent-config` now ships as an
4
- > **npx-only runtime**. `composer require` / `npm install --save-dev`
5
- > are gone, the `--global` symlink scheme is retired. Existing
6
- > consumers: run `npx @event4u/agent-config migrate`
7
- > ([guide](docs/migration/v1-to-v2.md)). New consumers: jump to
8
- > [Quickstart](#quickstart).
9
-
10
3
  > **agent-config is not a runtime, but it ships a deterministic orchestration contract / state machine for host agents.**
11
4
 
12
5
  Give your AI agents an audit-disciplined orchestration contract — testing, Git, CI, code review, and **120+ stack-aware skills** — with quality guardrails built in.
@@ -14,7 +7,7 @@ Give your AI agents an audit-disciplined orchestration contract — testing, Git
14
7
  > Your agent picks up the project's stack, runs tests, prepares PRs, fixes CI — and follows your team's coding standards while doing it. Stack-aware skill sets ship for PHP (Laravel · Symfony · Zend/Laminas), JavaScript (Next.js · React · Node), and cross-stack concerns (API · testing · security · observability).
15
8
 
16
9
  <p align="center">
17
- <strong>174 Skills</strong> · <strong>60 Rules</strong> · <strong>106 Commands</strong> · <strong>70 Guidelines</strong> · <strong>8 AI Tools</strong>
10
+ <strong>174 Skills</strong> · <strong>61 Rules</strong> · <strong>106 Commands</strong> · <strong>70 Guidelines</strong> · <strong>8 AI Tools</strong>
18
11
  </p>
19
12
 
20
13
  ---
@@ -143,7 +143,7 @@ fails on any source-side violation, without producing artifacts.
143
143
  | Layer | Count | Purpose |
144
144
  |---|---|---|
145
145
  | **Skills** | 174 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
146
- | **Rules** | 60 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
146
+ | **Rules** | 61 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
147
147
  | **Commands** | 106 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
148
148
  | **Guidelines** | 70 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
149
149
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
@@ -0,0 +1,138 @@
1
+ # Installed-Tools Lockfile — Wire Contract
2
+
3
+ Canonical wire-format spec for `agents/installed-tools.lock` — the
4
+ project-committed bill of materials for AI tooling installed into this
5
+ repository.
6
+
7
+ - **Authoritative module:** [`scripts/_lib/installed_tools.py`](../../scripts/_lib/installed_tools.py)
8
+ - **ADR:** [`docs/decisions/ADR-008-installed-tools-manifest.md`](../decisions/ADR-008-installed-tools-manifest.md)
9
+ - **Workflow guide:** [`docs/guidelines/agent-infra/installed-tools-manifest.md`](../guidelines/agent-infra/installed-tools-manifest.md)
10
+ - **Active roadmap:** P1.1 of [`agents/roadmaps/road-to-multi-package-coexistence.md`](../../agents/roadmaps/road-to-multi-package-coexistence.md)
11
+
12
+ ## Versions
13
+
14
+ | Version | Status | Writer | Reader |
15
+ |---|---|---|---|
16
+ | **1** | legacy | not emitted by current code | tolerated by `read_manifest` |
17
+ | **2** | current | `write_manifest` always emits this | tolerated by `read_manifest` |
18
+
19
+ `SCHEMA_VERSION = 2` · `SCHEMA_VERSIONS_SUPPORTED = (1, 2)`. The reader
20
+ must accept any version in `SCHEMA_VERSIONS_SUPPORTED`; the writer must
21
+ always emit the highest. Bumps are breaking on the writer side and
22
+ require a migration plan.
23
+
24
+ ## Schema v2 — wire format
25
+
26
+ ```yaml
27
+ schema_version: 2
28
+ agent_config_version: "2.2.0"
29
+ deploy_roots: # optional, top-level (P1.1)
30
+ - .augment/rules
31
+ - .cursor/rules
32
+ tools:
33
+ - name: claude-code # one of _VALID_TOOLS
34
+ scope: global # global | project
35
+ bridge_marker: ~/.claude/PROJECT_MANAGED_BY_AGENT_CONFIG
36
+ installed_at: "2026-05-12"
37
+ status: installed # optional: installed | uninstalling (P2.2)
38
+ files: # optional, per-tool (P1.1)
39
+ - path: .augment/rules/r1.md
40
+ kind: deployed # one of FILE_KINDS
41
+ sha256: "<64 hex chars>"
42
+ - path: .cursorrules
43
+ kind: bridge
44
+ sha256: null # null permitted for non-content markers
45
+ merged_keys: # optional, per-tool (P1.1)
46
+ - file: .mcp.json
47
+ json_pointer: "/mcpServers/agent-config"
48
+ ```
49
+
50
+ ### Top-level fields
51
+
52
+ | Field | Type | Owner | Notes |
53
+ |---|---|---|---|
54
+ | `schema_version` | int | machine | always `2` on write |
55
+ | `agent_config_version` | str | machine | last writer's package version |
56
+ | `deploy_roots` | list[str] | machine | optional; directories the doctor command surveys for foreign files. Omitted when empty. Falls back to `DEFAULT_DEPLOY_ROOTS` when consumers need a survey scope and no explicit list is present. |
57
+ | `tools` | list[obj] | machine | install-order preserved, not alphabetised |
58
+
59
+ ### Per-tool fields
60
+
61
+ | Field | Type | Required | Notes |
62
+ |---|---|---|---|
63
+ | `name` | str | yes | one of `_VALID_TOOLS` in `scripts/install.py` |
64
+ | `scope` | str | yes | `global` (user-home) or `project` (workspace bridge) |
65
+ | `bridge_marker` | str | yes | absolute / `~`-prefixed for global; repo-relative for project |
66
+ | `installed_at` | str | yes | ISO date; informational only |
67
+ | `status` | str | no | `installed` (default when absent) or `uninstalling`; two-phase uninstall (P2.2). A crashed uninstall leaves the entry in `uninstalling` — `agent-config prune --resume-uninstall` sweeps only those entries' `files[]` without touching healthy tools or unmanaged drift. |
68
+ | `files` | list[obj] | no | content the installer deployed for this tool |
69
+ | `merged_keys` | list[obj] | no | named keys this tool inserted into shared JSON files |
70
+
71
+ ### `files[]` entries
72
+
73
+ | Field | Type | Notes |
74
+ |---|---|---|
75
+ | `path` | str | repo-relative for project-scope, `~`-prefixed for global |
76
+ | `kind` | str | one of `FILE_KINDS = {bridge, deployed, marker}` |
77
+ | `sha256` | str / null | 64 hex chars of the file's SHA-256 at install time, or `null` for markers / pointers without content |
78
+
79
+ `kind` semantics:
80
+
81
+ - **`bridge`** — team-pointer marker like `.cursorrules` or `.windsurf/PROJECT_MANAGED_BY_AGENT_CONFIG`. Existence-tracked, content-untracked.
82
+ - **`deployed`** — bundle content the installer wrote (e.g. `.augment/rules/*.md`). Content-tracked via `sha256` so drift is detectable.
83
+ - **`marker`** — one-off sentinel (e.g. `claude-desktop` install marker). Existence-only.
84
+
85
+ ### `merged_keys[]` entries
86
+
87
+ | Field | Type | Notes |
88
+ |---|---|---|
89
+ | `file` | str | repo-relative path to the shared file (e.g. `.mcp.json`) |
90
+ | `json_pointer` | str | RFC 6901 pointer. **Constraint:** must target an object key, never an array index. Array-index pointers shift on neighbour-tool uninstall and corrupt other packages' ownership. |
91
+
92
+ The pointer constraint is enforced at write time in P1.5; readers in v2.x
93
+ must reject manifests that contain array-index pointers.
94
+
95
+ ## Compatibility — reader tolerance
96
+
97
+ - `read_manifest` accepts both v1 and v2 wire formats.
98
+ - When `pyyaml` is available, v2 round-trips fully.
99
+ - When `pyyaml` is missing, the manual fallback parser extracts v1-equivalent fields (top-level scalars + per-tool scalar fields) and **silently drops** v2 nested fields (`files`, `merged_keys`, `deploy_roots`). Callers that need full v2 fidelity must ensure `pyyaml` is on the path.
100
+
101
+ ## Compatibility — writer behaviour
102
+
103
+ - `write_manifest(path, version, tools, *, deploy_roots=None)` always emits `schema_version: 2`.
104
+ - Optional v2 fields (`deploy_roots`, per-tool `files` / `merged_keys` / `status`) are emitted only when non-empty, so a v1-shaped call produces a v2 file that is structurally minimal and v1-readable for the core fields.
105
+ - All writes are crash-safe via [`scripts/_lib/fs_atomic.py`](../../scripts/_lib/fs_atomic.py) (`write_atomic`: tmp + fsync + rename + parent-dir fsync). See P1.0 of the multi-package roadmap.
106
+
107
+ ## Determinism
108
+
109
+ Required by P1.3 (not yet enforced in v2.0 of the writer):
110
+
111
+ 1. `tools[]` order = install order (no re-sort).
112
+ 2. `files[]` order within a tool = sorted by `path` ascending.
113
+ 3. `merged_keys[]` order within a tool = sorted by `(file, json_pointer)` ascending.
114
+ 4. `deploy_roots[]` order = as supplied by the writer (caller-controlled).
115
+
116
+ Determinism is what lets the doctor command produce stable diffs across team members.
117
+
118
+ ## Inline package tag (P5 — non-authoritative)
119
+
120
+ Deployed Markdown files may carry a frontmatter tag that records provenance for human readers:
121
+
122
+ ```yaml
123
+ ---
124
+ title: My rule
125
+ package: event4u/agent-config
126
+ source_path: config/rules/general.md
127
+ ---
128
+ ```
129
+
130
+ Properties:
131
+
132
+ - **Optional.** Files without a leading `---` frontmatter block are deployed as-is; no synthetic frontmatter is added (P5.1).
133
+ - **Human-readable only.** The lockfile remains the single source of truth for ownership, prune, and uninstall decisions. Removing or hand-editing the inline tag does **not** alter prune / uninstall semantics (P5.3).
134
+ - **Surfaced by doctor.** A frontmatter-bearing file whose `package:` value disagrees with this writer's identifier — or whose `package:` key has been removed — appears under the `tag-drift` category of `agent-config doctor` (P5.2). Tag-drift exit code = 1, same as other drift; fix hint points at `--force` re-install.
135
+ - **Idempotent.** Re-installation rewrites the same `package:` / `source_path:` values; running install twice produces byte-identical Markdown.
136
+ - **`source_path:` (not `source:`).** The injected provenance-path key is named `source_path:` to avoid collision with the established `source: package` origin-type marker used by 200+ rule files in this and downstream packages. The injector treats `source:` as a foreign key and never rewrites it.
137
+
138
+ Neighbour packages writing into the same project SHOULD use their own `package:` identifier so doctor can distinguish authored ownership at a glance, but they MUST still register their files in the manifest — the inline tag is a UX affordance, not a substitute for the lockfile entry.
@@ -115,6 +115,43 @@ task install -- --target <dir> # Run the installer orchestrator on a target
115
115
  task install-hooks # Install git hooks (pre-commit marketplace lint, pre-push sync check, chat-history bridges)
116
116
  ```
117
117
 
118
+ ### Local dev install (no release)
119
+
120
+ Use these tasks to run the working tree as if it were a published
121
+ release — useful for testing changes before `task release` cuts an npm
122
+ version.
123
+
124
+ ```bash
125
+ task dev:install-global # Refresh ~/.claude, ~/.cursor, ~/.augment, … from this working tree (--force)
126
+ task dev:link # Symlink this repo as the global @event4u/agent-config (npm link)
127
+ task dev:unlink # Remove the global symlink
128
+ ```
129
+
130
+ **Typical flow:**
131
+
132
+ 1. In this repo: `task dev:link` — once. The `agent-config` bin on PATH
133
+ now resolves into the working tree.
134
+ 2. In this repo: `task dev:install-global` — every time you want
135
+ user-scope content (`~/.claude/rules`, `~/.cursor/`, …) refreshed.
136
+ 3. In a consumer project that uses `@event4u/agent-config` from npm,
137
+ opt in to the linked dev tree:
138
+
139
+ ```bash
140
+ cd /path/to/consumer-project
141
+ npm link @event4u/agent-config
142
+ ```
143
+
144
+ `npx @event4u/agent-config …` and `node_modules/.bin/agent-config`
145
+ in that project now resolve into the dev tree. Undo with
146
+ `npm unlink @event4u/agent-config` (project) and `task dev:unlink`
147
+ (this repo).
148
+
149
+ **Caveat — npx outside a linked project:** `npx @event4u/agent-config`
150
+ in a directory without a linked `node_modules/@event4u/agent-config`
151
+ fetches the published version from the registry. Either run `npm link
152
+ @event4u/agent-config` in that project first, or call the global
153
+ `agent-config` bin directly (which `task dev:link` puts on PATH).
154
+
118
155
  ---
119
156
 
120
157
  ## Project Structure
@@ -106,7 +106,7 @@ Your agent is now:
106
106
  - **Respecting your codebase** — no conflicting patterns
107
107
  - **Following standards** — consistent code quality
108
108
 
109
- This is enforced automatically by 60 rules. No configuration needed.
109
+ This is enforced automatically by 61 rules. No configuration needed.
110
110
 
111
111
  ---
112
112
 
@@ -46,6 +46,20 @@ section below this index is reference material for advanced installs
46
46
  | **Codex CLI** | `npx @event4u/agent-config init --tools=codex` | [`per-ide/codex.md`](setup/per-ide/codex.md) |
47
47
  | **Gemini CLI** | `npx @event4u/agent-config init --tools=gemini` | [`per-ide/gemini-cli.md`](setup/per-ide/gemini-cli.md) |
48
48
  | **GitHub Copilot** | `npx @event4u/agent-config init --tools=copilot` | [`per-ide/copilot.md`](setup/per-ide/copilot.md) |
49
+ | **Augment Code** | `npx @event4u/agent-config init --tools=augment` | [`per-ide/augment.md`](setup/per-ide/augment.md) |
50
+ | **Roo Code** | `npx @event4u/agent-config init --tools=roocode` | [`per-ide/roocode.md`](setup/per-ide/roocode.md) |
51
+ | **Kilo Code** | `npx @event4u/agent-config init --tools=kilocode` | [`per-ide/kilocode.md`](setup/per-ide/kilocode.md) |
52
+ | **Continue.dev** | `npx @event4u/agent-config init --tools=continue` | [`per-ide/continue.md`](setup/per-ide/continue.md) |
53
+ | **Kiro** | `npx @event4u/agent-config init --tools=kiro` | [`per-ide/kiro.md`](setup/per-ide/kiro.md) |
54
+ | **Zed** | `npx @event4u/agent-config init --tools=zed` | [`per-ide/zed.md`](setup/per-ide/zed.md) |
55
+ | **JetBrains AI** | `npx @event4u/agent-config init --tools=jetbrains --global` | [`per-ide/jetbrains.md`](setup/per-ide/jetbrains.md) |
56
+ | **Qoder** | `npx @event4u/agent-config init --tools=qoder --global` | [`per-ide/qoder.md`](setup/per-ide/qoder.md) |
57
+ | **OpenCode** | `npx @event4u/agent-config init --tools=opencode --global` | [`per-ide/opencode.md`](setup/per-ide/opencode.md) |
58
+ | **Trae** | `npx @event4u/agent-config init --tools=trae --global` | [`per-ide/trae.md`](setup/per-ide/trae.md) |
59
+ | **Antigravity** | `npx @event4u/agent-config init --tools=antigravity --global` | [`per-ide/antigravity.md`](setup/per-ide/antigravity.md) |
60
+ | **CodeBuddy** | `npx @event4u/agent-config init --tools=codebuddy --global` | [`per-ide/codebuddy.md`](setup/per-ide/codebuddy.md) |
61
+ | **Droid (Factory)** | `npx @event4u/agent-config init --tools=droid --global` | [`per-ide/droid.md`](setup/per-ide/droid.md) |
62
+ | **Warp** | `npx @event4u/agent-config init --tools=warp --global` | [`per-ide/warp.md`](setup/per-ide/warp.md) |
49
63
  | **All surfaces** | `npx @event4u/agent-config init` (default) | (each page above applies) |
50
64
 
51
65
  Combine surfaces by comma-separating: `--tools=claude-code,cursor,windsurf`.
@@ -0,0 +1,63 @@
1
+ # Antigravity Setup
2
+
3
+ Antigravity (Google's agentic IDE) reads the Anthropic-shaped
4
+ markdown skill bundle from its user-scope anchor `~/.agents/`. The
5
+ package deploys via the universal skill convention; project-scope
6
+ bridge is not yet wired (Phase 2.4 anchor).
7
+
8
+ ## Prerequisites
9
+
10
+ - Antigravity IDE.
11
+ - Node.js ≥ 18 for the install entrypoints.
12
+
13
+ ## Install
14
+
15
+ Global only (canonical scope):
16
+
17
+ ```bash
18
+ npx @event4u/agent-config init --tools=antigravity --global
19
+ ```
20
+
21
+ Populates:
22
+
23
+ - `~/.agents/skills/` — Anthropic-shaped skill bundle
24
+ - `~/.agents/rules/` — kernel + tier-1/2 rules
25
+ - `~/.agents/personas/` — review-lens personas
26
+
27
+ (Project-scope `--tools=antigravity` is rejected with exit code 1
28
+ — Antigravity has no documented project-discovery convention yet.)
29
+
30
+ ## How to use
31
+
32
+ - Antigravity reads the skill bundle from `~/.agents/skills/` on
33
+ every session — no manual action required.
34
+ - Slash commands (`/work`, `/implement-ticket`, `/commit`,
35
+ `/create-pr`, …) ship inside the skill bundle as named skills.
36
+ Invoke them by name in chat.
37
+ - Antigravity ships an agent-orchestration surface; point it at
38
+ the project root so the agent can locate `AGENTS.md` and the
39
+ project's own `agents/` overlay.
40
+
41
+ ## Verification
42
+
43
+ ```bash
44
+ test -d ~/.agents/skills
45
+ test -d ~/.agents/rules
46
+ ```
47
+
48
+ In Antigravity: ask *"What is this repo?"* — the answer should
49
+ cite the AGENTS.md emergency triage block when the workspace is
50
+ open.
51
+
52
+ ## Troubleshooting
53
+
54
+ | Symptom | Fix |
55
+ |---|---|
56
+ | Skills not listed | Re-run `npx @event4u/agent-config init --tools=antigravity --global --force`. |
57
+ | `--tools=antigravity` rejected | Add `--global` (Antigravity has global-only scope). |
58
+ | `~/.agents/` collides with another tool | The anchor is shared by convention; coexists with other agents that use the same path. |
59
+
60
+ ## Cross-references
61
+
62
+ - [`AGENTS.md`](../../../AGENTS.md) — canonical agent self-orientation.
63
+ - [`docs/installation.md`](../../installation.md) — install matrix index.
@@ -0,0 +1,77 @@
1
+ # Augment Code Setup
2
+
3
+ Augment Code is the **substrate** for this package — every other tool
4
+ mirrors content from the canonical `.augment/` tree. The Augment
5
+ extension (VS Code, JetBrains) reads `.augment/rules/`,
6
+ `.augment/skills/`, `.augment/commands/`, `.augment/personas/`, and
7
+ `.augment/contexts/` directly.
8
+
9
+ ## Prerequisites
10
+
11
+ - Augment Code extension: <https://www.augmentcode.com/>.
12
+ - Node.js ≥ 18 for the install entrypoints.
13
+
14
+ ## Install
15
+
16
+ Project scope (default):
17
+
18
+ ```bash
19
+ npx @event4u/agent-config init --tools=augment
20
+ ```
21
+
22
+ Global scope (cross-project, deploys the full bundle to `~/.augment/`):
23
+
24
+ ```bash
25
+ npx @event4u/agent-config init --tools=augment --global
26
+ ```
27
+
28
+ Populates (project):
29
+
30
+ - `.augment/rules/` — kernel (9 Iron-Law rules) + tier-1/2 routed rules
31
+ - `.augment/skills/` — domain skills
32
+ - `.augment/commands/` — slash commands
33
+ - `.augment/personas/` — review-lens personas
34
+ - `.augment/contexts/` — knowledge-layer contexts
35
+ - `.augment/templates/` — scaffolds for AGENTS.md, copilot-instructions, etc.
36
+ - `AGENTS.md` — canonical agent self-orientation
37
+ - `.agent-settings.yml` — per-project knobs
38
+
39
+ ## How to use
40
+
41
+ - Augment auto-discovers `.augment/` on every session — no manual
42
+ action required.
43
+ - The kernel rules (always-on Iron Laws) load first; tier-1/2
44
+ rules are routed by the rule-router based on intent.
45
+ - Slash commands (`/work`, `/implement-ticket`, `/commit`,
46
+ `/create-pr`, `/refine-ticket`, …) are registered as Augment
47
+ Skills and surfaced in the agent's available-skills list.
48
+ - Personas are review-lens voices; invoke them per `/mode` or by
49
+ name inside `/work` and `/implement-ticket` plans.
50
+ - `.agent-settings.yml` controls per-project knobs (autonomy
51
+ default, cost profile, role-mode, learning opt-out).
52
+
53
+ ## Verification
54
+
55
+ ```bash
56
+ test -d .augment/rules
57
+ test -d .augment/skills
58
+ test -d .augment/commands
59
+ test -f AGENTS.md
60
+ ```
61
+
62
+ Open the Augment panel and ask *"What is this repo?"* — the answer
63
+ should cite the AGENTS.md emergency triage block.
64
+
65
+ ## Troubleshooting
66
+
67
+ | Symptom | Fix |
68
+ |---|---|
69
+ | Skills not surfaced | Reload the Augment workspace; skills are indexed on session start. |
70
+ | Symlinked sub-dirs missing | `.augment/skills` is a symlink to `.agent-src/skills`; run `task sync` to rebuild. |
71
+ | Iron Laws not firing | Confirm `.augment/rules/` contains 9 kernel files (`task ci` validates the kernel count). |
72
+
73
+ ## Cross-references
74
+
75
+ - [`AGENTS.md`](../../../AGENTS.md) — canonical agent self-orientation.
76
+ - [`docs/architecture.md`](../../architecture.md) — kernel + router + projection pipeline.
77
+ - [`docs/installation.md`](../../installation.md) — install matrix index.
@@ -0,0 +1,63 @@
1
+ # CodeBuddy Setup
2
+
3
+ CodeBuddy (Tencent's AI coding assistant) reads the Anthropic-shaped
4
+ markdown skill bundle from its user-scope anchor `~/.codebuddy/`.
5
+ The package deploys via the universal skill convention; project-scope
6
+ bridge is not yet wired (Phase 2.4 anchor).
7
+
8
+ ## Prerequisites
9
+
10
+ - CodeBuddy extension / CLI.
11
+ - Node.js ≥ 18 for the install entrypoints.
12
+
13
+ ## Install
14
+
15
+ Global only (canonical scope):
16
+
17
+ ```bash
18
+ npx @event4u/agent-config init --tools=codebuddy --global
19
+ ```
20
+
21
+ Populates:
22
+
23
+ - `~/.codebuddy/skills/` — Anthropic-shaped skill bundle
24
+ - `~/.codebuddy/rules/` — kernel + tier-1/2 rules
25
+ - `~/.codebuddy/personas/` — review-lens personas
26
+
27
+ (Project-scope `--tools=codebuddy` is rejected with exit code 1 —
28
+ CodeBuddy has no documented project-discovery convention yet.)
29
+
30
+ ## How to use
31
+
32
+ - CodeBuddy reads the skill bundle from `~/.codebuddy/skills/` on
33
+ every session — no manual action required.
34
+ - Slash commands (`/work`, `/implement-ticket`, `/commit`,
35
+ `/create-pr`, …) ship inside the skill bundle as named skills.
36
+ Invoke them by name in chat.
37
+ - For repository-aware work, open the project root in CodeBuddy
38
+ so the agent can locate `AGENTS.md` and the project's own
39
+ `agents/` overlay.
40
+
41
+ ## Verification
42
+
43
+ ```bash
44
+ test -d ~/.codebuddy/skills
45
+ test -d ~/.codebuddy/rules
46
+ ```
47
+
48
+ In CodeBuddy: open the chat panel and ask *"What is this repo?"*
49
+ — the answer should cite the AGENTS.md emergency triage block
50
+ when the workspace is open.
51
+
52
+ ## Troubleshooting
53
+
54
+ | Symptom | Fix |
55
+ |---|---|
56
+ | Skills not listed | Re-run `npx @event4u/agent-config init --tools=codebuddy --global --force`. |
57
+ | `--tools=codebuddy` rejected | Add `--global` (CodeBuddy has global-only scope). |
58
+ | AGENTS.md not picked up | Open the project root in CodeBuddy; the agent reads `AGENTS.md` from the workspace. |
59
+
60
+ ## Cross-references
61
+
62
+ - [`AGENTS.md`](../../../AGENTS.md) — canonical agent self-orientation.
63
+ - [`docs/installation.md`](../../installation.md) — install matrix index.