@event4u/agent-config 1.14.0 → 1.15.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 (106) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +2 -2
  3. package/.agent-src/commands/chat-history-checkpoint.md +2 -2
  4. package/.agent-src/commands/chat-history-clear.md +1 -1
  5. package/.agent-src/commands/chat-history-resume.md +2 -2
  6. package/.agent-src/commands/chat-history.md +2 -2
  7. package/.agent-src/commands/check-current-md.md +43 -32
  8. package/.agent-src/commands/commit-in-chunks.md +43 -23
  9. package/.agent-src/commands/compress.md +34 -2
  10. package/.agent-src/commands/feature-roadmap.md +2 -2
  11. package/.agent-src/commands/fix-portability.md +2 -2
  12. package/.agent-src/commands/onboard.md +14 -5
  13. package/.agent-src/commands/optimize-augmentignore.md +9 -0
  14. package/.agent-src/commands/refine-ticket.md +9 -7
  15. package/.agent-src/commands/review-changes.md +35 -8
  16. package/.agent-src/commands/roadmap-create.md +13 -2
  17. package/.agent-src/commands/roadmap-execute.md +9 -7
  18. package/.agent-src/commands/set-cost-profile.md +8 -0
  19. package/.agent-src/commands/sync-agent-settings.md +9 -0
  20. package/.agent-src/commands/tests-execute.md +2 -3
  21. package/.agent-src/rules/artifact-engagement-recording.md +1 -1
  22. package/.agent-src/rules/augment-portability.md +56 -37
  23. package/.agent-src/rules/chat-history-cadence.md +109 -0
  24. package/.agent-src/rules/chat-history-ownership.md +123 -0
  25. package/.agent-src/rules/chat-history-visibility.md +96 -0
  26. package/.agent-src/rules/cli-output-handling.md +1 -1
  27. package/.agent-src/rules/command-suggestion.md +3 -2
  28. package/.agent-src/rules/commit-policy.md +44 -34
  29. package/.agent-src/rules/direct-answers.md +1 -1
  30. package/.agent-src/rules/language-and-tone.md +19 -15
  31. package/.agent-src/rules/non-destructive-by-default.md +18 -18
  32. package/.agent-src/rules/roadmap-progress-sync.md +133 -74
  33. package/.agent-src/rules/role-mode-adherence.md +1 -1
  34. package/.agent-src/rules/size-enforcement.md +2 -1
  35. package/.agent-src/rules/user-interaction.md +28 -4
  36. package/.agent-src/scripts/update_roadmap_progress.py +56 -4
  37. package/.agent-src/skills/blade-ui/SKILL.md +29 -10
  38. package/.agent-src/skills/command-writing/SKILL.md +15 -4
  39. package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
  40. package/.agent-src/skills/fe-design/SKILL.md +20 -15
  41. package/.agent-src/skills/file-editor/SKILL.md +9 -0
  42. package/.agent-src/skills/livewire/SKILL.md +26 -7
  43. package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
  44. package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
  45. package/.agent-src/skills/skill-writing/SKILL.md +3 -3
  46. package/.agent-src/skills/upstream-contribute/SKILL.md +2 -2
  47. package/.agent-src/templates/agent-settings.md +1 -1
  48. package/.agent-src/templates/roadmaps.md +9 -8
  49. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  50. package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
  51. package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
  52. package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
  53. package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
  54. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
  55. package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
  56. package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
  57. package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
  58. package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
  59. package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
  60. package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
  61. package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
  62. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
  63. package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
  64. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
  65. package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
  66. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
  67. package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
  68. package/.claude-plugin/marketplace.json +1 -1
  69. package/AGENTS.md +6 -4
  70. package/CHANGELOG.md +83 -8
  71. package/README.md +24 -23
  72. package/docs/MIGRATION.md +122 -0
  73. package/docs/architecture.md +83 -34
  74. package/docs/contracts/STABILITY.md +95 -0
  75. package/docs/contracts/adr-chat-history-split.md +132 -0
  76. package/docs/contracts/adr-command-suggestion.md +146 -0
  77. package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
  78. package/docs/contracts/adr-product-ui-track.md +384 -0
  79. package/docs/contracts/adr-prompt-driven-execution.md +187 -0
  80. package/docs/contracts/agent-memory-contract.md +149 -0
  81. package/docs/contracts/artifact-engagement-flow.md +262 -0
  82. package/docs/contracts/command-clusters.md +126 -0
  83. package/docs/contracts/command-suggestion-flow.md +148 -0
  84. package/docs/contracts/implement-ticket-flow.md +628 -0
  85. package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
  86. package/docs/contracts/linear-ai-three-layers.md +131 -0
  87. package/docs/contracts/rule-interactions.md +107 -0
  88. package/docs/contracts/rule-interactions.yml +142 -0
  89. package/docs/contracts/ui-stack-extension.md +236 -0
  90. package/docs/contracts/ui-track-flow.md +338 -0
  91. package/docs/getting-started.md +2 -2
  92. package/docs/installation.md +42 -6
  93. package/docs/migrations/commands-1.15.0.md +112 -0
  94. package/docs/ui-track-mental-model.md +121 -0
  95. package/package.json +1 -1
  96. package/scripts/build_linear_digest.py +4 -4
  97. package/scripts/check_portability.py +2 -0
  98. package/scripts/check_public_links.py +185 -0
  99. package/scripts/check_references.py +1 -0
  100. package/scripts/lint_no_new_atomic_commands.py +179 -0
  101. package/scripts/lint_rule_interactions.py +149 -0
  102. package/scripts/memory_lookup.py +1 -1
  103. package/scripts/release.py +297 -64
  104. package/scripts/skill_linter.py +14 -0
  105. package/scripts/update_counts.py +10 -0
  106. package/.agent-src/rules/chat-history.md +0 -200
@@ -73,7 +73,7 @@ Show the handoff prompt in a fenced code block and say:
73
73
  and without any persistent file.
74
74
  - [`/chat-history-resume`](chat-history-resume.md) is **pull-based**: the
75
75
  new chat reads `.agent-chat-history` from disk (written by the
76
- [`chat-history`](../rules/chat-history.md) rule). Works only on the
76
+ [`chat-history`](../rules/chat-history-ownership.md) rule). Works only on the
77
77
  same machine and same repo, but captures more detail (every phase /
78
78
  tool call / decision the prior session logged).
79
79
 
@@ -75,8 +75,8 @@ RISIKO-CHECK:
75
75
  For each change:
76
76
 
77
77
  1. **Read the file** before modifying.
78
- 2. **Make the change** using `str-replace-editor`.
79
- 3. **Check for downstream effects** — use `codebase-retrieval` to find callers.
78
+ 2. **Make the change** with the file-edit tool available to the agent.
79
+ 3. **Check for downstream effects** — search the codebase for callers.
80
80
  4. **Update related code** if signatures or behavior changed.
81
81
 
82
82
  ### 4. Quality checks
@@ -104,7 +104,7 @@ If the helper returned `skipped_cadence`, surface it:
104
104
 
105
105
  - The command writes through the same ownership-state machine as
106
106
  hooks — a `foreign` log triggers the
107
- [`chat-history`](../rules/chat-history.md) Foreign-Prompt before any
107
+ [`chat-history`](../rules/chat-history-ownership.md) Foreign-Prompt before any
108
108
  append. This is intentional; the checkpoint must not silently
109
109
  hijack another session's log.
110
110
  - The `phase` payload key is required. Other keys are accepted but
@@ -117,7 +117,7 @@ If the helper returned `skipped_cadence`, surface it:
117
117
 
118
118
  ## See also
119
119
 
120
- - [`chat-history`](../rules/chat-history.md) — the rule defining the
120
+ - [`chat-history`](../rules/chat-history-ownership.md) — the rule defining the
121
121
  conditional Iron Law (HOOK platforms vs CHECKPOINT/MANUAL platforms)
122
122
  - [`/chat-history`](chat-history.md) — read-only status display
123
123
  - [`/chat-history-resume`](chat-history-resume.md) — adopt + load
@@ -96,7 +96,7 @@ effect — this command is scoped to the file on disk only.
96
96
 
97
97
  ## See also
98
98
 
99
- - [`chat-history`](../rules/chat-history.md) — the rule that writes the file
99
+ - [`chat-history`](../rules/chat-history-ownership.md) — the rule that writes the file
100
100
  - [`/chat-history`](chat-history.md) — status inspection
101
101
  - [`/chat-history-resume`](chat-history-resume.md) — load + adopt instead of wipe
102
102
  - [`agent-settings` template](../templates/agent-settings.md) — `chat_history.*` reference
@@ -17,7 +17,7 @@ flow: silent summarize, adopt, merge, or replace.
17
17
 
18
18
  Use after a crashed chat, after switching tools (Augment → Claude Code),
19
19
  or when the agent showed the foreign- or returning-session prompt from
20
- the [`chat-history`](../rules/chat-history.md) rule and the user picked
20
+ the [`chat-history`](../rules/chat-history-ownership.md) rule and the user picked
21
21
  "resume".
22
22
 
23
23
  ## When NOT to use
@@ -174,7 +174,7 @@ the user decides what to do next.
174
174
 
175
175
  ## See also
176
176
 
177
- - [`chat-history`](../rules/chat-history.md) — the rule that triggers
177
+ - [`chat-history`](../rules/chat-history-ownership.md) — the rule that triggers
178
178
  this command via the foreign- and returning-session prompts
179
179
  - [`/chat-history`](chat-history.md) — status inspection without adopting
180
180
  - [`/chat-history-clear`](chat-history-clear.md) — wipe instead of adopt
@@ -12,7 +12,7 @@ suggestion:
12
12
  # /chat-history
13
13
 
14
14
  Inspect `.agent-chat-history` — the JSONL log maintained by the
15
- [`chat-history`](../rules/chat-history.md) rule for crash recovery.
15
+ [`chat-history`](../rules/chat-history-ownership.md) rule for crash recovery.
16
16
 
17
17
  Shows:
18
18
 
@@ -100,7 +100,7 @@ append may trigger overflow handling.
100
100
 
101
101
  ## See also
102
102
 
103
- - [`chat-history`](../rules/chat-history.md) — the rule that writes the file
103
+ - [`chat-history`](../rules/chat-history-ownership.md) — the rule that writes the file
104
104
  - [`/chat-history-resume`](chat-history-resume.md) — adopt + load
105
105
  - [`/chat-history-clear`](chat-history-clear.md) — wipe
106
106
  - [`agent-settings` template](../templates/agent-settings.md) — `chat_history.*` reference
@@ -9,23 +9,23 @@ suggestion:
9
9
 
10
10
  # check-current-md
11
11
 
12
- Manual runner for [`md-language-check`](../skills/md-language-check/SKILL.md).
13
- Use to spot-check an `.md` file the agent did not just edit, or to audit
14
- before opening a PR.
12
+ Manual runner for the [`md-language-check`](../skills/md-language-check/SKILL.md)
13
+ skill. Use to spot-check an `.md` file the agent did not just edit, or to
14
+ audit a file before opening a PR.
15
15
 
16
16
  ## Instructions
17
17
 
18
18
  ### 1. Resolve target paths
19
19
 
20
- User passed paths use those. Else default to the file currently open
21
- in the editor (per `personal.ide` open-file context). No file open and
22
- no path passed:
20
+ If the user passed one or more paths, use those. Otherwise, default to
21
+ the file currently open in the editor (per `personal.ide` open-file
22
+ context). If no file is open and no path was passed:
23
23
 
24
24
  ```
25
25
  > ❌ No target file. Pass a path: /check-current-md path/to/file.md
26
26
  ```
27
27
 
28
- Stop.
28
+ Stop here.
29
29
 
30
30
  ### 2. Run the checker
31
31
 
@@ -33,8 +33,11 @@ Stop.
33
33
  python3 scripts/check_md_language.py <path> [<path> …] --format json
34
34
  ```
35
35
 
36
- Exit codes: `0` clean, `1` violations (continue to step 3), `3`
37
- internal error (surface stderr, stop).
36
+ Exit codes:
37
+
38
+ - `0` → no findings; report and stop
39
+ - `1` → findings present; continue to step 3
40
+ - `3` → internal error; surface stderr and stop
38
41
 
39
42
  ### 3. Display findings
40
43
 
@@ -46,7 +49,7 @@ internal error (surface stderr, stop).
46
49
  Found: {count} violation(s) across {files} file(s)
47
50
  ```
48
51
 
49
- Per violation:
52
+ For each violation:
50
53
 
51
54
  ```
52
55
  {file}:{line} — kind: {umlaut|de_word} — match: `{matched_text}`
@@ -57,14 +60,16 @@ Group by file when multiple files are scanned.
57
60
 
58
61
  ### 4. Classify and propose fixes
59
62
 
63
+ For each violation, propose one of:
64
+
60
65
  | Cause | Proposed fix |
61
66
  |---|---|
62
- | German sentence in body prose | Translate to English |
67
+ | German sentence in body prose | Translate the line to English |
63
68
  | Quoted German token used as example | Move into a labeled `DE: … · EN: …` block |
64
- | Meta-doc that documents trigger words | Append `<!-- md-language-check: ignore -->` to the line |
65
- | Intentionally bilingual but unlabeled | Reformat as labeled anchor block |
69
+ | Meta-documentation that documents trigger words | Append `<!-- md-language-check: ignore -->` to the line |
70
+ | Line is intentionally bilingual but unlabeled | Reformat as labeled anchor block |
66
71
 
67
- Summary:
72
+ Present a summary:
68
73
 
69
74
  ```
70
75
  Proposed fixes:
@@ -76,20 +81,21 @@ Summary:
76
81
  > 3. Skip — report only
77
82
  ```
78
83
 
79
- Recommendation: **2 — Apply interactively** when ≥3 findings,
80
- **1 — Apply all fixes** for ≤2 findings or all-translation diffs.
84
+ Recommendation: **2 — Apply interactively** when ≥3 findings, **1 —
85
+ Apply all fixes** for ≤2 findings or when all are pure translations.
81
86
 
82
87
  ### 5. Apply fixes
83
88
 
84
89
  Edit only the source-of-truth file:
85
90
 
86
- - `.agent-src.uncompressed/` → edit directly
87
- - `.agent-src/` → edit the matching `.agent-src.uncompressed/` file,
88
- then `bash scripts/compress.sh --sync`
89
- - `.augment/` → same as `.agent-src/` (it's a projection)
90
- - `agents/` → edit directly (no compression layer)
91
+ - Path under `.agent-src.uncompressed/` → edit there directly
92
+ - Path under `.agent-src/` → edit the matching
93
+ `.agent-src.uncompressed/` file instead, then run
94
+ `bash scripts/compress.sh --sync`
95
+ - Path under `.augment/` → same as `.agent-src/` (it's a projection)
96
+ - Path under `agents/` → edit directly (no compression layer)
91
97
 
92
- Re-run after fixes:
98
+ After all fixes, re-run:
93
99
 
94
100
  ```bash
95
101
  python3 scripts/check_md_language.py <path> [<path> …]
@@ -97,27 +103,32 @@ python3 scripts/check_md_language.py <path> [<path> …]
97
103
 
98
104
  ### 6. Mark hashes (only if `.agent-src.uncompressed/` was edited)
99
105
 
106
+ For each modified source file:
107
+
100
108
  ```bash
101
109
  python3 scripts/compress.py --mark-done "{relative_path}"
102
110
  ```
103
111
 
104
- Keeps `.compression-hashes.json` consistent.
112
+ This keeps `.compression-hashes.json` consistent with the new content.
105
113
 
106
114
  ## Rules
107
115
 
108
- - **Never edit `.augment/` directly** — it's a generated projection
109
- ([`augment-source-of-truth`](../rules/augment-source-of-truth.md))
110
- - **Per-line ignore marker** is reserved for meta-documentation that
111
- must quote German tokens; not a generic mute
112
- - **Frontmatter is exempt** checker skips it; don't try to "fix" it
113
- - **Do NOT commit or push** — leave the working tree to the user
116
+ - **Never edit `.augment/` directly** — it's a generated projection.
117
+ Per [`augment-source-of-truth`](../rules/augment-source-of-truth.md),
118
+ the source is `.agent-src.uncompressed/`.
119
+ - **Per-line ignore marker is reserved** for meta-documentation that
120
+ must quote German tokens; do NOT use it as a generic mute.
121
+ - **Frontmatter is exempt** — the checker skips YAML frontmatter at
122
+ the head of the file; do not try to "fix" frontmatter.
123
+ - **Do NOT commit or push** — finishing the check leaves the working
124
+ tree to the user.
114
125
 
115
126
  ## When NOT to use
116
127
 
117
128
  - Project content outside `.agent-src*/`, `.augment/`, or `agents/`
118
- follows a different language policy
119
- - During autonomous edits the [`md-language-check`](../skills/md-language-check/SKILL.md)
120
- skill already gates saves; this command is for **manual** spot-checks
129
+ follows a different language policy — do not enforce English there.
130
+ - During autonomous edits, the [`md-language-check`](../skills/md-language-check/SKILL.md)
131
+ skill already gates saves; this command is for **manual** spot-checks.
121
132
 
122
133
  ## See also
123
134
 
@@ -11,10 +11,10 @@ suggestion:
11
11
 
12
12
  # commit-in-chunks
13
13
 
14
- Auto-split and commit all local changes in one go. Use when you want
15
- commits made without being asked to confirm each batch. Sibling of
16
- [`/commit`](commit.md), which waits for approval; this command skips
17
- that step.
14
+ Auto-split and commit all local changes in one go. Use this when you
15
+ want commits made without being asked to confirm each batch. Sibling
16
+ of [`/commit`](commit.md), which presents the plan and waits for
17
+ approval. This command skips the approval step.
18
18
 
19
19
  Per [`autonomous-execution`](../rules/autonomous-execution.md), the
20
20
  agent does **not** commit on its own initiative — invoking this
@@ -30,29 +30,36 @@ git diff --stat
30
30
  git diff --cached --stat
31
31
  ```
32
32
 
33
- No uncommitted changes report "Nothing to commit." and stop.
33
+ If there are no uncommitted changes (staged or unstaged), report
34
+ "Nothing to commit." and stop.
34
35
 
35
36
  ### 2. Determine the ticket number
36
37
 
37
- - Extract ticket ID from current branch (e.g. `feat/DEV-1234/...` → `DEV-1234`).
38
- - No ticket ID omit scope: write `chore: ...` not `chore(): ...`. Do **not** ask the user.
38
+ - Extract the ticket ID from the current branch name (e.g. `feat/DEV-1234/...`
39
+ → `DEV-1234`).
40
+ - If no ticket ID is found, omit the scope from the messages — write
41
+ `chore: ...` not `chore(): ...`. Do **not** ask the user for one.
39
42
 
40
43
  ### 3. Analyze and split
41
44
 
42
- Group changed files into logical units per [`/commit`](commit.md) step 3:
45
+ Group changed files into logical units following [`/commit`](commit.md)
46
+ step 3 grouping rules:
43
47
 
44
48
  - Same feature / fix → one commit.
45
49
  - Migration + corresponding model/seeder → one commit.
46
- - Test + class under test → one commit.
47
- - Style-only (ECS/Rector/formatter) → separate `style:` / `chore:` commit when mixed with logic.
50
+ - Test + the class under test → one commit.
51
+ - Style-only changes (ECS/Rector/formatter) → separate `style:` /
52
+ `chore:` commit when mixed with logic changes.
48
53
  - Truly unrelated change → its own commit.
49
54
 
50
55
  Splitting rules:
51
- - **Do NOT split arbitrarily** — only when logically independent.
56
+ - **Do NOT split arbitrarily** — only when the changes are logically
57
+ independent.
52
58
  - **Prefer fewer, coherent commits** over many tiny ones.
53
- - **Tests go with the code they test** unless test-only changes are large and noisy.
59
+ - **Tests go with the code they test** unless test-only changes are
60
+ large and noisy.
54
61
 
55
- Generate messages per [`commit-conventions`](../rules/commit-conventions.md).
62
+ Generate commit messages per [`commit-conventions`](../rules/commit-conventions.md).
56
63
 
57
64
  ### 4. Commit immediately
58
65
 
@@ -63,10 +70,13 @@ git add {files...}
63
70
  git commit -m "{message}"
64
71
  ```
65
72
 
66
- No "looks good?" prompt. No confirmation. User invoked the command knowing the plan would execute.
73
+ No "looks good?" prompt. No confirmation step. The user invoked this
74
+ command knowing the plan would be executed.
67
75
 
68
76
  ### 5. Report
69
77
 
78
+ Show a summary:
79
+
70
80
  ```
71
81
  Created N commits:
72
82
  1. {sha1} feat(DEV-1234): {summary}
@@ -80,19 +90,29 @@ Include `git log --oneline -N` output for verification.
80
90
 
81
91
  - **Never push** — pushing remains explicit per [`scope-control`](../rules/scope-control.md#git-operations--permission-gated).
82
92
  - **Never modify files** — only stage and commit existing changes.
83
- - **Do NOT add untracked files** unless clearly part of the change (check `git status` first).
84
- - **Follow commit conventions** per [`commit-conventions`](../rules/commit-conventions.md).
85
- - **Stop on first failure** if `git commit` fails (hook rejection, pre-commit lint error), stop, report, leave staged files for the user. Do not continue with remaining commits.
86
- - **No interactive prompts** — fail fast over hanging on input.
93
+ - **Do NOT add untracked files** unless they are clearly part of the
94
+ change (check with `git status` first).
95
+ - **Follow commit conventions** as defined in [`commit-conventions`](../rules/commit-conventions.md).
96
+ - **Stop on first failure** — if `git commit` fails (hook rejection,
97
+ pre-commit lint error), stop, report the error, and do not continue
98
+ with the remaining planned commits. Leave staged files for the user
99
+ to inspect.
100
+ - **No interactive prompts** — fail fast over hanging waiting for
101
+ input.
87
102
 
88
103
  ## When NOT to use
89
104
 
90
- - User hasn't seen the diff and would benefit from review → use [`/commit`](commit.md).
91
- - Diff includes large unrelated changes the user might want to reorganise → use [`/commit`](commit.md).
92
- - Repo has a pre-commit hook requiring manual response → fix the hook or use `/commit`.
105
+ - The user has not seen the diff yet and would benefit from review →
106
+ use [`/commit`](commit.md) instead.
107
+ - The diff includes large unrelated changes the user might want to
108
+ reorganise → use [`/commit`](commit.md).
109
+ - The repo has a pre-commit hook that requires manual response → fix
110
+ the hook or use `/commit`.
93
111
 
94
112
  ## See also
95
113
 
96
114
  - [`/commit`](commit.md) — split + present plan + wait for approval
97
- - [`autonomous-execution`](../rules/autonomous-execution.md) — the rule that defines the no-ask commit default this command opts out of
98
- - [`commit-conventions`](../rules/commit-conventions.md) message format
115
+ - [`autonomous-execution`](../rules/autonomous-execution.md) — the
116
+ rule that defines the no-ask commit default this command opts out of
117
+ - [`commit-conventions`](../rules/commit-conventions.md) — message
118
+ format
@@ -34,7 +34,8 @@ bash scripts/compress.sh --changed
34
34
  This lists only `.md` files whose source has changed since the last compression (based on
35
35
  stored SHA-256 hashes). If no files changed → you're done.
36
36
 
37
- If you need to see ALL files regardless of change status: `bash scripts/compress.sh --list`.
37
+ If you need to see ALL files regardless of change status:
38
+ `bash scripts/compress.sh --list`.
38
39
 
39
40
  ## Step 3: Compress each changed .md file
40
41
 
@@ -71,6 +72,7 @@ For each changed `.md` file:
71
72
  - Concrete validation checks
72
73
  - Gotchas based on real failure patterns
73
74
  - Anti-patterns that prevent recurring failures
75
+ - **Iron Law sections** — see "Iron Laws — do not touch" below
74
76
  5. **Enrich (SKILL.md files only):** During compression, also improve agent-effectiveness:
75
77
  - **Validation steps:** If a Procedure ends with a vague validation ("check if it works"),
76
78
  replace with concrete checks (expected output, commands to verify, specific conditions)
@@ -140,9 +142,39 @@ Show a summary table with per-category stats (files compressed, avg savings).
140
142
  (useful after an initial full compression or when bootstrapping the hash file).
141
143
  - A file with no stored hash is always treated as "changed".
142
144
 
145
+ ## Iron Laws — do not touch
146
+
147
+ Sections under headings matching `Iron Law`, `Iron Laws`, or `The Iron Law` (any
148
+ heading level, numbered variants like `Iron Law 1` included) are **load-bearing
149
+ behavioral rules**. Compression rules above do **not** apply to them.
150
+
151
+ For every Iron Law section in a source file:
152
+
153
+ - **Copy the heading verbatim**, exact text, exact `#` level. NEVER downgrade
154
+ `## Iron Law` to `### Iron Law` or to inline `**Iron Law:**`.
155
+ - **Copy the fenced code block byte-for-byte**, including capitalization, line
156
+ breaks, and trailing punctuation.
157
+ - **Copy the negation clauses verbatim** — `NO X`, `NEVER Y`, `NOT Z`. These
158
+ are the law's exception denials; stripping them weakens the rule.
159
+ - **Caveman the prose, keep every passage** — every paragraph, every list
160
+ item, and every fenced code block from the source must appear in the
161
+ compressed output, in order. Drop articles, shorten phrasing, primitive
162
+ grammar, terse cave-speak — all encouraged. What's forbidden is dropping
163
+ whole sentences, merging two paragraphs into one, or skipping a bullet.
164
+ One paragraph → one paragraph; one bullet → one bullet.
165
+ - **No word-count budget** — compress the prose as hard as caveman style
166
+ allows. The check is structural (passage count), not quantitative.
167
+
168
+ `scripts/check_compression.py` enforces these mechanically — `iron_law_missing`,
169
+ `iron_law_passage_dropped`, and `iron_law_heading_downgrade` are `error`-level
170
+ and block CI.
171
+
172
+ If an Iron Law section genuinely contains filler (rare): edit the SOURCE in
173
+ `.agent-src.uncompressed/`, not the compressed copy. Source is the truth.
174
+
143
175
  ## Compression quality checklist
144
176
 
145
- **Also apply the `preservation-guard` rule** — strongest validation, example, anti-pattern, and decision hints must survive compression.
177
+ **Also apply the `preservation-guard` rule** — strongest validation, example, anti-pattern, and decision hints must survive compression. Iron Laws are non-negotiable.
146
178
 
147
179
  After compressing each file, verify:
148
180
 
@@ -176,8 +176,8 @@ What's next?
176
176
  ### Rules
177
177
 
178
178
  - **Do NOT commit or push.**
179
- - **Do NOT include commit steps** unless user explicitly requested them.
180
- See [`commit-policy`](../rules/commit-policy.md#never-write-commit-steps-into-roadmaps-unsolicited).
179
+ - **Do NOT include commit steps in the roadmap** unless the user explicitly
180
+ requested them. See [`commit-policy`](../rules/commit-policy.md#never-write-commit-steps-into-roadmaps-unsolicited).
181
181
  - **Do NOT modify the feature plan** beyond updating the Roadmaps section and status.
182
182
  - **Always link roadmaps back to the feature** and vice versa.
183
183
  - **Use the roadmap template** from `agents/roadmaps/template.md`.
@@ -92,8 +92,8 @@ python3 scripts/compress.py --mark-done "{relative_path}"
92
92
 
93
93
  ## Rules
94
94
 
95
- - **Always fix in `.agent-src.uncompressed/`** — never edit `.agent-src/` or `.augment/` directly.
96
- - **Run `bash scripts/compress.sh --sync`** after fixing to regenerate `.agent-src/` and `.augment/`.
95
+ - **Always fix in `.agent-src.uncompressed/`** — never edit `.augment/` directly.
96
+ - **Copy to `.augment/`** after fixing.
97
97
  - **Do NOT commit or push.**
98
98
  - **`agents/` directory is allowed** to have project-specific references — skip it.
99
99
  - **Do NOT fix references in code blocks** unless the code block is clearly a template.
@@ -8,6 +8,8 @@ suggestion:
8
8
  rationale: "Gated by the onboarding-gate rule already; never inferred from prose."
9
9
  ---
10
10
 
11
+ <!-- cloud_safe: noop -->
12
+
11
13
  # /onboard
12
14
 
13
15
  Centralized first-run flow. Bundles what used to be scattered "ask once"
@@ -158,10 +160,10 @@ you ask it to change a value.
158
160
 
159
161
  ### 9. Maintainer-only feature pointer
160
162
 
161
- One-screen hint after the summary — no question, no prompt. Pointer for
162
- maintainers who want to opt into artefact-engagement telemetry. Consumers
163
- can ignore it; the feature is **default-off** and stays off unless
164
- explicitly enabled.
163
+ Print a one-screen hint after the summary — no question, no prompt, just a
164
+ pointer for maintainers who want to opt into the artefact-engagement
165
+ telemetry layer. Consumers can ignore it; the feature is **default-off**
166
+ and stays off unless explicitly enabled.
165
167
 
166
168
  ```
167
169
  ℹ️ Maintainer telemetry (opt-in)
@@ -172,7 +174,7 @@ explicitly enabled.
172
174
 
173
175
  The log is local-only JSONL — nothing uploaded, nothing shared across
174
176
  projects. Reports: ./agent-config telemetry:report
175
- Contract + privacy floor: agents/contexts/artifact-engagement-flow.md
177
+ Contract + privacy floor: docs/contracts/artifact-engagement-flow.md
176
178
  ```
177
179
 
178
180
  Skip this block in cloud surfaces (no settings file, no log path).
@@ -187,6 +189,13 @@ Skip this block in cloud surfaces (no settings file, no log path).
187
189
  - Never overwrite a non-empty value without asking (applies to `user_name`
188
190
  and `ide`).
189
191
 
192
+ ## Cloud Behavior
193
+
194
+ On cloud surfaces (Claude.ai Web, Skills API) this command is **fully inert** —
195
+ there is no `.agent-settings.yml` to write, no `onboarding.onboarded` key to
196
+ flip, and no local IDE/rtk environment to capture. First-run setup is a
197
+ local-agent concern; the cloud agent should proceed without invoking it.
198
+
190
199
  ## See also
191
200
 
192
201
  - [`onboarding-gate`](../rules/onboarding-gate.md) — rule that triggers this command
@@ -8,6 +8,8 @@ suggestion:
8
8
  rationale: "Niche maintenance tool with no recurring NL trigger."
9
9
  ---
10
10
 
11
+ <!-- cloud_safe: noop -->
12
+
11
13
  # /optimize-augmentignore
12
14
 
13
15
  Scans the project to find files that waste tokens in Augment's retrieval index
@@ -263,3 +265,10 @@ echo "Rules ignored: $rules_count"
263
265
  - **Never ignore always-active rules** — only auto-loaded rules (those with `description` frontmatter) may be ignored.
264
266
  - **Never ignore meta/agent-system skills** — `agent-docs-writing-writing`, `commands`, `context-create`, `override-management`, `guidelines`, `project-docs`, `roadmap-management`, `naming`, `skill-reviewer`, `file-editor`, `copilot-config`, `copilot-agents-optimization`.
265
267
  - **Restore previously ignored skills** when the stack changes (e.g., Vue added to project → restore `vue` skill).
268
+
269
+ ## Cloud Behavior
270
+
271
+ On cloud surfaces (Claude.ai Web, Skills API) this command is **fully inert** —
272
+ `.augmentignore` is an Augment-Code-specific retrieval-index config; it has
273
+ no equivalent on the cloud surfaces and no file to write. Index pruning is
274
+ a local-agent concern.
@@ -34,16 +34,18 @@ If no input resolves: ask **one** focused question:
34
34
 
35
35
  ### 2. Pick the output language
36
36
 
37
- Apply the skill's language-strategy block. First hit wins:
37
+ Apply the skill's language-strategy block. Fallback order, first hit wins:
38
38
 
39
39
  1. **User-message language** — latest user message decides. Honours
40
40
  the global `language-and-tone` iron law.
41
- 2. **Ticket body language** — minimal invocation (`/refine-ticket PROJ-123`
42
- with no prose) mirrors the ticket's own language.
43
- 3. **`.agent-settings.yml` default** fallback when both silent; English
44
- when absent.
45
-
46
- Quoted identifiers stay native; only prose mirrors the picked language.
41
+ 2. **Ticket body language** — when the invocation is minimal
42
+ (`/refine-ticket PROJ-123` with no prose), mirror the ticket's
43
+ own language (summary + description).
44
+ 3. **`.agent-settings.yml` default** — fallback when both are silent;
45
+ English when the setting is absent.
46
+
47
+ Quoted identifiers (keys, paths, commands) stay native; only the
48
+ prose mirrors the picked language.
47
49
 
48
50
  ### 3. Run the refine-ticket skill
49
51
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: review-changes
3
- skills: [code-review, subagent-orchestration, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality]
3
+ skills: [code-review, subagent-orchestration, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, git-workflow]
4
4
  description: Self-review local changes before creating a PR — dispatches to four specialized judges (bug, security, tests, quality) and consolidates verdicts
5
5
  disable-model-invocation: true
6
6
  suggestion:
@@ -17,7 +17,29 @@ Review all uncommitted and committed-but-not-pushed changes against
17
17
  the default branch (`main`) by dispatching to four specialized judge
18
18
  sub-skills and consolidating their verdicts.
19
19
 
20
- ### 1. Gather the diff
20
+ ### 1. Update the current branch
21
+
22
+ Before gathering the diff, run [`/prepare-for-review`](prepare-for-review.md)
23
+ to make sure the current branch is up to date with its base chain:
24
+
25
+ - Detect the current branch with `git rev-parse --abbrev-ref HEAD`.
26
+ - If the branch is `main` → skip this step (nothing to prepare).
27
+ - Otherwise, search for an open GitHub PR whose head is the current
28
+ branch.
29
+ - If exactly one open PR is found → invoke `/prepare-for-review`
30
+ with that PR number. It will update `main`, fetch and merge the
31
+ full branch chain into the current branch, and leave the current
32
+ branch checked out.
33
+ - If no open PR is found → fall back to a minimal local update:
34
+ `git fetch origin main` and `git merge origin/main --no-edit` on
35
+ the current branch. Abort on conflict and report.
36
+ - If multiple PRs are found → ask the user which PR to use before
37
+ proceeding.
38
+ - If `/prepare-for-review` aborts (merge conflict, network error,
39
+ etc.) → stop the review here and surface the error. Do **not**
40
+ continue with stale data.
41
+
42
+ ### 2. Gather the diff
21
43
 
22
44
  - `git diff origin/main..HEAD --stat` — overview of changed files
23
45
  - `git diff origin/main..HEAD` — full committed-but-not-pushed diff
@@ -25,7 +47,7 @@ sub-skills and consolidating their verdicts.
25
47
 
26
48
  If both diffs are empty, **stop** — nothing to review.
27
49
 
28
- ### 2. Resolve the judge model
50
+ ### 3. Resolve the judge model
29
51
 
30
52
  Read `.agent-settings.yml`:
31
53
 
@@ -33,7 +55,7 @@ Read `.agent-settings.yml`:
33
55
 
34
56
  Unknown alias → stop. Never silently fall back.
35
57
 
36
- ### 3. Dispatch to the four judges
58
+ ### 4. Dispatch to the four judges
37
59
 
38
60
  Each judge receives **the same diff plus the task context** (ticket,
39
61
  PR body, commit messages) and runs independently. The judges are:
@@ -59,7 +81,7 @@ Pick dispatch mode based on diff size and environment:
59
81
  Each judge returns its own `Judge / Model / Target / Verdict /
60
82
  Issues` block in the format defined by that skill.
61
83
 
62
- ### 4. Consolidate
84
+ ### 5. Consolidate
63
85
 
64
86
  Produce one combined report:
65
87
 
@@ -69,7 +91,7 @@ Produce one combined report:
69
91
  - Highlight any finding that multiple judges flagged — those are the
70
92
  highest-confidence items
71
93
 
72
- ### 5. Decide next steps
94
+ ### 6. Decide next steps
73
95
 
74
96
  - If **any** judge returned `reject` → stop; the approach must change
75
97
  before proceeding
@@ -77,7 +99,7 @@ Produce one combined report:
77
99
  ask before fixing 🟡 findings, report 🟢 as suggestions
78
100
  - If all four returned `apply` → the diff is ready; report and stop
79
101
 
80
- ### 6. Quality tools (optional)
102
+ ### 7. Quality tools (optional)
81
103
 
82
104
  After the consolidated report, ask:
83
105
 
@@ -97,8 +119,12 @@ or the equivalent configured command).
97
119
  files still gets coverage feedback — `judge-test-coverage` treats
98
120
  "production changed, no test changed" as its primary finding
99
121
  - Project-specific syntax checks (e.g. `php -l`, linter pre-pass) are
100
- out of scope for the judges and belong in the optional step 6
122
+ out of scope for the judges and belong in the optional step 7
101
123
  quality tools hand-off
124
+ - The new step 1 (`/prepare-for-review`) is **best-effort**: if no
125
+ open PR exists for the current branch, it falls back to a plain
126
+ `git fetch && git merge origin/main`. Existing invocations that
127
+ ran on a fully detached or pre-PR branch keep working
102
128
 
103
129
  ## Use this command when
104
130
 
@@ -119,6 +145,7 @@ or the equivalent configured command).
119
145
 
120
146
  ## See also
121
147
 
148
+ - [`/prepare-for-review`](prepare-for-review.md) — updates `main` and merges the full base-branch chain into the target branch (used by step 1)
122
149
  - [`subagent-orchestration`](../skills/subagent-orchestration/SKILL.md) — dispatch and model-pairing rules
123
150
  - [`/do-and-judge`](do-and-judge.md) — implementer + judge loop for a single change
124
151
  - [`/judge`](judge.md) — standalone judge, no review-changes dispatch