novahiz 0.2.2 → 0.2.5

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 (565) hide show
  1. package/NOTICE.md +25 -15
  2. package/README.md +353 -355
  3. package/adapters/README.md +1 -1
  4. package/adapters/opencode/agent/novahiz.md +1 -2
  5. package/adapters/opencode/commands/novahiz-init.md +10 -0
  6. package/adapters/opencode/instructions.md +1 -1
  7. package/adapters/opencode/novahiz.ts +182 -4
  8. package/bin/novahiz.cmd +2 -2
  9. package/catalog/categories.json +1085 -1093
  10. package/catalog/overrides.json +12 -13
  11. package/catalog/providers.json +18 -34
  12. package/catalog/rules.json +15 -22
  13. package/docs/ARCHITECTURE.md +2 -2
  14. package/docs/CATALOG.md +7 -6
  15. package/docs/CONFIGURATION.md +5 -5
  16. package/docs/CONSTITUTION.md +4 -4
  17. package/docs/GATE.md +7 -11
  18. package/docs/HARNESSES.md +11 -0
  19. package/docs/INSTALL.md +7 -5
  20. package/docs/PLUGIN.md +24 -6
  21. package/docs/PROVIDERS.md +12 -10
  22. package/docs/ROADMAPS.md +4 -3
  23. package/docs/RULES.md +11 -10
  24. package/install/bootstrap.mjs +9 -19
  25. package/install/install.mjs +23 -41
  26. package/mcp/novahiz-tools/index.mjs +35 -6
  27. package/novahiz.config.example.json +1 -5
  28. package/package.json +6 -7
  29. package/skills/apple-ui-audit/SKILL.md +95 -0
  30. package/skills/apple-ui-audit/references/screen-walkthrough.md +29 -0
  31. package/skills/browser-session/SKILL.md +61 -0
  32. package/skills/browser-session/references/session-run-sheet.md +30 -0
  33. package/skills/browser-session/scripts/browser_session_preflight.mjs +74 -0
  34. package/skills/browser-session/scripts/sample-run.json +5 -0
  35. package/skills/code-standards/SKILL.md +85 -0
  36. package/skills/code-standards/references/pr-review-worksheet.md +35 -0
  37. package/skills/design-token-pipeline/SKILL.md +85 -0
  38. package/skills/design-token-pipeline/references/dtcg-sample.json +37 -0
  39. package/skills/llm-threat-review/SKILL.md +99 -0
  40. package/skills/llm-threat-review/references/review-worksheet.md +34 -0
  41. package/skills/llm-threat-review/scripts/llm_risk_lint.mjs +105 -0
  42. package/skills/novahiz-audit/SKILL.md +1 -1
  43. package/skills/novahiz-gate/SKILL.md +7 -6
  44. package/skills/novahiz-humanizer/SKILL.md +1 -1
  45. package/skills/novahiz-implement/SKILL.md +1 -1
  46. package/skills/novahiz-init/SKILL.md +112 -0
  47. package/skills/novahiz-planner/SKILL.md +1 -2
  48. package/skills/openapi-mcp-server/SKILL.md +76 -0
  49. package/skills/openapi-mcp-server/references/mcp-ship-checklist.md +30 -0
  50. package/skills/openapi-mcp-server/references/tool-worksheet.md +30 -0
  51. package/skills/openapi-mcp-server/scripts/openapi_mcp_lint.mjs +133 -0
  52. package/skills/package-risk-audit/SKILL.md +83 -0
  53. package/skills/package-risk-audit/references/intake-worksheet.md +19 -0
  54. package/skills/package-risk-audit/scripts/dep_risk_lint.mjs +131 -0
  55. package/skills/secrets-hygiene/SKILL.md +62 -0
  56. package/skills/secrets-hygiene/references/rotation-playbook.md +27 -0
  57. package/skills/secrets-hygiene/scripts/secret_scan.mjs +120 -0
  58. package/skills/skill-authoring/SKILL.md +93 -0
  59. package/skills/skill-authoring/references/skill-template.md +59 -0
  60. package/skills/skill-authoring/scripts/skill_frontmatter_lint.mjs +65 -0
  61. package/skills/skill-eval-loop/SKILL.md +103 -0
  62. package/skills/skill-eval-loop/references/negative-patterns.md +12 -0
  63. package/skills/skill-eval-loop/references/run-sheet.md +40 -0
  64. package/skills/skill-eval-loop/scripts/skill_structure_check.mjs +100 -0
  65. package/skills/ui-craft-rules/SKILL.md +96 -0
  66. package/skills/ui-slop-remover/SKILL.md +110 -0
  67. package/skills/ui-slop-remover/references/tell-catalogue.md +58 -0
  68. package/skills/ui-slop-remover/scripts/slop_lint.mjs +119 -0
  69. package/src/autodocs.ts +192 -0
  70. package/src/cli.ts +8 -1
  71. package/src/commands/autodocs.ts +250 -0
  72. package/src/commands/doctor.ts +226 -217
  73. package/src/commands/gate.ts +16 -5
  74. package/src/commands/init.ts +356 -0
  75. package/src/commands/task.ts +20 -7
  76. package/src/gate.ts +401 -401
  77. package/src/ledger.ts +39 -0
  78. package/src/targets.ts +43 -7
  79. package/bundled-skills/ab-testing/SKILL.md +0 -353
  80. package/bundled-skills/ab-testing/evals/evals.json +0 -105
  81. package/bundled-skills/ab-testing/references/sample-size-guide.md +0 -263
  82. package/bundled-skills/ab-testing/references/test-templates.md +0 -277
  83. package/bundled-skills/ad-creative/SKILL.md +0 -425
  84. package/bundled-skills/ad-creative/assets/creative-review-template.html +0 -400
  85. package/bundled-skills/ad-creative/evals/evals.json +0 -217
  86. package/bundled-skills/ad-creative/references/creative-review-page.md +0 -106
  87. package/bundled-skills/ad-creative/references/creative-roadmap.md +0 -118
  88. package/bundled-skills/ad-creative/references/generative-tools.md +0 -637
  89. package/bundled-skills/ad-creative/references/hook-system.md +0 -115
  90. package/bundled-skills/ad-creative/references/imessage-video-ads.md +0 -201
  91. package/bundled-skills/ad-creative/references/meta-creative-formats.md +0 -114
  92. package/bundled-skills/ad-creative/references/motion-video-ads.md +0 -126
  93. package/bundled-skills/ad-creative/references/platform-specs.md +0 -213
  94. package/bundled-skills/ad-creative/references/short-form-video-specs.md +0 -213
  95. package/bundled-skills/ad-creative/references/static-ad-templates.md +0 -308
  96. package/bundled-skills/ads/SKILL.md +0 -499
  97. package/bundled-skills/ads/evals/evals.json +0 -157
  98. package/bundled-skills/ads/references/abm-playbook.md +0 -93
  99. package/bundled-skills/ads/references/ad-copy-templates.md +0 -207
  100. package/bundled-skills/ads/references/audience-targeting.md +0 -243
  101. package/bundled-skills/ads/references/audit-guardrails.md +0 -83
  102. package/bundled-skills/ads/references/b2b-paid-playbook.md +0 -115
  103. package/bundled-skills/ads/references/conversion-tracking.md +0 -361
  104. package/bundled-skills/ads/references/creative-research-automation.md +0 -103
  105. package/bundled-skills/ads/references/google-ads-audit-checklist.md +0 -84
  106. package/bundled-skills/ads/references/google-search-playbook.md +0 -120
  107. package/bundled-skills/ads/references/linkedin-b2b-playbook.md +0 -107
  108. package/bundled-skills/ads/references/meta-decision-system.md +0 -176
  109. package/bundled-skills/ads/references/payback-period.md +0 -69
  110. package/bundled-skills/ads/references/platform-setup-checklists.md +0 -277
  111. package/bundled-skills/ads/references/rsa-output-spec.md +0 -88
  112. package/bundled-skills/agent-device/SKILL.md +0 -20
  113. package/bundled-skills/ai-seo/SKILL.md +0 -488
  114. package/bundled-skills/ai-seo/evals/evals.json +0 -135
  115. package/bundled-skills/ai-seo/references/agent-readiness.md +0 -57
  116. package/bundled-skills/ai-seo/references/citations-vs-recommendations.md +0 -85
  117. package/bundled-skills/ai-seo/references/content-patterns.md +0 -287
  118. package/bundled-skills/ai-seo/references/content-types.md +0 -71
  119. package/bundled-skills/ai-seo/references/format-volatility.md +0 -98
  120. package/bundled-skills/ai-seo/references/okf.md +0 -104
  121. package/bundled-skills/ai-seo/references/platform-ranking-factors.md +0 -154
  122. package/bundled-skills/ai-seo/references/youtube-ai-citations.md +0 -60
  123. package/bundled-skills/analytics/SKILL.md +0 -310
  124. package/bundled-skills/analytics/evals/evals.json +0 -90
  125. package/bundled-skills/analytics/references/event-library.md +0 -260
  126. package/bundled-skills/analytics/references/ga4-implementation.md +0 -300
  127. package/bundled-skills/analytics/references/gtm-implementation.md +0 -390
  128. package/bundled-skills/android-emulator/SKILL.md +0 -32
  129. package/bundled-skills/android-reverse-engineering/LICENSE +0 -190
  130. package/bundled-skills/android-reverse-engineering/SKILL.md +0 -313
  131. package/bundled-skills/android-reverse-engineering/references/api-extraction-patterns.md +0 -197
  132. package/bundled-skills/android-reverse-engineering/references/call-flow-analysis.md +0 -210
  133. package/bundled-skills/android-reverse-engineering/references/fernflower-usage.md +0 -115
  134. package/bundled-skills/android-reverse-engineering/references/jadx-usage.md +0 -116
  135. package/bundled-skills/android-reverse-engineering/references/kotlin-name-recovery.md +0 -108
  136. package/bundled-skills/android-reverse-engineering/references/setup-guide.md +0 -221
  137. package/bundled-skills/android-reverse-engineering/references/third_party_hosts.txt +0 -122
  138. package/bundled-skills/android-reverse-engineering/scripts/check-deps.ps1 +0 -165
  139. package/bundled-skills/android-reverse-engineering/scripts/check-deps.sh +0 -129
  140. package/bundled-skills/android-reverse-engineering/scripts/decompile.ps1 +0 -400
  141. package/bundled-skills/android-reverse-engineering/scripts/decompile.sh +0 -578
  142. package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.ps1 +0 -121
  143. package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.sh +0 -339
  144. package/bundled-skills/android-reverse-engineering/scripts/fingerprint.sh +0 -241
  145. package/bundled-skills/android-reverse-engineering/scripts/install-dep.ps1 +0 -345
  146. package/bundled-skills/android-reverse-engineering/scripts/install-dep.sh +0 -448
  147. package/bundled-skills/android-reverse-engineering/scripts/lookup-name.sh +0 -85
  148. package/bundled-skills/android-reverse-engineering/scripts/recover-kotlin-names.sh +0 -140
  149. package/bundled-skills/build-graph/SKILL.md +0 -38
  150. package/bundled-skills/claude-history-ingest/SKILL.md +0 -463
  151. package/bundled-skills/claude-history-ingest/references/claude-data-format.md +0 -118
  152. package/bundled-skills/codex-history-ingest/SKILL.md +0 -248
  153. package/bundled-skills/codex-history-ingest/references/codex-data-format.md +0 -82
  154. package/bundled-skills/cold-email/SKILL.md +0 -159
  155. package/bundled-skills/cold-email/evals/evals.json +0 -94
  156. package/bundled-skills/cold-email/references/benchmarks.md +0 -83
  157. package/bundled-skills/cold-email/references/follow-up-sequences.md +0 -81
  158. package/bundled-skills/cold-email/references/frameworks.md +0 -90
  159. package/bundled-skills/cold-email/references/personalization.md +0 -79
  160. package/bundled-skills/cold-email/references/subject-lines.md +0 -53
  161. package/bundled-skills/competitor-profiling/SKILL.md +0 -415
  162. package/bundled-skills/competitor-profiling/evals/evals.json +0 -85
  163. package/bundled-skills/competitor-profiling/references/templates.md +0 -167
  164. package/bundled-skills/competitor-profiling/references/tool-reference.md +0 -179
  165. package/bundled-skills/computer-use/SKILL.md +0 -41
  166. package/bundled-skills/content-strategy/SKILL.md +0 -439
  167. package/bundled-skills/content-strategy/evals/evals.json +0 -116
  168. package/bundled-skills/content-strategy/references/content-distribution.md +0 -83
  169. package/bundled-skills/content-strategy/references/headless-cms.md +0 -194
  170. package/bundled-skills/copilot-history-ingest/SKILL.md +0 -376
  171. package/bundled-skills/copilot-history-ingest/references/copilot-data-format.md +0 -321
  172. package/bundled-skills/copy-editing/SKILL.md +0 -457
  173. package/bundled-skills/copy-editing/evals/evals.json +0 -89
  174. package/bundled-skills/copy-editing/references/checklist.md +0 -66
  175. package/bundled-skills/copy-editing/references/content-refresh.md +0 -38
  176. package/bundled-skills/copy-editing/references/plain-english-alternatives.md +0 -394
  177. package/bundled-skills/copywriting/SKILL.md +0 -256
  178. package/bundled-skills/copywriting/evals/evals.json +0 -126
  179. package/bundled-skills/copywriting/references/copy-frameworks.md +0 -433
  180. package/bundled-skills/copywriting/references/natural-transitions.md +0 -272
  181. package/bundled-skills/cro/SKILL.md +0 -187
  182. package/bundled-skills/cro/evals/evals.json +0 -111
  183. package/bundled-skills/cro/references/experiments.md +0 -248
  184. package/bundled-skills/cro/references/form.md +0 -422
  185. package/bundled-skills/cross-linker/SKILL.md +0 -309
  186. package/bundled-skills/customer-research/SKILL.md +0 -305
  187. package/bundled-skills/customer-research/evals/evals.json +0 -176
  188. package/bundled-skills/customer-research/references/interviews-and-surveys.md +0 -155
  189. package/bundled-skills/customer-research/references/source-guides.md +0 -401
  190. package/bundled-skills/daily-update/SKILL.md +0 -223
  191. package/bundled-skills/dart-add-unit-test/SKILL.md +0 -122
  192. package/bundled-skills/dart-build-cli-app/SKILL.md +0 -185
  193. package/bundled-skills/dart-collect-coverage/SKILL.md +0 -141
  194. package/bundled-skills/dart-fix-runtime-errors/SKILL.md +0 -166
  195. package/bundled-skills/dart-generate-test-mocks/SKILL.md +0 -155
  196. package/bundled-skills/dart-migrate-to-checks-package/SKILL.md +0 -528
  197. package/bundled-skills/dart-resolve-package-conflicts/SKILL.md +0 -116
  198. package/bundled-skills/dart-run-static-analysis/SKILL.md +0 -104
  199. package/bundled-skills/dart-setup-ffi-assets/SKILL.md +0 -419
  200. package/bundled-skills/dart-use-doc-examples/SKILL.md +0 -96
  201. package/bundled-skills/dart-use-ffigen/SKILL.md +0 -218
  202. package/bundled-skills/dart-use-pattern-matching/SKILL.md +0 -146
  203. package/bundled-skills/dart-use-primary-constructors/SKILL.md +0 -262
  204. package/bundled-skills/dart-write-documentation/SKILL.md +0 -136
  205. package/bundled-skills/debug-issue/SKILL.md +0 -28
  206. package/bundled-skills/dogfood/SKILL.md +0 -27
  207. package/bundled-skills/eas-app-stores/SKILL.md +0 -176
  208. package/bundled-skills/eas-app-stores/agents/openai.yaml +0 -4
  209. package/bundled-skills/eas-app-stores/references/app-store-metadata.md +0 -497
  210. package/bundled-skills/eas-app-stores/references/ios-app-store.md +0 -376
  211. package/bundled-skills/eas-app-stores/references/native-ios.md +0 -167
  212. package/bundled-skills/eas-app-stores/references/play-store.md +0 -244
  213. package/bundled-skills/eas-app-stores/references/testflight.md +0 -62
  214. package/bundled-skills/eas-app-stores/references/workflows.md +0 -120
  215. package/bundled-skills/eas-hosting/SKILL.md +0 -431
  216. package/bundled-skills/eas-hosting/agents/openai.yaml +0 -4
  217. package/bundled-skills/eas-observe/SKILL.md +0 -54
  218. package/bundled-skills/eas-observe/agents/openai.yaml +0 -4
  219. package/bundled-skills/eas-observe/references/metrics.md +0 -98
  220. package/bundled-skills/eas-observe/references/queries.md +0 -403
  221. package/bundled-skills/eas-observe/references/setup.md +0 -476
  222. package/bundled-skills/eas-observe/references/third-party.md +0 -136
  223. package/bundled-skills/eas-simulator/SKILL.md +0 -208
  224. package/bundled-skills/eas-simulator/agents/openai.yaml +0 -4
  225. package/bundled-skills/eas-simulator/references/controllers.md +0 -106
  226. package/bundled-skills/eas-simulator/references/run-your-app.md +0 -224
  227. package/bundled-skills/eas-simulator/references/troubleshooting.md +0 -44
  228. package/bundled-skills/eas-update/SKILL.md +0 -146
  229. package/bundled-skills/eas-update/agents/openai.yaml +0 -4
  230. package/bundled-skills/eas-update-insights/SKILL.md +0 -238
  231. package/bundled-skills/eas-update-insights/agents/openai.yaml +0 -4
  232. package/bundled-skills/eas-update-insights/references/channel-insights-schema.md +0 -47
  233. package/bundled-skills/eas-update-insights/references/update-insights-schema.md +0 -69
  234. package/bundled-skills/eas-workflows/SKILL.md +0 -99
  235. package/bundled-skills/eas-workflows/agents/openai.yaml +0 -4
  236. package/bundled-skills/eas-workflows/scripts/fetch.js +0 -109
  237. package/bundled-skills/eas-workflows/scripts/package.json +0 -6
  238. package/bundled-skills/emails/SKILL.md +0 -311
  239. package/bundled-skills/emails/evals/evals.json +0 -93
  240. package/bundled-skills/emails/references/copy-guidelines.md +0 -113
  241. package/bundled-skills/emails/references/email-types.md +0 -515
  242. package/bundled-skills/emails/references/sequence-templates.md +0 -168
  243. package/bundled-skills/explore-codebase/SKILL.md +0 -29
  244. package/bundled-skills/expo-animation/LICENSE +0 -21
  245. package/bundled-skills/expo-animation/RECIPES.md +0 -385
  246. package/bundled-skills/expo-animation/SKILL.md +0 -267
  247. package/bundled-skills/expo-animation/agents/openai.yaml +0 -4
  248. package/bundled-skills/expo-app-clip/SKILL.md +0 -290
  249. package/bundled-skills/expo-app-clip/agents/openai.yaml +0 -4
  250. package/bundled-skills/expo-app-clip/references/native-module.md +0 -96
  251. package/bundled-skills/expo-brownfield/SKILL.md +0 -62
  252. package/bundled-skills/expo-brownfield/agents/openai.yaml +0 -4
  253. package/bundled-skills/expo-brownfield/references/brownfield-integrated.md +0 -526
  254. package/bundled-skills/expo-brownfield/references/brownfield-isolated.md +0 -451
  255. package/bundled-skills/expo-brownfield/references/comparison.md +0 -63
  256. package/bundled-skills/expo-brownfield/references/troubleshooting.md +0 -88
  257. package/bundled-skills/expo-data-fetching/SKILL.md +0 -478
  258. package/bundled-skills/expo-data-fetching/agents/openai.yaml +0 -4
  259. package/bundled-skills/expo-data-fetching/references/expo-router-loaders.md +0 -341
  260. package/bundled-skills/expo-data-fetching/references/offline-and-cancellation.md +0 -68
  261. package/bundled-skills/expo-design-system/SKILL.md +0 -376
  262. package/bundled-skills/expo-design-system/agents/openai.yaml +0 -4
  263. package/bundled-skills/expo-design-system/references/audit.md +0 -190
  264. package/bundled-skills/expo-design-system/references/native-slop.md +0 -74
  265. package/bundled-skills/expo-dev-client/SKILL.md +0 -182
  266. package/bundled-skills/expo-dev-client/agents/openai.yaml +0 -4
  267. package/bundled-skills/expo-dom/SKILL.md +0 -425
  268. package/bundled-skills/expo-dom/agents/openai.yaml +0 -4
  269. package/bundled-skills/expo-examples/SKILL.md +0 -106
  270. package/bundled-skills/expo-examples/agents/openai.yaml +0 -4
  271. package/bundled-skills/expo-examples/references/catalog.md +0 -105
  272. package/bundled-skills/expo-migrate-module/SKILL.md +0 -113
  273. package/bundled-skills/expo-migrate-module/agents/openai.yaml +0 -4
  274. package/bundled-skills/expo-migrate-module/references/compatibility.md +0 -73
  275. package/bundled-skills/expo-migrate-module/references/example.md +0 -212
  276. package/bundled-skills/expo-migrate-module/references/migration-map.md +0 -306
  277. package/bundled-skills/expo-module/SKILL.md +0 -151
  278. package/bundled-skills/expo-module/agents/openai.yaml +0 -4
  279. package/bundled-skills/expo-module/references/config-plugin.md +0 -90
  280. package/bundled-skills/expo-module/references/create-expo-module.md +0 -206
  281. package/bundled-skills/expo-module/references/lifecycle.md +0 -127
  282. package/bundled-skills/expo-module/references/module-config.md +0 -48
  283. package/bundled-skills/expo-module/references/native-module.md +0 -286
  284. package/bundled-skills/expo-module/references/native-view.md +0 -171
  285. package/bundled-skills/expo-native-ui/SKILL.md +0 -201
  286. package/bundled-skills/expo-native-ui/agents/openai.yaml +0 -4
  287. package/bundled-skills/expo-native-ui/references/controls.md +0 -231
  288. package/bundled-skills/expo-native-ui/references/gradients.md +0 -106
  289. package/bundled-skills/expo-native-ui/references/icons.md +0 -232
  290. package/bundled-skills/expo-native-ui/references/media.md +0 -193
  291. package/bundled-skills/expo-native-ui/references/storage.md +0 -121
  292. package/bundled-skills/expo-native-ui/references/visual-effects.md +0 -198
  293. package/bundled-skills/expo-native-ui/references/webgpu-three.md +0 -605
  294. package/bundled-skills/expo-overview/SKILL.md +0 -115
  295. package/bundled-skills/expo-overview/agents/openai.yaml +0 -4
  296. package/bundled-skills/expo-project-structure/SKILL.md +0 -114
  297. package/bundled-skills/expo-project-structure/agents/openai.yaml +0 -4
  298. package/bundled-skills/expo-router/SKILL.md +0 -240
  299. package/bundled-skills/expo-router/agents/openai.yaml +0 -4
  300. package/bundled-skills/expo-router/references/form-sheet.md +0 -253
  301. package/bundled-skills/expo-router/references/route-structure.md +0 -229
  302. package/bundled-skills/expo-router/references/search.md +0 -248
  303. package/bundled-skills/expo-router/references/tabs.md +0 -433
  304. package/bundled-skills/expo-router/references/toolbar-and-headers.md +0 -284
  305. package/bundled-skills/expo-router/references/zoom-transitions.md +0 -158
  306. package/bundled-skills/expo-skill-eval/SKILL.md +0 -314
  307. package/bundled-skills/expo-skill-eval/agents/visual-grader.md +0 -52
  308. package/bundled-skills/expo-skill-eval/references/design-rubric.md +0 -45
  309. package/bundled-skills/expo-skill-eval/references/runtime-matrix.md +0 -34
  310. package/bundled-skills/expo-skill-eval/scripts/check-static.sh +0 -64
  311. package/bundled-skills/expo-skill-eval/scripts/clean-fixture.sh +0 -56
  312. package/bundled-skills/expo-skill-eval/scripts/generate_viewer.py +0 -450
  313. package/bundled-skills/expo-skill-eval/scripts/latest-sdk.sh +0 -46
  314. package/bundled-skills/expo-skill-eval/scripts/make-fixture.sh +0 -95
  315. package/bundled-skills/expo-skill-eval/scripts/make-workspace.sh +0 -31
  316. package/bundled-skills/expo-skill-eval/scripts/snapshot-android.sh +0 -284
  317. package/bundled-skills/expo-skill-eval/scripts/snapshot-ios.sh +0 -132
  318. package/bundled-skills/expo-skill-eval/scripts/snapshot-web.sh +0 -61
  319. package/bundled-skills/expo-skill-feedback/SKILL.md +0 -87
  320. package/bundled-skills/expo-skill-feedback/agents/openai.yaml +0 -4
  321. package/bundled-skills/expo-skill-feedback/scripts/skill-event.cjs +0 -180
  322. package/bundled-skills/expo-skill-feedback/scripts/telemetry.cjs +0 -65
  323. package/bundled-skills/expo-skill-feedback/scripts/telemetry_common.cjs +0 -171
  324. package/bundled-skills/expo-ui/SKILL.md +0 -101
  325. package/bundled-skills/expo-ui/agents/openai.yaml +0 -4
  326. package/bundled-skills/expo-ui/references/drop-in-replacements.md +0 -27
  327. package/bundled-skills/expo-ui/references/jetpack-compose.md +0 -73
  328. package/bundled-skills/expo-ui/references/swift-ui.md +0 -73
  329. package/bundled-skills/expo-ui/references/universal.md +0 -104
  330. package/bundled-skills/expo-ui/scripts/list-components.js +0 -193
  331. package/bundled-skills/expo-upgrade/SKILL.md +0 -150
  332. package/bundled-skills/expo-upgrade/agents/openai.yaml +0 -4
  333. package/bundled-skills/expo-upgrade/references/expo-av-to-audio.md +0 -132
  334. package/bundled-skills/expo-upgrade/references/expo-av-to-video.md +0 -160
  335. package/bundled-skills/expo-upgrade/references/native-tabs.md +0 -124
  336. package/bundled-skills/expo-upgrade/references/new-architecture.md +0 -79
  337. package/bundled-skills/expo-upgrade/references/react-19.md +0 -79
  338. package/bundled-skills/expo-upgrade/references/react-compiler.md +0 -59
  339. package/bundled-skills/expo-upgrade/references/react-navigation-to-expo-router.md +0 -61
  340. package/bundled-skills/expo-web-to-native/SKILL.md +0 -91
  341. package/bundled-skills/expo-web-to-native/agents/openai.yaml +0 -4
  342. package/bundled-skills/expo-web-to-native/references/false-friends.md +0 -119
  343. package/bundled-skills/expo-web-to-native/references/native-patterns.md +0 -39
  344. package/bundled-skills/expo-web-to-native/references/run-as-goal.md +0 -48
  345. package/bundled-skills/expo-web-to-native/references/verify-on-device.md +0 -45
  346. package/bundled-skills/find-skills/SKILL.md +0 -141
  347. package/bundled-skills/flutter-add-integration-test/SKILL.md +0 -163
  348. package/bundled-skills/flutter-add-widget-preview/SKILL.md +0 -145
  349. package/bundled-skills/flutter-add-widget-test/SKILL.md +0 -154
  350. package/bundled-skills/flutter-apply-architecture-best-practices/SKILL.md +0 -162
  351. package/bundled-skills/flutter-build-responsive-layout/SKILL.md +0 -139
  352. package/bundled-skills/flutter-fix-layout-issues/SKILL.md +0 -130
  353. package/bundled-skills/flutter-implement-json-serialization/SKILL.md +0 -153
  354. package/bundled-skills/flutter-setup-declarative-routing/SKILL.md +0 -255
  355. package/bundled-skills/flutter-setup-localization/SKILL.md +0 -210
  356. package/bundled-skills/flutter-use-http-package/SKILL.md +0 -174
  357. package/bundled-skills/graph-colorize/SKILL.md +0 -180
  358. package/bundled-skills/hermes-history-ingest/SKILL.md +0 -239
  359. package/bundled-skills/hermes-history-ingest/references/hermes-data-format.md +0 -131
  360. package/bundled-skills/impl-validator/SKILL.md +0 -118
  361. package/bundled-skills/ios-simulator/SKILL.md +0 -32
  362. package/bundled-skills/json-canvas/SKILL.md +0 -244
  363. package/bundled-skills/json-canvas/references/EXAMPLES.md +0 -329
  364. package/bundled-skills/launch/SKILL.md +0 -381
  365. package/bundled-skills/launch/evals/evals.json +0 -106
  366. package/bundled-skills/llm-wiki/SKILL.md +0 -661
  367. package/bundled-skills/llm-wiki/references/WRITING.md +0 -28
  368. package/bundled-skills/llm-wiki/references/karpathy-pattern.md +0 -45
  369. package/bundled-skills/marketing-plan/SKILL.md +0 -300
  370. package/bundled-skills/marketing-plan/evals/evals.json +0 -112
  371. package/bundled-skills/marketing-plan/references/aarrr-framework.md +0 -180
  372. package/bundled-skills/marketing-plan/references/budget-planning.md +0 -168
  373. package/bundled-skills/marketing-plan/references/client-types.md +0 -373
  374. package/bundled-skills/marketing-plan/references/current-state-rubric.md +0 -255
  375. package/bundled-skills/marketing-plan/references/example-quietude.md +0 -972
  376. package/bundled-skills/marketing-plan/references/funding-stage-unlocks.md +0 -230
  377. package/bundled-skills/marketing-plan/references/growth-patterns.md +0 -190
  378. package/bundled-skills/marketing-plan/references/idea-cross-reference.md +0 -265
  379. package/bundled-skills/marketing-plan/references/measurement-framework.md +0 -213
  380. package/bundled-skills/marketing-plan/references/methodology.md +0 -363
  381. package/bundled-skills/marketing-plan/references/ops-stack-mapping.md +0 -197
  382. package/bundled-skills/marketing-plan/references/plan-template.md +0 -494
  383. package/bundled-skills/marketing-plan/references/team-and-agency-model.md +0 -278
  384. package/bundled-skills/marketing-psychology/SKILL.md +0 -455
  385. package/bundled-skills/marketing-psychology/evals/evals.json +0 -88
  386. package/bundled-skills/memory-bridge/SKILL.md +0 -163
  387. package/bundled-skills/memory-save/SKILL.md +0 -88
  388. package/bundled-skills/obsidian-bases/SKILL.md +0 -499
  389. package/bundled-skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -173
  390. package/bundled-skills/obsidian-cli/SKILL.md +0 -106
  391. package/bundled-skills/obsidian-layout-adjustment/SKILL.md +0 -226
  392. package/bundled-skills/obsidian-layout-adjustment/evals/evals.json +0 -53
  393. package/bundled-skills/obsidian-layout-adjustment/references/workflow-reference.md +0 -212
  394. package/bundled-skills/obsidian-markdown/SKILL.md +0 -196
  395. package/bundled-skills/obsidian-markdown/references/CALLOUTS.md +0 -58
  396. package/bundled-skills/obsidian-markdown/references/EMBEDS.md +0 -70
  397. package/bundled-skills/obsidian-markdown/references/PROPERTIES.md +0 -61
  398. package/bundled-skills/offers/SKILL.md +0 -155
  399. package/bundled-skills/offers/evals/evals.json +0 -21
  400. package/bundled-skills/offers/references/bonus-stacking.md +0 -150
  401. package/bundled-skills/offers/references/examples.md +0 -215
  402. package/bundled-skills/offers/references/guarantee-design.md +0 -172
  403. package/bundled-skills/offers/references/offer-anatomy.md +0 -203
  404. package/bundled-skills/offers/references/offer-formats.md +0 -240
  405. package/bundled-skills/offers/references/saas-offers.md +0 -116
  406. package/bundled-skills/offers/references/scarcity-urgency.md +0 -175
  407. package/bundled-skills/offers/references/value-equation.md +0 -134
  408. package/bundled-skills/onboarding/SKILL.md +0 -261
  409. package/bundled-skills/onboarding/evals/evals.json +0 -108
  410. package/bundled-skills/onboarding/references/activation-models.md +0 -57
  411. package/bundled-skills/onboarding/references/experiments.md +0 -258
  412. package/bundled-skills/onboarding/references/minimum-path-to-value.md +0 -49
  413. package/bundled-skills/openclaw-history-ingest/SKILL.md +0 -257
  414. package/bundled-skills/openclaw-history-ingest/references/openclaw-data-format.md +0 -154
  415. package/bundled-skills/orchestration/SKILL.md +0 -69
  416. package/bundled-skills/pi-history-ingest/SKILL.md +0 -312
  417. package/bundled-skills/pricing/SKILL.md +0 -295
  418. package/bundled-skills/pricing/evals/evals.json +0 -119
  419. package/bundled-skills/pricing/references/pricing-models.md +0 -66
  420. package/bundled-skills/pricing/references/pricing-page-teardown.md +0 -85
  421. package/bundled-skills/pricing/references/research-methods.md +0 -152
  422. package/bundled-skills/pricing/references/tier-structure.md +0 -232
  423. package/bundled-skills/product-marketing/SKILL.md +0 -255
  424. package/bundled-skills/product-marketing/evals/evals.json +0 -98
  425. package/bundled-skills/prospecting/SKILL.md +0 -262
  426. package/bundled-skills/prospecting/evals/evals.json +0 -122
  427. package/bundled-skills/prospecting/references/b2b-prospecting.md +0 -106
  428. package/bundled-skills/prospecting/references/compliance.md +0 -123
  429. package/bundled-skills/prospecting/references/data-sources.md +0 -287
  430. package/bundled-skills/prospecting/references/demand-signals.md +0 -129
  431. package/bundled-skills/prospecting/references/local-prospecting.md +0 -165
  432. package/bundled-skills/prospecting/references/saas-prospecting.md +0 -123
  433. package/bundled-skills/refactor-safely/SKILL.md +0 -29
  434. package/bundled-skills/review-delta/SKILL.md +0 -46
  435. package/bundled-skills/review-pr/SKILL.md +0 -66
  436. package/bundled-skills/sales-enablement/SKILL.md +0 -359
  437. package/bundled-skills/sales-enablement/evals/evals.json +0 -91
  438. package/bundled-skills/sales-enablement/references/deck-frameworks.md +0 -263
  439. package/bundled-skills/sales-enablement/references/demo-scripts.md +0 -355
  440. package/bundled-skills/sales-enablement/references/objection-library.md +0 -270
  441. package/bundled-skills/sales-enablement/references/one-pager-templates.md +0 -208
  442. package/bundled-skills/seo-audit/SKILL.md +0 -499
  443. package/bundled-skills/seo-audit/evals/evals.json +0 -136
  444. package/bundled-skills/seo-audit/references/ai-writing-detection.md +0 -200
  445. package/bundled-skills/seo-audit/references/international-seo.md +0 -230
  446. package/bundled-skills/session-brain/SKILL.md +0 -101
  447. package/bundled-skills/session-search/SKILL.md +0 -97
  448. package/bundled-skills/social/SKILL.md +0 -413
  449. package/bundled-skills/social/evals/evals.json +0 -107
  450. package/bundled-skills/social/references/carousel-frameworks.md +0 -141
  451. package/bundled-skills/social/references/listening-sources-template.md +0 -123
  452. package/bundled-skills/social/references/listening.md +0 -283
  453. package/bundled-skills/social/references/platform-limits.md +0 -110
  454. package/bundled-skills/social/references/platforms.md +0 -170
  455. package/bundled-skills/social/references/post-templates.md +0 -179
  456. package/bundled-skills/social/references/reverse-engineering.md +0 -195
  457. package/bundled-skills/social/references/short-form-video.md +0 -237
  458. package/bundled-skills/tag-taxonomy/SKILL.md +0 -218
  459. package/bundled-skills/vault-skill-factory/SKILL.md +0 -143
  460. package/bundled-skills/video/SKILL.md +0 -346
  461. package/bundled-skills/video/evals/evals.json +0 -103
  462. package/bundled-skills/video/references/ai-video-prompting.md +0 -175
  463. package/bundled-skills/video/references/edit-anatomy.md +0 -84
  464. package/bundled-skills/wiki-agent/SKILL.md +0 -322
  465. package/bundled-skills/wiki-capture/SKILL.md +0 -337
  466. package/bundled-skills/wiki-capture/references/RAW-FORMAT.md +0 -115
  467. package/bundled-skills/wiki-context-pack/SKILL.md +0 -89
  468. package/bundled-skills/wiki-dashboard/SKILL.md +0 -472
  469. package/bundled-skills/wiki-dedup/SKILL.md +0 -320
  470. package/bundled-skills/wiki-digest/SKILL.md +0 -243
  471. package/bundled-skills/wiki-export/SKILL.md +0 -445
  472. package/bundled-skills/wiki-history-ingest/SKILL.md +0 -61
  473. package/bundled-skills/wiki-import/SKILL.md +0 -276
  474. package/bundled-skills/wiki-ingest/SKILL.md +0 -563
  475. package/bundled-skills/wiki-ingest/references/ingest-prompts.md +0 -54
  476. package/bundled-skills/wiki-ingest/references/pageindex.md +0 -72
  477. package/bundled-skills/wiki-ingest/references/url-sources.md +0 -295
  478. package/bundled-skills/wiki-lint/SKILL.md +0 -643
  479. package/bundled-skills/wiki-narrate/SKILL.md +0 -120
  480. package/bundled-skills/wiki-narrate/references/voices.md +0 -29
  481. package/bundled-skills/wiki-query/SKILL.md +0 -307
  482. package/bundled-skills/wiki-rebuild/SKILL.md +0 -212
  483. package/bundled-skills/wiki-research/SKILL.md +0 -319
  484. package/bundled-skills/wiki-setup/SKILL.md +0 -359
  485. package/bundled-skills/wiki-stage-commit/SKILL.md +0 -164
  486. package/bundled-skills/wiki-status/SKILL.md +0 -556
  487. package/bundled-skills/wiki-switch/SKILL.md +0 -115
  488. package/bundled-skills/wiki-synthesize/SKILL.md +0 -212
  489. package/bundled-skills/wiki-update/SKILL.md +0 -271
  490. package/skills/ai-security/SKILL.md +0 -132
  491. package/skills/ai-security/references/atlas-coverage.md +0 -60
  492. package/skills/ai-security/scripts/ai_threat_scanner.py +0 -373
  493. package/skills/anti-AI-design/SKILL.md +0 -72
  494. package/skills/apple-hig-audit/SKILL.md +0 -64
  495. package/skills/apple-hig-audit/references/accessibility.md +0 -78
  496. package/skills/apple-hig-audit/references/platform-specifics.md +0 -57
  497. package/skills/apple-hig-audit/references/visual-design.md +0 -68
  498. package/skills/apple-hig-audit/scripts/hig_checker.py +0 -115
  499. package/skills/apple-hig-audit/templates/hig-audit-template.md +0 -114
  500. package/skills/dependency-auditor/README.md +0 -98
  501. package/skills/dependency-auditor/SKILL.md +0 -114
  502. package/skills/dependency-auditor/assets/sample_go.mod +0 -53
  503. package/skills/dependency-auditor/assets/sample_package.json +0 -72
  504. package/skills/dependency-auditor/assets/sample_requirements.txt +0 -71
  505. package/skills/dependency-auditor/expected_outputs/sample_license_report.txt +0 -37
  506. package/skills/dependency-auditor/expected_outputs/sample_upgrade_plan.txt +0 -59
  507. package/skills/dependency-auditor/expected_outputs/sample_vulnerability_report.json +0 -71
  508. package/skills/dependency-auditor/references/dependency_management_best_practices.md +0 -46
  509. package/skills/dependency-auditor/references/license_compatibility_matrix.md +0 -57
  510. package/skills/dependency-auditor/references/vulnerability_assessment_guide.md +0 -62
  511. package/skills/dependency-auditor/scripts/dep_scanner.py +0 -595
  512. package/skills/dependency-auditor/scripts/license_checker.py +0 -442
  513. package/skills/dependency-auditor/scripts/upgrade_planner.py +0 -490
  514. package/skills/dependency-auditor/test-inventory.json +0 -421
  515. package/skills/dependency-auditor/test-project/package.json +0 -72
  516. package/skills/design-system-tokens/SKILL.md +0 -90
  517. package/skills/design-system-tokens/assets/design_system_doc_template.md +0 -129
  518. package/skills/design-system-tokens/references/component-architecture.md +0 -88
  519. package/skills/design-system-tokens/references/developer-handoff.md +0 -61
  520. package/skills/design-system-tokens/references/responsive-calculations.md +0 -72
  521. package/skills/design-system-tokens/references/token-generation.md +0 -62
  522. package/skills/design-system-tokens/scripts/design_token_generator.py +0 -315
  523. package/skills/engineering-code-standards/SKILL.md +0 -174
  524. package/skills/env-secrets-manager/SKILL.md +0 -102
  525. package/skills/env-secrets-manager/references/secret-patterns.md +0 -56
  526. package/skills/env-secrets-manager/references/validation-detection-rotation.md +0 -76
  527. package/skills/env-secrets-manager/scripts/env_auditor.py +0 -340
  528. package/skills/frontend-design-taste/SKILL.md +0 -62
  529. package/skills/mcp-server-builder/README.md +0 -42
  530. package/skills/mcp-server-builder/SKILL.md +0 -144
  531. package/skills/mcp-server-builder/references/openapi-extraction-guide.md +0 -34
  532. package/skills/mcp-server-builder/references/production-hardening-guide.md +0 -80
  533. package/skills/mcp-server-builder/references/python-server-template.md +0 -22
  534. package/skills/mcp-server-builder/references/spec-compatibility.md +0 -129
  535. package/skills/mcp-server-builder/references/typescript-server-template.md +0 -19
  536. package/skills/mcp-server-builder/references/validation-checklist.md +0 -30
  537. package/skills/mcp-server-builder/scripts/mcp_validator.py +0 -180
  538. package/skills/mcp-server-builder/scripts/openapi_to_mcp.py +0 -279
  539. package/skills/playwright-agent/SKILL.md +0 -147
  540. package/skills/skill-creator/LICENSE.txt +0 -14
  541. package/skills/skill-creator/SKILL.md +0 -471
  542. package/skills/skill-creator/agents/analyzer.md +0 -274
  543. package/skills/skill-creator/agents/comparator.md +0 -202
  544. package/skills/skill-creator/agents/grader.md +0 -223
  545. package/skills/skill-creator/assets/eval_review.html +0 -143
  546. package/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  547. package/skills/skill-creator/eval-viewer/viewer.html +0 -1321
  548. package/skills/skill-creator/references/schemas.md +0 -430
  549. package/skills/skill-creator/scripts/__init__.py +0 -0
  550. package/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  551. package/skills/skill-creator/scripts/generate_report.py +0 -322
  552. package/skills/skill-creator/scripts/improve_description.py +0 -247
  553. package/skills/skill-creator/scripts/package_skill.py +0 -136
  554. package/skills/skill-creator/scripts/quick_validate.py +0 -103
  555. package/skills/skill-creator/scripts/run_eval.py +0 -310
  556. package/skills/skill-creator/scripts/run_loop.py +0 -328
  557. package/skills/skill-creator/scripts/utils.py +0 -47
  558. package/skills/write-a-skill/SKILL.md +0 -111
  559. package/skills/write-a-skill/references/companion_tooling.md +0 -61
  560. package/skills/write-a-skill/references/description_design_patterns.md +0 -136
  561. package/skills/write-a-skill/references/progressive_disclosure_principles.md +0 -87
  562. package/skills/write-a-skill/references/quality_gates_for_skills.md +0 -158
  563. package/skills/write-a-skill/scripts/skill_description_validator.py +0 -241
  564. package/skills/write-a-skill/scripts/skill_review_checklist_runner.py +0 -257
  565. package/skills/write-a-skill/scripts/skill_structure_validator.py +0 -265
@@ -1,168 +0,0 @@
1
- # Email Sequence Templates
2
-
3
- Detailed templates for common email sequences.
4
-
5
- ## Contents
6
- - Welcome Sequence (Post-Signup)
7
- - Lead Nurture Sequence (Pre-Sale)
8
- - Re-Engagement Sequence
9
- - Onboarding Sequence (Product Users)
10
-
11
- ## Welcome Sequence (Post-Signup)
12
-
13
- **Email 1: Welcome (Immediate)**
14
- - Subject: Welcome to [Product] — here's your first step
15
- - Deliver what was promised (lead magnet, access, etc.)
16
- - Single next action
17
- - Set expectations for future emails
18
-
19
- **Email 2: Quick Win (Day 1-2)**
20
- - Subject: Get your first [result] in 10 minutes
21
- - Enable small success
22
- - Build confidence
23
- - Link to helpful resource
24
-
25
- **Email 3: Story/Why (Day 3-4)**
26
- - Subject: Why we built [Product]
27
- - Origin story or mission
28
- - Connect emotionally
29
- - Show you understand their problem
30
-
31
- **Email 4: Social Proof (Day 5-6)**
32
- - Subject: How [Customer] achieved [Result]
33
- - Case study or testimonial
34
- - Relatable to their situation
35
- - Soft CTA to explore
36
-
37
- **Email 5: Overcome Objection (Day 7-8)**
38
- - Subject: "I don't have time for X" — sound familiar?
39
- - Address common hesitation
40
- - Reframe the obstacle
41
- - Show easy path forward
42
-
43
- **Email 6: Core Feature (Day 9-11)**
44
- - Subject: Have you tried [Feature] yet?
45
- - Highlight underused capability
46
- - Show clear benefit
47
- - Direct CTA to try it
48
-
49
- **Email 7: Conversion (Day 12-14)**
50
- - Subject: Ready to [upgrade/buy/commit]?
51
- - Summarize value
52
- - Clear offer
53
- - Urgency if appropriate
54
- - Risk reversal (guarantee, trial)
55
-
56
- ---
57
-
58
- ## Lead Nurture Sequence (Pre-Sale)
59
-
60
- **Email 1: Deliver + Introduce (Immediate)**
61
- - Deliver the lead magnet
62
- - Brief intro to who you are
63
- - Preview what's coming
64
-
65
- **Email 2: Expand on Topic (Day 2-3)**
66
- - Related insight to lead magnet
67
- - Establish expertise
68
- - Light CTA to content
69
-
70
- **Email 3: Problem Deep-Dive (Day 4-5)**
71
- - Articulate their problem deeply
72
- - Show you understand
73
- - Hint at solution
74
-
75
- **Email 4: Solution Framework (Day 6-8)**
76
- - Your approach/methodology
77
- - Educational, not salesy
78
- - Builds toward your product
79
-
80
- **Email 5: Case Study (Day 9-11)**
81
- - Real results from real customer
82
- - Specific and relatable
83
- - Soft CTA
84
-
85
- **Email 6: Differentiation (Day 12-14)**
86
- - Why your approach is different
87
- - Address alternatives
88
- - Build preference
89
-
90
- **Email 7: Objection Handler (Day 15-18)**
91
- - Common concern addressed
92
- - FAQ or myth-busting
93
- - Reduce friction
94
-
95
- **Email 8: Direct Offer (Day 19-21)**
96
- - Clear pitch
97
- - Strong value proposition
98
- - Specific CTA
99
- - Urgency if available
100
-
101
- ---
102
-
103
- ## Re-Engagement Sequence
104
-
105
- **Email 1: Check-In (Day 30-60 of inactivity)**
106
- - Subject: Is everything okay, [Name]?
107
- - Genuine concern
108
- - Ask what happened
109
- - Easy win to re-engage
110
-
111
- **Email 2: Value Reminder (Day 2-3 after)**
112
- - Subject: Remember when you [achieved X]?
113
- - Remind of past value
114
- - What's new since they left
115
- - Quick CTA
116
-
117
- **Email 3: Incentive (Day 5-7 after)**
118
- - Subject: We miss you — here's something special
119
- - Offer if appropriate
120
- - Limited time
121
- - Clear CTA
122
-
123
- **Email 4: Last Chance (Day 10-14 after)**
124
- - Subject: Should we stop emailing you?
125
- - Honest and direct
126
- - One-click to stay or go
127
- - Clean the list if no response
128
-
129
- ---
130
-
131
- ## Onboarding Sequence (Product Users)
132
-
133
- Coordinate with in-app onboarding. Email supports, doesn't duplicate.
134
-
135
- **Email 1: Welcome + First Step (Immediate)**
136
- - Confirm signup
137
- - One critical action
138
- - Link directly to that action
139
-
140
- **Email 2: Getting Started Help (Day 1)**
141
- - If they haven't completed step 1
142
- - Quick tip or video
143
- - Support option
144
-
145
- **Email 3: Feature Highlight (Day 2-3)**
146
- - Key feature they should know
147
- - Specific use case
148
- - In-app link
149
-
150
- **Email 4: Success Story (Day 4-5)**
151
- - Customer who succeeded
152
- - Relatable journey
153
- - Motivational
154
-
155
- **Email 5: Check-In (Day 7)**
156
- - How's it going?
157
- - Ask for feedback
158
- - Offer help
159
-
160
- **Email 6: Advanced Tip (Day 10-12)**
161
- - Power feature
162
- - For engaged users
163
- - Level-up content
164
-
165
- **Email 7: Upgrade/Expand (Day 14+)**
166
- - For trial users: conversion push
167
- - For free users: upgrade prompt
168
- - For paid: expansion opportunity
@@ -1,29 +0,0 @@
1
- ---
2
- name: explore-codebase
3
- description: Navigate and understand codebase structure using the knowledge graph
4
- ---
5
-
6
- ## Explore Codebase
7
-
8
- Use the code-review-graph MCP tools to explore and understand the codebase.
9
-
10
- ### Steps
11
-
12
- 1. Run `list_graph_stats_tool` to see overall codebase metrics.
13
- 2. Run `get_architecture_overview_tool` for high-level community structure.
14
- 3. Use `list_communities_tool` to find major modules, then `get_community_tool` for details.
15
- 4. Use `semantic_search_nodes_tool` to find specific functions or classes.
16
- 5. Use `query_graph_tool` with patterns like `callers_of`, `callees_of`, `imports_of` to trace relationships.
17
- 6. Use `list_flows_tool` and `get_flow_tool` to understand execution paths.
18
-
19
- ### Tips
20
-
21
- - Start broad (stats, architecture) then narrow down to specific areas.
22
- - Use `children_of` on a file to see all its functions and classes.
23
- - Use `find_large_functions_tool` to identify complex code.
24
-
25
- ## Token Efficiency Rules
26
- - Start with `get_minimal_context_tool(task="<your task>")` before other graph tools.
27
- - Use `detail_level="minimal"` on all calls. Only escalate to "standard" when minimal is insufficient.
28
- - Target: complete any review/debug/refactor task in ≤5 tool calls and ≤800 total output tokens.
29
- - Read the implementation and its tests before changing code. The graph narrows scope; it does not replace the source.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Emil Kowalski
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,385 +0,0 @@
1
- # Expo Animation Recipes
2
-
3
- Ready-to-build implementations for the cases that come up most in a React Native app. Start from the recipe, then adapt.
4
-
5
- ---
6
-
7
- ## Setup the recipes assume
8
-
9
- ```bash
10
- npx expo install react-native-reanimated react-native-worklets react-native-gesture-handler expo-haptics
11
- ```
12
-
13
- (`react-native-keyboard-controller` only for the keyboard recipe.) `expo install`, not `npm install` — it resolves the versions that match the SDK. The worklets Babel plugin is configured by `babel-preset-expo` automatically.
14
-
15
- `GestureHandlerRootView` wraps the app once — in Expo Router, the root `_layout`:
16
-
17
- ```jsx
18
- import { GestureHandlerRootView } from 'react-native-gesture-handler';
19
-
20
- export default function RootLayout() {
21
- return (
22
- <GestureHandlerRootView style={{ flex: 1 }}>
23
- <Stack />
24
- </GestureHandlerRootView>
25
- );
26
- }
27
- ```
28
-
29
- Imports and constants every recipe below shares:
30
-
31
- ```js
32
- import { useState, useEffect, useMemo } from 'react';
33
- import Animated, {
34
- useSharedValue, useAnimatedStyle, useAnimatedScrollHandler, useAnimatedReaction,
35
- withSpring, withTiming, interpolate, Extrapolation, Easing,
36
- FadeInDown, FadeOutDown, LinearTransition,
37
- } from 'react-native-reanimated';
38
- import { Gesture, GestureDetector } from 'react-native-gesture-handler';
39
- import { scheduleOnRN } from 'react-native-worklets';
40
- import * as Haptics from 'expo-haptics';
41
-
42
- const EASE_OUT = Easing.bezier(0.23, 1, 0.32, 1); // strong ease-out for UI
43
- const EASE_IN_OUT = Easing.bezier(0.77, 0, 0.175, 1); // on-screen movement
44
- const EASE_SHEET = Easing.bezier(0.32, 0.72, 0, 1); // iOS sheet curve
45
- ```
46
-
47
- Three conventions, explained once here instead of in every recipe:
48
-
49
- - **Shared values are read and written with `.get()` / `.set()`**, the form the Reanimated docs recommend for React Compiler support. `.value` still works, but the compiler can't see through it.
50
- - **`scheduleOnRN(fn, ...args)` replaces the deprecated `runOnJS(fn)(...args)`** for calling back to the React Native runtime from a worklet.
51
- - **Gestures are wrapped in `useMemo`.** Rebuilding a gesture on every render can reattach the recognizer and drop a drag that's mid-flight.
52
-
53
- **Gesture Handler v3:** Expo installs v2, and the recipes use its `Gesture.Pan()` builder. If the project is already on v3, the builder is legacy — each gesture is a hook taking one config object, with `onStart` → `onActivate`, `onEnd` → `onDeactivate`, and the `success` flag replaced by `event.canceled` (inverted). The hook manages its own identity, so drop the `useMemo`:
54
-
55
- ```jsx
56
- const pan = usePanGesture({
57
- activeOffsetY: [-10, 10],
58
- onActivate: () => { context.set(translateY.get()); },
59
- onUpdate: (e) => { translateY.set(context.get() + e.translationY); },
60
- onDeactivate: (e) => { /* settle with withSpring as below */ },
61
- });
62
- ```
63
-
64
- ---
65
-
66
- ## Two worklets you'll need everywhere
67
-
68
- Momentum projection decides *where a flick was going*, so a fast short swipe commits and a slow long one doesn't. Rubber-banding makes a boundary resist instead of stopping dead.
69
-
70
- ```js
71
- // Where the finger would come to rest if it kept decelerating.
72
- // Apple's exponential-decay form — not the v²/2a from physics class.
73
- function project(velocity, decelerationRate = 0.998) {
74
- 'worklet';
75
- return ((velocity / 1000) * decelerationRate) / (1 - decelerationRate);
76
- }
77
-
78
- // The further past the edge, the less the element follows.
79
- function rubberband(overshoot, dimension, constant = 0.55) {
80
- 'worklet';
81
- return (overshoot * dimension * constant) / (dimension + constant * Math.abs(overshoot));
82
- }
83
- ```
84
-
85
- ---
86
-
87
- ## Press feedback
88
-
89
- Every pressable in the app. This passes the frequency gate only because it's near-imperceptible: 120ms and a 3% scale is the ceiling for something touched this often — anything longer or larger belongs to rarer moments, per step 1 in SKILL.md. No gesture, no shared value — a CSS transition is the whole implementation.
90
-
91
- ```jsx
92
- import Animated from 'react-native-reanimated';
93
- import { Pressable, StyleSheet } from 'react-native';
94
-
95
- function PressableScale({ onPress, children }) {
96
- const [pressed, setPressed] = useState(false);
97
- return (
98
- <Pressable
99
- onPress={onPress}
100
- onPressIn={() => setPressed(true)}
101
- onPressOut={() => setPressed(false)}
102
- hitSlop={12}
103
- pressRetentionOffset={16}
104
- >
105
- <Animated.View style={[styles.box, pressed && styles.pressed]}>{children}</Animated.View>
106
- </Pressable>
107
- );
108
- }
109
-
110
- const styles = StyleSheet.create({
111
- box: {
112
- transform: [{ scale: 1 }],
113
- transitionProperty: 'transform',
114
- transitionDuration: '120ms',
115
- transitionTimingFunction: 'cubic-bezier(0.23, 1, 0.32, 1)',
116
- },
117
- pressed: { transform: [{ scale: 0.97 }] },
118
- });
119
- ```
120
-
121
- `setState` is fine here — it fires twice per press, not per frame. `hitSlop` brings a small icon up to the 44pt target without growing it; `pressRetentionOffset` stops a slight finger drift from cancelling.
122
-
123
- ---
124
-
125
- ## Bottom sheet you can drag to dismiss
126
-
127
- Before writing this: if the sheet is its own destination, use `presentation: 'formSheet'` (see **Screen transitions**) and get the platform's real sheet for free. Build this only when the sheet has to live inside an existing screen.
128
-
129
- ```jsx
130
- const translateY = useSharedValue(0);
131
- const context = useSharedValue(0);
132
-
133
- const pan = useMemo(() => Gesture.Pan()
134
- .activeOffsetY([-10, 10]) // let a horizontal swipe win; require intent before committing
135
- .onStart(() => {
136
- context.set(translateY.get()); // start from the current on-screen value, not from 0
137
- })
138
- .onUpdate((e) => {
139
- const next = context.get() + e.translationY;
140
- // downward is free; upward past the top resists
141
- translateY.set(next >= 0 ? next : rubberband(next, HEIGHT));
142
- })
143
- .onEnd((e) => {
144
- const projected = translateY.get() + project(e.velocityY);
145
- if (projected > HEIGHT * 0.4) {
146
- translateY.set(withSpring(HEIGHT, {
147
- duration: 300, dampingRatio: 1, velocity: e.velocityY, overshootClamping: true,
148
- }, (finished) => { if (finished) scheduleOnRN(onClose); }));
149
- } else {
150
- translateY.set(withSpring(0, { duration: 300, dampingRatio: 0.8, velocity: e.velocityY }));
151
- scheduleOnRN(Haptics.impactAsync, Haptics.ImpactFeedbackStyle.Light); // it snapped home
152
- }
153
- }), [onClose]);
154
-
155
- const sheetStyle = useAnimatedStyle(() => ({ transform: [{ translateY: translateY.get() }] }));
156
- ```
157
-
158
- The four details that separate this from a bad drag:
159
-
160
- - **`onStart` captures the current value.** Without it, grabbing a sheet mid-animation teleports it — the animation must continue from where the eye last saw it.
161
- - **Velocity decides, not distance.** `project()` means a quick flick dismisses even a few pixels down. Requiring 40% travel makes the sheet feel heavy.
162
- - **Velocity is handed to the spring**, so there's no seam between the finger releasing and the animation continuing. This is the single detail that most separates "fluid" from "fine".
163
- - **`overshootClamping` on dismissal** — otherwise the sheet springs past the bottom of the screen and flashes a gap.
164
-
165
- The backdrop derives from the same value, so it's always in sync and costs nothing:
166
-
167
- ```jsx
168
- const backdropStyle = useAnimatedStyle(() => ({
169
- opacity: interpolate(translateY.get(), [0, HEIGHT], [1, 0], Extrapolation.CLAMP),
170
- }));
171
- ```
172
-
173
- ---
174
-
175
- ## Swipe to delete a row
176
-
177
- Before writing this: gesture-handler ships [`ReanimatedSwipeable`](https://docs.swmansion.com/react-native-gesture-handler/docs/components/reanimated_swipeable/), which already does swipe-to-reveal actions — thresholds, overshoot, open/close methods — on the UI thread. Reach for it when the row reveals action buttons. Build the gesture yourself only when the interaction is different in kind: swipe-to-commit with momentum projection, like this one.
178
-
179
- ```jsx
180
- const x = useSharedValue(0);
181
- const context = useSharedValue(0);
182
-
183
- const pan = useMemo(() => Gesture.Pan()
184
- .activeOffsetX([-10, 10]) // must declare the axis, or it fights the vertical scroll
185
- .onStart(() => { context.set(x.get()); }) // grab mid-spring continues from where the row is, not from 0
186
- .onUpdate((e) => { x.set(Math.min(0, context.get() + e.translationX)); })
187
- .onEnd((e) => {
188
- const projected = x.get() + project(e.velocityX);
189
- if (projected < -SWIPE_THRESHOLD) {
190
- x.set(withTiming(-WIDTH, { duration: 200, easing: EASE_OUT }, (f) => {
191
- if (f) scheduleOnRN(onDelete, id);
192
- }));
193
- } else {
194
- x.set(withSpring(0, { duration: 300, dampingRatio: 1, velocity: e.velocityX }));
195
- }
196
- }), [onDelete, id]);
197
- ```
198
-
199
- Closing the gap the deleted row left is the list's job, not the row's:
200
-
201
- ```jsx
202
- const ROW_CLOSE = LinearTransition.duration(200); // module scope — builders rebuilt in render cost every re-render
203
-
204
- <Animated.FlatList data={items} itemLayoutAnimation={ROW_CLOSE} ... />
205
- ```
206
-
207
- `activeOffsetX` is the mobile-specific part. A pan handler inside a scroll view with no axis declared will steal vertical scrolls, and the list will feel broken in a way that looks like a scrolling bug rather than a gesture bug.
208
-
209
- ---
210
-
211
- ## Collapsing header on scroll
212
-
213
- ```jsx
214
- const scrollY = useSharedValue(0);
215
- const onScroll = useAnimatedScrollHandler((e) => { scrollY.set(e.contentOffset.y); });
216
-
217
- const titleStyle = useAnimatedStyle(() => ({
218
- opacity: interpolate(scrollY.get(), [0, 60], [1, 0], Extrapolation.CLAMP),
219
- transform: [{ translateY: interpolate(scrollY.get(), [0, 60], [0, -12], Extrapolation.CLAMP) }],
220
- }));
221
-
222
- <Animated.ScrollView onScroll={onScroll} scrollEventThrottle={16}>
223
- ```
224
-
225
- **Never animate the header's `height` to collapse it.** That runs a layout pass on the header and everything below it on every scroll frame — the one animation guaranteed to stutter, because it's competing with the scroll itself. Give the container a fixed height and translate the content inside it, clipping with `overflow: 'hidden'`.
226
-
227
- `Extrapolation.CLAMP` is not optional: without it, scrolling past 60 keeps driving opacity negative and the header reappears inverted at the bottom of a long list.
228
-
229
- ---
230
-
231
- ## List entrances
232
-
233
- ```jsx
234
- // The Reanimated docs recommend building layout animations outside components,
235
- // or in useMemo — an inline chain in JSX rebuilds the builder on every render.
236
- // A per-index delay can't live at module scope, so the row memoizes its own:
237
- function Row({ item, index }) {
238
- const entering = useMemo(() => FadeInDown.duration(250).delay(index * 40), [index]);
239
- return <Animated.View entering={entering}>{/* ... */}</Animated.View>;
240
- }
241
-
242
- {items.map((item, i) => <Row key={item.id} item={item} index={i} />)}
243
- ```
244
-
245
- Stagger 30–80ms. Longer feels slow, shorter reads as simultaneous.
246
-
247
- **Never put `entering` on a row inside `FlatList`, `FlashList`, or any virtualized list.** Rows are recycled, so the animation re-fires every time one scrolls back into view — the list appears to flicker while the user scrolls. Animate the list container once on mount, or use `itemLayoutAnimation` for reflow only.
248
-
249
- Entrance animations are for content the user asked for and is waiting on. A list they scroll past all day should already be there.
250
-
251
- ---
252
-
253
- ## Keyboard-synced UI
254
-
255
- Needs its own module and a one-time provider ([Expo keyboard guide](https://docs.expo.dev/guides/keyboard-handling/)):
256
-
257
- ```bash
258
- npx expo install react-native-keyboard-controller
259
- ```
260
-
261
- ```jsx
262
- import { KeyboardProvider } from 'react-native-keyboard-controller';
263
-
264
- // Root _layout, next to GestureHandlerRootView — hooks below do nothing without it.
265
- <KeyboardProvider>
266
- <Stack />
267
- </KeyboardProvider>
268
- ```
269
-
270
- ```jsx
271
- import { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller';
272
-
273
- const { height } = useReanimatedKeyboardAnimation(); // 0 → -keyboardHeight, on the UI thread
274
- const footerStyle = useAnimatedStyle(() => ({ transform: [{ translateY: height.get() }] }));
275
- ```
276
-
277
- Never build this from `Keyboard.addListener` plus a timing animation. The keyboard rides a private system curve, the event arrives on the JS thread after the keyboard has already started moving, and any duration you pick will visibly lag or lead it. The UI must be driven by the keyboard's actual position, frame by frame.
278
-
279
- ---
280
-
281
- ## Tab / segmented indicator
282
-
283
- Measure once, then animate transforms.
284
-
285
- ```jsx
286
- const [layouts, setLayouts] = useState({}); // measured with onLayout, not per frame
287
- const x = useSharedValue(0);
288
- const w = useSharedValue(0);
289
-
290
- useEffect(() => {
291
- const l = layouts[active];
292
- if (!l) return;
293
- x.set(withTiming(l.x, { duration: 250, easing: EASE_IN_OUT }));
294
- w.set(withTiming(l.width, { duration: 250, easing: EASE_IN_OUT }));
295
- }, [active, layouts]);
296
-
297
- const pillStyle = useAnimatedStyle(() => ({
298
- transform: [{ translateX: x.get() }],
299
- width: w.get(),
300
- }));
301
- ```
302
-
303
- This is the sanctioned `width` animation: the pill is absolutely positioned with no children, so nothing else re-lays-out, and its corner radius survives — `scaleX` would smear the corners into ovals.
304
-
305
- `ease-in-out`, because the pill is moving across the screen rather than entering or leaving it. Fire `Haptics.selectionAsync()` on the press, not when the pill lands.
306
-
307
- ---
308
-
309
- ## Screen transitions (Expo Router)
310
-
311
- Configure the native stack. Never rebuild a screen transition in JS: the native one runs on the platform side, keeps the interactive back gesture, and matches every other app on the device.
312
-
313
- ```jsx
314
- <Stack screenOptions={{ animation: reduced ? 'fade' : 'default' }}>
315
- <Stack.Screen name="settings" options={{ animation: 'slide_from_right', animationMatchesGesture: true }} />
316
- <Stack.Screen name="compose" options={{ presentation: 'modal' }} />
317
- <Stack.Screen name="filter" options={{
318
- presentation: 'formSheet',
319
- sheetAllowedDetents: 'fitToContents',
320
- sheetGrabberVisible: true,
321
- }} />
322
- </Stack>
323
- ```
324
-
325
- | Navigation | Option |
326
- | --- | --- |
327
- | Deeper into a hierarchy | `animation: 'default'` — the platform push, unmodified |
328
- | A self-contained task the user can abandon | `presentation: 'modal'` |
329
- | A short interruption: picker, filter, share | `presentation: 'formSheet'` with detents |
330
- | Between tabs | `animation: 'none'` |
331
- | Reduced motion | `animation: 'fade'` |
332
-
333
- `animationMatchesGesture: true` makes the iOS back swipe run your transition in reverse under the finger, instead of the default push. Set it whenever you set a custom `animation`, or dragging back looks like a different app than pushing forward.
334
-
335
- `formSheet` is native on both platforms, but not the same on both — the [Expo modal docs](https://docs.expo.dev/router/advanced/modals/#form-sheet-presentation) have the full list:
336
-
337
- - **Android caps detents at three.** A longer `sheetAllowedDetents` array works on iOS and silently truncates on Android — design for three.
338
- - **`sheetGrabberVisible` is iOS-only.** Android shows no grabber; don't rely on it as the only "this is draggable" affordance.
339
- - **Android form sheets can't host native headers or nested stacks.** Keep the sheet's content a single screen; if it needs its own navigation, use `presentation: 'modal'` instead.
340
- - **`fitToContents` needs explicitly sized content.** A `flex: 1` root has no intrinsic height to fit — size the content, or the detent is wrong.
341
-
342
- ---
343
-
344
- ## Toast
345
-
346
- ```jsx
347
- // Module scope — layout-animation builders live outside the component.
348
- const TOAST_ENTER = FadeInDown.duration(300).easing(EASE_OUT);
349
- const TOAST_EXIT = FadeOutDown.duration(250).easing(EASE_OUT);
350
-
351
- <Animated.View
352
- entering={TOAST_ENTER}
353
- exiting={TOAST_EXIT}
354
- style={{ position: 'absolute', bottom: insets.bottom + 16, left: 16, right: 16 }}
355
- />
356
- ```
357
-
358
- - **The 300ms cap holds here too.** A toast isn't an exception — it's uninvited, so if anything it should be quicker and quieter than motion the user asked for.
359
- - **It exits the way it entered.** Entering from the bottom and leaving to the side reads as two unrelated elements.
360
- - **Exit ~20% faster than entry.** The user has finished reading; the arrival deserves the time, the departure doesn't.
361
- - **Safe area insets, always.** A toast at `bottom: 16` sits under the home indicator on every modern iPhone.
362
-
363
- If toasts stack and the list reflows, add `itemLayoutAnimation` and expect to tune the opacity against the reflow by eye — there's no formula for that pair. Look at it again the next day.
364
-
365
- ---
366
-
367
- ## Firing something once at a threshold
368
-
369
- When a crossing point matters — a detent, a snap, a pull-to-refresh arming — don't poll it from JS and don't `scheduleOnRN` every frame.
370
-
371
- ```jsx
372
- const armed = useSharedValue(false);
373
-
374
- useAnimatedReaction(
375
- () => pullDistance.get() > REFRESH_THRESHOLD,
376
- (isArmed, wasArmed) => {
377
- if (isArmed !== wasArmed) {
378
- armed.set(isArmed);
379
- scheduleOnRN(Haptics.impactAsync, Haptics.ImpactFeedbackStyle.Light);
380
- }
381
- }
382
- );
383
- ```
384
-
385
- The comparison runs on the UI thread every frame; the JS call happens twice per pull. That's the pattern for every "do something when the animation reaches X".