@event4u/agent-config 5.0.0 → 5.1.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 (35) hide show
  1. package/.agent-src/contexts/execution/roadmap-process-loop.md +30 -4
  2. package/.agent-src/rules/linked-projects-onboarding-gate.md +82 -0
  3. package/.agent-src/rules/roadmap-progress-sync.md +39 -5
  4. package/.agent-src/scripts/update_roadmap_progress.py +63 -7
  5. package/.agent-src/skills/roadmap-management/SKILL.md +121 -21
  6. package/.agent-src/skills/roadmap-writing/SKILL.md +63 -0
  7. package/.agent-src/templates/agent-settings.md +16 -0
  8. package/.agent-src/templates/roadmaps.md +22 -1
  9. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +20 -3
  10. package/.claude-plugin/marketplace.json +1 -1
  11. package/CHANGELOG.md +33 -0
  12. package/README.md +1 -1
  13. package/dist/discovery/deprecation-report.md +1 -1
  14. package/dist/discovery/discovery-manifest.json +33 -11
  15. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  16. package/dist/discovery/discovery-manifest.summary.md +3 -3
  17. package/dist/discovery/orphan-report.md +1 -1
  18. package/dist/discovery/packs.json +6 -5
  19. package/dist/discovery/trust-report.md +3 -3
  20. package/dist/discovery/workspaces.json +5 -4
  21. package/dist/mcp/registry-manifest.json +2 -2
  22. package/dist/router.json +1 -1
  23. package/docs/architecture.md +1 -1
  24. package/docs/catalog.md +3 -2
  25. package/docs/decisions/ADR-032-linked-projects-scope.md +118 -0
  26. package/docs/decisions/INDEX.md +1 -0
  27. package/docs/getting-started.md +1 -1
  28. package/docs/guides/cross-repo-linked-projects.md +86 -0
  29. package/package.json +1 -1
  30. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  31. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  32. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  33. package/scripts/_lib/agent_settings.py +20 -3
  34. package/scripts/_lib/linked_projects.py +238 -0
  35. package/scripts/check_no_local_settings_committed.py +51 -0
@@ -61,6 +61,21 @@ from . import user_global_paths
61
61
  logger = logging.getLogger(__name__)
62
62
 
63
63
  DEFAULT_PROJECT_FILE = ".agent-settings.yml"
64
+ #: Per-machine override file. Gitignored. A SINGLE project-level file living
65
+ #: under ``agents/settings/`` (with the rest of the project's settings layer,
66
+ #: not at the repo root). It is appended as the deepest cascade layer so a
67
+ #: developer's local values override every committed ``.agent-settings.yml``
68
+ #: without ever being committed. Missing file is harmless (read as {}).
69
+ LOCAL_PROJECT_FILE = ".agent-settings.local.yml"
70
+ #: Project-relative directory the local override lives in.
71
+ LOCAL_PROJECT_SUBDIR = ("agents", "settings")
72
+
73
+
74
+ def _local_settings_path(project_root: Path) -> Path:
75
+ """Single local override: ``<root>/agents/settings/.agent-settings.local.yml``."""
76
+ return project_root.joinpath(*LOCAL_PROJECT_SUBDIR, LOCAL_PROJECT_FILE)
77
+
78
+
64
79
  DEFAULT_TEAM_FILE = ".agent-project-settings.yml"
65
80
  USER_GLOBAL_FILENAME = "agent-settings.yml"
66
81
 
@@ -415,12 +430,12 @@ def _resolve_cascade_paths(
415
430
  """
416
431
  if cwd is None:
417
432
  legacy = Path(project_path) if project_path else Path(DEFAULT_PROJECT_FILE)
418
- return [legacy]
433
+ return [legacy, _local_settings_path(legacy.parent)]
419
434
 
420
435
  root = find_project_root(cwd)
421
436
  if root is None:
422
437
  legacy = Path(project_path) if project_path else Path(DEFAULT_PROJECT_FILE)
423
- return [legacy]
438
+ return [legacy, _local_settings_path(legacy.parent)]
424
439
 
425
440
  cwd_resolved = cwd.resolve()
426
441
  # Build the chain root → … → cwd (shallowest first, deepest last).
@@ -435,7 +450,9 @@ def _resolve_cascade_paths(
435
450
  break
436
451
  cursor = parent
437
452
  chain.reverse()
438
- return [d / DEFAULT_PROJECT_FILE for d in chain]
453
+ # Committed cascade root cwd, then the single project-level local override
454
+ # under agents/settings/ as the deepest (winning) layer.
455
+ return [d / DEFAULT_PROJECT_FILE for d in chain] + [_local_settings_path(root)]
439
456
 
440
457
 
441
458
  def load_agent_settings(
@@ -6,7 +6,7 @@
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": "5.0.0",
9
+ "version": "5.1.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -802,6 +802,39 @@ our recommendation order, not its support status.
802
802
  > that forces a new era split (`# Era: 4.6.x`, etc.) — see
803
803
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
804
804
 
805
+ ## [5.1.0](https://github.com/event4u-app/agent-config/compare/5.0.0...5.1.0) (2026-05-29)
806
+
807
+ ### Features
808
+
809
+ * **roadmap-progress:** surface pending Iron Law 3 deferrals in dashboard ([2f21a41](https://github.com/event4u-app/agent-config/commit/2f21a41c0ae09e003ddad4cf9184f3d1d359e87b))
810
+ * **roadmaps:** document follow-up-roadmap shape + spawn procedure ([ea2b02f](https://github.com/event4u-app/agent-config/commit/ea2b02f34d895e0cdbb1a37d45897990a3282d0b))
811
+ * **roadmaps:** add Iron Law 3 — block silent archive of [~] deferred items ([3b3d4ed](https://github.com/event4u-app/agent-config/commit/3b3d4edce67e1c04419bd2daf9a2d4b6d0e68dbe))
812
+ * **rules:** add linked-projects-onboarding-gate (Option A, passive awareness) ([54cf6fc](https://github.com/event4u-app/agent-config/commit/54cf6fc16580f2d1084e96ae3d41b0b12fdb6c6e))
813
+ * **settings:** add gitignored .agent-settings.local.yml cascade layer ([ca4185d](https://github.com/event4u-app/agent-config/commit/ca4185d8cc4d462b92d00f1520da4dcb1bde3fcf))
814
+ * **linked-projects:** add IDE-attached sibling detector ([a0b4a99](https://github.com/event4u-app/agent-config/commit/a0b4a9968962343c7e768469008a6fa3144a736b))
815
+
816
+ ### Bug Fixes
817
+
818
+ * **refs:** reference local file as basename, not project-rooted path ([dc626c4](https://github.com/event4u-app/agent-config/commit/dc626c49fe68d958ee425d67adce7d71d21c7098))
819
+ * **settings:** re-mirror agent_settings.py to work_engine template copy ([6c1b7b1](https://github.com/event4u-app/agent-config/commit/6c1b7b1285ef3c15332f23c14a4e282c13dd6554))
820
+ * **rules:** root-relative doc reference in linked-projects rule ([2a85cd2](https://github.com/event4u-app/agent-config/commit/2a85cd26b38ad92342ccc0171754bff145305fcb))
821
+
822
+ ### Documentation
823
+
824
+ * **roadmap:** archive road-to-linked-projects-scope (all phases complete) ([e12b755](https://github.com/event4u-app/agent-config/commit/e12b755c938c210b234347d8f7f6905710a6eacf))
825
+ * **roadmap:** road-to-linked-projects-scope (GO, Option A) + dashboard ([1d8d822](https://github.com/event4u-app/agent-config/commit/1d8d822dd29f962492b92ac570f28f6df13d1eb8))
826
+ * **adr:** ADR-032 linked-projects scope GO (Option A) + cross-repo guide ([c49d53c](https://github.com/event4u-app/agent-config/commit/c49d53ce07ff5222b60f5d82a71226c459f7006f))
827
+
828
+ ### Refactoring
829
+
830
+ * **settings:** relocate local override to agents/settings/.agent-settings.local.yml ([4f887ae](https://github.com/event4u-app/agent-config/commit/4f887ae863b588f66efbfdc585e52123a3e23400))
831
+
832
+ ### Chores
833
+
834
+ * **index:** regenerate index + catalog for linked-projects rule ([66346cd](https://github.com/event4u-app/agent-config/commit/66346cd1f51795a2e42298b6b57452f39742ab79))
835
+
836
+ Tests: 5160 (+23 since 5.0.0)
837
+
805
838
  ## [5.0.0](https://github.com/event4u-app/agent-config/compare/4.9.0...5.0.0) (2026-05-29)
806
839
 
807
840
  ### BREAKING CHANGES
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![Smoke](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [![Public install smoke (3 OS × 2 Node)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [![npm](https://img.shields.io/npm/v/@event4u/agent-config?style=flat-square&label=npm&color=orange)](https://www.npmjs.com/package/@event4u/agent-config)
6
6
 
7
- [![Skills](https://img.shields.io/badge/Skills-219-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-77-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-135-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
7
+ [![Skills](https://img.shields.io/badge/Skills-219-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-78-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-135-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
8
8
 
9
9
  > **The Universal AI Agent OS for Founders, Content Creators, Consultants, Sales, Finance, and Engineering teams. Bring your own AI provider.**
10
10
 
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-05-29T09:55:52Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._
@@ -3642,6 +3642,28 @@
3642
3642
  "agent-config-maintainer"
3643
3643
  ]
3644
3644
  },
3645
+ {
3646
+ "category": "rule",
3647
+ "checksum": "sha256:a118756c8f27c6ac6208f7daa7a8f268327a3a7a182321e72b307ef9895b1602",
3648
+ "install": {
3649
+ "default": true,
3650
+ "removable": true
3651
+ },
3652
+ "lifecycle": "experimental",
3653
+ "packs": [
3654
+ "engineering-base"
3655
+ ],
3656
+ "path": "packages/core/.agent-src.uncondensed/rules/linked-projects-onboarding-gate.md",
3657
+ "trust": {
3658
+ "confidence": "medium",
3659
+ "human_review_required": false,
3660
+ "level": "experimental"
3661
+ },
3662
+ "workspaces": [
3663
+ "agent-config-maintainer",
3664
+ "engineering"
3665
+ ]
3666
+ },
3645
3667
  {
3646
3668
  "category": "rule",
3647
3669
  "checksum": "sha256:e337c1216712180fe34f80f24d491b70ecf954be7f471bc44ea5c49d0239f87a",
@@ -4045,7 +4067,7 @@
4045
4067
  },
4046
4068
  {
4047
4069
  "category": "rule",
4048
- "checksum": "sha256:8931776a842c82cc8654cea8301fe1db2480ee68cf4c554f229fec1661c1adf0",
4070
+ "checksum": "sha256:caa57c2d1735dc38b840016b035c4b6d695a2cbb72bc0f03734e0b6c183b87cc",
4049
4071
  "install": {
4050
4072
  "default": true,
4051
4073
  "removable": false
@@ -6555,7 +6577,7 @@
6555
6577
  },
6556
6578
  {
6557
6579
  "category": "skill",
6558
- "checksum": "sha256:9730402f814fd8cd11b5f89eed9bb282c34e2605d9340f49cc3dc1aa7d769702",
6580
+ "checksum": "sha256:7d6b54b9119fdf0d89672c856d60adccbaba8c39ea1c620dfdf9de36091718a2",
6559
6581
  "install": {
6560
6582
  "default": true,
6561
6583
  "removable": false
@@ -6577,7 +6599,7 @@
6577
6599
  },
6578
6600
  {
6579
6601
  "category": "skill",
6580
- "checksum": "sha256:ea17b7da5e8d5f2389c67cfeca7b4defd6fcc1f1d6690e92385867eaef061a7c",
6602
+ "checksum": "sha256:58078bd7f45b678069cdf9ce223bf0addad711eaa2a8c8f404612675af01ddc9",
6581
6603
  "install": {
6582
6604
  "default": true,
6583
6605
  "removable": false
@@ -9430,7 +9452,7 @@
9430
9452
  ]
9431
9453
  }
9432
9454
  ],
9433
- "checksum": "sha256:b20233a13035dc03b83f1ee9cc284e6b3ae5aad08a215a1e9fa6b78b6441f5e0",
9455
+ "checksum": "sha256:653636e679543062954910f794e458eb8424d7f2618b889a29969d21c74fcf0e",
9434
9456
  "documented_unassigned": [
9435
9457
  {
9436
9458
  "category": "template",
@@ -9543,10 +9565,10 @@
9543
9565
  "reason": "scaffold for new SKILL.md authoring"
9544
9566
  }
9545
9567
  ],
9546
- "generated_at": "2026-05-29T09:55:52Z",
9568
+ "generated_at": "2026-05-29T12:00:12Z",
9547
9569
  "packs": [
9548
9570
  {
9549
- "artefact_count": 84,
9571
+ "artefact_count": 85,
9550
9572
  "description": "Framework-neutral engineering hygiene — git, tests, reviews.",
9551
9573
  "human_review_required": 0,
9552
9574
  "id": "engineering-base",
@@ -9555,7 +9577,7 @@
9555
9577
  "trust_summary": {
9556
9578
  "advisory": 0,
9557
9579
  "core": 84,
9558
- "experimental": 0,
9580
+ "experimental": 1,
9559
9581
  "professional": 0,
9560
9582
  "restricted": 0
9561
9583
  },
@@ -9970,7 +9992,7 @@
9970
9992
  "stats": {
9971
9993
  "by_category": {
9972
9994
  "command": 135,
9973
- "rule": 77,
9995
+ "rule": 78,
9974
9996
  "skill": 219,
9975
9997
  "template": 1
9976
9998
  },
@@ -9978,17 +10000,17 @@
9978
10000
  "active": 424,
9979
10001
  "archived": 0,
9980
10002
  "deprecated": 0,
9981
- "experimental": 8
10003
+ "experimental": 9
9982
10004
  },
9983
10005
  "by_trust_level": {
9984
10006
  "advisory": 2,
9985
10007
  "core": 345,
9986
- "experimental": 6,
10008
+ "experimental": 7,
9987
10009
  "professional": 79,
9988
10010
  "restricted": 0
9989
10011
  },
9990
10012
  "documented_unassigned_count": 22,
9991
- "total_artefacts": 432,
10013
+ "total_artefacts": 433,
9992
10014
  "unassigned_count": 0
9993
10015
  },
9994
10016
  "unassigned": [],
@@ -1 +1 @@
1
- 5c725211d0782f5e6407a5f2a4366048482a70de656bda421e22f21b76f983b2 discovery-manifest.json
1
+ 6e36d1bdab54a687328a853b8cbeee77060ad359c006180c0109daa959eba603 discovery-manifest.json
@@ -1,8 +1,8 @@
1
1
  # Discovery Manifest — Summary
2
2
 
3
- - Generated: `2026-05-29T09:55:52Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Scanner: `d75eba636abb`
5
- - Artefacts: **432**
5
+ - Artefacts: **433**
6
6
  - Unassigned: **0**
7
7
 
8
8
  ## `engineering` — Engineering
@@ -11,7 +11,7 @@
11
11
 
12
12
  | Pack | Artefacts |
13
13
  |---|---|
14
- | `engineering-base` — Engineering Base | 84 |
14
+ | `engineering-base` — Engineering Base | 85 |
15
15
  | `php` — PHP | 6 |
16
16
  | `laravel` — Laravel | 25 |
17
17
  | `symfony` — Symfony | 3 |
@@ -1,6 +1,6 @@
1
1
  # Discovery — Orphan Report
2
2
 
3
- - Generated: `2026-05-29T09:55:52Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Orphan artefacts: **0**
5
5
 
6
6
  > An orphan is an artefact whose declared pack has no other members.
@@ -1,9 +1,9 @@
1
1
  {
2
- "checksum": "sha256:b20233a13035dc03b83f1ee9cc284e6b3ae5aad08a215a1e9fa6b78b6441f5e0",
3
- "generated_at": "2026-05-29T09:55:52Z",
2
+ "checksum": "sha256:653636e679543062954910f794e458eb8424d7f2618b889a29969d21c74fcf0e",
3
+ "generated_at": "2026-05-29T12:00:12Z",
4
4
  "packs": [
5
5
  {
6
- "artefact_count": 84,
6
+ "artefact_count": 85,
7
7
  "artefacts": [
8
8
  "packages/core/.agent-src.uncondensed/rules/commit-conventions.md",
9
9
  "packages/core/.agent-src.uncondensed/rules/commit-policy.md",
@@ -12,6 +12,7 @@
12
12
  "packages/core/.agent-src.uncondensed/rules/engineering-safety-floor.md",
13
13
  "packages/core/.agent-src.uncondensed/rules/git-history-discipline.md",
14
14
  "packages/core/.agent-src.uncondensed/rules/improve-before-implement.md",
15
+ "packages/core/.agent-src.uncondensed/rules/linked-projects-onboarding-gate.md",
15
16
  "packages/core/.agent-src.uncondensed/rules/minimal-safe-diff.md",
16
17
  "packages/core/.agent-src.uncondensed/rules/non-destructive-by-default.md",
17
18
  "packages/core/.agent-src.uncondensed/rules/scope-control.md",
@@ -94,12 +95,12 @@
94
95
  "active": 84,
95
96
  "archived": 0,
96
97
  "deprecated": 0,
97
- "experimental": 0
98
+ "experimental": 1
98
99
  },
99
100
  "by_trust_level": {
100
101
  "advisory": 0,
101
102
  "core": 84,
102
- "experimental": 0,
103
+ "experimental": 1,
103
104
  "professional": 0,
104
105
  "restricted": 0
105
106
  },
@@ -1,6 +1,6 @@
1
1
  # Discovery — Trust Report
2
2
 
3
- - Generated: `2026-05-29T09:55:52Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Workspaces tracked: **8**
5
5
  - Human-review-required artefacts: **2**
6
6
 
@@ -8,8 +8,8 @@
8
8
 
9
9
  | Workspace | core | professional | experimental | advisory | restricted |
10
10
  |---|---|---|---|---|---|
11
- | `agent-config-maintainer` | 252 | 0 | 0 | 0 | 0 |
12
- | `engineering` | 86 | 41 | 0 | 0 | 0 |
11
+ | `agent-config-maintainer` | 252 | 0 | 1 | 0 | 0 |
12
+ | `engineering` | 86 | 41 | 1 | 0 | 0 |
13
13
  | `finance` | 2 | 3 | 0 | 1 | 0 |
14
14
  | `founder` | 7 | 0 | 0 | 1 | 0 |
15
15
  | `gtm` | 0 | 12 | 0 | 0 | 0 |
@@ -1,10 +1,10 @@
1
1
  {
2
- "checksum": "sha256:b20233a13035dc03b83f1ee9cc284e6b3ae5aad08a215a1e9fa6b78b6441f5e0",
3
- "generated_at": "2026-05-29T09:55:52Z",
2
+ "checksum": "sha256:653636e679543062954910f794e458eb8424d7f2618b889a29969d21c74fcf0e",
3
+ "generated_at": "2026-05-29T12:00:12Z",
4
4
  "scanner_version": "d75eba636abb",
5
5
  "workspaces": [
6
6
  {
7
- "artefact_count": 125,
7
+ "artefact_count": 126,
8
8
  "default_packs": [
9
9
  "engineering-base"
10
10
  ],
@@ -23,7 +23,7 @@
23
23
  ],
24
24
  "packs": [
25
25
  {
26
- "artefact_count": 84,
26
+ "artefact_count": 85,
27
27
  "artefacts": [
28
28
  "packages/core/.agent-src.uncondensed/rules/commit-conventions.md",
29
29
  "packages/core/.agent-src.uncondensed/rules/commit-policy.md",
@@ -32,6 +32,7 @@
32
32
  "packages/core/.agent-src.uncondensed/rules/engineering-safety-floor.md",
33
33
  "packages/core/.agent-src.uncondensed/rules/git-history-discipline.md",
34
34
  "packages/core/.agent-src.uncondensed/rules/improve-before-implement.md",
35
+ "packages/core/.agent-src.uncondensed/rules/linked-projects-onboarding-gate.md",
35
36
  "packages/core/.agent-src.uncondensed/rules/minimal-safe-diff.md",
36
37
  "packages/core/.agent-src.uncondensed/rules/non-destructive-by-default.md",
37
38
  "packages/core/.agent-src.uncondensed/rules/scope-control.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "discovery": {
3
- "artefact_count": 432,
3
+ "artefact_count": 433,
4
4
  "scanner_version": "d75eba636abb"
5
5
  },
6
6
  "generated_at": "2026-05-29",
@@ -9,7 +9,7 @@
9
9
  "homepage": "https://github.com/event4u-app/agent-config#readme",
10
10
  "name": "@event4u/agent-config",
11
11
  "repository": "https://github.com/event4u-app/agent-config",
12
- "version": "5.0.0"
12
+ "version": "5.1.0"
13
13
  },
14
14
  "registries": [
15
15
  {
package/dist/router.json CHANGED
@@ -1 +1 @@
1
- {"schema_version":1,"kernel":["agent-authority","ask-when-uncertain","commit-policy","direct-answers","language-and-tone","no-cheap-questions","non-destructive-by-default","scope-control","user-interrupt-priority","verify-before-complete"],"tier_1":[{"id":"architecture","triggers":[{"keyword":"controller"},{"keyword":"service"},{"keyword":"module"},{"intent":"structural decision"}],"routes_to":[]},{"id":"artifact-engagement-recording","triggers":[{"phrase":"/implement-ticket"},{"phrase":"/work"},{"keyword":"telemetry"}],"routes_to":["contract:artifact-engagement-flow"]},{"id":"augment-source-of-truth","triggers":[{"path_prefix":".agent-src/"},{"path_prefix":".augment/"},{"path_prefix":".claude/"},{"path_prefix":".cursor/"}],"routes_to":[]},{"id":"autonomous-execution","triggers":[{"intent":"trivial workflow question"},{"intent":"autonomy mode"},{"keyword":"personal.autonomy"}],"routes_to":[]},{"id":"command-suggestion-policy","triggers":[{"phrase":"free-form prompt"},{"phrase":"command suggestion"}],"routes_to":["contract:command-suggestion-flow"]},{"id":"context-hygiene","triggers":[{"intent":"long conversation"},{"intent":"tool loop"},{"intent":"fresh chat"},{"keyword":"3-failure"}],"routes_to":[]},{"id":"copilot-routing","triggers":[{"keyword":"copilot"},{"phrase":"copilot-instructions"},{"phrase":"copilot pr review"}],"routes_to":["skill:copilot-config"]},{"id":"devcontainer-routing","triggers":[{"keyword":"devcontainer"},{"keyword":"codespaces"},{"keyword":"codespace"},{"phrase":"devcontainer.json"}],"routes_to":["skill:devcontainer"]},{"id":"docker-commands","triggers":[{"keyword":"docker"},{"keyword":"artisan"},{"keyword":"composer"},{"phrase":"inside the container"}],"routes_to":["skill:docker"]},{"id":"fast-path-marker-visibility","triggers":[{"keyword":"low-impact council"},{"keyword":"fast-path"},{"keyword":"Resolved via low-impact council"},{"keyword":"low_impact"},{"intent":"low-impact council dispatch"}],"routes_to":[]},{"id":"laravel-routing","triggers":[{"keyword":"laravel"},{"keyword":"artisan"},{"keyword":"eloquent"},{"keyword":"FormRequest"}],"routes_to":["skill:laravel"]},{"id":"low-impact-corpus-privacy-floor","triggers":[{"path_prefix":"agents/decisions/low-impact-decisions"},{"keyword":"low-impact-decisions"},{"keyword":"low-impact corpus"},{"keyword":"learn-low-impact"}],"routes_to":[]},{"id":"no-attribution-footers","triggers":[{"intent":"PR body"},{"intent":"commit message"},{"intent":"Jira comment"},{"keyword":"co-authored"}],"routes_to":[]},{"id":"no-decorative-emojis-in-git-surfaces","triggers":[{"intent":"PR title"},{"intent":"PR body"},{"intent":"commit message"},{"intent":"issue title"},{"intent":"post PR comment"},{"keyword":"gh pr create"},{"keyword":"git commit"}],"routes_to":[]},{"id":"no-roadmap-references","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"agents/runtime/council/questions/"},{"path_prefix":"agents/runtime/council/responses/"},{"path_prefix":"agents/runtime/council/sessions/"},{"intent":"link from stable artifact"},{"intent":"link to council artefact"}],"routes_to":["skill:ai-council"]},{"id":"onboarding-gate","triggers":[{"phrase":"first turn"},{"keyword":"onboarding"},{"path_prefix":".agent-settings.yml"}],"routes_to":[]},{"id":"php-coding","triggers":[{"file_pattern":"*.php"},{"keyword":"phpstan"},{"keyword":"ecs"}],"routes_to":["guideline:php/php-coding-patterns"]},{"id":"roadmap-progress-sync","triggers":[{"path_prefix":"agents/roadmaps/"},{"command":"/roadmap:process-step"},{"command":"/roadmap:process-phase"},{"command":"/roadmap:process-full"}],"routes_to":["guideline:agent-infra/roadmap-progress-mechanics"]},{"id":"skill-quality","triggers":[{"path_prefix":".agent-src.uncondensed/skills/"}],"routes_to":["guideline:agent-infra/skill-quality-checklist"]},{"id":"slash-command-routing-policy","triggers":[{"keyword":"/create-pr"},{"keyword":"/commit"},{"keyword":"/fix-ci"},{"phrase":"slash command"}],"routes_to":["skill:command-routing"]},{"id":"symfony-routing","triggers":[{"keyword":"symfony"},{"keyword":"doctrine"},{"keyword":"twig"},{"keyword":"messenger"}],"routes_to":["skill:symfony-workflow"]},{"id":"telegraph-speak","triggers":[{"intent":"any reply"}],"routes_to":[]},{"id":"user-interaction","triggers":[{"intent":"ask user a question"},{"intent":"numbered options"},{"intent":"summarizing progress"}],"routes_to":[]}],"tier_2":[{"id":"artifact-drafting-protocol","triggers":[{"intent":"create new skill"},{"intent":"create new rule"},{"intent":"create new command"},{"intent":"create new guideline"}],"routes_to":[]},{"id":"augment-edit-discipline","triggers":[{"path_prefix":".augment/"},{"path_prefix":".agent-src.uncondensed/"},{"keyword":"portable"},{"keyword":"rename"},{"keyword":"delete"}],"routes_to":["guideline:augment-portability-patterns","skill:agent-docs-writing"]},{"id":"cli-output-handling","triggers":[{"keyword":"git"},{"keyword":"phpstan"},{"keyword":"rector"},{"keyword":"phpunit"},{"keyword":"composer"}],"routes_to":["skill:rtk-output-filtering"]},{"id":"commit-conventions","triggers":[{"keyword":"commit"},{"keyword":"branch"},{"phrase":"conventional commits"}],"routes_to":["skill:conventional-commits-writing"]},{"id":"domain-adoption-policy","triggers":[{"intent":"adopt new domain"},{"intent":"harvest new domain track"},{"intent":"open a domain plate"},{"keyword":"mobile track"},{"keyword":"ml track"},{"keyword":"blockchain track"},{"path_prefix":".agent-src.uncondensed/skills/"}],"routes_to":[]},{"id":"domain-safety-disclaimer","triggers":[{"keyword":"legal brief"},{"keyword":"contract redline"},{"keyword":"terms of service"},{"keyword":"privacy policy"},{"keyword":"diagnosis"},{"keyword":"symptoms"},{"keyword":"dosage"},{"keyword":"medication"},{"keyword":"investment memo"},{"keyword":"valuation"},{"keyword":"DCF"},{"keyword":"tax position"},{"keyword":"strategic recommendation"},{"keyword":"board memo"},{"keyword":"executive summary"},{"phrase":"review this contract"},{"phrase":"is this symptom"},{"phrase":"should I invest"},{"phrase":"what should we do"}],"routes_to":["skill:contracts-cognition","skill:dcf-modeling","skill:decision-record","skill:privacy-review","skill:scenario-modeling","skill:stakeholder-tradeoff"]},{"id":"domain-safety-pii","triggers":[{"keyword":"support macro"},{"keyword":"ticket response"},{"keyword":"help desk"},{"keyword":"Zendesk"},{"keyword":"Intercom"},{"keyword":"testimonial"},{"keyword":"case study"},{"keyword":"customer story"},{"keyword":"candidate"},{"keyword":"interview notes"},{"keyword":"scorecard"},{"keyword":"rejection email"},{"keyword":"offer letter"},{"keyword":"invoice"},{"keyword":"accounts receivable"},{"keyword":"accounts payable"},{"keyword":"finance memo"},{"keyword":"log"},{"keyword":"logger"},{"keyword":"Sentry"},{"keyword":"Datadog"},{"keyword":"structured log"},{"keyword":"export to CSV"},{"keyword":"data export"},{"keyword":"partner integration"},{"phrase":"draft a response to"},{"phrase":"marketing email featuring"},{"phrase":"draft feedback for"},{"phrase":"log the user"},{"phrase":"send them the spreadsheet"}],"routes_to":["skill:data-handling-judgment","skill:logging-monitoring","skill:privacy-review","skill:secrets-management"]},{"id":"domain-safety-retention","triggers":[{"keyword":"retention policy"},{"keyword":"data retention"},{"keyword":"record retention"},{"keyword":"ticket retention"},{"keyword":"CRM retention"},{"keyword":"delete financial"},{"keyword":"purge invoice"},{"keyword":"DSAR"},{"keyword":"data subject request"},{"keyword":"right to be forgotten"},{"phrase":"how long should we keep"},{"phrase":"when can we delete"},{"phrase":"delete customer data"},{"phrase":"how long do we keep tickets"}],"routes_to":["skill:data-handling-judgment","skill:privacy-review"]},{"id":"downstream-changes","triggers":[{"intent":"after code edit"},{"keyword":"callers"},{"keyword":"imports"},{"keyword":"downstream"}],"routes_to":[]},{"id":"engineering-safety-floor","triggers":[{"keyword":"production"},{"keyword":"deploy"},{"keyword":"migration"},{"keyword":"schema change"},{"keyword":"DROP TABLE"},{"keyword":"TRUNCATE"},{"keyword":"force push"},{"keyword":"rebase main"},{"keyword":"rollback"},{"keyword":"secrets rotation"},{"keyword":"IAM"},{"keyword":"DNS"},{"keyword":"terraform apply"},{"keyword":"kubectl apply"},{"phrase":"ship to prod"},{"phrase":"deploy to production"},{"phrase":"merge to main"},{"phrase":"release this"}],"routes_to":["skill:launch-readiness","skill:threat-modeling"]},{"id":"external-reference-deep-dive","triggers":[{"intent":"look at how X does it"},{"intent":"compare with reference repo"},{"intent":"use as template / vorlage"},{"intent":"wie macht es X"},{"intent":"vergleiche mit Y"},{"intent":"schau dir Z an"},{"intent":"study this competitor"},{"keyword":"github.com/"},{"keyword":"source of truth"},{"phrase":"reference repo"}],"routes_to":[]},{"id":"finance-safety-floor","triggers":[{"keyword":"runway"},{"keyword":"burn"},{"keyword":"valuation"},{"keyword":"DCF"},{"keyword":"IRR"},{"keyword":"MOIC"},{"keyword":"LTV"},{"keyword":"CAC"},{"keyword":"payback"},{"keyword":"sensitivity"},{"keyword":"fundraise"},{"keyword":"term sheet"},{"keyword":"dilution"},{"keyword":"NRR"},{"keyword":"EBITDA"},{"keyword":"free cash flow"},{"phrase":"what's it worth"},{"phrase":"how long do we have"},{"phrase":"should we raise"},{"phrase":"model the scenarios"}],"routes_to":["skill:dcf-modeling","skill:forecasting","skill:runway-cognition","skill:scenario-modeling","skill:unit-economics-modeling"]},{"id":"framework-neutrality-in-generic-skills","triggers":[{"path_prefix":".agent-src.uncondensed/skills/"},{"path_prefix":".agent-src.uncondensed/rules/"},{"path_prefix":".agent-src.uncondensed/commands/"},{"keyword":"FormRequest"},{"keyword":"PHPStan"},{"keyword":"php artisan"},{"keyword":"composer.json"},{"keyword":"Eloquent"},{"keyword":"Pest"},{"keyword":"Blade"},{"keyword":"vendor/bin"},{"keyword":"Artisan"},{"keyword":"Rector"},{"phrase":"every controller"},{"phrase":"all controllers"},{"phrase":"generic skill"}],"routes_to":[]},{"id":"git-history-discipline","triggers":[{"intent":"rebase the branch"},{"intent":"squash commits"},{"intent":"clean up commit history"},{"intent":"fold this into the previous commit"},{"intent":"tidy history after pushing"},{"keyword":"git rebase"},{"keyword":"fixup"},{"keyword":"--amend"},{"keyword":"force-push"},{"keyword":"--force-with-lease"},{"keyword":"squash-merge"},{"phrase":"branch diverged"},{"phrase":"pull --rebase failed"},{"phrase":"ahead and behind"}],"routes_to":["skill:git-workflow"]},{"id":"improve-before-implement","triggers":[{"intent":"implement feature"},{"intent":"architectural change"},{"keyword":"refactor"}],"routes_to":[]},{"id":"invite-challenge","triggers":[{"intent":"complex plan"},{"intent":"design decision"},{"intent":"architectural plan"},{"intent":"multi-step implementation"},{"keyword":"plan"},{"keyword":"design"},{"keyword":"architecture"},{"keyword":"approach"}],"routes_to":[]},{"id":"laravel-translations","triggers":[{"path_prefix":"lang/"},{"keyword":"translation"},{"keyword":"__()"},{"keyword":"trans("}],"routes_to":["skill:laravel"]},{"id":"markdown-safe-codeblocks","triggers":[{"intent":"markdown with code blocks"},{"keyword":"triple backticks"},{"file_pattern":"*.md"}],"routes_to":[]},{"id":"media-governance-routing","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"deepfake"},{"keyword":"voice clone"},{"keyword":"voice cloning"},{"keyword":"likeness"},{"keyword":"brand impersonation"},{"phrase":"in the style of"},{"phrase":"in the voice of"},{"phrase":"as [public figure]"},{"phrase":"impersonate"}],"routes_to":[]},{"id":"minimal-safe-diff","triggers":[{"intent":"writing a diff"},{"intent":"reviewing a diff"},{"keyword":"drive-by"}],"routes_to":[]},{"id":"missing-tool-handling","triggers":[{"keyword":"command not found"},{"keyword":"not installed"},{"intent":"install tool"}],"routes_to":[]},{"id":"model-recommendation","triggers":[{"phrase":"switch task"},{"phrase":"new task"},{"phrase":"which model"}],"routes_to":["command:set-cost-profile"]},{"id":"no-pr-progress-comments","triggers":[{"intent":"post PR comment"},{"intent":"PR status update"},{"intent":"CI fix progress"},{"keyword":"gh pr comment"},{"keyword":"PullRequestComment"}],"routes_to":[]},{"id":"persona-governance","triggers":[{"path_prefix":".agent-src.uncondensed/personas/"},{"path_prefix":".agent-src/personas/"},{"keyword":"persona"},{"keyword":"personas"},{"phrase":"new persona"},{"phrase":"add a persona"},{"phrase":"specialist persona"},{"phrase":"review lens"}],"routes_to":["contract:persona-schema"]},{"id":"preservation-guard","triggers":[{"intent":"merge skill"},{"intent":"condense rule"},{"intent":"refactor artifact"},{"keyword":"Iron Law"}],"routes_to":[]},{"id":"provider-lifecycle-discipline","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"ai-video"},{"keyword":"ai-image"},{"keyword":"ai-audio"},{"keyword":"adapter"},{"keyword":"provider"},{"path_prefix":"scripts/ai-video/adapters/"},{"path_prefix":"agents/.ai-video.xml"},{"phrase":"lifecycle"},{"phrase":"default provider"}],"routes_to":["contract:provider-lifecycle"]},{"id":"reviewer-awareness","triggers":[{"keyword":"reviewer"},{"phrase":"suggest reviewers"},{"phrase":"risk hotspot"},{"phrase":"ownership map"}],"routes_to":["skill:review-routing"]},{"id":"roadmap-ci-steps-policy","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"{module_root}/"},{"keyword":"task ci"},{"keyword":"make test"},{"keyword":"npm run check"},{"keyword":"pnpm run check"},{"keyword":"yarn check"},{"keyword":"composer test"},{"phrase":"run the quality pipeline"},{"phrase":"run task ci"},{"phrase":"run the full ci"}],"routes_to":[]},{"id":"role-mode-adherence","triggers":[{"keyword":"active_role"},{"keyword":"role-mode"},{"intent":"mode marker"}],"routes_to":[]},{"id":"rule-type-governance","triggers":[{"path_prefix":".agent-src.uncondensed/rules/"}],"routes_to":["guideline:agent-infra/rule-type-governance"]},{"id":"runtime-safety","triggers":[{"keyword":"execution"},{"keyword":"automated"},{"keyword":"assisted"},{"keyword":"handler"}],"routes_to":[]},{"id":"security-sensitive-stop","triggers":[{"keyword":"auth"},{"keyword":"billing"},{"keyword":"tenant"},{"keyword":"secret"},{"keyword":"webhook"}],"routes_to":[]},{"id":"skill-improvement-trigger","triggers":[{"phrase":"after completing"},{"keyword":"improvement"},{"keyword":"pipeline"}],"routes_to":["skill:skill-improvement-pipeline"]},{"id":"strategy-safety-floor","triggers":[{"keyword":"vision"},{"keyword":"positioning"},{"keyword":"moat"},{"keyword":"competitive"},{"keyword":"market entry"},{"keyword":"OKR"},{"keyword":"build vs buy"},{"keyword":"buy vs partner"},{"keyword":"beachhead"},{"keyword":"GTM"},{"keyword":"category"},{"keyword":"where to play"},{"keyword":"where not to play"},{"phrase":"what's our strategy"},{"phrase":"should we enter"},{"phrase":"what's our moat"},{"phrase":"where should we focus"},{"phrase":"should we reorg"}],"routes_to":["skill:build-buy-partner","skill:competitive-moat-analysis","skill:market-entry-analysis","skill:okr-tree-modeling","skill:positioning-strategy","skill:vision-articulation"]},{"id":"think-before-action","triggers":[{"intent":"before coding"},{"intent":"before debugging"},{"intent":"before modifying"}],"routes_to":[]},{"id":"token-efficiency","triggers":[{"intent":"verbose CLI output"},{"intent":"fetching logs"},{"keyword":"minimize tool calls"}],"routes_to":[]},{"id":"token-optimizer-maintenance","triggers":[{"keyword":"cli-output-handling"},{"keyword":"rtk-output-filtering"},{"keyword":"token-efficiency"},{"keyword":"agent-handoff"},{"keyword":"markitdown"},{"keyword":"token-optimizer"}],"routes_to":["skill:token-optimizer"]},{"id":"tool-safety","triggers":[{"keyword":"allowed_tools"},{"keyword":"tool registry"},{"intent":"external API"}],"routes_to":[]},{"id":"ui-audit-gate","triggers":[{"path_prefix":"resources/views/"},{"path_prefix":"resources/js/"},{"keyword":"component"},{"keyword":"design token"}],"routes_to":["skill:existing-ui-audit"]},{"id":"upstream-proposal","triggers":[{"phrase":"after creating"},{"phrase":"after improving"},{"keyword":"upstream"}],"routes_to":["skill:upstream-contribute"]}],"profiles":{"minimal":["__kernel__"],"balanced":["__kernel__","__tier_1__"],"full":["__kernel__","__tier_1__","__tier_2__"]}}
1
+ {"schema_version":1,"kernel":["agent-authority","ask-when-uncertain","commit-policy","direct-answers","language-and-tone","no-cheap-questions","non-destructive-by-default","scope-control","user-interrupt-priority","verify-before-complete"],"tier_1":[{"id":"architecture","triggers":[{"keyword":"controller"},{"keyword":"service"},{"keyword":"module"},{"intent":"structural decision"}],"routes_to":[]},{"id":"artifact-engagement-recording","triggers":[{"phrase":"/implement-ticket"},{"phrase":"/work"},{"keyword":"telemetry"}],"routes_to":["contract:artifact-engagement-flow"]},{"id":"augment-source-of-truth","triggers":[{"path_prefix":".agent-src/"},{"path_prefix":".augment/"},{"path_prefix":".claude/"},{"path_prefix":".cursor/"}],"routes_to":[]},{"id":"autonomous-execution","triggers":[{"intent":"trivial workflow question"},{"intent":"autonomy mode"},{"keyword":"personal.autonomy"}],"routes_to":[]},{"id":"command-suggestion-policy","triggers":[{"phrase":"free-form prompt"},{"phrase":"command suggestion"}],"routes_to":["contract:command-suggestion-flow"]},{"id":"context-hygiene","triggers":[{"intent":"long conversation"},{"intent":"tool loop"},{"intent":"fresh chat"},{"keyword":"3-failure"}],"routes_to":[]},{"id":"copilot-routing","triggers":[{"keyword":"copilot"},{"phrase":"copilot-instructions"},{"phrase":"copilot pr review"}],"routes_to":["skill:copilot-config"]},{"id":"devcontainer-routing","triggers":[{"keyword":"devcontainer"},{"keyword":"codespaces"},{"keyword":"codespace"},{"phrase":"devcontainer.json"}],"routes_to":["skill:devcontainer"]},{"id":"docker-commands","triggers":[{"keyword":"docker"},{"keyword":"artisan"},{"keyword":"composer"},{"phrase":"inside the container"}],"routes_to":["skill:docker"]},{"id":"fast-path-marker-visibility","triggers":[{"keyword":"low-impact council"},{"keyword":"fast-path"},{"keyword":"Resolved via low-impact council"},{"keyword":"low_impact"},{"intent":"low-impact council dispatch"}],"routes_to":[]},{"id":"laravel-routing","triggers":[{"keyword":"laravel"},{"keyword":"artisan"},{"keyword":"eloquent"},{"keyword":"FormRequest"}],"routes_to":["skill:laravel"]},{"id":"low-impact-corpus-privacy-floor","triggers":[{"path_prefix":"agents/decisions/low-impact-decisions"},{"keyword":"low-impact-decisions"},{"keyword":"low-impact corpus"},{"keyword":"learn-low-impact"}],"routes_to":[]},{"id":"no-attribution-footers","triggers":[{"intent":"PR body"},{"intent":"commit message"},{"intent":"Jira comment"},{"keyword":"co-authored"}],"routes_to":[]},{"id":"no-decorative-emojis-in-git-surfaces","triggers":[{"intent":"PR title"},{"intent":"PR body"},{"intent":"commit message"},{"intent":"issue title"},{"intent":"post PR comment"},{"keyword":"gh pr create"},{"keyword":"git commit"}],"routes_to":[]},{"id":"no-roadmap-references","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"agents/runtime/council/questions/"},{"path_prefix":"agents/runtime/council/responses/"},{"path_prefix":"agents/runtime/council/sessions/"},{"intent":"link from stable artifact"},{"intent":"link to council artefact"}],"routes_to":["skill:ai-council"]},{"id":"onboarding-gate","triggers":[{"phrase":"first turn"},{"keyword":"onboarding"},{"path_prefix":".agent-settings.yml"}],"routes_to":[]},{"id":"php-coding","triggers":[{"file_pattern":"*.php"},{"keyword":"phpstan"},{"keyword":"ecs"}],"routes_to":["guideline:php/php-coding-patterns"]},{"id":"roadmap-progress-sync","triggers":[{"path_prefix":"agents/roadmaps/"},{"command":"/roadmap:process-step"},{"command":"/roadmap:process-phase"},{"command":"/roadmap:process-full"}],"routes_to":["guideline:agent-infra/roadmap-progress-mechanics"]},{"id":"skill-quality","triggers":[{"path_prefix":".agent-src.uncondensed/skills/"}],"routes_to":["guideline:agent-infra/skill-quality-checklist"]},{"id":"slash-command-routing-policy","triggers":[{"keyword":"/create-pr"},{"keyword":"/commit"},{"keyword":"/fix-ci"},{"phrase":"slash command"}],"routes_to":["skill:command-routing"]},{"id":"symfony-routing","triggers":[{"keyword":"symfony"},{"keyword":"doctrine"},{"keyword":"twig"},{"keyword":"messenger"}],"routes_to":["skill:symfony-workflow"]},{"id":"telegraph-speak","triggers":[{"intent":"any reply"}],"routes_to":[]},{"id":"user-interaction","triggers":[{"intent":"ask user a question"},{"intent":"numbered options"},{"intent":"summarizing progress"}],"routes_to":[]}],"tier_2":[{"id":"artifact-drafting-protocol","triggers":[{"intent":"create new skill"},{"intent":"create new rule"},{"intent":"create new command"},{"intent":"create new guideline"}],"routes_to":[]},{"id":"augment-edit-discipline","triggers":[{"path_prefix":".augment/"},{"path_prefix":".agent-src.uncondensed/"},{"keyword":"portable"},{"keyword":"rename"},{"keyword":"delete"}],"routes_to":["guideline:augment-portability-patterns","skill:agent-docs-writing"]},{"id":"cli-output-handling","triggers":[{"keyword":"git"},{"keyword":"phpstan"},{"keyword":"rector"},{"keyword":"phpunit"},{"keyword":"composer"}],"routes_to":["skill:rtk-output-filtering"]},{"id":"commit-conventions","triggers":[{"keyword":"commit"},{"keyword":"branch"},{"phrase":"conventional commits"}],"routes_to":["skill:conventional-commits-writing"]},{"id":"domain-adoption-policy","triggers":[{"intent":"adopt new domain"},{"intent":"harvest new domain track"},{"intent":"open a domain plate"},{"keyword":"mobile track"},{"keyword":"ml track"},{"keyword":"blockchain track"},{"path_prefix":".agent-src.uncondensed/skills/"}],"routes_to":[]},{"id":"domain-safety-disclaimer","triggers":[{"keyword":"legal brief"},{"keyword":"contract redline"},{"keyword":"terms of service"},{"keyword":"privacy policy"},{"keyword":"diagnosis"},{"keyword":"symptoms"},{"keyword":"dosage"},{"keyword":"medication"},{"keyword":"investment memo"},{"keyword":"valuation"},{"keyword":"DCF"},{"keyword":"tax position"},{"keyword":"strategic recommendation"},{"keyword":"board memo"},{"keyword":"executive summary"},{"phrase":"review this contract"},{"phrase":"is this symptom"},{"phrase":"should I invest"},{"phrase":"what should we do"}],"routes_to":["skill:contracts-cognition","skill:dcf-modeling","skill:decision-record","skill:privacy-review","skill:scenario-modeling","skill:stakeholder-tradeoff"]},{"id":"domain-safety-pii","triggers":[{"keyword":"support macro"},{"keyword":"ticket response"},{"keyword":"help desk"},{"keyword":"Zendesk"},{"keyword":"Intercom"},{"keyword":"testimonial"},{"keyword":"case study"},{"keyword":"customer story"},{"keyword":"candidate"},{"keyword":"interview notes"},{"keyword":"scorecard"},{"keyword":"rejection email"},{"keyword":"offer letter"},{"keyword":"invoice"},{"keyword":"accounts receivable"},{"keyword":"accounts payable"},{"keyword":"finance memo"},{"keyword":"log"},{"keyword":"logger"},{"keyword":"Sentry"},{"keyword":"Datadog"},{"keyword":"structured log"},{"keyword":"export to CSV"},{"keyword":"data export"},{"keyword":"partner integration"},{"phrase":"draft a response to"},{"phrase":"marketing email featuring"},{"phrase":"draft feedback for"},{"phrase":"log the user"},{"phrase":"send them the spreadsheet"}],"routes_to":["skill:data-handling-judgment","skill:logging-monitoring","skill:privacy-review","skill:secrets-management"]},{"id":"domain-safety-retention","triggers":[{"keyword":"retention policy"},{"keyword":"data retention"},{"keyword":"record retention"},{"keyword":"ticket retention"},{"keyword":"CRM retention"},{"keyword":"delete financial"},{"keyword":"purge invoice"},{"keyword":"DSAR"},{"keyword":"data subject request"},{"keyword":"right to be forgotten"},{"phrase":"how long should we keep"},{"phrase":"when can we delete"},{"phrase":"delete customer data"},{"phrase":"how long do we keep tickets"}],"routes_to":["skill:data-handling-judgment","skill:privacy-review"]},{"id":"downstream-changes","triggers":[{"intent":"after code edit"},{"keyword":"callers"},{"keyword":"imports"},{"keyword":"downstream"}],"routes_to":[]},{"id":"engineering-safety-floor","triggers":[{"keyword":"production"},{"keyword":"deploy"},{"keyword":"migration"},{"keyword":"schema change"},{"keyword":"DROP TABLE"},{"keyword":"TRUNCATE"},{"keyword":"force push"},{"keyword":"rebase main"},{"keyword":"rollback"},{"keyword":"secrets rotation"},{"keyword":"IAM"},{"keyword":"DNS"},{"keyword":"terraform apply"},{"keyword":"kubectl apply"},{"phrase":"ship to prod"},{"phrase":"deploy to production"},{"phrase":"merge to main"},{"phrase":"release this"}],"routes_to":["skill:launch-readiness","skill:threat-modeling"]},{"id":"external-reference-deep-dive","triggers":[{"intent":"look at how X does it"},{"intent":"compare with reference repo"},{"intent":"use as template / vorlage"},{"intent":"wie macht es X"},{"intent":"vergleiche mit Y"},{"intent":"schau dir Z an"},{"intent":"study this competitor"},{"keyword":"github.com/"},{"keyword":"source of truth"},{"phrase":"reference repo"}],"routes_to":[]},{"id":"finance-safety-floor","triggers":[{"keyword":"runway"},{"keyword":"burn"},{"keyword":"valuation"},{"keyword":"DCF"},{"keyword":"IRR"},{"keyword":"MOIC"},{"keyword":"LTV"},{"keyword":"CAC"},{"keyword":"payback"},{"keyword":"sensitivity"},{"keyword":"fundraise"},{"keyword":"term sheet"},{"keyword":"dilution"},{"keyword":"NRR"},{"keyword":"EBITDA"},{"keyword":"free cash flow"},{"phrase":"what's it worth"},{"phrase":"how long do we have"},{"phrase":"should we raise"},{"phrase":"model the scenarios"}],"routes_to":["skill:dcf-modeling","skill:forecasting","skill:runway-cognition","skill:scenario-modeling","skill:unit-economics-modeling"]},{"id":"framework-neutrality-in-generic-skills","triggers":[{"path_prefix":".agent-src.uncondensed/skills/"},{"path_prefix":".agent-src.uncondensed/rules/"},{"path_prefix":".agent-src.uncondensed/commands/"},{"keyword":"FormRequest"},{"keyword":"PHPStan"},{"keyword":"php artisan"},{"keyword":"composer.json"},{"keyword":"Eloquent"},{"keyword":"Pest"},{"keyword":"Blade"},{"keyword":"vendor/bin"},{"keyword":"Artisan"},{"keyword":"Rector"},{"phrase":"every controller"},{"phrase":"all controllers"},{"phrase":"generic skill"}],"routes_to":[]},{"id":"git-history-discipline","triggers":[{"intent":"rebase the branch"},{"intent":"squash commits"},{"intent":"clean up commit history"},{"intent":"fold this into the previous commit"},{"intent":"tidy history after pushing"},{"keyword":"git rebase"},{"keyword":"fixup"},{"keyword":"--amend"},{"keyword":"force-push"},{"keyword":"--force-with-lease"},{"keyword":"squash-merge"},{"phrase":"branch diverged"},{"phrase":"pull --rebase failed"},{"phrase":"ahead and behind"}],"routes_to":["skill:git-workflow"]},{"id":"improve-before-implement","triggers":[{"intent":"implement feature"},{"intent":"architectural change"},{"keyword":"refactor"}],"routes_to":[]},{"id":"invite-challenge","triggers":[{"intent":"complex plan"},{"intent":"design decision"},{"intent":"architectural plan"},{"intent":"multi-step implementation"},{"keyword":"plan"},{"keyword":"design"},{"keyword":"architecture"},{"keyword":"approach"}],"routes_to":[]},{"id":"laravel-translations","triggers":[{"path_prefix":"lang/"},{"keyword":"translation"},{"keyword":"__()"},{"keyword":"trans("}],"routes_to":["skill:laravel"]},{"id":"linked-projects-onboarding-gate","triggers":[{"intent":"work across two projects"},{"intent":"sibling repository"},{"keyword":"linked project"},{"keyword":"cross-repo"},{"keyword":"sibling repo"},{"path_prefix":".idea/modules.xml"},{"path_prefix":".idea/vcs.xml"}],"routes_to":[]},{"id":"markdown-safe-codeblocks","triggers":[{"intent":"markdown with code blocks"},{"keyword":"triple backticks"},{"file_pattern":"*.md"}],"routes_to":[]},{"id":"media-governance-routing","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"deepfake"},{"keyword":"voice clone"},{"keyword":"voice cloning"},{"keyword":"likeness"},{"keyword":"brand impersonation"},{"phrase":"in the style of"},{"phrase":"in the voice of"},{"phrase":"as [public figure]"},{"phrase":"impersonate"}],"routes_to":[]},{"id":"minimal-safe-diff","triggers":[{"intent":"writing a diff"},{"intent":"reviewing a diff"},{"keyword":"drive-by"}],"routes_to":[]},{"id":"missing-tool-handling","triggers":[{"keyword":"command not found"},{"keyword":"not installed"},{"intent":"install tool"}],"routes_to":[]},{"id":"model-recommendation","triggers":[{"phrase":"switch task"},{"phrase":"new task"},{"phrase":"which model"}],"routes_to":["command:set-cost-profile"]},{"id":"no-pr-progress-comments","triggers":[{"intent":"post PR comment"},{"intent":"PR status update"},{"intent":"CI fix progress"},{"keyword":"gh pr comment"},{"keyword":"PullRequestComment"}],"routes_to":[]},{"id":"persona-governance","triggers":[{"path_prefix":".agent-src.uncondensed/personas/"},{"path_prefix":".agent-src/personas/"},{"keyword":"persona"},{"keyword":"personas"},{"phrase":"new persona"},{"phrase":"add a persona"},{"phrase":"specialist persona"},{"phrase":"review lens"}],"routes_to":["contract:persona-schema"]},{"id":"preservation-guard","triggers":[{"intent":"merge skill"},{"intent":"condense rule"},{"intent":"refactor artifact"},{"keyword":"Iron Law"}],"routes_to":[]},{"id":"provider-lifecycle-discipline","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"ai-video"},{"keyword":"ai-image"},{"keyword":"ai-audio"},{"keyword":"adapter"},{"keyword":"provider"},{"path_prefix":"scripts/ai-video/adapters/"},{"path_prefix":"agents/.ai-video.xml"},{"phrase":"lifecycle"},{"phrase":"default provider"}],"routes_to":["contract:provider-lifecycle"]},{"id":"reviewer-awareness","triggers":[{"keyword":"reviewer"},{"phrase":"suggest reviewers"},{"phrase":"risk hotspot"},{"phrase":"ownership map"}],"routes_to":["skill:review-routing"]},{"id":"roadmap-ci-steps-policy","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"{module_root}/"},{"keyword":"task ci"},{"keyword":"make test"},{"keyword":"npm run check"},{"keyword":"pnpm run check"},{"keyword":"yarn check"},{"keyword":"composer test"},{"phrase":"run the quality pipeline"},{"phrase":"run task ci"},{"phrase":"run the full ci"}],"routes_to":[]},{"id":"role-mode-adherence","triggers":[{"keyword":"active_role"},{"keyword":"role-mode"},{"intent":"mode marker"}],"routes_to":[]},{"id":"rule-type-governance","triggers":[{"path_prefix":".agent-src.uncondensed/rules/"}],"routes_to":["guideline:agent-infra/rule-type-governance"]},{"id":"runtime-safety","triggers":[{"keyword":"execution"},{"keyword":"automated"},{"keyword":"assisted"},{"keyword":"handler"}],"routes_to":[]},{"id":"security-sensitive-stop","triggers":[{"keyword":"auth"},{"keyword":"billing"},{"keyword":"tenant"},{"keyword":"secret"},{"keyword":"webhook"}],"routes_to":[]},{"id":"skill-improvement-trigger","triggers":[{"phrase":"after completing"},{"keyword":"improvement"},{"keyword":"pipeline"}],"routes_to":["skill:skill-improvement-pipeline"]},{"id":"strategy-safety-floor","triggers":[{"keyword":"vision"},{"keyword":"positioning"},{"keyword":"moat"},{"keyword":"competitive"},{"keyword":"market entry"},{"keyword":"OKR"},{"keyword":"build vs buy"},{"keyword":"buy vs partner"},{"keyword":"beachhead"},{"keyword":"GTM"},{"keyword":"category"},{"keyword":"where to play"},{"keyword":"where not to play"},{"phrase":"what's our strategy"},{"phrase":"should we enter"},{"phrase":"what's our moat"},{"phrase":"where should we focus"},{"phrase":"should we reorg"}],"routes_to":["skill:build-buy-partner","skill:competitive-moat-analysis","skill:market-entry-analysis","skill:okr-tree-modeling","skill:positioning-strategy","skill:vision-articulation"]},{"id":"think-before-action","triggers":[{"intent":"before coding"},{"intent":"before debugging"},{"intent":"before modifying"}],"routes_to":[]},{"id":"token-efficiency","triggers":[{"intent":"verbose CLI output"},{"intent":"fetching logs"},{"keyword":"minimize tool calls"}],"routes_to":[]},{"id":"token-optimizer-maintenance","triggers":[{"keyword":"cli-output-handling"},{"keyword":"rtk-output-filtering"},{"keyword":"token-efficiency"},{"keyword":"agent-handoff"},{"keyword":"markitdown"},{"keyword":"token-optimizer"}],"routes_to":["skill:token-optimizer"]},{"id":"tool-safety","triggers":[{"keyword":"allowed_tools"},{"keyword":"tool registry"},{"intent":"external API"}],"routes_to":[]},{"id":"ui-audit-gate","triggers":[{"path_prefix":"resources/views/"},{"path_prefix":"resources/js/"},{"keyword":"component"},{"keyword":"design token"}],"routes_to":["skill:existing-ui-audit"]},{"id":"upstream-proposal","triggers":[{"phrase":"after creating"},{"phrase":"after improving"},{"keyword":"upstream"}],"routes_to":["skill:upstream-contribute"]}],"profiles":{"minimal":["__kernel__"],"balanced":["__kernel__","__tier_1__"],"full":["__kernel__","__tier_1__","__tier_2__"]}}
@@ -147,7 +147,7 @@ note, package-internal path-swap, description budget, and the
147
147
  | Layer | Count | Purpose |
148
148
  |---|---|---|
149
149
  | **Skills** | 219 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
150
- | **Rules** | 77 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
150
+ | **Rules** | 78 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
151
151
  | **Commands** | 135 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/condense`, … |
152
152
  | **Guidelines** | 73 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
153
153
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
package/docs/catalog.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # agent-config — Public Catalog
2
2
 
3
- Consumer-facing catalog of all **503 public artefacts** shipped by
3
+ Consumer-facing catalog of all **504 public artefacts** shipped by
4
4
  this package. Internal package-maintenance rules and deprecation shims
5
5
  are excluded.
6
6
 
@@ -231,7 +231,7 @@ are excluded.
231
231
  | skill | [`voc-extract`](../.agent-src/skills/voc-extract/SKILL.md) | | Use when extracting Voice-of-Customer themes from existing artefacts — GH issues, PR threads, Sentry patterns. Triggers on 'what are users saying', 'recurring complaints', 'top themes'. |
232
232
  | skill | [`voice-and-tone-design`](../.agent-src/skills/voice-and-tone-design/SKILL.md) | | Use when shaping brand voice — voice attributes, tone-by-context matrix, consistency review. Triggers on 'define our voice', 'why does our copy sound different on every surface'. |
233
233
 
234
- ## Rules (76)
234
+ ## Rules (77)
235
235
 
236
236
  | kind | name | type | description |
237
237
  |---|---|---|---|
@@ -269,6 +269,7 @@ are excluded.
269
269
  | rule | [`language-and-tone`](../.agent-src/rules/language-and-tone.md) | always | Language and tone — informal German Du, English code comments, .md files always English |
270
270
  | rule | [`laravel-routing`](../.agent-src/rules/laravel-routing.md) | auto | Writing/reviewing Laravel code — controllers, Eloquent, Artisan, jobs, events, policies — route to laravel skill |
271
271
  | rule | [`laravel-translations`](../.agent-src/rules/laravel-translations.md) | auto | Laravel language files, translations, i18n, lang/de, lang/en, __() helper, localization |
272
+ | rule | [`linked-projects-onboarding-gate`](../.agent-src/rules/linked-projects-onboarding-gate.md) | auto | IDE-attached sibling repo detected — prompt once to opt it into proactive cross-repo awareness, persist local-only, then surface cross-repo impact on relevant changes |
272
273
  | rule | [`low-impact-corpus-privacy-floor`](../.agent-src/rules/low-impact-corpus-privacy-floor.md) | auto | Writing/editing/upstreaming entries in agents/decisions/low-impact-decisions.md — non-bypassable privacy floor for the learning corpus |
273
274
  | rule | [`markdown-safe-codeblocks`](../.agent-src/rules/markdown-safe-codeblocks.md) | auto | Generating markdown with code blocks — prevent broken nesting |
274
275
  | rule | [`media-governance-routing`](../.agent-src/rules/media-governance-routing.md) | auto | Generating AI video/image/voice — surface project-local media policies (likeness, style, public-figures, voice-cloning, disclosure) |