novahiz 0.2.3 → 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 (555) hide show
  1. package/NOTICE.md +25 -15
  2. package/README.md +27 -29
  3. package/adapters/README.md +1 -1
  4. package/adapters/opencode/agent/novahiz.md +1 -2
  5. package/adapters/opencode/instructions.md +1 -1
  6. package/adapters/opencode/novahiz.ts +1 -1
  7. package/bin/novahiz.cmd +2 -2
  8. package/catalog/categories.json +1085 -1093
  9. package/catalog/overrides.json +12 -13
  10. package/catalog/providers.json +18 -34
  11. package/catalog/rules.json +15 -22
  12. package/docs/ARCHITECTURE.md +2 -2
  13. package/docs/CATALOG.md +7 -6
  14. package/docs/CONFIGURATION.md +3 -3
  15. package/docs/CONSTITUTION.md +4 -4
  16. package/docs/GATE.md +7 -11
  17. package/docs/HARNESSES.md +11 -0
  18. package/docs/INSTALL.md +7 -5
  19. package/docs/PROVIDERS.md +12 -10
  20. package/docs/ROADMAPS.md +4 -3
  21. package/docs/RULES.md +10 -9
  22. package/install/bootstrap.mjs +9 -19
  23. package/install/install.mjs +21 -41
  24. package/novahiz.config.example.json +1 -5
  25. package/package.json +1 -2
  26. package/skills/apple-ui-audit/SKILL.md +95 -0
  27. package/skills/apple-ui-audit/references/screen-walkthrough.md +29 -0
  28. package/skills/browser-session/SKILL.md +61 -0
  29. package/skills/browser-session/references/session-run-sheet.md +30 -0
  30. package/skills/browser-session/scripts/browser_session_preflight.mjs +74 -0
  31. package/skills/browser-session/scripts/sample-run.json +5 -0
  32. package/skills/code-standards/SKILL.md +85 -0
  33. package/skills/code-standards/references/pr-review-worksheet.md +35 -0
  34. package/skills/design-token-pipeline/SKILL.md +85 -0
  35. package/skills/design-token-pipeline/references/dtcg-sample.json +37 -0
  36. package/skills/llm-threat-review/SKILL.md +99 -0
  37. package/skills/llm-threat-review/references/review-worksheet.md +34 -0
  38. package/skills/llm-threat-review/scripts/llm_risk_lint.mjs +105 -0
  39. package/skills/novahiz-audit/SKILL.md +1 -1
  40. package/skills/novahiz-gate/SKILL.md +6 -5
  41. package/skills/novahiz-humanizer/SKILL.md +1 -1
  42. package/skills/novahiz-implement/SKILL.md +1 -1
  43. package/skills/novahiz-init/SKILL.md +1 -1
  44. package/skills/novahiz-planner/SKILL.md +1 -2
  45. package/skills/openapi-mcp-server/SKILL.md +76 -0
  46. package/skills/openapi-mcp-server/references/mcp-ship-checklist.md +30 -0
  47. package/skills/openapi-mcp-server/references/tool-worksheet.md +30 -0
  48. package/skills/openapi-mcp-server/scripts/openapi_mcp_lint.mjs +133 -0
  49. package/skills/package-risk-audit/SKILL.md +83 -0
  50. package/skills/package-risk-audit/references/intake-worksheet.md +19 -0
  51. package/skills/package-risk-audit/scripts/dep_risk_lint.mjs +131 -0
  52. package/skills/secrets-hygiene/SKILL.md +62 -0
  53. package/skills/secrets-hygiene/references/rotation-playbook.md +27 -0
  54. package/skills/secrets-hygiene/scripts/secret_scan.mjs +120 -0
  55. package/skills/skill-authoring/SKILL.md +93 -0
  56. package/skills/skill-authoring/references/skill-template.md +59 -0
  57. package/skills/skill-authoring/scripts/skill_frontmatter_lint.mjs +65 -0
  58. package/skills/skill-eval-loop/SKILL.md +103 -0
  59. package/skills/skill-eval-loop/references/negative-patterns.md +12 -0
  60. package/skills/skill-eval-loop/references/run-sheet.md +40 -0
  61. package/skills/skill-eval-loop/scripts/skill_structure_check.mjs +100 -0
  62. package/skills/ui-craft-rules/SKILL.md +96 -0
  63. package/skills/ui-slop-remover/SKILL.md +110 -0
  64. package/skills/ui-slop-remover/references/tell-catalogue.md +58 -0
  65. package/skills/ui-slop-remover/scripts/slop_lint.mjs +119 -0
  66. package/src/commands/gate.ts +16 -5
  67. package/src/gate.ts +401 -401
  68. package/src/ledger.ts +16 -0
  69. package/bundled-skills/ab-testing/SKILL.md +0 -353
  70. package/bundled-skills/ab-testing/evals/evals.json +0 -105
  71. package/bundled-skills/ab-testing/references/sample-size-guide.md +0 -263
  72. package/bundled-skills/ab-testing/references/test-templates.md +0 -277
  73. package/bundled-skills/ad-creative/SKILL.md +0 -425
  74. package/bundled-skills/ad-creative/assets/creative-review-template.html +0 -400
  75. package/bundled-skills/ad-creative/evals/evals.json +0 -217
  76. package/bundled-skills/ad-creative/references/creative-review-page.md +0 -106
  77. package/bundled-skills/ad-creative/references/creative-roadmap.md +0 -118
  78. package/bundled-skills/ad-creative/references/generative-tools.md +0 -637
  79. package/bundled-skills/ad-creative/references/hook-system.md +0 -115
  80. package/bundled-skills/ad-creative/references/imessage-video-ads.md +0 -201
  81. package/bundled-skills/ad-creative/references/meta-creative-formats.md +0 -114
  82. package/bundled-skills/ad-creative/references/motion-video-ads.md +0 -126
  83. package/bundled-skills/ad-creative/references/platform-specs.md +0 -213
  84. package/bundled-skills/ad-creative/references/short-form-video-specs.md +0 -213
  85. package/bundled-skills/ad-creative/references/static-ad-templates.md +0 -308
  86. package/bundled-skills/ads/SKILL.md +0 -499
  87. package/bundled-skills/ads/evals/evals.json +0 -157
  88. package/bundled-skills/ads/references/abm-playbook.md +0 -93
  89. package/bundled-skills/ads/references/ad-copy-templates.md +0 -207
  90. package/bundled-skills/ads/references/audience-targeting.md +0 -243
  91. package/bundled-skills/ads/references/audit-guardrails.md +0 -83
  92. package/bundled-skills/ads/references/b2b-paid-playbook.md +0 -115
  93. package/bundled-skills/ads/references/conversion-tracking.md +0 -361
  94. package/bundled-skills/ads/references/creative-research-automation.md +0 -103
  95. package/bundled-skills/ads/references/google-ads-audit-checklist.md +0 -84
  96. package/bundled-skills/ads/references/google-search-playbook.md +0 -120
  97. package/bundled-skills/ads/references/linkedin-b2b-playbook.md +0 -107
  98. package/bundled-skills/ads/references/meta-decision-system.md +0 -176
  99. package/bundled-skills/ads/references/payback-period.md +0 -69
  100. package/bundled-skills/ads/references/platform-setup-checklists.md +0 -277
  101. package/bundled-skills/ads/references/rsa-output-spec.md +0 -88
  102. package/bundled-skills/agent-device/SKILL.md +0 -20
  103. package/bundled-skills/ai-seo/SKILL.md +0 -488
  104. package/bundled-skills/ai-seo/evals/evals.json +0 -135
  105. package/bundled-skills/ai-seo/references/agent-readiness.md +0 -57
  106. package/bundled-skills/ai-seo/references/citations-vs-recommendations.md +0 -85
  107. package/bundled-skills/ai-seo/references/content-patterns.md +0 -287
  108. package/bundled-skills/ai-seo/references/content-types.md +0 -71
  109. package/bundled-skills/ai-seo/references/format-volatility.md +0 -98
  110. package/bundled-skills/ai-seo/references/okf.md +0 -104
  111. package/bundled-skills/ai-seo/references/platform-ranking-factors.md +0 -154
  112. package/bundled-skills/ai-seo/references/youtube-ai-citations.md +0 -60
  113. package/bundled-skills/analytics/SKILL.md +0 -310
  114. package/bundled-skills/analytics/evals/evals.json +0 -90
  115. package/bundled-skills/analytics/references/event-library.md +0 -260
  116. package/bundled-skills/analytics/references/ga4-implementation.md +0 -300
  117. package/bundled-skills/analytics/references/gtm-implementation.md +0 -390
  118. package/bundled-skills/android-emulator/SKILL.md +0 -32
  119. package/bundled-skills/android-reverse-engineering/LICENSE +0 -190
  120. package/bundled-skills/android-reverse-engineering/SKILL.md +0 -313
  121. package/bundled-skills/android-reverse-engineering/references/api-extraction-patterns.md +0 -197
  122. package/bundled-skills/android-reverse-engineering/references/call-flow-analysis.md +0 -210
  123. package/bundled-skills/android-reverse-engineering/references/fernflower-usage.md +0 -115
  124. package/bundled-skills/android-reverse-engineering/references/jadx-usage.md +0 -116
  125. package/bundled-skills/android-reverse-engineering/references/kotlin-name-recovery.md +0 -108
  126. package/bundled-skills/android-reverse-engineering/references/setup-guide.md +0 -221
  127. package/bundled-skills/android-reverse-engineering/references/third_party_hosts.txt +0 -122
  128. package/bundled-skills/android-reverse-engineering/scripts/check-deps.ps1 +0 -165
  129. package/bundled-skills/android-reverse-engineering/scripts/check-deps.sh +0 -129
  130. package/bundled-skills/android-reverse-engineering/scripts/decompile.ps1 +0 -400
  131. package/bundled-skills/android-reverse-engineering/scripts/decompile.sh +0 -578
  132. package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.ps1 +0 -121
  133. package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.sh +0 -339
  134. package/bundled-skills/android-reverse-engineering/scripts/fingerprint.sh +0 -241
  135. package/bundled-skills/android-reverse-engineering/scripts/install-dep.ps1 +0 -345
  136. package/bundled-skills/android-reverse-engineering/scripts/install-dep.sh +0 -448
  137. package/bundled-skills/android-reverse-engineering/scripts/lookup-name.sh +0 -85
  138. package/bundled-skills/android-reverse-engineering/scripts/recover-kotlin-names.sh +0 -140
  139. package/bundled-skills/build-graph/SKILL.md +0 -38
  140. package/bundled-skills/claude-history-ingest/SKILL.md +0 -463
  141. package/bundled-skills/claude-history-ingest/references/claude-data-format.md +0 -118
  142. package/bundled-skills/codex-history-ingest/SKILL.md +0 -248
  143. package/bundled-skills/codex-history-ingest/references/codex-data-format.md +0 -82
  144. package/bundled-skills/cold-email/SKILL.md +0 -159
  145. package/bundled-skills/cold-email/evals/evals.json +0 -94
  146. package/bundled-skills/cold-email/references/benchmarks.md +0 -83
  147. package/bundled-skills/cold-email/references/follow-up-sequences.md +0 -81
  148. package/bundled-skills/cold-email/references/frameworks.md +0 -90
  149. package/bundled-skills/cold-email/references/personalization.md +0 -79
  150. package/bundled-skills/cold-email/references/subject-lines.md +0 -53
  151. package/bundled-skills/competitor-profiling/SKILL.md +0 -415
  152. package/bundled-skills/competitor-profiling/evals/evals.json +0 -85
  153. package/bundled-skills/competitor-profiling/references/templates.md +0 -167
  154. package/bundled-skills/competitor-profiling/references/tool-reference.md +0 -179
  155. package/bundled-skills/computer-use/SKILL.md +0 -41
  156. package/bundled-skills/content-strategy/SKILL.md +0 -439
  157. package/bundled-skills/content-strategy/evals/evals.json +0 -116
  158. package/bundled-skills/content-strategy/references/content-distribution.md +0 -83
  159. package/bundled-skills/content-strategy/references/headless-cms.md +0 -194
  160. package/bundled-skills/copilot-history-ingest/SKILL.md +0 -376
  161. package/bundled-skills/copilot-history-ingest/references/copilot-data-format.md +0 -321
  162. package/bundled-skills/copy-editing/SKILL.md +0 -457
  163. package/bundled-skills/copy-editing/evals/evals.json +0 -89
  164. package/bundled-skills/copy-editing/references/checklist.md +0 -66
  165. package/bundled-skills/copy-editing/references/content-refresh.md +0 -38
  166. package/bundled-skills/copy-editing/references/plain-english-alternatives.md +0 -394
  167. package/bundled-skills/copywriting/SKILL.md +0 -256
  168. package/bundled-skills/copywriting/evals/evals.json +0 -126
  169. package/bundled-skills/copywriting/references/copy-frameworks.md +0 -433
  170. package/bundled-skills/copywriting/references/natural-transitions.md +0 -272
  171. package/bundled-skills/cro/SKILL.md +0 -187
  172. package/bundled-skills/cro/evals/evals.json +0 -111
  173. package/bundled-skills/cro/references/experiments.md +0 -248
  174. package/bundled-skills/cro/references/form.md +0 -422
  175. package/bundled-skills/cross-linker/SKILL.md +0 -309
  176. package/bundled-skills/customer-research/SKILL.md +0 -305
  177. package/bundled-skills/customer-research/evals/evals.json +0 -176
  178. package/bundled-skills/customer-research/references/interviews-and-surveys.md +0 -155
  179. package/bundled-skills/customer-research/references/source-guides.md +0 -401
  180. package/bundled-skills/daily-update/SKILL.md +0 -223
  181. package/bundled-skills/dart-add-unit-test/SKILL.md +0 -122
  182. package/bundled-skills/dart-build-cli-app/SKILL.md +0 -185
  183. package/bundled-skills/dart-collect-coverage/SKILL.md +0 -141
  184. package/bundled-skills/dart-fix-runtime-errors/SKILL.md +0 -166
  185. package/bundled-skills/dart-generate-test-mocks/SKILL.md +0 -155
  186. package/bundled-skills/dart-migrate-to-checks-package/SKILL.md +0 -528
  187. package/bundled-skills/dart-resolve-package-conflicts/SKILL.md +0 -116
  188. package/bundled-skills/dart-run-static-analysis/SKILL.md +0 -104
  189. package/bundled-skills/dart-setup-ffi-assets/SKILL.md +0 -419
  190. package/bundled-skills/dart-use-doc-examples/SKILL.md +0 -96
  191. package/bundled-skills/dart-use-ffigen/SKILL.md +0 -218
  192. package/bundled-skills/dart-use-pattern-matching/SKILL.md +0 -146
  193. package/bundled-skills/dart-use-primary-constructors/SKILL.md +0 -262
  194. package/bundled-skills/dart-write-documentation/SKILL.md +0 -136
  195. package/bundled-skills/debug-issue/SKILL.md +0 -28
  196. package/bundled-skills/dogfood/SKILL.md +0 -27
  197. package/bundled-skills/eas-app-stores/SKILL.md +0 -176
  198. package/bundled-skills/eas-app-stores/agents/openai.yaml +0 -4
  199. package/bundled-skills/eas-app-stores/references/app-store-metadata.md +0 -497
  200. package/bundled-skills/eas-app-stores/references/ios-app-store.md +0 -376
  201. package/bundled-skills/eas-app-stores/references/native-ios.md +0 -167
  202. package/bundled-skills/eas-app-stores/references/play-store.md +0 -244
  203. package/bundled-skills/eas-app-stores/references/testflight.md +0 -62
  204. package/bundled-skills/eas-app-stores/references/workflows.md +0 -120
  205. package/bundled-skills/eas-hosting/SKILL.md +0 -431
  206. package/bundled-skills/eas-hosting/agents/openai.yaml +0 -4
  207. package/bundled-skills/eas-observe/SKILL.md +0 -54
  208. package/bundled-skills/eas-observe/agents/openai.yaml +0 -4
  209. package/bundled-skills/eas-observe/references/metrics.md +0 -98
  210. package/bundled-skills/eas-observe/references/queries.md +0 -403
  211. package/bundled-skills/eas-observe/references/setup.md +0 -476
  212. package/bundled-skills/eas-observe/references/third-party.md +0 -136
  213. package/bundled-skills/eas-simulator/SKILL.md +0 -208
  214. package/bundled-skills/eas-simulator/agents/openai.yaml +0 -4
  215. package/bundled-skills/eas-simulator/references/controllers.md +0 -106
  216. package/bundled-skills/eas-simulator/references/run-your-app.md +0 -224
  217. package/bundled-skills/eas-simulator/references/troubleshooting.md +0 -44
  218. package/bundled-skills/eas-update/SKILL.md +0 -146
  219. package/bundled-skills/eas-update/agents/openai.yaml +0 -4
  220. package/bundled-skills/eas-update-insights/SKILL.md +0 -238
  221. package/bundled-skills/eas-update-insights/agents/openai.yaml +0 -4
  222. package/bundled-skills/eas-update-insights/references/channel-insights-schema.md +0 -47
  223. package/bundled-skills/eas-update-insights/references/update-insights-schema.md +0 -69
  224. package/bundled-skills/eas-workflows/SKILL.md +0 -99
  225. package/bundled-skills/eas-workflows/agents/openai.yaml +0 -4
  226. package/bundled-skills/eas-workflows/scripts/fetch.js +0 -109
  227. package/bundled-skills/eas-workflows/scripts/package.json +0 -6
  228. package/bundled-skills/emails/SKILL.md +0 -311
  229. package/bundled-skills/emails/evals/evals.json +0 -93
  230. package/bundled-skills/emails/references/copy-guidelines.md +0 -113
  231. package/bundled-skills/emails/references/email-types.md +0 -515
  232. package/bundled-skills/emails/references/sequence-templates.md +0 -168
  233. package/bundled-skills/explore-codebase/SKILL.md +0 -29
  234. package/bundled-skills/expo-animation/LICENSE +0 -21
  235. package/bundled-skills/expo-animation/RECIPES.md +0 -385
  236. package/bundled-skills/expo-animation/SKILL.md +0 -267
  237. package/bundled-skills/expo-animation/agents/openai.yaml +0 -4
  238. package/bundled-skills/expo-app-clip/SKILL.md +0 -290
  239. package/bundled-skills/expo-app-clip/agents/openai.yaml +0 -4
  240. package/bundled-skills/expo-app-clip/references/native-module.md +0 -96
  241. package/bundled-skills/expo-brownfield/SKILL.md +0 -62
  242. package/bundled-skills/expo-brownfield/agents/openai.yaml +0 -4
  243. package/bundled-skills/expo-brownfield/references/brownfield-integrated.md +0 -526
  244. package/bundled-skills/expo-brownfield/references/brownfield-isolated.md +0 -451
  245. package/bundled-skills/expo-brownfield/references/comparison.md +0 -63
  246. package/bundled-skills/expo-brownfield/references/troubleshooting.md +0 -88
  247. package/bundled-skills/expo-data-fetching/SKILL.md +0 -478
  248. package/bundled-skills/expo-data-fetching/agents/openai.yaml +0 -4
  249. package/bundled-skills/expo-data-fetching/references/expo-router-loaders.md +0 -341
  250. package/bundled-skills/expo-data-fetching/references/offline-and-cancellation.md +0 -68
  251. package/bundled-skills/expo-design-system/SKILL.md +0 -376
  252. package/bundled-skills/expo-design-system/agents/openai.yaml +0 -4
  253. package/bundled-skills/expo-design-system/references/audit.md +0 -190
  254. package/bundled-skills/expo-design-system/references/native-slop.md +0 -74
  255. package/bundled-skills/expo-dev-client/SKILL.md +0 -182
  256. package/bundled-skills/expo-dev-client/agents/openai.yaml +0 -4
  257. package/bundled-skills/expo-dom/SKILL.md +0 -425
  258. package/bundled-skills/expo-dom/agents/openai.yaml +0 -4
  259. package/bundled-skills/expo-examples/SKILL.md +0 -106
  260. package/bundled-skills/expo-examples/agents/openai.yaml +0 -4
  261. package/bundled-skills/expo-examples/references/catalog.md +0 -105
  262. package/bundled-skills/expo-migrate-module/SKILL.md +0 -113
  263. package/bundled-skills/expo-migrate-module/agents/openai.yaml +0 -4
  264. package/bundled-skills/expo-migrate-module/references/compatibility.md +0 -73
  265. package/bundled-skills/expo-migrate-module/references/example.md +0 -212
  266. package/bundled-skills/expo-migrate-module/references/migration-map.md +0 -306
  267. package/bundled-skills/expo-module/SKILL.md +0 -151
  268. package/bundled-skills/expo-module/agents/openai.yaml +0 -4
  269. package/bundled-skills/expo-module/references/config-plugin.md +0 -90
  270. package/bundled-skills/expo-module/references/create-expo-module.md +0 -206
  271. package/bundled-skills/expo-module/references/lifecycle.md +0 -127
  272. package/bundled-skills/expo-module/references/module-config.md +0 -48
  273. package/bundled-skills/expo-module/references/native-module.md +0 -286
  274. package/bundled-skills/expo-module/references/native-view.md +0 -171
  275. package/bundled-skills/expo-native-ui/SKILL.md +0 -201
  276. package/bundled-skills/expo-native-ui/agents/openai.yaml +0 -4
  277. package/bundled-skills/expo-native-ui/references/controls.md +0 -231
  278. package/bundled-skills/expo-native-ui/references/gradients.md +0 -106
  279. package/bundled-skills/expo-native-ui/references/icons.md +0 -232
  280. package/bundled-skills/expo-native-ui/references/media.md +0 -193
  281. package/bundled-skills/expo-native-ui/references/storage.md +0 -121
  282. package/bundled-skills/expo-native-ui/references/visual-effects.md +0 -198
  283. package/bundled-skills/expo-native-ui/references/webgpu-three.md +0 -605
  284. package/bundled-skills/expo-overview/SKILL.md +0 -115
  285. package/bundled-skills/expo-overview/agents/openai.yaml +0 -4
  286. package/bundled-skills/expo-project-structure/SKILL.md +0 -114
  287. package/bundled-skills/expo-project-structure/agents/openai.yaml +0 -4
  288. package/bundled-skills/expo-router/SKILL.md +0 -240
  289. package/bundled-skills/expo-router/agents/openai.yaml +0 -4
  290. package/bundled-skills/expo-router/references/form-sheet.md +0 -253
  291. package/bundled-skills/expo-router/references/route-structure.md +0 -229
  292. package/bundled-skills/expo-router/references/search.md +0 -248
  293. package/bundled-skills/expo-router/references/tabs.md +0 -433
  294. package/bundled-skills/expo-router/references/toolbar-and-headers.md +0 -284
  295. package/bundled-skills/expo-router/references/zoom-transitions.md +0 -158
  296. package/bundled-skills/expo-skill-eval/SKILL.md +0 -314
  297. package/bundled-skills/expo-skill-eval/agents/visual-grader.md +0 -52
  298. package/bundled-skills/expo-skill-eval/references/design-rubric.md +0 -45
  299. package/bundled-skills/expo-skill-eval/references/runtime-matrix.md +0 -34
  300. package/bundled-skills/expo-skill-eval/scripts/check-static.sh +0 -64
  301. package/bundled-skills/expo-skill-eval/scripts/clean-fixture.sh +0 -56
  302. package/bundled-skills/expo-skill-eval/scripts/generate_viewer.py +0 -450
  303. package/bundled-skills/expo-skill-eval/scripts/latest-sdk.sh +0 -46
  304. package/bundled-skills/expo-skill-eval/scripts/make-fixture.sh +0 -95
  305. package/bundled-skills/expo-skill-eval/scripts/make-workspace.sh +0 -31
  306. package/bundled-skills/expo-skill-eval/scripts/snapshot-android.sh +0 -284
  307. package/bundled-skills/expo-skill-eval/scripts/snapshot-ios.sh +0 -132
  308. package/bundled-skills/expo-skill-eval/scripts/snapshot-web.sh +0 -61
  309. package/bundled-skills/expo-skill-feedback/SKILL.md +0 -87
  310. package/bundled-skills/expo-skill-feedback/agents/openai.yaml +0 -4
  311. package/bundled-skills/expo-skill-feedback/scripts/skill-event.cjs +0 -180
  312. package/bundled-skills/expo-skill-feedback/scripts/telemetry.cjs +0 -65
  313. package/bundled-skills/expo-skill-feedback/scripts/telemetry_common.cjs +0 -171
  314. package/bundled-skills/expo-ui/SKILL.md +0 -101
  315. package/bundled-skills/expo-ui/agents/openai.yaml +0 -4
  316. package/bundled-skills/expo-ui/references/drop-in-replacements.md +0 -27
  317. package/bundled-skills/expo-ui/references/jetpack-compose.md +0 -73
  318. package/bundled-skills/expo-ui/references/swift-ui.md +0 -73
  319. package/bundled-skills/expo-ui/references/universal.md +0 -104
  320. package/bundled-skills/expo-ui/scripts/list-components.js +0 -193
  321. package/bundled-skills/expo-upgrade/SKILL.md +0 -150
  322. package/bundled-skills/expo-upgrade/agents/openai.yaml +0 -4
  323. package/bundled-skills/expo-upgrade/references/expo-av-to-audio.md +0 -132
  324. package/bundled-skills/expo-upgrade/references/expo-av-to-video.md +0 -160
  325. package/bundled-skills/expo-upgrade/references/native-tabs.md +0 -124
  326. package/bundled-skills/expo-upgrade/references/new-architecture.md +0 -79
  327. package/bundled-skills/expo-upgrade/references/react-19.md +0 -79
  328. package/bundled-skills/expo-upgrade/references/react-compiler.md +0 -59
  329. package/bundled-skills/expo-upgrade/references/react-navigation-to-expo-router.md +0 -61
  330. package/bundled-skills/expo-web-to-native/SKILL.md +0 -91
  331. package/bundled-skills/expo-web-to-native/agents/openai.yaml +0 -4
  332. package/bundled-skills/expo-web-to-native/references/false-friends.md +0 -119
  333. package/bundled-skills/expo-web-to-native/references/native-patterns.md +0 -39
  334. package/bundled-skills/expo-web-to-native/references/run-as-goal.md +0 -48
  335. package/bundled-skills/expo-web-to-native/references/verify-on-device.md +0 -45
  336. package/bundled-skills/find-skills/SKILL.md +0 -141
  337. package/bundled-skills/flutter-add-integration-test/SKILL.md +0 -163
  338. package/bundled-skills/flutter-add-widget-preview/SKILL.md +0 -145
  339. package/bundled-skills/flutter-add-widget-test/SKILL.md +0 -154
  340. package/bundled-skills/flutter-apply-architecture-best-practices/SKILL.md +0 -162
  341. package/bundled-skills/flutter-build-responsive-layout/SKILL.md +0 -139
  342. package/bundled-skills/flutter-fix-layout-issues/SKILL.md +0 -130
  343. package/bundled-skills/flutter-implement-json-serialization/SKILL.md +0 -153
  344. package/bundled-skills/flutter-setup-declarative-routing/SKILL.md +0 -255
  345. package/bundled-skills/flutter-setup-localization/SKILL.md +0 -210
  346. package/bundled-skills/flutter-use-http-package/SKILL.md +0 -174
  347. package/bundled-skills/graph-colorize/SKILL.md +0 -180
  348. package/bundled-skills/hermes-history-ingest/SKILL.md +0 -239
  349. package/bundled-skills/hermes-history-ingest/references/hermes-data-format.md +0 -131
  350. package/bundled-skills/impl-validator/SKILL.md +0 -118
  351. package/bundled-skills/ios-simulator/SKILL.md +0 -32
  352. package/bundled-skills/json-canvas/SKILL.md +0 -244
  353. package/bundled-skills/json-canvas/references/EXAMPLES.md +0 -329
  354. package/bundled-skills/launch/SKILL.md +0 -381
  355. package/bundled-skills/launch/evals/evals.json +0 -106
  356. package/bundled-skills/llm-wiki/SKILL.md +0 -661
  357. package/bundled-skills/llm-wiki/references/WRITING.md +0 -28
  358. package/bundled-skills/llm-wiki/references/karpathy-pattern.md +0 -45
  359. package/bundled-skills/marketing-plan/SKILL.md +0 -300
  360. package/bundled-skills/marketing-plan/evals/evals.json +0 -112
  361. package/bundled-skills/marketing-plan/references/aarrr-framework.md +0 -180
  362. package/bundled-skills/marketing-plan/references/budget-planning.md +0 -168
  363. package/bundled-skills/marketing-plan/references/client-types.md +0 -373
  364. package/bundled-skills/marketing-plan/references/current-state-rubric.md +0 -255
  365. package/bundled-skills/marketing-plan/references/example-quietude.md +0 -972
  366. package/bundled-skills/marketing-plan/references/funding-stage-unlocks.md +0 -230
  367. package/bundled-skills/marketing-plan/references/growth-patterns.md +0 -190
  368. package/bundled-skills/marketing-plan/references/idea-cross-reference.md +0 -265
  369. package/bundled-skills/marketing-plan/references/measurement-framework.md +0 -213
  370. package/bundled-skills/marketing-plan/references/methodology.md +0 -363
  371. package/bundled-skills/marketing-plan/references/ops-stack-mapping.md +0 -197
  372. package/bundled-skills/marketing-plan/references/plan-template.md +0 -494
  373. package/bundled-skills/marketing-plan/references/team-and-agency-model.md +0 -278
  374. package/bundled-skills/marketing-psychology/SKILL.md +0 -455
  375. package/bundled-skills/marketing-psychology/evals/evals.json +0 -88
  376. package/bundled-skills/memory-bridge/SKILL.md +0 -163
  377. package/bundled-skills/memory-save/SKILL.md +0 -88
  378. package/bundled-skills/obsidian-bases/SKILL.md +0 -499
  379. package/bundled-skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -173
  380. package/bundled-skills/obsidian-cli/SKILL.md +0 -106
  381. package/bundled-skills/obsidian-layout-adjustment/SKILL.md +0 -226
  382. package/bundled-skills/obsidian-layout-adjustment/evals/evals.json +0 -53
  383. package/bundled-skills/obsidian-layout-adjustment/references/workflow-reference.md +0 -212
  384. package/bundled-skills/obsidian-markdown/SKILL.md +0 -196
  385. package/bundled-skills/obsidian-markdown/references/CALLOUTS.md +0 -58
  386. package/bundled-skills/obsidian-markdown/references/EMBEDS.md +0 -70
  387. package/bundled-skills/obsidian-markdown/references/PROPERTIES.md +0 -61
  388. package/bundled-skills/offers/SKILL.md +0 -155
  389. package/bundled-skills/offers/evals/evals.json +0 -21
  390. package/bundled-skills/offers/references/bonus-stacking.md +0 -150
  391. package/bundled-skills/offers/references/examples.md +0 -215
  392. package/bundled-skills/offers/references/guarantee-design.md +0 -172
  393. package/bundled-skills/offers/references/offer-anatomy.md +0 -203
  394. package/bundled-skills/offers/references/offer-formats.md +0 -240
  395. package/bundled-skills/offers/references/saas-offers.md +0 -116
  396. package/bundled-skills/offers/references/scarcity-urgency.md +0 -175
  397. package/bundled-skills/offers/references/value-equation.md +0 -134
  398. package/bundled-skills/onboarding/SKILL.md +0 -261
  399. package/bundled-skills/onboarding/evals/evals.json +0 -108
  400. package/bundled-skills/onboarding/references/activation-models.md +0 -57
  401. package/bundled-skills/onboarding/references/experiments.md +0 -258
  402. package/bundled-skills/onboarding/references/minimum-path-to-value.md +0 -49
  403. package/bundled-skills/openclaw-history-ingest/SKILL.md +0 -257
  404. package/bundled-skills/openclaw-history-ingest/references/openclaw-data-format.md +0 -154
  405. package/bundled-skills/orchestration/SKILL.md +0 -69
  406. package/bundled-skills/pi-history-ingest/SKILL.md +0 -312
  407. package/bundled-skills/pricing/SKILL.md +0 -295
  408. package/bundled-skills/pricing/evals/evals.json +0 -119
  409. package/bundled-skills/pricing/references/pricing-models.md +0 -66
  410. package/bundled-skills/pricing/references/pricing-page-teardown.md +0 -85
  411. package/bundled-skills/pricing/references/research-methods.md +0 -152
  412. package/bundled-skills/pricing/references/tier-structure.md +0 -232
  413. package/bundled-skills/product-marketing/SKILL.md +0 -255
  414. package/bundled-skills/product-marketing/evals/evals.json +0 -98
  415. package/bundled-skills/prospecting/SKILL.md +0 -262
  416. package/bundled-skills/prospecting/evals/evals.json +0 -122
  417. package/bundled-skills/prospecting/references/b2b-prospecting.md +0 -106
  418. package/bundled-skills/prospecting/references/compliance.md +0 -123
  419. package/bundled-skills/prospecting/references/data-sources.md +0 -287
  420. package/bundled-skills/prospecting/references/demand-signals.md +0 -129
  421. package/bundled-skills/prospecting/references/local-prospecting.md +0 -165
  422. package/bundled-skills/prospecting/references/saas-prospecting.md +0 -123
  423. package/bundled-skills/refactor-safely/SKILL.md +0 -29
  424. package/bundled-skills/review-delta/SKILL.md +0 -46
  425. package/bundled-skills/review-pr/SKILL.md +0 -66
  426. package/bundled-skills/sales-enablement/SKILL.md +0 -359
  427. package/bundled-skills/sales-enablement/evals/evals.json +0 -91
  428. package/bundled-skills/sales-enablement/references/deck-frameworks.md +0 -263
  429. package/bundled-skills/sales-enablement/references/demo-scripts.md +0 -355
  430. package/bundled-skills/sales-enablement/references/objection-library.md +0 -270
  431. package/bundled-skills/sales-enablement/references/one-pager-templates.md +0 -208
  432. package/bundled-skills/seo-audit/SKILL.md +0 -499
  433. package/bundled-skills/seo-audit/evals/evals.json +0 -136
  434. package/bundled-skills/seo-audit/references/ai-writing-detection.md +0 -200
  435. package/bundled-skills/seo-audit/references/international-seo.md +0 -230
  436. package/bundled-skills/session-brain/SKILL.md +0 -101
  437. package/bundled-skills/session-search/SKILL.md +0 -97
  438. package/bundled-skills/social/SKILL.md +0 -413
  439. package/bundled-skills/social/evals/evals.json +0 -107
  440. package/bundled-skills/social/references/carousel-frameworks.md +0 -141
  441. package/bundled-skills/social/references/listening-sources-template.md +0 -123
  442. package/bundled-skills/social/references/listening.md +0 -283
  443. package/bundled-skills/social/references/platform-limits.md +0 -110
  444. package/bundled-skills/social/references/platforms.md +0 -170
  445. package/bundled-skills/social/references/post-templates.md +0 -179
  446. package/bundled-skills/social/references/reverse-engineering.md +0 -195
  447. package/bundled-skills/social/references/short-form-video.md +0 -237
  448. package/bundled-skills/tag-taxonomy/SKILL.md +0 -218
  449. package/bundled-skills/vault-skill-factory/SKILL.md +0 -143
  450. package/bundled-skills/video/SKILL.md +0 -346
  451. package/bundled-skills/video/evals/evals.json +0 -103
  452. package/bundled-skills/video/references/ai-video-prompting.md +0 -175
  453. package/bundled-skills/video/references/edit-anatomy.md +0 -84
  454. package/bundled-skills/wiki-agent/SKILL.md +0 -322
  455. package/bundled-skills/wiki-capture/SKILL.md +0 -337
  456. package/bundled-skills/wiki-capture/references/RAW-FORMAT.md +0 -115
  457. package/bundled-skills/wiki-context-pack/SKILL.md +0 -89
  458. package/bundled-skills/wiki-dashboard/SKILL.md +0 -472
  459. package/bundled-skills/wiki-dedup/SKILL.md +0 -320
  460. package/bundled-skills/wiki-digest/SKILL.md +0 -243
  461. package/bundled-skills/wiki-export/SKILL.md +0 -445
  462. package/bundled-skills/wiki-history-ingest/SKILL.md +0 -61
  463. package/bundled-skills/wiki-import/SKILL.md +0 -276
  464. package/bundled-skills/wiki-ingest/SKILL.md +0 -563
  465. package/bundled-skills/wiki-ingest/references/ingest-prompts.md +0 -54
  466. package/bundled-skills/wiki-ingest/references/pageindex.md +0 -72
  467. package/bundled-skills/wiki-ingest/references/url-sources.md +0 -295
  468. package/bundled-skills/wiki-lint/SKILL.md +0 -643
  469. package/bundled-skills/wiki-narrate/SKILL.md +0 -120
  470. package/bundled-skills/wiki-narrate/references/voices.md +0 -29
  471. package/bundled-skills/wiki-query/SKILL.md +0 -307
  472. package/bundled-skills/wiki-rebuild/SKILL.md +0 -212
  473. package/bundled-skills/wiki-research/SKILL.md +0 -319
  474. package/bundled-skills/wiki-setup/SKILL.md +0 -359
  475. package/bundled-skills/wiki-stage-commit/SKILL.md +0 -164
  476. package/bundled-skills/wiki-status/SKILL.md +0 -556
  477. package/bundled-skills/wiki-switch/SKILL.md +0 -115
  478. package/bundled-skills/wiki-synthesize/SKILL.md +0 -212
  479. package/bundled-skills/wiki-update/SKILL.md +0 -271
  480. package/skills/ai-security/SKILL.md +0 -132
  481. package/skills/ai-security/references/atlas-coverage.md +0 -60
  482. package/skills/ai-security/scripts/ai_threat_scanner.py +0 -373
  483. package/skills/anti-AI-design/SKILL.md +0 -72
  484. package/skills/apple-hig-audit/SKILL.md +0 -64
  485. package/skills/apple-hig-audit/references/accessibility.md +0 -78
  486. package/skills/apple-hig-audit/references/platform-specifics.md +0 -57
  487. package/skills/apple-hig-audit/references/visual-design.md +0 -68
  488. package/skills/apple-hig-audit/scripts/hig_checker.py +0 -115
  489. package/skills/apple-hig-audit/templates/hig-audit-template.md +0 -114
  490. package/skills/dependency-auditor/README.md +0 -98
  491. package/skills/dependency-auditor/SKILL.md +0 -114
  492. package/skills/dependency-auditor/assets/sample_go.mod +0 -53
  493. package/skills/dependency-auditor/assets/sample_package.json +0 -72
  494. package/skills/dependency-auditor/assets/sample_requirements.txt +0 -71
  495. package/skills/dependency-auditor/expected_outputs/sample_license_report.txt +0 -37
  496. package/skills/dependency-auditor/expected_outputs/sample_upgrade_plan.txt +0 -59
  497. package/skills/dependency-auditor/expected_outputs/sample_vulnerability_report.json +0 -71
  498. package/skills/dependency-auditor/references/dependency_management_best_practices.md +0 -46
  499. package/skills/dependency-auditor/references/license_compatibility_matrix.md +0 -57
  500. package/skills/dependency-auditor/references/vulnerability_assessment_guide.md +0 -62
  501. package/skills/dependency-auditor/scripts/dep_scanner.py +0 -595
  502. package/skills/dependency-auditor/scripts/license_checker.py +0 -442
  503. package/skills/dependency-auditor/scripts/upgrade_planner.py +0 -490
  504. package/skills/dependency-auditor/test-inventory.json +0 -421
  505. package/skills/dependency-auditor/test-project/package.json +0 -72
  506. package/skills/design-system-tokens/SKILL.md +0 -90
  507. package/skills/design-system-tokens/assets/design_system_doc_template.md +0 -129
  508. package/skills/design-system-tokens/references/component-architecture.md +0 -88
  509. package/skills/design-system-tokens/references/developer-handoff.md +0 -61
  510. package/skills/design-system-tokens/references/responsive-calculations.md +0 -72
  511. package/skills/design-system-tokens/references/token-generation.md +0 -62
  512. package/skills/design-system-tokens/scripts/design_token_generator.py +0 -315
  513. package/skills/engineering-code-standards/SKILL.md +0 -174
  514. package/skills/env-secrets-manager/SKILL.md +0 -102
  515. package/skills/env-secrets-manager/references/secret-patterns.md +0 -56
  516. package/skills/env-secrets-manager/references/validation-detection-rotation.md +0 -76
  517. package/skills/env-secrets-manager/scripts/env_auditor.py +0 -340
  518. package/skills/frontend-design-taste/SKILL.md +0 -62
  519. package/skills/mcp-server-builder/README.md +0 -42
  520. package/skills/mcp-server-builder/SKILL.md +0 -144
  521. package/skills/mcp-server-builder/references/openapi-extraction-guide.md +0 -34
  522. package/skills/mcp-server-builder/references/production-hardening-guide.md +0 -80
  523. package/skills/mcp-server-builder/references/python-server-template.md +0 -22
  524. package/skills/mcp-server-builder/references/spec-compatibility.md +0 -129
  525. package/skills/mcp-server-builder/references/typescript-server-template.md +0 -19
  526. package/skills/mcp-server-builder/references/validation-checklist.md +0 -30
  527. package/skills/mcp-server-builder/scripts/mcp_validator.py +0 -180
  528. package/skills/mcp-server-builder/scripts/openapi_to_mcp.py +0 -279
  529. package/skills/playwright-agent/SKILL.md +0 -147
  530. package/skills/skill-creator/LICENSE.txt +0 -14
  531. package/skills/skill-creator/SKILL.md +0 -471
  532. package/skills/skill-creator/agents/analyzer.md +0 -274
  533. package/skills/skill-creator/agents/comparator.md +0 -202
  534. package/skills/skill-creator/agents/grader.md +0 -223
  535. package/skills/skill-creator/assets/eval_review.html +0 -143
  536. package/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  537. package/skills/skill-creator/eval-viewer/viewer.html +0 -1321
  538. package/skills/skill-creator/references/schemas.md +0 -430
  539. package/skills/skill-creator/scripts/__init__.py +0 -0
  540. package/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  541. package/skills/skill-creator/scripts/generate_report.py +0 -322
  542. package/skills/skill-creator/scripts/improve_description.py +0 -247
  543. package/skills/skill-creator/scripts/package_skill.py +0 -136
  544. package/skills/skill-creator/scripts/quick_validate.py +0 -103
  545. package/skills/skill-creator/scripts/run_eval.py +0 -310
  546. package/skills/skill-creator/scripts/run_loop.py +0 -328
  547. package/skills/skill-creator/scripts/utils.py +0 -47
  548. package/skills/write-a-skill/SKILL.md +0 -111
  549. package/skills/write-a-skill/references/companion_tooling.md +0 -61
  550. package/skills/write-a-skill/references/description_design_patterns.md +0 -136
  551. package/skills/write-a-skill/references/progressive_disclosure_principles.md +0 -87
  552. package/skills/write-a-skill/references/quality_gates_for_skills.md +0 -158
  553. package/skills/write-a-skill/scripts/skill_description_validator.py +0 -241
  554. package/skills/write-a-skill/scripts/skill_review_checklist_runner.py +0 -257
  555. package/skills/write-a-skill/scripts/skill_structure_validator.py +0 -265
@@ -1,210 +0,0 @@
1
- ---
2
- name: flutter-setup-localization
3
- description: Add `flutter_localizations` and `intl` dependencies, enable "generate true" in `pubspec.yaml`, and create an `l10n.yaml` configuration file. Use when initializing localization support for a new Flutter project.
4
- metadata:
5
- model: models/gemini-3.1-pro-preview
6
- last_modified: Tue, 21 Apr 2026 21:27:35 GMT
7
- ---
8
- # Internationalizing Flutter Applications
9
-
10
- ## Contents
11
- - [Core Concepts](#core-concepts)
12
- - [Setup Workflow](#setup-workflow)
13
- - [Implementation Workflow](#implementation-workflow)
14
- - [Advanced Formatting](#advanced-formatting)
15
- - [Examples](#examples)
16
-
17
- ## Core Concepts
18
- Flutter handles internationalization (i18n) and localization (l10n) via the `flutter_localizations` and `intl` packages. The standard approach uses App Resource Bundle (`.arb`) files to define localized strings, which are then compiled into a generated `AppLocalizations` class for type-safe access within the widget tree.
19
-
20
- ## Setup Workflow
21
-
22
- Copy and track this checklist when initializing internationalization in a Flutter project:
23
-
24
- - [ ] **Task Progress**
25
- - [ ] 1. Add dependencies to `pubspec.yaml`.
26
- - [ ] 2. Enable the `generate` flag.
27
- - [ ] 3. Create the `l10n.yaml` configuration file.
28
- - [ ] 4. Configure `MaterialApp` or `CupertinoApp`.
29
-
30
- ### 1. Add Dependencies
31
- Add the required localization packages to the project. Execute the following commands in the terminal:
32
- ```bash
33
- flutter pub add flutter_localizations --sdk=flutter
34
- flutter pub add intl:any
35
- ```
36
-
37
- Verify your `pubspec.yaml` includes the following under `dependencies`:
38
- ```yaml
39
- dependencies:
40
- flutter:
41
- sdk: flutter
42
- flutter_localizations:
43
- sdk: flutter
44
- intl: any
45
- ```
46
-
47
- ### 2. Enable Code Generation
48
- Open `pubspec.yaml` and enable the `generate` flag within the `flutter` section to automate localization tasks:
49
- ```yaml
50
- flutter:
51
- generate: true
52
- ```
53
-
54
- ### 3. Create Configuration File
55
- Create a new file named `l10n.yaml` in the root directory of the Flutter project. Define the input directory, template file, and output file:
56
- ```yaml
57
- arb-dir: lib/l10n
58
- template-arb-file: app_en.arb
59
- output-localization-file: app_localizations.dart
60
- synthetic-package: true
61
- ```
62
-
63
- ### 4. Configure the App Entry Point
64
- Import the generated localizations and the `flutter_localizations` library in your `main.dart`. Inject the delegates and supported locales into your `MaterialApp` or `CupertinoApp`.
65
-
66
- ```dart
67
- import 'package:flutter_localizations/flutter_localizations.dart';
68
- import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // Adjust path if synthetic-package is false
69
-
70
- // ... inside build method
71
- return MaterialApp(
72
- localizationsDelegates: const [
73
- AppLocalizations.delegate,
74
- GlobalMaterialLocalizations.delegate,
75
- GlobalWidgetsLocalizations.delegate,
76
- GlobalCupertinoLocalizations.delegate,
77
- ],
78
- supportedLocales: const [
79
- Locale('en'), // English
80
- Locale('es'), // Spanish
81
- ],
82
- home: const MyHomePage(),
83
- );
84
- ```
85
-
86
- ## Implementation Workflow
87
-
88
- Follow this workflow when adding or modifying localized content.
89
-
90
- ### 1. Define ARB Files
91
- * **If creating NEW content:** Add the base string to the template file (`lib/l10n/app_en.arb`). Include a description for context.
92
- * **If EDITING existing content:** Locate the key in all supported `.arb` files and update the values.
93
-
94
- ```json
95
- {
96
- "helloWorld": "Hello World!",
97
- "@helloWorld": {
98
- "description": "The conventional newborn programmer greeting"
99
- }
100
- }
101
- ```
102
-
103
- Create corresponding files for other locales (e.g., `app_es.arb`):
104
- ```json
105
- {
106
- "helloWorld": "¡Hola Mundo!"
107
- }
108
- ```
109
-
110
- ### 2. Generate Localization Classes
111
- Run the following command to trigger code generation:
112
- ```bash
113
- flutter pub get
114
- ```
115
- *Feedback Loop:* Run validator -> review terminal output for ARB syntax errors -> fix missing commas or mismatched placeholders -> re-run `flutter pub get`.
116
-
117
- ### 3. Consume Localized Strings
118
- Access the localized strings in your widget tree using `AppLocalizations.of(context)`. Ensure the widget calling this is a descendant of `MaterialApp`.
119
-
120
- ```dart
121
- Text(AppLocalizations.of(context)!.helloWorld)
122
- ```
123
-
124
- ## Advanced Formatting
125
-
126
- Use placeholders for dynamic data, plurals, and conditional selects.
127
-
128
- ### Placeholders
129
- Define parameters within curly braces and specify their type in the metadata object.
130
- ```json
131
- "hello": "Hello {userName}",
132
- "@hello": {
133
- "description": "A message with a single parameter",
134
- "placeholders": {
135
- "userName": {
136
- "type": "String",
137
- "example": "Bob"
138
- }
139
- }
140
- }
141
- ```
142
-
143
- ### Plurals
144
- Use the `plural` syntax to handle quantity-based string variations. The `other` case is mandatory.
145
- ```json
146
- "nWombats": "{count, plural, =0{no wombats} =1{1 wombat} other{{count} wombats}}",
147
- "@nWombats": {
148
- "description": "A plural message",
149
- "placeholders": {
150
- "count": {
151
- "type": "num",
152
- "format": "compact"
153
- }
154
- }
155
- }
156
- ```
157
-
158
- ### Selects
159
- Use the `select` syntax for conditional strings, such as gendered text.
160
- ```json
161
- "pronoun": "{gender, select, male{he} female{she} other{they}}",
162
- "@pronoun": {
163
- "description": "A gendered message",
164
- "placeholders": {
165
- "gender": {
166
- "type": "String"
167
- }
168
- }
169
- }
170
- ```
171
-
172
- ## Examples
173
-
174
- ### Complete `l10n.yaml`
175
- ```yaml
176
- arb-dir: lib/l10n
177
- template-arb-file: app_en.arb
178
- output-localization-file: app_localizations.dart
179
- synthetic-package: true
180
- use-escaping: true
181
- ```
182
-
183
- ### Complete Widget Implementation
184
- ```dart
185
- import 'package:flutter/material.dart';
186
- import 'package:flutter_gen/gen_l10n/app_localizations.dart';
187
-
188
- class GreetingWidget extends StatelessWidget {
189
- final String userName;
190
- final int notificationCount;
191
-
192
- const GreetingWidget({
193
- super.key,
194
- required this.userName,
195
- required this.notificationCount,
196
- });
197
-
198
- @override
199
- Widget build(BuildContext context) {
200
- final l10n = AppLocalizations.of(context)!;
201
-
202
- return Column(
203
- children: [
204
- Text(l10n.hello(userName)),
205
- Text(l10n.nWombats(notificationCount)),
206
- ],
207
- );
208
- }
209
- }
210
- ```
@@ -1,174 +0,0 @@
1
- ---
2
- name: flutter-use-http-package
3
- description: Use the `http` package to execute GET, POST, PUT, or DELETE requests. Use when you need to fetch from or send data to a REST API.
4
- metadata:
5
- model: models/gemini-3.1-pro-preview
6
- last_modified: Tue, 21 Apr 2026 21:36:42 GMT
7
- ---
8
- # Implementing Flutter Networking
9
-
10
- ## Contents
11
- - [Configuration & Permissions](#configuration--permissions)
12
- - [Request Execution & Response Handling](#request-execution--response-handling)
13
- - [Background Parsing](#background-parsing)
14
- - [Workflow: Executing Network Operations](#workflow-executing-network-operations)
15
- - [Examples](#examples)
16
-
17
- ## Configuration & Permissions
18
-
19
- Configure the environment and platform-specific permissions required for network access.
20
-
21
- 1. Add the `http` package dependency via the terminal:
22
- ```bash
23
- flutter pub add http
24
- ```
25
- 2. Import the package in your Dart files:
26
- ```dart
27
- import 'package:http/http.dart' as http;
28
- ```
29
- 3. Configure Android permissions by adding the Internet permission to `android/app/src/main/AndroidManifest.xml`:
30
- ```xml
31
- <uses-permission android:name="android.permission.INTERNET" />
32
- ```
33
- 4. Configure macOS entitlements by adding the network client key to both `macos/Runner/DebugProfile.entitlements` and `macos/Runner/Release.entitlements`:
34
- ```xml
35
- <key>com.apple.security.network.client</key>
36
- <true/>
37
- ```
38
-
39
- ## Request Execution & Response Handling
40
-
41
- Execute HTTP operations and map responses to strongly typed Dart objects.
42
-
43
- * **URIs:** Always parse URL strings using `Uri.parse('your_url')`.
44
- * **Headers:** Inject authorization and content-type headers via the `headers` parameter map. Use `HttpHeaders.authorizationHeader` for auth tokens.
45
- * **Payloads:** For POST and PUT requests, encode the body using `jsonEncode()` from `dart:convert`.
46
- * **Status Validation:** Evaluate `response.statusCode`. Treat `200 OK` (GET/PUT/DELETE) and `201 CREATED` (POST) as success.
47
- * **Error Handling:** Throw explicit exceptions for non-success status codes. Never return `null` on failure, as this prevents `FutureBuilder` from triggering its error state and causes infinite loading indicators.
48
- * **Deserialization:** Parse the raw string using `jsonDecode(response.body)` and map it to a custom Dart object using a factory constructor (e.g., `fromJson`).
49
-
50
- ## Background Parsing
51
-
52
- Offload expensive JSON parsing to a separate Isolate to prevent UI jank (frame drops).
53
-
54
- * Import `package:flutter/foundation.dart`.
55
- * Use the `compute()` function to run the parsing logic in a background isolate.
56
- * Ensure the parsing function passed to `compute()` is a top-level function or a static method, as closures or instance methods cannot be passed across isolates.
57
-
58
- ## Workflow: Executing Network Operations
59
-
60
- Use the following checklist to implement and validate network operations.
61
-
62
- **Task Progress:**
63
- - [ ] 1. Define the strongly typed Dart model with a `fromJson` factory constructor.
64
- - [ ] 2. Implement the network request method returning a `Future<Model>`.
65
- - [ ] 3. Apply conditional logic based on the operation type:
66
- - **If fetching data (GET):** Append query parameters to the URI.
67
- - **If mutating data (POST/PUT):** Set `'Content-Type': 'application/json; charset=UTF-8'` and attach the `jsonEncode` body.
68
- - **If deleting data (DELETE):** Return an empty model instance on success (`200 OK`).
69
- - [ ] 4. Validate the `statusCode` and throw an `Exception` on failure.
70
- - [ ] 5. Integrate the `Future` into the UI using `FutureBuilder`.
71
- - [ ] 6. Handle `snapshot.hasData`, `snapshot.hasError`, and default to a `CircularProgressIndicator`.
72
- - [ ] 7. **Feedback Loop:** Run the app -> trigger the network request -> review console for unhandled exceptions -> fix parsing or permission errors.
73
-
74
- ## Examples
75
-
76
- ### High-Fidelity Implementation: Fetching and Parsing in the Background
77
-
78
- ```dart
79
- import 'dart:async';
80
- import 'dart:convert';
81
- import 'dart:io';
82
- import 'package:flutter/foundation.dart';
83
- import 'package:flutter/material.dart';
84
- import 'package:http/http.dart' as http;
85
-
86
- // 1. Top-level parsing function for Isolate
87
- List<Photo> parsePhotos(String responseBody) {
88
- final parsed = (jsonDecode(responseBody) as List<Object?>)
89
- .cast<Map<String, Object?>>();
90
- return parsed.map<Photo>(Photo.fromJson).toList();
91
- }
92
-
93
- // 2. Network execution with background parsing
94
- Future<List<Photo>> fetchPhotos() async {
95
- final response = await http.get(
96
- Uri.parse('https://jsonplaceholder.typicode.com/photos'),
97
- headers: {
98
- HttpHeaders.authorizationHeader: 'Bearer your_token_here',
99
- HttpHeaders.acceptHeader: 'application/json',
100
- },
101
- );
102
-
103
- if (response.statusCode == 200) {
104
- // Offload heavy parsing to a background isolate
105
- return compute(parsePhotos, response.body);
106
- } else {
107
- throw Exception('Failed to load photos. Status: ${response.statusCode}');
108
- }
109
- }
110
-
111
- // 3. Strongly typed model
112
- class Photo {
113
- final int id;
114
- final String title;
115
- final String thumbnailUrl;
116
-
117
- const Photo({
118
- required this.id,
119
- required this.title,
120
- required this.thumbnailUrl,
121
- });
122
-
123
- factory Photo.fromJson(Map<String, dynamic> json) {
124
- return Photo(
125
- id: json['id'] as int,
126
- title: json['title'] as String,
127
- thumbnailUrl: json['thumbnailUrl'] as String,
128
- );
129
- }
130
- }
131
-
132
- // 4. UI Integration
133
- class PhotoGallery extends StatefulWidget {
134
- const PhotoGallery({super.key});
135
-
136
- @override
137
- State<PhotoGallery> createState() => _PhotoGalleryState();
138
- }
139
-
140
- class _PhotoGalleryState extends State<PhotoGallery> {
141
- late Future<List<Photo>> _futurePhotos;
142
-
143
- @override
144
- void initState() {
145
- super.initState();
146
- // Initialize Future once to prevent re-fetching on rebuilds
147
- _futurePhotos = fetchPhotos();
148
- }
149
-
150
- @override
151
- Widget build(BuildContext context) {
152
- return FutureBuilder<List<Photo>>(
153
- future: _futurePhotos,
154
- builder: (context, snapshot) {
155
- if (snapshot.hasData) {
156
- final photos = snapshot.data!;
157
- return ListView.builder(
158
- itemCount: photos.length,
159
- itemBuilder: (context, index) => ListTile(
160
- leading: Image.network(photos[index].thumbnailUrl),
161
- title: Text(photos[index].title),
162
- ),
163
- );
164
- } else if (snapshot.hasError) {
165
- return Center(child: Text('Error: ${snapshot.error}'));
166
- }
167
-
168
- // Default loading state
169
- return const Center(child: CircularProgressIndicator());
170
- },
171
- );
172
- }
173
- }
174
- ```
@@ -1,180 +0,0 @@
1
- ---
2
- name: graph-colorize
3
- description: >
4
- Color-code the Obsidian graph view by rewriting `.obsidian/graph.json` colorGroups.
5
- Use this skill when the user says "color my graph", "color code obsidian", "colorize
6
- the graph", "color the graph by tag", "color by category", "highlight visibility
7
- in graph", "make the graph colorful", "distinguish tags in graph", or wants nodes
8
- in Obsidian's graph view tinted by tag, folder, or visibility. Generates a
9
- `colorGroups` array from the vault's actual tags/categories and merges it into the
10
- existing graph.json without clobbering other graph settings. Always backs up first.
11
- ---
12
-
13
- # Graph Colorize — Color-code the Obsidian Graph View
14
-
15
- You are rewriting `$OBSIDIAN_VAULT_PATH/.obsidian/graph.json` so Obsidian's graph view tints nodes by tag, folder, or visibility.
16
-
17
- Obsidian stores graph settings in `<vault>/.obsidian/graph.json`. The `colorGroups` array is a list of `{query, color}` pairs; the first matching query wins per node. Queries use Obsidian's search syntax: `tag:#foo`, `path:"concepts"`, `file:foo`, etc. Color is `{"a": 1, "rgb": <packed-int>}` where the int is `(R << 16) | (G << 8) | B`.
18
-
19
- ## Before You Start
20
-
21
- 1. **Resolve config** — follow the Config Resolution Protocol in `llm-wiki/SKILL.md` (inline `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH`.
22
- 2. Confirm `$OBSIDIAN_VAULT_PATH/.obsidian/` exists. If it doesn't, the vault has never been opened in Obsidian — tell the user to open the vault once in Obsidian, then re-run.
23
- 3. **Warn the user if Obsidian is likely open**: Obsidian overwrites `graph.json` on close. Tell them to close the vault first, or be ready to reload (Cmd/Ctrl+R) and not touch the graph settings until they reload.
24
-
25
- ## Step 1: Pick a Mode
26
-
27
- Infer the mode from the user's phrasing. If ambiguous, default to **by-tag**.
28
-
29
- | User intent | Mode |
30
- |---|---|
31
- | "color by tag", "color my graph", "make it colorful" (default) | `by-tag` |
32
- | "color by folder", "color by category", "color by directory" | `by-category` |
33
- | "highlight visibility", "show internal/pii in graph", "visibility colors" | `by-visibility` |
34
- | User provides explicit mapping (`tag:#foo = red`, or JSON blob) | `custom` |
35
- | "combine tag and visibility" / "both" | `combined` (visibility first, then tag) |
36
-
37
- ## Step 2: Build the `colorGroups` Array
38
-
39
- ### Palette (10 distinct, colorblind-friendly colors)
40
-
41
- Use in order. If more groups than colors, cycle and add a lightness shift by dividing brightness ~20% via a second pass — or just cap at 10 and tell the user the remaining tags share the "other" color.
42
-
43
- | # | Hex | rgb (packed int) | Role |
44
- |---|---|---|---|
45
- | 0 | `#4E79A7` | `5142951` | blue |
46
- | 1 | `#F28E2B` | `15896107` | orange |
47
- | 2 | `#E15759` | `14767961` | red |
48
- | 3 | `#76B7B2` | `7780786` | teal |
49
- | 4 | `#59A14F` | `5873999` | green |
50
- | 5 | `#EDC948` | `15583048` | yellow |
51
- | 6 | `#B07AA1` | `11565217` | purple |
52
- | 7 | `#FF9DA7` | `16751527` | pink |
53
- | 8 | `#9C755F` | `10253663` | brown |
54
- | 9 | `#BAB0AC` | `12234924` | gray |
55
-
56
- Every color is wrapped as `{"a": 1, "rgb": <int>}`.
57
-
58
- ### Mode: `by-tag`
59
-
60
- 1. Glob `$VAULT_PATH/**/*.md` excluding `_archives/`, `_raw/`, `.obsidian/`, `node_modules/`, `index.md`, `log.md`, `_insights.md`.
61
- 2. Parse frontmatter `tags` from each page. Count usage per tag.
62
- 3. **Drop `visibility/*` tags** from the frequency list — they are reserved system tags, handled only in `by-visibility` or `combined` mode.
63
- 4. Take the top 10 tags by usage. If there are fewer than 10 unique tags, use all of them.
64
- 5. For each tag `T` at index `i`: emit `{"query": "tag:#T", "color": palette[i]}`.
65
- 6. Optionally, append a final catch-all entry for untagged pages at the end: `{"query": "-[\"tag\":]", "color": palette[9]}` — **skip** if color slot 9 is already taken by a real tag.
66
-
67
- ### Mode: `by-category`
68
-
69
- Use the seven vault top-level folders in this fixed order so colors are stable across runs:
70
-
71
- | Folder | Color index |
72
- |---|---|
73
- | `concepts` | 0 (blue) |
74
- | `entities` | 1 (orange) |
75
- | `skills` | 2 (red) |
76
- | `references` | 3 (teal) |
77
- | `synthesis` | 4 (green) |
78
- | `projects` | 5 (yellow) |
79
- | `journal` | 6 (purple) |
80
-
81
- Emit one entry per folder that exists AND contains at least one `.md` file. Each entry is:
82
-
83
- ```json
84
- {"query": "path:\"<folder>\"", "color": {"a": 1, "rgb": <int>}}
85
- ```
86
-
87
- ### Mode: `by-visibility`
88
-
89
- Emit exactly three entries, in this order (first-match wins, so most restrictive comes first):
90
-
91
- 1. `visibility/pii` → `#E15759` (red, rgb 14767961)
92
- 2. `visibility/internal` → `#F28E2B` (orange, rgb 15896107)
93
- 3. `visibility/public` → `#59A14F` (green, rgb 5873999)
94
-
95
- ```json
96
- {"query": "tag:#visibility/pii", "color": {"a": 1, "rgb": 14767961}}
97
- ```
98
-
99
- Pages with no `visibility/` tag remain Obsidian's default color — do not add a catch-all.
100
-
101
- ### Mode: `combined`
102
-
103
- Emit `by-visibility` entries first, then `by-tag` entries. Visibility wins on conflict because it appears first in the list.
104
-
105
- ### Mode: `custom`
106
-
107
- If the user gave explicit mappings, honor them literally. Convert any hex they give (e.g. `#FF00FF`) to packed int using `int(hex_without_hash, 16)`. Wrap each as `{"a": 1, "rgb": <int>}`.
108
-
109
- ## Step 3: Merge into graph.json (Do Not Clobber)
110
-
111
- 1. Read the existing `$VAULT_PATH/.obsidian/graph.json`. If it doesn't exist, start from this minimal default:
112
-
113
- ```json
114
- {
115
- "collapse-filter": true,
116
- "search": "",
117
- "showTags": false,
118
- "showAttachments": false,
119
- "hideUnresolved": false,
120
- "showOrphans": true,
121
- "collapse-color-groups": false,
122
- "colorGroups": [],
123
- "collapse-display": true,
124
- "showArrow": false,
125
- "textFadeMultiplier": 0,
126
- "nodeSizeMultiplier": 1,
127
- "lineSizeMultiplier": 1,
128
- "collapse-forces": true,
129
- "centerStrength": 0.518713248970312,
130
- "repelStrength": 10,
131
- "linkStrength": 1,
132
- "linkDistance": 250,
133
- "scale": 1,
134
- "close": true
135
- }
136
- ```
137
-
138
- 2. **Back up first**: copy the existing file to `.obsidian/graph.json.backup-<YYYYMMDD-HHMM>` before writing. If a backup from the same minute exists, reuse it — don't pile up duplicates.
139
-
140
- 3. Replace **only** the `colorGroups` field with your new array. Leave every other field untouched. This preserves the user's zoom, physics, filter, search, and display preferences.
141
-
142
- 4. Write the file back with the same JSON style as the original (usually compact single-line or 2-space indent — preserve what's there).
143
-
144
- ## Step 4: Report and Log
145
-
146
- Print a summary like:
147
-
148
- ```
149
- Graph colorized → .obsidian/graph.json
150
- Mode: by-tag
151
- Groups: 7 color assignments
152
- Palette: blue, orange, red, teal, green, yellow, purple
153
- Backup: .obsidian/graph.json.backup-20260424-1432
154
-
155
- Reload Obsidian (Cmd/Ctrl+R) to see the new colors.
156
- If Obsidian is currently open, close it first OR reload immediately — Obsidian
157
- overwrites graph.json on close and can erase these changes.
158
- ```
159
-
160
- Append to `$VAULT_PATH/log.md`:
161
-
162
- ```
163
- - [TIMESTAMP] GRAPH_COLORIZE mode=<mode> groups=<N> backup=graph.json.backup-<stamp>
164
- ```
165
-
166
- ## Edge Cases
167
-
168
- - **No tags in vault** in `by-tag` mode → fall back to `by-category` and tell the user.
169
- - **User wants to undo** → restore from the latest `graph.json.backup-*` and note that in `log.md`.
170
- - **User wants to clear all color groups** → set `colorGroups: []`, back up, log as `GRAPH_COLORIZE mode=clear`.
171
- - **`.obsidian/` missing** → the vault hasn't been opened in Obsidian yet. Tell the user to open it once, then re-run. Don't create `.obsidian/` yourself — Obsidian populates many files there on first open.
172
- - **Query syntax gotchas**: folder paths with spaces need quoting (`path:"my folder"`); tags with nested slashes work literally (`tag:#visibility/internal`); don't URL-encode.
173
- - **Obsidian open during edit**: surface the risk — Obsidian reads graph.json at startup and **rewrites it on close**. If the user is editing live, tell them to close Obsidian first or run the reload (Cmd/Ctrl+R) immediately and avoid opening graph settings before they do.
174
-
175
- ## Notes
176
-
177
- - This is a pure config edit — no page content changes, no frontmatter writes.
178
- - Re-running is safe: each run creates a new backup, only `colorGroups` is rewritten.
179
- - If the user has manually curated color groups they want to keep, offer `combined` mode or ask before overwriting.
180
- - The palette here matches `wiki-export`'s `graph.html` community colors, so the Obsidian graph and the exported visualization look consistent.