devrites 7.0.14 → 7.0.16

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [7.0.16](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.15...v7.0.16) (2026-10-27)
6
+
7
+ ### Fixed
8
+
9
+ * **devrites:** print the command that applies suggested triggers ([#175](https://github.com/ViktorsBaikers/DevRites/issues/175)) ([b32b2b8](https://github.com/ViktorsBaikers/DevRites/commit/b32b2b86de8c4d66a9dfd51f23ae22b683f90979))
10
+
11
+ ## [7.0.15](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.14...v7.0.15) (2026-10-25)
12
+
13
+ ### Fixed
14
+
15
+ * **devrites:** keep duplicate reviews read-only ([#173](https://github.com/ViktorsBaikers/DevRites/issues/173)) ([602da4b](https://github.com/ViktorsBaikers/DevRites/commit/602da4bba7d020a1abdbc71a563c870ea4287141))
16
+
5
17
  ## [7.0.14](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.13...v7.0.14) (2026-10-25)
6
18
 
7
19
  ### Fixed
package/README.md CHANGED
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
31
31
  the feature to another engineer, the next session reads the same plan,
32
32
  decisions, and evidence before it continues.
33
33
 
34
- **Status:** [`v7.0.14`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.14): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
34
+ **Status:** [`v7.0.16`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.16): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
35
35
 
36
36
  This is the latest published release; `main` may contain unreleased work.
37
37
 
@@ -396,6 +396,9 @@ func RunContext(root string, args []string, stdout, stderr io.Writer) int {
396
396
  if suggested := suggestTriggers(manifest, root, featureDir, opts); len(suggested) > 0 {
397
397
  fmt.Fprintf(stdout, "triggers: suggested=[%s] (advisory — confirm each before use)\n",
398
398
  strings.Join(suggested, ","))
399
+ // The advisory list is only actionable if the agent is told how to
400
+ // apply it; no shipped guidance names the flag.
401
+ fmt.Fprintf(stdout, "triggers: apply with: %s\n", triggerApplyCommand(opts, suggested))
399
402
  }
400
403
  }
401
404
  if len(missingRequired) > 0 {
@@ -156,3 +156,26 @@ func afkAllowsParallel(content string) bool {
156
156
  }
157
157
  return n > 1
158
158
  }
159
+
160
+ // triggerApplyCommand renders the command that applies the suggested triggers.
161
+ // The suggestions are never applied automatically (see the file header), so the
162
+ // agent needs a copy-pasteable form or the advisory list has no consumer.
163
+ func triggerApplyCommand(opts contextOpts, suggested []string) string {
164
+ parts := []string{"devrites-engine", "context"}
165
+ if opts.slug != "" {
166
+ parts = append(parts, opts.slug)
167
+ }
168
+ for _, flag := range []struct{ name, value string }{
169
+ {"--phase", opts.phase},
170
+ {"--skill", opts.skill},
171
+ {"--role", opts.role},
172
+ {"--slice", opts.slice},
173
+ {"--out", opts.out},
174
+ } {
175
+ if flag.value != "" {
176
+ parts = append(parts, flag.name, flag.value)
177
+ }
178
+ }
179
+ parts = append(parts, "--trigger", strings.Join(suggested, ","))
180
+ return strings.Join(parts, " ")
181
+ }
@@ -87,10 +87,9 @@ from your side.
87
87
  cast, or silent fallback that hides an unclear invariant?
88
88
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
89
89
  shared resources, and sync/async consistency boundaries preserved without a cycle?
90
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
91
- mode that matches the packet's diff: `--base <ref>` when the feature's work
92
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
93
- reported cluster per
90
+ - Run `devrites-engine check dup` without a feature slug, following the
91
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
92
+ Triage each reported cluster per
94
93
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
95
94
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
96
95
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -93,10 +93,9 @@ from your side.
93
93
  cast, or silent fallback that hides an unclear invariant?
94
94
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
95
95
  shared resources, and sync/async consistency boundaries preserved without a cycle?
96
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
97
- mode that matches the packet's diff: `--base <ref>` when the feature's work
98
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
99
- reported cluster per
96
+ - Run `devrites-engine check dup` without a feature slug, following the
97
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
98
+ Triage each reported cluster per
100
99
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
101
100
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
102
101
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -91,10 +91,9 @@ from your side.
91
91
  cast, or silent fallback that hides an unclear invariant?
92
92
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
93
93
  shared resources, and sync/async consistency boundaries preserved without a cycle?
94
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
95
- mode that matches the packet's diff: `--base <ref>` when the feature's work
96
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
97
- reported cluster per
94
+ - Run `devrites-engine check dup` without a feature slug, following the
95
+ [read-only scan rule](.agents/skills/devrites-lib/reference/standards/code-review.md).
96
+ Triage each reported cluster per
98
97
  [`duplicate-code.md`](.agents/skills/devrites-lib/reference/standards/duplicate-code.md)
99
98
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
100
99
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -95,10 +95,9 @@ from your side.
95
95
  cast, or silent fallback that hides an unclear invariant?
96
96
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
97
97
  shared resources, and sync/async consistency boundaries preserved without a cycle?
98
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
99
- mode that matches the packet's diff: `--base <ref>` when the feature's work
100
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
101
- reported cluster per
98
+ - Run `devrites-engine check dup` without a feature slug, following the
99
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
100
+ Triage each reported cluster per
102
101
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
103
102
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
104
103
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -91,10 +91,9 @@ from your side.
91
91
  cast, or silent fallback that hides an unclear invariant?
92
92
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
93
93
  shared resources, and sync/async consistency boundaries preserved without a cycle?
94
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
95
- mode that matches the packet's diff: `--base <ref>` when the feature's work
96
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
97
- reported cluster per
94
+ - Run `devrites-engine check dup` without a feature slug, following the
95
+ [read-only scan rule](skill://devrites-lib/reference/standards/code-review.md).
96
+ Triage each reported cluster per
98
97
  [`duplicate-code.md`](skill://devrites-lib/reference/standards/duplicate-code.md)
99
98
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
100
99
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -92,10 +92,9 @@ from your side.
92
92
  cast, or silent fallback that hides an unclear invariant?
93
93
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
94
94
  shared resources, and sync/async consistency boundaries preserved without a cycle?
95
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
96
- mode that matches the packet's diff: `--base <ref>` when the feature's work
97
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
98
- reported cluster per
95
+ - Run `devrites-engine check dup` without a feature slug, following the
96
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
97
+ Triage each reported cluster per
99
98
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
100
99
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
101
100
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "7.0.14",
3
+ "version": "7.0.16",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",