@prestyj/cli 5.5.0 → 5.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 (145) hide show
  1. package/assets/end-notification.mp3 +0 -0
  2. package/assets/skills/evidence-led-ui/LICENSES.md +68 -0
  3. package/assets/skills/evidence-led-ui/SKILL.md +139 -0
  4. package/{LICENSE → assets/skills/evidence-led-ui/corpus/awesome-design-md/LICENSE} +1 -1
  5. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/airbnb/DESIGN.md +545 -0
  6. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/airtable/DESIGN.md +554 -0
  7. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/apple/DESIGN.md +562 -0
  8. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/binance/DESIGN.md +634 -0
  9. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bmw/DESIGN.md +544 -0
  10. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bmw-m/DESIGN.md +503 -0
  11. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bugatti/DESIGN.md +454 -0
  12. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cal/DESIGN.md +542 -0
  13. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/claude/DESIGN.md +589 -0
  14. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/clay/DESIGN.md +541 -0
  15. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/clickhouse/DESIGN.md +544 -0
  16. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cohere/DESIGN.md +451 -0
  17. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/coinbase/DESIGN.md +570 -0
  18. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/composio/DESIGN.md +506 -0
  19. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cursor/DESIGN.md +537 -0
  20. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/dell-1996/DESIGN.md +632 -0
  21. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/elevenlabs/DESIGN.md +504 -0
  22. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/expo/DESIGN.md +526 -0
  23. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ferrari/DESIGN.md +531 -0
  24. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/figma/DESIGN.md +578 -0
  25. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/framer/DESIGN.md +544 -0
  26. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/hashicorp/DESIGN.md +575 -0
  27. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/hp/DESIGN.md +670 -0
  28. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ibm/DESIGN.md +550 -0
  29. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/intercom/DESIGN.md +546 -0
  30. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/kraken/DESIGN.md +125 -0
  31. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/lamborghini/DESIGN.md +288 -0
  32. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/linear.app/DESIGN.md +548 -0
  33. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/lovable/DESIGN.md +298 -0
  34. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mastercard/DESIGN.md +365 -0
  35. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/meta/DESIGN.md +683 -0
  36. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/minimax/DESIGN.md +746 -0
  37. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mintlify/DESIGN.md +852 -0
  38. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/miro/DESIGN.md +825 -0
  39. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mistral.ai/DESIGN.md +773 -0
  40. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mongodb/DESIGN.md +767 -0
  41. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nike/DESIGN.md +575 -0
  42. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nintendo-2001/DESIGN.md +649 -0
  43. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/notion/DESIGN.md +821 -0
  44. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nvidia/DESIGN.md +640 -0
  45. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ollama/DESIGN.md +539 -0
  46. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/opencode.ai/DESIGN.md +521 -0
  47. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/pinterest/DESIGN.md +597 -0
  48. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/playstation/DESIGN.md +661 -0
  49. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/posthog/DESIGN.md +690 -0
  50. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/raycast/DESIGN.md +669 -0
  51. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/renault/DESIGN.md +589 -0
  52. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/replicate/DESIGN.md +616 -0
  53. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/resend/DESIGN.md +585 -0
  54. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/revolut/DESIGN.md +636 -0
  55. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/runwayml/DESIGN.md +244 -0
  56. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/sanity/DESIGN.md +357 -0
  57. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/sentry/DESIGN.md +551 -0
  58. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/shopify/DESIGN.md +516 -0
  59. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/slack/DESIGN.md +482 -0
  60. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/spacex/DESIGN.md +363 -0
  61. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/spotify/DESIGN.md +246 -0
  62. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/starbucks/DESIGN.md +580 -0
  63. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/stripe/DESIGN.md +487 -0
  64. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/supabase/DESIGN.md +462 -0
  65. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/superhuman/DESIGN.md +448 -0
  66. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/tesla/DESIGN.md +286 -0
  67. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/theverge/DESIGN.md +339 -0
  68. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/together.ai/DESIGN.md +633 -0
  69. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/uber/DESIGN.md +636 -0
  70. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/vercel/DESIGN.md +736 -0
  71. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/vodafone/DESIGN.md +538 -0
  72. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/voltagent/DESIGN.md +521 -0
  73. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/warp/DESIGN.md +526 -0
  74. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/webflow/DESIGN.md +588 -0
  75. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/wired/DESIGN.md +497 -0
  76. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/wise/DESIGN.md +544 -0
  77. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/x.ai/DESIGN.md +465 -0
  78. package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/zapier/DESIGN.md +537 -0
  79. package/assets/skills/evidence-led-ui/data/corpus-manifest.json +768 -0
  80. package/assets/skills/evidence-led-ui/data/observations.json +47053 -0
  81. package/assets/skills/evidence-led-ui/references/anti-defaults.md +203 -0
  82. package/assets/skills/evidence-led-ui/references/archetypes.md +97 -0
  83. package/assets/skills/evidence-led-ui/references/craft-rulings.md +167 -0
  84. package/assets/skills/evidence-led-ui/references/methodology.md +72 -0
  85. package/assets/skills/evidence-led-ui/references/observed-patterns.md +68 -0
  86. package/assets/skills/evidence-led-ui/references/production-contract.md +120 -0
  87. package/assets/skills/evidence-led-ui/references/provenance.md +117 -0
  88. package/assets/skills/evidence-led-ui/references/quality-rubric.md +126 -0
  89. package/dist/app-sidecar.js +32 -4
  90. package/dist/app-sidecar.js.map +1 -1
  91. package/dist/chat-agents/general.test.js +3 -0
  92. package/dist/chat-agents/general.test.js.map +1 -1
  93. package/dist/chat-agents/jiwa.d.ts +53 -0
  94. package/dist/chat-agents/jiwa.d.ts.map +1 -0
  95. package/dist/chat-agents/jiwa.js +352 -0
  96. package/dist/chat-agents/jiwa.js.map +1 -0
  97. package/dist/chat-agents/jiwa.test.d.ts +2 -0
  98. package/dist/chat-agents/jiwa.test.d.ts.map +1 -0
  99. package/dist/chat-agents/jiwa.test.js +66 -0
  100. package/dist/chat-agents/jiwa.test.js.map +1 -0
  101. package/dist/chat-agents/shared.d.ts.map +1 -1
  102. package/dist/chat-agents/shared.js +5 -1
  103. package/dist/chat-agents/shared.js.map +1 -1
  104. package/dist/core/agent-session.d.ts +2 -3
  105. package/dist/core/agent-session.d.ts.map +1 -1
  106. package/dist/core/agent-session.js +10 -16
  107. package/dist/core/agent-session.js.map +1 -1
  108. package/dist/core/goal-worker.test.js +3 -2
  109. package/dist/core/goal-worker.test.js.map +1 -1
  110. package/dist/core/loop-breaker.d.ts +23 -16
  111. package/dist/core/loop-breaker.d.ts.map +1 -1
  112. package/dist/core/loop-breaker.js +52 -11
  113. package/dist/core/loop-breaker.js.map +1 -1
  114. package/dist/core/loop-breaker.test.js +37 -16
  115. package/dist/core/loop-breaker.test.js.map +1 -1
  116. package/dist/core/nolan-prompt.d.ts +3 -3
  117. package/dist/core/nolan-prompt.d.ts.map +1 -1
  118. package/dist/core/nolan-prompt.js +10 -10
  119. package/dist/core/nolan-prompt.js.map +1 -1
  120. package/dist/core/nolan-prompt.test.js +17 -0
  121. package/dist/core/nolan-prompt.test.js.map +1 -1
  122. package/dist/core/skills-routing.test.d.ts +2 -0
  123. package/dist/core/skills-routing.test.d.ts.map +1 -0
  124. package/dist/core/skills-routing.test.js +70 -0
  125. package/dist/core/skills-routing.test.js.map +1 -0
  126. package/dist/core/skills.d.ts +2 -0
  127. package/dist/core/skills.d.ts.map +1 -1
  128. package/dist/core/skills.js +32 -9
  129. package/dist/core/skills.js.map +1 -1
  130. package/dist/system-prompt.js +2 -2
  131. package/dist/system-prompt.js.map +1 -1
  132. package/dist/system-prompt.test.js +7 -5
  133. package/dist/system-prompt.test.js.map +1 -1
  134. package/dist/tools/skill.d.ts.map +1 -1
  135. package/dist/tools/skill.js +8 -3
  136. package/dist/tools/skill.js.map +1 -1
  137. package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
  138. package/dist/ui/components/SkillsOverlay.js +8 -3
  139. package/dist/ui/components/SkillsOverlay.js.map +1 -1
  140. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  141. package/dist/ui/hooks/useAgentLoop.js +7 -18
  142. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  143. package/dist/ui/hooks/useAgentLoop.test.js +27 -0
  144. package/dist/ui/hooks/useAgentLoop.test.js.map +1 -1
  145. package/package.json +7 -6
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { buildLoopBreakMessage, detectTextRepetition, evaluateLoopBreak, toolCallSignature, } from "./loop-breaker.js";
2
+ import { buildLoopBreakMessage, detectTextRepetition, evaluateLoopBreak, ToolCallProgressTracker, toolCallSignature, } from "./loop-breaker.js";
3
3
  describe("toolCallSignature", () => {
4
4
  it("is stable regardless of key order in args", () => {
5
5
  const a = toolCallSignature("edit", { file_path: "a.ts", old: "x", new: "y" });
@@ -35,12 +35,38 @@ describe("detectTextRepetition", () => {
35
35
  expect(detectTextRepetition("ok")).toBe(false);
36
36
  });
37
37
  });
38
+ describe("ToolCallProgressTracker", () => {
39
+ it("counts only consecutive identical calls with unchanged results", () => {
40
+ const tracker = new ToolCallProgressTracker();
41
+ expect(tracker.record("read", { file_path: "a.ts" }, "one", false)).toBe(1);
42
+ expect(tracker.record("read", { file_path: "a.ts" }, "one", false)).toBe(2);
43
+ expect(tracker.record("read", { file_path: "a.ts" }, "two", false)).toBe(1);
44
+ expect(tracker.record("read", { file_path: "b.ts" }, "two", false)).toBe(1);
45
+ });
46
+ it("treats successful iterative edits to one file as progress", () => {
47
+ const tracker = new ToolCallProgressTracker();
48
+ for (let i = 0; i < 6; i++) {
49
+ expect(tracker.record("edit", { file_path: "a.ts", old_text: `before-${i}`, new_text: `after-${i}` }, `diff-${i}`, false)).toBe(1);
50
+ }
51
+ });
52
+ it("does not count background polling as a stuck loop", () => {
53
+ const tracker = new ToolCallProgressTracker();
54
+ for (let i = 0; i < 5; i++) {
55
+ expect(tracker.record("task_output", { id: "job-1" }, "still running", false)).toBe(0);
56
+ }
57
+ });
58
+ it("does not count passive sleep commands as a stuck loop", () => {
59
+ const tracker = new ToolCallProgressTracker();
60
+ for (let i = 0; i < 3; i++) {
61
+ expect(tracker.record("bash", { command: "sleep 30" }, "", false)).toBe(0);
62
+ }
63
+ });
64
+ });
38
65
  describe("evaluateLoopBreak", () => {
39
66
  it("does not break on healthy progress", () => {
40
67
  const decision = evaluateLoopBreak({
41
68
  consecutiveFailures: 1,
42
- maxSignatureRepeats: 1,
43
- maxSameFileEdits: 2,
69
+ repeatedNoProgressCalls: 1,
44
70
  textRepetitionDetected: false,
45
71
  });
46
72
  expect(decision.shouldBreak).toBe(false);
@@ -49,38 +75,33 @@ describe("evaluateLoopBreak", () => {
49
75
  it("breaks after repeated consecutive tool failures", () => {
50
76
  const decision = evaluateLoopBreak({
51
77
  consecutiveFailures: 3,
52
- maxSignatureRepeats: 1,
53
- maxSameFileEdits: 1,
78
+ repeatedNoProgressCalls: 1,
54
79
  textRepetitionDetected: false,
55
80
  });
56
81
  expect(decision.shouldBreak).toBe(true);
57
82
  expect(decision.reasons.join(" ")).toContain("3 consecutive failed tool calls");
58
83
  });
59
- it("breaks when the identical tool call is repeated", () => {
84
+ it("breaks when an identical call repeatedly returns the same result", () => {
60
85
  const decision = evaluateLoopBreak({
61
86
  consecutiveFailures: 0,
62
- maxSignatureRepeats: 3,
63
- maxSameFileEdits: 1,
87
+ repeatedNoProgressCalls: 3,
64
88
  textRepetitionDetected: false,
65
89
  });
66
90
  expect(decision.shouldBreak).toBe(true);
67
- expect(decision.reasons.join(" ")).toContain("identical tool call");
91
+ expect(decision.reasons.join(" ")).toContain("same result");
68
92
  });
69
- it("breaks when one file is edited many times in a run", () => {
93
+ it("does not treat successful same-file edits as a loop", () => {
70
94
  const decision = evaluateLoopBreak({
71
95
  consecutiveFailures: 0,
72
- maxSignatureRepeats: 1,
73
- maxSameFileEdits: 5,
96
+ repeatedNoProgressCalls: 1,
74
97
  textRepetitionDetected: false,
75
98
  });
76
- expect(decision.shouldBreak).toBe(true);
77
- expect(decision.reasons.join(" ")).toContain("5 edits to the same file");
99
+ expect(decision.shouldBreak).toBe(false);
78
100
  });
79
101
  it("breaks when streaming text degenerates into repetition", () => {
80
102
  const decision = evaluateLoopBreak({
81
103
  consecutiveFailures: 0,
82
- maxSignatureRepeats: 1,
83
- maxSameFileEdits: 1,
104
+ repeatedNoProgressCalls: 1,
84
105
  textRepetitionDetected: true,
85
106
  });
86
107
  expect(decision.shouldBreak).toBe(true);
@@ -1 +1 @@
1
- {"version":3,"file":"loop-breaker.test.js","sourceRoot":"","sources":["../../src/core/loop-breaker.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-breaker.test.js","sourceRoot":"","sources":["../../src/core/loop-breaker.test.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,9 @@ export declare function buildNolanSystemPrompt(cwd: string): Promise<string>;
14
14
  * Nolan. He never talks to the user here; he auto-reviews EZ Coder's work and
15
15
  * replies with one of four machine-parseable verdicts (PROMPT / ALL_CLEAR /
16
16
  * IGNORE / HUMAN). Reuses the shared judgment bar (identity, skepticism, taste,
17
- * method, discipline) so his standards are identical to chat Nolan, but swaps the
18
- * user-facing output contract for the verdict format and drops the chat-voice
19
- * sections to save tokens.
17
+ * method, UI review, discipline) so his standards are identical to chat Nolan, but
18
+ * swaps the user-facing output contract for the verdict format and drops the
19
+ * chat-voice sections to save tokens.
20
20
  */
21
21
  export declare function buildNolanAutopilotSystemPrompt(cwd: string): Promise<string>;
22
22
  //# sourceMappingURL=nolan-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nolan-prompt.d.ts","sourceRoot":"","sources":["../../src/core/nolan-prompt.ts"],"names":[],"mappings":"AAmBA;mFACmF;AACnF,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAkB3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBzE;AAED;;;;;;;;GAQG;AACH,wBAAsB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelF"}
1
+ {"version":3,"file":"nolan-prompt.d.ts","sourceRoot":"","sources":["../../src/core/nolan-prompt.ts"],"names":[],"mappings":"AAmBA;mFACmF;AACnF,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAkB3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBzE;AAED;;;;;;;;GAQG;AACH,wBAAsB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlF"}
@@ -66,9 +66,9 @@ export async function buildNolanSystemPrompt(cwd) {
66
66
  * Nolan. He never talks to the user here; he auto-reviews EZ Coder's work and
67
67
  * replies with one of four machine-parseable verdicts (PROMPT / ALL_CLEAR /
68
68
  * IGNORE / HUMAN). Reuses the shared judgment bar (identity, skepticism, taste,
69
- * method, discipline) so his standards are identical to chat Nolan, but swaps the
70
- * user-facing output contract for the verdict format and drops the chat-voice
71
- * sections to save tokens.
69
+ * method, UI review, discipline) so his standards are identical to chat Nolan, but
70
+ * swaps the user-facing output contract for the verdict format and drops the
71
+ * chat-voice sections to save tokens.
72
72
  */
73
73
  export async function buildNolanAutopilotSystemPrompt(cwd) {
74
74
  return [
@@ -77,6 +77,7 @@ export async function buildNolanAutopilotSystemPrompt(cwd) {
77
77
  renderSkeptical(),
78
78
  renderTaste(),
79
79
  renderMethod(),
80
+ renderUiTaste(),
80
81
  renderDiscipline(),
81
82
  renderAutopilotContract(),
82
83
  await renderProjectContext(cwd),
@@ -287,13 +288,12 @@ function renderAutopilotContract() {
287
288
  `nothing more.`);
288
289
  }
289
290
  function renderUiTaste() {
290
- return (`## UI: copy proven winners\n\n` +
291
- `Never let EZ Coder invent janky CSS from scratch. Good UI comes from copying ` +
292
- `what already won. Find a real site or product that nails the look the user ` +
293
- `wants and have EZ Coder replicate it: open the reference, pull the actual ` +
294
- `markup and computed styles from the browser, and rebuild from that instead of ` +
295
- `guessing. For components, point at proven sources like https://uiverse.io/ and ` +
296
- `https://reactbits.dev/. Reference real work, don't hallucinate taste.`);
291
+ return (`## UI: evidence over imitation\n\n` +
292
+ `For web or mobile interface work, use an invoked matching UI skill as specialized guidance. ` +
293
+ `Only flag a missing invocation when the session or project context explicitly shows that the skill was available and applicable. ` +
294
+ `Review the result against the user's request, the project's existing components and tokens, rendered desktop and mobile output, accessibility, interaction states, and production behavior.\n\n` +
295
+ `References are evidence, not templates to clone. Use real products and licensed component sources to understand hierarchy, composition, and interaction patterns, then adapt those principles with the project's own primitives. ` +
296
+ `Never direct EZ Coder to copy protected markup, computed styles, assets, branding, or product identity wholesale.`);
297
297
  }
298
298
  function renderDiscipline() {
299
299
  return (`## Discipline\n\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"nolan-prompt.js","sourceRoot":"","sources":["../../src/core/nolan-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nolan-prompt.js","sourceRoot":"","sources":["../../src/core/nolan-prompt.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,23 @@ describe("buildNolanSystemPrompt — chat mode unaffected", () => {
92
92
  expect(prompt).not.toContain("ALL_CLEAR");
93
93
  });
94
94
  });
95
+ describe("UI guidance alignment", () => {
96
+ it("reviews UI through the matching skill and evidence without wholesale copying", async () => {
97
+ for (const prompt of [
98
+ await buildNolanSystemPrompt(TEST_CWD),
99
+ await buildNolanAutopilotSystemPrompt(TEST_CWD),
100
+ ]) {
101
+ expect(prompt).toContain("UI: evidence over imitation");
102
+ expect(prompt).toContain("use an invoked matching UI skill as specialized guidance");
103
+ expect(prompt).toContain("explicitly shows that the skill was available and applicable");
104
+ expect(prompt).toContain("existing components and tokens");
105
+ expect(prompt).toContain("rendered desktop and mobile output");
106
+ expect(prompt).toContain("References are evidence, not templates to clone");
107
+ expect(prompt).not.toContain("copy proven winners");
108
+ expect(prompt).not.toContain("pull the actual markup and computed styles");
109
+ }
110
+ });
111
+ });
95
112
  describe("EZ Coder capabilities — both modes know what the executor can do", () => {
96
113
  it("teaches Nolan EZ Coder's real toolset in chat AND autopilot", async () => {
97
114
  // Nolan directs EZ Coder, so both prompts must ground his instructions in the
@@ -1 +1 @@
1
- {"version":3,"file":"nolan-prompt.test.js","sourceRoot":"","sources":["../../src/core/nolan-prompt.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nolan-prompt.test.js","sourceRoot":"","sources":["../../src/core/nolan-prompt.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skills-routing.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-routing.test.d.ts","sourceRoot":"","sources":["../../src/core/skills-routing.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import fs from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { discoverSkills, formatSkillsForPrompt } from "./skills.js";
6
+ import { createSkillTool } from "../tools/skill.js";
7
+ const skill = {
8
+ name: "evidence-led-ui",
9
+ description: "Use for UI work. Exclude backend-only tasks.",
10
+ content: "Inspect before inventing.",
11
+ source: "global",
12
+ root: "/skills/evidence-led-ui",
13
+ };
14
+ describe("skill routing prompts", () => {
15
+ it("requires matching skills before decisions or edits", () => {
16
+ const prompt = formatSkillsForPrompt([skill]);
17
+ expect(prompt).toContain("compare the user's request with every skill description");
18
+ expect(prompt).toContain("before making decisions or edits");
19
+ expect(prompt).toContain("Respect explicit exclusions");
20
+ expect(prompt).toContain("do not override project or file/module rules");
21
+ expect(prompt).toContain("evidence-led-ui");
22
+ });
23
+ it("places the same routing rule in the skill tool description", () => {
24
+ const tool = createSkillTool([skill]);
25
+ expect(tool.description).toContain("Before acting");
26
+ expect(tool.description).toContain("matches its scope");
27
+ expect(tool.description).toContain("respect explicit exclusions");
28
+ });
29
+ it("keeps loaded skill instructions below project and file/module rules", async () => {
30
+ const tool = createSkillTool([skill]);
31
+ const result = await tool.execute({ skill: skill.name }, { signal: new AbortController().signal, toolCallId: "test" });
32
+ expect(result).toContain("Skill root directory: /skills/evidence-led-ui");
33
+ expect(result).toContain("authoritative within their stated scope");
34
+ expect(result).toContain("Preserve higher-priority project and file/module rules");
35
+ });
36
+ it("discovers evidence-led-ui for a fresh user from bundled assets", async () => {
37
+ const root = await fs.mkdtemp(path.join(os.tmpdir(), "bundled-skills-"));
38
+ try {
39
+ const skills = await discoverSkills({ globalSkillsDir: path.join(root, "global") });
40
+ const evidenceSkill = skills.find((candidate) => candidate.name === "evidence-led-ui");
41
+ expect(evidenceSkill?.source).toBe("bundled");
42
+ expect(evidenceSkill?.root).toContain("assets/skills/evidence-led-ui");
43
+ expect(evidenceSkill?.content).toContain("# Evidence-Led UI");
44
+ }
45
+ finally {
46
+ await fs.rm(root, { recursive: true, force: true });
47
+ }
48
+ });
49
+ it("lets project skills override global and bundled definitions by name", async () => {
50
+ const root = await fs.mkdtemp(path.join(os.tmpdir(), "skill-precedence-"));
51
+ const globalSkillsDir = path.join(root, "global");
52
+ const projectDir = path.join(root, "project");
53
+ const projectSkillsDir = path.join(projectDir, ".ezcoder", "skills");
54
+ try {
55
+ await fs.mkdir(globalSkillsDir, { recursive: true });
56
+ await fs.mkdir(projectSkillsDir, { recursive: true });
57
+ await fs.writeFile(path.join(globalSkillsDir, "evidence.md"), "---\nname: evidence-led-ui\ndescription: global\n---\nGlobal guidance.");
58
+ await fs.writeFile(path.join(projectSkillsDir, "evidence.md"), "---\nname: evidence-led-ui\ndescription: project\n---\nProject guidance.");
59
+ const skills = await discoverSkills({ globalSkillsDir, projectDir });
60
+ const matching = skills.filter((candidate) => candidate.name === "evidence-led-ui");
61
+ expect(matching).toHaveLength(1);
62
+ expect(matching[0]?.source).toBe("project");
63
+ expect(matching[0]?.content).toBe("Project guidance.");
64
+ }
65
+ finally {
66
+ await fs.rm(root, { recursive: true, force: true });
67
+ }
68
+ });
69
+ });
70
+ //# sourceMappingURL=skills-routing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-routing.test.js","sourceRoot":"","sources":["../../src/core/skills-routing.test.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export interface Skill {
3
3
  description: string;
4
4
  content: string;
5
5
  source: string;
6
+ /** Directory used to resolve references linked from the skill content. */
7
+ root?: string;
6
8
  }
7
9
  /**
8
10
  * Discover skills from global and project-local skill directories.
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAenB;AA6CD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAwBjE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAY7D"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAiBnB;AAuDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAwBjE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAc7D"}
@@ -1,20 +1,39 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
5
+ const BUNDLED_SKILLS_DIRS = [
6
+ // Single-file desktop sidecar: resources live beside app-sidecar.mjs.
7
+ path.resolve(MODULE_DIR, "skills"),
8
+ // Source and npm CLI: assets live beside src/ and dist/.
9
+ path.resolve(MODULE_DIR, "../../assets/skills"),
10
+ ];
3
11
  /**
4
12
  * Discover skills from global and project-local skill directories.
5
13
  */
6
14
  export async function discoverSkills(options) {
7
- const skills = [];
8
- // Global skills: ~/.ezcoder/skills/*.md
9
- const globalSkills = await loadSkillsFromDir(options.globalSkillsDir, "global");
10
- skills.push(...globalSkills);
11
- // Project skills: {cwd}/.ezcoder/skills/*.md
15
+ const skillsByName = new Map();
16
+ const addSkills = (skills) => {
17
+ for (const skill of skills)
18
+ skillsByName.set(skill.name.toLowerCase(), skill);
19
+ };
20
+ // Bundled defaults ship with EZ Coder. Global and project definitions with
21
+ // the same name override them, preserving user control.
22
+ addSkills(await loadBundledSkills());
23
+ addSkills(await loadSkillsFromDir(options.globalSkillsDir, "global"));
12
24
  if (options.projectDir) {
13
25
  const projectSkillsDir = path.join(options.projectDir, ".ezcoder", "skills");
14
- const projectSkills = await loadSkillsFromDir(projectSkillsDir, "project");
15
- skills.push(...projectSkills);
26
+ addSkills(await loadSkillsFromDir(projectSkillsDir, "project"));
16
27
  }
17
- return skills;
28
+ return [...skillsByName.values()];
29
+ }
30
+ async function loadBundledSkills() {
31
+ for (const dir of BUNDLED_SKILLS_DIRS) {
32
+ const skills = await loadSkillsFromDir(dir, "bundled");
33
+ if (skills.length > 0)
34
+ return skills;
35
+ }
36
+ return [];
18
37
  }
19
38
  async function loadSkillsFromDir(dir, source) {
20
39
  const skills = [];
@@ -34,6 +53,7 @@ async function loadSkillsFromDir(dir, source) {
34
53
  const skill = parseSkillFile(content, source);
35
54
  if (!skill.name)
36
55
  skill.name = path.basename(entry.name, ".md");
56
+ skill.root = dir;
37
57
  skills.push(skill);
38
58
  }
39
59
  catch {
@@ -49,6 +69,7 @@ async function loadSkillsFromDir(dir, source) {
49
69
  const skill = parseSkillFile(content, source);
50
70
  if (!skill.name)
51
71
  skill.name = entry.name;
72
+ skill.root = entryPath;
52
73
  skills.push(skill);
53
74
  }
54
75
  catch {
@@ -98,7 +119,9 @@ export function formatSkillsForPrompt(skills) {
98
119
  .map((s) => `- **${s.name}**${s.description ? `: ${s.description}` : ""}`)
99
120
  .join("\n");
100
121
  return (`## Skills\n\n` +
101
- `The following skills are available. Use the **skill** tool to invoke a skill when needed:\n\n` +
122
+ `Before acting, compare the user's request with every skill description below. ` +
123
+ `When the request matches a skill's stated scope, invoke that skill with the **skill** tool before making decisions or edits. ` +
124
+ `Respect explicit exclusions in the description. Matching skill instructions specialize this prompt but do not override project or file/module rules.\n\n` +
102
125
  list);
103
126
  }
104
127
  //# sourceMappingURL=skills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAGpC;IACC,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,wCAAwC;IACxC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAE7B,6CAA6C;IAC7C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAc;IAC1D,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,wCAAwC;QACxC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,SAAS;QACX,CAAC;QAED,yEAAyE;QACzE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,MAAc;IACxD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,wBAAwB;IACxB,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEzC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,UAAU,KAAK,CAAC,CAAC;oBAAE,SAAS;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,GAAG,KAAK,MAAM;oBAAE,IAAI,GAAG,KAAK,CAAC;qBAC5B,IAAI,GAAG,KAAK,aAAa;oBAAE,WAAW,GAAG,KAAK,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,IAAI,GAAG,MAAM;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CACL,eAAe;QACf,+FAA+F;QAC/F,IAAI,CACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
@@ -50,10 +50,10 @@ function renderWorkSection() {
50
50
  return (`## How to Work\n\n` +
51
51
  `- Read before \`edit\`/\`write\`; re-read after formatters, \`lint --fix\`, codemods, codegen, checkout, or any disk mutator.\n` +
52
52
  `- Compute in bash; write with \`edit\`/\`write\` so read-tracking, partial apply, and diagnostics stay intact.\n` +
53
- `- Match neighbors (components/tokens/tone); if none, ask. Keep edits small; plan multi-file work first.\n` +
53
+ `- Match neighbors (components/tokens/tone). When none exist, infer from the task and project; ask only when a missing product or taste decision would materially change the result. Keep edits small; plan multi-file work first.\n` +
54
54
  `- Do routine follow-up yourself (build, migrate, re-run). Ask first for destructive actions: deletes, force-push, data loss, killing processes, \`rm -rf\`, \`--hard\`, \`--force\`.\n` +
55
55
  `- Preserve user work: investigate unexpected files, branches, or locks before touching them. \`.gitignore\` generated artifacts, secrets, logs, scratch, and \`.env\`.\n` +
56
- `- Rule precedence: project context files → file/module patterns → Language Style Packs → this prompt.\n` +
56
+ `- Rule precedence: project context files → file/module patterns → applicable skill instructions → Language Style Packs → this prompt.\n` +
57
57
  `- Choose targeted verification appropriate to the change; read/fix failures. Never claim unrun or failing checks passed.`);
58
58
  }
59
59
  function renderPlanModeSection() {
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
@@ -156,11 +156,14 @@ describe("buildSystemPrompt", () => {
156
156
  "re-read after formatters",
157
157
  "Compute in bash; write with `edit`/`write`",
158
158
  "Match neighbors",
159
+ "When none exist, infer from the task and project",
160
+ "ask only when a missing product or taste decision would materially change the result",
159
161
  "Keep edits small",
160
162
  "Do routine follow-up yourself",
161
163
  "Ask first for destructive actions",
162
164
  "Preserve user work",
163
165
  "Rule precedence: project context files",
166
+ "file/module patterns → applicable skill instructions",
164
167
  "Your training data has a cutoff",
165
168
  "treat it as a stale hint to verify, never as ground truth",
166
169
  "Do not rely on memory for APIs",
@@ -268,11 +271,10 @@ describe("buildSystemPrompt", () => {
268
271
  typescriptProjectContextToolsSkills: promptSize(typescriptPrompt),
269
272
  };
270
273
  console.info(`system prompt size measurements: ${JSON.stringify(measurements)}`);
271
- expect(measurements.normal.characters).toBeLessThan(5_100);
272
- // Ceiling sits above upstream's: this fork's branding strings ("~/.ezcoder/",
273
- // "EZ Coder") are longer than upstream's, which inflates the plan-mode block
274
- // that embeds them.
275
- expect(measurements.planMode.characters).toBeLessThan(6_400);
274
+ // Ceilings include the fork's longer branding strings plus the upstream
275
+ // skill-routing guidance that now applies before the agent acts.
276
+ expect(measurements.normal.characters).toBeLessThan(5_300);
277
+ expect(measurements.planMode.characters).toBeLessThan(6_500);
276
278
  expect(measurements.typescriptProjectContextToolsSkills.characters).toBeLessThan(9_800);
277
279
  expect(measurements.planMode.characters).toBeGreaterThan(measurements.normal.characters);
278
280
  expect(measurements.typescriptProjectContextToolsSkills.characters).toBeGreaterThan(measurements.normal.characters);