@ethlete/agent-rules 0.1.0-next.3 → 0.1.0-next.31

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 (200) hide show
  1. package/AGENTS.md +28 -0
  2. package/CHANGELOG.md +480 -0
  3. package/CLAUDE.md +1 -0
  4. package/README.md +362 -29
  5. package/THIRD-PARTY-LICENSES.md +35 -0
  6. package/content/defaults.json +1 -1
  7. package/content/git-hooks/post-checkout.sh +10 -0
  8. package/content/git-hooks/pre-push.sh +5 -0
  9. package/content/hooks/context-warning.py +872 -110
  10. package/content/hooks/subagent-model-policy.py +194 -0
  11. package/content/mods/.claude-plugin/marketplace.json +11 -0
  12. package/content/mods/plugins/e2e-progress/.claude-plugin/plugin.json +6 -0
  13. package/content/mods/plugins/e2e-progress/hooks/hooks.json +1 -0
  14. package/content/mods/plugins/e2e-progress/hooks/register.tsx +442 -0
  15. package/content/mods/plugins/e2e-progress/tsconfig.json +3 -0
  16. package/content/mods/plugins/e2e-progress/types/index.d.ts +23 -0
  17. package/content/output-styles/ste-clarity.md +131 -0
  18. package/content/rules/agent-sessions-wake-up.md +11 -0
  19. package/content/rules/app-styling.md +66 -0
  20. package/content/rules/comments.md +4 -1
  21. package/content/rules/lint-and-format.md +7 -5
  22. package/content/rules/nx-layout.md +50 -0
  23. package/content/rules/reactive-state.md +1 -1
  24. package/content/rules/styling.md +9 -7
  25. package/content/rules/subagent-models.md +39 -0
  26. package/content/skills/agent-sessions/SKILL.md +81 -0
  27. package/content/skills/agent-sessions/agent-sessions.mjs +498 -0
  28. package/content/skills/angular-patterns/SKILL.md +30 -7
  29. package/content/skills/api-source/SKILL.md +156 -0
  30. package/content/skills/app-testing/SKILL.md +141 -0
  31. package/content/skills/codex-subagent/SKILL.md +90 -0
  32. package/content/skills/codex-subagent/codex-agent.mjs +229 -0
  33. package/content/skills/design-exploration/SKILL.md +687 -0
  34. package/content/skills/design-exploration/check-story.mjs +139 -0
  35. package/content/skills/design-exploration/shoot-template.mjs +61 -0
  36. package/content/skills/domain-modeling/ADR-FORMAT.md +47 -0
  37. package/content/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  38. package/content/skills/domain-modeling/SKILL.md +80 -0
  39. package/content/skills/e2e-triage/SKILL.md +80 -0
  40. package/content/skills/figma-export/SKILL.md +191 -0
  41. package/content/skills/figma-export/dump-figma-layers.py +83 -0
  42. package/content/skills/figma-export/dump-figma-svg.py +235 -0
  43. package/content/skills/figma-export/measure-template.mjs +87 -0
  44. package/content/skills/git-commit/SKILL.md +11 -7
  45. package/content/skills/git-flow/SKILL.md +87 -0
  46. package/content/skills/grill-with-docs/SKILL.md +13 -0
  47. package/content/skills/grilling/SKILL.md +51 -0
  48. package/content/skills/handoff/SKILL.md +125 -5
  49. package/content/skills/query/SKILL.md +165 -64
  50. package/content/skills/rxjs-signals/SKILL.md +33 -4
  51. package/content/skills/sdk-docs/SKILL.md +50 -14
  52. package/content/skills/sdk-local-build/SKILL.md +26 -8
  53. package/content/skills/sdk-local-build/sdk-local-baseline.mjs +64 -0
  54. package/content/skills/sdk-source/SKILL.md +37 -34
  55. package/content/skills/sdk-update/SKILL.md +103 -0
  56. package/content/skills/story-styling/SKILL.md +10 -8
  57. package/content/skills/styleguide/SKILL.md +12 -7
  58. package/content/skills/styleguide/assets.md +54 -0
  59. package/content/skills/styleguide/changesets.md +17 -0
  60. package/content/skills/styleguide/file-structure.md +73 -0
  61. package/content/skills/styleguide/lint-rule-lookup.md +51 -0
  62. package/content/skills/styleguide/storybook-structure.md +25 -0
  63. package/content/skills/theming/SKILL.md +50 -28
  64. package/content/skills/timetrack/SKILL.md +397 -0
  65. package/content/skills/verify-in-app/SKILL.md +107 -0
  66. package/migrations/app-styling-utilities.md +63 -0
  67. package/migrations/list-state-query-form.md +20 -0
  68. package/migrations/nx-layout.md +29 -0
  69. package/migrations/sdk-components-over-hand-built-ui.md +27 -0
  70. package/migrations/search-query-field.md +52 -0
  71. package/migrations.json +48 -0
  72. package/package.json +19 -3
  73. package/src/index.js +85 -30
  74. package/src/index.js.map +1 -1
  75. package/src/lib/cli-args.d.ts +9 -0
  76. package/src/lib/cli-args.js +48 -0
  77. package/src/lib/cli-args.js.map +1 -0
  78. package/src/lib/commitlint.d.ts +10 -0
  79. package/src/lib/commitlint.js +51 -0
  80. package/src/lib/commitlint.js.map +1 -0
  81. package/src/lib/config.d.ts +41 -5
  82. package/src/lib/config.js +117 -10
  83. package/src/lib/config.js.map +1 -1
  84. package/src/lib/filter.d.ts +2 -0
  85. package/src/lib/filter.js +4 -4
  86. package/src/lib/filter.js.map +1 -1
  87. package/src/lib/frontmatter.d.ts +2 -0
  88. package/src/lib/frontmatter.js +33 -5
  89. package/src/lib/frontmatter.js.map +1 -1
  90. package/src/lib/git-flow/build.d.ts +35 -0
  91. package/src/lib/git-flow/build.js +24 -0
  92. package/src/lib/git-flow/build.js.map +1 -0
  93. package/src/lib/git-flow/config.d.ts +59 -0
  94. package/src/lib/git-flow/config.js +50 -0
  95. package/src/lib/git-flow/config.js.map +1 -0
  96. package/src/lib/git-flow/index.d.ts +6 -0
  97. package/src/lib/git-flow/index.js +23 -0
  98. package/src/lib/git-flow/index.js.map +1 -0
  99. package/src/lib/git-flow/parse.d.ts +49 -0
  100. package/src/lib/git-flow/parse.js +300 -0
  101. package/src/lib/git-flow/parse.js.map +1 -0
  102. package/src/lib/git-flow/rename.d.ts +24 -0
  103. package/src/lib/git-flow/rename.js +70 -0
  104. package/src/lib/git-flow/rename.js.map +1 -0
  105. package/src/lib/git-flow/start.d.ts +49 -0
  106. package/src/lib/git-flow/start.js +57 -0
  107. package/src/lib/git-flow/start.js.map +1 -0
  108. package/src/lib/git-flow/validate.d.ts +34 -0
  109. package/src/lib/git-flow/validate.js +72 -0
  110. package/src/lib/git-flow/validate.js.map +1 -0
  111. package/src/lib/git-flow-command.d.ts +4 -0
  112. package/src/lib/git-flow-command.js +165 -0
  113. package/src/lib/git-flow-command.js.map +1 -0
  114. package/src/lib/git-flow-repair.d.ts +17 -0
  115. package/src/lib/git-flow-repair.js +165 -0
  116. package/src/lib/git-flow-repair.js.map +1 -0
  117. package/src/lib/git-flow-start.d.ts +20 -0
  118. package/src/lib/git-flow-start.js +140 -0
  119. package/src/lib/git-flow-start.js.map +1 -0
  120. package/src/lib/git.d.ts +64 -0
  121. package/src/lib/git.js +131 -0
  122. package/src/lib/git.js.map +1 -0
  123. package/src/lib/gitlab.d.ts +35 -0
  124. package/src/lib/gitlab.js +116 -0
  125. package/src/lib/gitlab.js.map +1 -0
  126. package/src/lib/index.d.ts +2 -0
  127. package/src/lib/index.js +26 -11
  128. package/src/lib/index.js.map +1 -1
  129. package/src/lib/migrate.js +6 -1
  130. package/src/lib/migrate.js.map +1 -1
  131. package/src/lib/output-style-command.d.ts +3 -0
  132. package/src/lib/output-style-command.js +69 -0
  133. package/src/lib/output-style-command.js.map +1 -0
  134. package/src/lib/output-style.d.ts +38 -0
  135. package/src/lib/output-style.js +134 -0
  136. package/src/lib/output-style.js.map +1 -0
  137. package/src/lib/owned-paths.js +27 -3
  138. package/src/lib/owned-paths.js.map +1 -1
  139. package/src/lib/package-runner.d.ts +4 -0
  140. package/src/lib/package-runner.js +86 -0
  141. package/src/lib/package-runner.js.map +1 -0
  142. package/src/lib/plain-text.d.ts +9 -0
  143. package/src/lib/plain-text.js +22 -0
  144. package/src/lib/plain-text.js.map +1 -0
  145. package/src/lib/plan.d.ts +6 -6
  146. package/src/lib/plan.js +164 -40
  147. package/src/lib/plan.js.map +1 -1
  148. package/src/lib/prompt.d.ts +8 -0
  149. package/src/lib/prompt.js +35 -0
  150. package/src/lib/prompt.js.map +1 -0
  151. package/src/lib/render.d.ts +25 -2
  152. package/src/lib/render.js +43 -10
  153. package/src/lib/render.js.map +1 -1
  154. package/src/lib/sessions-command.d.ts +4 -0
  155. package/src/lib/sessions-command.js +16 -0
  156. package/src/lib/sessions-command.js.map +1 -0
  157. package/src/lib/sync.d.ts +0 -1
  158. package/src/lib/sync.js +30 -17
  159. package/src/lib/sync.js.map +1 -1
  160. package/src/lib/targets/agents-skills.js +1 -1
  161. package/src/lib/targets/agents-skills.js.map +1 -1
  162. package/src/lib/targets/claude-hooks.d.ts +3 -23
  163. package/src/lib/targets/claude-hooks.js +22 -86
  164. package/src/lib/targets/claude-hooks.js.map +1 -1
  165. package/src/lib/targets/claude-mods.d.ts +20 -0
  166. package/src/lib/targets/claude-mods.js +47 -0
  167. package/src/lib/targets/claude-mods.js.map +1 -0
  168. package/src/lib/targets/claude.js +2 -3
  169. package/src/lib/targets/claude.js.map +1 -1
  170. package/src/lib/targets/codex-hooks.d.ts +12 -0
  171. package/src/lib/targets/codex-hooks.js +35 -0
  172. package/src/lib/targets/codex-hooks.js.map +1 -0
  173. package/src/lib/targets/codex.js +4 -4
  174. package/src/lib/targets/codex.js.map +1 -1
  175. package/src/lib/targets/copilot.js +4 -4
  176. package/src/lib/targets/copilot.js.map +1 -1
  177. package/src/lib/targets/cursor.js +3 -3
  178. package/src/lib/targets/cursor.js.map +1 -1
  179. package/src/lib/targets/git-hooks.d.ts +25 -0
  180. package/src/lib/targets/git-hooks.js +71 -0
  181. package/src/lib/targets/git-hooks.js.map +1 -0
  182. package/src/lib/targets/hooks-shared.d.ts +60 -0
  183. package/src/lib/targets/hooks-shared.js +130 -0
  184. package/src/lib/targets/hooks-shared.js.map +1 -0
  185. package/src/lib/targets/mcp.d.ts +16 -0
  186. package/src/lib/targets/mcp.js +68 -0
  187. package/src/lib/targets/mcp.js.map +1 -0
  188. package/src/lib/targets/shared.d.ts +1 -9
  189. package/src/lib/targets/shared.js +4 -8
  190. package/src/lib/targets/shared.js.map +1 -1
  191. package/src/lib/timetrack-command.d.ts +11 -0
  192. package/src/lib/timetrack-command.js +1063 -0
  193. package/src/lib/timetrack-command.js.map +1 -0
  194. package/src/lib/timetrack-snapshot.d.ts +55 -0
  195. package/src/lib/timetrack-snapshot.js +120 -0
  196. package/src/lib/timetrack-snapshot.js.map +1 -0
  197. package/src/lib/timetrack.d.ts +561 -0
  198. package/src/lib/timetrack.js +279 -0
  199. package/src/lib/timetrack.js.map +1 -0
  200. package/content/skills/styleguide/STYLEGUIDE.md +0 -520
package/AGENTS.md ADDED
@@ -0,0 +1,28 @@
1
+ # agent-rules
2
+
3
+ `libs/agent-rules` publishes `@ethlete/agent-rules`: the portable slice of this repo's
4
+ guidance, compiled into Claude Code, Codex, Cursor and Copilot formats. Content lives in
5
+ `libs/agent-rules/content/`; what this repo itself consumes is configured in
6
+ `ethlete-agents.config.json` (`profile: sdk`, so only `scope: both` content is emitted
7
+ here). Never hand-edit the generated marker block at the end of the root `AGENTS.md` or a generated
8
+ `ethlete-*` skill - edit the content file in `libs/agent-rules/content/`, then:
9
+
10
+ ```bash
11
+ npx prettier --write libs/agent-rules/content/<file> # format first
12
+ yarn agents:sync # then regenerate
13
+ ```
14
+
15
+ A few content files are vendored from another repository. Keep them as written upstream,
16
+ apart from the generator's link syntax - `libs/agent-rules/THIRD-PARTY-LICENSES.md` names
17
+ each one, its upstream commit and its license.
18
+
19
+ `content/output-styles/` is the exception: a Claude Code output style is a machine-level
20
+ file, so `sync` never emits it and `agents:check` never diffs it. It is installed on
21
+ demand instead - `node dist/libs/agent-rules/src/index.js output-style` after a build here,
22
+ `npx ethlete-agents output-style` in a consumer repo.
23
+
24
+ Format **before** syncing. The generated copies under `.claude/` and `.agents/` are
25
+ Prettier-ignored, so formatting the content afterwards silently leaves them stale, and
26
+ `yarn agents:check` (which CI runs) fails. The `npx ethlete-agents sync` in the published
27
+ README works in consumer repos only - here the package is the source, not a dependency,
28
+ so `npx` would look it up on the registry and 404.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,485 @@
1
1
  # @ethlete/agent-rules
2
2
 
3
+ ## 0.1.0-next.31
4
+
5
+ ### Minor Changes
6
+
7
+ - The design-exploration skill now describes the `ethlete-design` MCP server: its tools by job, when to use them instead of the `et design` CLI, and the `sketch_report` and `sketch_ready` rules.
8
+
9
+ ### Patch Changes
10
+
11
+ - The Codex subagent skill lists gpt-6-luna, gpt-6.1-terra (the new default), gpt-6.1-sol and gpt-6-astra. The context hook gives gpt-6.1 a 500k pricing boundary.
12
+ - `agent-sessions restart` types the prompt after the clear even when a message woke the fresh session. Only typed text in its prompt holds the prompt back.
13
+ - The design exploration skill lists `et design sketch target add`.
14
+ - `agent-sessions restart` no longer reads the Claude Code IDE context chip (`[⧉ In file]`) on the prompt line as a draft, so it types the resume prompt after the clear.
15
+ - `control(markup, name)` from `@ethlete/components/design/control` renames a control that is already marked, so a design reuses a control part under its own control name.
16
+ - CONTROL-STATE counts an interaction word only as the last word of a state name, drops modifier words from the element name, and asks a component without controls to declare them (Q164).
17
+ - `et design check`, `sketch check`, `sketch ready` and `design complete` fail interaction states on a part that declares no control (`CONTROL-STATE`). `design complete` hints a state that changes under 10 % of its frame.
18
+ - Design checks report a drawn button, link, input or control role without `data-et-control` as `CONTROL-PART-INPUT`: a hint on merged parts, an error when a sketch adds one.
19
+
20
+ ## 0.1.0-next.30
21
+
22
+ ### Minor Changes
23
+
24
+ - `sync` registers `et design mcp` as the `ethlete-design` MCP server in `.mcp.json` (Claude Code) and `.codex/config.toml` (Codex) when `@ethlete/cli` is installed.
25
+
26
+ ### Patch Changes
27
+
28
+ - Design exploration skill: before `sketch ready`, critique each variant's hierarchy, spacing, nesting and host context, and drop visually weak ones.
29
+ - Design exploration skill: a reference informs a design and is never copied, and variant-only code stays out of a sketch's `shared/` folder.
30
+ - Design exploration: mark a sketch `ready` only when no change to it waits on an open decision or a helper still to land.
31
+ - `restart` logs why it waits (`restart.log` next to the mailbox) and gives up 60 s after the clear: it tells the pane via tmux and saves the prompt to `restart.prompt.<session>.txt` instead of waiting silently.
32
+ - Add `et design motion shots <part> <motion>`: it draws a motion at its keyframes in full and reduced motion into one sheet and writes its tracks as JSON.
33
+
34
+ ## 0.1.0-next.29
35
+
36
+ ### Patch Changes
37
+
38
+ - `agent-sessions restart` now waits until the session ended its turn and its prompt is empty, so it no longer types into a running turn or into your draft.
39
+ - A multi-target sketch merge gives each target only the `shared/` files it imports, directly or transitively; an unimported file returns to the target that held it. `sketch new` refuses targets whose `shared/` files clash.
40
+ - `et design sketch new` takes several parts: one sketch, one variant folder holding them all, one `ready`, one merge; `ready` and `preview` name every part a `shared/` edit reaches; Studio shows every target part.
41
+
42
+ ## 0.1.0-next.28
43
+
44
+ ### Minor Changes
45
+
46
+ - New `mods` config key: `sync` turns on Claude Code mods that the package ships, starting with `e2e-progress`, a live Playwright run progress in the status line.
47
+ - Add the consumer skill `e2e-triage`: read the failures file of the `@ethlete/cli` failure reporter, group the failures by error, fix the largest group first, and re-run only the failed spec files.
48
+ - Add the `agent-sessions` skill and `ethlete-agents sessions`: agents in one checkout run in `tmux`, message each other, claim paths, and restart a session with a prompt. The `handoff` skill uses it to clear and resume.
49
+
50
+ ### Patch Changes
51
+
52
+ - `agent-sessions restart` refuses a session the caller does not run in, and the handoff skill says how to read the own session name.
53
+ - The `claude` and `codex` shell functions no longer switch your tmux client when a script or a one-shot flag such as `--version` calls them.
54
+ - `agent-sessions run` starts `<name>-2`, `<name>-3` and so on when the session already has a terminal attached, so a second `claude` terminal gets its own agent.
55
+ - The e2e-triage skill treats connection-refused groups on a local mock as infrastructure, and the e2e-progress mod shows the failure `detail`.
56
+ - The handoff skill counts an open item as the next task, so an agent in tmux restarts itself with it instead of handing the prompt to the user.
57
+ - A handoff self-restart now resumes with the installed skill name and keeps both the restart reason and the text after the slug.
58
+ - In an agent-sessions tmux session, the context-warning hook tells the agent to save and restart itself, not to ask the user for `/clear`.
59
+ - The `sdk-update` skill warns that after Angular 22, `a?.b` gives `undefined`, not `null`, which breaks pipes that treat the two differently.
60
+ - Shorten the mailbox wake-up prompt: it runs `npx ethlete-agents sessions inbox <name>` or the `agents:sessions` script when one exists, and the full script path otherwise.
61
+ - `et design shot --variants` takes `--round <key>` and `--variant <name>` to draw only the current round next to the merged row.
62
+ - Reject and reopen single sketch variants with `et design sketch reject|reopen` or in Studio; a rejected variant keeps its reason, origin and history and can no longer be picked or merged.
63
+ - The `agent-sessions` dispatcher waits when the prompt of an agent holds typed text or an open menu, and sends the wake-up line after the text is sent or cleared.
64
+
65
+ ## 0.1.0-next.27
66
+
67
+ ### Minor Changes
68
+
69
+ - The design-exploration skill says every `et design` write takes `--by <model id>`, that `sketch report` names its variant with `--variant`, and that the coordinator writes the exact model id into each sub-agent prompt; an agent never guesses it.
70
+ - The design-exploration skill says a flow may name a page that exists only as an open sketch, and Studio draws its first variant.
71
+ - The design-exploration skill says elements may draw with the wireframe kit, and a rough shell is a kit element each page imports.
72
+ - The design render check warns of grid rows that leave out interaction columns other rows fill (`GRID-COVERAGE`).
73
+ - `design check` warns of a `.replace` on markup that neither the part nor a part it uses draws (`STALE-REPLACE`).
74
+ - The design render check warns of a class with a product prefix that no stylesheet of the frame defines (`UNDEFINED-CLASS`).
75
+
76
+ ### Patch Changes
77
+
78
+ - The design-exploration skill explains the open, addressed and resolved comment states, and that the agent never merges after a pick.
79
+ - The design-exploration skill says when to pass `--question` to `et design comment reply`.
80
+ - The design-exploration skill covers `et design comment reply` and the inbox group "waiting for the user".
81
+ - The design-exploration skill says to call `node dist/libs/cli/src/index.js design` in a check-and-shot loop instead of `yarn design`, which builds the CLI first.
82
+ - The design-exploration skill now forbids `vh`, `dvh` and `svh` in parts, and requires every flow line to carry a label naming an element visible in the frame before it.
83
+ - Document product flows, the wireframe kit and the FLOW and WIREFRAME-KIT checks in the design-exploration skill.
84
+ - The design exploration skill explains comments on an element variant inside a page.
85
+ - The design-exploration skill says a product's own `presets` replace its base's, so a desktop-only app lists `desktop` alone.
86
+ - Tell design agents that a Tailwind product registers its drawing folders in a stylesheet, so sketches use the app's utilities.
87
+ - Explain a sketch's `shared/` folder, `sketch new --like` and `embedPage()` in the design-exploration skill.
88
+ - Teach the design-exploration skill the product and sketch workflow of Ethlete Studio: `et design product new`, sketches, the inbox, and Studio-side merge.
89
+ - The design exploration skill describes the product config `tokens` list.
90
+ - The design-exploration skill says how a part imports the product's tokens through `@system/foundations/tokens.css?inline`.
91
+ - The design and git-commit skills add rules for variants, pages and commits in a shared checkout.
92
+ - The design-exploration skill draws wireframes first, then foundations, logo and CI, components, elements and pages.
93
+ - The design-exploration skill says a part with `definePart({ styles })` may draw `drawing({ body })` without styles.
94
+ - The design-exploration skill says `et design inbox done` needs `--note`, which replaces the part's note.
95
+ - The design-exploration skill says a part may export named helpers, and that another part imports a piece instead of copying its markup.
96
+ - The design-exploration skill says `sketch check` and `sketch ready` note a problem the product already had instead of failing on it.
97
+ - The design-exploration skill says `sketch new` starts no report, so `report --done` follows only a report of your own.
98
+ - The design-exploration skill says to start each `et design sketch report` message with `variant <name>`, so Studio can mark that variant as drawing.
99
+ - The design-exploration skill names `sketch round` and says `sketch list` shows the rounds.
100
+ - The design-exploration skill tells agents to answer a combine comment with `et design sketch variant --from` in a new round, noting why the old round lost.
101
+ - The design-exploration skill makes wireframes strict: keep what the app already has, one sketch per screen, regions and names only, no polish, no subagent, and stop the stage early.
102
+ - The design-exploration skill lists the wireframe kit's new controls (`select`, `tabs`, `segmented`, `checkbox`, `badge`, `dot`), an icon `glyph` and a box `fill`, and says to draw a control as its type.
103
+ - The design-exploration skill teaches the wireframe kit's `heading`, `image` `ratio` and row `stackBelow` instead of fixed sizes.
104
+ - The delegation rule says a subagent starts with the full start context, so a small lookup stays in the session. The format rule asks for one Prettier call over all edited files.
105
+ - The design-exploration skill says the auto merge blocks only on problems it adds, and that `sketch ready` can be re-run on a ready sketch.
106
+ - The design-exploration skill says that `design check` warns of a merged part changed outside a sketch.
107
+ - Design parts and stylesheets load product assets as `@assets/<file>`.
108
+ - `et design check --tsconfig` also typechecks each variant of an open sketch and prints the tsc output of a failing one.
109
+ - `et design sketch new` takes `--note <text>`, the note of the first round.
110
+ - `et design <command> [<subcommand>] --help` prints the usage of that one command and skips its checks.
111
+ - `et design check` reports a `var(--token)` without a fallback that no part or stylesheet of the product or its base defines.
112
+ - `et design shot --crop x,y,width,height` and `/__design/shot?clip=x,y,width,height` cut a picture to a box in CSS pixels, so a hairline can be judged with `--scale`.
113
+ - `et design shot --variants --diff-props` compares each variant with the merged part drawn with the variant's state props, so changed props no longer paint the whole diff red.
114
+ - `et design shot --interaction <hover|focus-visible|active|disabled>` forces an interaction on every cell, and `--help` names it. The design-exploration skill names it.
115
+ - The diff row of `et design shot --variants` says "no pixel change, but the markup differs" when a variant draws other markup to the same pixels.
116
+ - `et design shot --scale <1-4>` and `/__design/shot?scale=` draw a part at a device scale, so a small part is legible. The design-exploration skill names it.
117
+ - `et design shot --state <a>,<b>` draws only the named states, side by side, and names the states of the part when one does not exist. The design-exploration skill names it.
118
+ - `et design sketch check --fix` writes the variants in the checkout's Prettier format before it checks them; a FORMAT problem points to it.
119
+ - `et design sketch check` warns of a variant that restyles a class of the sketch's `shared/` folder and of a variant file nothing imports.
120
+ - `et design sketch new --round` requires `--note`, so `sketch ready` no longer stops on a round without a note.
121
+ - `et design sketch new` takes `--variant-note`, `sketch variant` takes several variants, and sketch commands format their output, explain each flag and infer `--product`.
122
+ - `et design sketch variant` refuses a sketch the user discarded and asks for a variant pick first; a pick is still cleared.
123
+ - `design check` warns of an export in a part's `shared/` that nothing imports, and `sketch check` of a sketch `shared/` export a variant does not import.
124
+ - `sketch new --variant-note` keeps each variant's note in `sketch.json` instead of overwriting the part's merged note; Studio shows it in the variant's head, and a merge gives it to a new part.
125
+ - A sketch variant may hold its own copy of a shared file at `<variant>/shared/<path>`: `@shared/<path>` resolves to it first in rendering, typechecks and checks, and a merge of that variant carries it.
126
+ - The context-warning hook now tells the agent to apply the handoff save test before it suggests a handoff. When nothing is left to hand off, the agent suggests a fresh session instead.
127
+ - The design-exploration skill says when to run `design accept`.
128
+ - `et design check` also type-checks each variant of an open sketch and fails with a `TYPE-ERROR` line per broken variant. A merge's own check still types only the product.
129
+ - The design-exploration skill lists the render rules of `design check` and how a part opts out of one.
130
+ - The design exploration skill documents component states per axis, and treats an icon set as a foundation asset.
131
+ - The design exploration skill extracts a component only when two hosts draw the same case.
132
+ - `forceInteraction` from `@design-system` forces an interaction on one element of a part's markup, not only its root.
133
+ - The design-exploration skill says the frame loads a product's tokens, so parts stop importing them.
134
+ - The render check reads each drawn part's `grid`: `sketch check` prints `grid <rows> x <columns> ok` or the states it leaves out, and a state in two cells or a cell naming no state fails as `GRID`.
135
+ - `interactionRows` from `@design-system` builds a part's states and grid from one props object per row and a list of interactions.
136
+ - `et design part remove <layer>/<name>` deletes a merged part with its `merged.json` entry and tsconfig path, and resolves its comments. It refuses a part another part imports, a base part, and a part with an open sketch.
137
+ - `definePart({ styles })` exposes a part's stylesheet on its default export and adds it to every drawing of the part.
138
+ - Tell the design-exploration skill to take its own check shots with `et design shot` instead of a scratch script.
139
+ - The design exploration skill now sends every change to a merged part through a sketch. When there is nothing to choose, the sketch has one variant.
140
+ - The design-exploration skill keeps a component's frame-only wrapper in `render` and out of the markup a host embeds.
141
+ - The design-exploration skill mentions the duplicate-class warning of `sketch check`.
142
+ - `svgAsset` sets a `class` and `attrs` on the root `<svg>` of an asset.
143
+ - Add `svgAsset(raw, { size })` to `@design-system`, fail `design check` on an SVG asset without a root `<svg>` or the SVG namespace, print each variant's `assets/` folder, and add a pixel diff row to `design shot --variants`.
144
+ - The design render check reports `UNKNOWN-THEME` when a drawing uses a colour theme that no stylesheet of its frame defines.
145
+ - The grilling skill now asks for questions that read alone: plain words, no chains of question or ADR numbers, a short reminder when a new topic starts, facts checked before a recommendation, and a confirmed summary at the end.
146
+ - When the handoff save test finds nothing to hand off, the handoff skill and the context-warning hook now ask the agent for a prompt the user can copy into the fresh session.
147
+ - The design-exploration skill says the merge note is optional and which sketch commands record a variant's authors.
148
+ - Document design notes in the design-exploration skill: the note file format, the size a pointed note needs, free flow notes, and when to write a note instead of a comment.
149
+ - The design exploration skill says a closed comment thread is resolved, not deleted.
150
+ - The design exploration skill says a merge, discard or new round closes the sketch's open comments.
151
+ - `et design sketch check` and `sketch ready` fail when a variant drops a state the product's part has.
152
+ - `et design sketch ready` merges a sketch by itself when no state of any variant differs by a pixel from the product, and logs it as `auto` in `accepted.json`.
153
+ - `sketch report --variant <key> --done` ends the live "drawing" report of that variant, so Studio shows its frames before `sketch ready`. The design exploration skill names the command.
154
+ - The design-exploration skill says that `sketch variant` without `--round` fails while the sketch has open comments.
155
+
156
+ ## 0.1.0-next.26
157
+
158
+ ### Patch Changes
159
+
160
+ - `et design new --feature <name>` groups a call under a feature, and `et design legacy` now also writes the stage its group folder implies.
161
+ - Studio reads a call's `closed` and `waitsFor`: closed calls count as settled, waiting calls sit under "On hold", legacy calls with a stage clear the stage gate, and open calls now lead the sidebar.
162
+
163
+ ## 0.1.0-next.25
164
+
165
+ ### Patch Changes
166
+
167
+ - Link the generated skills to the next docs site, which matches the prerelease line.
168
+
169
+ ## 0.1.0-next.24
170
+
171
+ ### Minor Changes
172
+
173
+ - The design-exploration skill names the order of a product design: themes, logo and CI, wireframes, components, larger elements, pages, then the working prototype.
174
+
175
+ ### Patch Changes
176
+
177
+ - The design-exploration skill explains that `setup` has no cleanup hook and what the `ngStates` host wrapper means for `flow.body`.
178
+ - The design-exploration skill shows how to draw a prototype with states through `ngStates()`.
179
+ - The `ethlete-design-exploration` skill tells agents to draw SDK parts with `ng()`, which renders the real components, before drawing a new part.
180
+ - Note in the design-exploration skill that a drawing's `setup` can be an array of functions.
181
+ - The design-exploration skill names `setup(root)` as the way to give a drawing behavior, because a `<script>` in its body never runs.
182
+ - The design exploration skill says every call needs a `stage`, and that a quick idea takes `sketch`.
183
+ - The `ethlete-design-exploration` skill makes agents draw from the project design system and the SDK mocks before drawing a new part, and defines what an accepted entry holds.
184
+ - The design-exploration skill explains the theme switch of a design project.
185
+ - `init` and the default commands now follow the repo's package manager (yarn, pnpm, bun) and detect Claude from a `CLAUDE.md`. The generated banners name that runner, and `sync` only warns about a missing lint script when emitted content uses it.
186
+ - Run `ethlete-agents` without `tslib` installed. The CLI now inlines its TypeScript helpers, so a fresh Yarn 4 repo no longer fails with "Cannot find module 'tslib'".
187
+ - The `nx-layout` rule now makes one domain lib per app (`libs/domain/<app>`, a folder per feature) the default. A feature gets its own lib only for a concrete reason, such as size or build time.
188
+ - The design-exploration skill no longer describes the removed `et design` call page (round bands, contact sheet, compare overlay, theme switch). Calls are read in Ethlete Studio.
189
+ - In an existing app, an agent now converts the styles of every component it changes, and reports a repo-wide styling deviation once.
190
+ - A wireframe call lists the parts it needs in `inventory`, each an SDK component or a new part with its component call. `et design check` warns about an inventory on any other call.
191
+ - `ng()` and `ngStates()` take `fields`: each entry becomes a signal form field with a value, errors and a touched state, bound as `[formField]="fields.<name>"`.
192
+ - `ng()` in the design tool renders an open select panel or menu, and the frame places it below its trigger.
193
+ - The design-exploration skill lists the call commands (`new`, `status`, `--help`), the `stage` field, nested surface panels, and colour overrides with `themeCss()`.
194
+ - The design-exploration skill starts a design with foundations (type scale, spacing, radius), ends the wireframe stage with a component inventory, and sends a missing part back to a component call.
195
+ - The theming docs and skill warn that `hover:bg-et-surface-interaction-hover` is a full-strength tint and name `etSurfaceInteractive` for hover rows.
196
+
197
+ ## 0.1.0-next.23
198
+
199
+ ### Patch Changes
200
+
201
+ - The `api-source` skill now finds the managed clone in `.ethlete/<name>` when `apiRepoPaths` has no entry, and reads the checkout and the local url from `yarn et api help <name>`.
202
+ - Theming: `provideColorScheme()` now swaps the default accent of the root surface through its `colorThemeVariants`, so the app root needs no `[etProvideSurface]` for it.
203
+ - Theming: add `SurfaceTheme.colorThemeVariants`, which swaps any chosen accent for a version that reads well on the surface, and deprecate `colorTheme` and `semanticColorThemes`.
204
+
205
+ ## 0.1.0-next.22
206
+
207
+ ### Patch Changes
208
+
209
+ - Fix `sync` deleting hand-written hooks named `ethlete*` and mis-pruning skill folders with a relative `--root`; `migrate` now validates the config first and leaves a symlinked `CLAUDE.md` alone.
210
+ - The context-warning hook now warns a Claude sub-agent from its own transcript and, at the critical tier, makes it commit and hand back its remaining steps instead of growing past the budget.
211
+ - The `rxjs-signals` skill says which operators may follow `takeUntilDestroyed()`.
212
+ - A locked Timetrack asks to be unlocked when an agent calls it and holds the request up to a minute, and a write queued for approval surfaces the app; the `timetrack` CLI waits long enough for both.
213
+
214
+ ## 0.1.0-next.21
215
+
216
+ ### Patch Changes
217
+
218
+ - The subagent model rule now gives haiku small, fully specified jobs as well as lookups. The model hook also finds an agent definition whose file name is capitalized, for example an `Explore.md` that overrides the built-in agent.
219
+
220
+ ## 0.1.0-next.20
221
+
222
+ ### Minor Changes
223
+
224
+ - `ethlete-agents` rejects unknown flags, derives the lint and Storybook commands from `package.json`, names a config file that does not parse, and warns about unknown config keys.
225
+ - `timetrack approvals` lists the writes that wait for approval, and `timetrack approval <id> --reject` rejects one the way the Reject button does; approving stays the user's click in the app.
226
+ - `timetrack ask` asks auto mode again about a stand-in or an unnamed band of any day, as the app's "Ask auto mode again" does.
227
+ - `timetrack standins --resolve <id> --issue <KEY>` resolves a stand-in to a Jira issue, or moves a resolved one to another, once the user approves it in the app.
228
+ - Read a day's call transcript through the read-only `transcript.day` agent op and `ethlete-agents timetrack transcript [day]`.
229
+
230
+ ### Patch Changes
231
+
232
+ - `ethlete-agents sync`, `check` and `migrate` now reject a value on a flag that takes none (`--dry-run=false`) and ignore empty `--targets` entries.
233
+ - The `context-warning` hook no longer asks to finish or hand off while a handoff is being saved.
234
+ - The theming skill and styling rules recommend `injectSemanticColorTheme(type)` over the deprecated `injectErrorTheme()` and its siblings.
235
+ - The `sdk-docs` skill lists the `testing` component docs page.
236
+ - The theming skill covers `injectSemanticColorTheme()` and `SurfaceTheme.semanticColorThemes`.
237
+ - The `app-styling` rule now also fits apps on Tailwind 3 and apps that define their own colour palette.
238
+ - The `tslib` peer is the range `^2.3.0` instead of an exact version.
239
+ - Mark every migration with a `level`, so `et update` runs only the required ones.
240
+ - The query skill names `createQueryGroup` and `withOptimisticUpdate` and links the query groups page; the sdk-docs skill lists the `paged-query-trigger` domain.
241
+ - List the stat tile in the component domains of the `sdk-docs` skill.
242
+
243
+ ## 0.1.0-next.19
244
+
245
+ ### Minor Changes
246
+
247
+ - `timetrack snapshot` records the rows of recent days and `timetrack snapshot --compare <file>` lists every row a change altered, exiting 1 when any did.
248
+
249
+ ### Patch Changes
250
+
251
+ - Each migration task now asks for a change one session can finish and ends with a `Done when` list; restyling views and moving lists or hand-built UI happen when a file is next edited.
252
+ - The `search-query-field` task tells a search inside a dialog to pass `syncOnNavigation: false` too, so it stops reading the page's URL params.
253
+
254
+ ## 0.1.0-next.18
255
+
256
+ ### Minor Changes
257
+
258
+ - Timetrack: every write command now queues for the user's approval in the app and prints an approval id; `timetrack approval <id>` reads the outcome, and the agent contract moves to version 3.
259
+ - Timetrack: add `timetrack sync <day>` to plan a day's Tempo sync, and `--write --plan <hash>` to write the confirmed plan; `worklogs --json` now reports a midnight `startTime`.
260
+ - Timetrack: add `timetrack worklog --delete <id> --day <YYYY-MM-DD>` to delete one of the account's own Tempo worklogs; the app refuses any other id.
261
+ - Timetrack: add `timetrack standins --merge <id> --into <id>` and the `standIn.merge` agent op, which waits for the user's approval. `standIn.list` now reports `hiddenOn` and `mergedIds`.
262
+
263
+ ### Patch Changes
264
+
265
+ - `parseBranch` now reads a leading issue key from a deprecated spelling such as `dev-FIP-2721-subject`, so it returns the key and a rename suggestion that carries it.
266
+ - The design exploration skill now tells an agent in the ethlete SDK that the user reads calls in Ethlete Studio (`yarn studio`), so the agent does not start `yarn design` next to it.
267
+ - Git-flow matches a project key prefix as a whole word, keeps the subject with a grouped `keyPattern`, drops the `CI_JOB_TOKEN` fallback, and prints an undo hint when the push after a repair rename fails.
268
+ - `git-flow repair` sends `GITLAB_TOKEN` only to the hosts in `GITLAB_HOST` or `CI_SERVER_HOST`, and no longer follows redirects.
269
+ - `git-flow repair` and `start` no longer mistake a remote branch that only ends with the name, such as `team/feat/x` for `feat/x`, for the branch.
270
+ - `sync` writes only changed files, survives dangling symlinks, warns about an unparseable hook settings file, and rejects duplicate frontmatter keys; `output-style --remove` works for a style no longer shipped.
271
+ - `timetrack` rejects a flag whose value is another flag, a malformed `naming` day and a non-positive `--limit`; `day --out` honours `--json` and resolves against the root.
272
+ - `timetrack` reads a date-only `--at`, `--from` or `--to` as local midnight and accepts a local `HH:MM`, and `timetrack project` resolves a relative path.
273
+ - `sync` refuses a file whose ethlete marker block has lost a marker, instead of deleting the text after it on the next run.
274
+ - Git flow: a lowercase `<word>-<number>` branch subject such as `step-2-rework` is no longer read as an issue key when no key prefixes are configured.
275
+ - `tableSortQueryField()` holds the `et-table` sort and keeps it in the URL, so `[(sort)]="qf.fields.sort().value"` binds it with no mapping.
276
+ - Recommend `sonnet` for scoped subagent work and keep `opus` for hard work, in the subagent-models rule and the subagent-model-policy hook.
277
+
278
+ ## 0.1.0-next.17
279
+
280
+ ### Minor Changes
281
+
282
+ - `et update` now leaves tasks to fix code written under the earlier guidance: app styling, URL-bound list state, hand-debounced search, hand-built charts, avatars and progress bars, and the Nx layout.
283
+ - `timetrack resync --replace` re-reads a checkout's agent logs and replaces the samples the store already holds for those sessions, so a parser fix reaches stored days.
284
+
285
+ ### Patch Changes
286
+
287
+ - The Angular and signals skills cover shared `injectX()` logic, per-row formatting, writing query params and effects that only write a signal; the comment rule says app code rarely has public API.
288
+ - Add the consumer skills `verify-in-app` (drive the served app headlessly with Playwright) and `app-testing` (specs for query, router and overlay code), and link the new query testing docs page from the query skill.
289
+ - The `app-styling` rule and its migration now keep `ViewEncapsulation.None` on app components, as the `require-view-encapsulation-none` lint rule requires, and scope the remaining CSS under the component's host class.
290
+ - Consumer repos get an `app-styling` rule (Tailwind in app templates, 10px rem root) instead of the SDK's component styling rule, and the `query` and `sdk-docs` skills now point to `defineQueryForm` and every component domain.
291
+ - Query skill: bridge a correlated result into RxJS with `executeUntilSettled$`, keeping the Promise form for signal-forms `submit()`.
292
+ - The `list-state-query-form` task binds pagination, page size and a table sort the way that works, and keeps `replaceUrl: true`. The query skill names `observe({ replaceUrl: true })`.
293
+ - The guidance migrations find the call sites they missed in a real app, and generated commands use the repo's package manager.
294
+ - The `app-styling-utilities`, `sdk-components-over-hand-built-ui` and `nx-layout` migration tasks name the real theme utilities, find more call sites, and stop before overriding a repo's own rules or the generated `AGENTS.md` block.
295
+ - Consumer Nx workspaces get an `nx-layout` rule: thin apps, feature code in `libs/domain`, and shared `queries`, `types`, `uikit`, `theme` and `env` libs with `scope:*` tags.
296
+ - The consumer query skill now maps every @ethlete/query capability to its docs page, so agents find APIs like `defineQueryForm` instead of hand-building them.
297
+ - `ethlete-agents` commands run from a subdirectory now use the nearest directory holding `ethlete-agents.config.json` as the repo root, so `check` no longer reports false drift there.
298
+ - The `sdk-docs` skill points consumer agents at the new App setup docs page first: root font size, theme generation and the providers an app needs.
299
+ - `sync` and `check` now name every skill or rule skipped for an unmet `requires` or missing var, and warn when a path var like `themeStylesheet` points at a missing file.
300
+ - `vars.themeStylesheet` may now name a folder of theme files. The `story-styling` skill searches it recursively.
301
+ - `recommendedTs` now uses `ethlete/consistent-type-definitions` instead of `@typescript-eslint/consistent-type-definitions`, so `--fix` no longer turns an interface inside `declare module` or `declare global` (such as the theme-name registry the `@ethlete/core` generators emit) into a type alias that merges into nothing.
302
+ - The `ET100` error now says mutations need `withArgs` too and calls `silenceMissingWithArgsFeatureError` an escape hatch; the query skill recommends `withArgs` for mutations.
303
+
304
+ ## 0.1.0-next.16
305
+
306
+ ### Patch Changes
307
+
308
+ - Name the `take-until-destroyed-last` lint rule in the styleguide lint lookup and the RxJS skill.
309
+ - A design call now lists its drawings as `variants` in `variant-<key>.ts` files, and `et design check` takes `--variant`; the old `options` key and `--option` flag are gone.
310
+
311
+ ## 0.1.0-next.15
312
+
313
+ ### Minor Changes
314
+
315
+ - Three skills vendored from mattpocock/skills: `grilling`, `domain-modeling`, and the `grill-with-docs` entry point that runs both.
316
+ - New opt-in `subagent-model-policy` hook: a Claude Code subagent call must name its `model`, and `fable` asks the user first. The new `subagent-models` rule says which model fits which task.
317
+ - Add a `codex-subagent` skill: delegate a task to a Codex agent through a wrapper that prints only the final message, read-only unless you pass `--write`.
318
+ - The `context-warning` hook now reaches the agent at session start, between its own tool
319
+ batches and as a turn ends, not only when the user sends a message.
320
+ - Give a design call rounds, a result band for the chain of winners, a contact sheet of every option and a compare overlay
321
+ - `spec/` is now a branch type of its own, for specification and planning work, so it no longer reports
322
+ `unknown-type`.
323
+ - Two new agent endpoint ops: `day.rows` answers the rows a day drew with the id each edit names, and
324
+ `day.edits` corrects one. `timetrack rows` and `timetrack edit` reach both.
325
+ - A new `settings.rules` agent op, and an `ethlete-agents timetrack rules` command, read the rules that
326
+ name a day's work out of the encrypted store.
327
+ - `timetrack day --out` writes a private file it will not overwrite unasked, printed provider text can
328
+ no longer drive the terminal, and `timetrack edit` refuses a call naming two edits.
329
+ - The timetrack CLI now makes the server prove it holds this run's token before it sends a request,
330
+ and follows no redirect. It needs Timetrack with agent contract version 2.
331
+
332
+ ### Patch Changes
333
+
334
+ - A placeholder now says which checkout, and which piece of it, its name stands for. Two of them may
335
+ carry one name: a spec track and the branch that implements it are both called after the feature.
336
+ - A placeholder repair now reads every branch and only the checkout's own author, so work on an
337
+ unmerged branch is no longer invisible to it.
338
+ - Splitting a checkout-wide placeholder no longer refuses over a day with no commit. It always
339
+ removes the record and its checkout-wide rule, so later branches can get records of their own.
340
+ - Let an agent delete a placeholder through `timetrack standins --remove`, and report
341
+ which checkout and branch each one covers. A record of the wider grain blocked every
342
+ branch of its checkout, and only a click could clear it.
343
+ - A placeholder can be given another name: `timetrack standins --rename <id> --name <text>`. Its
344
+ days and the rules that name it stay, which a delete and a fresh record would lose.
345
+ - Design exploration: the story checker and the screenshot template now also detect Vite's compile error overlay, not only webpack's.
346
+ - The `handoff` skill now tells the agent to name only its own invocation form, so a saved handoff no longer reports the Claude Code and Codex commands side by side.
347
+ - A handoff is now written only when work is actually left: the `handoff` skill tests for it first, and the `context-warning` hook's auto-mode escalation no longer forces a file.
348
+ - `ethlete-agents timetrack day [YYYY-MM-DD]` reports the evidence a day holds, and `--out <path>`
349
+ writes it to a file. The app's store is encrypted, so this is the only way a script reads a real day.
350
+ - `context-warning` hook: the critical tier now asks the agent to finish or hand off instead of forcing a handoff, and every later prompt repeats the remaining budget.
351
+ - Context warnings now distinguish sub-agent pressure from the main session and track each thread independently.
352
+ - A work path is cut to the project its checkout declares, not to a fixed depth. Where a repository
353
+ declares none, its own commits pick the grain between them.
354
+ - Add the `design-exploration` skill: visual design work runs as a dialog, one open call at a time.
355
+ - The design-exploration skill now works in calls instead of story ids, and carries three sub-agent
356
+ briefs for drawing, checking and writing up one.
357
+ - The design-exploration skill now puts a repository's design work in `.ethlete/design/`, with one
358
+ project per slug segment. Each project names its own `styles` and `head`, so one project's type
359
+ scale and fonts no longer reach another project's drawings.
360
+ - On resume, the handoff skill now says to read only what you are about to change, instead of
361
+ re-reading the plan files the handoff already summarises.
362
+ - Say which placeholder holds a whole checkout, and refuse a delete that would strand
363
+ the days it covers. A checkout answered by a placeholder no longer reports as named
364
+ by an issue.
365
+ - A placeholder that covered a whole checkout can be cut into one per directory its commits worked in.
366
+ `timetrack standins --split <id>` reads the directories and the user picks the pieces.
367
+ - A split can name the checkout of a record that holds none, and a claimed directory the commits
368
+ never named opens a piece of its own.
369
+ - `et design [checkout]` serves the design page of any repository that keeps a `.ethlete/design`
370
+ folder, and `et design check` says why a call does not render.
371
+ - `et design check --call` now reports `NO BROWSER` when neither the checkout nor the package
372
+ resolves `playwright`, instead of throwing the module loader's own error.
373
+ - `repoNamingDecisions`, the `naming.offers` op and `ethlete-agents timetrack naming` say why a checkout was offered no name.
374
+ - An agent reads the open stand-ins through `standIn.list` and `ethlete-agents timetrack standins`. It may list them and never write one.
375
+ - `status` and `ethlete-agents timetrack status` report `tempoReady`. Without a Tempo token the app reads no worklog history, and nothing said so.
376
+
377
+ ## 0.1.0-next.14
378
+
379
+ ### Minor Changes
380
+
381
+ - [#3075](https://github.com/ethlete-io/ethdk/pull/3075) [`1d38e7e`](https://github.com/ethlete-io/ethdk/commit/1d38e7e0a025769f065d8ca7d506cb75ad89139a) Thanks [@github-actions](https://github.com/apps/github-actions)! - `et update` moves the `@ethlete/*` packages to a newer version, runs the codemods those versions
382
+ declare in their own `migrations.json`, and reports what needs a decision or an agent.
383
+
384
+ ## 0.1.0-next.13
385
+
386
+ ### Minor Changes
387
+
388
+ - [`b6fe4be`](https://github.com/ethlete-io/ethdk/commit/b6fe4beae010aaa2e0e367d636f6759442983395) Thanks [@TomTomB](https://github.com/TomTomB)! - `sdkSourcePath`, `apiRepoPaths` and `apiRepoBranches` moved to `ethlete.config.local.json`, owned by
389
+ `@ethlete/cli`. The old file is still read, and reports where they went.
390
+
391
+ ## 0.1.0-next.12
392
+
393
+ ### Patch Changes
394
+
395
+ - [#3069](https://github.com/ethlete-io/ethdk/pull/3069) [`a258308`](https://github.com/ethlete-io/ethdk/commit/a258308e0753eb65d08b3d7fb9a9f14507229047) Thanks [@github-actions](https://github.com/apps/github-actions)! - Agent rules: make generated guidance safer, reference-aware, example-validated, and cheaper to load.
396
+
397
+ - [#3069](https://github.com/ethlete-io/ethdk/pull/3069) [`973462e`](https://github.com/ethlete-io/ethdk/commit/973462ebb9ec7c2eef1aca3fc9f01615824d0074) Thanks [@github-actions](https://github.com/apps/github-actions)! - Agent rules: warn about unknown exclusions and apply Codex model-specific long-context pricing limits in the context warning hook.
398
+
399
+ ## 0.1.0-next.11
400
+
401
+ ### Patch Changes
402
+
403
+ - [`16ae17e`](https://github.com/ethlete-io/ethdk/commit/16ae17e30238ef4539f3e168ca8299a4546ac292) Thanks [@TomTomB](https://github.com/TomTomB)! - The theming skill now states that a component which tints with `--et-theme-color-primary-opacity`
404
+ must compose the color itself, and that an `@property` `initial-value` cannot use a font-relative or
405
+ container unit.
406
+
407
+ ## 0.1.0-next.10
408
+
409
+ ### Minor Changes
410
+
411
+ - [#3067](https://github.com/ethlete-io/ethdk/pull/3067) [`226fd3d`](https://github.com/ethlete-io/ethdk/commit/226fd3d0b52f1a131ccbaa417ffe96682752d3f8) Thanks [@github-actions](https://github.com/apps/github-actions)! - New `ethlete-agents output-style` command: it installs the `ste-clarity` ASD-STE100 output style into Claude Code's user config and switches to it. Claude Code only.
412
+
413
+ - [#3067](https://github.com/ethlete-io/ethdk/pull/3067) [`3657156`](https://github.com/ethlete-io/ethdk/commit/36571560c755468459a87da9d9ec5764d976ee96) Thanks [@github-actions](https://github.com/apps/github-actions)! - `ethlete-agents timetrack instance` reports the Jira instance's own levels and the custom fields a
414
+ branch subject could go in, so a setup step reads the answer instead of guessing it.
415
+
416
+ ## 0.1.0-next.9
417
+
418
+ ### Minor Changes
419
+
420
+ - [`ae165cc`](https://github.com/ethlete-io/ethdk/commit/ae165cc4123e3f2abaa88c5cfd8262b13aac81d1) Thanks [@TomTomB](https://github.com/TomTomB)! - New `api-source` skill reads the API repo of the app you are in, from the local config's new `apiRepoPaths` map (`{ "hub": "../fut-hub-backend" }`).
421
+
422
+ - [`f132d0b`](https://github.com/ethlete-io/ethdk/commit/f132d0b64e322c5823c9f50adeedecf388c5aa65) Thanks [@TomTomB](https://github.com/TomTomB)! - `ethlete-agents timetrack` reaches Jira through the running Timetrack app, so no repository holds a
423
+ token any more — the `jira` credentials in the local config and the `JIRA_*` variables are gone.
424
+
425
+ - [#3066](https://github.com/ethlete-io/ethdk/pull/3066) [`fef4586`](https://github.com/ethlete-io/ethdk/commit/fef45868b10b0a0f01efff741958d65d9e405a31) Thanks [@github-actions](https://github.com/apps/github-actions)! - `git-flow`: add `conformingNameFor()`, which names what a non-conforming branch should be renamed to, and `git-flow repair` now handles a keyless branch it previously refused.
426
+
427
+ - [#3066](https://github.com/ethlete-io/ethdk/pull/3066) [`fef4586`](https://github.com/ethlete-io/ethdk/commit/fef45868b10b0a0f01efff741958d65d9e405a31) Thanks [@github-actions](https://github.com/apps/github-actions)! - `git-flow`: export `featureBranchesFor()` and `nestedSpecFor()`, so a host can plan a nested branch without running the CLI.
428
+
429
+ ## 0.1.0-next.8
430
+
431
+ ### Patch Changes
432
+
433
+ - [#3058](https://github.com/ethlete-io/ethdk/pull/3058) [`7074ffc`](https://github.com/ethlete-io/ethdk/commit/7074ffcb99812faed82a4e32fa3f8a1a43fcaf9d) Thanks [@github-actions](https://github.com/apps/github-actions)! - The `sdk-docs` skill points agents at the docs site's `llms.txt` index and the `.md` suffix on any page URL, so a page can be found and read without guessing a URL from the hardcoded domain list.
434
+
435
+ - [#3058](https://github.com/ethlete-io/ethdk/pull/3058) [`86fce5b`](https://github.com/ethlete-io/ethdk/commit/86fce5b87770ef4d5b069e59fec745eae93fda7b) Thanks [@github-actions](https://github.com/apps/github-actions)! - The `sdk-source` skill points at `apps/storybook/`, the SDK repo's renamed Storybook host.
436
+
437
+ ## 0.1.0-next.7
438
+
439
+ ### Minor Changes
440
+
441
+ - [#3056](https://github.com/ethlete-io/ethdk/pull/3056) [`8aec5ff`](https://github.com/ethlete-io/ethdk/commit/8aec5ff1a3ea6dd459d0e00bc691468019dcaca6) Thanks [@github-actions](https://github.com/apps/github-actions)! - Generated files no longer stamp the package version into their banner, so a release bump alone no longer reports every repo as out of sync - only real content changes do.
442
+
443
+ ### Patch Changes
444
+
445
+ - [#3056](https://github.com/ethlete-io/ethdk/pull/3056) [`b5f72d6`](https://github.com/ethlete-io/ethdk/commit/b5f72d6bf35dd0e49cf14588b651012fb5d6a7c5) Thanks [@github-actions](https://github.com/apps/github-actions)! - The git-commit guide now presents its format as the repo's own convention unless a commitlint config is actually there, instead of pointing every repo at a `commitlint.config.js` it may not have.
446
+
447
+ ## 0.1.0-next.6
448
+
449
+ ### Minor Changes
450
+
451
+ - [#3055](https://github.com/ethlete-io/ethdk/pull/3055) [`86cd6e9`](https://github.com/ethlete-io/ethdk/commit/86cd6e97072d38436650ddc94a15527da34fa946) Thanks [@github-actions](https://github.com/apps/github-actions)! - Add the git-flow branch convention: a `git-flow` skill, `ethlete-agents git-flow start|check|repair|explain`, opt-in git hooks, and the parser at `@ethlete/agent-rules/git-flow`.
452
+
453
+ ### Patch Changes
454
+
455
+ - [#3055](https://github.com/ethlete-io/ethdk/pull/3055) [`01b0797`](https://github.com/ethlete-io/ethdk/commit/01b0797d80df17e740419402034bc3eec739daaf) Thanks [@github-actions](https://github.com/apps/github-actions)! - The context-warning hook now points at `/ethlete-handoff`, the name the generated skill actually has, instead of a `/handoff` command that does not exist in a consumer repo.
456
+
457
+ ## 0.1.0-next.5
458
+
459
+ ### Minor Changes
460
+
461
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`6e19999`](https://github.com/ethlete-io/ethdk/commit/6e199997f51b88aaa1860a56a6b96be057ba1205) Thanks [@github-actions](https://github.com/apps/github-actions)! - The `context-warning` hook now runs under Codex as well as Claude Code, registered in
462
+ `.codex/hooks.json` whenever the `codex` target is on.
463
+
464
+ - [#3049](https://github.com/ethlete-io/ethdk/pull/3049) [`a606dda`](https://github.com/ethlete-io/ethdk/commit/a606dda0695ac8cc4370816bf3ff1c0814436091) Thanks [@TomTomB](https://github.com/TomTomB)! - Add the `figma-export` skill, guiding agents through reconciling a component against a Figma "copy as CSS" export.
465
+
466
+ ### Patch Changes
467
+
468
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`fc56189`](https://github.com/ethlete-io/ethdk/commit/fc56189450a45f2b5819d40945a71205a6d67ba0) Thanks [@github-actions](https://github.com/apps/github-actions)! - The `query` skill now says to prefer `withArgs` over passing `args` to `execute()`, and when the imperative form is still right.
469
+
470
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`a16cc69`](https://github.com/ethlete-io/ethdk/commit/a16cc698a3cd3f14d0419d8f9710929fb41b4711) Thanks [@github-actions](https://github.com/apps/github-actions)! - Figma export skill: read an SVG frame as well as the CSS dump, with a `dump-figma-svg.py`
471
+ that prints its box tree and measures the auto-layout gaps.
472
+
473
+ ## 0.1.0-next.4
474
+
475
+ ### Minor Changes
476
+
477
+ - [#3045](https://github.com/ethlete-io/ethdk/pull/3045) [`fcd14f0`](https://github.com/ethlete-io/ethdk/commit/fcd14f09b4b09f81b5bde9f128a0fac4b0e2245c) Thanks [@github-actions](https://github.com/apps/github-actions)! - Add `disableAutoHandoffSave` to `ethlete-agents.config.local.json`, to opt out of the context-warning hook's auto-mode auto-save at the critical tier while keeping its normal warnings.
478
+
479
+ ### Patch Changes
480
+
481
+ - [#3045](https://github.com/ethlete-io/ethdk/pull/3045) [`eb1b0a9`](https://github.com/ethlete-io/ethdk/commit/eb1b0a9cfb4e868b13a2b8eb6fd13221a6e0a654) Thanks [@github-actions](https://github.com/apps/github-actions)! - `context-warning` hook: in auto mode, the critical-tier warning now saves a `/handoff` immediately instead of just recommending it.
482
+
3
483
  ## 0.1.0-next.3
4
484
 
5
485
  ### Patch Changes
package/CLAUDE.md ADDED
@@ -0,0 +1 @@
1
+ @AGENTS.md