devrites 5.10.2 → 5.11.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 (250) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +24 -10
  3. package/bin/devrites.mjs +2 -0
  4. package/docs/command-map.md +5 -4
  5. package/docs/skills.md +10 -4
  6. package/engine/internal/devritespaths/paths.go +2 -0
  7. package/engine/internal/hostpack/hostpack.go +39 -5
  8. package/engine/internal/hostpack/hostpack_test.go +27 -13
  9. package/engine/internal/install/apply.go +17 -4
  10. package/engine/internal/install/install.go +9 -2
  11. package/engine/internal/install/install_test.go +15 -2
  12. package/engine/internal/install/preflight.go +8 -2
  13. package/engine/internal/install/update.go +1 -1
  14. package/install.sh +4 -1
  15. package/pack/generated/README.md +4 -2
  16. package/pack/generated/devin/AGENTS.md +23 -0
  17. package/pack/generated/devin/agents/devrites-code-reviewer.md +145 -0
  18. package/pack/generated/devin/agents/devrites-devex-reviewer.md +126 -0
  19. package/pack/generated/devin/agents/devrites-doubt-reviewer.md +91 -0
  20. package/pack/generated/devin/agents/devrites-evidence-scout.md +77 -0
  21. package/pack/generated/devin/agents/devrites-frontend-reviewer.md +119 -0
  22. package/pack/generated/devin/agents/devrites-performance-reviewer.md +117 -0
  23. package/pack/generated/devin/agents/devrites-plan-drafter.md +102 -0
  24. package/pack/generated/devin/agents/devrites-plan-reviewer.md +144 -0
  25. package/pack/generated/devin/agents/devrites-proof-runner.md +76 -0
  26. package/pack/generated/devin/agents/devrites-retrospector.md +64 -0
  27. package/pack/generated/devin/agents/devrites-security-auditor.md +112 -0
  28. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +97 -0
  29. package/pack/generated/devin/agents/devrites-slice-wright.md +219 -0
  30. package/pack/generated/devin/agents/devrites-spec-reviewer.md +99 -0
  31. package/pack/generated/devin/agents/devrites-strategy-reviewer.md +102 -0
  32. package/pack/generated/devin/agents/devrites-test-analyst.md +97 -0
  33. package/pack/generated/devin/agents/devrites-upgrade-planner.md +91 -0
  34. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +64 -0
  35. package/pack/generated/devin/skills/devrites-audit/SKILL.md +51 -0
  36. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +77 -0
  37. package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  38. package/pack/generated/devin/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  39. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +97 -0
  40. package/pack/generated/devin/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  41. package/pack/generated/devin/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -0
  42. package/pack/generated/devin/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
  43. package/pack/generated/devin/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  44. package/pack/generated/devin/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
  45. package/pack/generated/devin/skills/devrites-debug-recovery/reference/trace.md +25 -0
  46. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +80 -0
  47. package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +87 -0
  48. package/pack/generated/devin/skills/devrites-frontend-craft/reference/craft.md +63 -0
  49. package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +116 -0
  50. package/pack/generated/devin/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
  51. package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +294 -0
  52. package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
  53. package/pack/generated/devin/skills/devrites-frontend-craft/reference/shape.md +56 -0
  54. package/pack/generated/devin/skills/devrites-interview/SKILL.md +103 -0
  55. package/pack/generated/devin/skills/devrites-lib/SKILL.md +57 -0
  56. package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +42 -0
  57. package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +64 -0
  58. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +27 -0
  59. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +73 -0
  60. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +88 -0
  61. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +60 -0
  62. package/pack/generated/devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
  63. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +415 -0
  64. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +99 -0
  65. package/pack/generated/devin/skills/devrites-lib/reference/standards/anti-patterns.md +48 -0
  66. package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +24 -0
  67. package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +50 -0
  68. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +43 -0
  69. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +108 -0
  70. package/pack/generated/devin/skills/devrites-lib/reference/standards/coding-style.md +48 -0
  71. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +109 -0
  72. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +167 -0
  73. package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +118 -0
  74. package/pack/generated/devin/skills/devrites-lib/reference/standards/debug-recovery.md +28 -0
  75. package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +19 -0
  76. package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +31 -0
  77. package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
  78. package/pack/generated/devin/skills/devrites-lib/reference/standards/development-workflow.md +29 -0
  79. package/pack/generated/devin/skills/devrites-lib/reference/standards/documentation.md +43 -0
  80. package/pack/generated/devin/skills/devrites-lib/reference/standards/edge-case-trace.md +92 -0
  81. package/pack/generated/devin/skills/devrites-lib/reference/standards/elicitation.md +85 -0
  82. package/pack/generated/devin/skills/devrites-lib/reference/standards/error-handling.md +47 -0
  83. package/pack/generated/devin/skills/devrites-lib/reference/standards/git-workflow.md +49 -0
  84. package/pack/generated/devin/skills/devrites-lib/reference/standards/hooks.md +25 -0
  85. package/pack/generated/devin/skills/devrites-lib/reference/standards/integration-reliability.md +102 -0
  86. package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
  87. package/pack/generated/devin/skills/devrites-lib/reference/standards/observability.md +88 -0
  88. package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +97 -0
  89. package/pack/generated/devin/skills/devrites-lib/reference/standards/patterns.md +68 -0
  90. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +51 -0
  91. package/pack/generated/devin/skills/devrites-lib/reference/standards/principles.md +42 -0
  92. package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +123 -0
  93. package/pack/generated/devin/skills/devrites-lib/reference/standards/release/ship-checklist.md +8 -0
  94. package/pack/generated/devin/skills/devrites-lib/reference/standards/repository-topology.md +80 -0
  95. package/pack/generated/devin/skills/devrites-lib/reference/standards/review-checklist.md +12 -0
  96. package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +25 -0
  97. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +202 -0
  98. package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +209 -0
  99. package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +197 -0
  100. package/pack/generated/devin/skills/devrites-lib/reference/standards/test-proof-checklist.md +13 -0
  101. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +212 -0
  102. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +92 -0
  103. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +427 -0
  104. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
  105. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
  106. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
  107. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
  108. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
  109. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
  110. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
  111. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
  112. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
  113. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +267 -0
  114. package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +74 -0
  115. package/pack/generated/devin/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
  116. package/pack/generated/devin/skills/devrites-prose-craft/reference/examples.md +131 -0
  117. package/pack/generated/devin/skills/devrites-prose-craft/reference/structures.md +196 -0
  118. package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +53 -0
  119. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +135 -0
  120. package/pack/generated/devin/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  121. package/pack/generated/devin/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
  122. package/pack/generated/devin/skills/rite/SKILL.md +148 -0
  123. package/pack/generated/devin/skills/rite/reference/menu.md +48 -0
  124. package/pack/generated/devin/skills/rite-adopt/SKILL.md +51 -0
  125. package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +19 -0
  126. package/pack/generated/devin/skills/rite-adopt/reference/anti-patterns.md +19 -0
  127. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +142 -0
  128. package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +43 -0
  129. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +151 -0
  130. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +97 -0
  131. package/pack/generated/devin/skills/rite-build/SKILL.md +102 -0
  132. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +148 -0
  133. package/pack/generated/devin/skills/rite-build/reference/anti-patterns.md +27 -0
  134. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +120 -0
  135. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +56 -0
  136. package/pack/generated/devin/skills/rite-build/reference/frontend-trigger.md +39 -0
  137. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +51 -0
  138. package/pack/generated/devin/skills/rite-build/reference/output.md +33 -0
  139. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +214 -0
  140. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +89 -0
  141. package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +84 -0
  142. package/pack/generated/devin/skills/rite-build/reference/tdd.md +27 -0
  143. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +96 -0
  144. package/pack/generated/devin/skills/rite-clarify/SKILL.md +98 -0
  145. package/pack/generated/devin/skills/rite-clarify/reference/anti-patterns.md +24 -0
  146. package/pack/generated/devin/skills/rite-clarify/reference/decision-coverage.md +55 -0
  147. package/pack/generated/devin/skills/rite-converge/SKILL.md +144 -0
  148. package/pack/generated/devin/skills/rite-converge/reference/anti-patterns.md +35 -0
  149. package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +65 -0
  150. package/pack/generated/devin/skills/rite-customize/SKILL.md +60 -0
  151. package/pack/generated/devin/skills/rite-define/SKILL.md +168 -0
  152. package/pack/generated/devin/skills/rite-define/reference/anti-patterns.md +26 -0
  153. package/pack/generated/devin/skills/rite-define/reference/gates.md +159 -0
  154. package/pack/generated/devin/skills/rite-define/reference/plan-template.md +149 -0
  155. package/pack/generated/devin/skills/rite-doctor/SKILL.md +68 -0
  156. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +55 -0
  157. package/pack/generated/devin/skills/rite-explain/SKILL.md +152 -0
  158. package/pack/generated/devin/skills/rite-explain/reference/intake.md +89 -0
  159. package/pack/generated/devin/skills/rite-frame/SKILL.md +114 -0
  160. package/pack/generated/devin/skills/rite-frame/reference/failure-modes.md +66 -0
  161. package/pack/generated/devin/skills/rite-handoff/SKILL.md +97 -0
  162. package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +44 -0
  163. package/pack/generated/devin/skills/rite-learn/SKILL.md +72 -0
  164. package/pack/generated/devin/skills/rite-plan/SKILL.md +185 -0
  165. package/pack/generated/devin/skills/rite-plan/reference/anti-patterns.md +34 -0
  166. package/pack/generated/devin/skills/rite-plan/reference/dependency-graph.md +48 -0
  167. package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +105 -0
  168. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +168 -0
  169. package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +42 -0
  170. package/pack/generated/devin/skills/rite-polish/SKILL.md +105 -0
  171. package/pack/generated/devin/skills/rite-polish/reference/adr-promotion.md +11 -0
  172. package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +187 -0
  173. package/pack/generated/devin/skills/rite-polish/reference/anti-patterns.md +30 -0
  174. package/pack/generated/devin/skills/rite-polish/reference/backend-polish.md +80 -0
  175. package/pack/generated/devin/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
  176. package/pack/generated/devin/skills/rite-polish/reference/code.md +82 -0
  177. package/pack/generated/devin/skills/rite-polish/reference/design-memory.md +117 -0
  178. package/pack/generated/devin/skills/rite-polish/reference/design-system-discovery.md +8 -0
  179. package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +109 -0
  180. package/pack/generated/devin/skills/rite-polish/reference/ledger.md +65 -0
  181. package/pack/generated/devin/skills/rite-polish/reference/ui.md +137 -0
  182. package/pack/generated/devin/skills/rite-pov/SKILL.md +57 -0
  183. package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +54 -0
  184. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +66 -0
  185. package/pack/generated/devin/skills/rite-prototype/SKILL.md +104 -0
  186. package/pack/generated/devin/skills/rite-prove/SKILL.md +122 -0
  187. package/pack/generated/devin/skills/rite-prove/reference/acceptance-proof.md +88 -0
  188. package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +25 -0
  189. package/pack/generated/devin/skills/rite-prove/reference/browser-proof.md +51 -0
  190. package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +43 -0
  191. package/pack/generated/devin/skills/rite-prove/reference/proof-ladder.md +28 -0
  192. package/pack/generated/devin/skills/rite-prove/reference/test-command-discovery.md +30 -0
  193. package/pack/generated/devin/skills/rite-quick/SKILL.md +81 -0
  194. package/pack/generated/devin/skills/rite-resolve/SKILL.md +98 -0
  195. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +118 -0
  196. package/pack/generated/devin/skills/rite-review/SKILL.md +171 -0
  197. package/pack/generated/devin/skills/rite-review/reference/anti-patterns.md +32 -0
  198. package/pack/generated/devin/skills/rite-review/reference/cognitive-load.md +90 -0
  199. package/pack/generated/devin/skills/rite-review/reference/feature-scoped-review.md +26 -0
  200. package/pack/generated/devin/skills/rite-review/reference/five-axis-review.md +66 -0
  201. package/pack/generated/devin/skills/rite-review/reference/nielsen-heuristics.md +126 -0
  202. package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +80 -0
  203. package/pack/generated/devin/skills/rite-review/reference/performance-review.md +14 -0
  204. package/pack/generated/devin/skills/rite-review/reference/security-review.md +42 -0
  205. package/pack/generated/devin/skills/rite-seal/SKILL.md +74 -0
  206. package/pack/generated/devin/skills/rite-seal/reference/anti-patterns.md +29 -0
  207. package/pack/generated/devin/skills/rite-seal/reference/final-evidence.md +41 -0
  208. package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +29 -0
  209. package/pack/generated/devin/skills/rite-seal/reference/output.md +5 -0
  210. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +47 -0
  211. package/pack/generated/devin/skills/rite-seal/reference/risk-and-rollback.md +56 -0
  212. package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +27 -0
  213. package/pack/generated/devin/skills/rite-ship/SKILL.md +87 -0
  214. package/pack/generated/devin/skills/rite-ship/reference/anti-patterns.md +28 -0
  215. package/pack/generated/devin/skills/rite-ship/reference/close-out.md +68 -0
  216. package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +120 -0
  217. package/pack/generated/devin/skills/rite-ship/reference/rollout.md +62 -0
  218. package/pack/generated/devin/skills/rite-ship/reference/ship-template.md +39 -0
  219. package/pack/generated/devin/skills/rite-spec/SKILL.md +149 -0
  220. package/pack/generated/devin/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  221. package/pack/generated/devin/skills/rite-spec/reference/ai-spec-template.md +40 -0
  222. package/pack/generated/devin/skills/rite-spec/reference/anti-patterns.md +27 -0
  223. package/pack/generated/devin/skills/rite-spec/reference/interview-patterns.md +56 -0
  224. package/pack/generated/devin/skills/rite-spec/reference/investigation.md +83 -0
  225. package/pack/generated/devin/skills/rite-spec/reference/question-protocol.md +36 -0
  226. package/pack/generated/devin/skills/rite-spec/reference/references-intake.md +62 -0
  227. package/pack/generated/devin/skills/rite-spec/reference/spec-checklists.md +89 -0
  228. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +154 -0
  229. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +227 -0
  230. package/pack/generated/devin/skills/rite-status/SKILL.md +57 -0
  231. package/pack/generated/devin/skills/rite-temper/SKILL.md +129 -0
  232. package/pack/generated/devin/skills/rite-temper/reference/anti-patterns.md +30 -0
  233. package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +66 -0
  234. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +53 -0
  235. package/pack/generated/devin/skills/rite-temper/reference/significance.md +46 -0
  236. package/pack/generated/devin/skills/rite-temper/reference/strategy-template.md +90 -0
  237. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +121 -0
  238. package/pack/generated/devin/skills/rite-vet/SKILL.md +192 -0
  239. package/pack/generated/devin/skills/rite-vet/reference/anti-patterns.md +43 -0
  240. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +202 -0
  241. package/pack/generated/devin/skills/rite-vet/reference/cross-model.md +19 -0
  242. package/pack/generated/devin/skills/rite-vet/reference/depth.md +59 -0
  243. package/pack/generated/devin/skills/rite-vet/reference/eng-lenses.md +48 -0
  244. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +201 -0
  245. package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +84 -0
  246. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +69 -0
  247. package/package.json +4 -2
  248. package/scripts/build-host-artifacts.sh +48 -5
  249. package/scripts/devin-generate.sh +222 -0
  250. package/update.sh +2 -1
@@ -0,0 +1,132 @@
1
+ # Phrases & words to cut
2
+
3
+ Load this when scrubbing prose. The lists are calibrated for a coding agent: the **AI
4
+ vocabulary** section marks which words are *always* slop versus which are legitimate in
5
+ technical writing, so the skill doesn't flatten a real spec into vagueness.
6
+
7
+ ## Throat-clearing openers (cut — state the point)
8
+
9
+ - "Here's the thing:" / "Here's what / why / how [X]"
10
+ - "It's worth noting that" / "It's important to note that"
11
+ - "Let me be clear" / "I'll be honest" / "To be honest"
12
+ - "The uncomfortable truth is" / "The reality is" / "It turns out"
13
+ - "Make no mistake" / "At its core" / "At the end of the day"
14
+ - "When it comes to [X]" / "In today's [fast-paced / digital] world"
15
+
16
+ Any "here's what/this/that" or "it's worth noting" is runway before the point. Delete it and
17
+ start at the point.
18
+
19
+ ## Emphasis crutches (delete — they add no information)
20
+
21
+ - "Let that sink in." / "Full stop." / "Period."
22
+ - "This matters because" / "Here's why that matters"
23
+ - "This is the deepest problem" / "the stakes are high" / "the consequences are real"
24
+ - "Notably," / "Interestingly," / "Importantly," / "Surprisingly," stacked to tell the
25
+ reader how to feel. One "notably" in a long note is fine; three in a short paragraph
26
+ is emphasis stacking. Cut the cue; leave the fact.
27
+
28
+ ## Hedging stacks (make the claim or cut it)
29
+
30
+ - "it's important to note that, generally, in most cases…"
31
+ - "perhaps", "could potentially", "it could be argued that", "one might say"
32
+
33
+ Stacked hedges read as a model covering itself. One honest qualifier is fine; a stack is slop.
34
+
35
+ ## Sycophancy & chatbot artifacts (remove entirely)
36
+
37
+ These leak the assistant register into artifacts and replies:
38
+
39
+ - "Great question!" / "You're absolutely right!" / "Certainly!" / "Of course!"
40
+ - "I hope this helps!" / "Let me know if you need anything else" / "Feel free to reach out"
41
+ - "Let's explore" / "Let's break this down" / "Let's dive in" / "First, let's consider"
42
+
43
+ A `decisions.md` entry or a `seal.md` verdict is a document, not a chat turn. No
44
+ pleasantries, no tour-guide openers. Start at the point.
45
+
46
+ ## Assistant leaks (P0 — delete on sight)
47
+
48
+ These are paste fingerprints, not style. Strip the leak; keep any real fact it was
49
+ wrapping. Presence is a publishing bug, not an authorship tribunal.
50
+
51
+ - **Cutoff disclaimers.** "As of my last update", "based on my training data", "I don't
52
+ have access to…". Find the fact or drop the sentence.
53
+ - **Unfilled placeholders.** `[Your Name]`, `[INSERT SOURCE]`, `2025-XX-XX`, HTML
54
+ comments that say `TODO` / `insert` / `fill in`. Fill or delete. Never ship the slot.
55
+ - **Citation markup.** `citeturn`, `oaicite`, `oai_citation`, `grok_card`,
56
+ `[attached_file:N]`. Delete the token. If the cite mattered, replace it with a real
57
+ link.
58
+ - **AI-tool tracking URLs.** Strip `utm_source=chatgpt.com` / `copilot.com` /
59
+ `openai` / `claude.ai` / `perplexity.ai` and `referrer=grok.com`. Keep the rest of
60
+ the query string (`?page=2` stays).
61
+
62
+ ## Business jargon → plain language
63
+
64
+ | Avoid | Use instead |
65
+ |---|---|
66
+ | Navigate (challenges) | handle, address |
67
+ | Unpack (the analysis) | explain, examine |
68
+ | Lean into | accept, commit to |
69
+ | Landscape (figurative) | situation, field, area |
70
+ | Game-changer | significant, important |
71
+ | Deep dive | analysis, examination |
72
+ | Circle back / revisit later | return to |
73
+ | Moving forward | next, from now on |
74
+ | On the same page | aligned, agreed |
75
+
76
+ ## AI vocabulary — calibrated (this is the adaptation that matters)
77
+
78
+ Word lists are blunt instruments. A coding agent must not "fix" a spec that legitimately says
79
+ a system is *robust* under load or exposes a *comprehensive* API. Tiers, with a 1A/1B split:
80
+
81
+ **Tier 1A — always slop, replace on sight (figurative filler, never load-bearing in a spec).**
82
+ A cluster is a writing-quality signal, not proof of who wrote the passage.
83
+
84
+ delve / delve into, tapestry, beacon, embark, testament to, realm, landscape (figurative),
85
+ pave the way, shed light on, game-changer, unlock the potential, ever-evolving, vibrant,
86
+ multifaceted, holistic, paradigm (as praise), groundbreaking, transformative, cutting-edge.
87
+
88
+ **Tier 1B — always replace for clarity; not authorship evidence.**
89
+ Wordiness and inflated formality. Same edit as 1A, weaker claim: these also appear in
90
+ careful human writing. In detect-only, report 1B separately from 1A. A 1B hit must not
91
+ push a passage toward an "AI wrote this" conclusion.
92
+
93
+ | Replace | With |
94
+ |---|---|
95
+ | utilize | use |
96
+ | in order to | to |
97
+ | due to the fact that | because |
98
+ | commence | start, begin |
99
+ | ascertain | find out, determine |
100
+ | endeavor | try, attempt |
101
+
102
+ **Tier 2 — slop in prose, legitimate in technical context (keep the meaning, judge by use):**
103
+ robust, comprehensive, seamless, leverage, harness, facilitate, underpin, streamline,
104
+ foster, ecosystem, scalable.
105
+ - In a sentence selling the work ("a robust, scalable, seamless solution") → cut; say what it
106
+ does and what proves it.
107
+ - In a precise technical claim ("the retry path is robust to a dropped connection — see
108
+ `evidence.md`") → keep. The word carries a real, tested meaning.
109
+
110
+ **Tier 3 — flag by density, not per-word:** ordinary words (`important`, `key`, `various`,
111
+ `significant`) become slop only when they cluster. If a paragraph leans on three of them, it's
112
+ saying nothing — name the specific thing instead.
113
+
114
+ **Co-occurrence tell:** these words travel in packs. Where you find one Tier-1 word, look for
115
+ its neighbours (delve / boasts / bolstered / crucial / pivotal cluster together). One sighting
116
+ means scan the whole passage.
117
+
118
+ **Match inflected forms.** Each entry covers the word *and* its variants — adverb (`-ly`),
119
+ gerund (`-ing`), plural, conjugations: `delve` also catches `delving` / `delved`; `leverage`
120
+ catches `leveraging` / `leveraged`. The exception is a variant with a distinct, legitimate
121
+ meaning (`real` the intensifier vs `real` meaning factual) — judge it by use, same as the
122
+ tier calibration above.
123
+
124
+ ## Adverbs (cut empty intensifiers; keep load-bearing ones)
125
+
126
+ Cut the emphasis adverbs that add nothing: really, very, just, literally, genuinely, honestly,
127
+ simply, actually, truly, fundamentally, inherently, inevitably, basically.
128
+
129
+ Keep adverbs that change meaning or precision: "validate **server-side**", "fail **closed**",
130
+ "runs **concurrently**", "**explicitly** typed". The rule is "cut the empty intensifier", not
131
+ "delete every -ly word" — over-applying the no-adverb rule is its own kind of damage in
132
+ technical writing.
@@ -0,0 +1,131 @@
1
+ # Before / after — DevRites artifacts & replies
2
+
3
+ Real shapes DevRites emits. Each pair keeps the technical content and strips the voice. Note
4
+ how the calibration preserves precise lists and identifiers while cutting the prose slop.
5
+
6
+ ## 1. `spec.md` overview
7
+
8
+ **Before (slop):**
9
+ > In today's fast-paced data landscape, this feature delivers a robust, scalable, and seamless
10
+ > CSV export capability. It's not just about exporting data — it's about empowering users to
11
+ > unlock the full potential of their information. This is a pivotal step forward.
12
+
13
+ **After:**
14
+ > Export the report table to CSV. Users currently copy rows by hand; this adds a one-click
15
+ > download. Scope: the reports table only, server-side streaming so memory stays flat on large
16
+ > exports.
17
+
18
+ Cut the jargon, the negative-parallelism hook, and the importance inflation. Kept what the
19
+ feature is, who it's for, and the scope boundary.
20
+
21
+ ## 2. Acceptance criteria (technical register — precision stays)
22
+
23
+ **Keep this as-is — do NOT "humanize" it:**
24
+ > - AC-001: A `GET /reports/:id/export?format=csv` returns `200` with `Content-Type: text/csv`.
25
+ > - AC-002: Rows stream; peak memory stays under 50 MB for a 1M-row export.
26
+ > - AC-003: An unknown `format` returns `400` with `{ "error": "unsupported format" }`.
27
+
28
+ Three items, exact identifiers, exact status codes. This is the technical register working
29
+ correctly. The skill leaves it alone.
30
+
31
+ ## 3. `decisions.md` entry
32
+
33
+ **Before (slop):**
34
+ > We made the strategic decision to leverage a streaming approach. This robust solution
35
+ > seamlessly handles large datasets and represents a best-in-class architecture that will
36
+ > empower the system to scale effortlessly.
37
+
38
+ **After:**
39
+ > Stream rows to the response instead of buffering the full file. Buffering OOM-ed on a
40
+ > 1M-row export in testing (see `evidence.md`). Trade-off: streaming rules out a total-row
41
+ > count in the header. Revisit if the UI needs an upfront progress bar.
42
+
43
+ Named the decision, the reason (with evidence), and the trade-off. That's what an ADR is for.
44
+
45
+ ## 4. `review.md` / `seal.md` finding
46
+
47
+ **Before (slop):**
48
+ > It's worth noting that the error handling here could potentially be more robust. This is a
49
+ > critical area that fundamentally matters for production readiness.
50
+
51
+ **After:**
52
+ > Critical — `export.ts:42` catches every error and returns `500 "something went wrong"`. A
53
+ > bad `format` param should be a `400` with the specific message (AC-003). Catch the parse error
54
+ > narrowly; let the rest propagate.
55
+
56
+ Severity label, `file:line`, the specific problem, the fix. No hedging, no "fundamentally".
57
+
58
+ ## 5. Chat reply
59
+
60
+ **Before (slop):**
61
+ > Great question! I've gone ahead and implemented the export feature. It's not just functional
62
+ > — it's production-ready. Let me know if you need anything else!
63
+
64
+ **After:**
65
+ > Built slice 3 (CSV streaming). Tests pass (`npm test -- export` → 14 passing), peak memory
66
+ > 38 MB on the 1M-row fixture. Next: slice 4 (pagination). Want me to continue?
67
+
68
+ Dropped the pleasantries and the "not just X" inflation. Led with what's done and the evidence.
69
+
70
+ ## 6. Commit body
71
+
72
+ **Before (slop):**
73
+ > This commit introduces a comprehensive and robust solution that seamlessly enables users to
74
+ > leverage powerful new export capabilities.
75
+
76
+ **After:**
77
+ > Buffering the whole CSV OOM-ed on >100k rows. Stream rows to the response so memory stays
78
+ > flat. Rules out an upfront total-count header; tracked in #123.
79
+
80
+ Followed [`git-workflow.md`](../../devrites-lib/reference/standards/git-workflow.md): the *why*, wrapped, in plain language.
81
+
82
+ ## 7. Fidelity when evidence is incomplete
83
+
84
+ **Before (slop, but informative):**
85
+ > It is important to note that the importer retries twice after a `429`. The available evidence
86
+ > does not clearly indicate whether a third attempt is dropped or queued. In either case, the
87
+ > alert text is `Import delayed`.
88
+
89
+ **After:**
90
+ > The importer retries twice after a `429`. We do not have a production trace showing whether a
91
+ > third attempt is dropped or queued. The alert text remains `Import delayed`.
92
+
93
+ Cut the opener and vague phrasing. Kept the retry count, status code, evidence gap, two possible
94
+ outcomes, and exact alert text. A smoother sentence that picked one outcome would be fabrication.
95
+
96
+ ## 8. `review.md` finding (narrated candor)
97
+
98
+ **Before (slop):**
99
+ > I want to be upfront: two caveats I would rather flag than let you discover later. First,
100
+ > Windows is untested. Second, the numbers in the commit message don't reproduce on this
101
+ > hardware. Let me think step by step about what that means for seal.
102
+
103
+ **After:**
104
+ > Two caveats: Windows is untested, and the numbers in the commit message don't reproduce on
105
+ > this hardware. Seal stays NO-GO until those are measured or scoped out.
106
+
107
+ Cut the candor frame and the reasoning-chain opener. Kept both caveats and the gate implication.
108
+
109
+ ## 9. Chat reply (prompt restatement)
110
+
111
+ **Before (slop):**
112
+ > That's a great question. You're asking about whether we should stream the export. Thanks for
113
+ > the rollback plan you already wrote — that legwork is what made this possible. Breaking this
114
+ > down: streaming avoids the OOM.
115
+
116
+ **After:**
117
+ > Stream the export. Buffering OOM-ed on the 1M-row fixture (see `evidence.md`). Your rollback
118
+ > plan still applies.
119
+
120
+ Dropped the prompt echo, the recap-flattery, and "Breaking this down". Led with the decision
121
+ and the evidence.
122
+
123
+ ## The pattern across all nine
124
+
125
+ 1. Lead with the concrete thing (what it is, what's done, what's wrong).
126
+ 2. Replace every "robust/seamless/leverage" flourish with the specific behavior + its proof.
127
+ 3. Drop negative-parallelism hooks ("not just X, it's Y"), importance labels ("pivotal"),
128
+ candor frames ("I want to be upfront"), and reasoning-chain scaffolding ("let me think
129
+ step by step").
130
+ 4. Keep the technical register intact: exact identifiers, status codes, numbered criteria,
131
+ real enumerations. Precision is not slop.
@@ -0,0 +1,196 @@
1
+ # Structures to avoid
2
+
3
+ The sentence- and paragraph-level shapes that mark machine-written prose. Each row is a
4
+ pattern and its fix. Calibrated: the slop is the *decorative* version; the genuine structural
5
+ version (a real enumeration, a real contrast that carries information) stays.
6
+
7
+ ## Negative parallelism — the "not X, it's Y" family
8
+
9
+ The single most recognizable tell. It mimics insight by manufacturing a contrast.
10
+
11
+ | Pattern | Fix |
12
+ |---|---|
13
+ | "It's not X, it's Y." / "It isn't X. It's Y." | State Y. "Y is the cause." |
14
+ | "Not just X, but Y." / "Not only X but also Y." | State both plainly, or just Y if X is filler. |
15
+ | "The question isn't X. It's Y." | Ask the real question once, or state the answer. |
16
+ | "This isn't about X. It's about Y." | "This is about Y." |
17
+ | "X isn't the problem. Y is." | "Y is the problem." |
18
+ | "No X. No Y. Just Z." | "Z." or a normal sentence naming Z. |
19
+ | Negation chain: "No fluff, no filler, no jargon." / "It didn't ask. It didn't wait." | Say what the thing is. One negation earns its place when the reader would assume the opposite; a drumroll of them does not. Carve-out: factual inventories ("takes no arguments, no headers, and no body") stay. |
20
+
21
+ Drop the negation; lead with the thing you actually mean.
22
+
23
+ ## Rule of three / decorative tricolon
24
+
25
+ AI defaults to three-item adjective or benefit triplets. The fix depends on whether the three
26
+ items are *real*.
27
+
28
+ - **Decorative triad** — "innovative, transformative, and groundbreaking", "fast, reliable, and
29
+ scalable" as a flourish → cut to the one that's true and provable, or delete.
30
+ - **Real enumeration** — three acceptance criteria, three slices, three status codes the
31
+ endpoint returns → **keep all three.** This is precision, not slop. The technical register
32
+ needs the complete list.
33
+
34
+ Test: if removing one item loses information a reader needs, it's a real list — keep it. If the
35
+ three are interchangeable adjectives, it's a triad — cut it.
36
+
37
+ ## Importance inflation
38
+
39
+ Announcing significance instead of showing it. Let the reader judge weight.
40
+
41
+ | Pattern | Fix |
42
+ |---|---|
43
+ | "a pivotal moment", "a broader movement" | Describe what happened; drop the significance label. |
44
+ | "The implications are significant." | Name the specific implication. |
45
+ | "This is a critical step." | Show why it's required (the dependency, the gate, the risk). |
46
+
47
+ ## Vague attribution — cite the source or drop it
48
+
49
+ The prose twin of DevRites's evidence discipline (`devrites-source-driven`, `evidence.md`). An
50
+ unnamed authority is not a source; it inflates one person's claim into consensus.
51
+
52
+ | Pattern | Fix |
53
+ |---|---|
54
+ | "Experts believe…", "Studies show…", "Research suggests…" | Name the study/doc/benchmark, or cut the appeal and state the claim on its own merits. |
55
+ | "Best practice says…", "The community recommends…", "It's widely agreed…" | Link the source (an RFC, the framework docs, a measured result), or make the call yourself and own it in `decisions.md`. |
56
+
57
+ If you can't name who holds the view, you don't have a source — you have a guess. State it as one.
58
+
59
+ ## Abstract category nouns — name the specific items
60
+
61
+ "Various factors", "several considerations", "a number of issues" say nothing. Replace the
62
+ category word with the actual items.
63
+
64
+ | Pattern | Fix |
65
+ |---|---|
66
+ | "improvements across various metrics" | "cuts p95 latency 120ms→80ms and halves the query count" |
67
+ | "there are several considerations" | List the considerations, or name the one that matters. |
68
+ | "performance issues", "some edge cases" | Name the N+1 query; name the empty-input and the 10k-row cases. |
69
+
70
+ Offender words to catch: factors, aspects, considerations, issues, elements, things, areas,
71
+ metrics (unnamed). In a spec or `decisions.md`, the specific item is the whole point.
72
+
73
+ ## False agency — name who acts
74
+
75
+ Giving inanimate things human verbs. Common in machine prose because it avoids naming the actor.
76
+
77
+ | Pattern | Fix |
78
+ |---|---|
79
+ | "the data tells us" | "the grader reads X and returns Y" |
80
+ | "the decision emerges" | "we chose X because…" |
81
+ | "the complaint becomes a fix" | "the team fixed it in slice 3" |
82
+ | "the test ensures correctness" | "the test asserts `total === 42`" |
83
+
84
+ Front the actor: the script, the gate, the function, the engineer, or "you".
85
+
86
+ ## Dramatic fragmentation & rhetorical setups
87
+
88
+ | Pattern | Fix |
89
+ |---|---|
90
+ | "[Noun]. That's it. That's the [thing]." | One complete sentence. |
91
+ | "X. And Y. And Z." (staccato for drama) | Join into normal sentences; vary length. |
92
+ | "The result? Devastating." (self-posed Q&A) | Fold into a statement. |
93
+ | "What if [reframe]?" as a hook | Make the point directly. |
94
+ | "Think about it:" / "Here's what I mean:" | Delete; the next sentence already does the work. |
95
+ | Performed insight: "that's not nothing", "the punchline is", "sit with that", "that's the whole point", "Turns out…" | State the claim the phrase was gesturing at. One hit can be voice; several in one piece is a tell. |
96
+
97
+ ## Inflated constructions
98
+
99
+ Three small tells that pad a plain sentence into something that sounds weightier than it is.
100
+
101
+ | Pattern | Fix |
102
+ |---|---|
103
+ | **Copula-dodge** — "X serves as / functions as / stands as / boasts / features…" | Use the plain verb. "The gateway **is** the entry point", "the module **has** three handlers". |
104
+ | **Participle tail** — "…, highlighting its importance", "…, reflecting broader trends", "…, underscoring its role as a dynamic hub" | Cut the trailing `-ing` clause; it adds fake depth, not information. |
105
+ | **Aphorism formula** — "X is the Y of Z" ("caching is the heartbeat of the system"), "X is not a tool but a Y" | State the actual property. "The cache holds the hot rows so the DB isn't hit on every request." |
106
+ | **Invented concept label** — coining a pseudo-term as if it's established: "the N+1 tax", "the supervision paradox", "the abstraction trap" | Name the concrete thing and skip the coined label, or define it once if it genuinely recurs. |
107
+
108
+ ## Passive voice (prose register)
109
+
110
+ Every prose sentence wants a subject doing something. Passive hides the actor and drains energy.
111
+
112
+ | Pattern | Fix |
113
+ |---|---|
114
+ | "It was decided that…" | "We decided…" |
115
+ | "Mistakes were made." | Name who, and what. |
116
+ | "The endpoint is called by the client." | "The client calls the endpoint." |
117
+
118
+ Calibration: passive is fine when the actor is genuinely unknown or irrelevant ("the row is
119
+ deleted on cascade"). Don't contort a sentence to name an actor that doesn't matter.
120
+
121
+ ## Rhythm
122
+
123
+ - Don't run three same-length sentences in a row; don't stack three short fragments for effect.
124
+ - Don't end every paragraph on a punchy one-liner. Vary where the weight lands.
125
+ - **Em-dashes:** at most one per paragraph, used where a comma or period won't do. Multiple per
126
+ paragraph is the tell. (Catch both the em-dash `—` and the `--` substitute.)
127
+ - Don't open consecutive sentences with the same Wh- word ("What makes this… What this means…")
128
+ as a crutch; lead with the subject.
129
+
130
+ ## Formatting tells
131
+
132
+ - **No "Bold term: explanation" bullet lists** as the default structure for prose — the most
133
+ recognizable AI formatting pattern. Use real prose, or a plain bullet, unless the document's
134
+ existing style genuinely uses definition lists (a glossary, an API reference).
135
+ - No emoji in headings or section titles (artifacts and code both).
136
+ - Don't over-bold. Bold the one load-bearing term, not every noun.
137
+
138
+ ## Reasoning-chain scaffolding
139
+
140
+ Internal monologue leaking into published prose. The reader needs the conclusion and the
141
+ evidence, not the tour of how the model thought.
142
+
143
+ | Pattern | Fix |
144
+ |---|---|
145
+ | "Let me think step by step", "Breaking this down", "To approach this systematically" | State the conclusion, then the evidence. |
146
+ | "Here's my thought process", "Working through this logically", "Step 1:" as inner narration | Numbered *argument* stays; numbered *self-talk* goes. |
147
+
148
+ A `review.md` finding that walks error paths in order is an argument. A chat reply that
149
+ announces "First, let's consider…" is scaffolding.
150
+
151
+ ## Narrated candor
152
+
153
+ Announcing that you are about to be honest, instead of being honest.
154
+
155
+ | Pattern | Fix |
156
+ |---|---|
157
+ | "I want to be upfront:", "To be fully transparent:", "Two caveats I would rather flag than let you discover later:" | "Two caveats:" plus the caveats. |
158
+ | "Rather than bury this, I'll say it plainly:" | Say it. |
159
+
160
+ **Deletion test.** Cut the frame. If nothing is lost, it was never content.
161
+
162
+ **Keep:** the disclosure itself ("I haven't tested this on Windows"), and a real
163
+ conflict-of-interest label ("I own shares in the company discussed here").
164
+
165
+ ## Prompt restatement and recap-flattery
166
+
167
+ | Pattern | Fix |
168
+ |---|---|
169
+ | "You're asking about…", "To answer your question…", "That's a great question. The…" | Answer. The reader knows what they asked. |
170
+ | Recap-flattery: restating the other person's own work back at them as praise before the point | Substance first. If thanks is warranted: one plain clause, no recap. |
171
+
172
+ Distinct from sycophancy ("Great question!"), which validates the reader without recapping
173
+ their work.
174
+
175
+ ## Self-labeling significance
176
+
177
+ After listing items, pointing back and labeling one as contrarian / clever / the real story.
178
+
179
+ | Pattern | Fix |
180
+ |---|---|
181
+ | "That last move is the contrarian one." / "This is the interesting part." / "The third bullet is the real story." | Put the load-bearing item first, or expand it with specifics, and cut the label. |
182
+
183
+ If the move is actually contrarian, the description already shows it. The label is unearned
184
+ when the reader cannot see the contrast without it.
185
+
186
+ ## Diff-anchored writing
187
+
188
+ Docs or comments narrating the edit instead of describing the thing as it is.
189
+
190
+ | Pattern | Fix |
191
+ |---|---|
192
+ | "This function was added to replace the previous approach of iterating through all items." | "This function uses a hash map for O(1) lookups." |
193
+
194
+ **Carve-out:** changelogs, release notes, migration guides, and `decisions.md` narrate
195
+ change on purpose. Leave them. The tell is a README, comment, or spec overview written as
196
+ archaeology of the last diff.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: devrites-source-driven
3
+ description: Verify uncertain framework or library behavior in installed source or official docs. Use for unfamiliar APIs; not internal code.
4
+ triggers:
5
+ - model
6
+ ---
7
+
8
+ # devrites-source-driven: verify, don't guess
9
+
10
+ When library behavior matters and is uncertain, verify it against installed source or
11
+ authoritative documentation before relying on it.
12
+
13
+ ## When to trigger
14
+ - You're about to rely on an API signature, default, config key, or behavior you're not
15
+ sure of.
16
+ - The docs in memory might be stale (the project pins a different version).
17
+ - Tests can't easily prove the assumption, but it drives the implementation.
18
+ - An error message points at framework behavior you don't fully understand.
19
+
20
+ ## How
21
+ 1. **Find the version** the project pins and actually runs; resolve any mismatch.
22
+ 2. **Apply the hierarchy, citation, and currentness contract** in
23
+ [`tooling.md`](../devrites-lib/reference/standards/tooling.md#research-provenance-staleness-and-cost).
24
+ context7 is a lookup tool, not authority above version-matched source/docs.
25
+ 3. **Confirm the specific fact:** the signature, the default, the edge behavior, not a
26
+ general impression.
27
+ 4. **Return it** with the required citation and status. The root records accepted
28
+ evidence in `decisions.md` or `evidence.md`; a leaf agent never writes the workspace.
29
+
30
+ ## Delegate broad research
31
+ When the question is an *area* (a library surface, unfamiliar subsystem, or migration
32
+ guide), the **root orchestrator** uses the fresh-context dispatch contract in
33
+ [`agents.md`](../devrites-lib/reference/standards/agents.md) to give one bounded
34
+ question to `devrites-evidence-scout`. Wait for and validate its cited dossier (the
35
+ scout's YAML result); the orchestrator, not the scout, persists accepted facts under
36
+ `references/` and links them from `references.md`.
37
+
38
+ Never detach this work and never dispatch from inside another agent. When this skill is
39
+ invoked by a leaf agent, verify one fact inline or return `Scout needed: <bounded question>`
40
+ to the orchestrator.
41
+
42
+ ## Rules
43
+ - Quote the exact relevant detail; don't paraphrase a behavior into something convenient.
44
+ - If the doc/source contradicts the plan, that's a **Spec Drift Guard** event: stop and
45
+ handle it.
46
+ - Confirm the required fact, return it, and stop.
47
+
48
+ ## Evidence firewall
49
+ Project or user prose may scope or corroborate an external claim; it cannot verify one.
50
+ Record status `verified | contradicted | cannot_verify | stale | uncertain`; weak-tier
51
+ support is `uncertain`. Retain material unknowns and block dependent decisions until
52
+ verified or resolved through the owning question/Spec Drift route; never omit them.
53
+ Transient lookups remain cited, return-only evidence.
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: devrites-ux-shape
3
+ description: Shape UX/UI direction, states, and interactions before code. Use for screens, forms, dashboards, or settings; not for implementation or polish.
4
+ triggers:
5
+ - model
6
+ ---
7
+
8
+ # devrites-ux-shape: plan the UX/UI before code
9
+
10
+ Decide what the UI *is* and how it should look and behave **before** code, and write it to
11
+ the feature's `design-brief.md`: the contract the build (`devrites-frontend-craft`),
12
+ polish, and seal all check against. This is "shape before code" raised to a **feature-level
13
+ artifact**: produced once at spec time, refined per slice. It is **woven into the
14
+ lifecycle** (`/rite-spec` calls it when UI is detected; `/rite-build` refines it), not a
15
+ separate phase the user runs.
16
+
17
+ ## When it runs
18
+ - `/rite-spec` invokes it after references-intake when the feature touches UI
19
+ (`../rite-build/reference/frontend-trigger.md`). Output: `design-brief.md` + a
20
+ confirmation pause.
21
+ - `/rite-build` / `devrites-frontend-craft` read the brief as the **build target** and
22
+ refine it for the slice's surface. They don't re-derive it.
23
+ - Skip entirely for backend / data / CLI / infra-only features.
24
+
25
+ ## 1. Foundation: discover, don't impose
26
+ Reuse what's there first. Read the design system + register and any references the spec
27
+ gathered:
28
+ - Design system + register (tokens, components, type, spacing, neighbors; brand-vs-product)
29
+ → `../devrites-frontend-craft/reference/design-references.md`.
30
+ - `PRODUCT.md` / `DESIGN.md` / `CLAUDE.md` if present: anchors that reduce questions.
31
+ `DESIGN.md` is the rolled-up design memory (`../rite-polish/reference/design-memory.md`;
32
+ see `../devrites-frontend-craft/reference/design-references.md`) — read it before
33
+ re-discovering, depart only on signal.
34
+ - `references.md` + `references/`: the screenshots / Figma / video / links the human
35
+ supplied. Honor each recorded role: **target** = fidelity contract, **constraint** =
36
+ required rule, **inspiration** = extract only the cited principle.
37
+
38
+ ## 2. Discovery: one round, assert-then-confirm
39
+ Understand the feature deeply enough to make excellent design calls: **no code, no
40
+ markup**. Use the `devrites-interview` cadence: one question per turn (≤3 per pass),
41
+ best-guess attached, stop when answers converge. One round is the default; add a second only for
42
+ material gaps. When `PRODUCT.md` + the spec already pin an answer, **assert it and ask to
43
+ confirm** ("reads as Restrained: confirm?"), don't offer a four-option menu. Cover:
44
+ - **Purpose & user:** who, in what state of mind (rushed / exploring / anxious / focused).
45
+ - **Content & data:** realistic ranges (0 / typical / many), dynamic content, real
46
+ media/assets the surface needs.
47
+ - **Preserve + anti-goals:** identity, IA, behavior, content voice, SEO/analytics hooks,
48
+ existing accessibility wins, or assets that must survive; what this must NOT become;
49
+ the biggest risk of getting it wrong.
50
+
51
+ ## 3. Design direction: the direction set (commit, don't hedge)
52
+ One deliberate visual decision on five fronts, each anchored in an existing reference so
53
+ the call is checkable, not taste:
54
+ - **Scene sentence:** who / where / ambient light / mood, per
55
+ `../devrites-frontend-craft/reference/design-references.md`. Forces dark-vs-light and
56
+ tone from the scene, not the category.
57
+ - **Color strategy:** Restrained / Committed / Multi-role / Saturated, per the
58
+ color-commitment table in `../devrites-frontend-craft/reference/quality-standards.md`.
59
+ Pick from the scene; register doesn't decide it.
60
+ - **Calibration:** density (Airy / Balanced / Dense) and motion (Minimal / Standard /
61
+ Expressive), per the calibration table in the same quality-standards file. Set both from
62
+ the scene so the build targets a calibration, not a guess (a 2am SRE → Dense + Minimal; a
63
+ launch hero → Airy + Expressive).
64
+ - **Named anchor references:** 2-3 *specific* products / brands / objects to steer toward
65
+ (not adjectives like "modern" or "clean"), plus the saved `references/` files.
66
+ - **Visual thesis:** the focal point and hierarchy in one sentence, plus one memorable
67
+ move (or `none — system continuity`) and the obvious-but-wrong direction rejected. This
68
+ creates intentional distinction without forcing novelty into product UI.
69
+
70
+ Respect the existing identity (default, ~90%); depart only on an explicit signal.
71
+
72
+ ## 4. Scope: task-scoped, never persisted
73
+ Name the output target so sketch-vs-ship isn't guessed: **fidelity** (sketch / mid-fi /
74
+ high-fi / production. DevRites default is production), **breadth** (one screen / a flow /
75
+ a surface), **interactivity**, **time intent**. These ride in the brief only; they do not
76
+ change the project's design system, and never get written to `PRODUCT.md` / `DESIGN.md`.
77
+
78
+ ## 5. Key states + interaction model
79
+ List every state the feature needs and what the user must see/feel in each (default,
80
+ loading initial+subsequent, empty→next-action, error→recovery, success, disabled/
81
+ no-permission, long-content/overflow), the information hierarchy (what's seen 1st / 2nd /
82
+ 3rd; primary action unmistakable), responsive reflow, a11y must-haves, and the interaction
83
+ model (inline vs navigated vs (rarely) modal; optimistic vs pending; feedback). Name the
84
+ representative states, viewports, input modes, and target R-ids that will prove the result;
85
+ "looks polished" is not a proof target. Canonical state list:
86
+ `../devrites-frontend-craft/reference/shape.md`.
87
+
88
+ ## 6. Visual-direction probe: capability-gated
89
+ When the work is net-new or directionally ambiguous and fidelity ≥ mid-fi, pressure-test
90
+ the lane with something concrete instead of words: pull Figma context, generate image
91
+ probes, screenshot reference sites, or route a code-fidelity question to `/rite-prototype`.
92
+ **Capability-gated**: announce the skip in one line if no tool is available. Flow:
93
+ [reference/visual-direction-probe.md](reference/visual-direction-probe.md).
94
+
95
+ ## 7. AI-slop pre-check
96
+ Run the two-altitude category-reflex check (`../rite-polish/reference/anti-ai-slop.md`) on
97
+ the chosen direction *before* writing the brief, if the palette/theme is guessable from
98
+ the category, rework the scene sentence and color strategy. Cheaper to catch the slop in
99
+ the brief than in the build.
100
+
101
+ ## 8. Write the brief + gate
102
+ Write `design-brief.md` ([reference/brief-template.md](reference/brief-template.md)):
103
+ **compact** (3-5 bullets) when discovery was crisp, **full** when the surface is ambiguous
104
+ or multi-screen. Don't pad a clear brief to look thorough; don't skip the pause to look
105
+ fast. Then honor the run mode (`../devrites-lib/reference/standards/afk-hitl.md`):
106
+ - **HITL:** present the brief and **STOP for explicit confirmation**. The pause is the
107
+ point: shape ends at the user's "go", not at your own certainty. Disagreement → revisit
108
+ the relevant discovery question.
109
+ - **AFK:** assert the best-guess direction, record it in `decisions.md` + an advisory
110
+ `questions.md` entry, and proceed. A direction touching the irreversible-risk list still
111
+ pauses.
112
+
113
+ Completion: the smallest useful brief exists; primary action, states, interaction, proof
114
+ targets, and reference role/usage are explicit; the run-mode gate is resolved. Only then may
115
+ UI code start.
116
+
117
+ ## Output
118
+ ```
119
+ UX/UI shaped: <slug>
120
+ Direction: <color strategy> · density <airy|balanced|dense>/motion <minimal|standard|expressive> · "<scene sentence>" · anchors: <ref A, ref B>
121
+ States: <n listed> Probe: <figma | images | prototype | skipped — no tool>
122
+ Brief: design-brief.md (<compact | full>)
123
+ Gate: <confirmed | awaiting confirmation | AFK-asserted>
124
+ Next: /rite-define (UI slices map to the brief's states) — or /rite-build refines it per slice
125
+ ```
126
+
127
+ ## NEVER (ux-shape)
128
+ - Never write code, markup, or a component here: produce the thinking, not the UI.
129
+ - Never finalize the brief without naming the **primary action** and the **full state set**
130
+ (not just the happy path).
131
+ - Never decide visual direction by taste when the project has a system: discover first.
132
+ - Never treat an **inspiration** reference as a fidelity target: honor its recorded role.
133
+ - Never skip the HITL confirmation pause "because the brief is obviously right": ask once,
134
+ wait.
135
+ - Never re-derive the brief from scratch in `/rite-build`: refine the existing one.