@waoooo/claude-skills 1.0.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 (264) hide show
  1. package/README.md +48 -0
  2. package/package.json +28 -0
  3. package/registry.json +431 -0
  4. package/skills/acceptance-review/SKILL.md +537 -0
  5. package/skills/all-plan/SKILL.md +19 -0
  6. package/skills/all-plan/references/flow.md +750 -0
  7. package/skills/api-docs-generate/SKILL.md +204 -0
  8. package/skills/api-docs-generate/assets/templates/api.mdx +140 -0
  9. package/skills/api-docs-generate/scripts/generate-api-docs.ts +308 -0
  10. package/skills/ask/SKILL.md +42 -0
  11. package/skills/autonew/SKILL.md +34 -0
  12. package/skills/capability-analyze/SKILL.md +300 -0
  13. package/skills/capability-analyze/scripts/analyze-capabilities.ts +531 -0
  14. package/skills/capability-docs-generate/SKILL.md +155 -0
  15. package/skills/capability-docs-generate/assets/templates/capability.mdx +271 -0
  16. package/skills/capability-docs-generate/scripts/generate-capability-docs.ts +358 -0
  17. package/skills/capability-tree-query/SKILL.md +112 -0
  18. package/skills/capability-tree-query/scripts/build-capability-tree.ts +402 -0
  19. package/skills/changelog-generator/SKILL.md +104 -0
  20. package/skills/continue/SKILL.md +39 -0
  21. package/skills/continue/agents/openai.yaml +3 -0
  22. package/skills/creating-skills/SKILL.md +158 -0
  23. package/skills/creating-skills/references/official_best_practices.md +128 -0
  24. package/skills/creating-skills/references/skill_examples.md +199 -0
  25. package/skills/docx/LICENSE.txt +30 -0
  26. package/skills/docx/SKILL.md +197 -0
  27. package/skills/docx/docx-js.md +350 -0
  28. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  29. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  30. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  31. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  32. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  33. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  34. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  35. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  36. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  37. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  38. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  39. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  40. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  41. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  42. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  43. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  44. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  45. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  46. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  47. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  48. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  49. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  50. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  51. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  52. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  53. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  54. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  55. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  56. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  57. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  58. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  59. package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  60. package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  61. package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  62. package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  63. package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  64. package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  65. package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  66. package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  67. package/skills/docx/ooxml/scripts/pack.py +159 -0
  68. package/skills/docx/ooxml/scripts/unpack.py +29 -0
  69. package/skills/docx/ooxml/scripts/validate.py +69 -0
  70. package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  71. package/skills/docx/ooxml/scripts/validation/base.py +951 -0
  72. package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  73. package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  74. package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  75. package/skills/docx/ooxml.md +610 -0
  76. package/skills/docx/scripts/__init__.py +1 -0
  77. package/skills/docx/scripts/document.py +1276 -0
  78. package/skills/docx/scripts/templates/comments.xml +3 -0
  79. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  80. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  81. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  82. package/skills/docx/scripts/templates/people.xml +3 -0
  83. package/skills/docx/scripts/utilities.py +374 -0
  84. package/skills/git-branch-create/SKILL.md +170 -0
  85. package/skills/git-branch-merge/SKILL.md +176 -0
  86. package/skills/git-commit/SKILL.md +56 -0
  87. package/skills/git-commit/references/commit_examples.md +311 -0
  88. package/skills/github-actions-trigger/SKILL.md +367 -0
  89. package/skills/github-issue-create/SKILL.md +294 -0
  90. package/skills/github-pr-creation/SKILL.md +137 -0
  91. package/skills/github-pr-creation/references/pr_templates.md +187 -0
  92. package/skills/github-pr-merge/SKILL.md +112 -0
  93. package/skills/github-pr-review/SKILL.md +110 -0
  94. package/skills/github-pr-review/references/severity_guide.md +168 -0
  95. package/skills/job-create/SKILL.md +294 -0
  96. package/skills/job-create/scripts/create-job.ts +105 -0
  97. package/skills/job-workflow/SKILL.md +212 -0
  98. package/skills/keyword-extract/SKILL.md +229 -0
  99. package/skills/mcp-builder/LICENSE.txt +202 -0
  100. package/skills/mcp-builder/SKILL.md +236 -0
  101. package/skills/mcp-builder/reference/evaluation.md +602 -0
  102. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  103. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  104. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  105. package/skills/mcp-builder/scripts/connections.py +151 -0
  106. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  107. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  108. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  109. package/skills/mdx-to-openspec/SKILL.md +827 -0
  110. package/skills/mdx-to-openspec/scripts/mdx-to-openspec.ts +320 -0
  111. package/skills/mounted/SKILL.md +20 -0
  112. package/skills/multi-model-review/SKILL.md +459 -0
  113. package/skills/notion-automation/SKILL.md +215 -0
  114. package/skills/openspec-review/SKILL.md +513 -0
  115. package/skills/pdf/LICENSE.txt +30 -0
  116. package/skills/pdf/SKILL.md +294 -0
  117. package/skills/pdf/forms.md +205 -0
  118. package/skills/pdf/reference.md +612 -0
  119. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  120. package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  121. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  122. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  123. package/skills/pdf/scripts/create_validation_image.py +41 -0
  124. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  125. package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  126. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  127. package/skills/pend/SKILL.md +33 -0
  128. package/skills/ping/SKILL.md +39 -0
  129. package/skills/pptx/LICENSE.txt +30 -0
  130. package/skills/pptx/SKILL.md +484 -0
  131. package/skills/pptx/html2pptx.md +625 -0
  132. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  133. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  134. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  135. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  136. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  137. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  138. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  139. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  140. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  141. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  142. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  143. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  144. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  145. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  146. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  147. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  148. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  149. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  150. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  151. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  152. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  153. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  154. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  155. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  156. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  157. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  158. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  159. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  160. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  161. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  162. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  163. package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  164. package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  165. package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  166. package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  167. package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  168. package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  169. package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  170. package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  171. package/skills/pptx/ooxml/scripts/pack.py +159 -0
  172. package/skills/pptx/ooxml/scripts/unpack.py +29 -0
  173. package/skills/pptx/ooxml/scripts/validate.py +69 -0
  174. package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  175. package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  176. package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  177. package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  178. package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  179. package/skills/pptx/ooxml.md +427 -0
  180. package/skills/pptx/scripts/html2pptx.js +979 -0
  181. package/skills/pptx/scripts/inventory.py +1020 -0
  182. package/skills/pptx/scripts/rearrange.py +231 -0
  183. package/skills/pptx/scripts/replace.py +385 -0
  184. package/skills/pptx/scripts/thumbnail.py +450 -0
  185. package/skills/progress-update/SKILL.md +394 -0
  186. package/skills/progress-update/scripts/update-progress.ts +221 -0
  187. package/skills/release-automation/SKILL.md +306 -0
  188. package/skills/requirement-parse/SKILL.md +212 -0
  189. package/skills/requirement-parse/scripts/infer-builder-config.ts +346 -0
  190. package/skills/requirement-parse/scripts/merge-requirements.ts +228 -0
  191. package/skills/requirement-parse/scripts/parse-docs.ts +206 -0
  192. package/skills/requirement-parse/scripts/parse-openspec.ts +168 -0
  193. package/skills/roadmap-docs-generate/SKILL.md +483 -0
  194. package/skills/roadmap-docs-generate/assets/templates/ROADMAP.mdx +75 -0
  195. package/skills/roadmap-docs-generate/assets/templates/ROADMAP.mdx.template +330 -0
  196. package/skills/roadmap-docs-generate/assets/templates/TODO.mdx +56 -0
  197. package/skills/roadmap-docs-generate/assets/templates/TODO.mdx.template +363 -0
  198. package/skills/roadmap-docs-generate/scripts/json-to-mdx.ts +445 -0
  199. package/skills/roadmap-docs-generate/scripts/json-to-mdx.ts.backup +411 -0
  200. package/skills/roadmap-generate/SKILL.md +396 -0
  201. package/skills/roadmap-generate/scripts/generate-roadmap.ts +496 -0
  202. package/skills/skill-creator/LICENSE.txt +202 -0
  203. package/skills/skill-creator/SKILL.md +356 -0
  204. package/skills/skill-creator/references/output-patterns.md +82 -0
  205. package/skills/skill-creator/references/workflows.md +28 -0
  206. package/skills/skill-creator/scripts/init_skill.py +303 -0
  207. package/skills/skill-creator/scripts/package_skill.py +110 -0
  208. package/skills/skill-creator/scripts/quick_validate.py +95 -0
  209. package/skills/spec-generate/SKILL.md +408 -0
  210. package/skills/spec-generate/scripts/generate-specs.ts +538 -0
  211. package/skills/spec-generate/scripts/generate-tasks.ts +174 -0
  212. package/skills/specs-review/SKILL.md +370 -0
  213. package/skills/task-execute/SKILL.md +399 -0
  214. package/skills/task-update-status/SKILL.md +349 -0
  215. package/skills/task-update-status/scripts/update-task-status.ts +192 -0
  216. package/skills/task-verify/SKILL.md +407 -0
  217. package/skills/ui-ux-pro-max/SKILL.md +386 -0
  218. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  219. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  220. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  221. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  222. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  223. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  224. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  225. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  226. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  227. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  228. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  229. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  230. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  231. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  232. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  233. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  234. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  235. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  236. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  237. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  238. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  239. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  240. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  241. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  242. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  243. package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  244. package/skills/ui-ux-pro-max/scripts/search.py +114 -0
  245. package/skills/vercel-automation/SKILL.md +226 -0
  246. package/skills/webapp-testing/LICENSE.txt +202 -0
  247. package/skills/webapp-testing/SKILL.md +96 -0
  248. package/skills/webapp-testing/examples/console_logging.py +35 -0
  249. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  250. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  251. package/skills/webapp-testing/scripts/with_server.py +106 -0
  252. package/skills/worktree-manager/SKILL.md +725 -0
  253. package/skills/worktree-manager/config.json +15 -0
  254. package/skills/worktree-manager/scripts/allocate-ports.sh +100 -0
  255. package/skills/worktree-manager/scripts/cleanup.sh +185 -0
  256. package/skills/worktree-manager/scripts/launch-agent.sh +155 -0
  257. package/skills/worktree-manager/scripts/register.sh +125 -0
  258. package/skills/worktree-manager/scripts/release-ports.sh +48 -0
  259. package/skills/worktree-manager/scripts/status.sh +169 -0
  260. package/skills/worktree-manager/scripts/sync.sh +168 -0
  261. package/skills/worktree-manager/templates/worktree.json +23 -0
  262. package/skills/xlsx/LICENSE.txt +30 -0
  263. package/skills/xlsx/SKILL.md +289 -0
  264. package/skills/xlsx/recalc.py +178 -0
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: git-branch-merge
3
+ description: Merge current branch to target branch (main/develop/etc) with validation. Use when user wants to merge branch, finalize feature, merge to main/develop, or complete development. Checks uncommitted changes, pulls latest, merges, and pushes.
4
+ ---
5
+
6
+ # Git Branch Merge
7
+
8
+ Merge current branch to target branch with pre-merge validation and cleanup.
9
+
10
+ ## Current status
11
+
12
+ !`git branch --show-current 2>/dev/null || echo "Not in a git repository"`
13
+
14
+ ## Core workflow
15
+
16
+ ### 1. Pre-merge validation
17
+
18
+ **Check for uncommitted changes:**
19
+ ```bash
20
+ git status --porcelain
21
+ ```
22
+
23
+ If output is not empty:
24
+ - **STOP** and inform user: "You have uncommitted changes. Commit or stash them first."
25
+ - Exit workflow
26
+
27
+ ### 2. Confirm target branch
28
+
29
+ **ALWAYS ask user to confirm target branch:**
30
+ ```
31
+ Which branch do you want to merge into?
32
+ 1. main
33
+ 2. develop
34
+ 3. master
35
+ 4. Other (specify)
36
+ ```
37
+
38
+ ### 3. Get current branch name
39
+
40
+ ```bash
41
+ CURRENT_BRANCH=$(git branch --show-current)
42
+ echo "Merging: $CURRENT_BRANCH"
43
+ ```
44
+
45
+ ### 4. Execute merge
46
+
47
+ ```bash
48
+ # Save current branch name
49
+ FEATURE_BRANCH=$(git branch --show-current)
50
+
51
+ # Switch to target branch
52
+ git checkout main
53
+
54
+ # Pull latest changes
55
+ git pull origin main
56
+
57
+ # Merge feature branch (no fast-forward to preserve history)
58
+ git merge $FEATURE_BRANCH --no-ff
59
+
60
+ # Push to remote
61
+ git push origin main
62
+
63
+ # Switch back to feature branch (optional)
64
+ git checkout $FEATURE_BRANCH
65
+ ```
66
+
67
+ **Merge strategy**: Always use `--no-ff` (no fast-forward) to preserve branch history.
68
+
69
+ ### 5. Post-merge cleanup (optional)
70
+
71
+ Ask user: "Delete feature branch `$FEATURE_BRANCH`?"
72
+
73
+ If yes:
74
+ ```bash
75
+ # Delete local branch
76
+ git branch -d $FEATURE_BRANCH
77
+
78
+ # Delete remote branch (if exists)
79
+ git push origin --delete $FEATURE_BRANCH
80
+ ```
81
+
82
+ ## Important rules
83
+
84
+ - **ALWAYS** check for uncommitted changes first
85
+ - **ALWAYS** confirm target branch with user
86
+ - **ALWAYS** pull latest before merging
87
+ - **ALWAYS** use `--no-ff` to preserve branch history
88
+ - **NEVER** merge with uncommitted changes
89
+ - **NEVER** force push to main/develop/master
90
+ - **NEVER** assume target branch name - always ask user
91
+
92
+ ## Error handling
93
+
94
+ ### Merge conflicts
95
+
96
+ If merge fails with conflicts:
97
+ ```bash
98
+ # Show conflicted files
99
+ git status
100
+
101
+ # List conflicted files
102
+ git diff --name-only --diff-filter=U
103
+ ```
104
+
105
+ **Action**:
106
+ 1. Inform user: "Merge conflicts detected in: [list files]"
107
+ 2. Stop workflow
108
+ 3. Tell user: "Resolve conflicts manually, then run: git commit"
109
+
110
+ ### Failed push (remote has new commits)
111
+
112
+ If push fails:
113
+ ```bash
114
+ # Pull with rebase
115
+ git pull --rebase origin main
116
+
117
+ # Resolve any conflicts if needed
118
+
119
+ # Try push again
120
+ git push origin main
121
+ ```
122
+
123
+ ### Branch doesn't exist
124
+
125
+ If target branch doesn't exist:
126
+ ```bash
127
+ # List available branches
128
+ git branch -a
129
+ ```
130
+
131
+ **Action**: Show available branches and ask user to choose.
132
+
133
+ ## Examples
134
+
135
+ ### Basic merge to main
136
+ ```bash
137
+ # User: "Merge this branch to main"
138
+
139
+ # 1. Check status
140
+ git status --porcelain
141
+
142
+ # 2. Get current branch
143
+ FEATURE_BRANCH=$(git branch --show-current)
144
+
145
+ # 3. Merge
146
+ git checkout main
147
+ git pull origin main
148
+ git merge $FEATURE_BRANCH --no-ff
149
+ git push origin main
150
+ ```
151
+
152
+ ### Merge to develop
153
+ ```bash
154
+ # User: "Merge to develop"
155
+
156
+ FEATURE_BRANCH=$(git branch --show-current)
157
+ git checkout develop
158
+ git pull origin develop
159
+ git merge $FEATURE_BRANCH --no-ff
160
+ git push origin develop
161
+ ```
162
+
163
+ ### With cleanup
164
+ ```bash
165
+ # After successful merge
166
+ git branch -d feature/auth
167
+ git push origin --delete feature/auth
168
+ ```
169
+
170
+ ## Notes
171
+
172
+ - This skill works in the **current directory**
173
+ - No hardcoded paths or repository names
174
+ - Uses standard git commands
175
+ - Compatible with any git repository
176
+ - Supports any branch naming convention
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: git-commit
3
+ description: Creates git commits following Conventional Commits format with type/scope/subject. Use when user wants to commit changes, create commit, save work, or stage and commit. Enforces project-specific conventions from CLAUDE.md.
4
+ ---
5
+
6
+ # Git commit
7
+
8
+ Creates git commits following Conventional Commits format.
9
+
10
+ ## Recent project commits
11
+
12
+ !`git log --oneline -5 2>/dev/null`
13
+
14
+ ## Quick start
15
+
16
+ ```bash
17
+ # 1. Stage changes
18
+ git add <files>
19
+
20
+ # 2. Create commit
21
+ git commit -m "type(scope): subject"
22
+ ```
23
+
24
+ ## Project conventions
25
+
26
+ - Scope is **required** (kebab-case): `validation`, `auth`, `cookie-service`, `api`
27
+ - Additional type beyond standard CC: `security` (vulnerability fixes or hardening)
28
+ - HEREDOC for multi-line commits:
29
+
30
+ ```bash
31
+ git commit -m "$(cat <<'EOF'
32
+ feat(validation): add URLValidator with domain whitelist
33
+
34
+ Implement URLValidator class supporting:
35
+ - Domain whitelist enforcement
36
+ - Dangerous scheme blocking
37
+
38
+ Addresses Requirement 31
39
+ Part of Task 5.1
40
+ EOF
41
+ )"
42
+ ```
43
+
44
+ ## Important rules
45
+
46
+ - **ALWAYS** check CLAUDE.md conventions first - use project format if it differs
47
+ - **ALWAYS** include scope in parentheses
48
+ - **ALWAYS** use present tense imperative verb for the subject
49
+ - **NEVER** end subject with a period
50
+ - **NEVER** exceed 50 chars in the subject line
51
+ - **NEVER** use generic messages ("update code", "fix bug", "changes")
52
+ - Group related changes into a single focused commit
53
+
54
+ ## References
55
+
56
+ - `references/commit_examples.md` - Extended examples by type, good/bad comparisons
@@ -0,0 +1,311 @@
1
+ # Commit Examples by Type
2
+
3
+ Extended examples for each commit type with body content.
4
+
5
+ ## feat - New Features
6
+
7
+ ```
8
+ feat(validation): add URLValidator with domain whitelist
9
+
10
+ Implement URLValidator class supporting:
11
+ - Domain whitelist enforcement (youtube.com, youtu.be, m.youtube.com)
12
+ - Dangerous scheme blocking (javascript, data, file)
13
+ - URL parsing with embedded credentials handling
14
+ - Port number validation (1-65535)
15
+
16
+ Addresses Requirement 31: Input validation
17
+ Part of Task 5.1: Input Validation Utilities
18
+ ```
19
+
20
+ ```
21
+ feat(api): add video metadata endpoint
22
+
23
+ New GET /api/v1/videos/{id}/metadata endpoint:
24
+ - Returns title, duration, formats, thumbnails
25
+ - Supports format filtering via query params
26
+ - Implements caching with 5-minute TTL
27
+
28
+ Part of Task 6.2: API Endpoints
29
+ ```
30
+
31
+ ## fix - Bug Fixes
32
+
33
+ ```
34
+ fix(auth): use hmac.compare_digest for secure key comparison
35
+
36
+ Replace direct string equality with hmac.compare_digest to prevent
37
+ timing attacks on API key validation. Ensures constant-time comparison
38
+ regardless of key length or content.
39
+
40
+ Addresses security best practice for sensitive data comparison
41
+ ```
42
+
43
+ ```
44
+ fix(download): handle network timeout during video fetch
45
+
46
+ Add retry logic with exponential backoff for network failures:
47
+ - Max 3 attempts with delays [2, 4, 8] seconds
48
+ - Classify retriable errors (5xx, timeout, connection)
49
+ - Log each retry attempt with remaining count
50
+
51
+ Fixes issue where downloads would fail silently on flaky connections
52
+ ```
53
+
54
+ ## refactor - Code Improvements
55
+
56
+ ```
57
+ refactor(template): consolidate filename sanitization logic
58
+
59
+ Extract common sanitization patterns into helper methods:
60
+ - Path traversal prevention (.., /, absolute paths)
61
+ - Special character removal (control chars, null bytes)
62
+ - Windows reserved name handling (CON, PRN, LPT1-9, etc)
63
+
64
+ Improves code maintainability and reduces duplication
65
+ ```
66
+
67
+ ```
68
+ refactor(providers): extract common yt-dlp options builder
69
+
70
+ Move duplicated option building from get_info/download to
71
+ _build_base_options helper. Reduces code duplication and ensures
72
+ consistent option handling across all provider methods.
73
+
74
+ No behavior change, pure refactoring
75
+ ```
76
+
77
+ ## test - Test Changes
78
+
79
+ ```
80
+ test(security): add 102 path traversal prevention tests
81
+
82
+ Comprehensive test coverage for TemplateProcessor including:
83
+ - Basic path traversal attempts (.., /)
84
+ - URL-encoded variants (%2e%2e, %2f)
85
+ - Unicode/UTF-8 bypass attempts
86
+ - Windows edge cases (backslashes, drive letters)
87
+
88
+ Part of Task 5.4: Security Test Suite
89
+ ```
90
+
91
+ ```
92
+ test(validation): add parametrized URL validation tests
93
+
94
+ Add 25 test cases covering:
95
+ - Valid YouTube URL formats (watch, shorts, embed, youtu.be)
96
+ - Invalid domains (vimeo, dailymotion)
97
+ - Malformed URLs (no scheme, wrong port)
98
+ - Edge cases (trailing slashes, query params)
99
+
100
+ Coverage for URLValidator: 98%
101
+ ```
102
+
103
+ ## perf - Performance
104
+
105
+ ```
106
+ perf(cache): implement LRU eviction for metadata cache
107
+
108
+ Replace dict-based cache with LRU implementation:
109
+ - Max 1000 entries with automatic eviction
110
+ - 40% memory reduction under high load
111
+ - Sub-millisecond lookup times maintained
112
+
113
+ Addresses memory growth issue in long-running instances
114
+ ```
115
+
116
+ ## security - Security Fixes
117
+
118
+ ```
119
+ security(cookie): validate cookie file integrity before use
120
+
121
+ Add SHA256 checksum verification for cookie files:
122
+ - Compute hash on first load, store in memory
123
+ - Verify hash before each use
124
+ - Reject modified files with clear error message
125
+
126
+ Prevents use of tampered cookie files
127
+ Addresses Requirement 33: Security validation
128
+ ```
129
+
130
+ ## ci - CI/CD Changes
131
+
132
+ ```
133
+ ci(github): add security scanning to PR workflow
134
+
135
+ Enable Bandit security scanner in GitHub Actions:
136
+ - Run on all Python files
137
+ - Fail on HIGH/CRITICAL findings
138
+ - Cache virtualenv for faster runs
139
+
140
+ Part of Task 15.3: Basic security validation
141
+ ```
142
+
143
+ ## docs - Documentation
144
+
145
+ ```
146
+ docs(api): add OpenAPI description for download endpoint
147
+
148
+ Document /api/v1/download endpoint:
149
+ - Request body schema with format options
150
+ - Response codes (200, 400, 401, 404, 500)
151
+ - Example requests and responses
152
+
153
+ Improves API documentation for consumers
154
+ ```
155
+
156
+ ## chore - Maintenance
157
+
158
+ ```
159
+ chore(deps): update yt-dlp to 2024.12.06
160
+
161
+ Update yt-dlp from 2024.11.15 to 2024.12.06:
162
+ - Fixes YouTube throttling detection
163
+ - Adds support for new Instagram format
164
+ - Improves error messages for geo-blocked content
165
+
166
+ No breaking changes expected
167
+ ```
168
+
169
+ ## style - Formatting
170
+
171
+ ```
172
+ style(providers): apply black formatting to youtube.py
173
+
174
+ Apply black formatter with 88 char line length.
175
+ No functional changes, formatting only.
176
+ ```
177
+
178
+ ## Merge Commit Examples
179
+
180
+ ### Feature Branch to Develop
181
+
182
+ ```
183
+ Merge pull request #5 from fvadicamo/feature/input-validation-security
184
+
185
+ feat(security): implement input validation and security (Task 5)
186
+
187
+ Merges comprehensive security implementation (Task 5) into develop:
188
+ - Input validation utilities (URLValidator, FormatValidator, ParameterValidator)
189
+ - Secure template processor with path traversal prevention
190
+ - API key authentication middleware with multi-key support
191
+ - 473 tests with 93% coverage
192
+
193
+ Task 5.1: Input Validation Utilities
194
+ - URLValidator: Domain whitelist (youtube.com, youtu.be), dangerous scheme blocking
195
+ - FormatValidator: yt-dlp format ID validation with regex and selectors
196
+ - ParameterValidator: Audio quality/format and language code validation
197
+
198
+ Task 5.2: Template Processor
199
+ - Path traversal prevention (.., /, absolute paths, URL encoding)
200
+ - Filename sanitization (illegal chars, control chars, null bytes)
201
+ - Windows reserved names handling (CON, PRN, AUX, NUL, COM1-9, LPT1-9)
202
+ - Collision handling with numeric suffix, max length 200 chars
203
+
204
+ Task 5.3: API Key Authentication
205
+ - APIKeyAuth class with multi-key support
206
+ - Excluded paths for health/doc endpoints
207
+ - Secure hashing for logging (SHA256 first 8 chars)
208
+ - FastAPI dependency injection integration
209
+
210
+ Task 5.4: Security Tests
211
+ - 102 path traversal prevention tests with edge cases
212
+ - URL validation tests with malicious inputs
213
+ - API key authentication and credential tests
214
+ - Sensitive data redaction verification
215
+
216
+ Requirements Covered:
217
+ - Req 7: Output template processing with security
218
+ - Req 9: API key authentication
219
+ - Req 31: Input validation
220
+ - Req 33: Security (secure comparison, log redaction)
221
+
222
+ Test Coverage:
223
+ - All 473 tests passing
224
+ - Coverage: 93% (exceeds 80% minimum)
225
+ - Pre-commit checks: all passing
226
+ ```
227
+
228
+ ### Develop to Main (Release)
229
+
230
+ ```
231
+ Merge pull request #10 from fvadicamo/develop
232
+
233
+ release: v0.1.0 - MVP with YouTube provider
234
+
235
+ First stable release with core functionality:
236
+ - YouTube video info, formats, download, audio extraction
237
+ - Cookie-based authentication for age-restricted content
238
+ - API key authentication
239
+ - Input validation and security hardening
240
+ - 500+ tests with 92% coverage
241
+
242
+ Breaking Changes: None (initial release)
243
+
244
+ Features:
245
+ - GET /api/v1/info - Video metadata
246
+ - GET /api/v1/formats - Available formats
247
+ - POST /api/v1/download - Video/audio download
248
+ - Cookie file support for authenticated requests
249
+
250
+ Documentation:
251
+ - API documentation at /docs (Swagger UI)
252
+ - OpenAPI spec at /openapi.json
253
+ ```
254
+
255
+ ## Good vs Bad Examples
256
+
257
+ **Good**:
258
+ ```
259
+ feat(validation): add URLValidator with domain whitelist
260
+ fix(auth): use hmac.compare_digest for secure key comparison
261
+ refactor(template): consolidate filename sanitization logic
262
+ test(security): add 102 path traversal prevention tests
263
+ ```
264
+
265
+ **Bad**:
266
+ ```
267
+ update validation code # no type, no scope, vague
268
+ feat: add stuff # missing scope, too vague
269
+ fix(auth): fix bug # circular, not specific
270
+ chore: make changes # missing scope, vague
271
+ feat(security): improve things. # has period, vague
272
+ ```
273
+
274
+ ## Commits with Trailers
275
+
276
+ ### Single Issue
277
+ ```
278
+ fix(validation): prevent XSS in user input
279
+
280
+ Escape HTML entities before rendering.
281
+
282
+ Fixes #78
283
+ ```
284
+
285
+ ### Multiple Issues + Co-author
286
+ ```
287
+ fix(auth): resolve session and token issues
288
+
289
+ - Fix session expiry not triggering logout
290
+ - Fix token refresh race condition
291
+
292
+ Fixes #101
293
+ Fixes #103
294
+ Co-authored-by: Bob <bob@example.com>
295
+ ```
296
+
297
+ ## Breaking Changes
298
+
299
+ ### With ! Notation
300
+ ```
301
+ feat(api)!: migrate to v2 endpoints
302
+
303
+ BREAKING CHANGE: /api/v1/* endpoints removed. Update base URL to /api/v2/.
304
+ ```
305
+
306
+ ### Config Breaking Change
307
+ ```
308
+ chore(config)!: rename environment variables
309
+
310
+ BREAKING CHANGE: DATABASE_URL -> APP_DATABASE_URL, API_KEY -> APP_API_KEY
311
+ ```