@event4u/agent-config 1.9.1 → 1.12.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 (77) hide show
  1. package/.agent-src/commands/agent-handoff.md +15 -0
  2. package/.agent-src/commands/chat-history-clear.md +98 -0
  3. package/.agent-src/commands/chat-history-resume.md +178 -0
  4. package/.agent-src/commands/chat-history.md +102 -0
  5. package/.agent-src/commands/compress.md +9 -9
  6. package/.agent-src/commands/copilot-agents-init.md +1 -1
  7. package/.agent-src/commands/fix-portability.md +2 -2
  8. package/.agent-src/commands/fix-pr-bot-comments.md +1 -1
  9. package/.agent-src/commands/fix-pr-developer-comments.md +1 -1
  10. package/.agent-src/commands/fix-references.md +2 -2
  11. package/.agent-src/commands/mode.md +5 -5
  12. package/.agent-src/commands/onboard.md +171 -0
  13. package/.agent-src/commands/roadmap-create.md +7 -2
  14. package/.agent-src/commands/roadmap-execute.md +2 -2
  15. package/.agent-src/commands/set-cost-profile.md +101 -0
  16. package/.agent-src/commands/sync-agent-settings.md +122 -0
  17. package/.agent-src/commands/sync-gitignore.md +104 -0
  18. package/.agent-src/commands/tests-execute.md +6 -6
  19. package/.agent-src/commands/upstream-contribute.md +5 -4
  20. package/.agent-src/contexts/augment-infrastructure.md +2 -2
  21. package/.agent-src/contexts/override-system.md +1 -1
  22. package/.agent-src/contexts/subagent-configuration.md +3 -3
  23. package/.agent-src/guidelines/agent-infra/layered-settings.md +48 -5
  24. package/.agent-src/rules/ask-when-uncertain.md +56 -3
  25. package/.agent-src/rules/augment-portability.md +52 -1
  26. package/.agent-src/rules/augment-source-of-truth.md +10 -10
  27. package/.agent-src/rules/chat-history.md +171 -0
  28. package/.agent-src/rules/docker-commands.md +5 -7
  29. package/.agent-src/rules/docs-sync.md +13 -9
  30. package/.agent-src/rules/improve-before-implement.md +2 -0
  31. package/.agent-src/rules/onboarding-gate.md +94 -0
  32. package/.agent-src/rules/package-ci-checks.md +6 -5
  33. package/.agent-src/rules/roadmap-progress-sync.md +24 -13
  34. package/.agent-src/rules/size-enforcement.md +1 -1
  35. package/.agent-src/rules/skill-quality.md +1 -1
  36. package/.agent-src/rules/think-before-action.md +1 -0
  37. package/.agent-src/scripts/update_roadmap_progress.py +26 -9
  38. package/.agent-src/skills/check-refs/SKILL.md +1 -1
  39. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  40. package/.agent-src/skills/command-writing/SKILL.md +4 -3
  41. package/.agent-src/skills/file-editor/SKILL.md +2 -2
  42. package/.agent-src/skills/guideline-writing/SKILL.md +4 -3
  43. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
  44. package/.agent-src/skills/lint-skills/SKILL.md +1 -1
  45. package/.agent-src/skills/roadmap-management/SKILL.md +13 -10
  46. package/.agent-src/skills/rtk-output-filtering/SKILL.md +20 -30
  47. package/.agent-src/skills/rule-writing/SKILL.md +5 -5
  48. package/.agent-src/skills/terragrunt/SKILL.md +0 -8
  49. package/.agent-src/skills/upstream-contribute/SKILL.md +5 -4
  50. package/.agent-src/templates/agent-settings.md +86 -34
  51. package/.claude-plugin/marketplace.json +1 -1
  52. package/AGENTS.md +2 -2
  53. package/CHANGELOG.md +296 -0
  54. package/CONTRIBUTING.md +89 -40
  55. package/README.md +3 -3
  56. package/composer.json +2 -1
  57. package/config/agent-settings.template.yml +45 -6
  58. package/config/gitignore-block.txt +24 -0
  59. package/config/profiles/balanced.ini +5 -0
  60. package/config/profiles/full.ini +5 -0
  61. package/config/profiles/minimal.ini +5 -0
  62. package/docs/customization.md +30 -4
  63. package/docs/getting-started.md +52 -3
  64. package/docs/mcp.md +15 -4
  65. package/package.json +13 -2
  66. package/scripts/agent-config +155 -0
  67. package/scripts/chat_history.py +519 -0
  68. package/scripts/check_portability.py +151 -1
  69. package/scripts/install.py +55 -3
  70. package/scripts/install.sh +50 -21
  71. package/scripts/mcp_render.py +30 -16
  72. package/scripts/release.py +588 -0
  73. package/scripts/sync_agent_settings.py +211 -0
  74. package/scripts/sync_gitignore.py +226 -0
  75. package/templates/agent-config-wrapper.sh +47 -0
  76. package/.agent-src/commands/config-agent-settings.md +0 -126
  77. package/.agent-src/skills/eloquent/evals/last-run.json +0 -99
package/CONTRIBUTING.md CHANGED
@@ -118,51 +118,100 @@ the policy is interpreted as follows:
118
118
  | **Minor** (x.X.0) | New skills, rules, commands, or guidelines. New tool support. New installer flags. New `.agent-settings.yml` keys with safe defaults. |
119
119
  | **Patch** (x.x.X) | Wording fixes and improvements in existing skills, linter fixes, CI changes, documentation updates, internal refactors with no user-visible effect. |
120
120
 
121
- Release notes live in [`CHANGELOG.md`](CHANGELOG.md) and are generated
122
- automatically by [release-please](https://github.com/googleapis/release-please)
123
- from [Conventional Commits](#commit-conventions). Contributors do **not** edit
124
- the changelog by hand; writing clean commit subjects is how notes are authored.
121
+ Release notes live in [`CHANGELOG.md`](CHANGELOG.md) and are generated by
122
+ `scripts/release.py` from [Conventional Commits](#commit-conventions) since
123
+ the last tag. Contributors do **not** edit the changelog by hand; writing
124
+ clean commit subjects is how notes are authored.
125
125
 
126
126
  ### Release process
127
127
 
128
- Releases are fully automated by the
129
- [release-please workflow](.github/workflows/release-please.yml):
130
-
131
- 1. Every push to `main` triggers release-please. It scans Conventional Commits
132
- since the last tag and opens (or updates) a **Release PR** — a single PR
133
- that bumps `package.json`, `.claude-plugin/marketplace.json`, and
134
- `CHANGELOG.md` in one atomic commit.
135
- 2. Review the Release PR when you're ready to ship. Merging it makes
136
- release-please push the matching git tag and create the GitHub Release.
137
- 3. On the same workflow run, the `publish-npm` job takes over: it checks
138
- out the tagged commit, verifies `package.json.version == tag`, and runs
139
- `npm publish` against https://registry.npmjs.org with
140
- [npm provenance](https://docs.npmjs.com/generating-provenance-statements)
141
- so each tarball is cryptographically linked to the GitHub Actions run that
142
- built it.
143
- 4. The [Release Guard workflow](.github/workflows/release-guard.yml) runs on
144
- the pushed tag and fails loudly if `package.json.version` or
145
- `.claude-plugin/marketplace.json` disagree with the tag an independent
146
- cross-check that stays in place even with release-please driving the flow.
147
-
148
- Bump size is derived from commit types:
149
- `feat:` minor, `fix:` patch, `feat!:` / `fix!:` / `BREAKING CHANGE:` → major.
150
- Commits like `chore:`, `docs:`, `test:`, `ci:`, `refactor:` do not bump the
151
- version on their own and ride along in the next Release PR.
152
-
153
- #### Required repository secrets
154
-
155
- | Secret | Purpose |
156
- |---|---|
157
- | `NPM_TOKEN` | Granular Access Token for `@event4u/agent-config` with read-write scope. Used by the `publish-npm` job. Create in [npm → Access Tokens](https://www.npmjs.com/settings/event4u/tokens) and store under `Settings → Secrets and variables → Actions`. |
128
+ Releases are driven by a single command that owns the entire pipeline from
129
+ version bump to npm publish:
130
+
131
+ ```bash
132
+ task release # auto-detect bump from commits (default)
133
+ task release:major # force a major bump
134
+ task release:minor # force a minor bump
135
+ task release:patch # force a patch bump
136
+ task release:version -- 2.0.0 # pin an exact X.Y.Z target
137
+ task release -- --dry-run # preview only, no git/gh mutations
138
+ ```
139
+
140
+ All five tasks wrap [`scripts/release.py`](scripts/release.py). `task
141
+ release` auto-detects the bump level from Conventional Commits since the
142
+ last tag (`feat!:` / `BREAKING CHANGE:` → major, `feat:` → minor,
143
+ `fix:` / `perf:` patch; no-signal history falls through to patch).
144
+ The `release:major` / `:minor` / `:patch` variants force a specific bump
145
+ level when the commit history disagrees with what you actually want to
146
+ ship, and `release:version` pins an exact target (e.g. to jump past a
147
+ yanked version). All variants share the same pipeline:
148
+
149
+ 1. **Preflight** asserts the invocation is on `main` with a clean tree,
150
+ in sync with `origin/main`, that `gh` is authenticated, and that the
151
+ target tag does not already exist.
152
+ 2. **Plan + preview** — computes the target version, parses Conventional
153
+ Commits since the last tag, renders the CHANGELOG section, and prints
154
+ everything for review.
155
+ 3. **Confirm** a single `y/N` prompt (skippable with `--yes`).
156
+ 4. **Branch + bump** — creates `release/X.Y.Z`, bumps `package.json` and
157
+ `.claude-plugin/marketplace.json`, prepends the rendered section to
158
+ `CHANGELOG.md`.
159
+ 5. **Commit + push + PR** — commits as `release: X.Y.Z`, pushes the
160
+ branch, opens the release PR via `gh pr create`.
161
+ 6. **Wait for checks** — `gh pr checks --watch --required` (skippable with
162
+ `--no-wait`).
163
+ 7. **Merge** — `gh pr merge --merge --delete-branch` (merge-commit
164
+ strategy, required for the tag to land on a main commit).
165
+ 8. **Tag main** — fast-forwards `main`, tags the merge commit, pushes the
166
+ tag. This is what triggers [`publish-npm.yml`](.github/workflows/publish-npm.yml):
167
+ the workflow listens on bare-numeric tag pushes, verifies the tag
168
+ matches `package.json.version`, and runs `npm publish` against
169
+ https://registry.npmjs.org with
170
+ [npm provenance](https://docs.npmjs.com/generating-provenance-statements).
171
+ 9. **GitHub Release** — `gh release create X.Y.Z` with the rendered
172
+ changelog body as notes.
173
+
174
+ The override tasks (`release:major` / `:minor` / `:patch`) exist for the
175
+ cases where commit signal alone doesn't capture the release intent —
176
+ e.g. shipping a major without a formal breaking-change commit, or
177
+ downgrading a `feat:` release to patch because the feature was
178
+ effectively internal. The preview always shows which level was chosen
179
+ and what the rendered CHANGELOG looks like, so there's no surprise at
180
+ merge time.
181
+
182
+ [`release-guard.yml`](.github/workflows/release-guard.yml) still runs on
183
+ every tag push and fails loudly if `package.json.version` or
184
+ `.claude-plugin/marketplace.json.metadata.version` disagree with the tag —
185
+ an independent cross-check that stays in place regardless of how the tag
186
+ was produced.
187
+
188
+ #### Previewing without side effects
189
+
190
+ ```bash
191
+ task release -- --dry-run
192
+ ```
193
+
194
+ This runs the preflight + plan and prints the preview, but stops before
195
+ creating the branch. Use it to sanity-check the rendered CHANGELOG or to
196
+ see which bump level matches your commits.
197
+
198
+ #### npm authentication
199
+
200
+ `publish-npm.yml` authenticates to npm via
201
+ [OIDC Trusted Publishing](https://docs.npmjs.com/trusted-publishers) — no
202
+ `NPM_TOKEN` secret is required. The trust link is configured on the package
203
+ settings page on npmjs.com and bound to:
158
204
 
159
- #### Fallback: manual bump
205
+ - Repository: `event4u-app/agent-config`
206
+ - Workflow filename: `publish-npm.yml`
160
207
 
161
- `task release:bump -- X.Y.Z` is kept as an emergency fallback for the rare
162
- case where release-please is unavailable (workflow disabled, GitHub outage,
163
- hotfix on a branch other than `main`). In normal operation, do not use it —
164
- let the Release PR drive every version change. A manual bump does **not**
165
- publish to npm automatically; run `npm publish` locally after tagging.
208
+ The workflow declares `id-token: write` so GitHub Actions can mint a
209
+ short-lived OIDC ID token with claims about the run (repo, workflow, ref).
210
+ `npm publish` sends that token to the registry, which verifies the claims
211
+ against the trust link and on match authorizes the publish and records
212
+ a provenance attestation. If the workflow file is renamed or moved, the
213
+ trust link on npm must be updated accordingly or the publish step will
214
+ fail.
166
215
 
167
216
  ## License of contributions
168
217
 
package/README.md CHANGED
@@ -5,7 +5,7 @@ Teach your AI agents Laravel, PHP, testing, Git workflows, and **120+ more skill
5
5
  > Your agent learns to write Laravel code, run tests, create PRs, fix CI — and follows your team's coding standards while doing it.
6
6
 
7
7
  <p align="center">
8
- <strong>124 Skills</strong> · <strong>44 Rules</strong> · <strong>67 Commands</strong> · <strong>46 Guidelines</strong> · <strong>8 AI Tools</strong>
8
+ <strong>124 Skills</strong> · <strong>46 Rules</strong> · <strong>73 Commands</strong> · <strong>46 Guidelines</strong> · <strong>8 AI Tools</strong>
9
9
  </p>
10
10
 
11
11
  ---
@@ -238,7 +238,7 @@ can prioritize the right skills for extraction.
238
238
  | [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
239
239
  | [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
240
240
 
241
- → [Browse all 67 commands](.agent-src/commands/)
241
+ → [Browse all 73 commands](.agent-src/commands/)
242
242
 
243
243
  ---
244
244
 
@@ -263,7 +263,7 @@ Every developer gets the same behavior. No per-user setup needed.
263
263
  native slash-commands)
264
264
 
265
265
  > **What this means in practice:** Augment Code and Claude Code get the full
266
- > package (rules + 124 skills + 67 native commands). Cursor, Cline, Windsurf,
266
+ > package (rules + 124 skills + 73 native commands). Cursor, Cline, Windsurf,
267
267
  > Gemini CLI, and GitHub Copilot only get the **rules** natively; skills and
268
268
  > commands are available to them as documentation the agent can read, not as
269
269
  > first-class features.
package/composer.json CHANGED
@@ -7,7 +7,8 @@
7
7
  "php": ">=8.0"
8
8
  },
9
9
  "bin": [
10
- "bin/install.php"
10
+ "bin/install.php",
11
+ "scripts/agent-config"
11
12
  ],
12
13
  "archive": {
13
14
  "exclude": [
@@ -1,8 +1,9 @@
1
1
  # Agent Settings
2
2
  # This file is generated by scripts/install.py from
3
3
  # config/agent-settings.template.yml. It holds personal and project-wide
4
- # preferences. Run /config-agent-settings to re-sync it against the
5
- # template at .augment/templates/agent-settings.md.
4
+ # preferences. Run /onboard for first-run setup; for later edits, change
5
+ # values here directly or ask the agent (it follows the merge rules in
6
+ # .augment/guidelines/agent-infra/layered-settings.md).
6
7
 
7
8
  # --- Cost profile ---
8
9
  #
@@ -41,11 +42,12 @@ personal:
41
42
  # false = silently investigate, only report the conclusion
42
43
  play_by_play: false
43
44
 
44
- # --- Project / team preferences ---
45
- project:
46
45
  # Prefix PR comment replies with a bot icon 🤖 (true, false)
46
+ # Personal preference — each developer decides for themselves.
47
47
  pr_comment_bot_icon: false
48
48
 
49
+ # --- Project / team preferences ---
50
+ project:
49
51
  # Path to the PR template file (relative to project root)
50
52
  pr_template: .github/pull_request_template.md
51
53
 
@@ -71,12 +73,37 @@ eloquent:
71
73
  # magic_properties = use $model->column_name (Laravel default)
72
74
  access_style: getters_setters
73
75
 
76
+ # --- Chat history (crash recovery) ---
77
+ #
78
+ # Persistent JSONL log at .agent-chat-history (project root, git-ignored).
79
+ # Keeps a durable record of the conversation so a crashed or switched
80
+ # agent session can be resumed. See scripts/chat_history.py for the API.
81
+ chat_history:
82
+ # Log chat events to disk (true, false)
83
+ enabled: true
84
+
85
+ # Logging granularity
86
+ # per_turn = one entry per user↔agent turn (lightest)
87
+ # per_phase = one entry per workflow phase
88
+ # per_tool = one entry per tool call (most verbose)
89
+ frequency: __CHAT_HISTORY_FREQUENCY__
90
+
91
+ # Max file size in KB before overflow handling kicks in (integer)
92
+ max_size_kb: __CHAT_HISTORY_MAX_SIZE_KB__
93
+
94
+ # Overflow behavior
95
+ # rotate = drop oldest entries to stay under max_size_kb
96
+ # compress = mark for summarization on the next agent turn
97
+ on_overflow: __CHAT_HISTORY_ON_OVERFLOW__
98
+
74
99
  # --- Optional pipelines ---
75
100
  pipelines:
76
101
  # Skill improvement pipeline (true, false)
77
- # true = after meaningful tasks, propose learning capture and improvements
102
+ # true = after meaningful tasks, propose learning capture and improvements (default)
78
103
  # false = silent, no post-task analysis
79
- skill_improvement: false
104
+ # Included by every cost_profile except `custom`. Flip to false here if you
105
+ # want a silent agent; `custom` profile ignores this default entirely.
106
+ skill_improvement: true
80
107
 
81
108
  # --- Subagent orchestration ---
82
109
  #
@@ -94,3 +121,15 @@ subagents:
94
121
  # Maximum number of parallel subagent invocations
95
122
  # Integer, default 3. Set to 1 to serialize. Hard cap enforced by runtime.
96
123
  max_parallel: 3
124
+
125
+ # --- Onboarding ---
126
+ #
127
+ # Tracks whether the initial setup flow (/onboard) has been completed
128
+ # for this developer on this project. When false, the onboarding-gate
129
+ # rule prompts the user to run /onboard before starting normal work.
130
+ # Missing entirely = legacy project (treated as onboarded).
131
+ onboarding:
132
+ # Has the developer completed /onboard? (true, false)
133
+ # Set to true automatically by /onboard at the end. Flip to false if
134
+ # you want to re-run the flow.
135
+ onboarded: false
@@ -0,0 +1,24 @@
1
+ # Agent config — symlinked from vendor (auto-managed)
2
+ .augment/skills/
3
+ .augment/commands/
4
+ .augment/guidelines/
5
+ .augment/templates/
6
+ .augment/contexts/
7
+ .augment/scripts/
8
+ .augment/README.md
9
+
10
+ # Agent config — NOT ignored (real copies, may contain project overrides)
11
+ # .augment/rules/
12
+
13
+ # Agent config — CLI wrapper (auto-generated on every install)
14
+ /agent-config
15
+
16
+ # Agent config — personal settings (written by the installer)
17
+ .agent-settings.yml
18
+ .agent-settings
19
+ .agent-settings.backup.key-value
20
+
21
+ # Agent config — persistent chat history (crash recovery, never commit)
22
+ .agent-chat-history
23
+ .agent-chat-history.bak
24
+ .agent-chat-history.*.bak
@@ -8,3 +8,8 @@
8
8
  ; See docs/customization.md for the full profile description.
9
9
 
10
10
  cost_profile=balanced
11
+
12
+ ; Chat history (crash recovery) — balanced = phase-level traceability
13
+ chat_history_frequency=per_phase
14
+ chat_history_max_size_kb=256
15
+ chat_history_on_overflow=rotate
@@ -8,3 +8,8 @@
8
8
  ; profile description.
9
9
 
10
10
  cost_profile=full
11
+
12
+ ; Chat history (crash recovery) — full = tool-level traceability + summarize on overflow
13
+ chat_history_frequency=per_tool
14
+ chat_history_max_size_kb=512
15
+ chat_history_on_overflow=compress
@@ -8,3 +8,8 @@
8
8
  ; config/agent-settings.template.ini to produce the user's .agent-settings.
9
9
 
10
10
  cost_profile=minimal
11
+
12
+ ; Chat history (crash recovery) — minimal = lightest footprint
13
+ chat_history_frequency=per_turn
14
+ chat_history_max_size_kb=128
15
+ chat_history_on_overflow=rotate
@@ -52,20 +52,46 @@ those sections.
52
52
  | `personal.play_by_play` | `false` | Share intermediate findings during analysis |
53
53
  | `personal.open_edited_files` | `false` | Open edited files in IDE |
54
54
  | `personal.ide` | *(empty)* | IDE for file opening (`cursor`, `code`, `phpstorm`) |
55
- | `pipelines.skill_improvement` | `false` | Enable post-task learning capture |
55
+ | `pipelines.skill_improvement` | `true` | Post-task learning capture. Included in every profile except `custom`. |
56
+ | `chat_history.enabled` | `true` | Persistent JSONL log at `.agent-chat-history` for crash recovery. |
57
+ | `chat_history.frequency` | per profile | Logging granularity: `per_turn`, `per_phase`, or `per_tool` (see matrix below). |
58
+ | `chat_history.max_size_kb` | per profile | Max file size before overflow handling (see matrix below). |
59
+ | `chat_history.on_overflow` | per profile | `rotate` drops oldest, `compress` marks for summarization (see matrix below). |
60
+ | `onboarding.onboarded` | `false` | Whether `/onboard` has run. The `onboarding-gate` rule prompts for `/onboard` while this is `false`. |
56
61
 
57
62
  ### Cost profiles
58
63
 
59
64
  | Profile | Description |
60
65
  |---|---|
61
- | `minimal` | Zero extra surface. Rules, skills, and commands only. |
62
- | `balanced` | + Runtime dispatcher for skills that declare a shell command. |
63
- | `full` | + Tool adapters (GitHub / Jira, read-only, opt-in). |
66
+ | `minimal` | Rules, skills, and commands only. **Includes the learning loop.** Default. |
67
+ | `balanced` | `minimal` + Runtime dispatcher for skills that declare a shell command. |
68
+ | `full` | `balanced` + Tool adapters (GitHub / Jira, read-only, opt-in). |
64
69
  | `custom` | Ignore profile — every matrix value must be set explicitly. |
65
70
 
71
+ All profiles except `custom` ship with `pipelines.skill_improvement: true`,
72
+ so the agent captures learnings after meaningful tasks by default. Set it
73
+ to `false` in `.agent-settings.yml` to silence post-task analysis without
74
+ changing the profile.
75
+
66
76
  The authoritative matrix of all matrix-controlled settings lives in
67
77
  [`.agent-src.uncompressed/templates/agent-settings.md`](../.agent-src.uncompressed/templates/agent-settings.md).
68
78
 
79
+ ### Chat-history defaults per profile
80
+
81
+ `scripts/install.py` fills these placeholders from
82
+ [`config/profiles/*.ini`](../config/profiles) when it writes
83
+ `.agent-settings.yml`. Edit the values afterwards if you want different
84
+ behavior — the per-profile table is just the initial default.
85
+
86
+ | Setting | `minimal` | `balanced` | `full` |
87
+ |---|---|---|---|
88
+ | `chat_history.enabled` | `true` | `true` | `true` |
89
+ | `chat_history.frequency` | `per_turn` | `per_phase` | `per_tool` |
90
+ | `chat_history.max_size_kb` | `128` | `256` | `512` |
91
+ | `chat_history.on_overflow` | `rotate` | `rotate` | `compress` |
92
+
93
+ `custom` ignores these defaults — set every value explicitly.
94
+
69
95
  ---
70
96
 
71
97
  ## Project documentation
@@ -19,11 +19,28 @@ runs a bash payload sync and a Python bridge generator (Python 3 is
19
19
  recommended; without it the payload sync still runs). No Task or Make
20
20
  required for end users.
21
21
 
22
+ ## Project CLI — `./agent-config`
23
+
24
+ The installer writes `./agent-config` into your project root (gitignored)
25
+ so you can run a few package scripts without installing `go-task`,
26
+ `make`, or other build tools:
27
+
28
+ ```bash
29
+ ./agent-config mcp:render # sync MCP server config into .cursor/ and .windsurf/
30
+ ./agent-config roadmap:progress # regenerate agents/roadmaps-progress.md
31
+ ./agent-config first-run # guided setup
32
+ ./agent-config help # full command list
33
+ ```
34
+
35
+ The wrapper is regenerated on every `npm install` / `composer install`
36
+ and delegates to the copy under `node_modules/@event4u/agent-config/`
37
+ or `vendor/event4u/agent-config/`.
38
+
22
39
  ## First Run
23
40
 
24
41
  Open your agent and try the 3 tests below. That's it — no additional tools needed.
25
42
 
26
- **Optional:** For a guided walkthrough, run `task first-run` (requires [Task](https://taskfile.dev/)).
43
+ **Optional:** For a guided walkthrough, run `./agent-config first-run`.
27
44
 
28
45
  ---
29
46
 
@@ -81,7 +98,7 @@ Your agent is now:
81
98
  - **Respecting your codebase** — no conflicting patterns
82
99
  - **Following standards** — consistent code quality
83
100
 
84
- This is enforced automatically by 44 rules. No configuration needed.
101
+ This is enforced automatically by 46 rules. No configuration needed.
85
102
 
86
103
  ---
87
104
 
@@ -115,8 +132,40 @@ Your agent now understands slash commands:
115
132
  | `/create-pr` | Create PR with Jira-linked description |
116
133
  | `/fix-ci` | Fetch and fix GitHub Actions failures |
117
134
  | `/quality-fix` | Run and fix all quality checks |
135
+ | `/chat-history` | Inspect the persistent chat-history log |
136
+ | `/chat-history-resume` | Recover context after a crashed or switched session |
137
+ | `/chat-history-clear` | Wipe the chat-history log (with confirmation) |
138
+
139
+ → [Browse all 73 commands](../.agent-src/commands/)
140
+
141
+ ---
142
+
143
+ ## Crash recovery — `.agent-chat-history`
144
+
145
+ When `chat_history.enabled: true` in `.agent-settings.yml` (on by default
146
+ for every profile), the agent keeps a JSONL log of your conversation in
147
+ `.agent-chat-history` at the project root. The file is git-ignored and
148
+ rotates at the size configured in the profile (`128 KB` on `minimal`,
149
+ `256 KB` on `balanced`, `512 KB` on `full`).
150
+
151
+ When a chat opens and finds an existing log, the agent runs a
152
+ 4-state ownership check and chooses the right flow:
153
+
154
+ - **match** — this chat already owns the file. Append silently.
155
+ - **foreign** — a different session's file. You get 3 options:
156
+ Resume (adopt), New start (archive + init), Ignore (skip logging).
157
+ - **returning** — this chat once owned the file, but another session
158
+ took over in between. You get 3 options: Merge (your history in front
159
+ of the foreign entries), Replace (wipe foreign entries, keep yours
160
+ only), Continue (just leave the file and append from now on).
161
+ - **missing** — no file yet. Init and proceed.
162
+
163
+ Run `/chat-history-resume` to walk through the prompts explicitly, or
164
+ let the agent ask on the first turn of a new chat. All merge/replace/
165
+ resume paths read the on-disk entries into context before any write.
118
166
 
119
- [Browse all 67 commands](../.agent-src/commands/)
167
+ See the [`chat-history` rule](../.agent-src/rules/chat-history.md) and
168
+ [`scripts/chat_history.py`](../scripts/chat_history.py) for the mechanics.
120
169
 
121
170
  ---
122
171
 
package/docs/mcp.md CHANGED
@@ -48,13 +48,24 @@ values literal, or resolve them from the environment.
48
48
 
49
49
  ## Usage
50
50
 
51
+ **Consumer projects** — use the `./agent-config` CLI installed into the
52
+ project root:
53
+
54
+ ```bash
55
+ ./agent-config mcp:render # write in-project targets
56
+ ./agent-config mcp:render --claude-desktop # also write user-scope Claude Desktop
57
+ ./agent-config mcp:check # dry-run; exit 1 if targets are stale
58
+ ```
59
+
60
+ **Package maintainers** — the same commands are available through Taskfile:
61
+
51
62
  ```bash
52
- task mcp:render # write in-project targets
53
- task mcp:render -- --claude-desktop # also write user-scope Claude Desktop
54
- task mcp:check # dry-run; exit 1 if targets are stale
63
+ task mcp:render
64
+ task mcp:render -- --claude-desktop
65
+ task mcp:check
55
66
  ```
56
67
 
57
- Or invoke the script directly:
68
+ Or invoke the script directly (maintainer workflow, inside the package repo):
58
69
 
59
70
  ```bash
60
71
  python3 scripts/mcp_render.py [--source PATH] [--claude-desktop] [--check]
package/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
- "version": "1.9.1",
4
- "description": "Shared agent configuration skills, rules, commands, guidelines, and templates for AI coding tools",
3
+ "version": "1.12.0",
4
+ "description": "Shared agent configuration \u2014 skills, rules, commands, guidelines, and templates for AI coding tools",
5
5
  "license": "MIT",
6
6
  "private": false,
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/event4u-app/agent-config.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/event4u-app/agent-config/issues"
13
+ },
14
+ "homepage": "https://github.com/event4u-app/agent-config#readme",
7
15
  "files": [
8
16
  ".agent-src/",
9
17
  ".augment-plugin/",
@@ -21,6 +29,9 @@
21
29
  "composer.json",
22
30
  "llms.txt"
23
31
  ],
32
+ "bin": {
33
+ "agent-config": "scripts/agent-config"
34
+ },
24
35
  "scripts": {
25
36
  "postinstall": "bash scripts/postinstall.sh"
26
37
  },