@hecer/yoke 1.5.0 → 1.6.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 (52) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +29 -7
  4. package/README.md +56 -35
  5. package/canon/context/GLOSSARY.md +11 -0
  6. package/canon/manifest.yaml +36 -30
  7. package/canon/skills/ATTRIBUTION.md +28 -0
  8. package/canon/skills/codebase-design/DEEPENING.md +15 -0
  9. package/canon/skills/codebase-design/DESIGN-IT-TWICE.md +12 -0
  10. package/canon/skills/codebase-design/SKILL.md +39 -0
  11. package/canon/skills/document-release/SKILL.md +5 -0
  12. package/canon/skills/domain-modeling/ADR-FORMAT.md +19 -0
  13. package/canon/skills/domain-modeling/CONTEXT-FORMAT.md +39 -0
  14. package/canon/skills/domain-modeling/SKILL.md +35 -0
  15. package/canon/skills/no-ai-slop/SKILL.md +103 -0
  16. package/canon/skills/no-ai-slop/eval.md +43 -0
  17. package/canon/skills/resolving-merge-conflicts/SKILL.md +18 -0
  18. package/canon/skills/writing-for-agents/SKILL-MECHANICS.md +27 -0
  19. package/canon/skills/writing-for-agents/SKILL.md +42 -0
  20. package/canon/tools/serena.md +5 -1
  21. package/dist/canon/manifest.js +2 -0
  22. package/dist/canon/skill-package.js +113 -0
  23. package/dist/canon/validate.js +16 -1
  24. package/dist/context/command.js +4 -1
  25. package/dist/context/context.js +6 -0
  26. package/dist/loop/dispatcher.js +1 -1
  27. package/dist/loop/loop.js +26 -0
  28. package/dist/loop/parallel-command.js +3 -0
  29. package/dist/loop/run-command.js +11 -0
  30. package/dist/loop/watchdog.js +28 -11
  31. package/dist/loop/worker.js +11 -0
  32. package/dist/retrofit/apply.js +22 -7
  33. package/dist/retrofit/command.js +4 -1
  34. package/dist/retrofit/config.js +4 -0
  35. package/dist/retrofit/context-actions.js +1 -1
  36. package/dist/retrofit/detect.js +2 -0
  37. package/dist/retrofit/planners/claude.js +2 -6
  38. package/dist/retrofit/planners/codex.js +3 -7
  39. package/dist/retrofit/planners/gemini.js +11 -1
  40. package/dist/retrofit/report.js +5 -0
  41. package/dist/retrofit/skill-actions.js +66 -0
  42. package/dist/retrofit/tools.js +4 -1
  43. package/dist/retrofit/ui-detect.js +83 -0
  44. package/dist/scan/gate.js +36 -0
  45. package/docs/PUBLISHING.md +2 -2
  46. package/docs/superpowers/plans/2026-08-20-automatic-ui-design-gate.md +59 -0
  47. package/docs/superpowers/plans/2026-08-20-capability-skills-and-context.md +51 -0
  48. package/docs/superpowers/plans/2026-08-20-complete-skill-packages-and-invocation.md +59 -0
  49. package/docs/superpowers/plans/2026-08-20-windows-reliability-and-release.md +67 -0
  50. package/docs/superpowers/specs/2026-08-20-skill-capabilities-and-reliability-design.md +391 -0
  51. package/gemini-extension.json +1 -1
  52. package/package.json +4 -4
@@ -0,0 +1,67 @@
1
+ # Windows Reliability and 1.6.0 Release Implementation Plan
2
+
3
+ > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan.
4
+
5
+ **Goal:** Make provider-process termination and cleanup reliable under Windows suite load, then document, package, and publish the verified 1.6.0 release.
6
+
7
+ **Architecture:** Preserve scoped PID ownership and fail-closed records. Treat `taskkill` success as a termination request, then confirm that the recorded PID is gone with a bounded wait before removing ownership evidence or allowing cleanup. Release only one commit through the documented GitHub and npm channels.
8
+
9
+ **Tech Stack:** Node child processes, Windows `taskkill`, Vitest, npm, GitHub CLI, Git.
10
+
11
+ ---
12
+
13
+ ## Task 1: Reproduce and pin the Windows race
14
+
15
+ **Files:** `tests/agents/provider-process.test.ts`, `tests/agents/provider-process-record-failure.test.ts`, `tests/loop/watchdog.test.ts`
16
+
17
+ 1. Record the isolated baseline: both provider-process files pass together, establishing that the failure depends on suite load rather than basic semantics.
18
+ 2. Run the affected files repeatedly and run the full suite with verbose failure output. Capture whether time is spent before `close`, during `taskkill`, or in temporary-directory removal.
19
+ 3. Add a failing watchdog unit test where `taskkill` returns zero while the injected liveness probe remains true for two polls; termination must not yet be confirmed.
20
+ 4. Add a failing provider test that completion after cancellation leaves neither a live recorded PID nor a removable-directory race.
21
+
22
+ ## Task 2: Confirm termination before releasing ownership
23
+
24
+ **Files:** `src/loop/watchdog.ts`, `src/agents/process.ts`, `tests/loop/watchdog.test.ts`, `tests/agents/provider-process.test.ts`
25
+
26
+ 1. Extend `killProcessTreeForCleanup` on Windows with an injectable liveness probe and bounded 25 ms polling after successful `taskkill`.
27
+ 2. Return `true` only when the PID is confirmed absent; return `false` when the bounded confirmation expires. Keep POSIX process-group behavior unchanged.
28
+ 3. In `startProviderProcess`, preserve the ownership record whenever confirmation is false; remove it only on natural close without requested termination or confirmed termination.
29
+ 4. Ensure stdin is closed before the first termination request and force escalation remains bounded and PID-scoped.
30
+ 5. Run watchdog and provider-process tests ten times. Do not add a process-name kill or unconditional record deletion.
31
+
32
+ ## Task 3: Run the complete quality ladder
33
+
34
+ **Files:** all changed source and tests
35
+
36
+ 1. Run focused Canon, Retrofit, context, scan, loop, and agent suites.
37
+ 2. Run `rtk npm run lint` and `rtk npm run yoke -- validate canon`.
38
+ 3. Run `rtk npm test` at least twice on Windows and check for remaining `yoke-provider-*` temporary directories or owned provider processes after each run.
39
+ 4. Fix only attributable failures and repeat the narrowest failing test before returning to the full suite.
40
+
41
+ ## Task 4: Update release documentation with the new prose skills
42
+
43
+ **Files:** `README.md`, `CONTRIBUTING.md`, `CHANGELOG.md`, `docs/PUBLISHING.md`
44
+
45
+ 1. Update README behavior, examples, skill count/table, complete-package installation, invocation policy, `unslop-ui` versus `no-ai-slop`, UI auto detection, and glossary context.
46
+ 2. Document package resources and invocation-policy authoring in CONTRIBUTING; add a 1.6.0 changelog entry and only adjust publishing guidance when the actual workflow changed.
47
+ 3. Run `no-ai-slop` Detect mode over changed prose, make only supported voice-preserving edits, then run the global read-only provenance audit.
48
+ 4. Run `rtk npm run docs:update` and `rtk npm run docs:check`.
49
+
50
+ ## Task 5: Synchronize and verify 1.6.0 metadata
51
+
52
+ **Files:** `package.json`, `package-lock.json`, `canon/manifest.yaml`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, `gemini-extension.json`, generated README metadata
53
+
54
+ 1. Set every documented release field to `1.6.0` and regenerate lock and documentation metadata through project scripts.
55
+ 2. Run `rtk npm run prepublishOnly` and inspect `npm pack --dry-run` output for required skill resources, especially `no-ai-slop/eval.md`.
56
+ 3. Review `rtk git diff --check`, `rtk git status`, and the release diff; exclude `.omo/` and unrelated user files.
57
+ 4. Commit the verified implementation and metadata on `main`.
58
+
59
+ ## Task 6: Publish and verify both channels
60
+
61
+ **Files:** no further source edits after the release commit
62
+
63
+ 1. Push `main`, create annotated tag `v1.6.0` at the verified commit, and push the tag.
64
+ 2. Create the GitHub Release from that tag and verify its URL and commit.
65
+ 3. Publish `@hecer/yoke@1.6.0` to npm. If npm alone requires an operator OTP, stop that channel and report it precisely.
66
+ 4. Verify `git ls-remote`, the GitHub Release, `npm view @hecer/yoke version`, and package contents all resolve to 1.6.0.
67
+
@@ -0,0 +1,391 @@
1
+ # Yoke skill capabilities and reliability design
2
+
3
+ **Date:** 2026-08-20
4
+ **Target release:** 1.6.0
5
+ **Status:** Approved design, awaiting written-spec review
6
+
7
+ ## Goal
8
+
9
+ Yoke 1.6.0 will improve how skills are packaged, selected, and applied without removing an
10
+ existing capability or changing existing projects silently. The release will add a writing
11
+ quality skill, stronger domain and codebase design guidance, automatic UI quality checks for
12
+ detected UI projects, and a focused fix for the Windows provider-process test failures.
13
+
14
+ The work is split into independently verified layers. A layer may proceed only after its focused
15
+ tests pass. Release checks cover the integrated result.
16
+
17
+ ## User outcomes
18
+
19
+ 1. A skill can contain references, templates, assets, and scripts instead of being limited to one
20
+ `SKILL.md` file.
21
+ 2. Skill authors can state whether a skill may be selected automatically or must be started by the
22
+ user.
23
+ 3. Claude, Codex, and Gemini receive the closest native form of the same Canon policy.
24
+ 4. Writers can invoke `no-ai-slop` to edit or inspect prose while keeping their meaning and voice.
25
+ 5. UI projects receive `unslop-ui` checks automatically after Yoke detects a supported UI stack,
26
+ unless the project disables or adjusts the check.
27
+ 6. Agents use a shared domain vocabulary and design code through small, deliberate interfaces.
28
+ 7. Merge conflicts are resolved from the intent of both changes and verified before completion.
29
+ 8. Windows provider processes stop and release temporary directories within deterministic test
30
+ bounds.
31
+ 9. Users can install Yoke 1.6.0 through every existing release channel.
32
+
33
+ ## Non-goals
34
+
35
+ - Importing every skill from `mattpocock/skills`.
36
+ - Adding an automatic upstream synchronization job.
37
+ - Claiming that prose was written by AI or assigning an AI probability score.
38
+ - Making qualitative prose style a build-blocking gate.
39
+ - Replacing Yoke's existing TDD, debugging, review, planning, or release skills.
40
+ - Redesigning the provider-process subsystem beyond the reproduced Windows failure.
41
+ - Changing the behavior of an installed project until the user runs a 1.6.0 setup, retrofit, or
42
+ configuration command.
43
+
44
+ ## Layer 1: complete skill packages
45
+
46
+ ### Canon structure
47
+
48
+ Each manifest entry continues to point at a directory containing one required `SKILL.md`. Any
49
+ regular file below that directory belongs to the skill package. Nested directories are allowed.
50
+ Symbolic links are rejected so a package cannot escape its Canon directory.
51
+
52
+ The skill entry gains an invocation field:
53
+
54
+ ```yaml
55
+ - id: no-ai-slop
56
+ path: skills/no-ai-slop
57
+ kind: methodology
58
+ invocation: auto
59
+ ```
60
+
61
+ Valid values are `auto` and `manual`. Omitted values resolve to `auto`, which preserves the current
62
+ manifest behavior. Before release, every Canon entry receives an explicit value so its intent is
63
+ reviewable.
64
+
65
+ ### Package enumeration
66
+
67
+ One shared package enumerator will serve validation and all three Retrofit planners. It will:
68
+
69
+ 1. Resolve the declared directory below the Canon root.
70
+ 2. Walk entries in stable lexical order.
71
+ 3. Reject symbolic links, sockets, devices, and paths outside the declared directory.
72
+ 4. Return relative POSIX-style paths plus file bytes and whether the source file is executable.
73
+ 5. Include dotfiles inside the skill package.
74
+
75
+ The action model will accept text or byte content and an optional executable flag. Existing text
76
+ actions remain valid. On POSIX systems, executable package files are written with user execution
77
+ permission. Windows ignores that flag. Existing backup, preserve-block, and idempotency behavior
78
+ continues to apply per generated file.
79
+
80
+ ### Validation
81
+
82
+ `yoke validate canon` will fail when:
83
+
84
+ - `SKILL.md` is missing or is not a regular file;
85
+ - frontmatter lacks `name` or `description`;
86
+ - `invocation` has an unknown value;
87
+ - a package contains a symbolic link or unsupported file type;
88
+ - a relative Markdown reference points to a missing package file or escapes the package;
89
+ - two package files would map to the same target path.
90
+
91
+ External HTTP links are not fetched during validation. Markdown anchors are not validated. These
92
+ checks would make local validation depend on the network without protecting Retrofit integrity.
93
+
94
+ ### Provider adapters
95
+
96
+ - **Claude:** Copy the complete package to `.claude/skills/<id>/`. For manual skills, emit
97
+ `disable-model-invocation: true` in generated frontmatter. Canon source remains provider-neutral.
98
+ - **Codex:** Copy the complete package to `.agents/skills/<id>/`. Generate or merge
99
+ `agents/openai.yaml` with `policy.allow_implicit_invocation` derived from the Canon invocation
100
+ value. If a Canon package already provides that file, validation requires it to agree with the
101
+ manifest.
102
+ - **Gemini:** Copy package resources next to the generated command and keep one command per skill.
103
+ Manual skills remain command-only. Auto skills are listed in a short generated context index so
104
+ Gemini can select the relevant command without loading every skill body into every turn.
105
+
106
+ `auto` means eligible for automatic selection where the provider supports it. It does not promise
107
+ identical provider internals. `manual` is strict: Yoke must not advertise that skill for automatic
108
+ selection.
109
+
110
+ ## Layer 2: new and adapted capabilities
111
+
112
+ ### `no-ai-slop`
113
+
114
+ Yoke will add an adapted copy of Peter Yang's MIT-licensed `no-ai-slop` package:
115
+
116
+ ```text
117
+ canon/skills/no-ai-slop/
118
+ ├── SKILL.md
119
+ └── eval.md
120
+ ```
121
+
122
+ The package keeps its two modes:
123
+
124
+ - **Edit:** Make the minimum useful change, preserve the writer's meaning and voice, then report
125
+ what changed.
126
+ - **Detect:** Name each observed pattern, quote the affected passage, and suggest a short fix
127
+ without rewriting, scoring, or guessing authorship.
128
+
129
+ Yoke will preserve established technical terms and product names when they are precise. For
130
+ example, "coding harness" is part of Yoke's product language and must not be replaced merely
131
+ because "harness" can be empty marketing language elsewhere. The adaptation will document this
132
+ domain-term exception and otherwise retain the upstream workflow and evaluation checklist.
133
+
134
+ The skill is `auto`. Its description limits automatic selection to prose editing or inspection.
135
+ Code-only work does not trigger it. `document-release`, documentation-focused roles, and Yoke's
136
+ release-writing instructions will point to its evaluation checklist. Prose style remains advisory.
137
+
138
+ Attribution will name Peter Yang, link the source repository, state the MIT license, and describe
139
+ the Yoke-specific adaptation. The imported package and the completed local package will receive
140
+ read-only provenance audits. Missing provenance or watermark signals will be reported as unknown,
141
+ never as evidence of human authorship.
142
+
143
+ ### `domain-modeling`
144
+
145
+ This `auto` skill will sharpen project terminology and record it in durable context. It will:
146
+
147
+ - distinguish reading an existing glossary from changing the domain model;
148
+ - challenge overloaded or contradictory terms;
149
+ - test relationships with concrete scenarios;
150
+ - compare stated behavior with the code;
151
+ - update a glossary when a term is settled;
152
+ - create an ADR only for a hard-to-reverse choice that is surprising without context and reflects
153
+ a real trade-off.
154
+
155
+ Yoke keeps `.yoke/context/` as the source of truth. The existing `PROJECT.md`, `DECISIONS.md`, and
156
+ `KNOWLEDGE.md` files remain. The context layer gains `GLOSSARY.md` and optional `CONTEXT-MAP.md` for
157
+ projects with more than one domain context. `maintaining-context` owns persistence; this skill owns
158
+ the quality of domain language and ADR decisions.
159
+
160
+ ### `codebase-design`
161
+
162
+ This `auto` reference skill will add a stable vocabulary for module, interface, implementation,
163
+ seam, adapter, depth, locality, and caller value. It will guide design toward:
164
+
165
+ - more behavior behind smaller interfaces;
166
+ - tests through the public interface;
167
+ - injected dependencies at real seams;
168
+ - a new seam only when at least two adapters or another demonstrated variation exists;
169
+ - designs that keep change and verification local.
170
+
171
+ The skill informs planning, TDD, architecture review, and code review. It does not mandate a
172
+ refactor unrelated to the current task.
173
+
174
+ ### `writing-for-agents`
175
+
176
+ This `auto` reference skill will make instructions easier for coding agents to execute without
177
+ weakening their technical content. It will favor explicit triggers, observable outcomes, concrete
178
+ paths and commands, bounded context, and examples that test the intended behavior. It will also
179
+ separate durable rules from task-specific guidance and remove duplicated or contradictory
180
+ instructions.
181
+
182
+ The skill applies to agent-facing Markdown such as `AGENTS.md`, skills, role prompts, and workflow
183
+ documentation. It complements `no-ai-slop`: `writing-for-agents` checks executability and context
184
+ economy, while `no-ai-slop` checks prose habits and preserves the author's voice. Neither skill may
185
+ silently discard a safety rule, acceptance criterion, or precise domain term.
186
+
187
+ ### `resolving-merge-conflicts`
188
+
189
+ This `auto` skill triggers only during an in-progress merge or rebase conflict. It will inspect the
190
+ current operation, trace both sides to commits and available issue or spec evidence, preserve both
191
+ intents where compatible, and avoid inventing new behavior. It then runs discovered project checks
192
+ and completes the current merge or rebase. It will not abort an operation unless the user requests
193
+ that destructive reversal explicitly.
194
+
195
+ ## Layer 3: automatic UI quality checks
196
+
197
+ ### Configuration
198
+
199
+ The configuration gains:
200
+
201
+ ```yaml
202
+ design:
203
+ mode: auto
204
+ max: 4
205
+ ```
206
+
207
+ `mode` accepts `off`, `auto`, or `on`.
208
+
209
+ - `off` skips the integrated design scan.
210
+ - `auto` runs it only when Yoke detects a supported UI project.
211
+ - `on` runs it regardless of detection.
212
+
213
+ Missing configuration keeps current behavior and does not add a gate. `yoke new` and a 1.6.0
214
+ setup or retrofit write `mode: auto` only when detection succeeds. Users can change `max` or set
215
+ `mode: off` before running the loop.
216
+
217
+ ### UI detection
218
+
219
+ Detection is deterministic and local. A project qualifies when at least one of these signals is
220
+ present:
221
+
222
+ - a framework dependency such as React, Next.js, Vue, Nuxt, Svelte, SvelteKit, Astro, Angular, or
223
+ a supported UI build plugin;
224
+ - a source file with `.tsx`, `.jsx`, `.vue`, `.svelte`, or `.astro` below a normal source root;
225
+ - an existing smoke-flow configuration.
226
+
227
+ Generated directories, dependencies, fixtures, and Yoke runtime directories are ignored. The
228
+ detector returns the evidence it used so setup output and tests can explain the decision.
229
+
230
+ ### Gate behavior
231
+
232
+ The loop runs the existing design scanner as a named gate after ordinary verification and before
233
+ browser smoke flows. Failure output uses the existing bounded-preview and artifact rules. The
234
+ standalone `yoke design-scan` command remains unchanged.
235
+
236
+ The gate does not rewrite UI code. Its finding names and weighted score remain stable. A legitimate
237
+ design can raise the configured budget or disable the gate. Future per-rule suppression is outside
238
+ this release because no current use case requires another configuration format.
239
+
240
+ ## Layer 4: Windows provider-process reliability
241
+
242
+ The existing failures must first be reproduced in focused tests. The diagnosis will distinguish:
243
+
244
+ - a child process that did not receive or honor termination;
245
+ - a parent that reports termination before the process tree exits;
246
+ - stdin or inherited handles that keep the child alive;
247
+ - Windows delaying directory release after process exit;
248
+ - a test timeout too short for the documented termination contract.
249
+
250
+ The fix must retain Yoke's ownership checks and fail-closed behavior. It may add bounded retries or
251
+ wait for confirmed process exit, but it may not kill by process-name pattern or remove a worktree
252
+ whose process ownership is uncertain.
253
+
254
+ Focused acceptance requires each affected test to pass repeatedly, including cleanup. The complete
255
+ suite must then pass without leftover provider processes or temporary directories.
256
+
257
+ ## Data flow
258
+
259
+ ```text
260
+ Canon manifest + complete skill directory
261
+ │
262
+ ▼
263
+ validate and enumerate package
264
+ │
265
+ ┌────────┼────────┐
266
+ ▼ ▼ ▼
267
+ Claude Codex Gemini
268
+ package package command + resources
269
+ │ │ │
270
+ └────────┴────────┘
271
+ │
272
+ ▼
273
+ project setup / retrofit
274
+ │
275
+ ┌────────┴────────┐
276
+ ▼ ▼
277
+ durable skills detected UI config
278
+ │ │
279
+ ▼ ▼
280
+ interactive use loop design gate
281
+ ```
282
+
283
+ ## Error handling and compatibility
284
+
285
+ - Package validation fails before Retrofit writes any project file.
286
+ - Retrofit continues to plan all actions before applying them, so an invalid package cannot leave
287
+ a partial installation.
288
+ - Existing project files keep their backup and preserve-block behavior.
289
+ - A missing optional provider feature degrades to an explicit command and a documented warning.
290
+ - Existing manifests without `invocation` remain readable.
291
+ - Existing projects without `design` configuration keep their current verification behavior.
292
+ - No imported skill may run network commands during setup or Retrofit.
293
+ - New files are included in npm package checks and plugin manifests before release.
294
+
295
+ ## Testing strategy
296
+
297
+ ### Canon and package tests
298
+
299
+ - one-file skill remains valid;
300
+ - nested text and binary resources enumerate in stable order;
301
+ - executable metadata is preserved where supported;
302
+ - missing relative reference fails validation;
303
+ - external URL does not trigger a network request;
304
+ - path escape, symbolic link, and duplicate target fail closed;
305
+ - repeated Retrofit is idempotent.
306
+
307
+ ### Provider tests
308
+
309
+ - Claude receives every package file and the correct manual frontmatter;
310
+ - Codex receives every package file and matching `agents/openai.yaml` policy;
311
+ - Gemini receives every package resource, command, and compact auto index entry;
312
+ - manual skills are not advertised for automatic selection;
313
+ - `no-ai-slop/eval.md` exists after all three Retrofit paths.
314
+
315
+ ### Capability tests
316
+
317
+ - the manifest registers all five new skills;
318
+ - each skill has valid frontmatter and resolvable references;
319
+ - context initialization creates or safely introduces the glossary structure;
320
+ - existing context files remain unchanged unless their content requires an update;
321
+ - attribution covers every imported or adapted source.
322
+
323
+ ### UI detection and gate tests
324
+
325
+ - supported dependencies and source files produce explained detection;
326
+ - non-UI TypeScript projects do not qualify;
327
+ - ignored directories and test fixtures do not qualify;
328
+ - missing design config preserves old behavior;
329
+ - `auto`, `on`, `off`, and custom budgets select the expected gate behavior;
330
+ - design failures use bounded output and preserve full artifacts.
331
+
332
+ ### Windows tests
333
+
334
+ - targeted timeout, cancellation, and record-publication cases pass repeatedly;
335
+ - cleanup confirms process exit before removing directories;
336
+ - no broad process kill is introduced;
337
+ - the full suite passes on Windows.
338
+
339
+ ### Release checks
340
+
341
+ The release requires:
342
+
343
+ ```text
344
+ npm run lint
345
+ npm run yoke -- validate canon
346
+ npm test
347
+ npm run docs:update
348
+ npm run docs:check
349
+ npm run prepublishOnly
350
+ ```
351
+
352
+ The focused suites run before the full suite so failures stay attributable.
353
+
354
+ ## Documentation and release
355
+
356
+ README updates will explain complete skill packages, invocation modes, the difference between
357
+ `unslop-ui` and `no-ai-slop`, automatic UI detection, new context files, and the expanded skill
358
+ table. `CHANGELOG.md` will describe behavior changes and the default-preserving migration path.
359
+ `CONTRIBUTING.md` will document how to add package resources and choose an invocation mode.
360
+
361
+ The release version is 1.6.0 because the work adds user-facing capabilities without removing a
362
+ compatible interface. Version fields will be synchronized in the package, lockfile, Canon,
363
+ Claude plugin, Codex plugin, Gemini extension, and README metadata.
364
+
365
+ After checks pass, release actions are:
366
+
367
+ 1. Commit the implementation and release metadata.
368
+ 2. Push `main`.
369
+ 3. Create and push `v1.6.0` at the verified release commit.
370
+ 4. Create the GitHub Release.
371
+ 5. Publish `@hecer/yoke@1.6.0` to npm.
372
+ 6. Verify the GitHub release, remote tag, npm version, and packaged files.
373
+
374
+ If npm requires an interactive one-time password, implementation and GitHub publication may finish
375
+ first, but npm publication remains incomplete until the operator supplies the credential. Yoke
376
+ must report that state plainly rather than claiming the release is complete.
377
+
378
+ ## Acceptance criteria
379
+
380
+ 1. Existing one-file skills install exactly as before.
381
+ 2. `no-ai-slop/SKILL.md` and `no-ai-slop/eval.md` install for Claude, Codex, and Gemini.
382
+ 3. Every Canon skill has an explicit invocation policy and provider outputs reflect it.
383
+ 4. New context, design, merge-resolution, and agent-writing skills are available without replacing
384
+ current workflow skills.
385
+ 5. Detected UI projects configured by 1.6.0 run the design gate automatically; other projects do
386
+ not change behavior.
387
+ 6. The reproduced Windows provider-process failures pass repeatedly and the full suite is green.
388
+ 7. README, contributing guidance, changelog, attribution, package metadata, and plugin metadata
389
+ describe the delivered behavior accurately.
390
+ 8. GitHub and npm both expose Yoke 1.6.0, unless npm is waiting only for an operator-provided OTP
391
+ that cannot be supplied through the active session.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yoke",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Cross-agent coding harness: curated skill canon, mechanical safety gates, autonomous loop with proof artifacts. CLI: npm i -g @hecer/yoke",
5
5
  "contextFileName": "GEMINI-EXTENSION.md"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hecer/yoke",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "One harness, three agents, zero trust in \"done\" — cross-agent coding harness for Claude Code, Codex CLI, and Gemini CLI: one skill canon, mechanical safety gates, an autonomous loop with screenshot/video proofs.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,9 +14,9 @@
14
14
  "gemini-extension.json",
15
15
  "agents",
16
16
  "hooks",
17
- "bench/README.md",
18
- "bench/output-compaction.mjs",
19
- "bench/RESULTS.md",
17
+ "bench/README.md",
18
+ "bench/output-compaction.mjs",
19
+ "bench/RESULTS.md",
20
20
  "bench/result-schema.mjs",
21
21
  "bench/run.mjs",
22
22
  "bench/run-large.mjs",