@nurix/etna 0.19.41 → 0.19.43

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 (360) hide show
  1. package/bin/etna.js +14 -0
  2. package/data/harness-index.json +5 -1
  3. package/data/harnesses/apollo/.prettierignore +29 -0
  4. package/data/harnesses/apollo/.prettierrc.json +3 -0
  5. package/data/harnesses/apollo/.vscode/settings.json +19 -0
  6. package/data/harnesses/apollo/CLAUDE.md +162 -0
  7. package/data/harnesses/apollo/agents/brainstorm.md +144 -0
  8. package/data/harnesses/apollo/agents/change-review.md +251 -0
  9. package/data/harnesses/apollo/agents/lld-mode.md +56 -0
  10. package/data/harnesses/apollo/agents/maintenance.md +229 -0
  11. package/data/harnesses/apollo/agents/performance-review.md +223 -0
  12. package/data/harnesses/apollo/agents/retro.md +46 -0
  13. package/data/harnesses/apollo/codex/agents/brainstorm.toml +142 -0
  14. package/data/harnesses/apollo/codex/agents/change-review.toml +249 -0
  15. package/data/harnesses/apollo/codex/agents/lld-mode.toml +52 -0
  16. package/data/harnesses/apollo/codex/agents/maintenance.toml +228 -0
  17. package/data/harnesses/apollo/codex/agents/performance-review.toml +222 -0
  18. package/data/harnesses/apollo/codex/agents/retro.toml +45 -0
  19. package/data/harnesses/apollo/docs/README.md +28 -0
  20. package/data/harnesses/apollo/docs/history/CHANGELOG.md +26 -0
  21. package/data/harnesses/apollo/docs/history/backlog.md +19 -0
  22. package/data/harnesses/apollo/docs/memory/main.md +15 -0
  23. package/data/harnesses/apollo/docs/structure.md +54 -0
  24. package/data/harnesses/apollo/harness.json +18 -0
  25. package/data/harnesses/apollo/hooks/generate-ownership-index.mjs +148 -0
  26. package/data/harnesses/apollo/hooks/hooks.json +16 -0
  27. package/data/harnesses/apollo/rules/changelog.md +19 -0
  28. package/data/harnesses/apollo/rules/database.md +123 -0
  29. package/data/harnesses/apollo/rules/express.md +33 -0
  30. package/data/harnesses/apollo/rules/frontend.md +32 -0
  31. package/data/harnesses/apollo/rules/general.md +62 -0
  32. package/data/harnesses/apollo/rules/nomenclature.md +34 -0
  33. package/data/harnesses/apollo/rules/pnpm.md +57 -0
  34. package/data/harnesses/apollo/rules/testing.md +23 -0
  35. package/data/harnesses/apollo/rules/verification.md +67 -0
  36. package/data/harnesses/apollo/skills/boundary/SKILL.md +69 -0
  37. package/data/harnesses/apollo/skills/boundary/references/index.md +16 -0
  38. package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +99 -0
  39. package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +81 -0
  40. package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +93 -0
  41. package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +93 -0
  42. package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +93 -0
  43. package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +93 -0
  44. package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +55 -0
  45. package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +93 -0
  46. package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +87 -0
  47. package/data/harnesses/apollo/skills/brainstorm/README.md +56 -0
  48. package/data/harnesses/apollo/skills/brainstorm/SKILL.md +173 -0
  49. package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +98 -0
  50. package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +86 -0
  51. package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +186 -0
  52. package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +460 -0
  53. package/data/harnesses/apollo/skills/design/SKILL.md +100 -0
  54. package/data/harnesses/apollo/skills/design/components/charts.md +76 -0
  55. package/data/harnesses/apollo/skills/design/components/collections.md +132 -0
  56. package/data/harnesses/apollo/skills/design/components/feedback.md +47 -0
  57. package/data/harnesses/apollo/skills/design/components/hooks.md +35 -0
  58. package/data/harnesses/apollo/skills/design/components/index.md +143 -0
  59. package/data/harnesses/apollo/skills/design/components/inputs.md +327 -0
  60. package/data/harnesses/apollo/skills/design/components/layout.md +52 -0
  61. package/data/harnesses/apollo/skills/design/components/media.md +66 -0
  62. package/data/harnesses/apollo/skills/design/components/motion.md +82 -0
  63. package/data/harnesses/apollo/skills/design/components/navigation.md +29 -0
  64. package/data/harnesses/apollo/skills/design/components/overlays.md +72 -0
  65. package/data/harnesses/apollo/skills/design/components/setup.md +40 -0
  66. package/data/harnesses/apollo/skills/design/components/typography.md +46 -0
  67. package/data/harnesses/apollo/skills/design/components/utils.md +37 -0
  68. package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +38 -0
  69. package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +38 -0
  70. package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +38 -0
  71. package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +38 -0
  72. package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +38 -0
  73. package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +38 -0
  74. package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +38 -0
  75. package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +33 -0
  76. package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
  77. package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
  78. package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
  79. package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
  80. package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
  81. package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
  82. package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
  83. package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
  84. package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
  85. package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
  86. package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
  87. package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
  88. package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
  89. package/data/harnesses/apollo/skills/design/data/charts/census.csv +58 -0
  90. package/data/harnesses/apollo/skills/design/data/checklists/browse.md +21 -0
  91. package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +20 -0
  92. package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +21 -0
  93. package/data/harnesses/apollo/skills/design/data/checklists/grid.md +21 -0
  94. package/data/harnesses/apollo/skills/design/data/checklists/queue.md +21 -0
  95. package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +21 -0
  96. package/data/harnesses/apollo/skills/design/data/checklists/settings.md +21 -0
  97. package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +68 -0
  98. package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +63 -0
  99. package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +60 -0
  100. package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +78 -0
  101. package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +62 -0
  102. package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +65 -0
  103. package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +90 -0
  104. package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +91 -0
  105. package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +90 -0
  106. package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +90 -0
  107. package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +90 -0
  108. package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +90 -0
  109. package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +90 -0
  110. package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +90 -0
  111. package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +90 -0
  112. package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
  113. package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +90 -0
  114. package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +90 -0
  115. package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +90 -0
  116. package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
  117. package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +90 -0
  118. package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +89 -0
  119. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +15 -0
  120. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +87 -0
  121. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +25 -0
  122. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
  123. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
  124. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
  125. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
  126. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
  127. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
  128. package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
  129. package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
  130. package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
  131. package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
  132. package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
  133. package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
  134. package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
  135. package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
  136. package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
  137. package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
  138. package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
  139. package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
  140. package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
  141. package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
  142. package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
  143. package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
  144. package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
  145. package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
  146. package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +16 -0
  147. package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
  148. package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +16 -0
  149. package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +18 -0
  150. package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +16 -0
  151. package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
  152. package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +18 -0
  153. package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +16 -0
  154. package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
  155. package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +16 -0
  156. package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
  157. package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +16 -0
  158. package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +18 -0
  159. package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +16 -0
  160. package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
  161. package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +16 -0
  162. package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +16 -0
  163. package/data/harnesses/apollo/skills/design/data/iconography.md +199 -0
  164. package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +18 -0
  165. package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +18 -0
  166. package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
  167. package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +18 -0
  168. package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +18 -0
  169. package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +18 -0
  170. package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +18 -0
  171. package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +18 -0
  172. package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +18 -0
  173. package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +18 -0
  174. package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +18 -0
  175. package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +18 -0
  176. package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +18 -0
  177. package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +18 -0
  178. package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +18 -0
  179. package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +18 -0
  180. package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +18 -0
  181. package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
  182. package/data/harnesses/apollo/skills/design/data/tells.csv +34 -0
  183. package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +17 -0
  184. package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +17 -0
  185. package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +17 -0
  186. package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
  187. package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +17 -0
  188. package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +17 -0
  189. package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
  190. package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
  191. package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
  192. package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +17 -0
  193. package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
  194. package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +17 -0
  195. package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +17 -0
  196. package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
  197. package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +17 -0
  198. package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +17 -0
  199. package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
  200. package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +17 -0
  201. package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +29 -0
  202. package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +29 -0
  203. package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +29 -0
  204. package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +29 -0
  205. package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +29 -0
  206. package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +29 -0
  207. package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +179 -0
  208. package/data/harnesses/apollo/skills/design/design-md/index.csv +67 -0
  209. package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +207 -0
  210. package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +205 -0
  211. package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +203 -0
  212. package/data/harnesses/apollo/skills/design/design-md/library/apple.md +206 -0
  213. package/data/harnesses/apollo/skills/design/design-md/library/binance.md +210 -0
  214. package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +210 -0
  215. package/data/harnesses/apollo/skills/design/design-md/library/cal.md +209 -0
  216. package/data/harnesses/apollo/skills/design/design-md/library/clay.md +204 -0
  217. package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +205 -0
  218. package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +205 -0
  219. package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +198 -0
  220. package/data/harnesses/apollo/skills/design/design-md/library/composio.md +198 -0
  221. package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +197 -0
  222. package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +199 -0
  223. package/data/harnesses/apollo/skills/design/design-md/library/expo.md +200 -0
  224. package/data/harnesses/apollo/skills/design/design-md/library/figma.md +199 -0
  225. package/data/harnesses/apollo/skills/design/design-md/library/framer.md +202 -0
  226. package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +205 -0
  227. package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +205 -0
  228. package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +204 -0
  229. package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +200 -0
  230. package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +198 -0
  231. package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +199 -0
  232. package/data/harnesses/apollo/skills/design/design-md/library/meta.md +204 -0
  233. package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +204 -0
  234. package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +210 -0
  235. package/data/harnesses/apollo/skills/design/design-md/library/miro.md +209 -0
  236. package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +201 -0
  237. package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +201 -0
  238. package/data/harnesses/apollo/skills/design/design-md/library/notion.md +204 -0
  239. package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +215 -0
  240. package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +213 -0
  241. package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +216 -0
  242. package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +218 -0
  243. package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +214 -0
  244. package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +202 -0
  245. package/data/harnesses/apollo/skills/design/design-md/library/resend.md +203 -0
  246. package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +203 -0
  247. package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +203 -0
  248. package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +200 -0
  249. package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +201 -0
  250. package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +202 -0
  251. package/data/harnesses/apollo/skills/design/design-md/library/slack.md +202 -0
  252. package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +206 -0
  253. package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +206 -0
  254. package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +196 -0
  255. package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +196 -0
  256. package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +194 -0
  257. package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +198 -0
  258. package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +199 -0
  259. package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +193 -0
  260. package/data/harnesses/apollo/skills/design/design-md/library/uber.md +195 -0
  261. package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +195 -0
  262. package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +197 -0
  263. package/data/harnesses/apollo/skills/design/design-md/library/warp.md +196 -0
  264. package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +197 -0
  265. package/data/harnesses/apollo/skills/design/design-md/library/wired.md +197 -0
  266. package/data/harnesses/apollo/skills/design/design-md/library/wise.md +198 -0
  267. package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +199 -0
  268. package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +198 -0
  269. package/data/harnesses/apollo/skills/design/design-md/nurix.md +214 -0
  270. package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +184 -0
  271. package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +216 -0
  272. package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +211 -0
  273. package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +212 -0
  274. package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +216 -0
  275. package/data/harnesses/apollo/skills/design/references/compose.md +23 -0
  276. package/data/harnesses/apollo/skills/design/references/content.md +28 -0
  277. package/data/harnesses/apollo/skills/design/references/emission.md +21 -0
  278. package/data/harnesses/apollo/skills/design/references/existing-apps.md +27 -0
  279. package/data/harnesses/apollo/skills/design/references/intake.md +36 -0
  280. package/data/harnesses/apollo/skills/design/references/object-pass.md +24 -0
  281. package/data/harnesses/apollo/skills/design/references/ship-gate.md +29 -0
  282. package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +195 -0
  283. package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +49 -0
  284. package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
  285. package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +44 -0
  286. package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +46 -0
  287. package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +42 -0
  288. package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +42 -0
  289. package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +46 -0
  290. package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +48 -0
  291. package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
  292. package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +42 -0
  293. package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +46 -0
  294. package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +41 -0
  295. package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +48 -0
  296. package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +45 -0
  297. package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +40 -0
  298. package/data/harnesses/apollo/skills/design/scripts/README-validator.md +27 -0
  299. package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +596 -0
  300. package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +1198 -0
  301. package/data/harnesses/apollo/skills/documentation/SKILL.md +132 -0
  302. package/data/harnesses/apollo/skills/documentation/references/examples.md +279 -0
  303. package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +44 -0
  304. package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +49 -0
  305. package/data/harnesses/apollo/skills/documentation/references/style-guide.md +351 -0
  306. package/data/harnesses/apollo/skills/documentation/references/untemplated.md +38 -0
  307. package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +140 -0
  308. package/data/harnesses/apollo/skills/documentation/templates/Readme.md +32 -0
  309. package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +20 -0
  310. package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +121 -0
  311. package/data/harnesses/apollo/skills/documentation/templates/backlog.md +33 -0
  312. package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +79 -0
  313. package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +57 -0
  314. package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +41 -0
  315. package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +72 -0
  316. package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +30 -0
  317. package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +15 -0
  318. package/data/harnesses/apollo/skills/documentation/templates/feature.md +149 -0
  319. package/data/harnesses/apollo/skills/documentation/templates/glossary.md +11 -0
  320. package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +25 -0
  321. package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +34 -0
  322. package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +11 -0
  323. package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +36 -0
  324. package/data/harnesses/apollo/skills/documentation/templates/plan.md +71 -0
  325. package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +37 -0
  326. package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +104 -0
  327. package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +27 -0
  328. package/data/harnesses/apollo/skills/documentation/templates/structure.md +65 -0
  329. package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +32 -0
  330. package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +29 -0
  331. package/data/harnesses/apollo/skills/test-plan/SKILL.md +83 -0
  332. package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +451 -0
  333. package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +214 -0
  334. package/data/harnesses/code/agents/maintenance.md +2 -2
  335. package/data/harnesses/code/codex/agents/maintenance.toml +2 -2
  336. package/data/harnesses/code/harness.json +3 -2
  337. package/data/harnesses/delivery/agents/maintenance.md +2 -2
  338. package/data/harnesses/delivery/codex/agents/maintenance.toml +2 -2
  339. package/data/harnesses/delivery/harness.json +3 -2
  340. package/data/harnesses/discover/codex/agents/api.toml +24 -0
  341. package/data/harnesses/discover/codex/agents/codebase.toml +24 -0
  342. package/data/harnesses/discover/codex/agents/community.toml +24 -0
  343. package/data/harnesses/discover/codex/agents/deployed-client-bundle.toml +24 -0
  344. package/data/harnesses/discover/codex/agents/distribution-artifacts.toml +24 -0
  345. package/data/harnesses/discover/codex/agents/docs.toml +27 -1
  346. package/data/harnesses/discover/codex/agents/infra-backend-fingerprint.toml +24 -0
  347. package/data/harnesses/discover/codex/agents/packages.toml +24 -0
  348. package/data/harnesses/discover/codex/agents/session.toml +40 -0
  349. package/data/harnesses/discover/codex/agents/website.toml +24 -0
  350. package/data/harnesses/discover/codex/agents/wire-capture.toml +40 -0
  351. package/data/harnesses/discover/harness.json +3 -2
  352. package/data/harnesses/discover/rules/calibration.md +219 -0
  353. package/data/harnesses/discover/rules/tooling.md +205 -0
  354. package/data/harnesses/discussion/harness.json +1 -0
  355. package/data/harnesses/etna/agents/maintenance.md +2 -2
  356. package/data/harnesses/etna/codex/agents/maintenance.toml +2 -2
  357. package/data/harnesses/etna/harness.json +3 -2
  358. package/data/harnesses/hr/harness.json +1 -0
  359. package/data/harnesses/kb-agi/harness.json +1 -0
  360. package/package.json +2 -2
@@ -0,0 +1,219 @@
1
+ # Calibration Reference — Blind Re-runs · Disposition · The Fleet Ledger
2
+
3
+ The reference for the harness's **only external signal**. Everything else in this harness is self-assessment:
4
+ collectors grade their own `confidence` and `completeness_pct`, Evaluation weights those self-grades, and
5
+ Mode 5 scores the result against a checklist the same system authored. That loop can converge on a corpus
6
+ that is confidently, well-provenanced, and wrong.
7
+
8
+ **Calibration is the one procedure that can tell you whether any of it is true.** It re-derives claims a
9
+ prior run published, blind, and records what survived.
10
+
11
+ > **The measured position, as of 2026-07-28.** One target has ever been re-run (`emergent`, 2026-06-25 →
12
+ > 2026-07-28). Of 16 claims re-tested: **7 refuted, 4 corrected, 5 confirmed** — a 44% flat-falsification
13
+ > rate — and **4 of the 7 refutations came from lanes the prior run had graded `confidence: high`.** The
14
+ > prior run had self-scored **88/100 "strong"** and `stopped_on: converged`.
15
+ >
16
+ > That is **n=1**. It is the entire empirical basis of this harness. Every rule in `.claude/rules/` is
17
+ > currently a hypothesis with n=0 on any target it did not come from. The purpose of this file is to make
18
+ > n grow.
19
+
20
+ ---
21
+
22
+ ## Two tiers — pick the one that will actually happen
23
+
24
+ A metric too expensive to run leaves `n` at 1 forever. The cheap tier is the important one.
25
+
26
+ | Tier | Cadence | Cost | What it measures |
27
+ | --- | --- | --- | --- |
28
+ | **A — Claim spot-check** | monthly | ~1 session, no full ingestion | the refutation rate, and whether `confidence` tracks truth |
29
+ | **B — Full blind re-run** | quarterly, or when a rule set changes materially | a complete run | everything Tier A does, plus coverage drift and whether new rules changed behaviour |
30
+
31
+ **Tier A is the default. Do not skip it waiting for capacity to do Tier B** — a monthly spot-check of 15–20
32
+ claims across one target produces the regression that matters, and produces it twelve times a year.
33
+
34
+ ---
35
+
36
+ ## Selection — rotate, never choose
37
+
38
+ **The target is selected by rotation, not by judgment.** Take the least-recently-calibrated target in the
39
+ corpus root; break ties by oldest `captured_at`. Record the selection rule alongside the result.
40
+
41
+ A human (or a run) choosing which target to re-check will choose the one it feels good about. That single
42
+ substitution destroys the metric, because the sample stops being representative of the fleet and starts
43
+ being representative of the harness's confidence — which is the very thing under test.
44
+
45
+ ---
46
+
47
+ ## THE BLIND RULE (this is what makes it evidence)
48
+
49
+ **Capture first. Read the prior corpus only after your own observation is written down.**
50
+
51
+ 1. Select the target. **Do not open its corpus.**
52
+ 2. Draw the claim sample (below) — a list of *questions*, not answers. Someone or something other than the
53
+ re-deriving agent extracts the questions, or the questions are extracted mechanically from claim
54
+ anchors, so the sample carries no prior conclusions.
55
+ 3. **Re-derive each claim from the live product**, from scratch, recording what you observe and the method.
56
+ 4. **Only then** open the prior corpus and diff.
57
+
58
+ > **This deliberately overrides `discovery.md` Step 00 for calibration runs.** Step 00 tells a run to find a
59
+ > prior corpus, restore it, and reconcile against it — correct for a normal re-run, where the prior corpus
60
+ > is a genuine corroboration lane and re-deriving everything from zero is waste. **It is wrong here.** A run
61
+ > that reads the prior claim first will anchor on it: it will look for confirmation, find it, and report a
62
+ > confirmation rate that measures its own suggestibility. Anchoring is the specific failure this protocol
63
+ > exists to avoid, so for a calibration run Step 00 is deferred until after step 3, and the run records
64
+ > `blind: true`.
65
+ >
66
+ > If a run cannot honestly attest that it re-derived before reading, it must record `blind: false` — and
67
+ > the result is then a **consistency check, not a calibration**, and does not enter the ledger's refutation
68
+ > rate.
69
+
70
+ **Sampling the claims.** 15–20 per target, drawn to make the regression computable, not to be flattering:
71
+
72
+ - **Stratify by the prior run's stated `confidence`** — roughly equal numbers of `high`, `medium`, `low`.
73
+ Without this the regression cannot be computed, and the regression is the point.
74
+ - **Include the load-bearing ones** — claims a README headline rests on, and claims a reader would act on
75
+ (pricing, limits, guarantees, auth model, what the product can and cannot do).
76
+ - **Include at least 3 negative claims** ("no public SDK", "no realtime layer", "not supported"). Negatives
77
+ are the harness's demonstrated weak spot: **5 of the 7 refutations in the one data point were negatives.**
78
+ - **Exclude** anything whose truth cannot change and cannot be re-checked (a historical funding round).
79
+
80
+ ---
81
+
82
+ ## Disposition — five values, and the fifth is the one the old schema lacked
83
+
84
+ Every sampled claim resolves to exactly one:
85
+
86
+ | Disposition | Meaning | What it says about the harness |
87
+ | --- | --- | --- |
88
+ | **confirmed** | independently re-derived, same conclusion | the method worked |
89
+ | **corrected** | right direction, wrong detail (a count, a version, a name) | the method worked; the reading was imprecise |
90
+ | **refuted** | the claim was **wrong when it was made** | **the method failed — this is the signal** |
91
+ | **stale** | the claim was **true when made; the product changed** | the method worked; the corpus has a shelf life |
92
+ | **unverifiable** | cannot be re-checked now (surface gone, plan changed, gated) | no signal either way; excluded from the rate |
93
+
94
+ > **`refuted` and `stale` are the distinction the original artifact had no slot for, and they mean opposite
95
+ > things.** A high `refuted` rate means *the instrument is unreliable* and the rules need work. A high
96
+ > `stale` rate means *the instrument is fine and the corpus decays* — which calls for shorter shelf-lives
97
+ > and `volatility` tagging, not methodology changes. Conflating them makes the harness fix the wrong
98
+ > problem. When you cannot tell which it is — no dated evidence either way — record **`refuted`**. The
99
+ > conservative reading is the one that keeps the harness honest about itself.
100
+ >
101
+ > (Origin: `emergent/00-prior-run-reconciliation.md` — a genuinely good artifact whose section A had to be
102
+ > titled *"REFUTED (prior claim was wrong, not merely stale)"* precisely because the schema gave it nowhere
103
+ > else to put the distinction.)
104
+
105
+ **The refutation rate** = `refuted ÷ (confirmed + corrected + refuted + stale)`. `unverifiable` is excluded
106
+ from the denominator, and its count is reported so a shrinking sample is visible.
107
+
108
+ ---
109
+
110
+ ## The regression — the actual question
111
+
112
+ For each calibration, record the disposition **against the prior run's stated confidence for that claim**:
113
+
114
+ | prior confidence | n | confirmed | corrected | refuted | stale | refutation rate |
115
+ | --- | --- | --- | --- | --- | --- | --- |
116
+ | high | | | | | | |
117
+ | medium | | | | | | |
118
+ | low | | | | | | |
119
+
120
+ **If `high` claims are refuted at a similar rate to `low` claims, the `confidence` field carries no signal
121
+ and `ingestion.md` §3's method→confidence table is decorative.** That is the single most consequential thing
122
+ this harness could learn about itself, and it is unknowable without this table.
123
+
124
+ Also record refutation rate **by `method`** once n is large enough — that tells you which of the 17 methods
125
+ in §3 are over-graded, which is directly actionable (a method's band gets lowered).
126
+
127
+ ---
128
+
129
+ ## Artifacts
130
+
131
+ ### Per calibration — `research/<target>/00-prior-run-reconciliation.md`
132
+
133
+ Formalizes the shape `emergent` invented. **This file is part of the output contract** whenever a prior
134
+ corpus exists.
135
+
136
+ ```markdown
137
+ ---
138
+ target: <slug>
139
+ reconciled_at: <YYYY-MM-DD>
140
+ prior_run_date: <YYYY-MM-DD>
141
+ prior_run_commit: <sha>
142
+ prior_run_score: <n>
143
+ tier: A | B # spot-check or full blind re-run
144
+ blind: true | false # false ⇒ consistency check only, excluded from the rate
145
+ selection_rule: rotation # or: named-by-user (record it either way)
146
+ sampled: <n>
147
+ confirmed: <n>
148
+ corrected: <n>
149
+ refuted: <n>
150
+ stale: <n>
151
+ unverifiable: <n>
152
+ refutation_rate: <0-100>
153
+ by_confidence: # the regression — REQUIRED
154
+ high: { n: <n>, refuted: <n> }
155
+ medium: { n: <n>, refuted: <n> }
156
+ low: { n: <n>, refuted: <n> }
157
+ ---
158
+
159
+ ## A. REFUTED — wrong when made (claim · what was observed · lane that refuted it · prior confidence)
160
+ ## B. STALE — true when made, changed (claim · what changed · evidence of the change being NEW)
161
+ ## C. CORRECTED — right, imprecise
162
+ ## D. CONFIRMED — independently re-derived
163
+ ## E. UNVERIFIABLE — and why
164
+ ## F. What this says about the METHOD (which lanes/methods produced the refutations, and whether a
165
+ §3 confidence band should be lowered)
166
+ ```
167
+
168
+ ### Fleet-level — `research/_calibration/ledger.md`
169
+
170
+ **The metric itself.** One row per calibration, accumulating across targets and time. This is the file to
171
+ read when asking "does this harness work?" It is never rewritten, only appended to.
172
+
173
+ ---
174
+
175
+ ## What a result CHANGES (otherwise this is just bookkeeping)
176
+
177
+ A calibration that produces a number and no action is theatre. Each outcome routes:
178
+
179
+ | Finding | Action |
180
+ | --- | --- |
181
+ | A **method** shows a high refutation rate | lower its band in `ingestion.md` §3, and record the calibration as the origin |
182
+ | **Negative claims** refute disproportionately | tighten the absence rules (`ingestion.md` §7 rule 10, `discovery.md` Part B) — the `blind_to:` direction |
183
+ | `high` refutes ≈ as often as `low` | **the confidence field is not carrying signal** — this is a structural finding about the harness, and it goes to the user, not into a rule tweak |
184
+ | A **rule added after the prior run** would have prevented a refutation | evidence the improvement loop works — record it, it is the only such evidence that exists |
185
+ | A refutation recurs **after** a rule was added to prevent it | evidence a rule did **not** change behaviour; escalate to the user rather than adding another rule |
186
+ | High **stale** rate | shorten shelf-life expectations and tag volatile claims; **not** a methodology problem |
187
+
188
+ ---
189
+
190
+ ## How to run one (Tier A, the monthly default)
191
+
192
+ 1. **Select** by rotation from `research/_calibration/ledger.md`. Record the target and the rule.
193
+ 2. **Extract the sample** mechanically — pull claim anchors from the target's `evaluation/*.md`, stratify by
194
+ the cited confidence, and write them as **questions with the answers stripped**.
195
+ 3. **Re-derive blind.** Do not open the corpus. Use whatever lanes the access vector allows; record method
196
+ and observation per claim.
197
+ 4. **Diff and disposition** each claim into the five values.
198
+ 5. **Write** `00-prior-run-reconciliation.md` (append a new dated section if one already exists — never
199
+ overwrite a prior calibration).
200
+ 6. **Append one row** to the fleet ledger, and update its running totals.
201
+ 7. **Route** every finding through the table above. Anything that becomes a rule change goes through the
202
+ normal Mode-5 approval gate.
203
+
204
+ **Cost/state discipline is unchanged:** a calibration is read-only unless the user authorizes otherwise; a
205
+ claim that can only be re-derived by spending money or mutating state is recorded `unverifiable` with the
206
+ reason, never quietly exercised.
207
+
208
+ ---
209
+
210
+ ## How the harness uses this reference
211
+
212
+ Calibration is a **cross-run process**, not a mode of a single run — nothing in Modes 1–5 triggers it, and it
213
+ must not be folded into them (a run cannot calibrate itself; that is the circularity it exists to break).
214
+ Mode 5 reads the fleet ledger as *context* when weighing a proposal — a rule contradicted by calibration
215
+ data should not be promoted — but Mode 5 never writes to it.
216
+
217
+ > **Do not attach calibration to the Mode-5 score.** The moment `refutation_rate` becomes a rubric input,
218
+ > the run acquires an interest in the number, and the one uncorrupted signal in the system is gone. It
219
+ > measures the **harness**, not the run. Publish it; never grade with it.
@@ -0,0 +1,205 @@
1
+ # Tooling Reference — Host Capability · Tiers · The Bright Line
2
+
3
+ The reference for **Step 0** (`discover` harness, run once per corpus folder before Mode 1). Capture depth
4
+ is bounded by host tooling most machines lack. This file carries the **tier lists** (what to recommend),
5
+ the **ethics classification** (clean · gated · avoid), the **per-dimension gap map** (what a bare host
6
+ cannot do), and the **install caveats** that have actually bitten.
7
+
8
+ **Nothing here is ever installed automatically.** The harness detects what is present, recommends only what
9
+ is missing, and records the result in `.claude/discover-tooling.json` so it never re-prompts in the same
10
+ folder. The harness recommends; the user decides. A user who declines proceeds to Mode 1 on whatever is
11
+ present — a missing capability is re-surfaced at the Mode 2 capability-gap checkpoint (`ingestion.md` §8),
12
+ never silently degraded.
13
+
14
+ A host almost always arrives strong on languages and package managers (node, pnpm, python, uv, cargo, gh,
15
+ jq, ripgrep) and **bare on capture/analysis tooling**. That gap is the difference between a shallow capture
16
+ and a deep one.
17
+
18
+ ---
19
+
20
+ ## The three classes (this is an ethics classification, not a convenience one)
21
+
22
+ | Class | Meaning | Rule |
23
+ | --- | --- | --- |
24
+ | **clean** | passive / local-only; always in-bounds | recommend freely, offer the one-paste block |
25
+ | **gated** | in-bounds **only** first-party / user-owned / opt-in — the user installs the CA, routes *their own* client, owns the keys | surface the command, **never run it for the user** |
26
+ | **avoid** | crosses the harness bright line (active scanning, exploitation, third-party interception) | never recommend; listed so it is not added by reflex |
27
+
28
+ The harness is for **spec-writing / integration / competitive analysis** — passive or first-party only,
29
+ respecting TOS and robots (`ingestion.md` §7). No tool changes that; the gated ones simply need the user in
30
+ the loop, exactly as `session` Pass-2 and `wire-capture` rung 3 do.
31
+
32
+ ---
33
+
34
+ ## Why this file matters more since the §5 rewrite
35
+
36
+ `ingestion.md` §5 now requires **verbatim dumping** — the artifact lands on disk whole, and the digest is
37
+ written *beside* it, never *instead* of it. The obvious objection is "a 6 MB spec is unusable." **These
38
+ tools are the answer to that objection.** They are what make a verbatim corpus queryable, which is what
39
+ makes dumping-not-digesting practical:
40
+
41
+ | Instead of digesting… | Dump verbatim, then |
42
+ | --- | --- |
43
+ | a 6 MB OpenAPI spec → a hand-typed endpoint table | `curl -o raw/spec.json` → **spectral** to catalog, **oasdiff** to diff, **gron** to grep |
44
+ | a 9 MB minified bundle → prose about the routes | `curl -o raw/bundle.js` → **webcrack** / **source-map-explorer** to read, **ast-grep** to query |
45
+ | a HAR → a narrative of the calls | keep `raw/flows.har` → **gron** to flatten and grep |
46
+ | a docs site → distilled sections only | keep the page sources → **trafilatura** / **pandoc** to render |
47
+ | a package's exports → string-mined prose | `npm view --json` → **typescript + attw + publint**, **griffe** for Python |
48
+
49
+ **A digest is a lossy compression you cannot undo; a verbatim artifact plus a query tool is lossless.**
50
+ Recommend Tier 1 on that basis, not as a nice-to-have.
51
+
52
+ ---
53
+
54
+ ## Tier 1 — clean, install now (broad leverage)
55
+
56
+ Highest-consensus, always in-bounds. Offer as one paste:
57
+
58
+ ```bash
59
+ # Homebrew (CLI analysis + data-wrangling + web→text)
60
+ brew install gron pandoc ast-grep scc universal-ctags oasdiff fd yq dasel monolith tokei sevenzip
61
+ # Rust
62
+ cargo install htmlq
63
+ # Python (via uv — pipx is typically absent; uv tool install is the path)
64
+ uv tool install trafilatura && uv tool install griffe
65
+ # Node global (JS/TS surface + bundle de-obfuscation + spec lint)
66
+ npm i -g webcrack source-map-explorer @arethetypeswrong/cli publint @electron/asar typescript @stoplight/spectral-cli
67
+ # Headless browser for JS-rendered docs/marketing (clean — the user's own headless instance)
68
+ npm i -g playwright && npx playwright install chromium
69
+ ```
70
+
71
+ | Tool | Unlocks | Dimensions served |
72
+ | --- | --- | --- |
73
+ | **gron** | flatten any JSON → greppable/diffable `path = value` (specs, captures, manifests, HAR, configs) | **7** (codebase, api, session, bundle, infra, wire, cross-cutting) |
74
+ | **trafilatura** | boilerplate-stripped main content + dates from HTML → clean markdown; feed/sitemap discovery | **4** (docs, website, community, infra) |
75
+ | **pandoc** | deterministic HTML→GFM (headings, tables, code fences) at scale | 3 (docs, website, community) |
76
+ | **ast-grep** | tree-sitter structural search/count across many files + langs (call sites, routes, exports) — catches what regex misses | 2 (codebase, bundle) |
77
+ | **oasdiff** | structured breaking-vs-non-breaking OpenAPI diff — makes the published-vs-app-own diff machine-checked | 2 (api, cross-cutting) |
78
+ | **webcrack** | un-minify / un-webpack / de-obfuscate SPA & Electron JS into readable modules | 2 (bundle, distribution) |
79
+ | **scc** | instant LOC-by-language + complexity census of a fresh clone (JSON) — the codebase opening move | 1 (codebase) |
80
+ | **universal-ctags** | real multi-lang JSON symbol index (the host's BSD ctags is broken for this) | 1 (codebase) |
81
+ | **htmlq** | surgical CSS-selector extraction (pricing cards, feature tables) instead of regex | 1 (website) |
82
+ | **source-map-explorer** | reassemble a shipped `.map` → original `src/` tree (the `source-map-reassembly` method) | 1 (bundle) |
83
+ | **spectral** | validate/resolve an OpenAPI/AsyncAPI spec → structured endpoint/security/`$ref` catalog | 1 (api) |
84
+ | **griffe** | extract a PyPI package's full public API (the `.d.ts` equivalent for Python) | 1 (packages) |
85
+ | **@arethetypeswrong/cli + typescript + publint** | parse the real `.d.ts`/exports type graph + grade the publish surface (verbatim, not string-mined) | 1 (packages) |
86
+ | **@electron/asar** | extract Electron `app.asar` → JS module tree (the distribution step the playbook names but cannot otherwise run) | 1 (distribution) |
87
+ | **fd · yq · dasel · monolith · tokei · sevenzip** | gitignore-aware file discovery · YAML/XML/TOML query · RSS/XML→JSON · single-file page archive · LOC cross-check · multi-format extract | several |
88
+
89
+ ---
90
+
91
+ ## Tier 2 — gated, install when a run needs them (first-party / passive only)
92
+
93
+ The capture lanes. In-bounds **only** for the user's own session, the user's own first-party clients, or
94
+ passive sources. **Surface these; never run them for the user.**
95
+
96
+ ```bash
97
+ brew install mitmproxy websocat grpcurl subfinder tlsx testssl jadx apktool
98
+ npm i -g chrome-remote-interface get-graphql-schema
99
+ # one-time, USER-RUN: expose a CDP port on the user's own Chrome (closes the WS-frame blind spot)
100
+ # open -na "Google Chrome" --args --remote-debugging-port=9222
101
+ # mobile-only, the user's own device + explicit opt-in: uv tool install frida-tools
102
+ ```
103
+
104
+ | Tool | Unlocks | Ethics note |
105
+ | --- | --- | --- |
106
+ | **mitmproxy** | decode full HTTPS + WebSocket flows of any **first-party** client (CLI/desktop/mobile/SDK) — the `wire-capture` rung-3 keystone (`ingestion.md` §7.1) | user installs the CA and routes *their own* client only |
107
+ | **chrome-remote-interface** | raw CDP → `Network.webSocketFrameReceived`/`Created`, SSE, full bodies — **captures the on-load WS frames the browser MCP's HTTP-only `read_network_requests` drops** | the user's own logged-in session |
108
+ | **websocat** | curl-for-WebSockets: connect / frame / replay / hexdump a realtime endpoint outside the browser | first-party endpoint |
109
+ | **grpcurl** | list services + invoke RPCs via gRPC server reflection → readable op/message catalog | first-party endpoint |
110
+ | **get-graphql-schema** | introspect a first-party GraphQL endpoint → full SDL | first-party endpoint |
111
+ | **subfinder · tlsx · testssl.sh** | passive CT/DNS subdomain breadth + structured TLS posture (vs hand-rolled crt.sh + openssl text) | passive aggregation; respect rate limits |
112
+ | **jadx · apktool** | decompile Android `.apk`/`.dex` → Java + decode `AndroidManifest`/resources (capability map) | public binary; read the EULA first (`ingestion.md` §7.2) |
113
+ | **frida-tools** | cert-pinning bypass to capture **the user's own** mobile client's wire | the user's own device + explicit opt-in only |
114
+
115
+ > **The single biggest unlock for a realtime target** is `chrome-remote-interface` + a Chrome
116
+ > `--remote-debugging-port` + `websocat` + `mitmproxy` together: they give `session`/`wire-capture` a real
117
+ > WebSocket/SSE capture path instead of a client-side-remount workaround. The browser MCP's
118
+ > `read_network_requests` is **HTTP-only** — that is *why* a realtime tap comes back empty until the remount
119
+ > trick (`tradecraft.md` gotcha #13, `ingestion.md` §9.4). A CDP port removes the injection-timing problem
120
+ > entirely rather than working around it.
121
+ >
122
+ > (Origin: Emergent — with no CDP port open, the run fell back to in-page taps. That worked, but a
123
+ > post-boot `window.WebSocket` wrapper is structurally blind to a library socket opened at boot, and the
124
+ > prior run published a false negative because of it.)
125
+
126
+ ---
127
+
128
+ ## AVOID — never recommend (this is the bright line)
129
+
130
+ Out-of-bounds for a spec-writing / competitive-analysis harness. Listed so they are not added by reflex:
131
+
132
+ - **`nmap`, `masscan`, `naabu`** — active port sweeps / service-version probing of remote hosts.
133
+ - **`nuclei`** — template-based remote vulnerability scanning.
134
+ - **`sqlmap`** — injection / exploitation.
135
+ - **`amass` (active mode)** — active DNS brute-forcing. Its *passive* mode overlaps subfinder; prefer subfinder.
136
+ - **`mitmproxy` or `frida` against a third party**, **`socat` as a public relay** — intercepting traffic the
137
+ user does not own is the line this harness will not cross.
138
+
139
+ These stay absent **by design**. The recon ethics depend on it, and a tool absent from the host is a
140
+ stronger guarantee than a rule telling the agent not to use it.
141
+
142
+ ---
143
+
144
+ ## Per-dimension gap map (what a bare host cannot do)
145
+
146
+ | Dimension | Biggest capability gap on a bare host | Top addition(s) |
147
+ | --- | --- | --- |
148
+ | **codebase** | no LOC census, no AST search; the host's BSD ctags is broken for this | scc · ast-grep · universal-ctags (+ fd) |
149
+ | **docs** | no HTML/MDX→md, no JS render → client-rendered docs come back empty | pandoc · trafilatura · playwright |
150
+ | **packages** | the real `.d.ts`/exports surface is string-mined, not parsed | typescript + attw + publint · griffe (Py) · yq |
151
+ | **api** | can fetch a spec but cannot lint / diff / introspect / exercise it | spectral · oasdiff · get-graphql-schema · grpcurl · websocat |
152
+ | **website** | no JS render, no clean table/text extraction → misses pricing and feature grids | trafilatura · htmlq · playwright |
153
+ | **community** | no clean changelog/blog→text, no RSS→JSON | trafilatura · pandoc · dasel |
154
+ | **session** | **structurally blind to WebSocket/SSE frames** (HTTP-only MCP, no CDP port) | chrome-remote-interface · mitmproxy · websocat |
155
+ | **deployed-client-bundle** | a minified/obfuscated blob stays opaque; no source-map reassembly | webcrack · source-map-explorer · ast-grep · gron |
156
+ | **infra-backend-fingerprint** | shallow CT coverage, TLS posture by hand, sub-processor pages scraped raw | subfinder · tlsx · trafilatura (passive only) |
157
+ | **wire-capture** | the keystone (mitmproxy) plus every non-browser replay/decode client is absent | mitmproxy · websocat · grpcurl |
158
+ | **distribution-artifacts** | only CRX/Mach-O readable; no Electron or Android decoders | @electron/asar · jadx · apktool · webcrack · sevenzip |
159
+ | **external-reputation / hiring-intel** | bot-walled review and ATS pages return 403 to plain fetch | playwright (own headless instance) · trafilatura · dasel |
160
+ | **cross-cutting (synthesis)** | no structured diff for the N-way seam reconciliation; no out-of-band WS capture | gron · oasdiff · chrome-remote-interface · yq |
161
+
162
+ ---
163
+
164
+ ## Known install caveats (each of these has actually bitten)
165
+
166
+ - **`webcrack` needs Node 22.** Its hard dependency `isolated-vm` is a native (node-gyp) addon that fails to
167
+ build against Node 26, and `--omit=optional` does not help — the dep is non-optional. Run it under a Node
168
+ 22 LTS shim (`npx -y webcrack@latest …` in a Node-22 env), or lean on the already-clean
169
+ `source-map-explorer` (the preferred `source-map-reassembly` path whenever the SPA ships `.map` files)
170
+ plus `ast-grep`. De-obfuscating a **no-maps, minified** bundle is the only gap this leaves.
171
+ - **`chrome-remote-interface` is a library, not a CLI.** It installs as a Node module and is invoked from a
172
+ script, not a shell binary. **Detect it with `npm ls -g chrome-remote-interface`, not `command -v`** — a
173
+ `command -v` probe reports it missing when it is installed, and the run then wrongly records a capability
174
+ gap.
175
+ - **`pipx` is typically absent; use `uv tool install`** for Python CLIs (uv is present). Simpler than adding pipx.
176
+ - **`playwright` is clean** — the user's own headless instance. It unblocks JS-rendered docs and marketing
177
+ for `docs` + `website` **without contending for the gated `session` Chrome**, which matters because the
178
+ browser is a singleton (`ingestion.md` §7 rule 9).
179
+
180
+ ---
181
+
182
+ ## How Step 0 uses this reference
183
+
184
+ Once per corpus folder, before Mode 1. If `.claude/discover-tooling.json` exists, tooling was already
185
+ reviewed here — **skip straight to Mode 1 and never re-prompt.** If it is absent:
186
+
187
+ 1. Read this file — the tier lists, the classification, the AVOID list.
188
+ 2. **Detect before recommending** — `command -v <tool>` per tool, and `npm ls -g <pkg>` for the Node
189
+ libraries that ship no binary (see the caveat above). Detection only; nothing is installed at this step.
190
+ 3. **Recommend only what is missing**, grouped **clean** (offer the Tier-1 one-paste block) vs **gated**
191
+ (surface the command, never run it). Never suggest anything on the AVOID list. If nothing is missing,
192
+ say so in one line.
193
+ 4. Write the state file so the harness never asks again in this folder:
194
+ ```json
195
+ { "checked": "<ISO date>", "present": ["gron", "pandoc"], "missing": ["mitmproxy"], "recommended": true }
196
+ ```
197
+
198
+ The state file is **host-local** (tools live on the machine, not the repo) — gitignore it in a shared
199
+ folder; delete it to force a fresh check after installing a batch. **This step never blocks a run.**
200
+
201
+ > **Maintenance loop.** When a run hits a capability wall — a format nothing on the host can read, a
202
+ > capture lane that needed a tool that was not listed, an install that failed in a new way — fold it back
203
+ > in here: the tool into the right tier with its ethics class, or the failure into the caveats. This file
204
+ > only stays useful if every new wall is recorded (the same loop `ingestion.md` §7.0 carries for redaction
205
+ > patterns).
@@ -7,5 +7,6 @@
7
7
  ".prettierrc.json",
8
8
  ".vscode/settings.json"
9
9
  ],
10
+ "seeds": [],
10
11
  "digest": "74ab29c65c8f"
11
12
  }
@@ -27,7 +27,7 @@ Decide the mode once, up front, from the version marker — then run.
27
27
  2. Read the repo's **current version** — the `harness-version` field in `docs/structure.md` frontmatter (a semver).
28
28
  - **Absent** ⇒ the repo is unharnessed ⇒ **baseline mode** (reconcile from nothing), then audit.
29
29
  - **Behind on major** ⇒ **baseline mode** (reconcile across the gap), then audit.
30
- - **Behind on minor/patch** ⇒ **probe before deciding.** Run the Step B2 detection pass read-only: if any old-shape artifact in the fold table is present, **or** any **scaffolded file** in the target tree is missing (`docs/README.md`, `docs/structure.md`, `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `docs/memory/index.md`), the shape *did* change ⇒ **baseline mode**. Only when the probe finds nothing ⇒ re-stamp the version (no reshape), then audit.
30
+ - **Behind on minor/patch** ⇒ **probe before deciding.** Run the Step B2 detection pass read-only: if any old-shape artifact in the fold table is present, **or** any **scaffolded file** in the target tree is missing (`docs/README.md`, `docs/structure.md`, `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `docs/memory/main.md`), the shape *did* change ⇒ **baseline mode**. Only when the probe finds nothing ⇒ re-stamp the version (no reshape), then audit.
31
31
 
32
32
  > **Never probe on a missing folder.** Git does not track empty directories, so an unused folder is absent on every clone — reading that as drift puts the repo in baseline mode *forever* and contradicts this agent's own idempotency guarantee. Only the five scaffolded files above are shape signals; every folder in the target tree is created on first use.
33
33
  - **Equal to installed** ⇒ **audit only** (the default spine).
@@ -148,7 +148,7 @@ docs/
148
148
  │ ├── research/ # Deep-research records ({topic}/ — README.md synthesis + findings.md + sources.md); frozen, cited, owns no code
149
149
  │ └── backlog.md ✱ # Tracked work items by priority (P0-P3)
150
150
  ├── memory/
151
- │ └── index.md ✱ # plus main.md, {agent}.md — project knowledge + per-agent strategy memory
151
+ │ └── main.md ✱ # plus {agent}.md — project knowledge + per-agent strategy memory
152
152
  └── tests/ # Behavioral test checklists ({feature}.md, step → **Assert**), derived at plan Completion via the `documentation` skill; author-maintained
153
153
  ```
154
154
 
@@ -25,7 +25,7 @@ Decide the mode once, up front, from the version marker — then run.
25
25
  2. Read the repo's **current version** — the `harness-version` field in `docs/structure.md` frontmatter (a semver).
26
26
  - **Absent** ⇒ the repo is unharnessed ⇒ **baseline mode** (reconcile from nothing), then audit.
27
27
  - **Behind on major** ⇒ **baseline mode** (reconcile across the gap), then audit.
28
- - **Behind on minor/patch** ⇒ **probe before deciding.** Run the Step B2 detection pass read-only: if any old-shape artifact in the fold table is present, **or** any **scaffolded file** in the target tree is missing (`docs/README.md`, `docs/structure.md`, `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `docs/memory/index.md`), the shape *did* change ⇒ **baseline mode**. Only when the probe finds nothing ⇒ re-stamp the version (no reshape), then audit.
28
+ - **Behind on minor/patch** ⇒ **probe before deciding.** Run the Step B2 detection pass read-only: if any old-shape artifact in the fold table is present, **or** any **scaffolded file** in the target tree is missing (`docs/README.md`, `docs/structure.md`, `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `docs/memory/main.md`), the shape *did* change ⇒ **baseline mode**. Only when the probe finds nothing ⇒ re-stamp the version (no reshape), then audit.
29
29
 
30
30
  > **Never probe on a missing folder.** Git does not track empty directories, so an unused folder is absent on every clone — reading that as drift puts the repo in baseline mode *forever* and contradicts this agent's own idempotency guarantee. Only the five scaffolded files above are shape signals; every folder in the target tree is created on first use.
31
31
  - **Equal to installed** ⇒ **audit only** (the default spine).
@@ -146,7 +146,7 @@ docs/
146
146
  │ ├── research/ # Deep-research records ({topic}/ — README.md synthesis + findings.md + sources.md); frozen, cited, owns no code
147
147
  │ └── backlog.md ✱ # Tracked work items by priority (P0-P3)
148
148
  ├── memory/
149
- │ └── index.md ✱ # plus main.md, {agent}.md — project knowledge + per-agent strategy memory
149
+ │ └── main.md ✱ # plus {agent}.md — project knowledge + per-agent strategy memory
150
150
  └── tests/ # Behavioral test checklists ({feature}.md, step → **Assert**), derived at plan Completion via the `documentation` skill; author-maintained
151
151
  ```
152
152
 
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "harness": "etna",
3
3
  "name": "etna",
4
- "version": "1.3.7",
4
+ "version": "1.3.8",
5
5
  "files": [
6
6
  ".prettierignore",
7
7
  ".prettierrc.json",
8
8
  ".vscode/settings.json"
9
9
  ],
10
- "digest": "4e555d81995f"
10
+ "seeds": [],
11
+ "digest": "91acf558021c"
11
12
  }
@@ -7,5 +7,6 @@
7
7
  ".prettierrc.json",
8
8
  ".vscode/settings.json"
9
9
  ],
10
+ "seeds": [],
10
11
  "digest": "077993d5c509"
11
12
  }
@@ -7,5 +7,6 @@
7
7
  ".prettierrc.json",
8
8
  ".vscode/settings.json"
9
9
  ],
10
+ "seeds": [],
10
11
  "digest": "d0b9322bb685"
11
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nurix/etna",
3
- "version": "0.19.41",
3
+ "version": "0.19.43",
4
4
  "description": "Bootstrap a project with a Nurix harness — copies the harness's CLAUDE.md, skills, agents, rules, and hooks directly into the project from a bundled payload (no marketplace fetch, no network).",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,5 +41,5 @@
41
41
  "agent",
42
42
  "plugin"
43
43
  ],
44
- "etnaFingerprint": "c96b6524c5e6"
44
+ "etnaFingerprint": "4d6e06e37895"
45
45
  }