@biggora/claude-plugins 1.2.0 → 1.3.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 (265) hide show
  1. package/README.md +13 -4
  2. package/package.json +1 -1
  3. package/registry/registry.json +334 -244
  4. package/specs/coding.md +30 -0
  5. package/specs/pod.md +2 -0
  6. package/src/commands/skills/add.js +63 -7
  7. package/src/commands/skills/list.js +23 -52
  8. package/src/commands/skills/remove.js +26 -27
  9. package/src/commands/skills/resolve.js +155 -0
  10. package/src/commands/skills/update.js +58 -74
  11. package/src/skills/captcha/README.md +221 -0
  12. package/src/skills/captcha/SKILL.md +355 -0
  13. package/src/skills/captcha/references/captcha-types.md +254 -0
  14. package/src/skills/captcha/references/services.md +172 -0
  15. package/src/skills/captcha/references/stealth.md +238 -0
  16. package/src/skills/captcha/scripts/solve_captcha.py +323 -0
  17. package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
  18. package/src/skills/google-merchant-api/SKILL.md +581 -0
  19. package/src/skills/google-merchant-api/references/accounts.md +247 -0
  20. package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
  21. package/src/skills/google-merchant-api/references/datasources.md +233 -0
  22. package/src/skills/google-merchant-api/references/inventories.md +201 -0
  23. package/src/skills/google-merchant-api/references/migration.md +267 -0
  24. package/src/skills/google-merchant-api/references/products.md +316 -0
  25. package/src/skills/google-merchant-api/references/promotions.md +201 -0
  26. package/src/skills/google-merchant-api/references/reports.md +240 -0
  27. package/src/skills/lv-aggregators-api/SKILL.md +113 -0
  28. package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
  29. package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
  30. package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
  31. package/src/skills/nest-best-practices/SKILL.md +251 -0
  32. package/src/skills/nest-best-practices/references/best-practices-request-lifecycle.md +158 -0
  33. package/src/skills/nest-best-practices/references/cli-monorepo.md +106 -0
  34. package/src/skills/nest-best-practices/references/cli-overview.md +157 -0
  35. package/src/skills/nest-best-practices/references/core-controllers.md +165 -0
  36. package/src/skills/nest-best-practices/references/core-dependency-injection.md +179 -0
  37. package/src/skills/nest-best-practices/references/core-middleware.md +139 -0
  38. package/src/skills/nest-best-practices/references/core-modules.md +138 -0
  39. package/src/skills/nest-best-practices/references/core-providers.md +188 -0
  40. package/src/skills/nest-best-practices/references/faq-raw-body-hybrid.md +122 -0
  41. package/src/skills/nest-best-practices/references/fundamentals-circular-dependency.md +89 -0
  42. package/src/skills/nest-best-practices/references/fundamentals-custom-decorators.md +107 -0
  43. package/src/skills/nest-best-practices/references/fundamentals-dynamic-modules.md +125 -0
  44. package/src/skills/nest-best-practices/references/fundamentals-exception-filters.md +202 -0
  45. package/src/skills/nest-best-practices/references/fundamentals-execution-context.md +107 -0
  46. package/src/skills/nest-best-practices/references/fundamentals-guards.md +136 -0
  47. package/src/skills/nest-best-practices/references/fundamentals-interceptors.md +187 -0
  48. package/src/skills/nest-best-practices/references/fundamentals-lazy-loading.md +89 -0
  49. package/src/skills/nest-best-practices/references/fundamentals-lifecycle-events.md +87 -0
  50. package/src/skills/nest-best-practices/references/fundamentals-module-reference.md +107 -0
  51. package/src/skills/nest-best-practices/references/fundamentals-pipes.md +197 -0
  52. package/src/skills/nest-best-practices/references/fundamentals-provider-scopes.md +92 -0
  53. package/src/skills/nest-best-practices/references/fundamentals-testing.md +142 -0
  54. package/src/skills/nest-best-practices/references/graphql-overview.md +233 -0
  55. package/src/skills/nest-best-practices/references/graphql-resolvers-mutations.md +199 -0
  56. package/src/skills/nest-best-practices/references/graphql-scalars-unions-enums.md +180 -0
  57. package/src/skills/nest-best-practices/references/graphql-subscriptions.md +228 -0
  58. package/src/skills/nest-best-practices/references/microservices-grpc.md +175 -0
  59. package/src/skills/nest-best-practices/references/microservices-overview.md +221 -0
  60. package/src/skills/nest-best-practices/references/microservices-transports.md +119 -0
  61. package/src/skills/nest-best-practices/references/openapi-swagger.md +207 -0
  62. package/src/skills/nest-best-practices/references/recipes-authentication.md +97 -0
  63. package/src/skills/nest-best-practices/references/recipes-cqrs.md +176 -0
  64. package/src/skills/nest-best-practices/references/recipes-crud-generator.md +87 -0
  65. package/src/skills/nest-best-practices/references/recipes-documentation.md +93 -0
  66. package/src/skills/nest-best-practices/references/recipes-mongoose.md +153 -0
  67. package/src/skills/nest-best-practices/references/recipes-prisma.md +98 -0
  68. package/src/skills/nest-best-practices/references/recipes-terminus.md +148 -0
  69. package/src/skills/nest-best-practices/references/recipes-typeorm.md +122 -0
  70. package/src/skills/nest-best-practices/references/security-authorization.md +196 -0
  71. package/src/skills/nest-best-practices/references/security-cors-helmet-rate-limiting.md +204 -0
  72. package/src/skills/nest-best-practices/references/security-encryption-hashing.md +93 -0
  73. package/src/skills/nest-best-practices/references/techniques-caching.md +142 -0
  74. package/src/skills/nest-best-practices/references/techniques-compression-streaming-sse.md +194 -0
  75. package/src/skills/nest-best-practices/references/techniques-configuration.md +132 -0
  76. package/src/skills/nest-best-practices/references/techniques-database.md +153 -0
  77. package/src/skills/nest-best-practices/references/techniques-events.md +163 -0
  78. package/src/skills/nest-best-practices/references/techniques-fastify.md +137 -0
  79. package/src/skills/nest-best-practices/references/techniques-file-upload.md +140 -0
  80. package/src/skills/nest-best-practices/references/techniques-http-module.md +176 -0
  81. package/src/skills/nest-best-practices/references/techniques-logging.md +146 -0
  82. package/src/skills/nest-best-practices/references/techniques-mvc-serve-static.md +132 -0
  83. package/src/skills/nest-best-practices/references/techniques-queues.md +162 -0
  84. package/src/skills/nest-best-practices/references/techniques-serialization.md +158 -0
  85. package/src/skills/nest-best-practices/references/techniques-sessions-cookies.md +167 -0
  86. package/src/skills/nest-best-practices/references/techniques-task-scheduling.md +166 -0
  87. package/src/skills/nest-best-practices/references/techniques-validation.md +126 -0
  88. package/src/skills/nest-best-practices/references/techniques-versioning.md +153 -0
  89. package/src/skills/nest-best-practices/references/websockets-advanced.md +96 -0
  90. package/src/skills/nest-best-practices/references/websockets-gateways.md +215 -0
  91. package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
  92. package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
  93. package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
  94. package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
  95. package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
  96. package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
  97. package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
  98. package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
  99. package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
  100. package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
  101. package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
  102. package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
  103. package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
  104. package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
  105. package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
  106. package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
  107. package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
  108. package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
  109. package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
  110. package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
  111. package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
  112. package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
  113. package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
  114. package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
  115. package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
  116. package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
  117. package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
  118. package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
  119. package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
  120. package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
  121. package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
  122. package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
  123. package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
  124. package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
  125. package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
  126. package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
  127. package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
  128. package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
  129. package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
  130. package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
  131. package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
  132. package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
  133. package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
  134. package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
  135. package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
  136. package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
  137. package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
  138. package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
  139. package/src/skills/test-mobile-app/SKILL.md +11 -6
  140. package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
  141. package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
  142. package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
  143. package/src/skills/test-web-ui/SKILL.md +264 -84
  144. package/src/skills/test-web-ui/scripts/discover.py +25 -12
  145. package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
  146. package/src/skills/typescript-expert/SKILL.md +145 -0
  147. package/src/skills/typescript-expert/commands/typescript-fix.md +65 -0
  148. package/src/skills/typescript-expert/references/advanced-conditional-types.md +190 -0
  149. package/src/skills/typescript-expert/references/advanced-decorators.md +243 -0
  150. package/src/skills/typescript-expert/references/advanced-mapped-types.md +223 -0
  151. package/src/skills/typescript-expert/references/advanced-template-literals.md +209 -0
  152. package/src/skills/typescript-expert/references/advanced-type-guards.md +308 -0
  153. package/src/skills/typescript-expert/references/best-practices-patterns.md +313 -0
  154. package/src/skills/typescript-expert/references/best-practices-performance.md +185 -0
  155. package/src/skills/typescript-expert/references/best-practices-tsconfig.md +242 -0
  156. package/src/skills/typescript-expert/references/core-generics.md +246 -0
  157. package/src/skills/typescript-expert/references/core-interfaces-types.md +231 -0
  158. package/src/skills/typescript-expert/references/core-type-system.md +261 -0
  159. package/src/skills/typescript-expert/references/core-utility-types.md +235 -0
  160. package/src/skills/typescript-expert/references/features-ts5x.md +370 -0
  161. package/src/skills/vite-best-practices/SKILL.md +115 -0
  162. package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
  163. package/src/skills/vite-best-practices/references/core-config.md +231 -0
  164. package/src/skills/vite-best-practices/references/core-features.md +222 -0
  165. package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
  166. package/src/skills/vite-best-practices/references/environment-api.md +108 -0
  167. package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
  168. package/codex-cli-workspace/iteration-1/benchmark.json +0 -122
  169. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/eval_metadata.json +0 -13
  170. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/grading.json +0 -52
  171. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/outputs/response.md +0 -163
  172. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/timing.json +0 -5
  173. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/grading.json +0 -58
  174. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md +0 -151
  175. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/timing.json +0 -5
  176. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -13
  177. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -52
  178. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -86
  179. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  180. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -58
  181. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  182. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  183. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/eval_metadata.json +0 -13
  184. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/grading.json +0 -52
  185. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/outputs/response.md +0 -130
  186. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/timing.json +0 -5
  187. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/grading.json +0 -64
  188. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/outputs/response.md +0 -209
  189. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/timing.json +0 -5
  190. package/codex-cli-workspace/iteration-1/review.html +0 -1325
  191. package/gemini-cli-workspace/iteration-1/benchmark.json +0 -86
  192. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/eval_metadata.json +0 -37
  193. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/grading.json +0 -37
  194. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/outputs/response.md +0 -401
  195. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/timing.json +0 -5
  196. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/grading.json +0 -37
  197. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/outputs/response.md +0 -405
  198. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/timing.json +0 -5
  199. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -37
  200. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  201. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -212
  202. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  203. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  204. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -427
  205. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  206. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/eval_metadata.json +0 -32
  207. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  208. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -171
  209. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  210. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  211. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -199
  212. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  213. package/gemini-cli-workspace/iteration-1/review.html +0 -1325
  214. package/gemini-cli-workspace/iteration-2/benchmark.json +0 -173
  215. package/gemini-cli-workspace/iteration-2/benchmark.md +0 -28
  216. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/eval_metadata.json +0 -37
  217. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/grading.json +0 -37
  218. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/outputs/response.md +0 -195
  219. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/timing.json +0 -5
  220. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/grading.json +0 -37
  221. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/outputs/response.md +0 -377
  222. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/timing.json +0 -5
  223. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/eval_metadata.json +0 -37
  224. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  225. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -127
  226. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  227. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  228. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  229. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  230. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/eval_metadata.json +0 -32
  231. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  232. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -91
  233. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  234. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  235. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -112
  236. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  237. package/gemini-cli-workspace/iteration-2/eval-viewer.html +0 -1325
  238. package/screen-recording-workspace/evals.json +0 -41
  239. package/screen-recording-workspace/iteration-1/benchmark.json +0 -102
  240. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/eval_metadata.json +0 -31
  241. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/grading.json +0 -11
  242. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/outputs/demo.mp4 +0 -0
  243. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/timing.json +0 -5
  244. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/grading.json +0 -11
  245. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/outputs/demo.mp4 +0 -0
  246. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/timing.json +0 -5
  247. package/screen-recording-workspace/iteration-1/eval-1-region-audio/eval_metadata.json +0 -31
  248. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/grading.json +0 -11
  249. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/outputs/region_capture.mp4 +0 -0
  250. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/timing.json +0 -5
  251. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/grading.json +0 -11
  252. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/outputs/region_capture.mp4 +0 -0
  253. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/timing.json +0 -5
  254. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/eval_metadata.json +0 -31
  255. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/grading.json +0 -11
  256. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/outputs/fallback_recording.mp4 +0 -0
  257. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/timing.json +0 -5
  258. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/grading.json +0 -11
  259. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/fallback_recording.mp4 +0 -0
  260. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/record_screen.py +0 -67
  261. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/timing.json +0 -5
  262. package/screen-recording-workspace/iteration-1/review.html +0 -1325
  263. package/src/skills/codex-cli/evals/evals.json +0 -47
  264. package/src/skills/gemini-cli/evals/evals.json +0 -46
  265. package/src/skills/tm-search/evals/evals.json +0 -23
@@ -0,0 +1,231 @@
1
+ # Interfaces vs Type Aliases
2
+
3
+ ## Declaration Syntax
4
+
5
+ ```typescript
6
+ // Interface — declares a named object shape
7
+ interface User {
8
+ id: string;
9
+ name: string;
10
+ email: string;
11
+ }
12
+
13
+ // Type alias — names any type expression
14
+ type User = {
15
+ id: string;
16
+ name: string;
17
+ email: string;
18
+ };
19
+ ```
20
+
21
+ ## When to Use Which
22
+
23
+ **Use `interface` when:**
24
+ - Defining object shapes that might be extended
25
+ - Creating public API contracts (libraries, modules)
26
+ - You want declaration merging (adding fields across files)
27
+
28
+ **Use `type` when:**
29
+ - Creating unions, intersections, tuples, mapped types
30
+ - Aliasing primitives or complex type expressions
31
+ - You need computed properties or template literals
32
+
33
+ ```typescript
34
+ // Only type can do these
35
+ type ID = string | number; // Union
36
+ type Pair<T> = [T, T]; // Tuple
37
+ type Keys = keyof User; // Keyof
38
+ type Nullable<T> = T | null; // Generic alias
39
+ type EventName = `on${Capitalize<string>}`; // Template literal
40
+ ```
41
+
42
+ In practice, both work for object shapes. Pick one convention per project and be consistent.
43
+
44
+ ## Extending and Composing
45
+
46
+ ### Interface Extension
47
+
48
+ ```typescript
49
+ interface Animal {
50
+ name: string;
51
+ }
52
+
53
+ interface Dog extends Animal {
54
+ breed: string;
55
+ }
56
+
57
+ // Multiple extension
58
+ interface ServiceDog extends Dog, Trainable {
59
+ handler: string;
60
+ }
61
+
62
+ // Interfaces can extend type aliases
63
+ type HasId = { id: string };
64
+ interface User extends HasId {
65
+ name: string;
66
+ }
67
+ ```
68
+
69
+ ### Type Intersection
70
+
71
+ ```typescript
72
+ type Animal = { name: string };
73
+ type Dog = Animal & { breed: string };
74
+
75
+ // Intersections work with interfaces too
76
+ interface HasId { id: string }
77
+ type User = HasId & { name: string };
78
+ ```
79
+
80
+ ### Key Difference — Conflict Resolution
81
+
82
+ ```typescript
83
+ // Interface extension: conflicts are errors
84
+ interface A { x: number }
85
+ interface B extends A { x: string } // Error! Type 'string' is not assignable to 'number'
86
+
87
+ // Type intersection: conflicts create never
88
+ type A = { x: number };
89
+ type B = A & { x: string }; // x is never (number & string = never)
90
+ // No error at definition — but you can never create a valid B
91
+ ```
92
+
93
+ ## Declaration Merging
94
+
95
+ Interfaces with the same name in the same scope merge automatically. Type aliases cannot merge:
96
+
97
+ ```typescript
98
+ // Declaration merging — both declarations combine
99
+ interface Window {
100
+ myCustomProp: string;
101
+ }
102
+ // Now Window has myCustomProp in addition to all standard properties
103
+
104
+ // This is how library augmentation works:
105
+ declare module "express" {
106
+ interface Request {
107
+ user?: User; // Adds user to Express Request
108
+ }
109
+ }
110
+ ```
111
+
112
+ Type aliases produce an error if you declare the same name twice:
113
+
114
+ ```typescript
115
+ type Foo = { a: string };
116
+ type Foo = { b: number }; // Error! Duplicate identifier 'Foo'
117
+ ```
118
+
119
+ ## Implementing Interfaces
120
+
121
+ Classes can implement interfaces to ensure they satisfy a contract:
122
+
123
+ ```typescript
124
+ interface Serializable {
125
+ serialize(): string;
126
+ deserialize(data: string): void;
127
+ }
128
+
129
+ class Config implements Serializable {
130
+ serialize() { return JSON.stringify(this); }
131
+ deserialize(data: string) { Object.assign(this, JSON.parse(data)); }
132
+ }
133
+
134
+ // Classes can implement multiple interfaces
135
+ class User implements Serializable, Comparable<User> { ... }
136
+
137
+ // Classes can also implement type aliases (if they describe object shapes)
138
+ type Printable = { print(): void };
139
+ class Report implements Printable {
140
+ print() { console.log("Report"); }
141
+ }
142
+ ```
143
+
144
+ ## Callable and Constructable Types
145
+
146
+ ```typescript
147
+ // Callable interface
148
+ interface SearchFunc {
149
+ (query: string, limit: number): SearchResult[];
150
+ }
151
+
152
+ // Equivalent type
153
+ type SearchFunc = (query: string, limit: number) => SearchResult[];
154
+
155
+ // Hybrid — object with call signature
156
+ interface Counter {
157
+ (): number; // Callable
158
+ count: number; // Property
159
+ reset(): void; // Method
160
+ }
161
+
162
+ // Constructable
163
+ interface ClockConstructor {
164
+ new (hour: number, minute: number): Clock;
165
+ }
166
+ ```
167
+
168
+ ## Index Signatures
169
+
170
+ ```typescript
171
+ interface StringDictionary {
172
+ [key: string]: string;
173
+ name: string; // OK — string is assignable to string
174
+ // count: number; // Error — number not assignable to string
175
+ }
176
+
177
+ // Record is often cleaner than index signatures
178
+ type StringDict = Record<string, string>;
179
+
180
+ // Symbol index signatures (TS 4.4+)
181
+ interface SymbolMap {
182
+ [key: symbol]: unknown;
183
+ }
184
+ ```
185
+
186
+ ## Readonly and Optional
187
+
188
+ ```typescript
189
+ interface Config {
190
+ readonly host: string; // Cannot be reassigned after creation
191
+ readonly port: number;
192
+ debug?: boolean; // Optional
193
+ }
194
+
195
+ const config: Config = { host: "localhost", port: 3000 };
196
+ config.host = "0.0.0.0"; // Error! Cannot assign to 'host'
197
+
198
+ // Deeply readonly with utility type
199
+ type DeepReadonly<T> = {
200
+ readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K];
201
+ };
202
+ ```
203
+
204
+ ## Generic Interfaces and Types
205
+
206
+ ```typescript
207
+ // Generic interface
208
+ interface Repository<T> {
209
+ findById(id: string): Promise<T | null>;
210
+ findAll(): Promise<T[]>;
211
+ save(entity: T): Promise<T>;
212
+ delete(id: string): Promise<void>;
213
+ }
214
+
215
+ // Usage
216
+ class UserRepository implements Repository<User> { ... }
217
+
218
+ // Generic type with default
219
+ type Container<T = unknown> = {
220
+ value: T;
221
+ metadata: Record<string, string>;
222
+ };
223
+ ```
224
+
225
+ ## Best Practices
226
+
227
+ 1. **Don't use `I` prefix** — `IUser` is a C# convention, not TypeScript. Use `User`.
228
+ 2. **Prefer narrow types** — `string` is usually too broad. Use literals or branded types.
229
+ 3. **Avoid empty interfaces** — `interface Empty {}` matches almost everything due to structural typing.
230
+ 4. **Use `readonly` by default** — Make properties mutable only when mutation is required.
231
+ 5. **Single responsibility** — Keep interfaces focused. Compose with `extends` or `&`.
@@ -0,0 +1,261 @@
1
+ # Core Type System
2
+
3
+ ## Primitive Types
4
+
5
+ TypeScript has the same primitive types as JavaScript, plus a few extras:
6
+
7
+ ```typescript
8
+ // JavaScript primitives
9
+ let str: string = "hello";
10
+ let num: number = 42;
11
+ let big: bigint = 100n;
12
+ let bool: boolean = true;
13
+ let sym: symbol = Symbol("key");
14
+ let undef: undefined = undefined;
15
+ let nul: null = null;
16
+
17
+ // TypeScript additions
18
+ let any_val: any; // Opts out of type checking — avoid
19
+ let unknown_val: unknown; // Type-safe alternative to any
20
+ let never_val: never; // Represents values that never occur
21
+ let void_val: void; // Functions that don't return a value
22
+ ```
23
+
24
+ ### `never` — The Bottom Type
25
+
26
+ `never` is the type of values that never occur. It's the return type of functions that always throw or have infinite loops, and it's what you get when you exhaust all possibilities in a union:
27
+
28
+ ```typescript
29
+ function fail(message: string): never {
30
+ throw new Error(message);
31
+ }
32
+
33
+ // Exhaustiveness checking — never catches missing cases
34
+ type Shape = "circle" | "square" | "triangle";
35
+ function area(shape: Shape): number {
36
+ switch (shape) {
37
+ case "circle": return Math.PI;
38
+ case "square": return 1;
39
+ case "triangle": return 0.5;
40
+ default:
41
+ // If we add a new shape to the union and forget to handle it,
42
+ // this line will show a compile error
43
+ const _exhaustive: never = shape;
44
+ return _exhaustive;
45
+ }
46
+ }
47
+ ```
48
+
49
+ ### `void` vs `undefined`
50
+
51
+ `void` means a function doesn't return a meaningful value. `undefined` is a specific value:
52
+
53
+ ```typescript
54
+ // void — callback return value is ignored
55
+ type Callback = () => void;
56
+ const cb: Callback = () => 42; // OK! void means "return value ignored"
57
+
58
+ // undefined — must literally return undefined
59
+ type UndefinedFn = () => undefined;
60
+ const fn: UndefinedFn = () => 42; // Error!
61
+ ```
62
+
63
+ ## Type Annotations vs Inference
64
+
65
+ TypeScript infers types from initialization, return statements, and context:
66
+
67
+ ```typescript
68
+ // Inference works for:
69
+ const x = 10; // number
70
+ const arr = [1, 2, 3]; // number[]
71
+ const obj = { a: 1, b: "hi" }; // { a: number; b: string }
72
+
73
+ // Contextual typing — parameter types inferred from context
74
+ const names = ["Alice", "Bob"];
75
+ names.forEach(name => {
76
+ console.log(name.toUpperCase()); // name inferred as string
77
+ });
78
+
79
+ // Annotate when inference isn't enough:
80
+ // 1. Function parameters (always annotate)
81
+ function greet(name: string) { ... }
82
+
83
+ // 2. Empty collections
84
+ const items: string[] = [];
85
+
86
+ // 3. Public API return types (documentation + refactoring safety)
87
+ export function parse(input: string): AST { ... }
88
+ ```
89
+
90
+ ## Type Narrowing
91
+
92
+ TypeScript narrows types based on control flow analysis:
93
+
94
+ ```typescript
95
+ function process(value: string | number) {
96
+ // typeof guard
97
+ if (typeof value === "string") {
98
+ value.toUpperCase(); // value is string here
99
+ } else {
100
+ value.toFixed(2); // value is number here
101
+ }
102
+ }
103
+
104
+ // Truthiness narrowing
105
+ function printName(name: string | null) {
106
+ if (name) {
107
+ console.log(name.toUpperCase()); // name is string (null removed)
108
+ }
109
+ }
110
+
111
+ // instanceof narrowing
112
+ function logDate(date: Date | string) {
113
+ if (date instanceof Date) {
114
+ date.getFullYear(); // Date
115
+ } else {
116
+ Date.parse(date); // string
117
+ }
118
+ }
119
+
120
+ // in narrowing
121
+ interface Fish { swim(): void }
122
+ interface Bird { fly(): void }
123
+ function move(animal: Fish | Bird) {
124
+ if ("swim" in animal) {
125
+ animal.swim(); // Fish
126
+ } else {
127
+ animal.fly(); // Bird
128
+ }
129
+ }
130
+
131
+ // Equality narrowing
132
+ function compare(a: string | number, b: string | boolean) {
133
+ if (a === b) {
134
+ // Both must be string (only common type)
135
+ a.toUpperCase();
136
+ b.toUpperCase();
137
+ }
138
+ }
139
+ ```
140
+
141
+ ## Literal Types
142
+
143
+ TypeScript can narrow types to exact values:
144
+
145
+ ```typescript
146
+ // String literal types
147
+ type Direction = "north" | "south" | "east" | "west";
148
+
149
+ // Numeric literal types
150
+ type DiceRoll = 1 | 2 | 3 | 4 | 5 | 6;
151
+
152
+ // Boolean literal types
153
+ type True = true;
154
+
155
+ // const assertions freeze literals
156
+ const config = {
157
+ endpoint: "/api",
158
+ retries: 3,
159
+ } as const;
160
+ // Type: { readonly endpoint: "/api"; readonly retries: 3 }
161
+
162
+ // let vs const inference
163
+ let x = "hello"; // type: string
164
+ const y = "hello"; // type: "hello" (literal)
165
+ ```
166
+
167
+ ## Tuple Types
168
+
169
+ Fixed-length arrays with known types at each position:
170
+
171
+ ```typescript
172
+ // Basic tuple
173
+ type Point = [number, number];
174
+ const p: Point = [10, 20];
175
+
176
+ // Named tuple elements (documentation only, no runtime effect)
177
+ type Range = [start: number, end: number];
178
+
179
+ // Optional elements
180
+ type FlexPoint = [number, number, number?];
181
+ const p2: FlexPoint = [1, 2]; // OK
182
+ const p3: FlexPoint = [1, 2, 3]; // OK
183
+
184
+ // Rest elements
185
+ type StringsThenNumber = [...string[], number];
186
+ const val: StringsThenNumber = ["a", "b", 42]; // OK
187
+
188
+ // Readonly tuples
189
+ type ReadonlyPair = readonly [string, number];
190
+ ```
191
+
192
+ ## Arrays
193
+
194
+ ```typescript
195
+ // Two equivalent syntaxes
196
+ let nums: number[] = [1, 2, 3];
197
+ let strs: Array<string> = ["a", "b"];
198
+
199
+ // Readonly arrays — prevent mutation
200
+ let frozen: readonly number[] = [1, 2, 3];
201
+ frozen.push(4); // Error! Property 'push' does not exist on readonly number[]
202
+
203
+ // ReadonlyArray<T> is equivalent
204
+ let frozen2: ReadonlyArray<number> = [1, 2, 3];
205
+ ```
206
+
207
+ ## Object Types
208
+
209
+ ```typescript
210
+ // Inline object type
211
+ function printCoord(pt: { x: number; y: number }) {
212
+ console.log(pt.x, pt.y);
213
+ }
214
+
215
+ // Optional properties
216
+ function printName(obj: { first: string; last?: string }) {
217
+ console.log(obj.first);
218
+ console.log(obj.last?.toUpperCase()); // Optional chaining
219
+ }
220
+
221
+ // Index signatures
222
+ interface StringMap {
223
+ [key: string]: string;
224
+ }
225
+
226
+ // Intersection types — combine shapes
227
+ type Named = { name: string };
228
+ type Aged = { age: number };
229
+ type Person = Named & Aged; // { name: string; age: number }
230
+ ```
231
+
232
+ ## Union Types
233
+
234
+ ```typescript
235
+ // Union of primitives
236
+ type StringOrNumber = string | number;
237
+
238
+ // Union of object types
239
+ type Result<T> = { ok: true; value: T } | { ok: false; error: Error };
240
+
241
+ // Narrowing unions
242
+ function handle(result: Result<string>) {
243
+ if (result.ok) {
244
+ console.log(result.value); // string
245
+ } else {
246
+ console.log(result.error.message); // Error
247
+ }
248
+ }
249
+ ```
250
+
251
+ ## Special Types Reference
252
+
253
+ | Type | Meaning | Use for |
254
+ |------|---------|---------|
255
+ | `any` | Disables checking | Migration from JS (temporarily) |
256
+ | `unknown` | Must narrow before use | Safe alternative to `any` |
257
+ | `never` | No possible value | Exhaustiveness, impossible branches |
258
+ | `void` | No meaningful return | Callbacks whose return is ignored |
259
+ | `object` | Any non-primitive | Constraining to objects |
260
+ | `{}` | Any non-nullish value | Almost never — too permissive |
261
+ | `Object` | Like `{}` | Never use this |