devlyn-cli 4.2.19 → 4.2.21

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/README.md CHANGED
@@ -35,7 +35,7 @@ That's it. The installer asks:
35
35
 
36
36
  In a project, AGENTS.md readers load the skills from `.agents/skills/`; Claude Code loads only `.claude/skills/` and reads AGENTS.md when the project has no CLAUDE.md; a CLAUDE.md the installer creates imports an existing AGENTS.md (`@AGENTS.md`). Global installs skills only: `~/.agents/skills/` (omp, Pi, Grok) and `~/.codex/skills/` (Codex), plus `~/.claude/skills/` for Claude Code. Every target gets the `devlyn-ideate` skill and the `devlyn-engines` utility. In Codex / omp / Pi, invoke them as skills (`$devlyn-ideate`); in Claude Code and Grok they're slash commands (`/devlyn-ideate`). Rerunning refreshes skills and the managed instruction block while preserving project rules outside it. See [Migration from earlier versions](#migration-from-earlier-versions) for legacy migration and merge recovery.
37
37
 
38
- Without prompts, `npx devlyn-cli -y` installs AGENTS.md + `.agents/skills/` plus every target this project already has; add `--claude` for Claude Code. With `--global` it installs for every project on this machine, plus `~/.claude/skills/` with `--claude` or when it already has a devlyn install. After a project install or update, the installer names the changed files to commit, including installed files a `.gitignore` hides, so teammates and `/devlyn-ideate` drains can use them.
38
+ Without prompts, `npx devlyn-cli -y` installs AGENTS.md + `.agents/skills/` plus every target this project already has; add `--claude` for Claude Code. With `--global` it installs for every project on this machine, plus `~/.claude/skills/` with `--claude` or when it already has a devlyn install. The installer leaves Git to you: it prints no commit guidance after a project install or update. When Git ignores some, but not all, files of an installed skill folder, it prints one line with their count and an example ignore rule.
39
39
 
40
40
  `npx devlyn-cli update` — Update every devlyn install already here (this project and your global skill folders) to this version; installs nothing new.
41
41
 
@@ -62,7 +62,7 @@ Give ideate an intent or a document. It writes a loop package — a meta-prompt
62
62
  | `/devlyn-ideate status` | Pending, active, accepted and failed counts; the next runnable task; delivery and recovery blockers. |
63
63
  | `/devlyn-ideate drain` | Runs the queue serially and hands-free. |
64
64
 
65
- A bare intent is planned and, when your request authorizes the work, added and drained without another confirmation; no arguments shows status. Questions come only when the answer changes behavior, scope, data semantics, acceptance or delivery, each with a recommended answer; `--autonomous` plans without questions, recording ordinary low-consequence, reversible defaults within the request, including user-visible details; material ambiguity in intended outcomes, persistent data or state semantics, or public surface beyond the request stops planning with a concrete question. Each task runs in its own worktree with the executor pinned by `/devlyn-engines` (default: the CLI you opened; Pi and Grok need a pin) under your installed CLAUDE.md/AGENTS.md instructions. Tasks start from committed state, the branch you added the loop on or the remote base for `auto`/`pr`, so commit the installer's changes and whatever a plan depends on before adding a loop, and push them for `auto`/`pr`. It is marked `[x]` only when its declared checks pass on its committed source and its required reviews cover it: the checks run through the drain's runner (a wholly clean run the executor lists for that source is reused; the drain runs any other check itself), and review coverage is attested by records the executor submits; a failed task becomes `[F]` with its reason and blocks only its dependents. An interrupted drain resumes without repeating accepted work. `--local-only` (or `--no-push`) keeps delivery local: each accepted task stays on its `devlyn/<loop-id>/<task-id>` branch in a retained worktree, nothing is merged or pushed, and the drain report's `Bring into` command is `git merge --ff <latest accepted task branch>`.
65
+ A bare intent is planned and, when your request authorizes the work, added and drained without another confirmation; no arguments shows status. Questions come only when the answer changes behavior, scope, data semantics, acceptance or delivery, each with a recommended answer; `--autonomous` plans without questions, recording ordinary low-consequence, reversible defaults within the request, including user-visible details; material ambiguity in intended outcomes, persistent data or state semantics, or public surface beyond the request stops planning with a concrete question. Each task runs in its own worktree with the executor pinned by `/devlyn-engines` (default: the CLI you opened; Pi and Grok need a pin) under your installed CLAUDE.md/AGENTS.md instructions. Tasks start from committed state, the branch you added the loop on or the remote base for `auto`/`pr`, so a task's worktree holds only what is committed there. A task would run without installed CLAUDE.md/AGENTS.md that exist only in this checkout, so add stops while they differ from HEAD, and drain waits while they differ from the task's start commit. It is marked `[x]` only when its declared checks pass on its committed source and its required reviews cover it: the checks run through the drain's runner (a wholly clean run the executor lists for that source is reused; the drain runs any other check itself), and review coverage is attested by records the executor submits; a failed task becomes `[F]` with its reason and blocks only its dependents. An interrupted drain resumes without repeating accepted work. `--local-only` (or `--no-push`) keeps delivery local: each accepted task stays on its `devlyn/<loop-id>/<task-id>` branch in a retained worktree, nothing is merged or pushed, and the drain report's `Bring into` command is `git merge --ff <latest accepted task branch>`.
66
66
 
67
67
  ### Delivery
68
68
 
@@ -113,14 +113,14 @@ Upgrading to 4.1.0: `npx devlyn-cli -y` in a 4.x project keeps its Claude Code i
113
113
  current and adds `AGENTS.md` + `.agents/skills/`. Earlier releases put the Codex, omp, Pi
114
114
  and Grok skills in `~/.codex/skills`, `~/.agents/skills` and `~/.grok/skills`; a project
115
115
  install no longer refreshes them and names each one it finds. Refresh them with `--global`
116
- or delete them; delete `~/.grok/skills`, since Grok now reads `~/.agents/skills`.
116
+ or delete them; global installs and `update` clean Devlyn’s retired `~/.grok/skills` entries automatically.
117
117
  `npx devlyn-cli agents` was removed.
118
118
 
119
119
  <!-- legacy-surface-map:begin — retired command names below are documented as OLD, not current; lint Checks 5e and 10c skip this block -->
120
120
  Upgrading to 4.2.0: `/devlyn-resolve` and the pipeline helpers only it used are retired;
121
121
  no measured replacement ships in their place. Run the installer again where devlyn is
122
122
  installed. It removes the `devlyn-resolve` folders (and pre-4.0.0 `devlyn:resolve` ones)
123
- only when they are unchanged devlyn-cli copies; others are left in place and named. It
123
+ by their exact retired names, including edited copies and links (link targets stay intact). It
124
124
  removes the Stop hook it added to `.claude/settings.json` while keeping your own hooks,
125
125
  and names the other settings it once added for the pipeline
126
126
  (`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` and its `.devlyn` and git permissions) without
@@ -148,7 +148,7 @@ devlyn skill by its old name or path (for example Codex `[[skills.config]]` or o
148
148
  `disabledExtensions`) needs the new name. A project that committed the old `devlyn:*`
149
149
  folders checks out on Windows once that re-sync is committed.
150
150
 
151
- Earlier versions of devlyn-cli shipped 16+ slash commands. The iter-0034 Phase 4 cutover (2026-05-04) and the 2026-05-14 follow-up consolidated them, 4.0.0 renamed every devlyn skill to the Agent Skills naming standard (`devlyn-<name>`: lowercase, digits and hyphens, the same as its folder), and after 4.1.0 resolve and design-ui were retired and the queue moved into ideate. Upgrades remove legacy skill directories only when they are unchanged devlyn-cli copies; others are left in place and named.
151
+ Earlier versions of devlyn-cli shipped 16+ slash commands. The iter-0034 Phase 4 cutover (2026-05-04) and the 2026-05-14 follow-up consolidated them, 4.0.0 renamed every devlyn skill to the Agent Skills naming standard (`devlyn-<name>`: lowercase, digits and hyphens, the same as its folder), and after 4.1.0 resolve and design-ui were retired and the queue moved into ideate. Install/update deletes exact retired Devlyn names in its scope; generic files and old instruction text are removed only with evidence matching shipped copies. Other skills, edited generic files, and your instruction text are preserved; instruction changes keep a recovery backup.
152
152
 
153
153
  | Old command | Now use |
154
154
  |---|---|
@@ -0,0 +1,97 @@
1
+ {
2
+ "source": "scripts/update-cleanup-history.js: LF-normalized Git blobs from first-parent config/agents-config/optional-skills history and all tags; excludes optional-addon hashes and third-party web-design-guidelines",
3
+ "files": {
4
+ ".claude/agents/evaluator.md": [
5
+ "146a229b0218938bca2de6b426cda642ae9826dc2dfa8c3687c6fd5de9160cf6",
6
+ "537c4af183aac692ff2abecfd42b4fe0854549b2ecf14fca3bc6a86ae58837fa",
7
+ "b8a48da212e070bab9d4818630cee2cd0de9846ad4e3a34b3a45f0a9a1a913b6",
8
+ "d5615e73af2401ea7418e02fc76d850506e59a64fff00f084ad272e474e138ba"
9
+ ],
10
+ ".claude/commit-conventions.md": [
11
+ "7e75c25d3067dba650781c57f1d94b52090badc2cb034b00759e9c6ed74a5a94"
12
+ ],
13
+ ".claude/templates/prompt-templates.md": [
14
+ "19029bcff7c4e9b579011d93a4f6eecfbe6a260f3cee12072252a6a7402d79e7",
15
+ "3fb7804dbd6e026def99829dda5daccc56a68e93997d8e6f540ee98bb288329e",
16
+ "7318764baa5dc7cd406bc8552848653ad6368982b43faecc6618f697a9ae059f",
17
+ "e583be4175366101bfa0df512b1106f65b18f215b4717eadebbc8129c3d96be5"
18
+ ],
19
+ ".claude/templates/template-feature.spec.md": [
20
+ "16eb59b48f062aa0894b3fe8ba1c8f9e970652fda0bdd0d9e3248acb8e40d3bc"
21
+ ],
22
+ ".claude/templates/template-product-spec.md": [
23
+ "42b5b2c32fd72b1324432da0cf652cf11854e3ac40e020b812ef64d894116d92"
24
+ ],
25
+ ".cursor/rules/evaluator.md": [
26
+ "146a229b0218938bca2de6b426cda642ae9826dc2dfa8c3687c6fd5de9160cf6",
27
+ "537c4af183aac692ff2abecfd42b4fe0854549b2ecf14fca3bc6a86ae58837fa",
28
+ "b8a48da212e070bab9d4818630cee2cd0de9846ad4e3a34b3a45f0a9a1a913b6",
29
+ "d5615e73af2401ea7418e02fc76d850506e59a64fff00f084ad272e474e138ba"
30
+ ],
31
+ ".github/copilot/agents/evaluator.md": [
32
+ "146a229b0218938bca2de6b426cda642ae9826dc2dfa8c3687c6fd5de9160cf6",
33
+ "537c4af183aac692ff2abecfd42b4fe0854549b2ecf14fca3bc6a86ae58837fa",
34
+ "b8a48da212e070bab9d4818630cee2cd0de9846ad4e3a34b3a45f0a9a1a913b6",
35
+ "d5615e73af2401ea7418e02fc76d850506e59a64fff00f084ad272e474e138ba"
36
+ ],
37
+ ".windsurf/rules/evaluator.md": [
38
+ "146a229b0218938bca2de6b426cda642ae9826dc2dfa8c3687c6fd5de9160cf6",
39
+ "537c4af183aac692ff2abecfd42b4fe0854549b2ecf14fca3bc6a86ae58837fa",
40
+ "b8a48da212e070bab9d4818630cee2cd0de9846ad4e3a34b3a45f0a9a1a913b6",
41
+ "d5615e73af2401ea7418e02fc76d850506e59a64fff00f084ad272e474e138ba"
42
+ ]
43
+ },
44
+ "skills": {
45
+ "code-health-standards": [
46
+ "962a82b5ebeafac515f81f5c68494c67dbf31c3e3e453f23c4452d4725e21355",
47
+ "df2838904c938aa0306ed333cc460cfc5c2cf0ffa20bb5ade57067c6e0acf9be"
48
+ ],
49
+ "code-review-standards": [
50
+ "3bc8587a9143487328be2470dec8df17a19cb14f94e6ec916ed58de660d0e1c4",
51
+ "56abe5736f505c53ca9ce14087a9891cc8661be783abaec7b5b924e3f339cc2a",
52
+ "586dde5014f9ac2f9a13d43fa1c8c257a3ae998a3fc1b867b23b3b2e44f77eca",
53
+ "9c906f2b2a88c2d0aaeec9714405945da5177de6ec433f1acf520c6c4385b875"
54
+ ],
55
+ "feature-gap-analysis": [
56
+ "d2328d990305280cf0d08443130cdba63eb5ed8040f5e5b6719c58050c4d3ada"
57
+ ],
58
+ "investigate": [
59
+ "5025c346d1e246d49681650e7b630477d1ef67f4357e5fd7f3e5f02e5a860288"
60
+ ],
61
+ "root-cause-analysis": [
62
+ "0eac104bfcde8bdf14d4c284be6f3f4cb243219a679bf569433c2465df84c6c3",
63
+ "1793dcb0f72621c78cc20c905fe5dd7a0af3115e904bf737a6a983a7b9d2c2b6",
64
+ "aab22d1bddc66c6a798f08cdf7be9b45fbe80ccfc928b068ef5d9e2ad951bdda",
65
+ "e200ddd04196435af3162a9e13595f8eb5ac68b06465026e0155e453b1bd1c93",
66
+ "e66d15a9585c07e819acfd89c1f6d030517130f6d8f8924bda3120307949fb2e"
67
+ ],
68
+ "ui-implementation-standards": [
69
+ "13c709c0e2b01ae94997c271043a685200e969192d2056534bd787c5682874e8",
70
+ "1ff64816454171b3f879e9e5cf3c15e3d9c5f2ffc81b73262155f6bc93a1b054",
71
+ "505ca42b1efd53925d51c570b21df4e05cbc6bc640dd1f7f4e03f15d2d4437c5",
72
+ "e2473e35474e78f2b581e225cb33a1e711bb79519a02e9780fc9606e582b878f"
73
+ ],
74
+ "workflow-routing": [
75
+ "7fec2bb20d808a873a975d64a6223e404bc5b328c800760bb77257ae6b2f467a",
76
+ "8bfdaeff2ce48d5a79b5653de3bbe0d56a61a7fd750ed3ad11149fec5a502ecf"
77
+ ]
78
+ },
79
+ "evaluators": [
80
+ {
81
+ "length": 3081,
82
+ "sha256": "01a566bbecfb7eaef16b53c2000dc58050a3348072019868fbe23cbd6503095d"
83
+ },
84
+ {
85
+ "length": 1559,
86
+ "sha256": "04403ca3008e87adbd0f75f3136a20d6d5262eb7576f8d31cec2d03686dc9898"
87
+ },
88
+ {
89
+ "length": 2980,
90
+ "sha256": "481557b50619e1d47c209b1e1c916919361031f57cf2ee8f27644c2a101cfdb6"
91
+ },
92
+ {
93
+ "length": 2980,
94
+ "sha256": "6c7066a91aa18a62b1257956f0adf4f08603034d8a6eb2fae052a1ea8d0d9a4b"
95
+ }
96
+ ]
97
+ }