@heyai-rules/pilo-masterkit 1.2.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. package/.agent/agents/architect.md +211 -211
  2. package/.agent/agents/build-error-resolver.md +114 -114
  3. package/.agent/agents/chief-of-staff.md +151 -151
  4. package/.agent/agents/code-reviewer.md +237 -237
  5. package/.agent/agents/cpp-build-resolver.md +90 -90
  6. package/.agent/agents/cpp-reviewer.md +72 -72
  7. package/.agent/agents/csharp-reviewer.md +101 -0
  8. package/.agent/agents/dart-build-resolver.md +201 -0
  9. package/.agent/agents/database-reviewer.md +91 -91
  10. package/.agent/agents/doc-updater.md +107 -107
  11. package/.agent/agents/docs-lookup.md +68 -68
  12. package/.agent/agents/e2e-runner.md +107 -107
  13. package/.agent/agents/flutter-reviewer.md +243 -243
  14. package/.agent/agents/gan-evaluator.md +209 -0
  15. package/.agent/agents/gan-generator.md +131 -0
  16. package/.agent/agents/gan-planner.md +99 -0
  17. package/.agent/agents/go-build-resolver.md +94 -94
  18. package/.agent/agents/go-reviewer.md +76 -76
  19. package/.agent/agents/harness-optimizer.md +35 -35
  20. package/.agent/agents/healthcare-reviewer.md +83 -0
  21. package/.agent/agents/java-build-resolver.md +153 -153
  22. package/.agent/agents/java-reviewer.md +92 -92
  23. package/.agent/agents/kotlin-build-resolver.md +118 -118
  24. package/.agent/agents/kotlin-reviewer.md +159 -159
  25. package/.agent/agents/loop-operator.md +36 -36
  26. package/.agent/agents/opensource-forker.md +198 -0
  27. package/.agent/agents/opensource-packager.md +249 -0
  28. package/.agent/agents/opensource-sanitizer.md +188 -0
  29. package/.agent/agents/performance-optimizer.md +392 -133
  30. package/.agent/agents/personas/athena-agent/agent.json +10 -0
  31. package/.agent/agents/personas/athena-agent/athena-backend-logic-architecture-profile.md +189 -0
  32. package/.agent/agents/personas/athena-agent/context-files/agents.md +55 -0
  33. package/.agent/agents/personas/athena-agent/context-files/identity.md +23 -0
  34. package/.agent/agents/personas/athena-agent/context-files/soul.md +51 -0
  35. package/.agent/agents/personas/athena-agent/context-files/user-predefined.md +15 -0
  36. package/.agent/agents/personas/athena-agent/user-context-files/system/bootstrap.md +37 -0
  37. package/.agent/agents/personas/athena-agent/user-context-files/system/user.md +45 -0
  38. package/.agent/agents/personas/da-vinci-agent/agent.json +10 -0
  39. package/.agent/agents/personas/da-vinci-agent/context-files/agents.md +55 -0
  40. package/.agent/agents/personas/da-vinci-agent/context-files/identity.md +23 -0
  41. package/.agent/agents/personas/da-vinci-agent/context-files/soul.md +51 -0
  42. package/.agent/agents/personas/da-vinci-agent/context-files/user-predefined.md +15 -0
  43. package/.agent/agents/personas/da-vinci-agent/da-vinci-frontend-ui-ux-design-profile.md +189 -0
  44. package/.agent/agents/personas/da-vinci-agent/user-context-files/system/bootstrap.md +37 -0
  45. package/.agent/agents/personas/da-vinci-agent/user-context-files/system/user.md +45 -0
  46. package/.agent/agents/personas/duong-tang-agent/agent.json +10 -0
  47. package/.agent/agents/personas/duong-tang-agent/context-files/agents.md +55 -0
  48. package/.agent/agents/personas/duong-tang-agent/context-files/identity.md +23 -0
  49. package/.agent/agents/personas/duong-tang-agent/context-files/soul.md +51 -0
  50. package/.agent/agents/personas/duong-tang-agent/context-files/user-predefined.md +15 -0
  51. package/.agent/agents/personas/duong-tang-agent/tang-monk-quality-testing-documentation-profile.md +189 -0
  52. package/.agent/agents/personas/duong-tang-agent/user-context-files/system/bootstrap.md +37 -0
  53. package/.agent/agents/personas/duong-tang-agent/user-context-files/system/user.md +45 -0
  54. package/.agent/agents/personas/gia-cat-luong-agent/agent.json +10 -0
  55. package/.agent/agents/personas/gia-cat-luong-agent/context-files/agents.md +55 -0
  56. package/.agent/agents/personas/gia-cat-luong-agent/context-files/identity.md +23 -0
  57. package/.agent/agents/personas/gia-cat-luong-agent/context-files/soul.md +51 -0
  58. package/.agent/agents/personas/gia-cat-luong-agent/context-files/user-predefined.md +15 -0
  59. package/.agent/agents/personas/gia-cat-luong-agent/kongming-research-strategy-analysis-profile.md +189 -0
  60. package/.agent/agents/personas/gia-cat-luong-agent/user-context-files/system/bootstrap.md +37 -0
  61. package/.agent/agents/personas/gia-cat-luong-agent/user-context-files/system/user.md +45 -0
  62. package/.agent/agents/personas/mihata-agent/agent.json +10 -0
  63. package/.agent/agents/personas/mihata-agent/context-files/agents.md +55 -0
  64. package/.agent/agents/personas/mihata-agent/context-files/identity.md +23 -0
  65. package/.agent/agents/personas/mihata-agent/context-files/soul.md +51 -0
  66. package/.agent/agents/personas/mihata-agent/context-files/user-predefined.md +15 -0
  67. package/.agent/agents/personas/mihata-agent/mihata-multi-agent-orchestration-profile.md +189 -0
  68. package/.agent/agents/personas/mihata-agent/user-context-files/system/bootstrap.md +37 -0
  69. package/.agent/agents/personas/mihata-agent/user-context-files/system/user.md +45 -0
  70. package/.agent/agents/personas/tesla-agent/agent.json +10 -0
  71. package/.agent/agents/personas/tesla-agent/context-files/agents.md +55 -0
  72. package/.agent/agents/personas/tesla-agent/context-files/identity.md +23 -0
  73. package/.agent/agents/personas/tesla-agent/context-files/soul.md +51 -0
  74. package/.agent/agents/personas/tesla-agent/context-files/user-predefined.md +15 -0
  75. package/.agent/agents/personas/tesla-agent/tesla-fullstack-system-optimization-profile.md +189 -0
  76. package/.agent/agents/personas/tesla-agent/user-context-files/system/bootstrap.md +37 -0
  77. package/.agent/agents/personas/tesla-agent/user-context-files/system/user.md +45 -0
  78. package/.agent/agents/personas/tu-ma-y-agent/agent.json +10 -0
  79. package/.agent/agents/personas/tu-ma-y-agent/context-files/agents.md +55 -0
  80. package/.agent/agents/personas/tu-ma-y-agent/context-files/identity.md +23 -0
  81. package/.agent/agents/personas/tu-ma-y-agent/context-files/soul.md +51 -0
  82. package/.agent/agents/personas/tu-ma-y-agent/context-files/user-predefined.md +15 -0
  83. package/.agent/agents/personas/tu-ma-y-agent/simayi-feasibility-risk-control-profile.md +189 -0
  84. package/.agent/agents/personas/tu-ma-y-agent/user-context-files/system/bootstrap.md +37 -0
  85. package/.agent/agents/personas/tu-ma-y-agent/user-context-files/system/user.md +45 -0
  86. package/.agent/agents/personas/venti-agent/agent.json +10 -0
  87. package/.agent/agents/personas/venti-agent/context-files/agents.md +55 -0
  88. package/.agent/agents/personas/venti-agent/context-files/identity.md +23 -0
  89. package/.agent/agents/personas/venti-agent/context-files/soul.md +51 -0
  90. package/.agent/agents/personas/venti-agent/context-files/user-predefined.md +15 -0
  91. package/.agent/agents/personas/venti-agent/user-context-files/system/bootstrap.md +37 -0
  92. package/.agent/agents/personas/venti-agent/user-context-files/system/user.md +45 -0
  93. package/.agent/agents/personas/venti-agent/venti-learning-communication-mentoring-profile.md +189 -0
  94. package/.agent/agents/planner.md +212 -212
  95. package/.agent/agents/python-reviewer.md +98 -98
  96. package/.agent/agents/pytorch-build-resolver.md +120 -120
  97. package/.agent/agents/refactor-cleaner.md +85 -85
  98. package/.agent/agents/rust-build-resolver.md +148 -148
  99. package/.agent/agents/rust-reviewer.md +94 -94
  100. package/.agent/agents/security-reviewer.md +108 -108
  101. package/.agent/agents/tdd-guide.md +91 -91
  102. package/.agent/agents/typescript-reviewer.md +112 -112
  103. package/.agent/contexts/dev.md +20 -0
  104. package/.agent/contexts/research.md +26 -0
  105. package/.agent/contexts/review.md +22 -0
  106. package/.agent/hooks/hooks.json +395 -0
  107. package/.agent/hooks/readme.md +222 -0
  108. package/.agent/mcp-configs/mcp-servers.json +181 -0
  109. package/.agent/rules/common/agents.md +50 -0
  110. package/.agent/rules/common/code-review.md +124 -0
  111. package/.agent/rules/common/coding-style.md +48 -0
  112. package/.agent/rules/common/development-workflow.md +44 -0
  113. package/.agent/rules/common/git-workflow.md +24 -0
  114. package/.agent/rules/common/hooks.md +30 -0
  115. package/.agent/rules/common/patterns.md +31 -0
  116. package/.agent/rules/common/performance.md +55 -0
  117. package/.agent/rules/common/security.md +29 -0
  118. package/.agent/rules/common/testing.md +29 -0
  119. package/.agent/rules/cpp/coding-style.md +44 -0
  120. package/.agent/rules/cpp/hooks.md +39 -0
  121. package/.agent/rules/cpp/patterns.md +51 -0
  122. package/.agent/rules/cpp/security.md +51 -0
  123. package/.agent/rules/cpp/testing.md +44 -0
  124. package/.agent/rules/csharp/coding-style.md +72 -0
  125. package/.agent/rules/csharp/hooks.md +25 -0
  126. package/.agent/rules/csharp/patterns.md +50 -0
  127. package/.agent/rules/csharp/security.md +58 -0
  128. package/.agent/rules/csharp/testing.md +46 -0
  129. package/.agent/rules/dart/coding-style.md +159 -0
  130. package/.agent/rules/dart/hooks.md +66 -0
  131. package/.agent/rules/dart/patterns.md +261 -0
  132. package/.agent/rules/dart/security.md +135 -0
  133. package/.agent/rules/dart/testing.md +215 -0
  134. package/.agent/rules/golang/coding-style.md +32 -0
  135. package/.agent/rules/golang/hooks.md +17 -0
  136. package/.agent/rules/golang/patterns.md +45 -0
  137. package/.agent/rules/golang/security.md +34 -0
  138. package/.agent/rules/golang/testing.md +31 -0
  139. package/.agent/rules/java/coding-style.md +114 -0
  140. package/.agent/rules/java/hooks.md +18 -0
  141. package/.agent/rules/java/patterns.md +146 -0
  142. package/.agent/rules/java/security.md +100 -0
  143. package/.agent/rules/java/testing.md +131 -0
  144. package/.agent/rules/kotlin/coding-style.md +86 -0
  145. package/.agent/rules/kotlin/hooks.md +17 -0
  146. package/.agent/rules/kotlin/patterns.md +146 -0
  147. package/.agent/rules/kotlin/security.md +82 -0
  148. package/.agent/rules/kotlin/testing.md +128 -0
  149. package/.agent/rules/perl/coding-style.md +46 -0
  150. package/.agent/rules/perl/hooks.md +22 -0
  151. package/.agent/rules/perl/patterns.md +76 -0
  152. package/.agent/rules/perl/security.md +69 -0
  153. package/.agent/rules/perl/testing.md +54 -0
  154. package/.agent/rules/php/coding-style.md +40 -0
  155. package/.agent/rules/php/hooks.md +24 -0
  156. package/.agent/rules/php/patterns.md +33 -0
  157. package/.agent/rules/php/security.md +37 -0
  158. package/.agent/rules/php/testing.md +39 -0
  159. package/.agent/rules/python/coding-style.md +42 -0
  160. package/.agent/rules/python/hooks.md +19 -0
  161. package/.agent/rules/python/patterns.md +39 -0
  162. package/.agent/rules/python/security.md +30 -0
  163. package/.agent/rules/python/testing.md +38 -0
  164. package/.agent/rules/readme.md +111 -0
  165. package/.agent/rules/rust/coding-style.md +151 -0
  166. package/.agent/rules/rust/hooks.md +16 -0
  167. package/.agent/rules/rust/patterns.md +168 -0
  168. package/.agent/rules/rust/security.md +141 -0
  169. package/.agent/rules/rust/testing.md +154 -0
  170. package/.agent/rules/swift/coding-style.md +47 -0
  171. package/.agent/rules/swift/hooks.md +20 -0
  172. package/.agent/rules/swift/patterns.md +66 -0
  173. package/.agent/rules/swift/security.md +33 -0
  174. package/.agent/rules/swift/testing.md +45 -0
  175. package/.agent/rules/typescript/coding-style.md +199 -0
  176. package/.agent/rules/typescript/hooks.md +22 -0
  177. package/.agent/rules/typescript/patterns.md +52 -0
  178. package/.agent/rules/typescript/security.md +28 -0
  179. package/.agent/rules/typescript/testing.md +18 -0
  180. package/.agent/rules/web/coding-style.md +96 -0
  181. package/.agent/rules/web/design-quality.md +63 -0
  182. package/.agent/rules/web/hooks.md +120 -0
  183. package/.agent/rules/web/patterns.md +79 -0
  184. package/.agent/rules/web/performance.md +64 -0
  185. package/.agent/rules/web/security.md +57 -0
  186. package/.agent/rules/web/testing.md +55 -0
  187. package/.agent/rules/zh/agents.md +50 -0
  188. package/.agent/rules/zh/code-review.md +124 -0
  189. package/.agent/rules/zh/coding-style.md +48 -0
  190. package/.agent/rules/zh/development-workflow.md +44 -0
  191. package/.agent/rules/zh/git-workflow.md +24 -0
  192. package/.agent/rules/zh/hooks.md +30 -0
  193. package/.agent/rules/zh/patterns.md +31 -0
  194. package/.agent/rules/zh/performance.md +55 -0
  195. package/.agent/rules/zh/readme.md +108 -0
  196. package/.agent/rules/zh/security.md +29 -0
  197. package/.agent/rules/zh/testing.md +29 -0
  198. package/.agent/skills/agent-eval/SKILL.md +145 -0
  199. package/.agent/skills/agent-harness-construction/SKILL.md +73 -0
  200. package/.agent/skills/agent-payment-x402/SKILL.md +178 -0
  201. package/.agent/skills/agentic-engineering/SKILL.md +63 -0
  202. package/.agent/skills/ai-first-engineering/SKILL.md +51 -0
  203. package/.agent/skills/ai-regression-testing/SKILL.md +385 -0
  204. package/.agent/skills/android-clean-architecture/SKILL.md +339 -0
  205. package/.agent/skills/api-design/SKILL.md +523 -0
  206. package/.agent/skills/architecture-decision-records/SKILL.md +179 -0
  207. package/.agent/skills/article-writing/SKILL.md +79 -0
  208. package/.agent/skills/autonomous-agent-harness/SKILL.md +267 -0
  209. package/.agent/skills/autonomous-loops/SKILL.md +610 -0
  210. package/.agent/skills/backend-patterns/SKILL.md +598 -0
  211. package/.agent/skills/benchmark/SKILL.md +93 -0
  212. package/.agent/skills/blueprint/SKILL.md +105 -0
  213. package/.agent/skills/brand-voice/SKILL.md +97 -0
  214. package/.agent/skills/brand-voice/references/voice-profile-schema.md +55 -0
  215. package/.agent/skills/browser-qa/SKILL.md +87 -0
  216. package/.agent/skills/bun-runtime/SKILL.md +84 -0
  217. package/.agent/skills/canary-watch/SKILL.md +99 -0
  218. package/.agent/skills/carrier-relationship-management/SKILL.md +212 -0
  219. package/.agent/skills/ck/SKILL.md +147 -0
  220. package/.agent/skills/ck/commands/forget.mjs +44 -0
  221. package/.agent/skills/ck/commands/info.mjs +24 -0
  222. package/.agent/skills/ck/commands/init.mjs +143 -0
  223. package/.agent/skills/ck/commands/list.mjs +40 -0
  224. package/.agent/skills/ck/commands/migrate.mjs +202 -0
  225. package/.agent/skills/ck/commands/resume.mjs +36 -0
  226. package/.agent/skills/ck/commands/save.mjs +210 -0
  227. package/.agent/skills/ck/commands/shared.mjs +387 -0
  228. package/.agent/skills/ck/hooks/session-start.mjs +224 -0
  229. package/.agent/skills/claude-api/SKILL.md +337 -0
  230. package/.agent/skills/claude-devfleet/SKILL.md +103 -0
  231. package/.agent/skills/click-path-audit/SKILL.md +244 -0
  232. package/.agent/skills/clickhouse-io/SKILL.md +439 -0
  233. package/.agent/skills/codebase-onboarding/SKILL.md +233 -0
  234. package/.agent/skills/coding-standards/SKILL.md +530 -0
  235. package/.agent/skills/compose-multiplatform-patterns/SKILL.md +299 -0
  236. package/.agent/skills/configure-ecc/SKILL.md +367 -0
  237. package/.agent/skills/connections-optimizer/SKILL.md +189 -0
  238. package/.agent/skills/content-engine/SKILL.md +131 -0
  239. package/.agent/skills/content-hash-cache-pattern/SKILL.md +161 -0
  240. package/.agent/skills/context-budget/SKILL.md +135 -0
  241. package/.agent/skills/continuous-agent-loop/SKILL.md +45 -0
  242. package/.agent/skills/continuous-learning/SKILL.md +119 -0
  243. package/.agent/skills/continuous-learning/config.json +18 -0
  244. package/.agent/skills/continuous-learning/evaluate-session.sh +69 -0
  245. package/.agent/skills/continuous-learning-v2/SKILL.md +365 -0
  246. package/.agent/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
  247. package/.agent/skills/continuous-learning-v2/agents/observer.md +198 -0
  248. package/.agent/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  249. package/.agent/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
  250. package/.agent/skills/continuous-learning-v2/config.json +8 -0
  251. package/.agent/skills/continuous-learning-v2/hooks/observe.sh +428 -0
  252. package/.agent/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
  253. package/.agent/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
  254. package/.agent/skills/continuous-learning-v2/scripts/test-parse-instinct.py +984 -0
  255. package/.agent/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
  256. package/.agent/skills/cpp-coding-standards/SKILL.md +723 -0
  257. package/.agent/skills/cpp-testing/SKILL.md +324 -0
  258. package/.agent/skills/crosspost/SKILL.md +111 -0
  259. package/.agent/skills/csharp-testing/SKILL.md +321 -0
  260. package/.agent/skills/customer-billing-ops/SKILL.md +140 -0
  261. package/.agent/skills/customs-trade-compliance/SKILL.md +263 -0
  262. package/.agent/skills/dart-flutter-patterns/SKILL.md +563 -0
  263. package/.agent/skills/data-scraper-agent/SKILL.md +764 -0
  264. package/.agent/skills/database-migrations/SKILL.md +429 -0
  265. package/.agent/skills/deep-research/SKILL.md +155 -0
  266. package/.agent/skills/deployment-patterns/SKILL.md +427 -0
  267. package/.agent/skills/design-system/SKILL.md +82 -0
  268. package/.agent/skills/django-patterns/SKILL.md +734 -0
  269. package/.agent/skills/django-security/SKILL.md +593 -0
  270. package/.agent/skills/django-tdd/SKILL.md +729 -0
  271. package/.agent/skills/django-verification/SKILL.md +469 -0
  272. package/.agent/skills/dmux-workflows/SKILL.md +191 -0
  273. package/.agent/skills/docker-patterns/SKILL.md +364 -0
  274. package/.agent/skills/documentation-lookup/SKILL.md +90 -0
  275. package/.agent/skills/dotnet-patterns/SKILL.md +321 -0
  276. package/.agent/skills/e2e-testing/SKILL.md +326 -0
  277. package/.agent/skills/energy-procurement/SKILL.md +228 -0
  278. package/.agent/skills/enterprise-agent-ops/SKILL.md +50 -0
  279. package/.agent/skills/eval-harness/SKILL.md +270 -0
  280. package/.agent/skills/exa-search/SKILL.md +103 -0
  281. package/.agent/skills/fal-ai-media/SKILL.md +284 -0
  282. package/.agent/skills/flutter-dart-code-review/SKILL.md +435 -0
  283. package/.agent/skills/foundation-models-on-device/SKILL.md +243 -0
  284. package/.agent/skills/frontend-patterns/SKILL.md +642 -0
  285. package/.agent/skills/frontend-slides/SKILL.md +184 -0
  286. package/.agent/skills/frontend-slides/style-presets.md +330 -0
  287. package/.agent/skills/gan-style-harness/SKILL.md +278 -0
  288. package/.agent/skills/git-workflow/SKILL.md +715 -0
  289. package/.agent/skills/golang-patterns/SKILL.md +674 -0
  290. package/.agent/skills/golang-testing/SKILL.md +720 -0
  291. package/.agent/skills/google-workspace-ops/SKILL.md +95 -0
  292. package/.agent/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  293. package/.agent/skills/healthcare-emr-patterns/SKILL.md +159 -0
  294. package/.agent/skills/healthcare-eval-harness/SKILL.md +207 -0
  295. package/.agent/skills/healthcare-phi-compliance/SKILL.md +145 -0
  296. package/.agent/skills/hexagonal-architecture/SKILL.md +276 -0
  297. package/.agent/skills/inventory-demand-planning/SKILL.md +247 -0
  298. package/.agent/skills/investor-materials/SKILL.md +96 -0
  299. package/.agent/skills/investor-outreach/SKILL.md +91 -0
  300. package/.agent/skills/iterative-retrieval/SKILL.md +211 -0
  301. package/.agent/skills/java-coding-standards/SKILL.md +147 -0
  302. package/.agent/skills/jira-integration/SKILL.md +293 -0
  303. package/.agent/skills/jpa-patterns/SKILL.md +151 -0
  304. package/.agent/skills/kotlin-coroutines-flows/SKILL.md +284 -0
  305. package/.agent/skills/kotlin-exposed-patterns/SKILL.md +719 -0
  306. package/.agent/skills/kotlin-ktor-patterns/SKILL.md +689 -0
  307. package/.agent/skills/kotlin-patterns/SKILL.md +711 -0
  308. package/.agent/skills/kotlin-testing/SKILL.md +824 -0
  309. package/.agent/skills/laravel-patterns/SKILL.md +415 -0
  310. package/.agent/skills/laravel-plugin-discovery/SKILL.md +229 -0
  311. package/.agent/skills/laravel-security/SKILL.md +285 -0
  312. package/.agent/skills/laravel-tdd/SKILL.md +283 -0
  313. package/.agent/skills/laravel-verification/SKILL.md +179 -0
  314. package/.agent/skills/lead-intelligence/SKILL.md +321 -0
  315. package/.agent/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  316. package/.agent/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  317. package/.agent/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  318. package/.agent/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  319. package/.agent/skills/liquid-glass-design/SKILL.md +279 -0
  320. package/.agent/skills/logistics-exception-management/SKILL.md +222 -0
  321. package/.agent/skills/manim-video/SKILL.md +89 -0
  322. package/.agent/skills/manim-video/assets/network-graph-scene.py +52 -0
  323. package/.agent/skills/market-research/SKILL.md +75 -0
  324. package/.agent/skills/mcp-builder/SKILL.md +173 -113
  325. package/.agent/skills/mcp-builder/license.txt +202 -0
  326. package/.agent/skills/mcp-builder/reference/evaluation.md +602 -0
  327. package/.agent/skills/mcp-builder/reference/mcp-best-practices.md +249 -0
  328. package/.agent/skills/mcp-builder/reference/node-mcp-server.md +970 -0
  329. package/.agent/skills/mcp-builder/reference/python-mcp-server.md +719 -0
  330. package/.agent/skills/mcp-builder/scripts/connections.py +151 -0
  331. package/.agent/skills/mcp-builder/scripts/evaluation.py +373 -0
  332. package/.agent/skills/mcp-builder/scripts/example-evaluation.xml +22 -0
  333. package/.agent/skills/mcp-builder/scripts/requirements.txt +2 -0
  334. package/.agent/skills/mcp-server-patterns/SKILL.md +67 -0
  335. package/.agent/skills/nanoclaw-repl/SKILL.md +33 -0
  336. package/.agent/skills/nestjs-patterns/SKILL.md +230 -0
  337. package/.agent/skills/nextjs-turbopack/SKILL.md +44 -0
  338. package/.agent/skills/nutrient-document-processing/SKILL.md +167 -0
  339. package/.agent/skills/nuxt4-patterns/SKILL.md +100 -0
  340. package/.agent/skills/openclaw-persona-forge/SKILL.md +296 -0
  341. package/.agent/skills/openclaw-persona-forge/gacha.py +224 -0
  342. package/.agent/skills/openclaw-persona-forge/gacha.sh +5 -0
  343. package/.agent/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  344. package/.agent/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  345. package/.agent/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  346. package/.agent/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  347. package/.agent/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  348. package/.agent/skills/openclaw-persona-forge/references/output-template.md +166 -0
  349. package/.agent/skills/opensource-pipeline/SKILL.md +255 -0
  350. package/.agent/skills/perl-patterns/SKILL.md +504 -0
  351. package/.agent/skills/perl-security/SKILL.md +503 -0
  352. package/.agent/skills/perl-testing/SKILL.md +475 -0
  353. package/.agent/skills/plankton-code-quality/SKILL.md +236 -0
  354. package/.agent/skills/postgres-patterns/SKILL.md +147 -0
  355. package/.agent/skills/product-lens/SKILL.md +85 -0
  356. package/.agent/skills/production-scheduling/SKILL.md +238 -0
  357. package/.agent/skills/project-flow-ops/SKILL.md +111 -0
  358. package/.agent/skills/project-guidelines-example/SKILL.md +349 -0
  359. package/.agent/skills/prompt-optimizer/SKILL.md +397 -0
  360. package/.agent/skills/python-patterns/SKILL.md +622 -313
  361. package/.agent/skills/python-testing/SKILL.md +816 -0
  362. package/.agent/skills/pytorch-patterns/SKILL.md +396 -0
  363. package/.agent/skills/quality-nonconformance/SKILL.md +260 -0
  364. package/.agent/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
  365. package/.agent/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
  366. package/.agent/skills/remotion-video-creation/SKILL.md +43 -0
  367. package/.agent/skills/remotion-video-creation/rules/3d.md +86 -0
  368. package/.agent/skills/remotion-video-creation/rules/animations.md +29 -0
  369. package/.agent/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  370. package/.agent/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  371. package/.agent/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  372. package/.agent/skills/remotion-video-creation/rules/assets.md +78 -0
  373. package/.agent/skills/remotion-video-creation/rules/audio.md +172 -0
  374. package/.agent/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  375. package/.agent/skills/remotion-video-creation/rules/can-decode.md +75 -0
  376. package/.agent/skills/remotion-video-creation/rules/charts.md +58 -0
  377. package/.agent/skills/remotion-video-creation/rules/compositions.md +146 -0
  378. package/.agent/skills/remotion-video-creation/rules/display-captions.md +126 -0
  379. package/.agent/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  380. package/.agent/skills/remotion-video-creation/rules/fonts.md +152 -0
  381. package/.agent/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  382. package/.agent/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  383. package/.agent/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  384. package/.agent/skills/remotion-video-creation/rules/gifs.md +138 -0
  385. package/.agent/skills/remotion-video-creation/rules/images.md +130 -0
  386. package/.agent/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  387. package/.agent/skills/remotion-video-creation/rules/lottie.md +67 -0
  388. package/.agent/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  389. package/.agent/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  390. package/.agent/skills/remotion-video-creation/rules/sequencing.md +106 -0
  391. package/.agent/skills/remotion-video-creation/rules/tailwind.md +11 -0
  392. package/.agent/skills/remotion-video-creation/rules/text-animations.md +20 -0
  393. package/.agent/skills/remotion-video-creation/rules/timing.md +179 -0
  394. package/.agent/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  395. package/.agent/skills/remotion-video-creation/rules/transitions.md +122 -0
  396. package/.agent/skills/remotion-video-creation/rules/trimming.md +52 -0
  397. package/.agent/skills/remotion-video-creation/rules/videos.md +171 -0
  398. package/.agent/skills/repo-scan/SKILL.md +78 -0
  399. package/.agent/skills/returns-reverse-logistics/SKILL.md +240 -0
  400. package/.agent/skills/rules-distill/SKILL.md +264 -0
  401. package/.agent/skills/rules-distill/scripts/scan-rules.sh +58 -0
  402. package/.agent/skills/rules-distill/scripts/scan-skills.sh +129 -0
  403. package/.agent/skills/rust-patterns/SKILL.md +499 -0
  404. package/.agent/skills/rust-testing/SKILL.md +500 -0
  405. package/.agent/skills/safety-guard/SKILL.md +75 -0
  406. package/.agent/skills/santa-method/SKILL.md +306 -0
  407. package/.agent/skills/search-first/SKILL.md +161 -0
  408. package/.agent/skills/security-review/SKILL.md +495 -0
  409. package/.agent/skills/security-review/cloud-infrastructure-security.md +361 -0
  410. package/.agent/skills/security-scan/SKILL.md +165 -0
  411. package/.agent/skills/skill-comply/SKILL.md +58 -0
  412. package/.agent/skills/skill-comply/fixtures/compliant-trace.jsonl +5 -0
  413. package/.agent/skills/skill-comply/fixtures/noncompliant-trace.jsonl +3 -0
  414. package/.agent/skills/skill-comply/fixtures/tdd-spec.yaml +44 -0
  415. package/.agent/skills/skill-comply/prompts/classifier.md +24 -0
  416. package/.agent/skills/skill-comply/prompts/scenario-generator.md +62 -0
  417. package/.agent/skills/skill-comply/prompts/spec-generator.md +42 -0
  418. package/.agent/skills/skill-comply/pyproject.toml +15 -0
  419. package/.agent/skills/skill-comply/scripts/classifier.py +85 -0
  420. package/.agent/skills/skill-comply/scripts/grader.py +122 -0
  421. package/.agent/skills/skill-comply/scripts/init.py +0 -0
  422. package/.agent/skills/skill-comply/scripts/parser.py +107 -0
  423. package/.agent/skills/skill-comply/scripts/report.py +170 -0
  424. package/.agent/skills/skill-comply/scripts/run.py +127 -0
  425. package/.agent/skills/skill-comply/scripts/runner.py +161 -0
  426. package/.agent/skills/skill-comply/scripts/scenario-generator.py +70 -0
  427. package/.agent/skills/skill-comply/scripts/spec-generator.py +72 -0
  428. package/.agent/skills/skill-comply/scripts/utils.py +13 -0
  429. package/.agent/skills/skill-comply/tests/test-grader.py +137 -0
  430. package/.agent/skills/skill-comply/tests/test-parser.py +90 -0
  431. package/.agent/skills/skill-creator/SKILL.md +485 -0
  432. package/.agent/skills/skill-creator/agents/analyzer.md +274 -0
  433. package/.agent/skills/skill-creator/agents/comparator.md +202 -0
  434. package/.agent/skills/skill-creator/agents/grader.md +223 -0
  435. package/.agent/skills/skill-creator/assets/eval-review.html +146 -0
  436. package/.agent/skills/skill-creator/eval-viewer/generate-review.py +471 -0
  437. package/.agent/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  438. package/.agent/skills/skill-creator/license.txt +202 -0
  439. package/.agent/skills/skill-creator/references/schemas.md +430 -0
  440. package/.agent/skills/skill-creator/scripts/aggregate-benchmark.py +401 -0
  441. package/.agent/skills/skill-creator/scripts/generate-report.py +326 -0
  442. package/.agent/skills/skill-creator/scripts/improve-description.py +247 -0
  443. package/.agent/skills/skill-creator/scripts/init.py +0 -0
  444. package/.agent/skills/skill-creator/scripts/package-skill.py +136 -0
  445. package/.agent/skills/skill-creator/scripts/quick-validate.py +103 -0
  446. package/.agent/skills/skill-creator/scripts/run-eval.py +310 -0
  447. package/.agent/skills/skill-creator/scripts/run-loop.py +328 -0
  448. package/.agent/skills/skill-creator/scripts/utils.py +47 -0
  449. package/.agent/skills/skill-stocktake/SKILL.md +193 -0
  450. package/.agent/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  451. package/.agent/skills/skill-stocktake/scripts/save-results.sh +56 -0
  452. package/.agent/skills/skill-stocktake/scripts/scan.sh +170 -0
  453. package/.agent/skills/social-graph-ranker/SKILL.md +154 -0
  454. package/.agent/skills/springboot-patterns/SKILL.md +314 -0
  455. package/.agent/skills/springboot-security/SKILL.md +272 -0
  456. package/.agent/skills/springboot-tdd/SKILL.md +158 -0
  457. package/.agent/skills/springboot-verification/SKILL.md +231 -0
  458. package/.agent/skills/strategic-compact/SKILL.md +131 -0
  459. package/.agent/skills/strategic-compact/suggest-compact.sh +54 -0
  460. package/.agent/skills/swift-actor-persistence/SKILL.md +143 -0
  461. package/.agent/skills/swift-concurrency-6-2/SKILL.md +216 -0
  462. package/.agent/skills/swift-protocol-di-testing/SKILL.md +190 -0
  463. package/.agent/skills/swiftui-patterns/SKILL.md +259 -0
  464. package/.agent/skills/tdd-workflow/SKILL.md +412 -98
  465. package/.agent/skills/team-builder/SKILL.md +168 -0
  466. package/.agent/skills/token-budget-advisor/SKILL.md +133 -0
  467. package/.agent/skills/ui-demo/SKILL.md +465 -0
  468. package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -26
  469. package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -97
  470. package/.agent/skills/ui-ux-pro-max/data/landing.csv +28 -28
  471. package/.agent/skills/ui-ux-pro-max/data/products.csv +96 -96
  472. package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  473. package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  474. package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  475. package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  476. package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  477. package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  478. package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  479. package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  480. package/.agent/skills/ui-ux-pro-max/data/styles.csv +68 -68
  481. package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  482. package/.agent/skills/ui-ux-pro-max/scripts/search.py +114 -114
  483. package/.agent/skills/verification-loop/SKILL.md +126 -0
  484. package/.agent/skills/video-editing/SKILL.md +310 -0
  485. package/.agent/skills/videodb/SKILL.md +374 -0
  486. package/.agent/skills/videodb/reference/api-reference.md +550 -0
  487. package/.agent/skills/videodb/reference/capture-reference.md +407 -0
  488. package/.agent/skills/videodb/reference/capture.md +101 -0
  489. package/.agent/skills/videodb/reference/editor.md +443 -0
  490. package/.agent/skills/videodb/reference/generative.md +331 -0
  491. package/.agent/skills/videodb/reference/rtstream-reference.md +564 -0
  492. package/.agent/skills/videodb/reference/rtstream.md +65 -0
  493. package/.agent/skills/videodb/reference/search.md +230 -0
  494. package/.agent/skills/videodb/reference/streaming.md +406 -0
  495. package/.agent/skills/videodb/reference/use-cases.md +118 -0
  496. package/.agent/skills/videodb/scripts/ws-listener.py +282 -0
  497. package/.agent/skills/visa-doc-translate/SKILL.md +117 -0
  498. package/.agent/skills/visa-doc-translate/readme.md +86 -0
  499. package/.agent/skills/workspace-surface-audit/SKILL.md +125 -0
  500. package/.agent/skills/x-api/SKILL.md +230 -0
  501. package/.agent/tasks/two-track-merge-contract.md +29 -0
  502. package/.agent/workflows/aside.md +164 -164
  503. package/.agent/workflows/build-fix.md +62 -62
  504. package/.agent/workflows/checkpoint.md +74 -74
  505. package/.agent/workflows/claw.md +23 -51
  506. package/.agent/workflows/clean-memory.md +34 -0
  507. package/.agent/workflows/code-review.md +289 -40
  508. package/.agent/workflows/context-budget.md +23 -29
  509. package/.agent/workflows/cpp-build.md +173 -173
  510. package/.agent/workflows/cpp-review.md +132 -132
  511. package/.agent/workflows/cpp-test.md +251 -251
  512. package/.agent/workflows/devfleet.md +23 -92
  513. package/.agent/workflows/docs.md +23 -31
  514. package/.agent/workflows/e2e.md +268 -365
  515. package/.agent/workflows/eval.md +23 -120
  516. package/.agent/workflows/evolve.md +178 -178
  517. package/.agent/workflows/flutter-build.md +164 -0
  518. package/.agent/workflows/flutter-review.md +116 -0
  519. package/.agent/workflows/flutter-test.md +144 -0
  520. package/.agent/workflows/gan-build.md +99 -0
  521. package/.agent/workflows/gan-design.md +35 -0
  522. package/.agent/workflows/go-build.md +183 -183
  523. package/.agent/workflows/go-review.md +148 -148
  524. package/.agent/workflows/go-test.md +268 -268
  525. package/.agent/workflows/gradle-build.md +70 -70
  526. package/.agent/workflows/harness-audit.md +73 -71
  527. package/.agent/workflows/instinct-export.md +66 -66
  528. package/.agent/workflows/instinct-import.md +114 -114
  529. package/.agent/workflows/instinct-status.md +59 -59
  530. package/.agent/workflows/jira.md +106 -0
  531. package/.agent/workflows/kotlin-build.md +174 -174
  532. package/.agent/workflows/kotlin-review.md +140 -140
  533. package/.agent/workflows/kotlin-test.md +312 -312
  534. package/.agent/workflows/learn-eval.md +116 -116
  535. package/.agent/workflows/learn.md +70 -70
  536. package/.agent/workflows/loop-start.md +32 -32
  537. package/.agent/workflows/loop-status.md +24 -24
  538. package/.agent/workflows/model-route.md +26 -26
  539. package/.agent/workflows/multi-backend.md +158 -158
  540. package/.agent/workflows/multi-execute.md +315 -315
  541. package/.agent/workflows/multi-frontend.md +158 -158
  542. package/.agent/workflows/multi-plan.md +268 -268
  543. package/.agent/workflows/multi-workflow.md +191 -191
  544. package/.agent/workflows/orchestrate.md +135 -231
  545. package/.agent/workflows/plan.md +117 -115
  546. package/.agent/workflows/pm2.md +272 -272
  547. package/.agent/workflows/projects.md +39 -39
  548. package/.agent/workflows/promote.md +41 -41
  549. package/.agent/workflows/prompt-optimize.md +23 -38
  550. package/.agent/workflows/prp-commit.md +112 -0
  551. package/.agent/workflows/prp-implement.md +385 -0
  552. package/.agent/workflows/prp-plan.md +502 -0
  553. package/.agent/workflows/prp-pr.md +184 -0
  554. package/.agent/workflows/prp-prd.md +447 -0
  555. package/.agent/workflows/prune.md +31 -31
  556. package/.agent/workflows/python-review.md +297 -297
  557. package/.agent/workflows/quality-gate.md +29 -29
  558. package/.agent/workflows/refactor-clean.md +80 -80
  559. package/.agent/workflows/resume-session.md +156 -156
  560. package/.agent/workflows/rules-distill.md +20 -11
  561. package/.agent/workflows/rust-build.md +187 -187
  562. package/.agent/workflows/rust-review.md +142 -142
  563. package/.agent/workflows/rust-test.md +308 -308
  564. package/.agent/workflows/santa-loop.md +175 -0
  565. package/.agent/workflows/save-session.md +275 -275
  566. package/.agent/workflows/sessions.md +333 -333
  567. package/.agent/workflows/setup-pm.md +80 -80
  568. package/.agent/workflows/skill-create.md +174 -174
  569. package/.agent/workflows/skill-health.md +54 -54
  570. package/.agent/workflows/tdd.md +231 -328
  571. package/.agent/workflows/test-coverage.md +69 -69
  572. package/.agent/workflows/update-codemaps.md +72 -72
  573. package/.agent/workflows/update-docs.md +84 -84
  574. package/.agent/workflows/verify.md +23 -59
  575. package/LICENSE +176 -176
  576. package/README.md +28 -20
  577. package/RELEASE.md +32 -36
  578. package/package.json +87 -79
  579. package/scripts/release-check.js +55 -55
  580. package/src/bin/cli.js +399 -53
  581. package/src/lib/installer.js +360 -114
  582. package/src/lib/manifests/stacks.js +122 -0
  583. package/src/lib/slash-commands.js +28 -0
  584. package/src/templates/claude/CLAUDE.en.md +42 -0
  585. package/src/templates/claude/CLAUDE.md +42 -0
  586. package/src/templates/claude/CLAUDE.vi.md +42 -0
  587. package/src/templates/codex/AGENTS.en.md +40 -0
  588. package/src/templates/codex/AGENTS.md +40 -0
  589. package/src/templates/codex/AGENTS.vi.md +40 -0
  590. package/src/templates/cursor/pilo-masterkit.mdc +20 -0
  591. package/src/templates/gemini/GEMINI.en.md +56 -0
  592. package/src/templates/gemini/GEMINI.md +56 -0
  593. package/src/templates/gemini/GEMINI.vi.md +56 -0
  594. package/src/templates/github/copilot-instructions.md +16 -0
@@ -0,0 +1,159 @@
1
+ ---
2
+ paths:
3
+ - "**/*.dart"
4
+ - "**/pubspec.yaml"
5
+ - "**/analysis_options.yaml"
6
+ ---
7
+ # Dart/Flutter Coding Style
8
+
9
+ > This file extends [common/coding-style.md](../common/coding-style.md) with Dart and Flutter-specific content.
10
+
11
+ ## Formatting
12
+
13
+ - **dart format** for all `.dart` files — enforced in CI (`dart format --set-exit-if-changed .`)
14
+ - Line length: 80 characters (dart format default)
15
+ - Trailing commas on multi-line argument/parameter lists to improve diffs and formatting
16
+
17
+ ## Immutability
18
+
19
+ - Prefer `final` for local variables and `const` for compile-time constants
20
+ - Use `const` constructors wherever all fields are `final`
21
+ - Return unmodifiable collections from public APIs (`List.unmodifiable`, `Map.unmodifiable`)
22
+ - Use `copyWith()` for state mutations in immutable state classes
23
+
24
+ ```dart
25
+ // BAD
26
+ var count = 0;
27
+ List<String> items = ['a', 'b'];
28
+
29
+ // GOOD
30
+ final count = 0;
31
+ const items = ['a', 'b'];
32
+ ```
33
+
34
+ ## Naming
35
+
36
+ Follow Dart conventions:
37
+ - `camelCase` for variables, parameters, and named constructors
38
+ - `PascalCase` for classes, enums, typedefs, and extensions
39
+ - `snake_case` for file names and library names
40
+ - `SCREAMING_SNAKE_CASE` for constants declared with `const` at top level
41
+ - Prefix private members with `_`
42
+ - Extension names describe the type they extend: `StringExtensions`, not `MyHelpers`
43
+
44
+ ## Null Safety
45
+
46
+ - Avoid `!` (bang operator) — prefer `?.`, `??`, `if (x != null)`, or Dart 3 pattern matching; reserve `!` only where a null value is a programming error and crashing is the right behaviour
47
+ - Avoid `late` unless initialization is guaranteed before first use (prefer nullable or constructor init)
48
+ - Use `required` for constructor parameters that must always be provided
49
+
50
+ ```dart
51
+ // BAD — crashes at runtime if user is null
52
+ final name = user!.name;
53
+
54
+ // GOOD — null-aware operators
55
+ final name = user?.name ?? 'Unknown';
56
+
57
+ // GOOD — Dart 3 pattern matching (exhaustive, compiler-checked)
58
+ final name = switch (user) {
59
+ User(:final name) => name,
60
+ null => 'Unknown',
61
+ };
62
+
63
+ // GOOD — early-return null guard
64
+ String getUserName(User? user) {
65
+ if (user == null) return 'Unknown';
66
+ return user.name; // promoted to non-null after the guard
67
+ }
68
+ ```
69
+
70
+ ## Sealed Types and Pattern Matching (Dart 3+)
71
+
72
+ Use sealed classes to model closed state hierarchies:
73
+
74
+ ```dart
75
+ sealed class AsyncState<T> {
76
+ const AsyncState();
77
+ }
78
+
79
+ final class Loading<T> extends AsyncState<T> {
80
+ const Loading();
81
+ }
82
+
83
+ final class Success<T> extends AsyncState<T> {
84
+ const Success(this.data);
85
+ final T data;
86
+ }
87
+
88
+ final class Failure<T> extends AsyncState<T> {
89
+ const Failure(this.error);
90
+ final Object error;
91
+ }
92
+ ```
93
+
94
+ Always use exhaustive `switch` with sealed types — no default/wildcard:
95
+
96
+ ```dart
97
+ // BAD
98
+ if (state is Loading) { ... }
99
+
100
+ // GOOD
101
+ return switch (state) {
102
+ Loading() => const CircularProgressIndicator(),
103
+ Success(:final data) => DataWidget(data),
104
+ Failure(:final error) => ErrorWidget(error.toString()),
105
+ };
106
+ ```
107
+
108
+ ## Error Handling
109
+
110
+ - Specify exception types in `on` clauses — never use bare `catch (e)`
111
+ - Never catch `Error` subtypes — they indicate programming bugs
112
+ - Use `Result`-style types or sealed classes for recoverable errors
113
+ - Avoid using exceptions for control flow
114
+
115
+ ```dart
116
+ // BAD
117
+ try {
118
+ await fetchUser();
119
+ } catch (e) {
120
+ log(e.toString());
121
+ }
122
+
123
+ // GOOD
124
+ try {
125
+ await fetchUser();
126
+ } on NetworkException catch (e) {
127
+ log('Network error: ${e.message}');
128
+ } on NotFoundException {
129
+ handleNotFound();
130
+ }
131
+ ```
132
+
133
+ ## Async / Futures
134
+
135
+ - Always `await` Futures or explicitly call `unawaited()` to signal intentional fire-and-forget
136
+ - Never mark a function `async` if it never `await`s anything
137
+ - Use `Future.wait` / `Future.any` for concurrent operations
138
+ - Check `context.mounted` before using `BuildContext` after any `await` (Flutter 3.7+)
139
+
140
+ ```dart
141
+ // BAD — ignoring Future
142
+ fetchData(); // fire-and-forget without marking intent
143
+
144
+ // GOOD
145
+ unawaited(fetchData()); // explicit fire-and-forget
146
+ await fetchData(); // or properly awaited
147
+ ```
148
+
149
+ ## Imports
150
+
151
+ - Use `package:` imports throughout — never relative imports (`../`) for cross-feature or cross-layer code
152
+ - Order: `dart:` → external `package:` → internal `package:` (same package)
153
+ - No unused imports — `dart analyze` enforces this with `unused_import`
154
+
155
+ ## Code Generation
156
+
157
+ - Generated files (`.g.dart`, `.freezed.dart`, `.gr.dart`) must be committed or gitignored consistently — pick one strategy per project
158
+ - Never manually edit generated files
159
+ - Keep generator annotations (`@JsonSerializable`, `@freezed`, `@riverpod`, etc.) on the canonical source file only
@@ -0,0 +1,66 @@
1
+ ---
2
+ paths:
3
+ - "**/*.dart"
4
+ - "**/pubspec.yaml"
5
+ - "**/analysis_options.yaml"
6
+ ---
7
+ # Dart/Flutter Hooks
8
+
9
+ > This file extends [common/hooks.md](../common/hooks.md) with Dart and Flutter-specific content.
10
+
11
+ ## PostToolUse Hooks
12
+
13
+ Configure in `~/.claude/settings.json`:
14
+
15
+ - **dart format**: Auto-format `.dart` files after edit
16
+ - **dart analyze**: Run static analysis after editing Dart files and surface warnings
17
+ - **flutter test**: Optionally run affected tests after significant changes
18
+
19
+ ## Recommended Hook Configuration
20
+
21
+ ```json
22
+ {
23
+ "hooks": {
24
+ "PostToolUse": [
25
+ {
26
+ "matcher": { "tool_name": "Edit", "file_paths": ["**/*.dart"] },
27
+ "hooks": [
28
+ { "type": "command", "command": "dart format $CLAUDE_FILE_PATHS" }
29
+ ]
30
+ }
31
+ ]
32
+ }
33
+ }
34
+ ```
35
+
36
+ ## Pre-commit Checks
37
+
38
+ Run before committing Dart/Flutter changes:
39
+
40
+ ```bash
41
+ dart format --set-exit-if-changed .
42
+ dart analyze --fatal-infos
43
+ flutter test
44
+ ```
45
+
46
+ ## Useful One-liners
47
+
48
+ ```bash
49
+ # Format all Dart files
50
+ dart format .
51
+
52
+ # Analyze and report issues
53
+ dart analyze
54
+
55
+ # Run all tests with coverage
56
+ flutter test --coverage
57
+
58
+ # Regenerate code-gen files
59
+ dart run build_runner build --delete-conflicting-outputs
60
+
61
+ # Check for outdated packages
62
+ flutter pub outdated
63
+
64
+ # Upgrade packages within constraints
65
+ flutter pub upgrade
66
+ ```
@@ -0,0 +1,261 @@
1
+ ---
2
+ paths:
3
+ - "**/*.dart"
4
+ - "**/pubspec.yaml"
5
+ ---
6
+ # Dart/Flutter Patterns
7
+
8
+ > This file extends [common/patterns.md](../common/patterns.md) with Dart, Flutter, and common ecosystem-specific content.
9
+
10
+ ## Repository Pattern
11
+
12
+ ```dart
13
+ abstract interface class UserRepository {
14
+ Future<User?> getById(String id);
15
+ Future<List<User>> getAll();
16
+ Stream<List<User>> watchAll();
17
+ Future<void> save(User user);
18
+ Future<void> delete(String id);
19
+ }
20
+
21
+ class UserRepositoryImpl implements UserRepository {
22
+ const UserRepositoryImpl(this._remote, this._local);
23
+
24
+ final UserRemoteDataSource _remote;
25
+ final UserLocalDataSource _local;
26
+
27
+ @override
28
+ Future<User?> getById(String id) async {
29
+ final local = await _local.getById(id);
30
+ if (local != null) return local;
31
+ final remote = await _remote.getById(id);
32
+ if (remote != null) await _local.save(remote);
33
+ return remote;
34
+ }
35
+
36
+ @override
37
+ Future<List<User>> getAll() async {
38
+ final remote = await _remote.getAll();
39
+ for (final user in remote) {
40
+ await _local.save(user);
41
+ }
42
+ return remote;
43
+ }
44
+
45
+ @override
46
+ Stream<List<User>> watchAll() => _local.watchAll();
47
+
48
+ @override
49
+ Future<void> save(User user) => _local.save(user);
50
+
51
+ @override
52
+ Future<void> delete(String id) async {
53
+ await _remote.delete(id);
54
+ await _local.delete(id);
55
+ }
56
+ }
57
+ ```
58
+
59
+ ## State Management: BLoC/Cubit
60
+
61
+ ```dart
62
+ // Cubit — simple state transitions
63
+ class CounterCubit extends Cubit<int> {
64
+ CounterCubit() : super(0);
65
+
66
+ void increment() => emit(state + 1);
67
+ void decrement() => emit(state - 1);
68
+ }
69
+
70
+ // BLoC — event-driven
71
+ @immutable
72
+ sealed class CartEvent {}
73
+ class CartItemAdded extends CartEvent { CartItemAdded(this.item); final Item item; }
74
+ class CartItemRemoved extends CartEvent { CartItemRemoved(this.id); final String id; }
75
+ class CartCleared extends CartEvent {}
76
+
77
+ @immutable
78
+ class CartState {
79
+ const CartState({this.items = const []});
80
+ final List<Item> items;
81
+ CartState copyWith({List<Item>? items}) => CartState(items: items ?? this.items);
82
+ }
83
+
84
+ class CartBloc extends Bloc<CartEvent, CartState> {
85
+ CartBloc() : super(const CartState()) {
86
+ on<CartItemAdded>((event, emit) =>
87
+ emit(state.copyWith(items: [...state.items, event.item])));
88
+ on<CartItemRemoved>((event, emit) =>
89
+ emit(state.copyWith(items: state.items.where((i) => i.id != event.id).toList())));
90
+ on<CartCleared>((_, emit) => emit(const CartState()));
91
+ }
92
+ }
93
+ ```
94
+
95
+ ## State Management: Riverpod
96
+
97
+ ```dart
98
+ // Simple provider
99
+ @riverpod
100
+ Future<List<User>> users(Ref ref) async {
101
+ final repo = ref.watch(userRepositoryProvider);
102
+ return repo.getAll();
103
+ }
104
+
105
+ // Notifier for mutable state
106
+ @riverpod
107
+ class CartNotifier extends _$CartNotifier {
108
+ @override
109
+ List<Item> build() => [];
110
+
111
+ void add(Item item) => state = [...state, item];
112
+ void remove(String id) => state = state.where((i) => i.id != id).toList();
113
+ void clear() => state = [];
114
+ }
115
+
116
+ // ConsumerWidget
117
+ class CartPage extends ConsumerWidget {
118
+ const CartPage({super.key});
119
+
120
+ @override
121
+ Widget build(BuildContext context, WidgetRef ref) {
122
+ final items = ref.watch(cartNotifierProvider);
123
+ return ListView(
124
+ children: items.map((item) => CartItemTile(item: item)).toList(),
125
+ );
126
+ }
127
+ }
128
+ ```
129
+
130
+ ## Dependency Injection
131
+
132
+ Constructor injection is preferred. Use `get_it` or Riverpod providers at composition root:
133
+
134
+ ```dart
135
+ // get_it registration (in a setup file)
136
+ void setupDependencies() {
137
+ final di = GetIt.instance;
138
+ di.registerSingleton<ApiClient>(ApiClient(baseUrl: Env.apiUrl));
139
+ di.registerSingleton<UserRepository>(
140
+ UserRepositoryImpl(di<ApiClient>(), di<LocalDatabase>()),
141
+ );
142
+ di.registerFactory(() => UserListViewModel(di<UserRepository>()));
143
+ }
144
+ ```
145
+
146
+ ## ViewModel Pattern (without BLoC/Riverpod)
147
+
148
+ ```dart
149
+ class UserListViewModel extends ChangeNotifier {
150
+ UserListViewModel(this._repository);
151
+
152
+ final UserRepository _repository;
153
+
154
+ AsyncState<List<User>> _state = const Loading();
155
+ AsyncState<List<User>> get state => _state;
156
+
157
+ Future<void> load() async {
158
+ _state = const Loading();
159
+ notifyListeners();
160
+ try {
161
+ final users = await _repository.getAll();
162
+ _state = Success(users);
163
+ } on Exception catch (e) {
164
+ _state = Failure(e);
165
+ }
166
+ notifyListeners();
167
+ }
168
+ }
169
+ ```
170
+
171
+ ## UseCase Pattern
172
+
173
+ ```dart
174
+ class GetUserUseCase {
175
+ const GetUserUseCase(this._repository);
176
+ final UserRepository _repository;
177
+
178
+ Future<User?> call(String id) => _repository.getById(id);
179
+ }
180
+
181
+ class CreateUserUseCase {
182
+ const CreateUserUseCase(this._repository, this._idGenerator);
183
+ final UserRepository _repository;
184
+ final IdGenerator _idGenerator; // injected — domain layer must not depend on uuid package directly
185
+
186
+ Future<void> call(CreateUserInput input) async {
187
+ // Validate, apply business rules, then persist
188
+ final user = User(id: _idGenerator.generate(), name: input.name, email: input.email);
189
+ await _repository.save(user);
190
+ }
191
+ }
192
+ ```
193
+
194
+ ## Immutable State with freezed
195
+
196
+ ```dart
197
+ @freezed
198
+ class UserState with _$UserState {
199
+ const factory UserState({
200
+ @Default([]) List<User> users,
201
+ @Default(false) bool isLoading,
202
+ String? errorMessage,
203
+ }) = _UserState;
204
+ }
205
+ ```
206
+
207
+ ## Clean Architecture Layer Boundaries
208
+
209
+ ```
210
+ lib/
211
+ ├── domain/ # Pure Dart — no Flutter, no external packages
212
+ │ ├── entities/
213
+ │ ├── repositories/ # Abstract interfaces
214
+ │ └── usecases/
215
+ ├── data/ # Implements domain interfaces
216
+ │ ├── datasources/
217
+ │ ├── models/ # DTOs with fromJson/toJson
218
+ │ └── repositories/
219
+ └── presentation/ # Flutter widgets + state management
220
+ ├── pages/
221
+ ├── widgets/
222
+ └── providers/ (or blocs/ or viewmodels/)
223
+ ```
224
+
225
+ - Domain must not import `package:flutter` or any data-layer package
226
+ - Data layer maps DTOs to domain entities at repository boundaries
227
+ - Presentation calls use cases, not repositories directly
228
+
229
+ ## Navigation (GoRouter)
230
+
231
+ ```dart
232
+ final router = GoRouter(
233
+ routes: [
234
+ GoRoute(
235
+ path: '/',
236
+ builder: (context, state) => const HomePage(),
237
+ ),
238
+ GoRoute(
239
+ path: '/users/:id',
240
+ builder: (context, state) {
241
+ final id = state.pathParameters['id']!;
242
+ return UserDetailPage(userId: id);
243
+ },
244
+ ),
245
+ ],
246
+ // refreshListenable re-evaluates redirect whenever auth state changes
247
+ refreshListenable: GoRouterRefreshStream(authCubit.stream),
248
+ redirect: (context, state) {
249
+ final isLoggedIn = context.read<AuthCubit>().state is AuthAuthenticated;
250
+ if (!isLoggedIn && !state.matchedLocation.startsWith('/login')) {
251
+ return '/login';
252
+ }
253
+ return null;
254
+ },
255
+ );
256
+ ```
257
+
258
+ ## References
259
+
260
+ See skill: `flutter-dart-code-review` for the comprehensive review checklist.
261
+ See skill: `compose-multiplatform-patterns` for Kotlin Multiplatform/Flutter interop patterns.
@@ -0,0 +1,135 @@
1
+ ---
2
+ paths:
3
+ - "**/*.dart"
4
+ - "**/pubspec.yaml"
5
+ - "**/AndroidManifest.xml"
6
+ - "**/Info.plist"
7
+ ---
8
+ # Dart/Flutter Security
9
+
10
+ > This file extends [common/security.md](../common/security.md) with Dart, Flutter, and mobile-specific content.
11
+
12
+ ## Secrets Management
13
+
14
+ - Never hardcode API keys, tokens, or credentials in Dart source
15
+ - Use `--dart-define` or `--dart-define-from-file` for compile-time config (values are not truly secret — use a backend proxy for server-side secrets)
16
+ - Use `flutter_dotenv` or equivalent, with `.env` files listed in `.gitignore`
17
+ - Store runtime secrets in platform-secure storage: `flutter_secure_storage` (Keychain on iOS, EncryptedSharedPreferences on Android)
18
+
19
+ ```dart
20
+ // BAD
21
+ const apiKey = 'sk-abc123...';
22
+
23
+ // GOOD — compile-time config (not secret, just configurable)
24
+ const apiKey = String.fromEnvironment('API_KEY');
25
+
26
+ // GOOD — runtime secret from secure storage
27
+ final token = await secureStorage.read(key: 'auth_token');
28
+ ```
29
+
30
+ ## Network Security
31
+
32
+ - Enforce HTTPS — no `http://` calls in production
33
+ - Configure Android `network_security_config.xml` to block cleartext traffic
34
+ - Set `NSAppTransportSecurity` in `Info.plist` to disallow arbitrary loads
35
+ - Set request timeouts on all HTTP clients — never leave defaults
36
+ - Consider certificate pinning for high-security endpoints
37
+
38
+ ```dart
39
+ // Dio with timeout and HTTPS enforcement
40
+ final dio = Dio(BaseOptions(
41
+ baseUrl: 'https://api.example.com',
42
+ connectTimeout: const Duration(seconds: 10),
43
+ receiveTimeout: const Duration(seconds: 30),
44
+ ));
45
+ ```
46
+
47
+ ## Input Validation
48
+
49
+ - Validate and sanitize all user input before sending to API or storage
50
+ - Never pass unsanitized input to SQL queries — use parameterized queries (sqflite, drift)
51
+ - Sanitize deep link URLs before navigation — validate scheme, host, and path parameters
52
+ - Use `Uri.tryParse` and validate before navigating
53
+
54
+ ```dart
55
+ // BAD — SQL injection
56
+ await db.rawQuery("SELECT * FROM users WHERE email = '$userInput'");
57
+
58
+ // GOOD — parameterized
59
+ await db.query('users', where: 'email = ?', whereArgs: [userInput]);
60
+
61
+ // BAD — unvalidated deep link
62
+ final uri = Uri.parse(incomingLink);
63
+ context.go(uri.path); // could navigate to any route
64
+
65
+ // GOOD — validated deep link
66
+ final uri = Uri.tryParse(incomingLink);
67
+ if (uri != null && uri.host == 'myapp.com' && _allowedPaths.contains(uri.path)) {
68
+ context.go(uri.path);
69
+ }
70
+ ```
71
+
72
+ ## Data Protection
73
+
74
+ - Store tokens, PII, and credentials only in `flutter_secure_storage`
75
+ - Never write sensitive data to `SharedPreferences` or local files in plaintext
76
+ - Clear auth state on logout: tokens, cached user data, cookies
77
+ - Use biometric authentication (`local_auth`) for sensitive operations
78
+ - Avoid logging sensitive data — no `print(token)` or `debugPrint(password)`
79
+
80
+ ## Android-Specific
81
+
82
+ - Declare only required permissions in `AndroidManifest.xml`
83
+ - Export Android components (`Activity`, `Service`, `BroadcastReceiver`) only when necessary; add `android:exported="false"` where not needed
84
+ - Review intent filters — exported components with implicit intent filters are accessible by any app
85
+ - Use `FLAG_SECURE` for screens displaying sensitive data (prevents screenshots)
86
+
87
+ ```xml
88
+ <!-- AndroidManifest.xml — restrict exported components -->
89
+ <activity android:name=".MainActivity" android:exported="true">
90
+ <!-- Only the launcher activity needs exported=true -->
91
+ </activity>
92
+ <activity android:name=".SensitiveActivity" android:exported="false" />
93
+ ```
94
+
95
+ ## iOS-Specific
96
+
97
+ - Declare only required usage descriptions in `Info.plist` (`NSCameraUsageDescription`, etc.)
98
+ - Store secrets in Keychain — `flutter_secure_storage` uses Keychain on iOS
99
+ - Use App Transport Security (ATS) — disallow arbitrary loads
100
+ - Enable data protection entitlement for sensitive files
101
+
102
+ ## WebView Security
103
+
104
+ - Use `webview_flutter` v4+ (`WebViewController` / `WebViewWidget`) — the legacy `WebView` widget is removed
105
+ - Disable JavaScript unless explicitly required (`JavaScriptMode.disabled`)
106
+ - Validate URLs before loading — never load arbitrary URLs from deep links
107
+ - Never expose Dart callbacks to JavaScript unless absolutely needed and carefully sandboxed
108
+ - Use `NavigationDelegate.onNavigationRequest` to intercept and validate navigation requests
109
+
110
+ ```dart
111
+ // webview_flutter v4+ API (WebViewController + WebViewWidget)
112
+ final controller = WebViewController()
113
+ ..setJavaScriptMode(JavaScriptMode.disabled) // disabled unless required
114
+ ..setNavigationDelegate(
115
+ NavigationDelegate(
116
+ onNavigationRequest: (request) {
117
+ final uri = Uri.tryParse(request.url);
118
+ if (uri == null || uri.host != 'trusted.example.com') {
119
+ return NavigationDecision.prevent;
120
+ }
121
+ return NavigationDecision.navigate;
122
+ },
123
+ ),
124
+ );
125
+
126
+ // In your widget tree:
127
+ WebViewWidget(controller: controller)
128
+ ```
129
+
130
+ ## Obfuscation and Build Security
131
+
132
+ - Enable obfuscation in release builds: `flutter build apk --obfuscate --split-debug-info=./debug-info/`
133
+ - Keep `--split-debug-info` output out of version control (used for crash symbolication only)
134
+ - Ensure ProGuard/R8 rules don't inadvertently expose serialized classes
135
+ - Run `flutter analyze` and address all warnings before release