@heytherevibin/skillforge 0.2.1

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 (402) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CODE_OF_CONDUCT.md +34 -0
  3. package/CONTRIBUTING.md +38 -0
  4. package/LICENSE +21 -0
  5. package/README.md +337 -0
  6. package/RELEASING.md +93 -0
  7. package/SECURITY.md +31 -0
  8. package/STRATEGY.md +26 -0
  9. package/bin/cli.js +547 -0
  10. package/lib/packs.js +184 -0
  11. package/package.json +38 -0
  12. package/python/app/__init__.py +0 -0
  13. package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
  14. package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
  15. package/python/app/__pycache__/main.cpython-312.pyc +0 -0
  16. package/python/app/auth.py +63 -0
  17. package/python/app/cli.py +78 -0
  18. package/python/app/db_paths.py +26 -0
  19. package/python/app/events_cli.py +175 -0
  20. package/python/app/main.py +647 -0
  21. package/python/app/materialize.py +138 -0
  22. package/python/app/mcp_server.py +610 -0
  23. package/python/app/route_cli.py +117 -0
  24. package/python/requirements-dev.txt +1 -0
  25. package/python/requirements.txt +7 -0
  26. package/python/tests/test_db_paths.py +41 -0
  27. package/skills/accessibility/SKILL.md +145 -0
  28. package/skills/agent-architecture-audit/SKILL.md +256 -0
  29. package/skills/agent-eval/SKILL.md +144 -0
  30. package/skills/agent-harness-construction/SKILL.md +72 -0
  31. package/skills/agent-introspection-debugging/SKILL.md +152 -0
  32. package/skills/agent-payment-x402/SKILL.md +224 -0
  33. package/skills/agent-sort/SKILL.md +214 -0
  34. package/skills/agentic-engineering/SKILL.md +62 -0
  35. package/skills/agentic-os/SKILL.md +386 -0
  36. package/skills/ai-first-engineering/SKILL.md +50 -0
  37. package/skills/ai-regression-testing/SKILL.md +384 -0
  38. package/skills/android-clean-architecture/SKILL.md +338 -0
  39. package/skills/angular-developer/SKILL.md +153 -0
  40. package/skills/angular-developer/references/angular-animations.md +160 -0
  41. package/skills/angular-developer/references/angular-aria.md +410 -0
  42. package/skills/angular-developer/references/cli.md +86 -0
  43. package/skills/angular-developer/references/component-harnesses.md +59 -0
  44. package/skills/angular-developer/references/component-styling.md +91 -0
  45. package/skills/angular-developer/references/components.md +117 -0
  46. package/skills/angular-developer/references/creating-services.md +97 -0
  47. package/skills/angular-developer/references/data-resolvers.md +69 -0
  48. package/skills/angular-developer/references/define-routes.md +67 -0
  49. package/skills/angular-developer/references/defining-providers.md +72 -0
  50. package/skills/angular-developer/references/di-fundamentals.md +120 -0
  51. package/skills/angular-developer/references/e2e-testing.md +56 -0
  52. package/skills/angular-developer/references/effects.md +83 -0
  53. package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  54. package/skills/angular-developer/references/host-elements.md +80 -0
  55. package/skills/angular-developer/references/injection-context.md +63 -0
  56. package/skills/angular-developer/references/inputs.md +101 -0
  57. package/skills/angular-developer/references/linked-signal.md +59 -0
  58. package/skills/angular-developer/references/loading-strategies.md +61 -0
  59. package/skills/angular-developer/references/mcp.md +108 -0
  60. package/skills/angular-developer/references/navigate-to-routes.md +69 -0
  61. package/skills/angular-developer/references/outputs.md +86 -0
  62. package/skills/angular-developer/references/reactive-forms.md +122 -0
  63. package/skills/angular-developer/references/rendering-strategies.md +44 -0
  64. package/skills/angular-developer/references/resource.md +77 -0
  65. package/skills/angular-developer/references/route-animations.md +56 -0
  66. package/skills/angular-developer/references/route-guards.md +52 -0
  67. package/skills/angular-developer/references/router-lifecycle.md +45 -0
  68. package/skills/angular-developer/references/router-testing.md +87 -0
  69. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  70. package/skills/angular-developer/references/signal-forms.md +795 -0
  71. package/skills/angular-developer/references/signals-overview.md +94 -0
  72. package/skills/angular-developer/references/tailwind-css.md +69 -0
  73. package/skills/angular-developer/references/template-driven-forms.md +114 -0
  74. package/skills/angular-developer/references/testing-fundamentals.md +65 -0
  75. package/skills/api-connector-builder/SKILL.md +120 -0
  76. package/skills/api-design/SKILL.md +522 -0
  77. package/skills/architecture-decision-records/SKILL.md +178 -0
  78. package/skills/article-writing/SKILL.md +78 -0
  79. package/skills/automation-audit-ops/SKILL.md +141 -0
  80. package/skills/autonomous-agent-harness/SKILL.md +272 -0
  81. package/skills/autonomous-loops/SKILL.md +609 -0
  82. package/skills/backend-patterns/SKILL.md +560 -0
  83. package/skills/benchmark/SKILL.md +92 -0
  84. package/skills/blueprint/SKILL.md +104 -0
  85. package/skills/browser-qa/SKILL.md +86 -0
  86. package/skills/bun-runtime/SKILL.md +83 -0
  87. package/skills/canary-watch/SKILL.md +98 -0
  88. package/skills/carrier-relationship-management/SKILL.md +211 -0
  89. package/skills/cisco-ios-patterns/SKILL.md +163 -0
  90. package/skills/ck/SKILL.md +147 -0
  91. package/skills/ck/commands/forget.mjs +44 -0
  92. package/skills/ck/commands/info.mjs +24 -0
  93. package/skills/ck/commands/init.mjs +143 -0
  94. package/skills/ck/commands/list.mjs +40 -0
  95. package/skills/ck/commands/migrate.mjs +202 -0
  96. package/skills/ck/commands/resume.mjs +36 -0
  97. package/skills/ck/commands/save.mjs +210 -0
  98. package/skills/ck/commands/shared.mjs +387 -0
  99. package/skills/ck/hooks/session-start.mjs +224 -0
  100. package/skills/claude-devfleet/SKILL.md +103 -0
  101. package/skills/click-path-audit/SKILL.md +244 -0
  102. package/skills/clickhouse-io/SKILL.md +438 -0
  103. package/skills/code-tour/SKILL.md +235 -0
  104. package/skills/codebase-onboarding/SKILL.md +232 -0
  105. package/skills/coding-standards/SKILL.md +548 -0
  106. package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  107. package/skills/connections-optimizer/SKILL.md +188 -0
  108. package/skills/content-engine/SKILL.md +126 -0
  109. package/skills/content-hash-cache-pattern/SKILL.md +160 -0
  110. package/skills/context-budget/SKILL.md +134 -0
  111. package/skills/continuous-agent-loop/SKILL.md +44 -0
  112. package/skills/continuous-learning/SKILL.md +129 -0
  113. package/skills/continuous-learning/config.json +18 -0
  114. package/skills/continuous-learning/evaluate-session.sh +69 -0
  115. package/skills/continuous-learning-v2/SKILL.md +358 -0
  116. package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
  117. package/skills/continuous-learning-v2/agents/observer.md +198 -0
  118. package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  119. package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  120. package/skills/continuous-learning-v2/config.json +8 -0
  121. package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
  122. package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
  123. package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
  124. package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  125. package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  126. package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
  127. package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  128. package/skills/cost-tracking/SKILL.md +147 -0
  129. package/skills/council/SKILL.md +202 -0
  130. package/skills/cpp-coding-standards/SKILL.md +722 -0
  131. package/skills/cpp-testing/SKILL.md +323 -0
  132. package/skills/crosspost/SKILL.md +110 -0
  133. package/skills/csharp-testing/SKILL.md +320 -0
  134. package/skills/customer-billing-ops/SKILL.md +139 -0
  135. package/skills/customs-trade-compliance/SKILL.md +262 -0
  136. package/skills/dart-flutter-patterns/SKILL.md +562 -0
  137. package/skills/dashboard-builder/SKILL.md +108 -0
  138. package/skills/data-scraper-agent/SKILL.md +764 -0
  139. package/skills/database-migrations/SKILL.md +428 -0
  140. package/skills/deep-research/SKILL.md +158 -0
  141. package/skills/defi-amm-security/SKILL.md +166 -0
  142. package/skills/deployment-patterns/SKILL.md +426 -0
  143. package/skills/design-system/SKILL.md +81 -0
  144. package/skills/django-celery/SKILL.md +456 -0
  145. package/skills/django-patterns/SKILL.md +733 -0
  146. package/skills/django-security/SKILL.md +592 -0
  147. package/skills/django-tdd/SKILL.md +728 -0
  148. package/skills/django-verification/SKILL.md +468 -0
  149. package/skills/dmux-workflows/SKILL.md +190 -0
  150. package/skills/docker-patterns/SKILL.md +363 -0
  151. package/skills/documentation-lookup/SKILL.md +89 -0
  152. package/skills/dotnet-patterns/SKILL.md +320 -0
  153. package/skills/e2e-testing/SKILL.md +325 -0
  154. package/skills/email-ops/SKILL.md +120 -0
  155. package/skills/energy-procurement/SKILL.md +227 -0
  156. package/skills/enterprise-agent-ops/SKILL.md +49 -0
  157. package/skills/error-handling/SKILL.md +375 -0
  158. package/skills/eval-harness/SKILL.md +269 -0
  159. package/skills/evm-token-decimals/SKILL.md +130 -0
  160. package/skills/exa-search/SKILL.md +106 -0
  161. package/skills/fal-ai-media/SKILL.md +287 -0
  162. package/skills/fastapi-patterns/SKILL.md +327 -0
  163. package/skills/finance-billing-ops/SKILL.md +126 -0
  164. package/skills/flox-environments/SKILL.md +496 -0
  165. package/skills/flutter-dart-code-review/SKILL.md +434 -0
  166. package/skills/foundation-models-on-device/SKILL.md +243 -0
  167. package/skills/frontend-design-direction/SKILL.md +92 -0
  168. package/skills/frontend-patterns/SKILL.md +641 -0
  169. package/skills/frontend-slides/SKILL.md +183 -0
  170. package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  171. package/skills/frontend-slides/animation-patterns.md +122 -0
  172. package/skills/frontend-slides/html-template.md +419 -0
  173. package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  174. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  175. package/skills/frontend-slides/viewport-base.css +153 -0
  176. package/skills/fsharp-testing/SKILL.md +279 -0
  177. package/skills/gan-style-harness/SKILL.md +278 -0
  178. package/skills/gateguard/SKILL.md +125 -0
  179. package/skills/git-workflow/SKILL.md +714 -0
  180. package/skills/github-ops/SKILL.md +143 -0
  181. package/skills/golang-patterns/SKILL.md +673 -0
  182. package/skills/golang-testing/SKILL.md +719 -0
  183. package/skills/google-workspace-ops/SKILL.md +94 -0
  184. package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  185. package/skills/healthcare-emr-patterns/SKILL.md +159 -0
  186. package/skills/healthcare-eval-harness/SKILL.md +207 -0
  187. package/skills/healthcare-phi-compliance/SKILL.md +145 -0
  188. package/skills/hermes-imports/SKILL.md +87 -0
  189. package/skills/hexagonal-architecture/SKILL.md +275 -0
  190. package/skills/hipaa-compliance/SKILL.md +78 -0
  191. package/skills/homelab-network-readiness/SKILL.md +169 -0
  192. package/skills/homelab-network-setup/SKILL.md +129 -0
  193. package/skills/homelab-pihole-dns/SKILL.md +274 -0
  194. package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  195. package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  196. package/skills/hookify-rules/SKILL.md +128 -0
  197. package/skills/inventory-demand-planning/SKILL.md +246 -0
  198. package/skills/investor-materials/SKILL.md +95 -0
  199. package/skills/investor-outreach/SKILL.md +90 -0
  200. package/skills/ios-icon-gen/SKILL.md +157 -0
  201. package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  202. package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  203. package/skills/iterative-retrieval/SKILL.md +209 -0
  204. package/skills/java-coding-standards/SKILL.md +382 -0
  205. package/skills/jira-integration/SKILL.md +292 -0
  206. package/skills/jpa-patterns/SKILL.md +150 -0
  207. package/skills/knowledge-ops/SKILL.md +153 -0
  208. package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  209. package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  210. package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  211. package/skills/kotlin-patterns/SKILL.md +710 -0
  212. package/skills/kotlin-testing/SKILL.md +823 -0
  213. package/skills/laravel-patterns/SKILL.md +414 -0
  214. package/skills/laravel-plugin-discovery/SKILL.md +228 -0
  215. package/skills/laravel-security/SKILL.md +284 -0
  216. package/skills/laravel-tdd/SKILL.md +282 -0
  217. package/skills/laravel-verification/SKILL.md +178 -0
  218. package/skills/lead-intelligence/SKILL.md +320 -0
  219. package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  220. package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  221. package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  222. package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  223. package/skills/liquid-glass-design/SKILL.md +279 -0
  224. package/skills/llm-trading-agent-security/SKILL.md +146 -0
  225. package/skills/logistics-exception-management/SKILL.md +221 -0
  226. package/skills/make-interfaces-feel-better/SKILL.md +151 -0
  227. package/skills/manim-video/SKILL.md +88 -0
  228. package/skills/manim-video/assets/network_graph_scene.py +52 -0
  229. package/skills/market-research/SKILL.md +74 -0
  230. package/skills/mcp-server-patterns/SKILL.md +68 -0
  231. package/skills/messages-ops/SKILL.md +103 -0
  232. package/skills/mle-workflow/SKILL.md +345 -0
  233. package/skills/motion-advanced/SKILL.md +596 -0
  234. package/skills/motion-foundations/SKILL.md +299 -0
  235. package/skills/motion-patterns/SKILL.md +435 -0
  236. package/skills/motion-ui/SKILL.md +574 -0
  237. package/skills/mysql-patterns/SKILL.md +411 -0
  238. package/skills/nanoclaw-repl/SKILL.md +32 -0
  239. package/skills/nestjs-patterns/SKILL.md +229 -0
  240. package/skills/netmiko-ssh-automation/SKILL.md +173 -0
  241. package/skills/network-bgp-diagnostics/SKILL.md +167 -0
  242. package/skills/network-config-validation/SKILL.md +210 -0
  243. package/skills/network-interface-health/SKILL.md +152 -0
  244. package/skills/nextjs-turbopack/SKILL.md +43 -0
  245. package/skills/nodejs-keccak256/SKILL.md +102 -0
  246. package/skills/nutrient-document-processing/SKILL.md +166 -0
  247. package/skills/nuxt4-patterns/SKILL.md +99 -0
  248. package/skills/openclaw-persona-forge/SKILL.md +288 -0
  249. package/skills/openclaw-persona-forge/gacha.py +224 -0
  250. package/skills/openclaw-persona-forge/gacha.sh +5 -0
  251. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  252. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  253. package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  254. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  255. package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  256. package/skills/openclaw-persona-forge/references/output-template.md +166 -0
  257. package/skills/opensource-pipeline/SKILL.md +254 -0
  258. package/skills/perl-patterns/SKILL.md +503 -0
  259. package/skills/perl-security/SKILL.md +502 -0
  260. package/skills/perl-testing/SKILL.md +474 -0
  261. package/skills/plan-orchestrate/SKILL.md +253 -0
  262. package/skills/plankton-code-quality/SKILL.md +236 -0
  263. package/skills/postgres-patterns/SKILL.md +146 -0
  264. package/skills/product-capability/SKILL.md +140 -0
  265. package/skills/product-lens/SKILL.md +91 -0
  266. package/skills/production-audit/SKILL.md +206 -0
  267. package/skills/production-scheduling/SKILL.md +237 -0
  268. package/skills/project-flow-ops/SKILL.md +110 -0
  269. package/skills/prompt-optimizer/SKILL.md +398 -0
  270. package/skills/python-patterns/SKILL.md +749 -0
  271. package/skills/python-testing/SKILL.md +815 -0
  272. package/skills/pytorch-patterns/SKILL.md +395 -0
  273. package/skills/quality-nonconformance/SKILL.md +259 -0
  274. package/skills/quarkus-patterns/SKILL.md +721 -0
  275. package/skills/quarkus-security/SKILL.md +466 -0
  276. package/skills/quarkus-tdd/SKILL.md +810 -0
  277. package/skills/quarkus-verification/SKILL.md +478 -0
  278. package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  279. package/skills/redis-patterns/SKILL.md +402 -0
  280. package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  281. package/skills/remotion-video-creation/SKILL.md +43 -0
  282. package/skills/remotion-video-creation/rules/3d.md +86 -0
  283. package/skills/remotion-video-creation/rules/animations.md +29 -0
  284. package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  285. package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  286. package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  287. package/skills/remotion-video-creation/rules/assets.md +78 -0
  288. package/skills/remotion-video-creation/rules/audio.md +172 -0
  289. package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  290. package/skills/remotion-video-creation/rules/can-decode.md +75 -0
  291. package/skills/remotion-video-creation/rules/charts.md +58 -0
  292. package/skills/remotion-video-creation/rules/compositions.md +146 -0
  293. package/skills/remotion-video-creation/rules/display-captions.md +126 -0
  294. package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  295. package/skills/remotion-video-creation/rules/fonts.md +152 -0
  296. package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  297. package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  298. package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  299. package/skills/remotion-video-creation/rules/gifs.md +138 -0
  300. package/skills/remotion-video-creation/rules/images.md +130 -0
  301. package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  302. package/skills/remotion-video-creation/rules/lottie.md +67 -0
  303. package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  304. package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  305. package/skills/remotion-video-creation/rules/sequencing.md +106 -0
  306. package/skills/remotion-video-creation/rules/tailwind.md +11 -0
  307. package/skills/remotion-video-creation/rules/text-animations.md +20 -0
  308. package/skills/remotion-video-creation/rules/timing.md +179 -0
  309. package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  310. package/skills/remotion-video-creation/rules/transitions.md +122 -0
  311. package/skills/remotion-video-creation/rules/trimming.md +52 -0
  312. package/skills/remotion-video-creation/rules/videos.md +171 -0
  313. package/skills/repo-scan/SKILL.md +78 -0
  314. package/skills/research-ops/SKILL.md +111 -0
  315. package/skills/returns-reverse-logistics/SKILL.md +239 -0
  316. package/skills/rules-distill/SKILL.md +263 -0
  317. package/skills/rules-distill/scripts/scan-rules.sh +58 -0
  318. package/skills/rules-distill/scripts/scan-skills.sh +129 -0
  319. package/skills/rust-patterns/SKILL.md +498 -0
  320. package/skills/rust-testing/SKILL.md +499 -0
  321. package/skills/safety-guard/SKILL.md +74 -0
  322. package/skills/santa-method/SKILL.md +306 -0
  323. package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  324. package/skills/scientific-db-uspto-database/SKILL.md +177 -0
  325. package/skills/scientific-pkg-gget/SKILL.md +166 -0
  326. package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  327. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  328. package/skills/search-first/SKILL.md +181 -0
  329. package/skills/security-bounty-hunter/SKILL.md +99 -0
  330. package/skills/security-review/SKILL.md +502 -0
  331. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  332. package/skills/seo/SKILL.md +153 -0
  333. package/skills/skill-comply/SKILL.md +57 -0
  334. package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  335. package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  336. package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  337. package/skills/skill-comply/prompts/classifier.md +24 -0
  338. package/skills/skill-comply/prompts/scenario_generator.md +62 -0
  339. package/skills/skill-comply/prompts/spec_generator.md +42 -0
  340. package/skills/skill-comply/pyproject.toml +15 -0
  341. package/skills/skill-comply/scripts/__init__.py +0 -0
  342. package/skills/skill-comply/scripts/classifier.py +85 -0
  343. package/skills/skill-comply/scripts/grader.py +124 -0
  344. package/skills/skill-comply/scripts/parser.py +107 -0
  345. package/skills/skill-comply/scripts/report.py +170 -0
  346. package/skills/skill-comply/scripts/run.py +127 -0
  347. package/skills/skill-comply/scripts/runner.py +186 -0
  348. package/skills/skill-comply/scripts/scenario_generator.py +70 -0
  349. package/skills/skill-comply/scripts/spec_generator.py +72 -0
  350. package/skills/skill-comply/scripts/utils.py +13 -0
  351. package/skills/skill-comply/tests/test_grader.py +197 -0
  352. package/skills/skill-comply/tests/test_parser.py +90 -0
  353. package/skills/skill-comply/tests/test_runner.py +172 -0
  354. package/skills/skill-scout/SKILL.md +139 -0
  355. package/skills/skill-stocktake/SKILL.md +193 -0
  356. package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  357. package/skills/skill-stocktake/scripts/save-results.sh +56 -0
  358. package/skills/skill-stocktake/scripts/scan.sh +170 -0
  359. package/skills/social-graph-ranker/SKILL.md +153 -0
  360. package/skills/springboot-patterns/SKILL.md +313 -0
  361. package/skills/springboot-security/SKILL.md +271 -0
  362. package/skills/springboot-tdd/SKILL.md +157 -0
  363. package/skills/springboot-verification/SKILL.md +230 -0
  364. package/skills/strategic-compact/SKILL.md +129 -0
  365. package/skills/strategic-compact/suggest-compact.sh +54 -0
  366. package/skills/swift-actor-persistence/SKILL.md +142 -0
  367. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  368. package/skills/swift-protocol-di-testing/SKILL.md +189 -0
  369. package/skills/swiftui-patterns/SKILL.md +259 -0
  370. package/skills/tdd-workflow/SKILL.md +462 -0
  371. package/skills/team-builder/SKILL.md +166 -0
  372. package/skills/terminal-ops/SKILL.md +108 -0
  373. package/skills/tinystruct-patterns/SKILL.md +130 -0
  374. package/skills/tinystruct-patterns/references/architecture.md +77 -0
  375. package/skills/tinystruct-patterns/references/data-handling.md +35 -0
  376. package/skills/tinystruct-patterns/references/routing.md +57 -0
  377. package/skills/tinystruct-patterns/references/system-usage.md +74 -0
  378. package/skills/tinystruct-patterns/references/testing.md +59 -0
  379. package/skills/token-budget-advisor/SKILL.md +133 -0
  380. package/skills/ui-demo/SKILL.md +464 -0
  381. package/skills/ui-to-vue/SKILL.md +134 -0
  382. package/skills/unified-notifications-ops/SKILL.md +186 -0
  383. package/skills/verification-loop/SKILL.md +125 -0
  384. package/skills/video-editing/SKILL.md +309 -0
  385. package/skills/videodb/SKILL.md +373 -0
  386. package/skills/videodb/reference/api-reference.md +550 -0
  387. package/skills/videodb/reference/capture-reference.md +407 -0
  388. package/skills/videodb/reference/capture.md +101 -0
  389. package/skills/videodb/reference/editor.md +443 -0
  390. package/skills/videodb/reference/generative.md +331 -0
  391. package/skills/videodb/reference/rtstream-reference.md +564 -0
  392. package/skills/videodb/reference/rtstream.md +65 -0
  393. package/skills/videodb/reference/search.md +230 -0
  394. package/skills/videodb/reference/streaming.md +406 -0
  395. package/skills/videodb/reference/use-cases.md +118 -0
  396. package/skills/videodb/scripts/ws_listener.py +282 -0
  397. package/skills/visa-doc-translate/README.md +86 -0
  398. package/skills/visa-doc-translate/SKILL.md +117 -0
  399. package/skills/vite-patterns/SKILL.md +448 -0
  400. package/skills/windows-desktop-e2e/SKILL.md +787 -0
  401. package/skills/workspace-surface-audit/SKILL.md +124 -0
  402. package/skills/x-api/SKILL.md +233 -0
@@ -0,0 +1,382 @@
1
+ ---
2
+ name: java-coding-standards
3
+ description: "Java coding standards for Spring Boot and Quarkus services: naming, immutability, Optional usage, streams, exceptions, generics, CDI, reactive patterns, and project layout. Automatically applies framework-specific conventions."
4
+ ---
5
+
6
+ # Java Coding Standards
7
+
8
+ Standards for readable, maintainable Java (17+) code in Spring Boot and Quarkus services.
9
+
10
+ ## When to Use
11
+
12
+ - Writing or reviewing Java code in Spring Boot or Quarkus projects
13
+ - Enforcing naming, immutability, or exception handling conventions
14
+ - Working with records, sealed classes, or pattern matching (Java 17+)
15
+ - Reviewing use of Optional, streams, or generics
16
+ - Structuring packages and project layout
17
+ - **[QUARKUS]**: Working with CDI scopes, Panache entities, or reactive pipelines
18
+
19
+ ## How It Works
20
+
21
+ ### Framework Detection
22
+
23
+ Before applying standards, determine the framework from the build file:
24
+
25
+ - Build file contains `quarkus` → apply **[QUARKUS]** conventions
26
+ - Build file contains `spring-boot` → apply **[SPRING]** conventions
27
+ - Neither detected → apply shared conventions only
28
+
29
+ ## Core Principles
30
+
31
+ - Prefer clarity over cleverness
32
+ - Immutable by default; minimize shared mutable state
33
+ - Fail fast with meaningful exceptions
34
+ - Consistent naming and package structure
35
+ - **[QUARKUS]**: Favor build-time over runtime processing; avoid runtime reflection where possible
36
+
37
+ ## Examples
38
+
39
+ The sections below show concrete Spring Boot, Quarkus, and shared Java examples
40
+ for naming, immutability, dependency injection, reactive code, exceptions,
41
+ project layout, logging, configuration, and tests.
42
+
43
+ ## Naming
44
+
45
+ ```java
46
+ // PASS: Classes/Records: PascalCase
47
+ public class MarketService {}
48
+ public record Money(BigDecimal amount, Currency currency) {}
49
+
50
+ // PASS: Methods/fields: camelCase
51
+ private final MarketRepository marketRepository;
52
+ public Market findBySlug(String slug) {}
53
+
54
+ // PASS: Constants: UPPER_SNAKE_CASE
55
+ private static final int MAX_PAGE_SIZE = 100;
56
+
57
+ // PASS: [QUARKUS] JAX-RS resources named as *Resource, not *Controller
58
+ public class MarketResource {}
59
+
60
+ // PASS: [SPRING] REST controllers named as *Controller
61
+ public class MarketController {}
62
+ ```
63
+
64
+ ## Immutability
65
+
66
+ ```java
67
+ // PASS: Favor records and final fields
68
+ public record MarketDto(Long id, String name, MarketStatus status) {}
69
+
70
+ public class Market {
71
+ private final Long id;
72
+ private final String name;
73
+ // getters only, no setters
74
+ }
75
+
76
+ // PASS: [QUARKUS] Panache active-record entities use public fields (Quarkus convention)
77
+ @Entity
78
+ public class Market extends PanacheEntity {
79
+ public String name;
80
+ public MarketStatus status;
81
+ // Panache generates accessors at build time; public fields are idiomatic here
82
+ }
83
+
84
+ // PASS: [QUARKUS] Panache MongoDB entities
85
+ @MongoEntity(collection = "markets")
86
+ public class Market extends PanacheMongoEntity {
87
+ public String name;
88
+ public MarketStatus status;
89
+ }
90
+ ```
91
+
92
+ ## Optional Usage
93
+
94
+ ```java
95
+ // PASS: Return Optional from find* methods
96
+ // [SPRING]
97
+ Optional<Market> market = marketRepository.findBySlug(slug);
98
+
99
+ // [QUARKUS] Panache
100
+ Optional<Market> market = Market.find("slug", slug).firstResultOptional();
101
+
102
+ // PASS: Map/flatMap instead of get()
103
+ return market
104
+ .map(MarketResponse::from)
105
+ .orElseThrow(() -> new EntityNotFoundException("Market not found"));
106
+ ```
107
+
108
+ ## Streams Best Practices
109
+
110
+ ```java
111
+ // PASS: Use streams for transformations, keep pipelines short
112
+ List<String> names = markets.stream()
113
+ .map(Market::name)
114
+ .filter(Objects::nonNull)
115
+ .toList();
116
+
117
+ // FAIL: Avoid complex nested streams; prefer loops for clarity
118
+ ```
119
+
120
+ ## Dependency Injection
121
+
122
+ ```java
123
+ // PASS: [SPRING] Constructor injection (preferred over @Autowired on fields)
124
+ @Service
125
+ public class MarketService {
126
+ private final MarketRepository marketRepository;
127
+
128
+ public MarketService(MarketRepository marketRepository) {
129
+ this.marketRepository = marketRepository;
130
+ }
131
+ }
132
+
133
+ // PASS: [QUARKUS] Constructor injection
134
+ @ApplicationScoped
135
+ public class MarketService {
136
+ private final MarketRepository marketRepository;
137
+
138
+ @Inject
139
+ public MarketService(MarketRepository marketRepository) {
140
+ this.marketRepository = marketRepository;
141
+ }
142
+ }
143
+
144
+ // PASS: [QUARKUS] Package-private field injection (acceptable in Quarkus — avoids proxy issues)
145
+ @ApplicationScoped
146
+ public class MarketService {
147
+ @Inject
148
+ MarketRepository marketRepository;
149
+ }
150
+
151
+ // FAIL: [SPRING] Field injection with @Autowired
152
+ @Autowired
153
+ private MarketRepository marketRepository; // use constructor injection
154
+
155
+ // FAIL: [QUARKUS] @Singleton when interception or lazy init is needed
156
+ @Singleton // non-proxyable — use @ApplicationScoped instead
157
+ public class MarketService {}
158
+ ```
159
+
160
+ ## Reactive Patterns [QUARKUS]
161
+
162
+ ```java
163
+ // PASS: Return Uni/Multi from reactive endpoints
164
+ @GET
165
+ @Path("/{slug}")
166
+ public Uni<Market> findBySlug(@PathParam("slug") String slug) {
167
+ return Market.find("slug", slug)
168
+ .<Market>firstResult()
169
+ .onItem().ifNull().failWith(() -> new MarketNotFoundException(slug));
170
+ }
171
+
172
+ // PASS: Non-blocking pipeline composition
173
+ public Uni<OrderConfirmation> placeOrder(OrderRequest req) {
174
+ return validateOrder(req)
175
+ .chain(valid -> persistOrder(valid))
176
+ .chain(order -> notifyFulfillment(order));
177
+ }
178
+
179
+ // FAIL: Blocking call inside a Uni/Multi pipeline
180
+ public Uni<Market> find(String slug) {
181
+ Market m = Market.find("slug", slug).firstResult(); // BLOCKING — breaks event loop
182
+ return Uni.createFrom().item(m);
183
+ }
184
+
185
+ // FAIL: Subscribing more than once to a shared Uni
186
+ Uni<Market> shared = fetchMarket(slug);
187
+ shared.subscribe().with(m -> log(m));
188
+ shared.subscribe().with(m -> cache(m)); // double subscribe — use Uni.memoize()
189
+ ```
190
+
191
+ ## Exceptions
192
+
193
+ - Use unchecked exceptions for domain errors; wrap technical exceptions with context
194
+ - Create domain-specific exceptions (e.g., `MarketNotFoundException`)
195
+ - Avoid broad `catch (Exception ex)` unless rethrowing/logging centrally
196
+
197
+ ```java
198
+ throw new MarketNotFoundException(slug);
199
+ ```
200
+
201
+ ### Centralised Exception Handling
202
+
203
+ ```java
204
+ // [SPRING]
205
+ @RestControllerAdvice
206
+ public class GlobalExceptionHandler {
207
+ @ExceptionHandler(MarketNotFoundException.class)
208
+ public ResponseEntity<ErrorResponse> handle(MarketNotFoundException ex) {
209
+ return ResponseEntity.status(404).body(ErrorResponse.from(ex));
210
+ }
211
+ }
212
+
213
+ // [QUARKUS] Option A: ExceptionMapper
214
+ @Provider
215
+ public class MarketNotFoundMapper implements ExceptionMapper<MarketNotFoundException> {
216
+ @Override
217
+ public Response toResponse(MarketNotFoundException ex) {
218
+ return Response.status(404).entity(ErrorResponse.from(ex)).build();
219
+ }
220
+ }
221
+
222
+ // [QUARKUS] Option B: @ServerExceptionMapper (RESTEasy Reactive)
223
+ @ServerExceptionMapper
224
+ public RestResponse<ErrorResponse> handle(MarketNotFoundException ex) {
225
+ return RestResponse.status(Status.NOT_FOUND, ErrorResponse.from(ex));
226
+ }
227
+ ```
228
+
229
+ ## Generics and Type Safety
230
+
231
+ - Avoid raw types; declare generic parameters
232
+ - Prefer bounded generics for reusable utilities
233
+
234
+ ```java
235
+ public <T extends Identifiable> Map<Long, T> indexById(Collection<T> items) { ... }
236
+ ```
237
+
238
+ ## Project Structure
239
+
240
+ ### [SPRING] Maven/Gradle
241
+
242
+ ```
243
+ src/main/java/com/example/app/
244
+ config/
245
+ controller/
246
+ service/
247
+ repository/
248
+ domain/
249
+ dto/
250
+ util/
251
+ src/main/resources/
252
+ application.yml
253
+ src/test/java/... (mirrors main)
254
+ ```
255
+
256
+ ### [QUARKUS] Maven/Gradle
257
+
258
+ ```
259
+ src/main/java/com/example/app/
260
+ config/ # @ConfigMapping, @ConfigProperty beans, Producers
261
+ resource/ # JAX-RS resources (not "controller")
262
+ service/
263
+ repository/ # PanacheRepository implementations (if not using active record)
264
+ domain/ # JPA/Panache entities, MongoDB entities
265
+ dto/
266
+ util/
267
+ mapper/ # MapStruct mappers (if used)
268
+ src/main/resources/
269
+ application.properties # Quarkus convention (YAML supported with quarkus-config-yaml)
270
+ import.sql # Hibernate auto-import for dev/test
271
+ src/test/java/... (mirrors main)
272
+ ```
273
+
274
+ ## Formatting and Style
275
+
276
+ - Use 2 or 4 spaces consistently (project standard)
277
+ - One public top-level type per file
278
+ - Keep methods short and focused; extract helpers
279
+ - Order members: constants, fields, constructors, public methods, protected, private
280
+
281
+ ## Code Smells to Avoid
282
+
283
+ - Long parameter lists → use DTO/builders
284
+ - Deep nesting → early returns
285
+ - Magic numbers → named constants
286
+ - Static mutable state → prefer dependency injection
287
+ - Silent catch blocks → log and act or rethrow
288
+ - **[QUARKUS]**: `@Singleton` where `@ApplicationScoped` is intended — breaks proxying and interception
289
+ - **[QUARKUS]**: Mixing `quarkus-resteasy-reactive` and `quarkus-resteasy` (classic) — pick one stack
290
+ - **[QUARKUS]**: Panache active-record + repository pattern in the same bounded context — pick one
291
+
292
+ ## Logging
293
+
294
+ ```java
295
+ // [SPRING] SLF4J
296
+ private static final Logger log = LoggerFactory.getLogger(MarketService.class);
297
+ log.info("fetch_market slug={}", slug);
298
+ log.error("failed_fetch_market slug={}", slug, ex);
299
+
300
+ // [QUARKUS] JBoss Logging (default, zero-cost at build time)
301
+ private static final Logger log = Logger.getLogger(MarketService.class);
302
+ log.infof("fetch_market slug=%s", slug);
303
+ log.errorf(ex, "failed_fetch_market slug=%s", slug);
304
+
305
+ // [QUARKUS] Alternative: simplified logging with @Inject
306
+ @Inject
307
+ Logger log; // CDI-injected, scoped to declaring class
308
+ ```
309
+
310
+ ## Null Handling
311
+
312
+ - Accept `@Nullable` only when unavoidable; otherwise use `@NonNull`
313
+ - Use Bean Validation (`@NotNull`, `@NotBlank`) on inputs
314
+ - **[QUARKUS]**: Apply `@Valid` on `@BeanParam`, `@RestForm`, and request body parameters
315
+
316
+ ## Configuration
317
+
318
+ ```java
319
+ // [SPRING] @ConfigurationProperties
320
+ @ConfigurationProperties(prefix = "market")
321
+ public record MarketProperties(int maxPageSize, Duration cacheTtl) {}
322
+
323
+ // [QUARKUS] @ConfigMapping (type-safe, build-time validated)
324
+ @ConfigMapping(prefix = "market")
325
+ public interface MarketConfig {
326
+ int maxPageSize();
327
+ Duration cacheTtl();
328
+ }
329
+
330
+ // [QUARKUS] Simple values with @ConfigProperty
331
+ @ConfigProperty(name = "market.max-page-size", defaultValue = "100")
332
+ int maxPageSize;
333
+ ```
334
+
335
+ ## Testing Expectations
336
+
337
+ ### Shared
338
+ - JUnit 5 + AssertJ for fluent assertions
339
+ - Mockito for mocking; avoid partial mocks where possible
340
+ - Favor deterministic tests; no hidden sleeps
341
+
342
+ ### [SPRING]
343
+ - `@WebMvcTest` for controller slices, `@DataJpaTest` for repository slices
344
+ - `@SpringBootTest` reserved for full integration tests
345
+ - `@MockBean` for replacing beans in Spring context
346
+
347
+ ### [QUARKUS]
348
+ - Plain JUnit 5 + Mockito for unit tests (no `@QuarkusTest`)
349
+ - `@QuarkusTest` reserved for CDI integration tests
350
+ - `@InjectMock` for replacing CDI beans in integration tests
351
+ - Dev Services for database/Kafka/Redis — avoid manual Testcontainers setup when Dev Services suffice
352
+ - `@QuarkusTestResource` for custom external service lifecycle
353
+
354
+ ```java
355
+ // [SPRING] Controller test
356
+ @WebMvcTest(MarketController.class)
357
+ class MarketControllerTest {
358
+ @Autowired MockMvc mockMvc;
359
+ @MockBean MarketService marketService;
360
+ }
361
+
362
+ // [QUARKUS] Integration test
363
+ @QuarkusTest
364
+ class MarketResourceTest {
365
+ @InjectMock
366
+ MarketService marketService;
367
+
368
+ @Test
369
+ void should_return_404_when_market_not_found() {
370
+ given().when().get("/markets/unknown").then().statusCode(404);
371
+ }
372
+ }
373
+
374
+ // [QUARKUS] Unit test (no CDI, no @QuarkusTest)
375
+ @ExtendWith(MockitoExtension.class)
376
+ class MarketServiceTest {
377
+ @Mock MarketRepository marketRepository;
378
+ @InjectMocks MarketService marketService;
379
+ }
380
+ ```
381
+
382
+ **Remember**: Keep code intentional, typed, and observable. Optimize for maintainability over micro-optimizations unless proven necessary.
@@ -0,0 +1,292 @@
1
+ ---
2
+ name: jira-integration
3
+ description: Use this skill when retrieving Jira tickets, analyzing requirements, updating ticket status, adding comments, or transitioning issues. Provides Jira API patterns via MCP or direct REST calls.
4
+ ---
5
+
6
+ # Jira Integration Skill
7
+
8
+ Retrieve, analyze, and update Jira tickets directly from your AI coding workflow. Supports both **MCP-based** (recommended) and **direct REST API** approaches.
9
+
10
+ ## When to Activate
11
+
12
+ - Fetching a Jira ticket to understand requirements
13
+ - Extracting testable acceptance criteria from a ticket
14
+ - Adding progress comments to a Jira issue
15
+ - Transitioning a ticket status (To Do → In Progress → Done)
16
+ - Linking merge requests or branches to a Jira issue
17
+ - Searching for issues by JQL query
18
+
19
+ ## Prerequisites
20
+
21
+ ### Option A: MCP Server (Recommended)
22
+
23
+ Install the `mcp-atlassian` MCP server. This exposes Jira tools directly to your AI agent.
24
+
25
+ **Requirements:**
26
+ - Python 3.10+
27
+ - `uvx` (from `uv`), installed via your package manager or the official `uv` installation documentation
28
+
29
+ **Add to your MCP config** (e.g., `~/.claude.json` → `mcpServers`):
30
+
31
+ ```json
32
+ {
33
+ "jira": {
34
+ "command": "uvx",
35
+ "args": ["mcp-atlassian==0.21.0"],
36
+ "env": {
37
+ "JIRA_URL": "https://YOUR_ORG.atlassian.net",
38
+ "JIRA_EMAIL": "your.email@example.com",
39
+ "JIRA_API_TOKEN": "your-api-token"
40
+ },
41
+ "description": "Jira issue tracking — search, create, update, comment, transition"
42
+ }
43
+ }
44
+ ```
45
+
46
+ > **Security:** Never hardcode secrets. Prefer setting `JIRA_URL`, `JIRA_EMAIL`, and `JIRA_API_TOKEN` in your system environment (or a secrets manager). Only use the MCP `env` block for local, uncommitted config files.
47
+
48
+ **To get a Jira API token:**
49
+ 1. Go to <https://id.atlassian.com/manage-profile/security/api-tokens>
50
+ 2. Click **Create API token**
51
+ 3. Copy the token — store it in your environment, never in source code
52
+
53
+ ### Option B: Direct REST API
54
+
55
+ If MCP is not available, use the Jira REST API v3 directly via `curl` or a helper script.
56
+
57
+ **Required environment variables:**
58
+
59
+ | Variable | Description |
60
+ |----------|-------------|
61
+ | `JIRA_URL` | Your Jira instance URL (e.g., `https://yourorg.atlassian.net`) |
62
+ | `JIRA_EMAIL` | Your Atlassian account email |
63
+ | `JIRA_API_TOKEN` | API token from id.atlassian.com |
64
+
65
+ Store these in your shell environment, secrets manager, or an untracked local env file. Do not commit them to the repo.
66
+
67
+ ## MCP Tools Reference
68
+
69
+ When the `mcp-atlassian` MCP server is configured, these tools are available:
70
+
71
+ | Tool | Purpose | Example |
72
+ |------|---------|---------|
73
+ | `jira_search` | JQL queries | `project = PROJ AND status = "In Progress"` |
74
+ | `jira_get_issue` | Fetch full issue details by key | `PROJ-1234` |
75
+ | `jira_create_issue` | Create issues (Task, Bug, Story, Epic) | New bug report |
76
+ | `jira_update_issue` | Update fields (summary, description, assignee) | Change assignee |
77
+ | `jira_transition_issue` | Change status | Move to "In Review" |
78
+ | `jira_add_comment` | Add comments | Progress update |
79
+ | `jira_get_sprint_issues` | List issues in a sprint | Active sprint review |
80
+ | `jira_create_issue_link` | Link issues (Blocks, Relates to) | Dependency tracking |
81
+ | `jira_get_issue_development_info` | See linked PRs, branches, commits | Dev context |
82
+
83
+ > **Tip:** Always call `jira_get_transitions` before transitioning — transition IDs vary per project workflow.
84
+
85
+ ## Direct REST API Reference
86
+
87
+ ### Fetch a Ticket
88
+
89
+ ```bash
90
+ curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
91
+ -H "Content-Type: application/json" \
92
+ "$JIRA_URL/rest/api/3/issue/PROJ-1234" | jq '{
93
+ key: .key,
94
+ summary: .fields.summary,
95
+ status: .fields.status.name,
96
+ priority: .fields.priority.name,
97
+ type: .fields.issuetype.name,
98
+ assignee: .fields.assignee.displayName,
99
+ labels: .fields.labels,
100
+ description: .fields.description
101
+ }'
102
+ ```
103
+
104
+ ### Fetch Comments
105
+
106
+ ```bash
107
+ curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
108
+ -H "Content-Type: application/json" \
109
+ "$JIRA_URL/rest/api/3/issue/PROJ-1234?fields=comment" | jq '.fields.comment.comments[] | {
110
+ author: .author.displayName,
111
+ created: .created[:10],
112
+ body: .body
113
+ }'
114
+ ```
115
+
116
+ ### Add a Comment
117
+
118
+ ```bash
119
+ curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
120
+ -H "Content-Type: application/json" \
121
+ -d '{
122
+ "body": {
123
+ "version": 1,
124
+ "type": "doc",
125
+ "content": [{
126
+ "type": "paragraph",
127
+ "content": [{"type": "text", "text": "Your comment here"}]
128
+ }]
129
+ }
130
+ }' \
131
+ "$JIRA_URL/rest/api/3/issue/PROJ-1234/comment"
132
+ ```
133
+
134
+ ### Transition a Ticket
135
+
136
+ ```bash
137
+ # 1. Get available transitions
138
+ curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
139
+ "$JIRA_URL/rest/api/3/issue/PROJ-1234/transitions" | jq '.transitions[] | {id, name: .name}'
140
+
141
+ # 2. Execute transition (replace TRANSITION_ID)
142
+ curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
143
+ -H "Content-Type: application/json" \
144
+ -d '{"transition": {"id": "TRANSITION_ID"}}' \
145
+ "$JIRA_URL/rest/api/3/issue/PROJ-1234/transitions"
146
+ ```
147
+
148
+ ### Search with JQL
149
+
150
+ ```bash
151
+ curl -s -G -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
152
+ --data-urlencode "jql=project = PROJ AND status = 'In Progress'" \
153
+ "$JIRA_URL/rest/api/3/search"
154
+ ```
155
+
156
+ ## Analyzing a Ticket
157
+
158
+ When retrieving a ticket for development or test automation, extract:
159
+
160
+ ### 1. Testable Requirements
161
+ - **Functional requirements** — What the feature does
162
+ - **Acceptance criteria** — Conditions that must be met
163
+ - **Testable behaviors** — Specific actions and expected outcomes
164
+ - **User roles** — Who uses this feature and their permissions
165
+ - **Data requirements** — What data is needed
166
+ - **Integration points** — APIs, services, or systems involved
167
+
168
+ ### 2. Test Types Needed
169
+ - **Unit tests** — Individual functions and utilities
170
+ - **Integration tests** — API endpoints and service interactions
171
+ - **E2E tests** — User-facing UI flows
172
+ - **API tests** — Endpoint contracts and error handling
173
+
174
+ ### 3. Edge Cases & Error Scenarios
175
+ - Invalid inputs (empty, too long, special characters)
176
+ - Unauthorized access
177
+ - Network failures or timeouts
178
+ - Concurrent users or race conditions
179
+ - Boundary conditions
180
+ - Missing or null data
181
+ - State transitions (back navigation, refresh, etc.)
182
+
183
+ ### 4. Structured Analysis Output
184
+
185
+ ```
186
+ Ticket: PROJ-1234
187
+ Summary: [ticket title]
188
+ Status: [current status]
189
+ Priority: [High/Medium/Low]
190
+ Test Types: Unit, Integration, E2E
191
+
192
+ Requirements:
193
+ 1. [requirement 1]
194
+ 2. [requirement 2]
195
+
196
+ Acceptance Criteria:
197
+ - [ ] [criterion 1]
198
+ - [ ] [criterion 2]
199
+
200
+ Test Scenarios:
201
+ - Happy Path: [description]
202
+ - Error Case: [description]
203
+ - Edge Case: [description]
204
+
205
+ Test Data Needed:
206
+ - [data item 1]
207
+ - [data item 2]
208
+
209
+ Dependencies:
210
+ - [dependency 1]
211
+ - [dependency 2]
212
+ ```
213
+
214
+ ## Updating Tickets
215
+
216
+ ### When to Update
217
+
218
+ | Workflow Step | Jira Update |
219
+ |---|---|
220
+ | Start work | Transition to "In Progress" |
221
+ | Tests written | Comment with test coverage summary |
222
+ | Branch created | Comment with branch name |
223
+ | PR/MR created | Comment with link, link issue |
224
+ | Tests passing | Comment with results summary |
225
+ | PR/MR merged | Transition to "Done" or "In Review" |
226
+
227
+ ### Comment Templates
228
+
229
+ **Starting Work:**
230
+ ```
231
+ Starting implementation for this ticket.
232
+ Branch: feat/PROJ-1234-feature-name
233
+ ```
234
+
235
+ **Tests Implemented:**
236
+ ```
237
+ Automated tests implemented:
238
+
239
+ Unit Tests:
240
+ - [test file 1] — [what it covers]
241
+ - [test file 2] — [what it covers]
242
+
243
+ Integration Tests:
244
+ - [test file] — [endpoints/flows covered]
245
+
246
+ All tests passing locally. Coverage: XX%
247
+ ```
248
+
249
+ **PR Created:**
250
+ ```
251
+ Pull request created:
252
+ [PR Title](https://github.com/org/repo/pull/XXX)
253
+
254
+ Ready for review.
255
+ ```
256
+
257
+ **Work Complete:**
258
+ ```
259
+ Implementation complete.
260
+
261
+ PR merged: [link]
262
+ Test results: All passing (X/Y)
263
+ Coverage: XX%
264
+ ```
265
+
266
+ ## Security Guidelines
267
+
268
+ - **Never hardcode** Jira API tokens in source code or skill files
269
+ - **Always use** environment variables or a secrets manager
270
+ - **Add `.env`** to `.gitignore` in every project
271
+ - **Rotate tokens** immediately if exposed in git history
272
+ - **Use least-privilege** API tokens scoped to required projects
273
+ - **Validate** that credentials are set before making API calls — fail fast with a clear message
274
+
275
+ ## Troubleshooting
276
+
277
+ | Error | Cause | Fix |
278
+ |---|---|---|
279
+ | `401 Unauthorized` | Invalid or expired API token | Regenerate at id.atlassian.com |
280
+ | `403 Forbidden` | Token lacks project permissions | Check token scopes and project access |
281
+ | `404 Not Found` | Wrong ticket key or base URL | Verify `JIRA_URL` and ticket key |
282
+ | `spawn uvx ENOENT` | IDE cannot find `uvx` on PATH | Use full path (e.g., `~/.local/bin/uvx`) or set PATH in `~/.zprofile` |
283
+ | Connection timeout | Network/VPN issue | Check VPN connection and firewall rules |
284
+
285
+ ## Best Practices
286
+
287
+ - Update Jira as you go, not all at once at the end
288
+ - Keep comments concise but informative
289
+ - Link rather than copy — point to PRs, test reports, and dashboards
290
+ - Use @mentions if you need input from others
291
+ - Check linked issues to understand full feature scope before starting
292
+ - If acceptance criteria are vague, ask for clarification before writing code