@biggora/claude-plugins 1.2.0 → 1.2.2

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 (185) hide show
  1. package/README.md +11 -4
  2. package/package.json +1 -1
  3. package/registry/registry.json +319 -244
  4. package/specs/coding.md +24 -0
  5. package/specs/pod.md +2 -0
  6. package/src/skills/captcha/README.md +221 -0
  7. package/src/skills/captcha/SKILL.md +355 -0
  8. package/src/skills/captcha/references/captcha-types.md +254 -0
  9. package/src/skills/captcha/references/services.md +172 -0
  10. package/src/skills/captcha/references/stealth.md +238 -0
  11. package/src/skills/captcha/scripts/solve_captcha.py +323 -0
  12. package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
  13. package/src/skills/google-merchant-api/SKILL.md +581 -0
  14. package/src/skills/google-merchant-api/references/accounts.md +247 -0
  15. package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
  16. package/src/skills/google-merchant-api/references/datasources.md +233 -0
  17. package/src/skills/google-merchant-api/references/inventories.md +201 -0
  18. package/src/skills/google-merchant-api/references/migration.md +267 -0
  19. package/src/skills/google-merchant-api/references/products.md +316 -0
  20. package/src/skills/google-merchant-api/references/promotions.md +201 -0
  21. package/src/skills/google-merchant-api/references/reports.md +240 -0
  22. package/src/skills/lv-aggregators-api/SKILL.md +113 -0
  23. package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
  24. package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
  25. package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
  26. package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
  27. package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
  28. package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
  29. package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
  30. package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
  31. package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
  32. package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
  33. package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
  34. package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
  35. package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
  36. package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
  37. package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
  38. package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
  39. package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
  40. package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
  41. package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
  42. package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
  43. package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
  44. package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
  45. package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
  46. package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
  47. package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
  48. package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
  49. package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
  50. package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
  51. package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
  52. package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
  53. package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
  54. package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
  55. package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
  56. package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
  57. package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
  58. package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
  59. package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
  60. package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
  61. package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
  62. package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
  63. package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
  64. package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
  65. package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
  66. package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
  67. package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
  68. package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
  69. package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
  70. package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
  71. package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
  72. package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
  73. package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
  74. package/src/skills/test-mobile-app/SKILL.md +11 -6
  75. package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
  76. package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
  77. package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
  78. package/src/skills/test-web-ui/SKILL.md +264 -84
  79. package/src/skills/test-web-ui/scripts/discover.py +25 -12
  80. package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
  81. package/src/skills/vite-best-practices/SKILL.md +115 -0
  82. package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
  83. package/src/skills/vite-best-practices/references/core-config.md +231 -0
  84. package/src/skills/vite-best-practices/references/core-features.md +222 -0
  85. package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
  86. package/src/skills/vite-best-practices/references/environment-api.md +108 -0
  87. package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
  88. package/codex-cli-workspace/iteration-1/benchmark.json +0 -122
  89. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/eval_metadata.json +0 -13
  90. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/grading.json +0 -52
  91. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/outputs/response.md +0 -163
  92. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/timing.json +0 -5
  93. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/grading.json +0 -58
  94. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md +0 -151
  95. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/timing.json +0 -5
  96. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -13
  97. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -52
  98. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -86
  99. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  100. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -58
  101. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  102. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  103. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/eval_metadata.json +0 -13
  104. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/grading.json +0 -52
  105. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/outputs/response.md +0 -130
  106. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/timing.json +0 -5
  107. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/grading.json +0 -64
  108. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/outputs/response.md +0 -209
  109. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/timing.json +0 -5
  110. package/codex-cli-workspace/iteration-1/review.html +0 -1325
  111. package/gemini-cli-workspace/iteration-1/benchmark.json +0 -86
  112. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/eval_metadata.json +0 -37
  113. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/grading.json +0 -37
  114. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/outputs/response.md +0 -401
  115. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/timing.json +0 -5
  116. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/grading.json +0 -37
  117. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/outputs/response.md +0 -405
  118. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/timing.json +0 -5
  119. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -37
  120. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  121. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -212
  122. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  123. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  124. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -427
  125. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  126. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/eval_metadata.json +0 -32
  127. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  128. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -171
  129. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  130. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  131. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -199
  132. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  133. package/gemini-cli-workspace/iteration-1/review.html +0 -1325
  134. package/gemini-cli-workspace/iteration-2/benchmark.json +0 -173
  135. package/gemini-cli-workspace/iteration-2/benchmark.md +0 -28
  136. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/eval_metadata.json +0 -37
  137. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/grading.json +0 -37
  138. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/outputs/response.md +0 -195
  139. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/timing.json +0 -5
  140. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/grading.json +0 -37
  141. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/outputs/response.md +0 -377
  142. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/timing.json +0 -5
  143. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/eval_metadata.json +0 -37
  144. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  145. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -127
  146. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  147. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  148. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  149. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  150. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/eval_metadata.json +0 -32
  151. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  152. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -91
  153. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  154. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  155. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -112
  156. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  157. package/gemini-cli-workspace/iteration-2/eval-viewer.html +0 -1325
  158. package/screen-recording-workspace/evals.json +0 -41
  159. package/screen-recording-workspace/iteration-1/benchmark.json +0 -102
  160. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/eval_metadata.json +0 -31
  161. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/grading.json +0 -11
  162. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/outputs/demo.mp4 +0 -0
  163. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/timing.json +0 -5
  164. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/grading.json +0 -11
  165. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/outputs/demo.mp4 +0 -0
  166. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/timing.json +0 -5
  167. package/screen-recording-workspace/iteration-1/eval-1-region-audio/eval_metadata.json +0 -31
  168. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/grading.json +0 -11
  169. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/outputs/region_capture.mp4 +0 -0
  170. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/timing.json +0 -5
  171. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/grading.json +0 -11
  172. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/outputs/region_capture.mp4 +0 -0
  173. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/timing.json +0 -5
  174. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/eval_metadata.json +0 -31
  175. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/grading.json +0 -11
  176. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/outputs/fallback_recording.mp4 +0 -0
  177. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/timing.json +0 -5
  178. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/grading.json +0 -11
  179. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/fallback_recording.mp4 +0 -0
  180. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/record_screen.py +0 -67
  181. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/timing.json +0 -5
  182. package/screen-recording-workspace/iteration-1/review.html +0 -1325
  183. package/src/skills/codex-cli/evals/evals.json +0 -47
  184. package/src/skills/gemini-cli/evals/evals.json +0 -46
  185. package/src/skills/tm-search/evals/evals.json +0 -23
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: typography-list-style
3
+ description: Controlling list marker style and position with list-style-type and list-style-position
4
+ ---
5
+
6
+ # List Style
7
+
8
+ Utilities for controlling the marker style and position of list items.
9
+
10
+ ## Usage
11
+
12
+ ### List style type
13
+
14
+ ```html
15
+ <ul class="list-disc">
16
+ <li>Disc bullets (default for ul)</li>
17
+ </ul>
18
+
19
+ <ol class="list-decimal">
20
+ <li>Decimal numbers (default for ol)</li>
21
+ </ol>
22
+
23
+ <ul class="list-none">
24
+ <li>No markers (often with custom bullets via before/after)</li>
25
+ </ul>
26
+
27
+ <!-- Custom value -->
28
+ <ol class="list-[upper-roman]">Roman numerals</ol>
29
+ <ul class="list-(--my-marker)">Custom property</ul>
30
+ ```
31
+
32
+ ### List style position
33
+
34
+ ```html
35
+ <!-- Bullets inside content flow -->
36
+ <ul class="list-inside list-disc">
37
+ <li>5 cups chopped Porcini mushrooms</li>
38
+ </ul>
39
+
40
+ <!-- Bullets outside content flow (default) -->
41
+ <ul class="list-outside list-disc">
42
+ <li>5 cups chopped Porcini mushrooms</li>
43
+ </ul>
44
+ ```
45
+
46
+ ### Responsive
47
+
48
+ ```html
49
+ <ul class="list-none md:list-disc md:list-outside">...</ul>
50
+ ```
51
+
52
+ ## Key Points
53
+
54
+ - `list-disc` - disc bullets (ul default)
55
+ - `list-decimal` - decimal numbers (ol default)
56
+ - `list-none` - no markers
57
+ - Custom: `list-[upper-roman]`, `list-[lower-alpha]`, `list-(--var)`
58
+ - `list-inside` - markers inside content box
59
+ - `list-outside` - markers outside content box (default)
60
+
61
+ <!--
62
+ Source references:
63
+ - https://tailwindcss.com/docs/list-style-type
64
+ - https://tailwindcss.com/docs/list-style-position
65
+ -->
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: typography-text-align
3
+ description: Controlling text alignment with left, center, right, justify, and logical properties
4
+ ---
5
+
6
+ # Text Align
7
+
8
+ Utilities for controlling the alignment of text.
9
+
10
+ ## Usage
11
+
12
+ ### Basic alignment
13
+
14
+ Use `text-left`, `text-center`, `text-right`, `text-justify`:
15
+
16
+ ```html
17
+ <p class="text-left">Left aligned</p>
18
+ <p class="text-center">Center aligned</p>
19
+ <p class="text-right">Right aligned</p>
20
+ <p class="text-justify">Justified text</p>
21
+ ```
22
+
23
+ ### Logical properties
24
+
25
+ Use `text-start` and `text-end` for RTL-aware alignment:
26
+
27
+ ```html
28
+ <div dir="ltr">
29
+ <p class="text-start">Left in LTR</p>
30
+ <p class="text-end">Right in LTR</p>
31
+ </div>
32
+ <div dir="rtl">
33
+ <p class="text-start">Right in RTL</p>
34
+ <p class="text-end">Left in RTL</p>
35
+ </div>
36
+ ```
37
+
38
+ ### Responsive alignment
39
+
40
+ ```html
41
+ <p class="text-left md:text-center lg:text-right">
42
+ Responsive alignment
43
+ </p>
44
+ ```
45
+
46
+ ## Key Points
47
+
48
+ - `text-left` - aligns to left edge
49
+ - `text-center` - centers text
50
+ - `text-right` - aligns to right edge
51
+ - `text-justify` - justifies text (spaces words evenly)
52
+ - `text-start` - aligns to start (left in LTR, right in RTL)
53
+ - `text-end` - aligns to end (right in LTR, left in RTL)
54
+ - Use logical properties (`text-start`, `text-end`) for internationalization
55
+ - Common pattern: `text-center` for headings, `text-left` for body text
56
+
57
+ <!--
58
+ Source references:
59
+ - https://tailwindcss.com/docs/text-align
60
+ -->
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: visual-background
3
+ description: Background color, gradient, image, and attachment utilities
4
+ ---
5
+
6
+ # Background
7
+
8
+ Utilities for background color, gradients, images, and attachment.
9
+
10
+ ## Usage
11
+
12
+ ### Background color
13
+
14
+ ```html
15
+ <div class="bg-white">White</div>
16
+ <div class="bg-gray-100">Light gray</div>
17
+ <div class="bg-blue-500">Blue</div>
18
+ <div class="bg-sky-500/50">50% opacity</div>
19
+ <div class="bg-[#1da1f2]">Arbitrary</div>
20
+ <div class="bg-(--my-bg)">CSS variable</div>
21
+ ```
22
+
23
+ Color palette follows theme (red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, slate, gray, zinc, neutral, stone).
24
+
25
+ ### Background image and gradient
26
+
27
+ ```html
28
+ <div class="bg-gradient-to-r from-blue-500 to-purple-600">Linear gradient</div>
29
+ <div class="bg-gradient-to-br from-indigo-500 via-purple-500 to-pink-500">Multi-stop</div>
30
+
31
+ <div class="bg-[url('/img/hero.jpg')]">Image</div>
32
+ <div class="bg-[url('/img/hero.jpg')] bg-cover bg-center">Image with size/position</div>
33
+ ```
34
+
35
+ Gradient directions: `to-t`, `to-tr`, `to-r`, `to-br`, `to-b`, `to-bl`, `to-l`, `to-tl`.
36
+
37
+ ### Background size and position
38
+
39
+ ```html
40
+ <div class="bg-auto">auto</div>
41
+ <div class="bg-cover">cover</div>
42
+ <div class="bg-contain">contain</div>
43
+
44
+ <div class="bg-center">center</div>
45
+ <div class="bg-top">top</div>
46
+ <div class="bg-bottom">bottom</div>
47
+ <div class="bg-left">left</div>
48
+ <div class="bg-right">right</div>
49
+ <div class="bg-[position:2rem_2rem]">Arbitrary</div>
50
+ ```
51
+
52
+ ### Background repeat and attachment
53
+
54
+ ```html
55
+ <div class="bg-repeat">repeat (default)</div>
56
+ <div class="bg-no-repeat">no-repeat</div>
57
+ <div class="bg-repeat-x">repeat-x</div>
58
+
59
+ <div class="bg-fixed">fixed (parallax)</div>
60
+ <div class="bg-local">local</div>
61
+ <div class="bg-scroll">scroll</div>
62
+ ```
63
+
64
+ ## Key Points
65
+
66
+ - Colors: `bg-{color}-{shade}`, opacity `/50`, arbitrary `bg-[#hex]`
67
+ - Gradients: `bg-gradient-to-{dir}`, `from-*`, `via-*`, `to-*`
68
+ - Image: `bg-[url('...')]`, `bg-cover`, `bg-center`, etc.
69
+ - Size: `bg-auto`, `bg-cover`, `bg-contain`
70
+ - Position: `bg-center`, `bg-top`, `bg-[position:...]`
71
+
72
+ <!--
73
+ Source references:
74
+ - https://tailwindcss.com/docs/background-color
75
+ - https://tailwindcss.com/docs/background-image
76
+ -->
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: visual-border
3
+ description: Border width, color, style, and border radius
4
+ ---
5
+
6
+ # Border
7
+
8
+ Utilities for border width, color, style, and radius.
9
+
10
+ ## Usage
11
+
12
+ ### Border width
13
+
14
+ ```html
15
+ <div class="border">1px all sides</div>
16
+ <div class="border-2">2px</div>
17
+ <div class="border-0">No border</div>
18
+
19
+ <div class="border-t border-r border-b border-l">Per side</div>
20
+ <div class="border-x-2">Horizontal</div>
21
+ <div class="border-y">Vertical</div>
22
+ ```
23
+
24
+ ### Border color
25
+
26
+ ```html
27
+ <div class="border border-gray-300">Gray border</div>
28
+ <div class="border-2 border-blue-500">Blue</div>
29
+ <div class="border border-red-500/50">With opacity</div>
30
+ ```
31
+
32
+ ### Border style
33
+
34
+ ```html
35
+ <div class="border border-solid">Solid (default)</div>
36
+ <div class="border border-dashed">Dashed</div>
37
+ <div class="border border-dotted">Dotted</div>
38
+ <div class="border border-double">Double</div>
39
+ <div class="border border-none">None</div>
40
+ ```
41
+
42
+ ### Border radius
43
+
44
+ ```html
45
+ <div class="rounded">Small (default)</div>
46
+ <div class="rounded-sm">2px</div>
47
+ <div class="rounded-md">6px</div>
48
+ <div class="rounded-lg">8px</div>
49
+ <div class="rounded-xl">12px</div>
50
+ <div class="rounded-2xl">16px</div>
51
+ <div class="rounded-full">Pill/circle</div>
52
+ <div class="rounded-none">0</div>
53
+
54
+ <div class="rounded-t-lg rounded-b-none">Per corner</div>
55
+ <div class="rounded-s-md rounded-e-xl">Logical (start/end)</div>
56
+ ```
57
+
58
+ ### Divide (between children)
59
+
60
+ ```html
61
+ <div class="divide-y divide-gray-200">
62
+ <div>Item 1</div>
63
+ <div>Item 2</div>
64
+ <div>Item 3</div>
65
+ </div>
66
+ <div class="divide-x divide-gray-300 flex">
67
+ <div>Col 1</div>
68
+ <div>Col 2</div>
69
+ </div>
70
+ ```
71
+
72
+ ### Ring (focus outline)
73
+
74
+ ```html
75
+ <button class="ring-2 ring-blue-500 ring-offset-2">Ring</button>
76
+ <button class="focus:ring-3 focus:ring-blue-500">Focus ring</button>
77
+ ```
78
+
79
+ ### Outline
80
+
81
+ Separate from border; used for focus states. In v4: `outline` = 1px; `outline-2`, `outline-4` for width. Use `outline-offset-2` for offset.
82
+
83
+ ```html
84
+ <button class="outline outline-offset-2 outline-sky-500">Outline</button>
85
+ <button class="focus:outline-2 focus:outline-cyan-500">Focus outline</button>
86
+ <!-- Accessibility: invisible but visible in forced-colors -->
87
+ <button class="focus:outline-hidden">Focus outline-hidden</button>
88
+ ```
89
+
90
+ v4: `outline-none` = `outline-style: none`; `outline-hidden` = invisible but shows in forced-colors mode.
91
+
92
+ ## Key Points
93
+
94
+ - Width: `border`, `border-{0,2,4,8}`, `border-{t,r,b,l,x,y}`
95
+ - Color: `border-{color}`, opacity modifier
96
+ - Radius: `rounded-{size}`, `rounded-full`, `rounded-{t,r,b,l,s,e}-*`, logical `rounded-s-*`, `rounded-e-*`
97
+ - Divide: `divide-{x,y}`, `divide-{color}` for borders between flex/grid children
98
+ - Ring: `ring`, `ring-{n}`, `ring-{color}`, `ring-offset-{n}` (v4 default ring = 1px; use `ring-3` for 3px)
99
+ - Outline: `outline`, `outline-{n}`, `outline-{color}`, `outline-offset-{n}`, `outline-hidden`, `outline-none`
100
+
101
+ <!--
102
+ Source references:
103
+ - https://tailwindcss.com/docs/border-width
104
+ - https://tailwindcss.com/docs/border-color
105
+ - https://tailwindcss.com/docs/border-radius
106
+ - https://tailwindcss.com/docs/divide-width
107
+ - https://tailwindcss.com/docs/ring-width
108
+ -->
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: visual-effects
3
+ description: Box shadow, opacity, mix-blend, and filter effects
4
+ ---
5
+
6
+ # Effects
7
+
8
+ Utilities for box shadow, opacity, mix-blend, and filters.
9
+
10
+ ## Usage
11
+
12
+ ### Box shadow
13
+
14
+ ```html
15
+ <div class="shadow-sm">Small</div>
16
+ <div class="shadow">Default</div>
17
+ <div class="shadow-md">Medium</div>
18
+ <div class="shadow-lg">Large</div>
19
+ <div class="shadow-xl">Extra large</div>
20
+ <div class="shadow-2xl">2xl</div>
21
+ <div class="shadow-none">None</div>
22
+
23
+ <div class="shadow-lg shadow-blue-500/50">Colored shadow</div>
24
+ <div class="shadow-[0_0_15px_rgba(0,0,0,0.2)]">Arbitrary</div>
25
+ ```
26
+
27
+ ### Opacity
28
+
29
+ ```html
30
+ <div class="opacity-0">Invisible</div>
31
+ <div class="opacity-50">50%</div>
32
+ <div class="opacity-100">Full</div>
33
+ ```
34
+
35
+ ### Mix blend mode
36
+
37
+ ```html
38
+ <div class="mix-blend-normal">Normal</div>
39
+ <div class="mix-blend-multiply">Multiply</div>
40
+ <div class="mix-blend-screen">Screen</div>
41
+ <div class="mix-blend-overlay">Overlay</div>
42
+ ```
43
+
44
+ ### Backdrop blur and filter
45
+
46
+ ```html
47
+ <div class="backdrop-blur-sm">Blur backdrop</div>
48
+ <div class="backdrop-blur-md">Medium blur</div>
49
+ <div class="backdrop-blur-none">No blur</div>
50
+
51
+ <div class="backdrop-opacity-50">Backdrop opacity</div>
52
+ ```
53
+
54
+ ### Filter (blur, brightness, contrast, etc.)
55
+
56
+ ```html
57
+ <div class="blur-sm">Blur</div>
58
+ <div class="brightness-90">Brightness</div>
59
+ <div class="contrast-125">Contrast</div>
60
+ <div class="grayscale">Grayscale</div>
61
+ <div class="invert">Invert</div>
62
+ <div class="sepia">Sepia</div>
63
+ <div class="blur-none">No filter</div>
64
+ ```
65
+
66
+ ### Object fit (images/video)
67
+
68
+ ```html
69
+ <img class="object-contain" /> <!-- Fit within bounds -->
70
+ <img class="object-cover" /> <!-- Cover area, may crop -->
71
+ <img class="object-fill" /> <!-- Stretch -->
72
+ <img class="object-none" /> <!-- No resize -->
73
+ <img class="object-scale-down" /> <!-- contain or none, whichever is smaller -->
74
+ <img class="object-top object-cover" /> <!-- Position -->
75
+ ```
76
+
77
+ ### Drop shadow with colors (v4.1+)
78
+
79
+ ```html
80
+ <svg class="drop-shadow-xl drop-shadow-cyan-500/50">Logo</svg>
81
+ <img class="drop-shadow-lg drop-shadow-blue-500">Image</img>
82
+ ```
83
+
84
+ Drop shadows can now take color utilities and opacity modifiers, just like box shadows.
85
+
86
+ ### Shadow opacity modifiers (v4.1+)
87
+
88
+ All shadow types support opacity modifiers:
89
+
90
+ ```html
91
+ <div class="shadow-lg/50">50% opacity box shadow</div>
92
+ <div class="drop-shadow-xl/75">75% opacity drop shadow</div>
93
+ ```
94
+
95
+ ## Key Points
96
+
97
+ - Shadow: `shadow-{size}`, `shadow-{color}/opacity`, `shadow-none`
98
+ - Shadow opacity: `shadow-lg/50` (v4.1+)
99
+ - Drop shadow colors: `drop-shadow-{color}`, `drop-shadow-{color}/{opacity}` (v4.1+)
100
+ - Opacity: `opacity-{0-100}`
101
+ - Mix blend: `mix-blend-{mode}`
102
+ - Backdrop: `backdrop-blur-*`, `backdrop-opacity-*`
103
+ - Filter: `blur-*`, `brightness-*`, `contrast-*`, `grayscale`, `invert`, `sepia`
104
+ - **v4 scale shift**: v3's `shadow` → v4's `shadow-sm`, v3's `shadow-sm` → v4's `shadow-xs`
105
+
106
+ <!--
107
+ Source references:
108
+ - https://tailwindcss.com/docs/box-shadow
109
+ - https://tailwindcss.com/docs/opacity
110
+ - https://tailwindcss.com/docs/backdrop-blur
111
+ -->
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: visual-svg
3
+ description: Styling SVG elements with fill, stroke, and stroke-width utilities
4
+ ---
5
+
6
+ # SVG Styling
7
+
8
+ Utilities for styling SVG fill and stroke. Essential when working with icon sets like Heroicons.
9
+
10
+ ## Usage
11
+
12
+ ### Fill
13
+
14
+ ```html
15
+ <!-- Theme colors -->
16
+ <svg class="fill-blue-500">...</svg>
17
+ <svg class="fill-indigo-500 hover:fill-indigo-600">...</svg>
18
+
19
+ <!-- Inherit from text color -->
20
+ <button class="text-indigo-600 hover:text-white">
21
+ <svg class="size-5 fill-current">...</svg>
22
+ Check for updates
23
+ </button>
24
+
25
+ <!-- Special values -->
26
+ <svg class="fill-none">...</svg>
27
+ <svg class="fill-inherit">...</svg>
28
+ <svg class="fill-transparent">...</svg>
29
+
30
+ <!-- Custom -->
31
+ <svg class="fill-[#243c5a]">...</svg>
32
+ <svg class="fill-(--my-fill)">...</svg>
33
+ ```
34
+
35
+ ### Stroke
36
+
37
+ ```html
38
+ <!-- Theme colors -->
39
+ <svg class="stroke-cyan-500" fill="none">...</svg>
40
+
41
+ <!-- Inherit from text -->
42
+ <button class="text-pink-600 hover:text-white">
43
+ <svg class="size-5 stroke-current" fill="none">...</svg>
44
+ Download
45
+ </button>
46
+
47
+ <!-- Special values -->
48
+ <svg class="stroke-none stroke-inherit stroke-transparent">...</svg>
49
+ ```
50
+
51
+ ### Stroke width
52
+
53
+ ```html
54
+ <svg class="stroke-1">Thin stroke</svg>
55
+ <svg class="stroke-2">Medium stroke</svg>
56
+ <svg class="stroke-[1.5]">Custom width</svg>
57
+ <svg class="stroke-(length:--my-stroke)">Custom property</svg>
58
+ ```
59
+
60
+ ### Combined
61
+
62
+ ```html
63
+ <svg class="size-6 fill-blue-500 stroke-blue-700 stroke-2" fill="none">
64
+ <!-- Outlined icon with colored stroke -->
65
+ </svg>
66
+ ```
67
+
68
+ ## Key Points
69
+
70
+ - `fill-*` / `stroke-*` - all theme colors (e.g. `fill-red-500`)
71
+ - `fill-current` / `stroke-current` - use current text color (common for icons in buttons)
72
+ - `fill-none` / `stroke-none` - no fill/stroke
73
+ - `stroke-1`, `stroke-2`, etc. - stroke width (number = px)
74
+ - Custom: `fill-[#hex]`, `stroke-(--var)`, `stroke-[1.5]`
75
+ - Use with variants: `hover:fill-blue-600`, `md:stroke-2`
76
+
77
+ <!--
78
+ Source references:
79
+ - https://tailwindcss.com/docs/fill
80
+ - https://tailwindcss.com/docs/stroke
81
+ - https://tailwindcss.com/docs/stroke-width
82
+ -->
@@ -151,15 +151,20 @@ python3 scripts/run_tests.py --apk path/to/app.apk --device emulator-5554 --outp
151
151
 
152
152
  ### Test Execution Without Emulator (Static Mode)
153
153
 
154
- If no emulator is available, Claude can:
155
- 1. Analyze source code / screenshots statically
156
- 2. Write all test scenarios
154
+ If no emulator is available (which is common — most users won't have Appium set up),
155
+ Claude can still provide significant value:
156
+ 1. Analyze source code / screenshots / APK statically
157
+ 2. Generate use cases and write all test scenarios
157
158
  3. Mark execution status as `MANUAL_REQUIRED`
158
- 4. Generate a report with all test cases ready to be run manually
159
+ 4. Generate a comprehensive report with all test cases ready to be run manually
160
+ 5. Provide step-by-step manual testing instructions the user can follow
161
+
162
+ This is the **most common execution path** — don't treat it as a fallback.
163
+ Make the static report just as polished and detailed as the automated one.
159
164
 
160
165
  Use `--static` flag:
161
166
  ```bash
162
- python3 scripts/run_tests.py --static --output results/
167
+ python3 scripts/run_tests.py --static --tests tests.json --output results/
163
168
  ```
164
169
 
165
170
  ---
@@ -208,5 +213,5 @@ Read `references/report-template.md` for report structure details.
208
213
  - **Locators**: Prefer `accessibility id` > `resource-id` > `xpath`. Never use index-based xpath.
209
214
  - **Waits**: Always use explicit waits (`WebDriverWait`), never `time.sleep`.
210
215
  - **Screenshots**: Capture on every assertion failure automatically.
211
- - **Crash detection**: After every interaction, check for crash dialogs (`scripts/crash_detector.py`).
216
+ - **Crash detection**: After every interaction, check for crash dialogs (the `check_for_crash()` function in `scripts/run_tests.py` handles this automatically).
212
217
  - **Language**: Generate use cases and reports in the language the user is using.
@@ -50,10 +50,21 @@ def analyze_apk(apk_path: str) -> dict:
50
50
 
51
51
  # String resources (sample)
52
52
  try:
53
- for lang, strings in apk.get_strings_analysis().items():
54
- sample = list(strings.keys())[:30]
55
- result["strings_sample"] = sample
56
- break
53
+ # Try modern androguard API first, fall back to legacy
54
+ try:
55
+ from androguard.core.axml import AXMLPrinter
56
+ res_parser = apk.get_android_resources()
57
+ if res_parser:
58
+ strings = res_parser.get_resolved_strings()
59
+ if strings:
60
+ for lang_strings in strings.values():
61
+ result["strings_sample"] = list(lang_strings.values())[:30]
62
+ break
63
+ except (ImportError, AttributeError):
64
+ # Fallback: extract string-like values from manifest
65
+ manifest_xml = apk.get_android_manifest_xml()
66
+ if manifest_xml is not None:
67
+ result["strings_sample"] = []
57
68
  except Exception:
58
69
  pass
59
70
 
@@ -44,11 +44,12 @@ def check_appium_python():
44
44
 
45
45
  def check_python_deps():
46
46
  missing = []
47
- for pkg in ["pytest", "jinja2", "PIL"]:
47
+ pkg_map = {"pytest": "pytest", "jinja2": "jinja2", "PIL": "pillow"}
48
+ for import_name, install_name in pkg_map.items():
48
49
  try:
49
- __import__(pkg)
50
+ __import__(import_name)
50
51
  except ImportError:
51
- missing.append(pkg)
52
+ missing.append(install_name)
52
53
  if missing:
53
54
  raise RuntimeError(f"Missing packages: {missing}. Run: pip install {' '.join(missing)} --break-system-packages")
54
55
  return "All Python deps OK"
@@ -66,12 +67,11 @@ def check_avd():
66
67
  def main():
67
68
  checks = [
68
69
  ("ADB", check_adb),
69
- ("Android Emulator Binary", check_emulator),
70
+ ("Android Virtual Devices", check_avd),
70
71
  ("Connected Device/Emulator", check_emulator),
71
72
  ("Appium Server", check_appium_server),
72
73
  ("Appium Python Client", check_appium_python),
73
74
  ("Python Dependencies", check_python_deps),
74
- ("Android Virtual Devices", check_avd),
75
75
  ]
76
76
 
77
77
  print("\n🔍 MOBILE TESTING ENVIRONMENT CHECK")
@@ -81,7 +81,7 @@ def safe_find(driver, by, value, timeout=10):
81
81
  )
82
82
 
83
83
 
84
- def check_for_crash(driver) -> str | None:
84
+ def check_for_crash(driver):
85
85
  """Returns crash message if a crash dialog is detected, else None."""
86
86
  try:
87
87
  # Look for common crash dialog text