@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,56 @@
1
+ #!/usr/bin/env bash
2
+ # save-results.sh — merge evaluated skills into results.json with correct UTC timestamp
3
+ # Usage: save-results.sh RESULTS_JSON <<< "$EVAL_JSON"
4
+ #
5
+ # stdin format:
6
+ # { "skills": {...}, "mode"?: "full"|"quick", "batch_progress"?: {...} }
7
+ #
8
+ # Always sets evaluated_at to current UTC time via `date -u`.
9
+ # Merges stdin .skills into existing results.json (new entries override old).
10
+ # Optionally updates .mode and .batch_progress if present in stdin.
11
+
12
+ set -euo pipefail
13
+
14
+ RESULTS_JSON="${1:-}"
15
+
16
+ if [[ -z "$RESULTS_JSON" ]]; then
17
+ echo "Error: RESULTS_JSON argument required" >&2
18
+ echo "Usage: save-results.sh RESULTS_JSON <<< \"\$EVAL_JSON\"" >&2
19
+ exit 1
20
+ fi
21
+
22
+ EVALUATED_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
23
+
24
+ # Read eval results from stdin and validate JSON before touching the results file
25
+ input_json=$(cat)
26
+ if ! echo "$input_json" | jq empty 2>/dev/null; then
27
+ echo "Error: stdin is not valid JSON" >&2
28
+ exit 1
29
+ fi
30
+
31
+ if [[ ! -f "$RESULTS_JSON" ]]; then
32
+ # Bootstrap: create new results.json from stdin JSON + current UTC timestamp
33
+ echo "$input_json" | jq --arg ea "$EVALUATED_AT" \
34
+ '. + { evaluated_at: $ea }' > "$RESULTS_JSON"
35
+ exit 0
36
+ fi
37
+
38
+ # Merge: new .skills override existing ones; old skills not in input_json are kept.
39
+ # Optionally update .mode and .batch_progress if provided.
40
+ #
41
+ # Use mktemp for a collision-safe temp file (concurrent runs on the same RESULTS_JSON
42
+ # would race on a predictable ".tmp" suffix; random suffix prevents silent overwrites).
43
+ tmp=$(mktemp "${RESULTS_JSON}.XXXXXX")
44
+ trap 'rm -f "$tmp"' EXIT
45
+
46
+ jq -s \
47
+ --arg ea "$EVALUATED_AT" \
48
+ '.[0] as $existing | .[1] as $new |
49
+ $existing |
50
+ .evaluated_at = $ea |
51
+ .skills = ($existing.skills + ($new.skills // {})) |
52
+ if ($new | has("mode")) then .mode = $new.mode else . end |
53
+ if ($new | has("batch_progress")) then .batch_progress = $new.batch_progress else . end' \
54
+ "$RESULTS_JSON" <(echo "$input_json") > "$tmp"
55
+
56
+ mv "$tmp" "$RESULTS_JSON"
@@ -0,0 +1,170 @@
1
+ #!/usr/bin/env bash
2
+ # scan.sh — enumerate skill files, extract frontmatter and UTC mtime
3
+ # Usage: scan.sh [CWD_SKILLS_DIR]
4
+ # Output: JSON to stdout
5
+ #
6
+ # When CWD_SKILLS_DIR is omitted, defaults to $PWD/.claude/skills so the
7
+ # script always picks up project-level skills without relying on the caller.
8
+ #
9
+ # Environment:
10
+ # SKILL_STOCKTAKE_GLOBAL_DIR Override ~/.claude/skills (for testing only;
11
+ # do not set in production — intended for bats tests)
12
+ # SKILL_STOCKTAKE_PROJECT_DIR Override project dir detection (for testing only)
13
+
14
+ set -euo pipefail
15
+
16
+ GLOBAL_DIR="${SKILL_STOCKTAKE_GLOBAL_DIR:-$HOME/.claude/skills}"
17
+ CWD_SKILLS_DIR="${SKILL_STOCKTAKE_PROJECT_DIR:-${1:-$PWD/.claude/skills}}"
18
+ # Path to JSONL file containing tool-use observations (optional; used for usage frequency counts).
19
+ # Override via SKILL_STOCKTAKE_OBSERVATIONS env var if your setup uses a different path.
20
+ OBSERVATIONS="${SKILL_STOCKTAKE_OBSERVATIONS:-$HOME/.claude/observations.jsonl}"
21
+
22
+ # Validate CWD_SKILLS_DIR looks like a .claude/skills path (defense-in-depth).
23
+ # Only warn when the path exists — a nonexistent path poses no traversal risk.
24
+ if [[ -n "$CWD_SKILLS_DIR" && -d "$CWD_SKILLS_DIR" && "$CWD_SKILLS_DIR" != */.claude/skills* ]]; then
25
+ echo "Warning: CWD_SKILLS_DIR does not look like a .claude/skills path: $CWD_SKILLS_DIR" >&2
26
+ fi
27
+
28
+ # Extract a frontmatter field (handles both quoted and unquoted single-line values).
29
+ # Does NOT support multi-line YAML blocks (| or >) or nested YAML keys.
30
+ extract_field() {
31
+ local file="$1" field="$2"
32
+ awk -v f="$field" '
33
+ BEGIN { fm=0 }
34
+ /^---$/ { fm++; next }
35
+ fm==1 {
36
+ n = length(f) + 2
37
+ if (substr($0, 1, n) == f ": ") {
38
+ val = substr($0, n+1)
39
+ gsub(/^"/, "", val)
40
+ gsub(/"$/, "", val)
41
+ print val
42
+ exit
43
+ }
44
+ }
45
+ fm>=2 { exit }
46
+ ' "$file"
47
+ }
48
+
49
+ # Get UTC timestamp N days ago (supports both macOS and GNU date)
50
+ date_ago() {
51
+ local n="$1"
52
+ date -u -v-"${n}d" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null ||
53
+ date -u -d "${n} days ago" +%Y-%m-%dT%H:%M:%SZ
54
+ }
55
+
56
+ # Count observations matching a file path since a cutoff timestamp
57
+ count_obs() {
58
+ local file="$1" cutoff="$2"
59
+ if [[ ! -f "$OBSERVATIONS" ]]; then
60
+ echo 0
61
+ return
62
+ fi
63
+ jq -r --arg p "$file" --arg c "$cutoff" \
64
+ 'select(.tool=="Read" and .path==$p and .timestamp>=$c) | 1' \
65
+ "$OBSERVATIONS" 2>/dev/null | wc -l | tr -d ' '
66
+ }
67
+
68
+ # Scan a directory and produce a JSON array of skill objects
69
+ scan_dir_to_json() {
70
+ local dir="$1"
71
+ local c7 c30
72
+ c7=$(date_ago 7)
73
+ c30=$(date_ago 30)
74
+
75
+ local tmpdir
76
+ tmpdir=$(mktemp -d)
77
+ # Use a function to avoid embedding $tmpdir in a quoted string (prevents injection
78
+ # if TMPDIR were crafted to contain shell metacharacters).
79
+ local _scan_tmpdir="$tmpdir"
80
+ _scan_cleanup() { rm -rf "$_scan_tmpdir"; }
81
+ trap _scan_cleanup RETURN
82
+
83
+ # Pre-aggregate observation counts in two passes (one per window) instead of
84
+ # calling jq per-file — reduces from O(n*m) to O(n+m) jq invocations.
85
+ local obs_7d_counts obs_30d_counts
86
+ obs_7d_counts=""
87
+ obs_30d_counts=""
88
+ if [[ -f "$OBSERVATIONS" ]]; then
89
+ obs_7d_counts=$(jq -r --arg c "$c7" \
90
+ 'select(.tool=="Read" and .timestamp>=$c) | .path' \
91
+ "$OBSERVATIONS" 2>/dev/null | sort | uniq -c)
92
+ obs_30d_counts=$(jq -r --arg c "$c30" \
93
+ 'select(.tool=="Read" and .timestamp>=$c) | .path' \
94
+ "$OBSERVATIONS" 2>/dev/null | sort | uniq -c)
95
+ fi
96
+
97
+ local i=0
98
+ while IFS= read -r file; do
99
+ local name desc mtime u7 u30 dp
100
+ name=$(extract_field "$file" "name")
101
+ desc=$(extract_field "$file" "description")
102
+ mtime=$(date -u -r "$file" +%Y-%m-%dT%H:%M:%SZ)
103
+ # Use awk exact field match to avoid substring false-positives from grep -F.
104
+ # uniq -c output format: " N /path/to/file" — path is always field 2.
105
+ u7=$(echo "$obs_7d_counts" | awk -v f="$file" '$2 == f {print $1}' | head -1)
106
+ u7="${u7:-0}"
107
+ u30=$(echo "$obs_30d_counts" | awk -v f="$file" '$2 == f {print $1}' | head -1)
108
+ u30="${u30:-0}"
109
+ dp="${file/#$HOME/~}"
110
+
111
+ jq -n \
112
+ --arg path "$dp" \
113
+ --arg name "$name" \
114
+ --arg description "$desc" \
115
+ --arg mtime "$mtime" \
116
+ --argjson use_7d "$u7" \
117
+ --argjson use_30d "$u30" \
118
+ '{path:$path,name:$name,description:$description,use_7d:$use_7d,use_30d:$use_30d,mtime:$mtime}' \
119
+ > "$tmpdir/$i.json"
120
+ i=$((i+1))
121
+ done < <(find "$dir" -name "*.md" -type f 2>/dev/null | sort)
122
+
123
+ if [[ $i -eq 0 ]]; then
124
+ echo "[]"
125
+ else
126
+ jq -s '.' "$tmpdir"/*.json
127
+ fi
128
+ }
129
+
130
+ # --- Main ---
131
+
132
+ global_found="false"
133
+ global_count=0
134
+ global_skills="[]"
135
+
136
+ if [[ -d "$GLOBAL_DIR" ]]; then
137
+ global_found="true"
138
+ global_skills=$(scan_dir_to_json "$GLOBAL_DIR")
139
+ global_count=$(echo "$global_skills" | jq 'length')
140
+ fi
141
+
142
+ project_found="false"
143
+ project_path=""
144
+ project_count=0
145
+ project_skills="[]"
146
+
147
+ if [[ -n "$CWD_SKILLS_DIR" && -d "$CWD_SKILLS_DIR" ]]; then
148
+ project_found="true"
149
+ project_path="$CWD_SKILLS_DIR"
150
+ project_skills=$(scan_dir_to_json "$CWD_SKILLS_DIR")
151
+ project_count=$(echo "$project_skills" | jq 'length')
152
+ fi
153
+
154
+ # Merge global + project skills into one array
155
+ all_skills=$(jq -s 'add' <(echo "$global_skills") <(echo "$project_skills"))
156
+
157
+ jq -n \
158
+ --arg global_found "$global_found" \
159
+ --argjson global_count "$global_count" \
160
+ --arg project_found "$project_found" \
161
+ --arg project_path "$project_path" \
162
+ --argjson project_count "$project_count" \
163
+ --argjson skills "$all_skills" \
164
+ '{
165
+ scan_summary: {
166
+ global: { found: ($global_found == "true"), count: $global_count },
167
+ project: { found: ($project_found == "true"), path: $project_path, count: $project_count }
168
+ },
169
+ skills: $skills
170
+ }'
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: social-graph-ranker
3
+ description: Weighted social-graph ranking for warm intro discovery, bridge scoring, and network gap analysis across X and LinkedIn. Use when the user wants the reusable graph-ranking engine itself, not the broader outreach or network-maintenance workflow layered on top of it.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Social Graph Ranker
8
+
9
+ Canonical weighted graph-ranking layer for network-aware outreach.
10
+
11
+ Use this when the user needs to:
12
+
13
+ - rank existing mutuals or connections by intro value
14
+ - map warm paths to a target list
15
+ - measure bridge value across first- and second-order connections
16
+ - decide which targets deserve warm intros versus direct cold outreach
17
+ - understand the graph math independently from `lead-intelligence` or `connections-optimizer`
18
+
19
+ ## When To Use This Standalone
20
+
21
+ Choose this skill when the user primarily wants the ranking engine:
22
+
23
+ - "who in my network is best positioned to introduce me?"
24
+ - "rank my mutuals by who can get me to these people"
25
+ - "map my graph against this ICP"
26
+ - "show me the bridge math"
27
+
28
+ Do not use this by itself when the user really wants:
29
+
30
+ - full lead generation and outbound sequencing -> use `lead-intelligence`
31
+ - pruning, rebalancing, and growing the network -> use `connections-optimizer`
32
+
33
+ ## Inputs
34
+
35
+ Collect or infer:
36
+
37
+ - target people, companies, or ICP definition
38
+ - the user's current graph on X, LinkedIn, or both
39
+ - weighting priorities such as role, industry, geography, and responsiveness
40
+ - traversal depth and decay tolerance
41
+
42
+ ## Core Model
43
+
44
+ Given:
45
+
46
+ - `T` = weighted target set
47
+ - `M` = your current mutuals / direct connections
48
+ - `d(m, t)` = shortest hop distance from mutual `m` to target `t`
49
+ - `w(t)` = target weight from signal scoring
50
+
51
+ Base bridge score:
52
+
53
+ ```text
54
+ B(m) = Σ_{t ∈ T} w(t) · λ^(d(m,t) - 1)
55
+ ```
56
+
57
+ Where:
58
+
59
+ - `λ` is the decay factor, usually `0.5`
60
+ - a direct path contributes full value
61
+ - each extra hop halves the contribution
62
+
63
+ Second-order expansion:
64
+
65
+ ```text
66
+ B_ext(m) = B(m) + α · Σ_{m' ∈ N(m) \\ M} Σ_{t ∈ T} w(t) · λ^(d(m',t))
67
+ ```
68
+
69
+ Where:
70
+
71
+ - `N(m) \\ M` is the set of people the mutual knows that you do not
72
+ - `α` discounts second-order reach, usually `0.3`
73
+
74
+ Response-adjusted final ranking:
75
+
76
+ ```text
77
+ R(m) = B_ext(m) · (1 + β · engagement(m))
78
+ ```
79
+
80
+ Where:
81
+
82
+ - `engagement(m)` is normalized responsiveness or relationship strength
83
+ - `β` is the engagement bonus, usually `0.2`
84
+
85
+ Interpretation:
86
+
87
+ - Tier 1: high `R(m)` and direct bridge paths -> warm intro asks
88
+ - Tier 2: medium `R(m)` and one-hop bridge paths -> conditional intro asks
89
+ - Tier 3: low `R(m)` or no viable bridge -> direct outreach or follow-gap fill
90
+
91
+ ## Scoring Signals
92
+
93
+ Weight targets before graph traversal with whatever matters for the current priority set:
94
+
95
+ - role or title alignment
96
+ - company or industry fit
97
+ - current activity and recency
98
+ - geographic relevance
99
+ - influence or reach
100
+ - likelihood of response
101
+
102
+ Weight mutuals after traversal with:
103
+
104
+ - number of weighted paths into the target set
105
+ - directness of those paths
106
+ - responsiveness or prior interaction history
107
+ - contextual fit for making the intro
108
+
109
+ ## Workflow
110
+
111
+ 1. Build the weighted target set.
112
+ 2. Pull the user's graph from X, LinkedIn, or both.
113
+ 3. Compute direct bridge scores.
114
+ 4. Expand second-order candidates for the highest-value mutuals.
115
+ 5. Rank by `R(m)`.
116
+ 6. Return:
117
+ - best warm intro asks
118
+ - conditional bridge paths
119
+ - graph gaps where no warm path exists
120
+
121
+ ## Output Shape
122
+
123
+ ```text
124
+ SOCIAL GRAPH RANKING
125
+ ====================
126
+
127
+ Priority Set:
128
+ Platforms:
129
+ Decay Model:
130
+
131
+ Top Bridges
132
+ - mutual / connection
133
+ base_score:
134
+ extended_score:
135
+ best_targets:
136
+ path_summary:
137
+ recommended_action:
138
+
139
+ Conditional Paths
140
+ - mutual / connection
141
+ reason:
142
+ extra hop cost:
143
+
144
+ No Warm Path
145
+ - target
146
+ recommendation: direct outreach / fill graph gap
147
+ ```
148
+
149
+ ## Related Skills
150
+
151
+ - `lead-intelligence` uses this ranking model inside the broader target-discovery and outreach pipeline
152
+ - `connections-optimizer` uses the same bridge logic when deciding who to keep, prune, or add
153
+ - `brand-voice` should run before drafting any intro request or direct outreach
154
+ - `x-api` provides X graph access and optional execution paths
@@ -0,0 +1,314 @@
1
+ ---
2
+ name: springboot-patterns
3
+ description: Spring Boot architecture patterns, REST API design, layered services, data access, caching, async processing, and logging. Use for Java Spring Boot backend work.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Spring Boot Development Patterns
8
+
9
+ Spring Boot architecture and API patterns for scalable, production-grade services.
10
+
11
+ ## When to Activate
12
+
13
+ - Building REST APIs with Spring MVC or WebFlux
14
+ - Structuring controller → service → repository layers
15
+ - Configuring Spring Data JPA, caching, or async processing
16
+ - Adding validation, exception handling, or pagination
17
+ - Setting up profiles for dev/staging/production environments
18
+ - Implementing event-driven patterns with Spring Events or Kafka
19
+
20
+ ## REST API Structure
21
+
22
+ ```java
23
+ @RestController
24
+ @RequestMapping("/api/markets")
25
+ @Validated
26
+ class MarketController {
27
+ private final MarketService marketService;
28
+
29
+ MarketController(MarketService marketService) {
30
+ this.marketService = marketService;
31
+ }
32
+
33
+ @GetMapping
34
+ ResponseEntity<Page<MarketResponse>> list(
35
+ @RequestParam(defaultValue = "0") int page,
36
+ @RequestParam(defaultValue = "20") int size) {
37
+ Page<Market> markets = marketService.list(PageRequest.of(page, size));
38
+ return ResponseEntity.ok(markets.map(MarketResponse::from));
39
+ }
40
+
41
+ @PostMapping
42
+ ResponseEntity<MarketResponse> create(@Valid @RequestBody CreateMarketRequest request) {
43
+ Market market = marketService.create(request);
44
+ return ResponseEntity.status(HttpStatus.CREATED).body(MarketResponse.from(market));
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## Repository Pattern (Spring Data JPA)
50
+
51
+ ```java
52
+ public interface MarketRepository extends JpaRepository<MarketEntity, Long> {
53
+ @Query("select m from MarketEntity m where m.status = :status order by m.volume desc")
54
+ List<MarketEntity> findActive(@Param("status") MarketStatus status, Pageable pageable);
55
+ }
56
+ ```
57
+
58
+ ## Service Layer with Transactions
59
+
60
+ ```java
61
+ @Service
62
+ public class MarketService {
63
+ private final MarketRepository repo;
64
+
65
+ public MarketService(MarketRepository repo) {
66
+ this.repo = repo;
67
+ }
68
+
69
+ @Transactional
70
+ public Market create(CreateMarketRequest request) {
71
+ MarketEntity entity = MarketEntity.from(request);
72
+ MarketEntity saved = repo.save(entity);
73
+ return Market.from(saved);
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## DTOs and Validation
79
+
80
+ ```java
81
+ public record CreateMarketRequest(
82
+ @NotBlank @Size(max = 200) String name,
83
+ @NotBlank @Size(max = 2000) String description,
84
+ @NotNull @FutureOrPresent Instant endDate,
85
+ @NotEmpty List<@NotBlank String> categories) {}
86
+
87
+ public record MarketResponse(Long id, String name, MarketStatus status) {
88
+ static MarketResponse from(Market market) {
89
+ return new MarketResponse(market.id(), market.name(), market.status());
90
+ }
91
+ }
92
+ ```
93
+
94
+ ## Exception Handling
95
+
96
+ ```java
97
+ @ControllerAdvice
98
+ class GlobalExceptionHandler {
99
+ @ExceptionHandler(MethodArgumentNotValidException.class)
100
+ ResponseEntity<ApiError> handleValidation(MethodArgumentNotValidException ex) {
101
+ String message = ex.getBindingResult().getFieldErrors().stream()
102
+ .map(e -> e.getField() + ": " + e.getDefaultMessage())
103
+ .collect(Collectors.joining(", "));
104
+ return ResponseEntity.badRequest().body(ApiError.validation(message));
105
+ }
106
+
107
+ @ExceptionHandler(AccessDeniedException.class)
108
+ ResponseEntity<ApiError> handleAccessDenied() {
109
+ return ResponseEntity.status(HttpStatus.FORBIDDEN).body(ApiError.of("Forbidden"));
110
+ }
111
+
112
+ @ExceptionHandler(Exception.class)
113
+ ResponseEntity<ApiError> handleGeneric(Exception ex) {
114
+ // Log unexpected errors with stack traces
115
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
116
+ .body(ApiError.of("Internal server error"));
117
+ }
118
+ }
119
+ ```
120
+
121
+ ## Caching
122
+
123
+ Requires `@EnableCaching` on a configuration class.
124
+
125
+ ```java
126
+ @Service
127
+ public class MarketCacheService {
128
+ private final MarketRepository repo;
129
+
130
+ public MarketCacheService(MarketRepository repo) {
131
+ this.repo = repo;
132
+ }
133
+
134
+ @Cacheable(value = "market", key = "#id")
135
+ public Market getById(Long id) {
136
+ return repo.findById(id)
137
+ .map(Market::from)
138
+ .orElseThrow(() -> new EntityNotFoundException("Market not found"));
139
+ }
140
+
141
+ @CacheEvict(value = "market", key = "#id")
142
+ public void evict(Long id) {}
143
+ }
144
+ ```
145
+
146
+ ## Async Processing
147
+
148
+ Requires `@EnableAsync` on a configuration class.
149
+
150
+ ```java
151
+ @Service
152
+ public class NotificationService {
153
+ @Async
154
+ public CompletableFuture<Void> sendAsync(Notification notification) {
155
+ // send email/SMS
156
+ return CompletableFuture.completedFuture(null);
157
+ }
158
+ }
159
+ ```
160
+
161
+ ## Logging (SLF4J)
162
+
163
+ ```java
164
+ @Service
165
+ public class ReportService {
166
+ private static final Logger log = LoggerFactory.getLogger(ReportService.class);
167
+
168
+ public Report generate(Long marketId) {
169
+ log.info("generate_report marketId={}", marketId);
170
+ try {
171
+ // logic
172
+ } catch (Exception ex) {
173
+ log.error("generate_report_failed marketId={}", marketId, ex);
174
+ throw ex;
175
+ }
176
+ return new Report();
177
+ }
178
+ }
179
+ ```
180
+
181
+ ## Middleware / Filters
182
+
183
+ ```java
184
+ @Component
185
+ public class RequestLoggingFilter extends OncePerRequestFilter {
186
+ private static final Logger log = LoggerFactory.getLogger(RequestLoggingFilter.class);
187
+
188
+ @Override
189
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
190
+ FilterChain filterChain) throws ServletException, IOException {
191
+ long start = System.currentTimeMillis();
192
+ try {
193
+ filterChain.doFilter(request, response);
194
+ } finally {
195
+ long duration = System.currentTimeMillis() - start;
196
+ log.info("req method={} uri={} status={} durationMs={}",
197
+ request.getMethod(), request.getRequestURI(), response.getStatus(), duration);
198
+ }
199
+ }
200
+ }
201
+ ```
202
+
203
+ ## Pagination and Sorting
204
+
205
+ ```java
206
+ PageRequest page = PageRequest.of(pageNumber, pageSize, Sort.by("createdAt").descending());
207
+ Page<Market> results = marketService.list(page);
208
+ ```
209
+
210
+ ## Error-Resilient External Calls
211
+
212
+ ```java
213
+ public <T> T withRetry(Supplier<T> supplier, int maxRetries) {
214
+ int attempts = 0;
215
+ while (true) {
216
+ try {
217
+ return supplier.get();
218
+ } catch (Exception ex) {
219
+ attempts++;
220
+ if (attempts >= maxRetries) {
221
+ throw ex;
222
+ }
223
+ try {
224
+ Thread.sleep((long) Math.pow(2, attempts) * 100L);
225
+ } catch (InterruptedException ie) {
226
+ Thread.currentThread().interrupt();
227
+ throw ex;
228
+ }
229
+ }
230
+ }
231
+ }
232
+ ```
233
+
234
+ ## Rate Limiting (Filter + Bucket4j)
235
+
236
+ **Security Note**: The `X-Forwarded-For` header is untrusted by default because clients can spoof it.
237
+ Only use forwarded headers when:
238
+ 1. Your app is behind a trusted reverse proxy (nginx, AWS ALB, etc.)
239
+ 2. You have registered `ForwardedHeaderFilter` as a bean
240
+ 3. You have configured `server.forward-headers-strategy=NATIVE` or `FRAMEWORK` in application properties
241
+ 4. Your proxy is configured to overwrite (not append to) the `X-Forwarded-For` header
242
+
243
+ When `ForwardedHeaderFilter` is properly configured, `request.getRemoteAddr()` will automatically
244
+ return the correct client IP from the forwarded headers. Without this configuration, use
245
+ `request.getRemoteAddr()` directly—it returns the immediate connection IP, which is the only
246
+ trustworthy value.
247
+
248
+ ```java
249
+ @Component
250
+ public class RateLimitFilter extends OncePerRequestFilter {
251
+ private final Map<String, Bucket> buckets = new ConcurrentHashMap<>();
252
+
253
+ /*
254
+ * SECURITY: This filter uses request.getRemoteAddr() to identify clients for rate limiting.
255
+ *
256
+ * If your application is behind a reverse proxy (nginx, AWS ALB, etc.), you MUST configure
257
+ * Spring to handle forwarded headers properly for accurate client IP detection:
258
+ *
259
+ * 1. Set server.forward-headers-strategy=NATIVE (for cloud platforms) or FRAMEWORK in
260
+ * application.properties/yaml
261
+ * 2. If using FRAMEWORK strategy, register ForwardedHeaderFilter:
262
+ *
263
+ * @Bean
264
+ * ForwardedHeaderFilter forwardedHeaderFilter() {
265
+ * return new ForwardedHeaderFilter();
266
+ * }
267
+ *
268
+ * 3. Ensure your proxy overwrites (not appends) the X-Forwarded-For header to prevent spoofing
269
+ * 4. Configure server.tomcat.remoteip.trusted-proxies or equivalent for your container
270
+ *
271
+ * Without this configuration, request.getRemoteAddr() returns the proxy IP, not the client IP.
272
+ * Do NOT read X-Forwarded-For directly—it is trivially spoofable without trusted proxy handling.
273
+ */
274
+ @Override
275
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
276
+ FilterChain filterChain) throws ServletException, IOException {
277
+ // Use getRemoteAddr() which returns the correct client IP when ForwardedHeaderFilter
278
+ // is configured, or the direct connection IP otherwise. Never trust X-Forwarded-For
279
+ // headers directly without proper proxy configuration.
280
+ String clientIp = request.getRemoteAddr();
281
+
282
+ Bucket bucket = buckets.computeIfAbsent(clientIp,
283
+ k -> Bucket.builder()
284
+ .addLimit(Bandwidth.classic(100, Refill.greedy(100, Duration.ofMinutes(1))))
285
+ .build());
286
+
287
+ if (bucket.tryConsume(1)) {
288
+ filterChain.doFilter(request, response);
289
+ } else {
290
+ response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value());
291
+ }
292
+ }
293
+ }
294
+ ```
295
+
296
+ ## Background Jobs
297
+
298
+ Use Spring’s `@Scheduled` or integrate with queues (e.g., Kafka, SQS, RabbitMQ). Keep handlers idempotent and observable.
299
+
300
+ ## Observability
301
+
302
+ - Structured logging (JSON) via Logback encoder
303
+ - Metrics: Micrometer + Prometheus/OTel
304
+ - Tracing: Micrometer Tracing with OpenTelemetry or Brave backend
305
+
306
+ ## Production Defaults
307
+
308
+ - Prefer constructor injection, avoid field injection
309
+ - Enable `spring.mvc.problemdetails.enabled=true` for RFC 7807 errors (Spring Boot 3+)
310
+ - Configure HikariCP pool sizes for workload, set timeouts
311
+ - Use `@Transactional(readOnly = true)` for queries
312
+ - Enforce null-safety via `@NonNull` and `Optional` where appropriate
313
+
314
+ **Remember**: Keep controllers thin, services focused, repositories simple, and errors handled centrally. Optimize for maintainability and testability.