@biggora/claude-plugins 1.1.1 → 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 (104) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/README.md +24 -17
  3. package/package.json +1 -1
  4. package/registry/registry.json +319 -244
  5. package/specs/coding.md +24 -0
  6. package/specs/pod.md +2 -0
  7. package/src/skills/captcha/README.md +221 -0
  8. package/src/skills/captcha/SKILL.md +355 -0
  9. package/src/skills/captcha/references/captcha-types.md +254 -0
  10. package/src/skills/captcha/references/services.md +172 -0
  11. package/src/skills/captcha/references/stealth.md +238 -0
  12. package/src/skills/captcha/scripts/solve_captcha.py +323 -0
  13. package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
  14. package/src/skills/codex-cli/SKILL.md +21 -11
  15. package/src/skills/gemini-cli/SKILL.md +27 -13
  16. package/src/skills/gemini-cli/references/commands.md +21 -14
  17. package/src/skills/gemini-cli/references/configuration.md +23 -18
  18. package/src/skills/gemini-cli/references/headless-and-scripting.md +7 -17
  19. package/src/skills/gemini-cli/references/mcp-and-extensions.md +12 -6
  20. package/src/skills/google-merchant-api/SKILL.md +581 -0
  21. package/src/skills/google-merchant-api/references/accounts.md +247 -0
  22. package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
  23. package/src/skills/google-merchant-api/references/datasources.md +233 -0
  24. package/src/skills/google-merchant-api/references/inventories.md +201 -0
  25. package/src/skills/google-merchant-api/references/migration.md +267 -0
  26. package/src/skills/google-merchant-api/references/products.md +316 -0
  27. package/src/skills/google-merchant-api/references/promotions.md +201 -0
  28. package/src/skills/google-merchant-api/references/reports.md +240 -0
  29. package/src/skills/lv-aggregators-api/SKILL.md +113 -0
  30. package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
  31. package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
  32. package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
  33. package/src/skills/notebook-lm/SKILL.md +1 -1
  34. package/src/skills/screen-recording/SKILL.md +243 -213
  35. package/src/skills/screen-recording/references/design-patterns.md +4 -2
  36. package/src/skills/screen-recording/references/ffmpeg-recording.md +473 -0
  37. package/src/skills/screen-recording/references/{approach1-programmatic.md → programmatic-generation.md} +45 -22
  38. package/src/skills/screen-recording/references/python-fallback.md +222 -0
  39. package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
  40. package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
  41. package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
  42. package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
  43. package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
  44. package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
  45. package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
  46. package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
  47. package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
  48. package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
  49. package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
  50. package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
  51. package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
  52. package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
  53. package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
  54. package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
  55. package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
  56. package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
  57. package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
  58. package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
  59. package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
  60. package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
  61. package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
  62. package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
  63. package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
  64. package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
  65. package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
  66. package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
  67. package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
  68. package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
  69. package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
  70. package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
  71. package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
  72. package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
  73. package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
  74. package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
  75. package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
  76. package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
  77. package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
  78. package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
  79. package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
  80. package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
  81. package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
  82. package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
  83. package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
  84. package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
  85. package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
  86. package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
  87. package/src/skills/test-mobile-app/SKILL.md +11 -6
  88. package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
  89. package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
  90. package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
  91. package/src/skills/test-web-ui/SKILL.md +264 -84
  92. package/src/skills/test-web-ui/scripts/discover.py +25 -12
  93. package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
  94. package/src/skills/tm-search/SKILL.md +242 -106
  95. package/src/skills/tm-search/references/scraping-fallback.md +60 -95
  96. package/src/skills/tm-search/scripts/tm_search.py +453 -375
  97. package/src/skills/vite-best-practices/SKILL.md +115 -0
  98. package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
  99. package/src/skills/vite-best-practices/references/core-config.md +231 -0
  100. package/src/skills/vite-best-practices/references/core-features.md +222 -0
  101. package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
  102. package/src/skills/vite-best-practices/references/environment-api.md +108 -0
  103. package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
  104. package/src/skills/screen-recording/references/approach2-xvfb.md +0 -232
@@ -0,0 +1,240 @@
1
+ # Reports Sub-API Reference
2
+
3
+ Base: `https://merchantapi.googleapis.com/reports/v1`
4
+
5
+ Query performance data, competitive insights, and market benchmarks using a SQL-like language.
6
+
7
+ ## Endpoint
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `POST` | `/accounts/{account}/reports:search` | Execute a report query |
12
+
13
+ ## Query Language
14
+
15
+ Reports use Merchant Center Query Language (MCQL):
16
+
17
+ ```sql
18
+ SELECT
19
+ field1,
20
+ field2,
21
+ metric1,
22
+ metric2
23
+ FROM table_name
24
+ WHERE condition1 AND condition2
25
+ ORDER BY metric1 DESC
26
+ LIMIT 100
27
+ ```
28
+
29
+ ## Available Tables
30
+
31
+ ### Performance Tables
32
+
33
+ | Table | Description |
34
+ |-------|-------------|
35
+ | `product_performance_view` | Product-level clicks, impressions, CTR, conversions |
36
+ | `non_product_performance_view` | Website traffic analytics (non-product pages) |
37
+
38
+ ### Competitive Tables
39
+
40
+ | Table | Description |
41
+ |-------|-------------|
42
+ | `price_competitiveness_product_view` | Your prices vs. benchmark prices |
43
+ | `price_insights_product_view` | Pricing optimization suggestions |
44
+ | `competitive_visibility_competitor_view` | Market share analysis |
45
+ | `competitive_visibility_benchmark_view` | Category benchmarks |
46
+ | `competitive_visibility_top_merchant_view` | Top merchants in category |
47
+
48
+ ### Best Sellers Tables
49
+
50
+ | Table | Description |
51
+ |-------|-------------|
52
+ | `best_sellers_product_cluster_view` | Top-selling product clusters |
53
+ | `best_sellers_brand_view` | Top-selling brands |
54
+
55
+ ### Product Status Tables
56
+
57
+ | Table | Description |
58
+ |-------|-------------|
59
+ | `product_view` | Product data and status information |
60
+
61
+ ## Common Metrics
62
+
63
+ | Metric | Description |
64
+ |--------|-------------|
65
+ | `metrics.clicks` | Total clicks |
66
+ | `metrics.impressions` | Total impressions |
67
+ | `metrics.ctr` | Click-through rate |
68
+ | `metrics.conversions` | Total conversions |
69
+ | `metrics.conversionValue` | Total conversion value |
70
+ | `metrics.orders` | Total orders |
71
+
72
+ ## Common Segments
73
+
74
+ | Segment | Description |
75
+ |---------|-------------|
76
+ | `segments.date` | Date (YYYY-MM-DD) |
77
+ | `segments.offerId` | Product offer ID |
78
+ | `segments.title` | Product title |
79
+ | `segments.brand` | Product brand |
80
+ | `segments.categoryL1` - `categoryL5` | Category levels |
81
+ | `segments.productTypeL1` - `productTypeL5` | Product type levels |
82
+ | `segments.customLabel0` - `customLabel4` | Custom labels |
83
+ | `segments.program` | Program (SHOPPING_ADS, FREE_LISTINGS, etc.) |
84
+
85
+ ## Query Examples
86
+
87
+ ### Product Performance by Date
88
+
89
+ ```json
90
+ {
91
+ "query": "SELECT segments.date, segments.offerId, segments.title, metrics.clicks, metrics.impressions, metrics.ctr FROM product_performance_view WHERE segments.date BETWEEN '2024-01-01' AND '2024-01-31' ORDER BY metrics.clicks DESC LIMIT 50"
92
+ }
93
+ ```
94
+
95
+ ### Top Products by Conversions
96
+
97
+ ```json
98
+ {
99
+ "query": "SELECT segments.offerId, segments.title, segments.brand, metrics.conversions, metrics.conversionValue FROM product_performance_view WHERE segments.date BETWEEN '2024-01-01' AND '2024-03-31' AND segments.program = 'SHOPPING_ADS' ORDER BY metrics.conversions DESC LIMIT 20"
100
+ }
101
+ ```
102
+
103
+ ### Price Competitiveness
104
+
105
+ ```json
106
+ {
107
+ "query": "SELECT segments.offerId, segments.title, metrics.benchmarkPrice, metrics.price FROM price_competitiveness_product_view WHERE segments.date = '2024-01-15' ORDER BY segments.offerId"
108
+ }
109
+ ```
110
+
111
+ ### Brand Performance
112
+
113
+ ```json
114
+ {
115
+ "query": "SELECT segments.brand, metrics.clicks, metrics.impressions, metrics.ctr FROM product_performance_view WHERE segments.date BETWEEN '2024-01-01' AND '2024-01-31' ORDER BY metrics.clicks DESC LIMIT 10"
116
+ }
117
+ ```
118
+
119
+ ## Response Format
120
+
121
+ ```json
122
+ {
123
+ "results": [
124
+ {
125
+ "productPerformanceView": {
126
+ "date": { "year": 2024, "month": 1, "day": 15 },
127
+ "offerId": "SKU-001",
128
+ "title": "Premium Headphones",
129
+ "clicks": "142",
130
+ "impressions": "5230",
131
+ "ctr": 0.0272
132
+ }
133
+ }
134
+ ],
135
+ "nextPageToken": "abc123"
136
+ }
137
+ ```
138
+
139
+ ## Pagination
140
+
141
+ Reports support pagination via `pageSize` and `pageToken` in the request body:
142
+
143
+ ```json
144
+ {
145
+ "query": "SELECT ... FROM ...",
146
+ "pageSize": 1000,
147
+ "pageToken": "abc123"
148
+ }
149
+ ```
150
+
151
+ Default page size varies by table. Max is typically 1000 rows per page.
152
+
153
+ ## Code Example
154
+
155
+ ```javascript
156
+ async function getProductPerformance(merchantId, token, startDate, endDate) {
157
+ const results = [];
158
+ let pageToken = '';
159
+
160
+ do {
161
+ const body = {
162
+ query: `
163
+ SELECT
164
+ segments.offerId,
165
+ segments.title,
166
+ metrics.clicks,
167
+ metrics.impressions,
168
+ metrics.ctr,
169
+ metrics.conversions
170
+ FROM product_performance_view
171
+ WHERE segments.date BETWEEN '${startDate}' AND '${endDate}'
172
+ ORDER BY metrics.clicks DESC
173
+ `,
174
+ pageSize: 1000,
175
+ };
176
+ if (pageToken) body.pageToken = pageToken;
177
+
178
+ const response = await fetch(
179
+ `https://merchantapi.googleapis.com/reports/v1/accounts/${merchantId}/reports:search`,
180
+ {
181
+ method: 'POST',
182
+ headers: {
183
+ 'Authorization': `Bearer ${token}`,
184
+ 'Content-Type': 'application/json',
185
+ },
186
+ body: JSON.stringify(body),
187
+ }
188
+ );
189
+
190
+ const data = await response.json();
191
+ results.push(...(data.results || []));
192
+ pageToken = data.nextPageToken || '';
193
+ } while (pageToken);
194
+
195
+ return results;
196
+ }
197
+ ```
198
+
199
+ ```python
200
+ import requests
201
+
202
+ def get_product_performance(merchant_id, token, start_date, end_date):
203
+ results = []
204
+ page_token = ''
205
+
206
+ while True:
207
+ body = {
208
+ 'query': f"""
209
+ SELECT
210
+ segments.offerId,
211
+ segments.title,
212
+ metrics.clicks,
213
+ metrics.impressions,
214
+ metrics.ctr,
215
+ metrics.conversions
216
+ FROM product_performance_view
217
+ WHERE segments.date BETWEEN '{start_date}' AND '{end_date}'
218
+ ORDER BY metrics.clicks DESC
219
+ """,
220
+ 'pageSize': 1000,
221
+ }
222
+ if page_token:
223
+ body['pageToken'] = page_token
224
+
225
+ response = requests.post(
226
+ f'https://merchantapi.googleapis.com/reports/v1/accounts/{merchant_id}/reports:search',
227
+ headers={
228
+ 'Authorization': f'Bearer {token}',
229
+ 'Content-Type': 'application/json',
230
+ },
231
+ json=body,
232
+ )
233
+ data = response.json()
234
+ results.extend(data.get('results', []))
235
+ page_token = data.get('nextPageToken', '')
236
+ if not page_token:
237
+ break
238
+
239
+ return results
240
+ ```
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: lv-aggregators-api
3
+ description: >
4
+ Use this skill whenever the user wants to work with Latvian price comparison / aggregator
5
+ platforms, specifically Salidzini.lv or KurPirkt.lv. Triggers include: creating or generating
6
+ XML product feeds, integrating an e-commerce store with Latvian aggregators, exporting product
7
+ catalogs for salidzini or kurpirkt, validating XML feed format, debugging feed errors,
8
+ setting up product data export for Latvian price comparison sites, or any mention of
9
+ "salidzini", "kurpirkt", "cenu salīdzināšana", "preču eksports", "XML feed Latvia",
10
+ "Latvian marketplace integration", or "price aggregator feed". Also use when the user mentions
11
+ e-commerce product feeds for the Latvian market, product data export in LV context, or wants
12
+ to list products on Latvian comparison shopping engines, even without naming a specific platform.
13
+ ---
14
+
15
+ # Latvian Price Aggregator APIs
16
+
17
+ Generate and manage XML product feeds for Latvia's two major price comparison platforms: **Salidzini.lv** and **KurPirkt.lv**.
18
+
19
+ ## Platform Overview
20
+
21
+ | Aspect | Salidzini.lv | KurPirkt.lv |
22
+ |--------|-------------|-------------|
23
+ | Daily visitors | ~47,000 | 30,000-45,000 |
24
+ | Monthly visitors | ~1.3 million | N/A |
25
+ | Listed shops | N/A | 1,200+ |
26
+ | Feed format | XML (UTF-8) | XML (UTF-8) |
27
+ | Feed update | At least daily | Regular (daily recommended) |
28
+ | Contact | Web form on shops_info.php | kurpirkt@kurpirkt.lv / +371 26533032 |
29
+ | Registration | Online form | Email application |
30
+
31
+ Both platforms use similar XML feed formats with minor differences in field names and requirements. If a shop targets both platforms, a single feed generator can produce both formats with minimal adjustments.
32
+
33
+ ## Quick Start
34
+
35
+ To integrate with either platform:
36
+
37
+ 1. **Generate an XML feed** from your product database (see format details in reference files)
38
+ 2. **Host the feed** at a public URL (e.g., `https://yourshop.lv/export/salidzini.xml`)
39
+ 3. **Auto-update** the feed at least once daily via a scheduled script/cron job
40
+ 4. **Place the aggregator's banner** on your shop's homepage
41
+ 5. **Submit your application** through the platform's registration process
42
+ 6. **Validate** your feed using the platform's validator (Salidzini provides one at their shops_info page)
43
+
44
+ ## Feed Format Comparison
45
+
46
+ Both platforms use `<root>` as the root element and `<item>` for each product. The key differences:
47
+
48
+ | Field | Salidzini.lv | KurPirkt.lv | Notes |
49
+ |-------|-------------|-------------|-------|
50
+ | Product name | `<name>` (required) | `<name>` (required) | Max 200 chars on Salidzini |
51
+ | Product URL | `<link>` (required) | `<link>` (required) | Max 500 chars, full URL |
52
+ | Price | `<price>` (required) | `<price>` (required) | EUR, dot decimal separator |
53
+ | Image | `<image>` | `<image>` | White bg, no logos/watermarks |
54
+ | Brand | `<brand>` | `<manufacturer>` | **Different tag name** |
55
+ | Category | `<category_full>` | `<category_full>` | Hierarchy with `>>` (Salidzini) or `>` (KurPirkt) |
56
+ | Category link | `<category_link>` | `<category_link>` | Optional on KurPirkt |
57
+ | Stock | `<in_stock>` | `<in_stock>` | Numeric quantity |
58
+ | Used/refurbished | `<used>` | `<used>` | Value `1` for used items |
59
+ | Delivery cost | `<delivery_latvija>` | `<delivery_cost_riga>` | **Different tag name & scope** |
60
+ | Delivery days | `<delivery_days_latvija>` | N/A | Salidzini only |
61
+ | In-store pickup days | `<delivery_days_shop>` | N/A | Salidzini only |
62
+ | Service fee | `<service_fee>` | N/A | Salidzini only |
63
+ | Model | `<model>` | N/A | Salidzini only |
64
+ | Color | `<color>` | N/A | Salidzini only |
65
+ | MPN | `<mpn>` | N/A | Salidzini only |
66
+ | EAN/GTIN | `<ean>` | N/A | Salidzini only |
67
+ | Adult content | `<adult>` | N/A | `yes`/`no`, required for adult shops |
68
+ | OTC medicine | `<over_the_counter_medicine>` | N/A | Salidzini only, value `1` |
69
+
70
+ ## Reference Files
71
+
72
+ For detailed per-platform documentation, field specifications, code examples, and validation rules:
73
+
74
+ - **`references/salidzini.md`** - Complete Salidzini.lv feed specification, all fields, rules, and examples
75
+ - **`references/kurpirkt.md`** - Complete KurPirkt.lv feed specification and registration process
76
+ - **`references/integration-guide.md`** - Code examples for generating feeds in Node.js, PHP, Python; dual-feed strategy; validation; scheduling
77
+
78
+ Read the relevant reference file when you need detailed field-level documentation or implementation code.
79
+
80
+ ## Common Rules (Both Platforms)
81
+
82
+ ### Pricing
83
+ - All prices in **EUR with VAT** included
84
+ - Use **dot** (`.`) as decimal separator
85
+ - Price must be the final price a consumer pays (excluding delivery)
86
+ - Include any additional fees in the price
87
+
88
+ ### Product Names
89
+ - Include brand/manufacturer, model, and product code
90
+ - Keep names concise and descriptive
91
+ - No promotional text ("Free shipping", "Best price", "Sale", etc.)
92
+ - No vague phrases ("Best choice", "Highest quality", "Buy now")
93
+
94
+ ### Images
95
+ - Must show the actual product appearance
96
+ - **White background**, no frames
97
+ - No shop logos, prices, watermarks, or promotional overlays
98
+ - No text like "In stock", "Gift", "0% credit"
99
+ - If no product image available, leave the `<image>` tag empty
100
+ - Salidzini: min 500x500px recommended, max 16MB
101
+
102
+ ### Prohibited Content
103
+ - Alcohol and tobacco products (Salidzini)
104
+ - Products with delivery times exceeding 30 days (Salidzini)
105
+ - Duplicate product entries
106
+ - Products not available for purchase/delivery in Latvia
107
+
108
+ ### Feed Technical Requirements
109
+ - **UTF-8 encoding** (declared in XML header)
110
+ - Feed response time must be under **5 minutes** (Salidzini)
111
+ - Host at a stable public URL on your registered domain
112
+ - Auto-generate and update at least daily
113
+ - CDATA sections supported: `<name><![CDATA[Product Name]]></name>`