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 +12 -0
- package/README.md +1 -1
- package/engine/internal/lib/context.go +3 -0
- package/engine/internal/lib/triggers.go +23 -0
- package/pack/.claude/agents/devrites-code-reviewer.md +3 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +3 -3
- package/pack/generated/claude/agents/devrites-code-reviewer.md +3 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +3 -3
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +3 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +3 -3
- package/pack/generated/devin/agents/devrites-code-reviewer.md +3 -4
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +3 -3
- package/pack/generated/omp/agents/devrites-code-reviewer.md +3 -4
- package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +3 -3
- package/pack/generated/pi/agents/devrites-code-reviewer.md +3 -4
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +3 -3
- package/package.json +1 -1
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.
|
|
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
|
|
91
|
-
|
|
92
|
-
|
|
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`
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
97
|
-
|
|
98
|
-
|
|
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`
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
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`
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
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`
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
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`
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
96
|
-
|
|
97
|
-
|
|
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`
|
|
44
|
-
|
|
45
|
-
|
|
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.
|
|
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",
|