@event4u/agent-config 2.19.0 → 2.20.1

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 (94) hide show
  1. package/.agent-src/commands/agent-status.md +29 -0
  2. package/.agent-src/commands/onboard.md +221 -81
  3. package/.agent-src/packs/README.md +49 -0
  4. package/.agent-src/packs/agency-delivery.yml +63 -0
  5. package/.agent-src/packs/content-engine.yml +53 -0
  6. package/.agent-src/packs/founder-mvp.yml +51 -0
  7. package/.agent-src/presets/README.md +26 -0
  8. package/.agent-src/presets/balanced.yml +34 -0
  9. package/.agent-src/presets/fast.yml +31 -0
  10. package/.agent-src/presets/strict.yml +38 -0
  11. package/.agent-src/profiles/README.md +29 -0
  12. package/.agent-src/profiles/agency.yml +27 -0
  13. package/.agent-src/profiles/content_creator.yml +25 -0
  14. package/.agent-src/profiles/developer.yml +26 -0
  15. package/.agent-src/profiles/finance.yml +24 -0
  16. package/.agent-src/profiles/founder.yml +25 -0
  17. package/.agent-src/profiles/ops.yml +25 -0
  18. package/.agent-src/rules/no-cheap-questions.md +25 -17
  19. package/.agent-src/skills/adr-create/SKILL.md +78 -68
  20. package/.agent-src/skills/subagent-orchestration/SKILL.md +33 -0
  21. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  22. package/.agent-src/templates/skill-archive-note.md +101 -0
  23. package/.claude-plugin/marketplace.json +1 -1
  24. package/CHANGELOG.md +73 -70
  25. package/README.md +68 -72
  26. package/config/agent-settings.template.yml +22 -0
  27. package/docs/adrs/caveman/0001-default-off-until-bench.md +93 -0
  28. package/docs/adrs/caveman/README.md +9 -0
  29. package/docs/adrs/cost/0001-hard-stop-hook.md +114 -0
  30. package/docs/adrs/cost/README.md +9 -0
  31. package/docs/adrs/memory/0001-consumer-side-snapshot.md +111 -0
  32. package/docs/adrs/memory/README.md +9 -0
  33. package/docs/adrs/router/0001-three-tier-routing.md +119 -0
  34. package/docs/adrs/router/README.md +9 -0
  35. package/docs/adrs/schema/0001-json-schema-frontmatter.md +102 -0
  36. package/docs/adrs/schema/README.md +9 -0
  37. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +99 -0
  38. package/docs/adrs/smoke/README.md +9 -0
  39. package/docs/architecture/current-onboard-baseline.md +126 -0
  40. package/docs/architecture/current-safety-behavior.md +137 -0
  41. package/docs/archive/CHANGELOG-pre-2.16.0.md +48 -0
  42. package/docs/archive/CHANGELOG-pre-2.17.0.md +63 -0
  43. package/docs/contracts/adr-layout.md +108 -0
  44. package/docs/contracts/benchmark-corpus-spec.md +97 -0
  45. package/docs/contracts/benchmark-report-schema.md +111 -0
  46. package/docs/contracts/command-clusters.md +1 -0
  47. package/docs/contracts/command-taxonomy.md +137 -0
  48. package/docs/contracts/compression-default-kill-criterion.md +69 -0
  49. package/docs/contracts/config-presets.md +144 -0
  50. package/docs/contracts/cost-dashboard.md +143 -0
  51. package/docs/contracts/cost-enforcement.md +134 -0
  52. package/docs/contracts/file-ownership-matrix.json +0 -7
  53. package/docs/contracts/mcp-tool-inventory.md +53 -0
  54. package/docs/contracts/measurement-baseline.md +102 -0
  55. package/docs/contracts/namespace.md +125 -0
  56. package/docs/contracts/profile-system.md +142 -0
  57. package/docs/contracts/safety-model.md +129 -0
  58. package/docs/contracts/smoke-contracts.md +144 -0
  59. package/docs/contracts/workflow-packs.md +121 -0
  60. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +132 -0
  61. package/docs/decisions/INDEX.md +1 -0
  62. package/docs/featured-commands.md +27 -0
  63. package/docs/parity/bench-ruflo.json +58 -0
  64. package/docs/parity/bench.json +41 -0
  65. package/docs/parity/ruflo.md +46 -0
  66. package/docs/profiles.md +91 -0
  67. package/package.json +1 -1
  68. package/scripts/_cli/cmd_explain.py +250 -0
  69. package/scripts/_lib/bench_cost.py +138 -0
  70. package/scripts/_lib/bench_quality.py +118 -0
  71. package/scripts/_lib/bench_report.py +150 -0
  72. package/scripts/agent-config +13 -0
  73. package/scripts/audit_adr_coverage.py +175 -0
  74. package/scripts/audit_mcp_tools.py +146 -0
  75. package/scripts/bench_baseline_ready.py +108 -0
  76. package/scripts/bench_drift_check.py +151 -0
  77. package/scripts/bench_per_tool.py +216 -0
  78. package/scripts/bench_run.py +155 -0
  79. package/scripts/config/__init__.py +9 -0
  80. package/scripts/config/presets.py +206 -0
  81. package/scripts/config/profiles.py +173 -0
  82. package/scripts/cost/budget.mjs +73 -12
  83. package/scripts/cost/preflight.mjs +89 -0
  84. package/scripts/lint_archived_skills.py +143 -0
  85. package/scripts/lint_bench_corpus.py +161 -0
  86. package/scripts/lint_namespace.py +135 -0
  87. package/scripts/lint_roadmap_complexity.py +3 -2
  88. package/scripts/skill_overlap.py +204 -0
  89. package/scripts/skill_usage_collect.py +191 -0
  90. package/scripts/skill_usage_report.py +162 -0
  91. package/scripts/smoke/kernel.sh +101 -0
  92. package/scripts/smoke/router.sh +129 -0
  93. package/scripts/smoke/schema.sh +71 -0
  94. package/scripts/smoke/skills.sh +101 -0
@@ -51,6 +51,39 @@ Each mode has a decision row: when to use, when not, and the expected
51
51
  model pairing. Defaults come from
52
52
  [`subagent-configuration`](../../contexts/subagent-configuration.md).
53
53
 
54
+ ### Topology hints — per-mode communication shape
55
+
56
+ Descriptive, not enforced. Documents the **expected agent-to-agent
57
+ communication topology** so consumers can predict latency, failure
58
+ modes, and where consensus is required. Cited from
59
+ [`external-findings.md § 2`](../../../agents/audit-2026-05-14-north-star/external-findings.md)
60
+ row 7 (Ruflo's `hierarchical, 6–8 agents, raft consensus` anti-drift
61
+ default).
62
+
63
+ | Mode | Topology | Anti-drift default | Notes |
64
+ |---|---|---|---|
65
+ | do-and-judge | `hierarchical` | 1 implementer · 1 judge · session-orchestrated | Two-node hub-and-spoke; orchestrator owns the loop. |
66
+ | do-and-judge-two-stage | `hierarchical` | 1 implementer · 2 sequential judges | Stages are serialized; spec-judge gates quality-judge. |
67
+ | do-in-steps | `ring` | N steps · 1 judge between each | Step N output → judge → step N+1 input; cycle on revise. |
68
+ | do-in-parallel | `star` | 6–8 implementers · 1 judge · session-hub | Capped by `subagents.max_parallel`; judge runs once on union. |
69
+ | do-competitively | `mesh` | 2–4 implementers · 1 judge | Implementers do not see each other; judge sees all candidates. |
70
+ | judge-with-debate | `hierarchical-mesh` | 2 judges · 1 meta-judge | Judges debate (mesh edge); meta-judge reconciles (hierarchical). |
71
+ | do-in-worktrees | `adaptive` | per-step topology of the underlying mode | Each worktree picks its own shape; chain is hierarchical. |
72
+
73
+ **Anti-drift default** (Ruflo convention, descriptive only):
74
+ `hierarchical, 6–8 agents, raft consensus`. Consumers free to
75
+ override per orchestration — table is **starting point**, not a
76
+ constraint. Topology is metadata for capacity planning, not
77
+ runtime-enforced.
78
+
79
+ **Glossary:**
80
+ - `hierarchical` — orchestrator hub; agents reply to hub only.
81
+ - `mesh` — agents see each other's outputs (e.g. competing diffs).
82
+ - `hierarchical-mesh` — peer debate followed by hub reconciliation.
83
+ - `ring` — output of step N feeds input of step N+1 in order.
84
+ - `star` — N agents fan out from single hub; no peer comms.
85
+ - `adaptive` — topology shifts per step; outer chain remains hub.
86
+
54
87
  ### 1. do-and-judge
55
88
 
56
89
  Implementer produces a diff; judge reviews; loop applies, revises, or
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.py (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "2.18.0"
42
+ agent_config_version: "2.20.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -0,0 +1,101 @@
1
+ # Skill Archive Note Template
2
+
3
+ > Template for `agents/archived-skills/<slug>.md`. Created during
4
+ > `step-2-skill-inventory-rationalization.md`
5
+ > Phase 4 execution. Every skill removed from
6
+ > `.agent-src.uncompressed/skills/` MUST have a matching archive note
7
+ > here — enforced by `scripts/lint_archived_skills.py`.
8
+
9
+ ## Instructions
10
+
11
+ 1. Create the file: `agents/archived-skills/{slug}.md`.
12
+ 2. Copy the template body below and fill every required field.
13
+ 3. Commit alongside the SKILL.md removal in the same PR (the linter
14
+ refuses to pass if the pair drifts).
15
+
16
+ ## Required frontmatter
17
+
18
+ ```yaml
19
+ ---
20
+ slug: {skill-slug} # the directory name that was removed
21
+ archived_on: 2026-MM-DD # UTC date of the removal commit
22
+ last_seen_count: 0 # mentions_30d at archival time (from skill-usage-report.md)
23
+ reason: unused # one of: unused, merged, superseded, deprecated
24
+ replacement: none # successor slug, or literal "none" if reason ∈ {unused, deprecated}
25
+ last_known_callers: # YAML list — files / commands / rules that cited this slug
26
+ - "none detected" # or e.g. ".augment/rules/foo.md", "agents/roadmaps/bar.md"
27
+ ---
28
+ ```
29
+
30
+ ## Required body
31
+
32
+ ````markdown
33
+ # {skill-slug}
34
+
35
+ ## Why archived
36
+
37
+ {1–3 sentences. Cite the Phase 2 candidates-table row (overlap pair,
38
+ activation counts, or both) that justified removal. Link the row.}
39
+
40
+ ## What replaces it
41
+
42
+ {If `replacement: <successor>`: one paragraph on how the successor
43
+ covers the source's triggers, and which trigger phrases it absorbed.
44
+ Link the successor's SKILL.md.}
45
+
46
+ {If `replacement: none`: one paragraph on why the capability is gone —
47
+ no successor needed because the workflow itself was retired / merged
48
+ into a router decision tree / handled inline by another rule.}
49
+
50
+ ## Last-known callers
51
+
52
+ {If `last_known_callers:` is non-empty, one bullet per caller with a
53
+ short note on whether the caller was updated, redirected, or left
54
+ referencing the archive note. The lint gate fails if a caller still
55
+ references the removed slug without pointing at this note.}
56
+
57
+ ## References
58
+
59
+ - Candidates table row: [`skill-rationalization-candidates.md`](../metrics/skill-rationalization-candidates.md#{anchor})
60
+ - Activation baseline: [`skill-usage-report.md`](../metrics/skill-usage-report.md)
61
+ - Overlap pair (if applicable): [`skill-overlap.md`](../metrics/skill-overlap.md)
62
+ ````
63
+
64
+ ## Field semantics
65
+
66
+ - **`slug`** — must match the removed directory name exactly. The
67
+ linter keys on this.
68
+ - **`archived_on`** — UTC date string `YYYY-MM-DD`. Used for cohort
69
+ reporting (e.g. "skills archived in the May 2026 rationalization").
70
+ - **`last_seen_count`** — `mentions_30d` value from the activation
71
+ report at the moment of archival. `0` is the dominant case; non-zero
72
+ values demand extra justification in *Why archived*.
73
+ - **`reason`** — exactly one of:
74
+ - `unused` — `mentions_30d == 0` over the soak window.
75
+ - `merged` — content folded into another skill; trigger phrases
76
+ transferred.
77
+ - `superseded` — thin-redirect successor exists (`replaced_by`
78
+ relationship documented in the successor's frontmatter).
79
+ - `deprecated` — capability retired; no successor needed.
80
+ - **`replacement`** — successor slug (must exist under
81
+ `.agent-src.uncompressed/skills/`) or literal `none`. The linter
82
+ validates the successor's existence.
83
+ - **`last_known_callers`** — references found by
84
+ `scripts/check_references.py` at archival time. Empty list is valid
85
+ only when the check truly returned zero hits.
86
+
87
+ ## Lint contract
88
+
89
+ `scripts/lint_archived_skills.py` enforces:
90
+
91
+ 1. Every file under `agents/archived-skills/*.md` (except the README)
92
+ has a frontmatter block with the six required fields.
93
+ 2. `reason` is one of the four allowed values.
94
+ 3. When `reason ∈ {merged, superseded}`, the `replacement` slug exists
95
+ under `.agent-src.uncompressed/skills/`.
96
+ 4. Every slug under `agents/archived-skills/` is *absent* from
97
+ `.agent-src.uncompressed/skills/` (no zombies).
98
+ 5. No SKILL.md present under `.agent-src.uncompressed/skills/`
99
+ references an archived slug as a router target.
100
+
101
+ Run via `task lint-archived-skills`. Included in `task ci`.
@@ -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": "2.19.0",
9
+ "version": "2.20.1",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -695,13 +695,69 @@ our recommendation order, not its support status.
695
695
  users" tension without removing any path that an existing user
696
696
  might rely on.
697
697
 
698
- # Era: 2.15.x — current
698
+ # Era: 2.17.x — current
699
699
 
700
- > Started at `2.15.0` (2026-05-15). Full entries live inline below.
700
+ > Started at `2.17.0` (2026-05-15). Full entries live inline below.
701
701
  > The drift test caps this era at 200 lines of entry body; growth past
702
- > that forces a new era split (`# Era: 2.16.x`, etc.) — see
702
+ > that forces a new era split (`# Era: 2.18.x`, etc.) — see
703
703
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
704
704
 
705
+ ## [2.20.1](https://github.com/event4u-app/agent-config/compare/2.20.0...2.20.1) (2026-05-16)
706
+
707
+ ### Bug Fixes
708
+
709
+ * **lint:** treat zero active roadmaps as pass in lint-roadmap-complexity ([ff814e2](https://github.com/event4u-app/agent-config/commit/ff814e262a25b9269ae5d1b66495602b5d8f457b))
710
+ * **template:** bump agent_config_version pin to 2.20.0 ([ab3acfc](https://github.com/event4u-app/agent-config/commit/ab3acfc3eebd39e5fb7df919bd5b7a455e2f58ea))
711
+
712
+ ### Chores
713
+
714
+ * **changelog:** split era 2.16.x → pre-2.17.0 ([67b668e](https://github.com/event4u-app/agent-config/commit/67b668ee2298cc56478a808a716e965482bf199d))
715
+ * **roadmaps:** close and archive all 8 open roadmaps (Total Dominance) ([c13359f](https://github.com/event4u-app/agent-config/commit/c13359f0b676f251a9b6c6b7ed11804fdeb84257))
716
+
717
+ Tests: 4535 (+0 since 2.20.0)
718
+
719
+ ## [2.20.0](https://github.com/event4u-app/agent-config/compare/2.19.0...2.20.0) (2026-05-16)
720
+
721
+ ### Features
722
+
723
+ * **product:** step-15 product refinement — profiles + packs + presets + explain CLI ([59e7d6f](https://github.com/event4u-app/agent-config/commit/59e7d6f3ddce025e558da08c1da1b4c8155e68eb))
724
+ * **parity:** step-11 ruflo parity — smoke + ADR + cost + namespace + MCP ([521b4c6](https://github.com/event4u-app/agent-config/commit/521b4c62f5fe266f5c18dfcca2abf4e06d97c217))
725
+ * **caveman:** step-10 default-kill criterion + parity roadmap ([dd7ec3c](https://github.com/event4u-app/agent-config/commit/dd7ec3cae4f8839b28b4d3ff9dbdbb316ec5d035))
726
+ * **bench:** step-4 measurement + benchmark infrastructure ([981d0cd](https://github.com/event4u-app/agent-config/commit/981d0cd1c48e2d23eede29bd86e833cd826ddfd9))
727
+ * **skills:** step-2 skill inventory rationalization ([3fa651d](https://github.com/event4u-app/agent-config/commit/3fa651d2496e4fc483cd7ed452bb39f41dd39365))
728
+
729
+ ### Bug Fixes
730
+
731
+ * **adr-create:** restore Inspect keyword in step-1 heading ([46c40ad](https://github.com/event4u-app/agent-config/commit/46c40adf4741f1e13d8d275f9363f98047d4b733))
732
+ * **audit_mcp_tools:** drop roadmap link from generated inventory ([d35459e](https://github.com/event4u-app/agent-config/commit/d35459e94d9be473bbb567f7c348be5bff4b5e9d))
733
+ * **audit_mcp_tools:** emit stability frontmatter in generated inventory ([ba7af12](https://github.com/event4u-app/agent-config/commit/ba7af12cf26509f2ea0ddb867303f3b225fea866))
734
+ * **no-cheap-questions:** trim to clear concentration cap ([3516283](https://github.com/event4u-app/agent-config/commit/351628301aa168c31130b62ee306858944ecf9f2))
735
+ * **onboard:** move recommendation off inline (recommended) tag ([6a77a06](https://github.com/event4u-app/agent-config/commit/6a77a06c014d8820662906ca6ab0ee55ac847e05))
736
+ * **refs:** suppress legitimate council-response audit links ([d764329](https://github.com/event4u-app/agent-config/commit/d764329d8718124d150deafcce52bdd206ada740))
737
+ * **contracts:** drop roadmap-file links from stable artefacts ([96ea60f](https://github.com/event4u-app/agent-config/commit/96ea60f8f6e85c6ce04e8042d9d2535938f75d9f))
738
+ * **contracts:** bring beta-review markers into the 90-day window ([4be4a47](https://github.com/event4u-app/agent-config/commit/4be4a47cc30532fa20d1ea7c3311d7eaa154d7e6))
739
+ * **contracts:** add stability frontmatter to 6 new contracts ([8b27577](https://github.com/event4u-app/agent-config/commit/8b27577bc6b4b28c36ccfbea48b4e92e35372fbd))
740
+ * **portability:** replace task cost:* with direct script invocations ([0225f60](https://github.com/event4u-app/agent-config/commit/0225f60d0157edf4b4f74fe8fc1266295d5b90f2))
741
+ * **rules:** restore no-cheap-questions Iron Law block ([e95315f](https://github.com/event4u-app/agent-config/commit/e95315f96323d1ef32328b1c8a630b5aacafee84))
742
+
743
+ ### Documentation
744
+
745
+ * **readme:** restore three-audience headings, tighten user-types blurb ([fdb03bf](https://github.com/event4u-app/agent-config/commit/fdb03bf314acb1a7a570400c1ba3cadb8098b943))
746
+ * **readme:** restore browse-all-commands canonical line ([d91f6e0](https://github.com/event4u-app/agent-config/commit/d91f6e0d99230792f570b02fab6a1b30a744187c))
747
+ * **readme:** extract profile detail + featured commands to /docs ([e8745f3](https://github.com/event4u-app/agent-config/commit/e8745f33f1da089aefd763cc659be4568177dd07))
748
+ * **roadmap:** regenerate dashboard + cross-roadmap link refresh ([f6b7085](https://github.com/event4u-app/agent-config/commit/f6b7085d3419f1a8b57daf9b949bd55312c17b9b))
749
+ * **roadmap:** step-5 schema rigor + test cleanup ([b043230](https://github.com/event4u-app/agent-config/commit/b043230291222f6d6287d73e0807ea772e227e98))
750
+
751
+ ### Chores
752
+
753
+ * **changelog:** split era 2.15.x → pre-2.16.0 ([88b81ba](https://github.com/event4u-app/agent-config/commit/88b81bac54ae5f9558a1087c81d453c47d3039bb))
754
+ * **mcp:** regenerate MCP tool inventory ([bce3169](https://github.com/event4u-app/agent-config/commit/bce3169b353c2d240df610e4bf01c91c96d23e0d))
755
+ * **ownership:** regenerate ownership matrix after no-cheap-questions trim ([dbe58a9](https://github.com/event4u-app/agent-config/commit/dbe58a9dfafbca487f11b2501b1f1dabb1053a8d))
756
+ * **template:** bump agent_config_version pin to 2.19.0 ([cfc4c59](https://github.com/event4u-app/agent-config/commit/cfc4c59e288862eccf4e7b9d215adf30e527f5a0))
757
+ * **build:** wire step-2/4/11/15 tooling into Taskfile + gitignore ([0acc9e7](https://github.com/event4u-app/agent-config/commit/0acc9e77515e611eb685c58aeba91f3d5af9423f))
758
+
759
+ Tests: 4535 (+42 since 2.19.0)
760
+
705
761
  ## [2.19.0](https://github.com/event4u-app/agent-config/compare/2.18.0...2.19.0) (2026-05-16)
706
762
 
707
763
  ### Features
@@ -839,76 +895,23 @@ Tests: 4476 (+17 since 2.17.0)
839
895
 
840
896
  Tests: 4459 (+54 since 2.16.0)
841
897
 
842
- ## [2.16.0](https://github.com/event4u-app/agent-config/compare/2.15.0...2.16.0) (2026-05-15)
843
-
844
- ### Features
845
-
846
- * **install:** install-mode marker + minimal-init upgrade hint (Step 8 P3) ([e028468](https://github.com/event4u-app/agent-config/commit/e028468ed2b58428b99bea5a2e6c2a25e12fc113))
847
- * **cli:** doctor --trace-root + --context diagnostic surface (Step 8 P2) ([387a626](https://github.com/event4u-app/agent-config/commit/387a626b7795fc40e6e2442c1dde272dfc98f9d7))
848
- * **cli:** --root override flag + fail-loud root validation (Step 8 P1) ([0c8356e](https://github.com/event4u-app/agent-config/commit/0c8356e9034ca474827de89db5386a04c61f560c))
849
- * **wrapper:** export AGENT_CONFIG_PROJECT_ROOT pin so subdir invocations skip the walk ([e866cef](https://github.com/event4u-app/agent-config/commit/e866cef14d40269786fb0a88b69d9aafcfab1c88))
850
- * **agent-settings:** add resolve_project_root helper for Phase 3 subdir hardening ([95bac18](https://github.com/event4u-app/agent-config/commit/95bac187132d35d476716cd38d8c619bccaca6e5))
851
- * **install:** add --minimal / --settings-only init mode ([4c02743](https://github.com/event4u-app/agent-config/commit/4c02743cd7df6d89f7b7fa6188d654ca1eec983c))
852
- * **agent_settings:** extend find_project_root with agents/ + .agent-settings.yml anchors ([60dcd11](https://github.com/event4u-app/agent-config/commit/60dcd11c498f25f92bb01482943bfb95d4efef37))
898
+ # Era: pre-2.17.0 — archived
853
899
 
854
- ### Documentation
855
-
856
- * **changelog:** Step 8 discovery polish entry under Unreleased ([eecaf6a](https://github.com/event4u-app/agent-config/commit/eecaf6a9a2248a877d71dbd33e7db096f94dab3b))
857
- * **installation:** root override + monorepo semantics + diagnostics (Step 8) ([de3081f](https://github.com/event4u-app/agent-config/commit/de3081fe828cb43c628d922c50d25177d43f267e))
858
- * **roadmap:** archive step-7 (all phases complete) + sync dashboard ([8f2953e](https://github.com/event4u-app/agent-config/commit/8f2953ee5c867ada29c9f32cf45bd2380504bc12))
859
- * **step-7:** add minimal-init flow, anchor migration guide, changelog entry ([9ace019](https://github.com/event4u-app/agent-config/commit/9ace01945967e67e98e8855a940801db09de8d17))
860
- * **roadmap:** mark Step 7 Phase 3 complete (subdir invocation hardening) ([518f9dc](https://github.com/event4u-app/agent-config/commit/518f9dcaf6d71a34cf1700bceb1487f1e8e33175))
861
- * **roadmap:** mark Step 7 Phase 2 + test items complete ([1bb9b71](https://github.com/event4u-app/agent-config/commit/1bb9b712d866dd509124f7d8502f52957e972b20))
862
- * **roadmap:** mark Step 7 Phase 1 complete; refresh progress dashboard ([2ba8d5b](https://github.com/event4u-app/agent-config/commit/2ba8d5be1b94bbab87da4270d833697c895cc9c6))
863
-
864
- ### Refactoring
865
-
866
- * **cli:** route all cmd_*.py entry points through resolve_project_root ([aa7a01a](https://github.com/event4u-app/agent-config/commit/aa7a01a7f27205919193d54339298c0dbd30c43e))
867
-
868
- ### Tests
869
-
870
- * **cli:** coverage for --root override + doctor trace/context (Step 8) ([9b943aa](https://github.com/event4u-app/agent-config/commit/9b943aa9f002750499738fd36f8a203525fb84da))
871
- * **subdir:** cover resolve_project_root precedence + wrapper-pinned root ([0693714](https://github.com/event4u-app/agent-config/commit/06937145ac8f4e1160ec9279d3832e4f5397bb1e))
872
- * **install:** cover --minimal payload + nested-install guard ([5623521](https://github.com/event4u-app/agent-config/commit/56235218624792b487a92f444ff8ee114a5651a3))
873
- * **agent_settings:** cover anchor extension, kill-switch, perf budget ([37a080c](https://github.com/event4u-app/agent-config/commit/37a080c07ee9238fda45bbda1829764a4232f062))
874
-
875
- ### Chores
876
-
877
- * **template:** bump agent_config_version pin to 2.15.0 ([093367d](https://github.com/event4u-app/agent-config/commit/093367d3e417a11a28295f2efa574e8c3fef6524))
878
- * **sync:** propagate Step 8 agent_settings.py to .agent-src/ projection ([7ce92e5](https://github.com/event4u-app/agent-config/commit/7ce92e514a8edbd970a4118b91d2f651bf730070))
879
- * **roadmap:** archive Step 8 discovery polish ([1c21982](https://github.com/event4u-app/agent-config/commit/1c219825dc413cfe45aefc3b12c08d2720583880))
880
- * **changelog:** split era 2.11.x → pre-2.15.0 ([c79363c](https://github.com/event4u-app/agent-config/commit/c79363c05d775ecfa95ab6fff5b3bbe706f797c9))
881
-
882
- Tests: 4405 (+53 since 2.15.0)
883
-
884
- ## [2.15.0](https://github.com/event4u-app/agent-config/compare/2.14.0...2.15.0) (2026-05-15)
885
-
886
- ### Features
887
-
888
- * **agent-user:** add /agents user command cluster (init, show, review, accept, update) ([15d53d8](https://github.com/event4u-app/agent-config/commit/15d53d8d9a2365b044831cd42127e247a70d7e20))
889
- * **agent-user:** add v1 schema contract for .agent-user.md persona file ([64f4eab](https://github.com/event4u-app/agent-config/commit/64f4eab62ccf6a2606fbca0c56d398372c05a7a0))
890
-
891
- ### Bug Fixes
892
-
893
- * **agent-user:** inline council-reference summary per no-roadmap-references ([ee4d3ce](https://github.com/event4u-app/agent-config/commit/ee4d3cedf9f4429450d21ca5badc2ae5c2ecaaed))
894
- * **agent-user:** drop roadmap references per no-roadmap-references rule ([c8ade8d](https://github.com/event4u-app/agent-config/commit/c8ade8d7c5b495e0e4295aa0cb801e59076ee0b0))
895
- * **agent-user:** adjust keep-beta-until to fit 90-day window ([801b365](https://github.com/event4u-app/agent-config/commit/801b365117a2d1efb4505e504bdd730e4cbbc217))
896
-
897
- ### Documentation
898
-
899
- * **persona:** README section + agent-settings legacy-fallback note ([4da7629](https://github.com/event4u-app/agent-config/commit/4da7629f1f0b5a35a64d0a861040ad8639a66ebe))
900
- * **roadmap:** mark step-3-agent-user-persona phases as in-progress ([f29d3bc](https://github.com/event4u-app/agent-config/commit/f29d3bce2380c0ea9c67e6094540b88d920ed9ff))
901
-
902
- ### Chores
900
+ > All `2.16.0` entries live in
901
+ > [`docs/archive/CHANGELOG-pre-2.17.0.md`](docs/archive/CHANGELOG-pre-2.17.0.md).
902
+ > The archive is read-only; git tag `2.16.0` remains the canonical
903
+ > source for what shipped. Splitting these out of the main file keeps
904
+ > the active era under the 200-line drift cap enforced by
905
+ > `tests/test_changelog_eras.py`.
903
906
 
904
- * **roadmap:** close out + archive step-3-agent-user-persona ([09c0229](https://github.com/event4u-app/agent-config/commit/09c0229efd67af9cad7b2ca8202f4caa351d028d))
905
- * **ownership:** regenerate file-ownership-matrix for /agents user ([128890d](https://github.com/event4u-app/agent-config/commit/128890d880584704b4842a398555dd979ae54462))
906
- * **docs:** bump command count from 109 to 115 ([f8c61b1](https://github.com/event4u-app/agent-config/commit/f8c61b1d0ec48034e0d66e8d32534056ca4aa1f0))
907
- * **template:** bump agent_config_version pin to 2.14.0 ([fcb885f](https://github.com/event4u-app/agent-config/commit/fcb885fd19bdbca46ef91ec4d5e723cc6c186c6d))
908
- * **index:** regenerate agents/index.md + docs/catalog.md for /agents user ([56b281d](https://github.com/event4u-app/agent-config/commit/56b281d69960d3e57adbd24b9ec6fd24fc1a5aff))
909
- * **agent-user:** regenerate compressed sources + claude tool stubs ([f79b6d1](https://github.com/event4u-app/agent-config/commit/f79b6d1cfcf1caccde4a723ad779c65d9ed87198))
907
+ # Era: pre-2.16.0 archived
910
908
 
911
- Tests: 4352 (+12 since 2.14.0)
909
+ > All `2.15.0` entries live in
910
+ > [`docs/archive/CHANGELOG-pre-2.16.0.md`](docs/archive/CHANGELOG-pre-2.16.0.md).
911
+ > The archive is read-only; git tag `2.15.0` remains the canonical
912
+ > source for what shipped. Splitting these out of the main file keeps
913
+ > the active era under the 200-line drift cap enforced by
914
+ > `tests/test_changelog_eras.py`.
912
915
 
913
916
  # Era: pre-2.15.0 — archived
914
917
 
package/README.md CHANGED
@@ -4,47 +4,67 @@
4
4
 
5
5
  Give your AI agents an audit-disciplined execution layer: **210 skills**, **79 governance rules**, **124 commands**, and a replayable state machine that turns any host agent (Claude Code, Augment, Cursor, Copilot, Windsurf) into a reliable team member.
6
6
 
7
- | 👩‍💻 Developers | 🚀 Founders & Operators | ✍️ Creators & Consultants |
8
- |---|---|---|
9
- | Implement tickets, fix CI, write tests, run PR reviews — `/implement-ticket`, `/work`, `/commit`, `/fix ci`, `/create-pr` — with stack-aware skills for Laravel · Symfony · Next.js · React · Node. | Pitch decks, runway math, OKR trees, GTM launches, pricing reviews — `runway-cognition`, `unit-economics-modeling`, `fundraising-narrative`, `gtm-launch`, `okr-tree-modeling`. | Editorial calendars, brand voice, ghostwriting, content funnels, discovery interviews — `voice-and-tone-design`, `editorial-calendar`, `ghostwriter`, `content-funnel-design`, `discovery-interview`. |
7
+ ### Pick your profile six entry paths
8
+
9
+ `/onboard` writes `profile.id` to `.agent-settings.yml`; each anchor
10
+ below is the first-screen the wizard sends you to. One README, six
11
+ entries, no role-detection guesswork.
12
+
13
+ | Profile (`profile.id`) | Audience | First commands | First skills |
14
+ |---|---|---|---|
15
+ | 👩‍💻 [`developer`](docs/profiles.md#profile-developer) | IC engineer | `/implement-ticket` · `/work` · `/review-changes` · `/fix` · `/commit` | `developer-like-execution` · `verify-completion-evidence` · `minimal-safe-diff` · `systematic-debugging` · `test-driven-development` |
16
+ | ✍️ [`content_creator`](docs/profiles.md#profile-content_creator) | Writers, ghostwriters, marketers | `/work` · `/post-as` · `/ghostwriter` · `/optimize-prompt` | `voice-and-tone-design` · `messaging-architecture` · `editorial-calendar` · `release-comms` · `prompt-engineering-patterns` |
17
+ | 🚀 [`founder`](docs/profiles.md#profile-founder) | Solo / early-stage founder | `/work` · `/feature` · `/challenge-me` · `/council` | `refine-prompt` · `rice-prioritization` · `vision-articulation` · `fundraising-narrative` · `runway-cognition` |
18
+ | 🏛 [`agency`](docs/profiles.md#profile-agency) | Multi-client delivery shop | `/work` · `/implement-ticket` · `/refine-ticket` · `/feature` · `/roadmap` | `doc-coauthoring` · `decision-record` · `refine-ticket` · `estimate-ticket` · `perf-feedback-craft` |
19
+ | 💼 [`finance`](docs/profiles.md#profile-finance) | CFO / fractional finance / FP&A | `/work` · `/council` · `/challenge-me` | `dcf-modeling` · `forecasting` · `scenario-modeling` · `unit-economics-modeling` · `runway-cognition` |
20
+ | 🛡 [`ops`](docs/profiles.md#profile-ops) | RevOps, support, SRE-adjacent | `/work` · `/threat-model` · `/review-changes` · `/fix` | `incident-commander` · `dashboard-design` · `logging-monitoring` · `threat-modeling` · `launch-readiness` |
21
+
22
+ **Not sure which one?** Run `npx @event4u/agent-config init` and open
23
+ your AI agent — `/onboard` asks a single 8-option role question and
24
+ maps to the closest profile. Source-of-truth:
25
+ [`.agent-src.uncompressed/profiles/`](.agent-src.uncompressed/profiles/) ·
26
+ schema: [`docs/contracts/profile-system.md`](docs/contracts/profile-system.md).
27
+ Beyond software: [`user-types/`](.agent-src.uncompressed/user-types/)
28
+ (galabau · metalworking · truck — see [Who this is for](#who-this-is-for)).
10
29
 
11
30
  <p align="center">
12
31
  <strong>210 Skills</strong> · <strong>79 Rules</strong> · <strong>124 Commands</strong> · <strong>72 Guidelines</strong> · <strong>22 Personas</strong> · <strong>5 Advisors</strong> · <strong>8 AI Tools</strong>
13
32
  </p>
14
33
 
34
+ <p align="center">
35
+ <a href="CHANGELOG.md">CHANGELOG</a> ·
36
+ <a href="https://github.com/event4u-app/agent-config/releases/latest">Latest release</a> ·
37
+ <a href="https://github.com/event4u-app/agent-config/discussions">Discussions</a>
38
+ </p>
39
+
15
40
  ---
16
41
 
17
42
  ## Use it in your project
18
43
 
19
- You run the package from a consumer repo — bootstrap via `npx`, let the
20
- agent pick up your stack, and ship work end-to-end. New install? Start
21
- with the [Quickstart](#quickstart) to write `.agent-settings.yml`,
22
- `.augment/`, `.claude/`, …. Already installed? [Supported Tools](#supported-tools)
23
- shows which AIs the package wires up, and [Featured Commands](#featured-commands)
24
- lists the end-to-end workflows (`/implement-ticket`, `/work`, `/commit`,
25
- `/create-pr`). For a deeper tour, see the
26
- [2-minute demo: `/implement-ticket`](#2-minute-demo-implement-ticket).
44
+ Run from a consumer repo — bootstrap via `npx`, the agent picks up
45
+ your stack, and you ship work end-to-end. New install? Start with the
46
+ [Quickstart](#quickstart). Already installed? [Supported Tools](#supported-tools)
47
+ shows the wired AIs; [`docs/featured-commands.md`](docs/featured-commands.md)
48
+ lists the end-to-end workflows (`/implement-ticket`, `/work`,
49
+ `/commit`, `/create-pr`). Deeper tour: [2-minute demo](#2-minute-demo-implement-ticket).
27
50
 
28
51
  ## Prove it
29
52
 
30
- The package is audit-disciplined by construction — every memory consult,
31
- decision key, and hook concern lands in `agents/state/` so you can
32
- replay it. [Core Principles](#core-principles) names the four invariants.
53
+ Audit-disciplined by construction — every memory consult, decision
54
+ key, and hook concern lands in `agents/state/` so you can replay it.
55
+ [Core Principles](#core-principles) names the four invariants;
33
56
  [What this package is — and what it isn't](#what-this-package-is--and-what-it-isnt)
34
- draws the scope boundary. [Documentation](#documentation) lists the
35
- contracts the package ships against, including
36
- [`memory-visibility-v1`](docs/contracts/memory-visibility-v1.md) (beta) and
37
- [`decision-trace-v1`](docs/contracts/decision-trace-v1.md) (beta).
57
+ draws the scope boundary. Beta contracts:
58
+ [`memory-visibility-v1`](docs/contracts/memory-visibility-v1.md) ·
59
+ [`decision-trace-v1`](docs/contracts/decision-trace-v1.md).
38
60
 
39
61
  ## Contribute
40
62
 
41
- Working on the package itself rather than with it?
42
- [Development](#development) covers the `task ci` pipeline,
43
- [Requirements](#requirements) the toolchain, and
63
+ Working on the package itself? [Development](#development) covers the
64
+ `task ci` pipeline, [Requirements](#requirements) the toolchain,
44
65
  [Maintainer telemetry](#maintainer-telemetry-opt-in-default-off) the
45
- opt-in measurement loop. The source-of-truth tree is
46
- `.agent-src.uncompressed/`; never hand-edit the generated `.augment/`
47
- or `.agent-src/`.
66
+ opt-in measurement loop. Source-of-truth tree is
67
+ `.agent-src.uncompressed/`; never hand-edit `.augment/` or `.agent-src/`.
48
68
 
49
69
  ## Quickstart
50
70
 
@@ -464,18 +484,20 @@ session is explicitly not.
464
484
 
465
485
  ## You don't need everything
466
486
 
467
- `cost_profile` is the master switch for **rule-tier loading**. The kernel
468
- (always-loaded Iron-Law floor, ≤ 26k chars across 9 rules) ships in every
469
- profile; tier-1 and tier-2 rules are gated by profile and resolved at
470
- session start from `router.json`.
487
+ Pick how much governance your agent loads up front. The safety floor
488
+ (non-destructive defaults, ask-before-guessing, mirror-the-user's-language)
489
+ ships in **every** profile what changes is how much extra coaching gets
490
+ pulled in alongside it.
471
491
 
472
- | Profile | Rule tiers loaded | Token footprint | Best for |
473
- |---|---|---|---|
474
- | **`minimal`** | kernel only (no router, no auto-rules) | lowest | Cost-sensitive sessions; trivial Q&A; CI runs |
475
- | **`balanced`** (default) | kernel + tier-1 auto-rules | medium | Day-to-day work current behaviour superset |
476
- | **`full`** | kernel + tier-1 + tier-2 (everything) | highest | Agent-config development; full rule fidelity |
492
+ | Profile | What you get | When to pick it |
493
+ |---|---|---|
494
+ | **`minimal`** | The non-negotiable safety floor and nothing else. Cheapest, fastest. | Quick questions · throw-away scripts · running in CI · tight token budgets |
495
+ | **`balanced`** (default) | Safety floor plus the everyday coaching most teams want — sensible defaults, code-review nudges, common pitfalls flagged. | Day-to-day work · the right answer if you're not sure |
496
+ | **`full`** | Everything, including the long-tail rules normally only the package maintainers need. | Working on `agent-config` itself · audits · maximum fidelity demos |
477
497
 
478
- Architecture: [`docs/contracts/rule-router.md`](docs/contracts/rule-router.md) (beta) ·
498
+ Under the hood, this is the rule-tier switch: kernel-only · kernel + tier-1
499
+ auto-rules · kernel + tier-1 + tier-2. Architecture details:
500
+ [`docs/contracts/rule-router.md`](docs/contracts/rule-router.md) (beta) ·
479
501
  kernel set: [`docs/contracts/kernel-membership.md`](docs/contracts/kernel-membership.md) (beta) ·
480
502
  [Configure profiles →](docs/customization.md)
481
503
 
@@ -503,53 +525,27 @@ kernel set: [`docs/contracts/kernel-membership.md`](docs/contracts/kernel-member
503
525
 
504
526
  **Deepest reference stack today: Laravel** — Pest, PHPStan, Rector, Eloquent, Livewire/Flux, Horizon, Pulse, Reverb, Pennant. **Workflow-grade second tier: Symfony** (`symfony-workflow` — DI, Doctrine, Messenger, voters, Twig) and **Next.js App Router** (`nextjs-patterns` — RSC boundaries, Server Actions, caching, route handlers). Other stacks ship in the order they are battle-tested, not second-class. Adopting on a thin stack? Open an issue so we can prioritize the right skills for extraction.
505
527
 
506
- ---
507
-
508
- ## Data governance & domain safety
528
+ ### …and beyond software (`user-types/`)
509
529
 
510
- 12 domain-safety rules (`.agent-src.uncompressed/rules/domain-safety-*.md`) act as a per-domain output floor PII redaction for support / finance / recruiting / marketing, advice disclaimers for legal / financial / medical / consulting drafts, retention guidance for finance / support, and ops floors for logging / export. Full surface rule(s) floor matrix: [`docs/safety.md`](docs/safety.md).
530
+ The same orchestration core drives non-software trades. Worked-example user types ship as the actual prompt-pack the agent loads: [`galabau-field-crew`](.agent-src.uncompressed/user-types/galabau-field-crew.md) (landscaping) · [`metalworking-shop`](.agent-src.uncompressed/user-types/metalworking-shop.md) · [`truck-driver`](.agent-src.uncompressed/user-types/truck-driver.md). Contributing your own? [5-minute scaffold](.agent-src.uncompressed/user-types/_template/) + [conventions](.agent-src.uncompressed/user-types/README.md). Same governance, command suite, and safety rules apply.
511
531
 
512
532
  ---
513
533
 
514
- ## Featured Skills
534
+ ## Data governance & domain safety
515
535
 
516
- | Skill | What your agent learns |
517
- |---|---|
518
- | [`laravel`](.agent-src/skills/laravel/SKILL.md) | Write Laravel code following framework conventions and project architecture |
519
- | [`pest-testing`](.agent-src/skills/pest-testing/SKILL.md) | Write Pest tests with clear intent, good coverage, and project conventions |
520
- | [`eloquent`](.agent-src/skills/eloquent/SKILL.md) | Eloquent models, relationships, scopes, eager loading, type safety |
521
- | [`create-pr`](.agent-src/commands/create-pr.md) | Create GitHub PRs with structured descriptions from Jira tickets |
522
- | [`commit`](.agent-src/commands/commit.md) | Stage and commit changes following Conventional Commits |
523
- | [`/fix ci`](.agent-src/commands/fix.md) | Fetch CI errors from GitHub Actions and fix them |
524
- | [`/fix pr-comments`](.agent-src/commands/fix.md) | Fix and reply to all open review comments on a PR |
525
- | [`quality-fix`](.agent-src/commands/quality-fix.md) | Run PHPStan/Rector/ECS and fix all errors |
526
- | [`bug-analyzer`](.agent-src/skills/bug-analyzer/SKILL.md) | Root cause analysis from Sentry errors or Jira tickets |
527
- | [`improve-before-implement`](.agent-src/rules/improve-before-implement.md) | Challenge weak requirements before coding |
528
- | [`docker`](.agent-src/skills/docker/SKILL.md) | Dockerfile, docker-compose, container management |
529
- | [`security`](.agent-src/skills/security/SKILL.md) | Auth, policies, CSRF, rate limiting, secure coding |
530
- | [`api-design`](.agent-src/skills/api-design/SKILL.md) | REST conventions, versioning, deprecation |
531
- | [`database`](.agent-src/skills/database/SKILL.md) | MariaDB optimization, indexing, query performance |
532
-
533
- → [Public catalog](docs/catalog.md) (all rules, skills, commands, guidelines) · [Skills only](docs/skills-catalog.md) · [llms.txt](llms.txt)
536
+ 12 domain-safety rules (`.agent-src.uncompressed/rules/domain-safety-*.md`) act as a per-domain output floor — PII redaction for support / finance / recruiting / marketing, advice disclaimers for legal / financial / medical / consulting drafts, retention guidance for finance / support, and ops floors for logging / export. Full surface → rule(s) → floor matrix: [`docs/safety.md`](docs/safety.md).
534
537
 
535
538
  ---
536
539
 
537
- ## Featured Commands
540
+ ## Profile entry paths & featured commands
538
541
 
539
- | Command | What it does |
540
- |---|---|
541
- | [`/commit`](.agent-src/commands/commit.md) | Stage and commit with Conventional Commits |
542
- | [`/create-pr`](.agent-src/commands/create-pr.md) | Create PR with Jira-linked description |
543
- | [`/fix ci`](.agent-src/commands/fix.md) | Fetch and fix GitHub Actions failures |
544
- | [`/fix pr-comments`](.agent-src/commands/fix.md) | Fix and reply to review comments |
545
- | [`/optimize skills`](.agent-src/commands/optimize.md) | Audit skills, find duplicates, run linter |
546
- | [`/feature plan`](.agent-src/commands/feature.md) | Interactively plan a feature |
547
- | [`/quality-fix`](.agent-src/commands/quality-fix.md) | Run and fix all quality checks |
548
- | [`/review-changes`](.agent-src/commands/review-changes.md) | Self-review before creating a PR |
549
- | [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
550
- | [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
551
-
552
- → [Browse all 124 active commands](.agent-src/commands/)
542
+ Deep version of the profile table above (audience · first commands ·
543
+ first skills · preset default per profile):
544
+ [`docs/profiles.md`](docs/profiles.md). Curated featured-commands
545
+ subset: [`docs/featured-commands.md`](docs/featured-commands.md).
546
+ [Browse all 124 active commands](.agent-src/commands/) · full catalog:
547
+ [`docs/catalog.md`](docs/catalog.md) ·
548
+ [skills only](docs/skills-catalog.md) · [`llms.txt`](llms.txt).
553
549
 
554
550
  ---
555
551
 
@@ -30,6 +30,28 @@ agent_config_version: ""
30
30
  # custom = ignore profile — every matrix value must be set explicitly.
31
31
  cost_profile: __COST_PROFILE__
32
32
 
33
+ # --- Cost tracking + budget enforcement ---
34
+ #
35
+ # USD budgets evaluated against `agents/cost-tracking/sessions.jsonl` by
36
+ # `scripts/cost/budget.mjs`. Empty / 0 = unbudgeted (no enforcement,
37
+ # `cost:check` reports spend only). See docs/contracts/cost-enforcement.md
38
+ # for the full contract (tier ladder, hook surface, bypass mechanism).
39
+ cost:
40
+ budgets:
41
+ # Daily USD ceiling (rolling 24h). 0 / null = no daily budget.
42
+ daily: 0
43
+ # Weekly USD ceiling (rolling 7d). 0 / null = no weekly budget.
44
+ weekly: 0
45
+ # Monthly USD ceiling (rolling 30d). 0 / null = no monthly budget.
46
+ monthly: 0
47
+ # Enforcement mode at the HARD_STOP tier (100% utilization):
48
+ # advisory = dashboards and `cost:check` show the breach; agent
49
+ # keeps working. Default. Safe for greenfield projects.
50
+ # hard-stop = preflight hook (scripts/cost/preflight.mjs) exits
51
+ # non-zero on HARD_STOP; CI / shell wrappers refuse to
52
+ # start the turn until the budget is raised or reset.
53
+ enforcement: advisory
54
+
33
55
  # --- Personal preferences ---
34
56
  personal:
35
57
  # IDE to use for opening files (code, phpstorm, cursor, …)