@event4u/agent-config 14.22.0 → 15.0.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 (557) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +333 -356
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/agent-handoff.md +8 -7
  7. package/dist/agent-src/commands/agents/init.md +1 -1
  8. package/dist/agent-src/commands/agents/user/accept.md +4 -4
  9. package/dist/agent-src/commands/agents/user/delete.md +2 -2
  10. package/dist/agent-src/commands/agents/user/init.md +3 -3
  11. package/dist/agent-src/commands/agents/user/review.md +3 -3
  12. package/dist/agent-src/commands/agents/user/show.md +3 -3
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +6 -6
  15. package/dist/agent-src/commands/analytics/prune.md +1 -1
  16. package/dist/agent-src/commands/analytics/show.md +2 -2
  17. package/dist/agent-src/commands/analyze/decision.md +2 -2
  18. package/dist/agent-src/commands/analyze/inbox.md +5 -5
  19. package/dist/agent-src/commands/analyze/incident.md +3 -3
  20. package/dist/agent-src/commands/analyze/near-miss.md +3 -3
  21. package/dist/agent-src/commands/analyze/postmortem.md +4 -4
  22. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  23. package/dist/agent-src/commands/analyze.md +2 -2
  24. package/dist/agent-src/commands/bug/fix.md +1 -1
  25. package/dist/agent-src/commands/bug/investigate.md +2 -2
  26. package/dist/agent-src/commands/cost/profile.md +3 -3
  27. package/dist/agent-src/commands/design.md +1 -1
  28. package/dist/agent-src/commands/feature/explore.md +1 -1
  29. package/dist/agent-src/commands/feature/plan.md +2 -2
  30. package/dist/agent-src/commands/feature/roadmap.md +2 -2
  31. package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
  32. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  33. package/dist/agent-src/commands/ghostwriter/show.md +1 -1
  34. package/dist/agent-src/commands/ghostwriter/write.md +9 -9
  35. package/dist/agent-src/commands/humanize.md +6 -6
  36. package/dist/agent-src/commands/jira-ticket.md +1 -1
  37. package/dist/agent-src/commands/judge/solo.md +1 -1
  38. package/dist/agent-src/commands/judge.md +1 -1
  39. package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  41. package/dist/agent-src/commands/knowledge/ingest.md +2 -2
  42. package/dist/agent-src/commands/knowledge/list.md +1 -1
  43. package/dist/agent-src/commands/memory/add.md +3 -3
  44. package/dist/agent-src/commands/memory/load.md +4 -4
  45. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  46. package/dist/agent-src/commands/memory/promote.md +4 -4
  47. package/dist/agent-src/commands/memory/propose.md +2 -2
  48. package/dist/agent-src/commands/mode.md +5 -5
  49. package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
  50. package/dist/agent-src/commands/post-as/me.md +7 -7
  51. package/dist/agent-src/commands/pr/create.md +1 -1
  52. package/dist/agent-src/commands/pr/merge.md +48 -39
  53. package/dist/agent-src/commands/profile/activate.md +1 -1
  54. package/dist/agent-src/commands/profile/show.md +1 -1
  55. package/dist/agent-src/commands/research/deep.md +2 -2
  56. package/dist/agent-src/commands/research/report.md +2 -2
  57. package/dist/agent-src/commands/review/changes.md +1 -1
  58. package/dist/agent-src/commands/review/routing.md +1 -1
  59. package/dist/agent-src/commands/roadmap/create.md +1 -1
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +9 -1
  62. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  63. package/dist/agent-src/commands/security-audit-config.md +3 -3
  64. package/dist/agent-src/commands/skill/preview.md +1 -1
  65. package/dist/agent-src/commands/skills/discover.md +1 -1
  66. package/dist/agent-src/commands/sync/agent-settings.md +2 -2
  67. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  68. package/dist/agent-src/commands/tests/create.md +1 -1
  69. package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
  70. package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
  71. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
  72. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
  73. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  74. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
  75. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  76. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
  77. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  78. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  79. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +13 -1
  80. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
  81. package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
  82. package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
  83. package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
  84. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
  85. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
  86. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
  87. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
  88. package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
  89. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
  90. package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
  91. package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
  92. package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
  93. package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
  94. package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
  95. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
  96. package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
  97. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
  98. package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
  99. package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
  100. package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
  101. package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  102. package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
  103. package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
  104. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
  105. package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  106. package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
  107. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  108. package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  109. package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
  110. package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
  111. package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  112. package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  113. package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  114. package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
  115. package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
  116. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  117. package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  118. package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
  119. package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
  120. package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
  121. package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
  122. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  123. package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
  124. package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
  125. package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
  126. package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
  127. package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
  128. package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
  129. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
  130. package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  131. package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
  132. package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
  133. package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
  134. package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
  135. package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
  136. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
  137. package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
  138. package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  139. package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  140. package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
  141. package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  142. package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
  143. package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  144. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
  145. package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
  146. package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  147. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
  148. package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
  149. package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  150. package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
  151. package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
  152. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
  153. package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
  154. package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
  155. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
  156. package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
  157. package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  158. package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
  159. package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
  160. package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
  161. package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  162. package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  163. package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
  164. package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
  165. package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
  166. package/dist/agent-src/guidelines/code-clarity.md +350 -0
  167. package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
  168. package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
  169. package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
  170. package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
  171. package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
  172. package/dist/agent-src/guidelines/design-canon.md +63 -0
  173. package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
  174. package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
  175. package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
  176. package/dist/agent-src/guidelines/design-modes.md +143 -0
  177. package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
  178. package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
  179. package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
  180. package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
  181. package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
  182. package/dist/agent-src/guidelines/php/api-design.md +115 -0
  183. package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
  184. package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
  185. package/dist/agent-src/guidelines/php/controllers.md +90 -0
  186. package/dist/agent-src/guidelines/php/database.md +194 -0
  187. package/dist/agent-src/guidelines/php/eloquent.md +208 -0
  188. package/dist/agent-src/guidelines/php/flux.md +80 -0
  189. package/dist/agent-src/guidelines/php/general.md +207 -0
  190. package/dist/agent-src/guidelines/php/git.md +164 -0
  191. package/dist/agent-src/guidelines/php/jobs.md +111 -0
  192. package/dist/agent-src/guidelines/php/livewire.md +71 -0
  193. package/dist/agent-src/guidelines/php/logging.md +79 -0
  194. package/dist/agent-src/guidelines/php/naming.md +89 -0
  195. package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  196. package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
  197. package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
  198. package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
  199. package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
  200. package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
  201. package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
  202. package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
  203. package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
  204. package/dist/agent-src/guidelines/php/patterns.md +28 -0
  205. package/dist/agent-src/guidelines/php/performance.md +92 -0
  206. package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
  207. package/dist/agent-src/guidelines/php/resources.md +100 -0
  208. package/dist/agent-src/guidelines/php/security.md +110 -0
  209. package/dist/agent-src/guidelines/php/sql.md +97 -0
  210. package/dist/agent-src/guidelines/php/validations.md +119 -0
  211. package/dist/agent-src/guidelines/php/websocket.md +100 -0
  212. package/dist/agent-src/guidelines/prompt-templates.md +189 -0
  213. package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
  214. package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
  215. package/dist/agent-src/personas/README.md +1 -1
  216. package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
  217. package/dist/agent-src/personas/product-owner.md +1 -1
  218. package/dist/agent-src/rules/active-remediation.md +1 -1
  219. package/dist/agent-src/rules/architecture.md +2 -2
  220. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  221. package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
  222. package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
  223. package/dist/agent-src/rules/code-comment-discipline.md +2 -2
  224. package/dist/agent-src/rules/code-provenance.md +1 -1
  225. package/dist/agent-src/rules/content-quoting-floor.md +1 -1
  226. package/dist/agent-src/rules/context-hygiene.md +5 -5
  227. package/dist/agent-src/rules/cross-source-consistency.md +1 -1
  228. package/dist/agent-src/rules/design-fidelity.md +36 -46
  229. package/dist/agent-src/rules/direct-answers.md +2 -2
  230. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  231. package/dist/agent-src/rules/evaluator-independence.md +1 -1
  232. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  233. package/dist/agent-src/rules/icon-consistency.md +5 -1
  234. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  235. package/dist/agent-src/rules/language-and-tone.md +3 -3
  236. package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
  237. package/dist/agent-src/rules/notes-first-reasoning.md +36 -25
  238. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  239. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  240. package/dist/agent-src/rules/role-mode-adherence.md +2 -2
  241. package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
  242. package/dist/agent-src/rules/size-enforcement.md +1 -1
  243. package/dist/agent-src/rules/source-confidentiality.md +2 -2
  244. package/dist/agent-src/rules/think-before-action.md +1 -1
  245. package/dist/agent-src/rules/token-efficiency.md +7 -5
  246. package/dist/agent-src/rules/ui-audit-gate.md +3 -2
  247. package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
  248. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  249. package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
  250. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  251. package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
  252. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
  253. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  254. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  255. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
  256. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  257. package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
  258. package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
  259. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -1
  260. package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
  261. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  262. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  263. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  264. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  265. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  266. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  267. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  268. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  269. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  270. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  271. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  272. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  273. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  274. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  275. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  276. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  277. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  278. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  279. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  280. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  281. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  282. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  283. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  284. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  285. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  286. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  287. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  288. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  289. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
  290. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
  291. package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
  292. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  293. package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
  294. package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
  295. package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
  296. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
  297. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  298. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  299. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  300. package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
  301. package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
  302. package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
  303. package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
  304. package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +9 -0
  305. package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
  306. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  307. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  308. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  309. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  310. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  311. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  312. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  313. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  314. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  315. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  316. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  317. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  318. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  319. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  320. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  321. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  322. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  323. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  324. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  325. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  326. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  327. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  328. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  329. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  330. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  331. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  332. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  333. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  334. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  335. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  336. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  337. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  338. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  339. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  340. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  341. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  342. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  343. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  344. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  345. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  346. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  347. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  348. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  349. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  350. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  351. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  352. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  353. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  354. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  355. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  356. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  357. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +60 -4
  358. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  359. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  360. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  361. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  362. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  363. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  364. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  365. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  366. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  367. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  368. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  369. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  370. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  371. package/dist/agent-src/templates/agent-settings.md +6 -6
  372. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  373. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  374. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  375. package/dist/agent-src/templates/roadmaps.md +1 -1
  376. package/dist/agent-src/templates/scripts/README.md +2 -2
  377. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  378. package/dist/cli/registry.js +1 -1
  379. package/dist/cli-delegate/archive_completed_roadmaps.js +52 -4
  380. package/dist/cli-delegate/check_update_banner.js +12 -1
  381. package/dist/cli-delegate/{chunk-TGIPZBCW.js → chunk-2KKXJW25.js} +22 -8
  382. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  383. package/dist/cli-delegate/{chunk-4FS4WRXP.js → chunk-3FKR64R5.js} +34 -6
  384. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  385. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  386. package/dist/cli-delegate/{chunk-BIXEDQPZ.js → chunk-AK6HODNQ.js} +4 -4
  387. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  388. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
  389. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  390. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  391. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  392. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  393. package/dist/cli-delegate/cmd_conformance.js +3 -3
  394. package/dist/cli-delegate/cmd_doctor.js +3 -3
  395. package/dist/cli-delegate/cmd_explain.js +2 -2
  396. package/dist/cli-delegate/cmd_export.js +4 -4
  397. package/dist/cli-delegate/cmd_handoff.js +24 -16
  398. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  399. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  400. package/dist/cli-delegate/cmd_migrate.js +2 -2
  401. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  402. package/dist/cli-delegate/cmd_prune.js +4 -4
  403. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  404. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  405. package/dist/cli-delegate/cmd_session_recycle.js +4 -14
  406. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  407. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  408. package/dist/cli-delegate/cmd_settings_set.js +41 -11
  409. package/dist/cli-delegate/cmd_sync.js +4 -4
  410. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  411. package/dist/cli-delegate/cmd_update.js +1 -1
  412. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  413. package/dist/cli-delegate/cmd_validate.js +4 -4
  414. package/dist/cli-delegate/cmd_versions.js +1 -1
  415. package/dist/discovery/deprecation-report.md +1 -1
  416. package/dist/discovery/discovery-manifest.json +27 -80
  417. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  418. package/dist/discovery/discovery-manifest.summary.md +3 -3
  419. package/dist/discovery/dormancy-report.md +1 -1
  420. package/dist/discovery/orphan-report.md +1 -1
  421. package/dist/discovery/packs.json +5 -7
  422. package/dist/discovery/trust-report.md +2 -2
  423. package/dist/discovery/workspaces.json +4 -6
  424. package/dist/hooks/dispatch.js +9249 -8981
  425. package/dist/install/install.mjs +47 -8
  426. package/dist/mcp/registry-manifest.json +3 -3
  427. package/dist/mcp/server.json +2 -2
  428. package/dist/mcp/server.mjs +5496 -2400
  429. package/dist/router.json +1 -1
  430. package/dist/scripts/_lib/agent_settings.js +73 -0
  431. package/dist/scripts/_lib/agent_src.js +20 -0
  432. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  433. package/dist/scripts/_lib/lean_projection_mode.js +108 -0
  434. package/dist/scripts/_lib/router_match.js +243 -0
  435. package/dist/scripts/_lib/rule_injection.js +216 -0
  436. package/dist/scripts/condense.js +22 -25
  437. package/dist/scripts/project_thin_rules.js +139 -19
  438. package/dist/server/io/yamlIO.js +125 -17
  439. package/dist/server/schemas/settings.js +32 -5
  440. package/dist/shared/settingsSurface.js +6 -1
  441. package/docs/MIGRATION.md +56 -0
  442. package/docs/contracts/settings-classes.md +48 -7
  443. package/docs/guidelines/abstraction-thresholds.md +35 -0
  444. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  445. package/docs/guidelines/agent-infra/false-green.md +2 -2
  446. package/docs/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  447. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  448. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  449. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  450. package/docs/guidelines/design-fidelity-routing.md +78 -0
  451. package/docs/guidelines/design-reconciliation.md +172 -0
  452. package/docs/guidelines/gtm-handoff.md +2 -2
  453. package/docs/guidelines/wing4-handoff.md +2 -2
  454. package/llms.txt +1 -1
  455. package/package.json +7 -3
  456. package/src/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  457. package/src/config/agent-settings.template.yml +94 -1
  458. package/src/config/ci-local-parity.yml +34 -0
  459. package/src/config/continuity-surface.json +8 -29
  460. package/src/config/evaluator-budgets.json +4 -4
  461. package/src/config/gate-coverage.yml +31 -8
  462. package/src/config/gate-reachability-exemptions.json +1 -0
  463. package/src/config/gate-violation-baselines.json +3 -3
  464. package/src/config/hook-token-budget.json +8 -7
  465. package/src/config/host-injection-effect.json +2 -2
  466. package/src/config/pack-size-budget.json +55 -4
  467. package/src/config/packed-binary-manifest.json +1 -1
  468. package/src/config/platform-anchor.json +47 -0
  469. package/src/config/preamble-payload-budget.json +2 -3
  470. package/src/config/publish-surface.json +4 -2
  471. package/src/config/ratification-policy.json +7 -0
  472. package/src/config/routing-coverage-seed.json +9 -2
  473. package/src/config/rule-stub-ceilings.json +16 -9
  474. package/src/scripts/_cli/cmd_session_recycle.ts +2 -25
  475. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  476. package/src/scripts/_cli/handoff_sessions.ts +14 -44
  477. package/src/scripts/_lib/agent_settings.ts +85 -0
  478. package/src/scripts/_lib/agent_src.ts +21 -0
  479. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  480. package/src/scripts/_lib/conformance_report.ts +403 -0
  481. package/src/scripts/_lib/continuity_slot.ts +295 -0
  482. package/src/scripts/_lib/continuity_writer.ts +312 -0
  483. package/src/scripts/_lib/design_system_import.ts +20 -0
  484. package/src/scripts/_lib/design_tolerance.ts +281 -0
  485. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  486. package/src/scripts/_lib/hook_settings.ts +85 -0
  487. package/src/scripts/_lib/lean_projection_mode.ts +127 -0
  488. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  489. package/src/scripts/_lib/packed_binary_predicate.ts +37 -0
  490. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  491. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  492. package/src/scripts/_lib/recycle_envelope_paths.ts +109 -21
  493. package/src/scripts/_lib/regression_neighbourhood.ts +159 -22
  494. package/src/scripts/_lib/security_lint.ts +23 -2
  495. package/src/scripts/_lib/self_repair.ts +21 -0
  496. package/src/scripts/_lib/session_eol.ts +44 -0
  497. package/src/scripts/_lib/session_index_trust.ts +387 -0
  498. package/src/scripts/_lib/standing_bound_ratchet.ts +220 -0
  499. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  500. package/src/scripts/_lib/vendored_grammar_upstream.ts +280 -0
  501. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  502. package/src/scripts/audit_mcp_tools.ts +69 -25
  503. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  504. package/src/scripts/build_mcp_catalog.ts +24 -1
  505. package/src/scripts/check_host_tree_parity.ts +291 -0
  506. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  507. package/src/scripts/check_loss_class_declared.ts +793 -46
  508. package/src/scripts/check_platform_anchor.ts +390 -0
  509. package/src/scripts/check_preamble_payload_budget.ts +424 -7
  510. package/src/scripts/check_projected_rule_routes.ts +395 -0
  511. package/src/scripts/check_rule_projection_integrity.ts +102 -2
  512. package/src/scripts/ci_settle.ts +205 -5
  513. package/src/scripts/code_graph/build.ts +79 -0
  514. package/src/scripts/code_graph/cli.ts +264 -7
  515. package/src/scripts/code_graph/detect.ts +38 -0
  516. package/src/scripts/code_graph/query.ts +25 -2
  517. package/src/scripts/code_graph/sqlite_store.ts +16 -1
  518. package/src/scripts/code_graph/types.ts +52 -3
  519. package/src/scripts/code_graph/validate.ts +3 -1
  520. package/src/scripts/code_graph/verbs.ts +590 -0
  521. package/src/scripts/condense.ts +22 -26
  522. package/src/scripts/generate_host_cost_table.ts +354 -0
  523. package/src/scripts/handoff_context_hook.ts +39 -1
  524. package/src/scripts/hook_manifest.json +1 -1
  525. package/src/scripts/hook_manifest.yaml +59 -28
  526. package/src/scripts/hooks/block_speaking_inbox_dir.ts +182 -16
  527. package/src/scripts/hooks/category_a.ts +1 -1
  528. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  529. package/src/scripts/hooks/code_graph_context_hook.ts +7 -18
  530. package/src/scripts/hooks/push_settle_hook.ts +3 -2
  531. package/src/scripts/hooks/rule_inject_hook.ts +107 -20
  532. package/src/scripts/hooks/session_eol_hook.ts +177 -145
  533. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  534. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  535. package/src/scripts/hot_context_hook.ts +103 -408
  536. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  537. package/src/scripts/lint_knowledge_scale.ts +0 -26
  538. package/src/scripts/lint_roadmap_blockers.ts +164 -1
  539. package/src/scripts/mcp_server/consumer_tool_catalog.json +152 -2
  540. package/src/scripts/mcp_server/graph_tools.ts +294 -0
  541. package/src/scripts/mcp_server/path_util.ts +31 -0
  542. package/src/scripts/mcp_server/tool_catalog_source.ts +7 -1
  543. package/src/scripts/mcp_server/tools.ts +3 -13
  544. package/src/scripts/memory_lookup.ts +9 -9
  545. package/src/scripts/model_rule_injection.ts +61 -4
  546. package/src/scripts/project_thin_rules.ts +149 -16
  547. package/src/scripts/report_standing_payload_by_host.ts +650 -0
  548. package/src/scripts/schemas/agent-settings.schema.json +7 -1
  549. package/src/scripts/session_memory_index.ts +86 -8
  550. package/src/scripts/sync_agent_settings.ts +270 -10
  551. package/src/server/io/yamlIO.ts +127 -17
  552. package/src/server/schemas/settings.ts +45 -6
  553. package/src/shared/settingsSurface.ts +13 -2
  554. package/src/templates/compact-instructions.md +8 -3
  555. package/src/vendor/grammars/README.md +27 -2
  556. package/dist/agent-src/commands/chat-history/import.md +0 -170
  557. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,363 @@
1
+ # Playwright E2E Guidelines
2
+
3
+ > Best practices for writing end-to-end tests with Playwright.
4
+ > Applies to all projects using Playwright (API, web, or hybrid).
5
+
6
+ **Related Skills:** `playwright-testing`, `pest-testing`
7
+ **Related Guidelines:** [php.md](../php/general.md)
8
+
9
+ ## Project Structure
10
+
11
+ ```
12
+ tests/
13
+ e2e/
14
+ fixtures/ # Custom fixtures (auth, data, etc.)
15
+ pages/ # Page Object Models
16
+ specs/ # Test files grouped by feature
17
+ auth/
18
+ login.spec.ts
19
+ logout.spec.ts
20
+ dashboard/
21
+ overview.spec.ts
22
+ helpers/ # Shared utilities (API helpers, test data)
23
+ playwright.config.ts # Root config
24
+ ```
25
+
26
+ - Group specs by **feature area**, not by page.
27
+ - One spec file per user workflow or feature.
28
+ - Keep Page Objects in `pages/`, fixtures in `fixtures/`.
29
+
30
+ ## Locator Strategy (Priority Order)
31
+
32
+ | Priority | Locator | Example | When |
33
+ |---|---|---|---|
34
+ | 1 | **Role** | `getByRole('button', { name: 'Save' })` | Default — most accessible and resilient |
35
+ | 2 | **Label** | `getByLabel('Email')` | Form inputs with labels |
36
+ | 3 | **Placeholder** | `getByPlaceholder('Search...')` | Inputs without visible labels |
37
+ | 4 | **Text** | `getByText('Welcome back')` | Static visible content |
38
+ | 5 | **Test ID** | `getByTestId('submit-btn')` | When no semantic locator works |
39
+ | 6 | **CSS/XPath** | `page.locator('.class')` | **Avoid** — brittle, breaks on UI changes |
40
+
41
+ ### Rules
42
+
43
+ - **Always prefer semantic locators** (`getByRole`, `getByLabel`) over CSS.
44
+ - Use `data-testid` as a stable fallback — add it to the component, not the test.
45
+ - Chain and filter locators to narrow scope: `page.getByRole('listitem').filter({ hasText: 'Product' })`.
46
+ - Never use auto-generated class names or dynamic IDs as selectors.
47
+
48
+ ## Assertions
49
+
50
+ ### Always use web-first assertions
51
+
52
+ ```ts
53
+ // ✅ Auto-retrying — waits until condition is met
54
+ await expect(page.getByText('Success')).toBeVisible()
55
+ await expect(page.getByRole('list')).toHaveCount(5)
56
+ await expect(page).toHaveURL('/dashboard')
57
+
58
+ // ❌ Non-retrying — flaky
59
+ const text = await page.textContent('.message')
60
+ expect(text).toBe('Success')
61
+ ```
62
+
63
+ ### Use soft assertions for non-critical checks
64
+
65
+ ```ts
66
+ await expect.soft(page.getByTestId('status')).toHaveText('Active')
67
+ await expect.soft(page.getByTestId('count')).toHaveText('42')
68
+ // Test continues even if soft assertions fail
69
+ ```
70
+
71
+ ## Waiting
72
+
73
+ ```ts
74
+ // ✅ Wait for specific conditions
75
+ await page.waitForResponse(resp => resp.url().includes('/api/users') && resp.status() === 200)
76
+ await expect(page.getByText('Loaded')).toBeVisible()
77
+
78
+ // ❌ Never use fixed timeouts
79
+ await page.waitForTimeout(3000)
80
+ ```
81
+
82
+ - **Never use `waitForTimeout()`** — use auto-retrying assertions or `waitForResponse`.
83
+ - Trust Playwright's auto-waiting for actions (click, fill, etc.).
84
+ - Use `networkidle` sparingly — prefer waiting for specific elements.
85
+
86
+ ## Page Object Model
87
+
88
+ ```ts
89
+ // pages/LoginPage.ts
90
+ import { type Page, type Locator } from '@playwright/test'
91
+
92
+ export class LoginPage {
93
+ private readonly emailInput: Locator
94
+ private readonly passwordInput: Locator
95
+ private readonly submitButton: Locator
96
+
97
+ constructor(private readonly page: Page) {
98
+ this.emailInput = page.getByLabel('Email')
99
+ this.passwordInput = page.getByLabel('Password')
100
+ this.submitButton = page.getByRole('button', { name: 'Sign in' })
101
+ }
102
+
103
+ async goto(): Promise<void> {
104
+ await this.page.goto('/login')
105
+ }
106
+
107
+ async login(email: string, password: string): Promise<void> {
108
+ await this.emailInput.fill(email)
109
+ await this.passwordInput.fill(password)
110
+ await this.submitButton.click()
111
+ }
112
+ }
113
+ ```
114
+
115
+ ### Rules
116
+
117
+ - One Page Object per page or major component.
118
+ - Locators are **defined in the constructor**, not inline in methods.
119
+ - Methods represent **user actions**, not DOM manipulations.
120
+
121
+ ## Test Data Management
122
+
123
+ ### API-based setup (preferred)
124
+
125
+ ```ts
126
+ test.beforeEach(async ({ request }) => {
127
+ // Create test data via API — faster than UI
128
+ await request.post('/api/test/seed', { data: { scenario: 'basic-customer' } })
129
+ })
130
+
131
+ test.afterEach(async ({ request }) => {
132
+ await request.post('/api/test/cleanup')
133
+ })
134
+ ```
135
+
136
+ ### Rules
137
+
138
+ - **Prefer API calls** over UI interactions for test data setup — faster and more reliable.
139
+ - Use seeded test accounts with known credentials.
140
+ - Never depend on data created by another test.
141
+ - For database-backed apps: use a dedicated test database or transactional rollback.
142
+
143
+ ## Configuration
144
+
145
+ ### `playwright.config.ts` essentials
146
+
147
+ ```ts
148
+ import { defineConfig, devices } from '@playwright/test'
149
+
150
+ export default defineConfig({
151
+ testDir: './tests/e2e/specs',
152
+ fullyParallel: true,
153
+ forbidOnly: !!process.env.CI,
154
+ retries: process.env.CI ? 2 : 0,
155
+ workers: process.env.CI ? 1 : undefined,
156
+ reporter: [
157
+ ['html', { open: 'never' }],
158
+ ...(process.env.CI ? [['github'] as const] : []),
159
+ ],
160
+ use: {
161
+ baseURL: process.env.BASE_URL || 'http://localhost:3000',
162
+ trace: 'on-first-retry',
163
+ screenshot: 'only-on-failure',
164
+ video: 'retain-on-failure',
165
+ },
166
+ projects: [
167
+ { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
168
+ { name: 'firefox', use: { ...devices['Desktop Firefox'] } },
169
+ { name: 'webkit', use: { ...devices['Desktop Safari'] } },
170
+ { name: 'mobile-chrome', use: { ...devices['Pixel 5'] } },
171
+ { name: 'mobile-safari', use: { ...devices['iPhone 13'] } },
172
+ ],
173
+ webServer: {
174
+ command: 'npm run dev',
175
+ url: 'http://localhost:3000',
176
+ reuseExistingServer: !process.env.CI,
177
+ },
178
+ })
179
+ ```
180
+
181
+ ### Key settings
182
+
183
+ | Setting | Local | CI | Why |
184
+ |---|---|---|---|
185
+ | `workers` | Auto (CPU cores) | `1` | Stability over speed in CI |
186
+ | `retries` | `0` | `2` | Catch flakes in CI, fail fast locally |
187
+ | `trace` | `off` | `on-first-retry` | Traces are expensive, only collect on failure |
188
+ | `fullyParallel` | `true` | `true` | Tests must be isolated anyway |
189
+ | `forbidOnly` | `false` | `true` | Prevent `.only` from reaching CI |
190
+
191
+ ## CI Integration (GitHub Actions)
192
+
193
+ ```yaml
194
+ name: E2E Tests
195
+ on:
196
+ push:
197
+ branches: [main]
198
+ pull_request:
199
+ branches: [main]
200
+
201
+ jobs:
202
+ e2e:
203
+ runs-on: ubuntu-latest
204
+ steps:
205
+ - uses: actions/checkout@v4
206
+ - uses: actions/setup-node@v4
207
+ with:
208
+ node-version: 20
209
+ - run: npm ci
210
+ - run: npx playwright install chromium --with-deps
211
+ - run: npx playwright test
212
+ - uses: actions/upload-artifact@v4
213
+ if: ${{ !cancelled() }}
214
+ with:
215
+ name: playwright-report
216
+ path: playwright-report/
217
+ retention-days: 14
218
+ ```
219
+
220
+ ### Sharding for large suites
221
+
222
+ ```yaml
223
+ strategy:
224
+ matrix:
225
+ shard: [1, 2, 3, 4]
226
+ steps:
227
+ - run: npx playwright test --shard=${{ matrix.shard }}/4
228
+ ```
229
+
230
+ - **Only install browsers you need** — `npx playwright install chromium --with-deps` not `npx playwright install`.
231
+ - Use **Linux runners** in CI — cheapest and most stable.
232
+ - Upload `playwright-report/` as artifact for failure debugging.
233
+ - Use **sharding** when suite exceeds ~5 minutes.
234
+
235
+ ## Visual Regression
236
+
237
+ ```ts
238
+ test('dashboard layout', async ({ page }) => {
239
+ await page.goto('/dashboard')
240
+ await expect(page).toHaveScreenshot('dashboard.png', {
241
+ maxDiffPixelRatio: 0.01,
242
+ fullPage: true,
243
+ })
244
+ })
245
+ ```
246
+
247
+ - Store baselines in version control.
248
+ - Update with `npx playwright test --update-snapshots`.
249
+ - Pin OS + browser version in CI — visual diffs are platform-sensitive.
250
+ - Use `maxDiffPixelRatio` or `maxDiffPixels` for tolerance.
251
+
252
+ ## Avoiding Flaky Tests
253
+
254
+ | Problem | Solution |
255
+ |---|---|
256
+ | Element not ready | Use auto-retrying assertions (`toBeVisible`, `toHaveText`) |
257
+ | Animation interference | Disable transitions: `page.addStyleTag({ content: '*, *::before, *::after { transition: none !important; animation: none !important; }' })` |
258
+ | Network timing | Wait for specific responses, not arbitrary timeouts |
259
+ | Test isolation | Fresh browser context per test (default) |
260
+ | Shared state | Reset data via API before each test |
261
+ | Date/time dependent | Use Playwright's clock API: `page.clock.setFixedTime()` |
262
+ | Third-party resources | Mock with `page.route()` |
263
+
264
+ ## Debugging
265
+
266
+ ```bash
267
+ # Headed mode — watch the browser
268
+ npx playwright test --headed
269
+
270
+ # Debug mode — step through with inspector
271
+ npx playwright test --debug
272
+
273
+ # Specific test
274
+ npx playwright test -g "should login"
275
+
276
+ # View HTML report
277
+ npx playwright show-report
278
+
279
+ # Generate tests interactively
280
+ npx playwright codegen http://localhost:3000
281
+ ```
282
+
283
+ ## Handling Unfixable Tests
284
+
285
+ When a test fails and the failure is in the **application** (not the test), use `test.fixme()`:
286
+
287
+ ```ts
288
+ test.fixme('should display user avatar', async ({ page }) => {
289
+ // BUG: Avatar endpoint returns 404 since API v2 migration.
290
+ // Tracked in JIRA: GALA-1234
291
+ await page.goto('/profile')
292
+ await expect(page.getByRole('img', { name: 'Avatar' })).toBeVisible()
293
+ })
294
+ ```
295
+
296
+ ### Rules
297
+
298
+ - Use `test.fixme()` — **not** `test.skip()` — for tests that should work but don't due to app bugs.
299
+ - Use `test.skip()` only for **environment-specific** skips (e.g., `test.skip(process.env.CI, 'requires local GPU')`).
300
+ - Always add a **comment before the failing step** explaining the current behavior vs. expected.
301
+ - Link to an issue tracker ticket if available.
302
+
303
+ ## Healer Workflow (Debugging Failing Tests)
304
+
305
+ When tests fail, follow this systematic approach:
306
+
307
+ 1. **Run** — Execute the failing test(s) to see current errors
308
+ 2. **Debug** — Use `--debug` mode or trace viewer to inspect state at failure point
309
+ 3. **Investigate** — Check: selectors changed? Timing issue? Data dependency? App change?
310
+ 4. **Fix** — Update the test code (one fix at a time)
311
+ 5. **Verify** — Re-run the specific test to confirm the fix
312
+ 6. **Iterate** — Repeat until all tests pass
313
+
314
+ ### Common failure patterns
315
+
316
+ | Symptom | Likely Cause | Fix |
317
+ |---|---|---|
318
+ | Element not found | Selector changed | Update locator, prefer semantic |
319
+ | Timeout waiting for element | Slow load / missing element | Add `waitForResponse` or check if feature removed |
320
+ | Assertion mismatch | App behavior changed | Update expected value or test logic |
321
+ | Intermittent pass/fail | Race condition | Add proper waits, remove shared state |
322
+ | Works locally, fails in CI | Environment difference | Check `baseURL`, headless mode, viewport |
323
+
324
+ ### When to give up
325
+
326
+ If a test **consistently fails** despite correct test logic (confirmed by manual inspection):
327
+ - Mark with `test.fixme()` + detailed comment
328
+ - File a bug ticket for the underlying application issue
329
+ - Move on — don't spend more than 3 attempts fixing a single test
330
+
331
+ ## Agent-Driven Test Pipeline
332
+
333
+ For AI-assisted E2E workflows, follow this pipeline:
334
+
335
+ ### Phase 1: Plan
336
+ - Explore the application (navigate pages, identify flows)
337
+ - Document test scenarios in Markdown with numbered steps
338
+ - Include: happy path, edge cases, error handling, validation
339
+
340
+ ### Phase 2: Generate
341
+ - Convert Markdown plans into Playwright test files
342
+ - Follow all conventions from this guideline
343
+ - One test file per scenario group
344
+ - Add step comments before each action
345
+
346
+ ### Phase 3: Heal
347
+ - Run all generated tests
348
+ - Debug failures systematically (see Healer Workflow above)
349
+ - Fix or mark as `test.fixme()` if the app is broken
350
+ - Verify all fixes, iterate until green
351
+
352
+ ## Do NOT
353
+
354
+ - Do NOT use `page.waitForTimeout()` — always wait for a condition.
355
+ - Do NOT use CSS selectors when `getByRole`/`getByLabel`/`getByTestId` work.
356
+ - Do NOT put assertions in Page Objects — only in test files.
357
+ - Do NOT share state between tests — each test must be independent.
358
+ - Do NOT hardcode URLs — use `baseURL` from config.
359
+ - Do NOT test third-party dependencies — mock external services with `page.route()`.
360
+ - Do NOT commit `.only` — use `forbidOnly: !!process.env.CI` to prevent this.
361
+ - Do NOT use `networkidle` as default `waitUntil` — it's slow and unreliable.
362
+ - Do NOT skip writing `data-testid` when no semantic locator is available.
363
+ - Do NOT use deprecated APIs — check Playwright changelog for removed features.
@@ -0,0 +1,114 @@
1
+ # GTM Handoff
2
+
3
+ Wing-3-specific prose for the three load-bearing senior-skill chains
4
+ in the GTM + Growth cluster. The mechanical contract — initiator →
5
+ delegated(input) → output-artifact, lint rules, worktree boundary —
6
+ lives in [`docs/contracts/cross-wing-handoff.md`](../contracts/cross-wing-handoff.md).
7
+ The cross-wing routing prose (when to hand off at all, L4 / C8
8
+ boundary, decision tree) lives in
9
+ [`docs/guidelines/cross-role-handoff.md`](cross-role-handoff.md).
10
+ This guideline covers **what crosses each Wing-3 boundary**, **what
11
+ the typed artifact looks like**, and **who owns the failure mode
12
+ when the chain breaks**.
13
+
14
+ Cycle / dangling / tier-mismatch enforcement is not duplicated here —
15
+ The `lint-handoffs` task (per cross-wing-handoff § 4) is the mechanical
16
+ gate.
17
+
18
+ ## Chain 1 — brand → channel
19
+
20
+ Five-step chain that turns a category point-of-view into a shipped
21
+ funnel of channel artifacts. CMO cluster owns every step.
22
+
23
+ ```
24
+ positioning-strategy (H1)
25
+ → messaging-architecture (H2)
26
+ → gtm-launch (H3)
27
+ → editorial-calendar (H4)
28
+ → content-funnel-design (H5)
29
+ ```
30
+
31
+ | Step | Hands off when | Typed artifact crossing the boundary | Failure-mode owner |
32
+ |---|---|---|---|
33
+ | H1 → H2 | Category framing + opposable-positioning audit locked. | `positioning-statement.md` — "we are X for Y, not Z" + point-of-view paragraph + opposable-positioning matrix. | H1 owns drift: if H2 cannot derive proofs from the statement, H1's POV is too soft. |
34
+ | H2 → H3 | Primary message + supporting proofs + audience-by-message matrix locked. | `messaging-stack.md` — primary message, three supporting proofs, audience-message matrix, narrative beats. | H2 owns drift: if H3's wave-by-wave narrative drifts, the proofs were the wrong shape. |
35
+ | H3 → H4 | Launch sequencing (alpha → beta → GA) + audience-wave logic locked; engineering-readiness signals attached. | `launch-plan.md` — wave list, narrative beats per wave, dependency map, go / no-go signals. | H3 owns drift: missing engineering-readiness signal = H3 shipped a plan that cannot land. |
36
+ | H4 → H5 | Cadence cognition (evergreen vs campaign vs reactive) + beat-mapping locked. | `editorial-calendar.md` — cadence per audience, beat-to-asset map, content-debt ledger. | H4 owns drift: a calendar that does not map beats to funnel stages cannot be designed against. |
37
+ | H5 self-closes | Funnel-stage-to-content-shape mapping + conversion-pathway design locked. | `content-funnel.md` — per-stage asset shapes, conversion pathways, leading indicators. | H5 owns drift: any stage without a content shape is a broken funnel hand-back to H4. |
38
+
39
+ H5 also **composes** `funnel-analysis` (H14, Chain 3) — the funnel
40
+ diagnostic feeds the conversion-pathway design without H5 absorbing
41
+ funnel-diagnostic cognition.
42
+
43
+ ## Chain 2 — discovery → pipeline
44
+
45
+ Five-step chain that turns customer research into a forecast-able
46
+ pipeline. Spans the Discovery → RevOps boundary inside Wing 3 and
47
+ hands the forecast call back to the Wing-4 finance-partner.
48
+
49
+ ```
50
+ customer-research (L1, shipped)
51
+ → ideal-customer-profile artifact
52
+ → pipeline-strategy (H8)
53
+ → deal-qualification-meddic (H9)
54
+ → forecast-accuracy (H10) → forecasting (Wing-4 O2)
55
+ ```
56
+
57
+ | Step | Hands off when | Typed artifact crossing the boundary | Failure-mode owner |
58
+ |---|---|---|---|
59
+ | `customer-research` → H8 | Switch-event interviews + JTBD framing complete; ICP synthesized from verbatims. | `icp.md` — segment definition, switch events, JTBD frame, anti-ICP. | `customer-research` owns drift: an ICP without anti-ICP boundaries leaks into H8 stage definitions. |
60
+ | H8 → H9 | Stage definitions + conversion-rate targets + coverage reasoning locked. | `pipeline-shape.md` — stage list, per-stage conversion target, coverage ratio, leak map. | H8 owns drift: stages H9 cannot disqualify against = H8 stage definitions were not orthogonal. |
61
+ | H9 → H10 | MEDDIC qualification rubric + disqualification heuristics locked. | `qualification-rubric.md` — MEDDIC fields per stage, disqualification triggers, champion-test. | H9 owns drift: forecasts that ignore disqualification heuristics inflate; H9 owns the rubric. |
62
+ | H10 → Wing-4 O2 | Forecast call constructed (commit / best-case / pipeline) against the `forecast-construction-shape` ADR. | `forecast-band.json` — commit value, best-case value, pipeline value, confidence band, retro signature. | **Interface contract owned by O2** (per cross-wing-handoff § 5 / W4 chain): if the ADR drifts, O2 breaks the contract, not H10. |
63
+
64
+ H10's parallel-development rule (starts after O2-interface ≥ 100 %,
65
+ runs in parallel with O2 implementation) is recorded in the roadmap
66
+ H10 entry and the contract — not duplicated here.
67
+
68
+ ## Chain 3 — funnel → retention
69
+
70
+ Six-step chain that turns funnel diagnostics into a retention and
71
+ expansion system. Growth PM cluster owns the first three steps,
72
+ Customer Success cluster owns the last three; the H15 → H12 boundary
73
+ crosses the cluster line inside Wing 3.
74
+
75
+ ```
76
+ funnel-analysis (H14)
77
+ → activation-design (H16)
78
+ → onboarding-design (H11)
79
+ → retention-loops (H15)
80
+ → churn-prevention (H12)
81
+ → expansion-playbook (H13)
82
+ ```
83
+
84
+ | Step | Hands off when | Typed artifact crossing the boundary | Failure-mode owner |
85
+ |---|---|---|---|
86
+ | H14 → H16 | Funnel-stage diagnostics + leaky-bucket-vs-growth-loop classification + leading-indicator selection locked. | `funnel-diagnostic.md` — per-stage drop-off, loop classification, leading indicators, cohort behavior. | H14 owns drift: an unselected leading indicator leaves H16 without an aha-moment signal. |
87
+ | H16 → H11 | Aha-moment definition + activation-event selection + activation-funnel construction locked. | `activation-spec.md` — aha-moment, activation event, activation-funnel stages, leading-vs-lagging indicators. | H16 owns drift: an activation event H11 cannot instrument is the wrong event. |
88
+ | H11 → H15 | Time-to-first-value reasoning + milestone design + friction audit locked. | `onboarding-flow.md` — milestone list, time-to-value target, friction-audit findings, drop-off diagnosis. | H11 owns drift: milestones without retention hooks force H15 to re-derive habit cognition. |
89
+ | H15 → H12 | Habit-formation reasoning + trigger-action-reward design + loop classification locked. | `retention-loop.md` — trigger / action / reward triple, loop classification, network-vs-single-user signal. | H15 owns drift: a loop that does not surface a health signal leaves H12 without an early warning. |
90
+ | H12 → H13 | Health-score signal design + churn-cause classification + early-warning loop locked. | `churn-signals.md` — health-score schema, churn-cause buckets, early-warning thresholds. | H12 owns drift: a health signal H13 cannot read against expansion triggers blocks NRR cognition. Also feeds **back to Wing-4 forecasting** per the cross-skill map. |
91
+ | H13 self-closes | Account-expansion patterns + upsell-vs-cross-sell reasoning + NRR cognition locked. | `expansion-playbook.md` — expansion patterns, trigger signals, NRR levers. | H13 owns drift: expansion triggers that ignore churn signals double-count growth. |
92
+
93
+ ## Reading the failure-mode column
94
+
95
+ The column answers one question: **when a downstream skill cannot
96
+ do its job, which upstream skill rewrites its artifact?** The owner
97
+ is the **upstream** skill, not the consumer — drift is always a
98
+ producer-side fix. This mirrors the W4 / W3 forecasting chain in
99
+ the contract (O2 owns the interface; H10 only consumes it).
100
+
101
+ ## See also
102
+
103
+ - [`docs/contracts/cross-wing-handoff.md`](../contracts/cross-wing-handoff.md)
104
+ — typed-handoff mechanical contract; the `lint-handoffs` task enforces
105
+ cycles, dangling references, and tier mismatches over the graph.
106
+ - [`docs/guidelines/cross-role-handoff.md`](cross-role-handoff.md)
107
+ — when to hand off at all, how to phrase the routing, L4 / C8
108
+ boundary.
109
+ - [`docs/contracts/context-spine.md`](../contracts/context-spine.md)
110
+ § Wing-3 slots — `channel-stage`, `funnel-stage`,
111
+ `customer-segment`; every chain step opts into ≥ 1 slot.
112
+ - `agents/roadmaps/` § Block H (archived after merge) — the
113
+ sixteen H-skills this guideline maps; pending skills appear here
114
+ as backtick slugs until shipped.
@@ -0,0 +1,141 @@
1
+ # Monorepo anti-patterns — the diff-detectable set
2
+
3
+ Task-graph mistakes a reviewer can catch by **reading a diff**, with no build
4
+ run and no repository checked out. That is the whole selection criterion: a
5
+ review judge sees a patch, not a running pipeline, so a rule it cannot evaluate
6
+ from the patch is not a rule it can enforce.
7
+
8
+ > **Own analysis, corroboration outstanding.** The six rows below describe
9
+ > publicly documented behaviour of Turborepo and Nx and are stated from that
10
+ > behaviour, not adopted from a third-party artefact — so no
11
+ > `provenance/borrows.jsonl` entry backs them, and none should be read into
12
+ > them. The roadmap that commissioned this file recorded specific source line
13
+ > numbers in an external MIT-licensed reference; that reference is **not
14
+ > reachable from this checkout** (it was never cloned here, and the consumed
15
+ > inbox copy carrying the real identifiers is gitignored), so those line numbers
16
+ > could not be re-read and are deliberately **not** reproduced as citations. A
17
+ > citation nobody in this tree can follow is worse than an honest own-analysis
18
+ > label. See § Not harvested for what that leaves open.
19
+
20
+ ## The six rows
21
+
22
+ ### 1. A root script that bypasses the task runner
23
+
24
+ ```jsonc
25
+ // root package.json — WRONG
26
+ { "scripts": { "build": "tsc -b packages/ui && vite build apps/web" } }
27
+ ```
28
+
29
+ The runner exists to know the graph, cache the results, and parallelise. A root
30
+ script that invokes the underlying tools directly gets none of that, and — worse
31
+ — becomes a second, divergent definition of what "build" means. Route through
32
+ the runner: `"build": "turbo run build"`.
33
+
34
+ **In a diff:** a root `scripts` entry naming a compiler, bundler, or test runner
35
+ directly instead of `turbo run` / `nx run-many`.
36
+
37
+ ### 2. `prebuild` that builds a sibling
38
+
39
+ ```jsonc
40
+ // packages/ui/package.json — WRONG
41
+ { "scripts": { "prebuild": "cd ../tokens && npm run build" } }
42
+ ```
43
+
44
+ npm lifecycle hooks are invisible to the task runner. The dependency is real but
45
+ undeclared, so the runner may build the two in the wrong order, in parallel, or
46
+ skip the sibling entirely on a cache hit. Express it as a dependency
47
+ (`dependsOn: ["^build"]` plus a real `workspace:` dependency) so the graph
48
+ carries it.
49
+
50
+ **In a diff:** a `pre*` / `post*` script containing `cd ..`, a sibling path, or
51
+ another workspace's name.
52
+
53
+ ### 3. `&&`-chained runner tasks
54
+
55
+ ```jsonc
56
+ { "scripts": { "ci": "turbo run lint && turbo run test && turbo run build" } }
57
+ ```
58
+
59
+ Three sequential invocations, each with its own graph walk, forcing full
60
+ serialisation and discarding the parallelism the runner would have found. It
61
+ also makes the cache less effective, because each invocation is scoped to one
62
+ task. Pass the tasks together: `turbo run lint test build`.
63
+
64
+ **In a diff:** two or more `turbo run` / `nx run-many` invocations joined by
65
+ `&&` in one script.
66
+
67
+ ### 4. Shared code inside `apps/`
68
+
69
+ ```
70
+ apps/web/src/shared/format-currency.ts ← imported by apps/admin
71
+ ```
72
+
73
+ `apps/*` are leaves: deployable things nothing else depends on. The moment a
74
+ second app imports from the first, the two are coupled with no declared edge,
75
+ the affected-set calculation is wrong, and neither app can be built or released
76
+ alone. Shared code belongs in a `packages/*` workspace with a real dependency
77
+ declared ([`workspace-link`](../skills/workspace-link/SKILL.md)).
78
+
79
+ **In a diff:** an import whose specifier reaches into `apps/<other>/`, or a new
80
+ `shared/` `common/` `utils/` directory added under `apps/*`.
81
+
82
+ ### 5. `../` traversal in a task's `inputs`
83
+
84
+ ```jsonc
85
+ // turbo.json — WRONG
86
+ { "tasks": { "build": { "inputs": ["src/**", "../tokens/src/**"] } } }
87
+ ```
88
+
89
+ `inputs` are scoped to the workspace on purpose: they define that task's cache
90
+ key. Reaching outside it makes the key depend on files the runner does not
91
+ consider part of this task, which produces both false cache hits (the sibling
92
+ changed in a way the key did not capture) and false misses. The sibling's output
93
+ should be an input *because it is a declared dependency*, not because a glob
94
+ walked up the tree.
95
+
96
+ **In a diff:** a `../` segment inside `inputs`, `outputs`, or a task-scoped glob
97
+ in `turbo.json`.
98
+
99
+ ### 6. A file-producing task with no `outputs`
100
+
101
+ ```jsonc
102
+ { "tasks": { "build": { "dependsOn": ["^build"] } } } // writes dist/, declares nothing
103
+ ```
104
+
105
+ With no `outputs`, the runner caches the task's *logs* and not its artefacts. A
106
+ cache hit then restores nothing, so the next task in the chain runs against a
107
+ missing or stale `dist/` — and the failure is intermittent, because it only
108
+ appears on a hit. Declare what the task writes: `"outputs": ["dist/**"]`.
109
+
110
+ **In a diff:** a task whose command runs a compiler or bundler while its config
111
+ block carries no `outputs` key.
112
+
113
+ ## Not harvested
114
+
115
+ The external reference this file was commissioned from carries a substantially
116
+ longer anti-pattern list. The rows above are the ones whose violation is visible
117
+ in a patch; the classes below were deliberately left out, each for a reason that
118
+ is a property of the *check*, not of the advice:
119
+
120
+ | Class not harvested | Why it cannot be a diff rule |
121
+ |---|---|
122
+ | Cache hit-rate and timing regressions | Needs two runs to compare; a diff has no runtime. |
123
+ | Task-graph cycles | Requires resolving the whole graph, not reading one file. |
124
+ | Over-broad `inputs` causing cache misses | "Too broad" is a judgement against observed hit rates. |
125
+ | Remote-cache and CI configuration mistakes | Lives in CI/runner settings, not in the reviewed diff. |
126
+ | Dependency-order races that only appear under `--parallel` | Needs a running build to observe. |
127
+ | Environment-variable declarations missing from the cache key | Detectable only once a build produces a wrong artefact. |
128
+
129
+ **Honest limit on this table:** it enumerates *classes* reasoned about from what
130
+ such a list contains, not a row-by-row disposition of the source — which, per
131
+ the note above, could not be opened here. So it does not establish that every
132
+ source row is accounted for. Closing that needs the reference reachable in a
133
+ checkout; until then this section states what was decided and on what basis,
134
+ rather than implying a completeness it does not have.
135
+
136
+ ## See also
137
+
138
+ - [`monorepo-workspace`](../skills/monorepo-workspace/SKILL.md) — read the graph and the task list before judging either.
139
+ - [`workspace-link`](../skills/workspace-link/SKILL.md) — the `workspace:` declaration rows 2 and 4 both come back to.
140
+ - [`blast-radius-analyzer`](../skills/blast-radius-analyzer/SKILL.md) — § Monorepo, for the affected set of an edit.
141
+ - [`design-antipatterns.md`](design-antipatterns.md) — sibling diff-detectable catalog for a different surface.