opencode-skills-collection 4.0.54 → 4.0.56

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 (71) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +1 -1
  2. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +10 -1
  3. package/bundled-skills/backend-security-coder/resources/implementation-playbook.md +23 -0
  4. package/bundled-skills/business-analyst/resources/implementation-playbook.md +23 -0
  5. package/bundled-skills/devops-troubleshooter/resources/implementation-playbook.md +23 -0
  6. package/bundled-skills/distributed-tracing/SKILL.md +22 -435
  7. package/bundled-skills/distributed-tracing/references/instrumentation.md +13 -0
  8. package/bundled-skills/distributed-tracing/references/jaeger-setup.md +13 -0
  9. package/bundled-skills/distributed-tracing/resources/implementation-playbook.md +23 -0
  10. package/bundled-skills/django-pro/resources/implementation-playbook.md +23 -0
  11. package/bundled-skills/embedding-strategies/SKILL.md +40 -64
  12. package/bundled-skills/embedding-strategies/resources/implementation-playbook.md +23 -0
  13. package/bundled-skills/fastapi-pro/resources/implementation-playbook.md +23 -0
  14. package/bundled-skills/find-complementary-founders/scripts/assess_profile.py +7 -1
  15. package/bundled-skills/frontend-security-coder/SKILL.md +5 -5
  16. package/bundled-skills/frontend-security-coder/resources/implementation-playbook.md +23 -0
  17. package/bundled-skills/github-actions-templates/SKILL.md +34 -314
  18. package/bundled-skills/github-actions-templates/references/common-workflows.md +13 -0
  19. package/bundled-skills/github-actions-templates/resources/implementation-playbook.md +23 -0
  20. package/bundled-skills/google-docs-automation/SKILL.md +19 -69
  21. package/bundled-skills/google-sheets-automation/SKILL.md +20 -128
  22. package/bundled-skills/google-slides-automation/SKILL.md +19 -128
  23. package/bundled-skills/grafana-dashboards/SKILL.md +6 -6
  24. package/bundled-skills/grafana-dashboards/references/dashboard-design.md +13 -0
  25. package/bundled-skills/grafana-dashboards/resources/implementation-playbook.md +23 -0
  26. package/bundled-skills/incident-responder/resources/implementation-playbook.md +23 -0
  27. package/bundled-skills/instagram/scripts/config.py +33 -8
  28. package/bundled-skills/ios-developer/resources/implementation-playbook.md +23 -0
  29. package/bundled-skills/junta-leiloeiros/scripts/.snyk +5 -0
  30. package/bundled-skills/junta-leiloeiros/scripts/requirements.txt +2 -0
  31. package/bundled-skills/kpi-dashboard-design/SKILL.md +7 -67
  32. package/bundled-skills/kpi-dashboard-design/resources/implementation-playbook.md +23 -0
  33. package/bundled-skills/kpi-dashboard-design/resources/metric-queries.sql +30 -0
  34. package/bundled-skills/lint-and-validate/SKILL.md +17 -45
  35. package/bundled-skills/lint-and-validate/scripts/lint_runner.py +17 -8
  36. package/bundled-skills/lint-and-validate/scripts/type_coverage.py +77 -167
  37. package/bundled-skills/mobile-developer/resources/implementation-playbook.md +23 -0
  38. package/bundled-skills/multi-platform-apps-multi-platform/resources/implementation-playbook.md +23 -0
  39. package/bundled-skills/notebooklm/scripts/config.py +33 -11
  40. package/bundled-skills/observability-and-instrumentation/SKILL.md +4 -1
  41. package/bundled-skills/observability-and-instrumentation/references/observability-checklist.md +13 -0
  42. package/bundled-skills/pci-compliance/SKILL.md +23 -469
  43. package/bundled-skills/pci-compliance/resources/implementation-playbook.md +23 -0
  44. package/bundled-skills/postmortem-writing/SKILL.md +1 -1
  45. package/bundled-skills/postmortem-writing/resources/implementation-playbook.md +23 -0
  46. package/bundled-skills/pydantic-models-py/SKILL.md +1 -3
  47. package/bundled-skills/secrets-management/SKILL.md +24 -349
  48. package/bundled-skills/secrets-management/references/github-secrets.md +13 -0
  49. package/bundled-skills/secrets-management/references/vault-setup.md +13 -0
  50. package/bundled-skills/security-and-hardening/SKILL.md +8 -6
  51. package/bundled-skills/security-and-hardening/references/security-checklist.md +13 -0
  52. package/bundled-skills/seo-content-planner/resources/implementation-playbook.md +23 -0
  53. package/bundled-skills/seo-content-writer/SKILL.md +2 -2
  54. package/bundled-skills/seo-content-writer/resources/implementation-playbook.md +23 -0
  55. package/bundled-skills/shopify-development/scripts/.snyk +3 -0
  56. package/bundled-skills/slack-gif-creator/.snyk +5 -0
  57. package/bundled-skills/slack-gif-creator/requirements.txt +2 -2
  58. package/bundled-skills/slo-implementation/SKILL.md +24 -9
  59. package/bundled-skills/slo-implementation/references/error-budget.md +13 -0
  60. package/bundled-skills/slo-implementation/references/slo-definitions.md +13 -0
  61. package/bundled-skills/slo-implementation/resources/implementation-playbook.md +23 -0
  62. package/bundled-skills/sql-optimization-patterns/SKILL.md +10 -6
  63. package/bundled-skills/sql-optimization-patterns/resources/implementation-playbook.md +52 -56
  64. package/bundled-skills/telegram/assets/boilerplate/nodejs/package-lock.json +1888 -0
  65. package/bundled-skills/telegram/assets/boilerplate/nodejs/package.json +3 -0
  66. package/bundled-skills/vector-database-engineer/resources/implementation-playbook.md +23 -0
  67. package/bundled-skills/videodb/scripts/ws_listener.py +8 -1
  68. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package-lock.json +1881 -0
  69. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package.json +3 -0
  70. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/python/.snyk +3 -0
  71. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ # SLO implementation playbook
2
+
3
+ ## Inputs
4
+
5
+ User journey, eligible event population, success threshold, observation window and responsible service owner.
6
+
7
+ ## Procedure
8
+
9
+ 1. Define good and total events together, including timeout and no-traffic behavior. Choose a target from user needs and observed baseline.
10
+ 2. Compute bad fraction, budget and burn rate from the same population. Create every recording rule referenced by alerts and check labels align.
11
+ 3. Test healthy, exhausted, missing-data and zero-traffic cases with known counts. Review paging thresholds, runbook and recovery behavior before enabling notifications.
12
+
13
+ ## Worked example
14
+
15
+ For 100,000 eligible requests at a 99.9% target, the budget is 100 bad requests. Fifty observed failures consume half the budget.
16
+
17
+ ## Verification and handoff
18
+
19
+ Report the actual files or configuration changed, checks performed, observed results and any untested environment. Keep the original inputs and evidence sufficient to reproduce the conclusion.
20
+
21
+ ## Limitations
22
+
23
+ Request-based budgets cannot be converted directly into downtime minutes under variable traffic. Example thresholds are not service commitments.
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: sql-optimization-patterns
3
- description: "Transform slow database queries into lightning-fast operations through systematic optimization, proper indexing, and query plan analysis."
4
- risk: safe
3
+ description: "Diagnose slow SQL with query plans, preserve query results, and verify indexing or query changes against representative data."
4
+ risk: critical
5
5
  source: community
6
6
  date_added: "2026-02-27"
7
7
  ---
8
8
 
9
9
  # SQL Optimization Patterns
10
10
 
11
- Transform slow database queries into lightning-fast operations through systematic optimization, proper indexing, and query plan analysis.
11
+ Diagnose slow SQL with query plans, preserve query results, and verify indexing or query changes against representative data.
12
12
 
13
13
  ## Use this skill when
14
14
 
@@ -28,9 +28,9 @@ Transform slow database queries into lightning-fast operations through systemati
28
28
 
29
29
  ## Instructions
30
30
 
31
- - Clarify goals, constraints, and required inputs.
32
- - Apply relevant best practices and validate outcomes.
33
- - Provide actionable steps and verification.
31
+ - Confirm database engine/version, query parameters, expected rows, data distribution and the permitted environment. Start read-only; obtain authorization before DDL, data changes, configuration changes or maintenance.
32
+ - Compare result sets before comparing performance. EXPLAIN ANALYZE executes the statement: use approved representative data, account for functions and triggers, and do not assume a transaction rollback undoes every side effect.
33
+ - Record the observed plan, timing conditions and correctness checks. Indexes and query rewrites are hypotheses, not universal speed improvements.
34
34
  - If detailed examples are required, open `resources/implementation-playbook.md`.
35
35
 
36
36
  ## Resources
@@ -41,3 +41,7 @@ Transform slow database queries into lightning-fast operations through systemati
41
41
  - Use this skill only when the task clearly matches the scope described above.
42
42
  - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
43
43
  - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
44
+
45
+ ## Worked example
46
+
47
+ The playbook includes an executable SQLite batch-loading example with bound values and an empty-input case. The repository test exercises it alongside pagination ties and aggregation equivalence. SQLite correctness checks do not establish PostgreSQL performance or production safety.
@@ -4,7 +4,7 @@ This file contains detailed patterns, checklists, and code samples referenced by
4
4
 
5
5
  # SQL Optimization Patterns
6
6
 
7
- Transform slow database queries into lightning-fast operations through systematic optimization, proper indexing, and query plan analysis.
7
+ Preserve the query result before assessing performance. PostgreSQL-specific examples target PostgreSQL 18 unless marked otherwise; use an authorized test database with matching tables. DDL, configuration and maintenance examples require explicit authorization. EXPLAIN ANALYZE executes the statement, including possible function side effects.
8
8
 
9
9
  ## Do not use this skill when
10
10
 
@@ -53,9 +53,9 @@ WHERE u.created_at > NOW() - INTERVAL '30 days';
53
53
  ```
54
54
 
55
55
  **Key Metrics to Watch:**
56
- - **Seq Scan**: Full table scan (usually slow for large tables)
57
- - **Index Scan**: Using index (good)
58
- - **Index Only Scan**: Using index without touching table (best)
56
+ - **Seq Scan**: May be appropriate for small tables or queries returning much of a table
57
+ - **Index Scan**: Assess selectivity and heap reads, not just the node name
58
+ - **Index Only Scan**: Check heap fetches and visibility; not automatically fastest
59
59
  - **Nested Loop**: Join method (okay for small datasets)
60
60
  - **Hash Join**: Join method (good for larger datasets)
61
61
  - **Merge Join**: Join method (good for sorted data)
@@ -127,18 +127,18 @@ SELECT * FROM users WHERE email = 'user@example.com';
127
127
 
128
128
  **Optimize JOINs:**
129
129
  ```sql
130
- -- Bad: Cartesian product then filter
130
+ -- Equivalent inner-join spelling; the optimizer may produce the same plan
131
131
  SELECT u.name, o.total
132
132
  FROM users u, orders o
133
133
  WHERE u.id = o.user_id AND u.created_at > '2024-01-01';
134
134
 
135
- -- Good: Filter before join
135
+ -- Explicit JOIN improves readability, not necessarily execution
136
136
  SELECT u.name, o.total
137
137
  FROM users u
138
138
  JOIN orders o ON u.id = o.user_id
139
139
  WHERE u.created_at > '2024-01-01';
140
140
 
141
- -- Better: Filter both tables
141
+ -- Equivalent subquery form; only users are filtered here
142
142
  SELECT u.name, o.total
143
143
  FROM (SELECT * FROM users WHERE created_at > '2024-01-01') u
144
144
  JOIN orders o ON u.id = o.user_id;
@@ -172,29 +172,25 @@ SELECT * FROM orders
172
172
  WHERE user_id IN (1, 2, 3, 4, 5);
173
173
  ```
174
174
 
175
+ **Executable SQLite batch loading** (an existing connection and table are required):
176
+
175
177
  ```python
176
- # Good: Single query with JOIN or batch load
177
- # Using JOIN
178
- results = db.query("""
179
- SELECT u.id, u.name, o.id as order_id, o.total
180
- FROM users u
181
- LEFT JOIN orders o ON u.id = o.user_id
182
- WHERE u.id IN (1, 2, 3, 4, 5)
183
- """)
184
-
185
- # Or batch load
186
- users = db.query("SELECT * FROM users LIMIT 10")
187
- user_ids = [u.id for u in users]
188
- orders = db.query(
189
- "SELECT * FROM orders WHERE user_id IN (?)",
190
- user_ids
191
- )
192
- # Group orders by user_id
193
- orders_by_user = {}
194
- for order in orders:
195
- orders_by_user.setdefault(order.user_id, []).append(order)
178
+ # batch-loading-example
179
+
180
+ def load_orders(connection, user_ids):
181
+ if not user_ids:
182
+ return []
183
+ if len(user_ids) > 500:
184
+ raise ValueError("Batch limit is 500 IDs; split larger inputs")
185
+ placeholders = ",".join("?" for _ in user_ids)
186
+ return connection.execute(
187
+ f"SELECT id, user_id, total FROM orders WHERE user_id IN ({placeholders}) ORDER BY id",
188
+ tuple(user_ids),
189
+ ).fetchall()
196
190
  ```
197
191
 
192
+ Values are bound, never interpolated. A single `IN (?)` parameter does not expand a Python list. Other drivers use different placeholders. Preserve parents with no orders when reconstructing parent/child results; a JOIN duplicates parent rows when multiple children match.
193
+
198
194
  ### Pattern 2: Optimize Pagination
199
195
 
200
196
  **Bad: OFFSET on Large Tables**
@@ -207,13 +203,13 @@ LIMIT 20 OFFSET 100000; -- Very slow!
207
203
 
208
204
  **Good: Cursor-Based Pagination**
209
205
  ```sql
210
- -- Much faster: Use cursor (last seen ID)
206
+ -- Single-column cursor is valid only when created_at is unique and non-null
211
207
  SELECT * FROM users
212
208
  WHERE created_at < '2024-01-15 10:30:00' -- Last cursor
213
209
  ORDER BY created_at DESC
214
210
  LIMIT 20;
215
211
 
216
- -- With composite sorting
212
+ -- For timestamp ties, use both non-null created_at and unique id from the last row
217
213
  SELECT * FROM users
218
214
  WHERE (created_at, id) < ('2024-01-15 10:30:00', 12345)
219
215
  ORDER BY created_at DESC, id DESC
@@ -230,10 +226,10 @@ CREATE INDEX idx_users_cursor ON users(created_at DESC, id DESC);
230
226
  -- Bad: Counts all rows
231
227
  SELECT COUNT(*) FROM orders; -- Slow on large tables
232
228
 
233
- -- Good: Use estimates for approximate counts
229
+ -- Approximate count only; not equivalent to exact COUNT(*)
234
230
  SELECT reltuples::bigint AS estimate
235
231
  FROM pg_class
236
- WHERE relname = 'orders';
232
+ WHERE oid = 'public.orders'::regclass;
237
233
 
238
234
  -- Good: Filter before counting
239
235
  SELECT COUNT(*) FROM orders
@@ -253,14 +249,14 @@ FROM orders
253
249
  GROUP BY user_id
254
250
  HAVING COUNT(*) > 10;
255
251
 
256
- -- Better: Filter first, then group (if possible)
252
+ -- DIFFERENT REQUIREMENT: count only completed orders; not an equivalent rewrite
257
253
  SELECT user_id, COUNT(*) as order_count
258
254
  FROM orders
259
255
  WHERE status = 'completed'
260
256
  GROUP BY user_id
261
257
  HAVING COUNT(*) > 10;
262
258
 
263
- -- Best: Use covering index
259
+ -- Candidate index; compare the actual plan and write overhead
264
260
  CREATE INDEX idx_orders_user_status ON orders(user_id, status);
265
261
  ```
266
262
 
@@ -279,7 +275,7 @@ FROM users u
279
275
  LEFT JOIN orders o ON o.user_id = u.id
280
276
  GROUP BY u.id, u.name, u.email;
281
277
 
282
- -- Better: Use window functions
278
+ -- Alternative window form; may process more rows, measure before choosing
283
279
  SELECT DISTINCT ON (u.id)
284
280
  u.name, u.email,
285
281
  COUNT(o.id) OVER (PARTITION BY u.id) as order_count
@@ -335,11 +331,11 @@ UPDATE users SET status = 'active' WHERE id = 2;
335
331
  -- Good: Single UPDATE with IN clause
336
332
  UPDATE users
337
333
  SET status = 'active'
338
- WHERE id IN (1, 2, 3, 4, 5, ...);
334
+ WHERE id IN (1, 2, 3, 4, 5);
339
335
 
340
336
  -- Better: Use temporary table for large batches
341
337
  CREATE TEMP TABLE temp_user_updates (id INT, new_status VARCHAR);
342
- INSERT INTO temp_user_updates VALUES (1, 'active'), (2, 'active'), ...;
338
+ INSERT INTO temp_user_updates VALUES (1, 'active'), (2, 'active');
343
339
 
344
340
  UPDATE users u
345
341
  SET status = t.new_status
@@ -372,7 +368,8 @@ CREATE INDEX idx_user_summary_spent ON user_order_summary(total_spent DESC);
372
368
  -- Refresh materialized view
373
369
  REFRESH MATERIALIZED VIEW user_order_summary;
374
370
 
375
- -- Concurrent refresh (PostgreSQL)
371
+ -- Concurrent refresh requires a populated view and a non-partial UNIQUE index on plain columns.
372
+ CREATE UNIQUE INDEX idx_user_summary_id ON user_order_summary(id);
376
373
  REFRESH MATERIALIZED VIEW CONCURRENTLY user_order_summary;
377
374
 
378
375
  -- Query materialized view (very fast)
@@ -403,24 +400,24 @@ CREATE TABLE orders_2024_q2 PARTITION OF orders
403
400
 
404
401
  -- Queries automatically use appropriate partition
405
402
  SELECT * FROM orders
406
- WHERE created_at BETWEEN '2024-02-01' AND '2024-02-28';
403
+ WHERE created_at >= '2024-02-01' AND created_at < '2024-03-01';
407
404
  -- Only scans orders_2024_q1 partition
408
405
  ```
409
406
 
410
407
  ### Query Hints and Optimization
411
408
 
412
409
  ```sql
413
- -- Force index usage (MySQL)
410
+ -- Restrict candidate indexes (MySQL); USE INDEX does not force an index scan
414
411
  SELECT * FROM users
415
412
  USE INDEX (idx_users_email)
416
413
  WHERE email = 'user@example.com';
417
414
 
418
415
  -- Parallel query (PostgreSQL)
419
416
  SET max_parallel_workers_per_gather = 4;
420
- SELECT * FROM large_table WHERE condition;
417
+ SELECT * FROM large_table WHERE id = 123;
421
418
 
422
419
  -- Join hints (PostgreSQL)
423
- SET enable_nestloop = OFF; -- Force hash or merge join
420
+ SET enable_nestloop = OFF; -- Discourage nested loops for diagnosis; not an absolute prohibition
424
421
  ```
425
422
 
426
423
  ## Best Practices
@@ -454,17 +451,18 @@ REINDEX TABLE users;
454
451
  - **Unused Indexes**: Waste space and slow writes
455
452
  - **Missing Indexes**: Slow queries, full table scans
456
453
  - **Implicit Type Conversion**: Prevents index usage
457
- - **OR Conditions**: Can't use indexes efficiently
458
- - **LIKE with Leading Wildcard**: `LIKE '%abc'` can't use index
454
+ - **OR Conditions**: May combine indexes; inspect the plan
455
+ - **LIKE with Leading Wildcard**: Ordinary B-tree indexes often do not help; specialized indexes may
459
456
  - **Function in WHERE**: Prevents index usage unless functional index exists
460
457
 
461
458
  ## Monitoring Queries
462
459
 
463
460
  ```sql
464
- -- Find slow queries (PostgreSQL)
465
- SELECT query, calls, total_time, mean_time
461
+ -- Requires an already configured pg_stat_statements extension and suitable privileges.
462
+ -- Query text can contain sensitive values; do not export it without permission.
463
+ SELECT query, calls, total_exec_time, mean_exec_time
466
464
  FROM pg_stat_statements
467
- ORDER BY mean_time DESC
465
+ ORDER BY mean_exec_time DESC
468
466
  LIMIT 10;
469
467
 
470
468
  -- Find missing indexes (PostgreSQL)
@@ -480,11 +478,11 @@ WHERE seq_scan > 0
480
478
  ORDER BY seq_tup_read DESC
481
479
  LIMIT 10;
482
480
 
483
- -- Find unused indexes (PostgreSQL)
481
+ -- Zero scans are observations since statistics reset, not permission to drop an index.
484
482
  SELECT
485
483
  schemaname,
486
484
  tablename,
487
- indexname,
485
+ indexrelname,
488
486
  idx_scan,
489
487
  idx_tup_read,
490
488
  idx_tup_fetch
@@ -493,12 +491,10 @@ WHERE idx_scan = 0
493
491
  ORDER BY pg_relation_size(indexrelid) DESC;
494
492
  ```
495
493
 
496
- ## Resources
494
+ ## Verified reference material
495
+
496
+ - [PostgreSQL 18 EXPLAIN](https://www.postgresql.org/docs/18/using-explain.html): execution, estimates and observed plans.
497
+ - [PostgreSQL 18 materialized-view refresh](https://www.postgresql.org/docs/18/sql-refreshmaterializedview.html): populated view and unique-index requirements.
498
+ - [PostgreSQL 18 statement statistics](https://www.postgresql.org/docs/18/pgstatstatements.html): extension prerequisites and current time columns.
497
499
 
498
- - **references/postgres-optimization-guide.md**: PostgreSQL-specific optimization
499
- - **references/mysql-optimization-guide.md**: MySQL/MariaDB optimization
500
- - **references/query-plan-analysis.md**: Deep dive into EXPLAIN plans
501
- - **assets/index-strategy-checklist.md**: When and how to create indexes
502
- - **assets/query-optimization-checklist.md**: Step-by-step optimization guide
503
- - **scripts/analyze-slow-queries.sql**: Identify slow queries in your database
504
- - **scripts/index-recommendations.sql**: Generate index recommendations
500
+ The former references to unbundled local guides and scripts have been removed. Examples above assume application tables and permissions; they are not one migration script. Performance, locks, concurrent changes, extension setup and production-provider behavior require separate environment-specific verification.