opencode-skills-collection 3.0.3 → 3.0.5

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 (91) hide show
  1. package/README.md +1 -2
  2. package/bundled-skills/.antigravity-install-manifest.json +5 -1
  3. package/bundled-skills/20-andruia-niche-intelligence/SKILL.md +1 -1
  4. package/bundled-skills/advogado-criminal/SKILL.md +49 -49
  5. package/bundled-skills/advogado-especialista/SKILL.md +49 -49
  6. package/bundled-skills/agent-memory-systems/SKILL.md +1 -1
  7. package/bundled-skills/agents-v2-py/SKILL.md +1 -1
  8. package/bundled-skills/ai-product/SKILL.md +7 -7
  9. package/bundled-skills/amazon-alexa/SKILL.md +14 -14
  10. package/bundled-skills/andrej-karpathy/SKILL.md +12 -12
  11. package/bundled-skills/angular-best-practices/SKILL.md +0 -4
  12. package/bundled-skills/apify-actorization/SKILL.md +2 -2
  13. package/bundled-skills/audit-context-building/SKILL.md +8 -8
  14. package/bundled-skills/auri-core/SKILL.md +9 -9
  15. package/bundled-skills/autonomous-agents/SKILL.md +1 -1
  16. package/bundled-skills/azure-search-documents-py/SKILL.md +5 -5
  17. package/bundled-skills/backend-dev-guidelines/SKILL.md +13 -13
  18. package/bundled-skills/bill-gates/SKILL.md +2 -2
  19. package/bundled-skills/browser-automation/SKILL.md +14 -14
  20. package/bundled-skills/buywhere-product-catalog/SKILL.md +2 -2
  21. package/bundled-skills/carrier-relationship-management/SKILL.md +1 -1
  22. package/bundled-skills/cc-skill-security-review/SKILL.md +1 -1
  23. package/bundled-skills/cred-omega/SKILL.md +21 -21
  24. package/bundled-skills/customs-trade-compliance/SKILL.md +1 -1
  25. package/bundled-skills/docker-expert/SKILL.md +1 -1
  26. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  27. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  28. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  29. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  30. package/bundled-skills/docs/users/bundles.md +1 -1
  31. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  32. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  33. package/bundled-skills/docs/users/getting-started.md +1 -1
  34. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  35. package/bundled-skills/docs/users/usage.md +4 -4
  36. package/bundled-skills/docs/users/visual-guide.md +4 -4
  37. package/bundled-skills/elon-musk/SKILL.md +50 -50
  38. package/bundled-skills/email-systems/SKILL.md +18 -18
  39. package/bundled-skills/energy-procurement/SKILL.md +1 -1
  40. package/bundled-skills/evaluation/SKILL.md +1 -1
  41. package/bundled-skills/frontend-dev-guidelines/SKILL.md +16 -16
  42. package/bundled-skills/git-pr-review/SKILL.md +167 -0
  43. package/bundled-skills/hosted-agents/SKILL.md +1 -1
  44. package/bundled-skills/hosted-agents-v2-py/SKILL.md +1 -1
  45. package/bundled-skills/ilya-sutskever/SKILL.md +18 -18
  46. package/bundled-skills/image-studio/SKILL.md +6 -6
  47. package/bundled-skills/inventory-demand-planning/SKILL.md +1 -1
  48. package/bundled-skills/leiloeiro-edital/SKILL.md +4 -4
  49. package/bundled-skills/leiloeiro-juridico/SKILL.md +8 -8
  50. package/bundled-skills/leiloeiro-risco/SKILL.md +2 -2
  51. package/bundled-skills/linear-claude-skill/SKILL.md +0 -24
  52. package/bundled-skills/linkedin-cli/SKILL.md +1 -1
  53. package/bundled-skills/logistics-exception-management/SKILL.md +1 -1
  54. package/bundled-skills/matematico-tao/SKILL.md +6 -6
  55. package/bundled-skills/mental-health-analyzer/SKILL.md +1 -1
  56. package/bundled-skills/multi-advisor/SKILL.md +8 -8
  57. package/bundled-skills/nestjs-expert/SKILL.md +1 -1
  58. package/bundled-skills/nodejs-best-practices/SKILL.md +2 -2
  59. package/bundled-skills/postgres-best-practices/SKILL.md +1 -1
  60. package/bundled-skills/prisma-expert/SKILL.md +1 -1
  61. package/bundled-skills/product-inventor/SKILL.md +5 -5
  62. package/bundled-skills/production-audit/SKILL.md +209 -0
  63. package/bundled-skills/production-scheduling/SKILL.md +1 -1
  64. package/bundled-skills/quality-nonconformance/SKILL.md +1 -1
  65. package/bundled-skills/react-best-practices/SKILL.md +1 -1
  66. package/bundled-skills/react-patterns/SKILL.md +8 -0
  67. package/bundled-skills/recursive-context-pruning-token-budgeting/SKILL.md +108 -0
  68. package/bundled-skills/rehabilitation-analyzer/SKILL.md +1 -1
  69. package/bundled-skills/returns-reverse-logistics/SKILL.md +1 -1
  70. package/bundled-skills/skill-audit/SKILL.md +174 -0
  71. package/bundled-skills/skill-rails-upgrade/SKILL.md +2 -2
  72. package/bundled-skills/social-orchestrator/SKILL.md +4 -4
  73. package/bundled-skills/steve-jobs/SKILL.md +24 -24
  74. package/bundled-skills/telegram/SKILL.md +1 -1
  75. package/bundled-skills/typescript-expert/SKILL.md +1 -1
  76. package/bundled-skills/ui-ux-pro-max/SKILL.md +1 -1
  77. package/bundled-skills/verification-before-completion/SKILL.md +1 -1
  78. package/bundled-skills/voice-agents/SKILL.md +27 -27
  79. package/bundled-skills/warren-buffett/SKILL.md +2 -2
  80. package/bundled-skills/whatsapp-cloud-api/SKILL.md +1 -1
  81. package/bundled-skills/wiki-architect/SKILL.md +1 -1
  82. package/bundled-skills/wiki-changelog/SKILL.md +1 -1
  83. package/bundled-skills/wiki-onboarding/SKILL.md +1 -1
  84. package/bundled-skills/wiki-page-writer/SKILL.md +1 -1
  85. package/bundled-skills/wiki-qa/SKILL.md +1 -1
  86. package/bundled-skills/wiki-researcher/SKILL.md +1 -1
  87. package/bundled-skills/wiki-vitepress/SKILL.md +1 -1
  88. package/bundled-skills/workflow-automation/SKILL.md +10 -10
  89. package/bundled-skills/zapier-make-patterns/SKILL.md +10 -10
  90. package/package.json +1 -1
  91. package/skills_index.json +88 -0
@@ -139,7 +139,7 @@ client.on('response.audio.delta', (event) => {
139
139
  client.appendInputAudio(audioBuffer);
140
140
  """
141
141
 
142
- ## Use Cases:
142
+ ### Use Cases:
143
143
  - Real-time customer support
144
144
  - Voice assistants
145
145
  - Interactive voice response (IVR)
@@ -222,7 +222,7 @@ async function processVoiceInput(audioStream) {
222
222
  }
223
223
  """
224
224
 
225
- ## Optimization Tips:
225
+ ### Optimization Tips:
226
226
  - Start TTS while LLM still generating (streaming)
227
227
  - Pre-compute first response segment during user speech
228
228
  - Use Flash/turbo models for latency
@@ -470,14 +470,14 @@ Recommended fix:
470
470
 
471
471
  # Measure and budget latency for each component:
472
472
 
473
- ## Target latencies:
473
+ ### Target latencies:
474
474
  - VAD processing: <100ms
475
475
  - STT time-to-first-token: <200ms
476
476
  - LLM time-to-first-token: <300ms
477
477
  - TTS time-to-first-audio: <150ms
478
478
  - Total end-to-end: <800ms
479
479
 
480
- ## Optimization strategies:
480
+ ### Optimization strategies:
481
481
 
482
482
  1. Use low-latency models:
483
483
  - STT: Deepgram Nova-3 (150ms) vs Whisper (500ms+)
@@ -497,7 +497,7 @@ Recommended fix:
497
497
  - Run VAD/STT at edge
498
498
  - Use nearest cloud region
499
499
 
500
- ## Measure continuously:
500
+ ### Measure continuously:
501
501
  Log timestamps at each stage, track P50/P95 latency
502
502
 
503
503
  ### Response Time Variance Disrupts Rhythm
@@ -523,7 +523,7 @@ Recommended fix:
523
523
  - Standard deviation: <100ms
524
524
  - P95-P50 gap: <200ms
525
525
 
526
- ## Reduce jitter sources:
526
+ ### Reduce jitter sources:
527
527
 
528
528
  1. Consistent model loading:
529
529
  - Keep models warm
@@ -541,7 +541,7 @@ Recommended fix:
541
541
  - Track response time distribution
542
542
  - Alert on jitter spikes
543
543
 
544
- ## Implementation:
544
+ ### Implementation:
545
545
  const MIN_RESPONSE_TIME = 400; // ms
546
546
 
547
547
  async function respondWithConsistentTiming(text) {
@@ -577,7 +577,7 @@ Recommended fix:
577
577
 
578
578
  # Use semantic VAD:
579
579
 
580
- ## OpenAI Semantic VAD:
580
+ ### OpenAI Semantic VAD:
581
581
  client.updateSession({
582
582
  turn_detection: {
583
583
  type: 'semantic_vad',
@@ -586,7 +586,7 @@ client.updateSession({
586
586
  },
587
587
  });
588
588
 
589
- ## Pipecat SmartTurn:
589
+ ### Pipecat SmartTurn:
590
590
  const pipeline = new Pipeline({
591
591
  vad: new SileroVAD(),
592
592
  turnDetection: new SmartTurn(),
@@ -597,7 +597,7 @@ const pipeline = new Pipeline({
597
597
  // - Prosody (falling intonation?)
598
598
  // - Context (question asked?)
599
599
 
600
- ## Fallback: Adaptive silence threshold:
600
+ ### Fallback: Adaptive silence threshold:
601
601
  function calculateSilenceThreshold(transcript) {
602
602
  const endsWithComplete = transcript.match(/[.!?]$/);
603
603
  const hasFillers = transcript.match(/um|uh|like|well/i);
@@ -630,7 +630,7 @@ Recommended fix:
630
630
 
631
631
  # Implement barge-in detection:
632
632
 
633
- ## Basic barge-in:
633
+ ### Basic barge-in:
634
634
  vad.on('speech_start', () => {
635
635
  if (ttsPlayer.isPlaying) {
636
636
  // 1. Stop audio immediately
@@ -647,7 +647,7 @@ vad.on('speech_start', () => {
647
647
  }
648
648
  });
649
649
 
650
- ## Advanced: Distinguish interruption types:
650
+ ### Advanced: Distinguish interruption types:
651
651
  vad.on('speech_start', async () => {
652
652
  if (!ttsPlayer.isPlaying) return;
653
653
 
@@ -669,7 +669,7 @@ vad.on('speech_start', async () => {
669
669
  }
670
670
  });
671
671
 
672
- ## Response time target:
672
+ ### Response time target:
673
673
  - Barge-in response: <200ms
674
674
  - User should feel heard immediately
675
675
 
@@ -706,18 +706,18 @@ Say: "I found 3 options. Want me to go through them?"
706
706
  Never list more than 3 items without pausing for confirmation.
707
707
  '''
708
708
 
709
- ## Enforce at generation:
709
+ ### Enforce at generation:
710
710
  const response = await openai.chat.completions.create({
711
711
  max_tokens: 100, // Hard limit
712
712
  // ...
713
713
  });
714
714
 
715
- ## Chunking pattern:
715
+ ### Chunking pattern:
716
716
  if (information.length > 3) {
717
717
  response = `I have ${information.length} items. Let's go through them one at a time. First: ${information[0]}. Ready for the next?`;
718
718
  }
719
719
 
720
- ## Progressive disclosure:
720
+ ### Progressive disclosure:
721
721
  "I found your account. Want the balance, recent transactions, or something else?"
722
722
  // Don't dump all info at once
723
723
 
@@ -750,7 +750,7 @@ Format responses for SPOKEN delivery:
750
750
  - Never use asterisks, dashes, or special characters
751
751
  '''
752
752
 
753
- ## Post-processing:
753
+ ### Post-processing:
754
754
  function prepareForSpeech(text) {
755
755
  return text
756
756
  // Remove markdown
@@ -765,7 +765,7 @@ function prepareForSpeech(text) {
765
765
  .replace(/, /g, '... ');
766
766
  }
767
767
 
768
- ## SSML for precise control:
768
+ ### SSML for precise control:
769
769
  <speak>
770
770
  The total is <say-as interpret-as="currency">$49.99</say-as>.
771
771
  <break time="500ms"/>
@@ -792,7 +792,7 @@ Recommended fix:
792
792
 
793
793
  # Implement noise handling:
794
794
 
795
- ## 1. Noise reduction in STT:
795
+ ### 1. Noise reduction in STT:
796
796
  const transcription = await deepgram.transcription.live({
797
797
  model: 'nova-3',
798
798
  noise_reduction: true,
@@ -800,13 +800,13 @@ const transcription = await deepgram.transcription.live({
800
800
  smart_format: true,
801
801
  });
802
802
 
803
- ## 2. Adaptive VAD threshold:
803
+ ### 2. Adaptive VAD threshold:
804
804
  // Measure ambient noise level
805
805
  const ambientLevel = measureAmbientNoise(5000); // 5 sec sample
806
806
 
807
807
  vad.setThreshold(ambientLevel * 1.5); // Above ambient
808
808
 
809
- ## 3. Confidence filtering:
809
+ ### 3. Confidence filtering:
810
810
  stt.on('transcript', (data) => {
811
811
  if (data.confidence < 0.7) {
812
812
  // Low confidence - probably noise
@@ -816,7 +816,7 @@ stt.on('transcript', (data) => {
816
816
  processTranscript(data.transcript);
817
817
  });
818
818
 
819
- ## 4. Echo cancellation:
819
+ ### 4. Echo cancellation:
820
820
  // Prevent agent's voice from being transcribed
821
821
  const echoCanceller = new EchoCanceller();
822
822
  echoCanceller.reference(ttsOutput);
@@ -841,30 +841,30 @@ Recommended fix:
841
841
 
842
842
  # Mitigate STT errors:
843
843
 
844
- ## 1. Use keywords/biasing:
844
+ ### 1. Use keywords/biasing:
845
845
  const transcription = await deepgram.transcription.live({
846
846
  keywords: ['Acme Corp', 'ProductName', 'John Smith'],
847
847
  keyword_boost: 'high',
848
848
  });
849
849
 
850
- ## 2. Confirmation for critical info:
850
+ ### 2. Confirmation for critical info:
851
851
  if (containsNameOrNumber(transcript)) {
852
852
  response = `I heard "${name}". Is that correct?`;
853
853
  }
854
854
 
855
- ## 3. Confidence-based fallback:
855
+ ### 3. Confidence-based fallback:
856
856
  if (confidence < 0.8) {
857
857
  response = `I think you said "${transcript}". Did I get that right?`;
858
858
  }
859
859
 
860
- ## 4. Multiple hypothesis handling:
860
+ ### 4. Multiple hypothesis handling:
861
861
  // Some STT APIs return n-best list
862
862
  const alternatives = transcription.alternatives;
863
863
  if (alternatives[0].confidence - alternatives[1].confidence < 0.1) {
864
864
  // Ambiguous - ask for clarification
865
865
  }
866
866
 
867
- ## 5. Error correction patterns:
867
+ ### 5. Error correction patterns:
868
868
  promptPattern = `
869
869
  User may correct previous mistakes. If they say "no, I said X"
870
870
  or "not Y, Z", update your understanding accordingly.
@@ -48,7 +48,7 @@ Agente que simula Warren Buffett — o maior investidor do seculo XX e XXI, CEO
48
48
 
49
49
  ---
50
50
 
51
- ## 1.1 Quem E Warren Buffett — A Pessoa Real
51
+ ### 1.1 Quem E Warren Buffett — A Pessoa Real
52
52
 
53
53
  Warren Edward Buffett nasceu em 30 de agosto de 1930 em Omaha, Nebraska.
54
54
  Filho de Howard Buffett (corretor de bolsa e congressista republicano) e
@@ -77,7 +77,7 @@ Entregou retorno medio anual de 29.5% por 13 anos. Encerrou em 1969 porque
77
77
  nao conseguia mais encontrar acoes baratas em mercado caro (licao de disciplina).
78
78
  Adquiriu controle da Berkshire Hathaway em 1965. O resto e historia quantificavel.
79
79
 
80
- ## 1.2 Linha Do Tempo Estrategica (Camadas De Resposta)
80
+ ### 1.2 Linha Do Tempo Estrategica (Camadas De Resposta)
81
81
 
82
82
  ```
83
83
  BUFFETT JOVEM (1950-1968) | DISCIPULO GRAHAM — CIGAR BUTTS
@@ -43,7 +43,7 @@ Integracao com WhatsApp Business Cloud API (Meta). Mensagens, templates, webhook
43
43
 
44
44
  Skill para implementar integracoes profissionais com WhatsApp Business usando a Cloud API oficial da Meta. Suporta Node.js/TypeScript e Python.
45
45
 
46
- ## Overview
46
+ ### Overview
47
47
 
48
48
  A WhatsApp Cloud API e a API oficial da Meta para envio e recebimento de mensagens via WhatsApp Business. Desde outubro 2025, e a unica opcao suportada (a API On-Premises foi descontinuada).
49
49
 
@@ -61,5 +61,5 @@ Detect primary language from file extensions and build files, then select a comp
61
61
 
62
62
  JSON code block following the catalogue schema with `items[].children[]` structure, where each node has `title`, `name`, `prompt`, and `children` fields.
63
63
 
64
- ## When to Use
64
+ ### When to Use
65
65
  This skill is applicable to execute the workflow or actions described in the overview.
@@ -28,5 +28,5 @@ Generate structured changelogs from git history.
28
28
  - Use project terminology from README
29
29
  - Highlight breaking changes prominently with migration notes
30
30
 
31
- ## When to Use
31
+ ### When to Use
32
32
  This skill is applicable to execute the workflow or actions described in the overview.
@@ -78,7 +78,7 @@ Scan the repository for build files to determine the primary language for code e
78
78
  - Use Mermaid for workflow diagrams (dark-mode colors)
79
79
  - Ground all claims in actual code — cite `(file_path:line_number)`
80
80
 
81
- ## When to Use
81
+ ### When to Use
82
82
  This skill is applicable to execute the workflow or actions described in the overview.
83
83
 
84
84
  ## Limitations
@@ -66,7 +66,7 @@ description: "One-line description"
66
66
  - No `<br/>` in Mermaid blocks
67
67
  - All hex colors must be 3 or 6 digits
68
68
 
69
- ## When to Use
69
+ ### When to Use
70
70
  This skill is applicable to execute the workflow or actions described in the overview.
71
71
 
72
72
  ## Limitations
@@ -35,7 +35,7 @@ Answer repository questions grounded entirely in source code evidence.
35
35
  - NEVER invent, guess, or use external knowledge
36
36
  - Think step by step before answering
37
37
 
38
- ## When to Use
38
+ ### When to Use
39
39
  This skill is applicable to execute the workflow or actions described in the overview.
40
40
 
41
41
  ## Limitations
@@ -66,7 +66,7 @@ Each iteration takes a different lens and builds on all prior findings:
66
66
  - Stay focused on the specific topic
67
67
  - Flag what you HAVEN'T explored — boundaries of your knowledge at all times
68
68
 
69
- ## When to Use
69
+ ### When to Use
70
70
  This skill is applicable to execute the workflow or actions described in the overview.
71
71
 
72
72
  ## Limitations
@@ -149,7 +149,7 @@ Output goes to `wiki-site/.vitepress/dist/`.
149
149
  - Node text in Mermaid uses inline `style` with highest specificity — CSS alone won't fix it
150
150
  - `enhanceApp()` runs during SSR where `document` doesn't exist — use `setup()` only
151
151
 
152
- ## When to Use
152
+ ### When to Use
153
153
  This skill is applicable to execute the workflow or actions described in the overview.
154
154
 
155
155
  ## Limitations
@@ -528,21 +528,21 @@ Recommended fix:
528
528
 
529
529
  # ALWAYS use idempotency keys for external calls:
530
530
 
531
- ## Stripe example:
531
+ ### Stripe example:
532
532
  await stripe.paymentIntents.create({
533
533
  amount: 1000,
534
534
  currency: 'usd',
535
535
  idempotency_key: `order-${orderId}-payment` # Critical!
536
536
  });
537
537
 
538
- ## Email example:
538
+ ### Email example:
539
539
  await step.run("send-confirmation", async () => {
540
540
  const alreadySent = await checkEmailSent(orderId);
541
541
  if (alreadySent) return { skipped: true };
542
542
  return sendEmail(customer, orderId);
543
543
  });
544
544
 
545
- ## Database example:
545
+ ### Database example:
546
546
  await db.query(`
547
547
  INSERT INTO orders (id, ...) VALUES ($1, ...)
548
548
  ON CONFLICT (id) DO NOTHING
@@ -569,14 +569,14 @@ Recommended fix:
569
569
 
570
570
  # Break long workflows into checkpointed steps:
571
571
 
572
- ## WRONG - one long step:
572
+ ### WRONG - one long step:
573
573
  await step.run("process-all", async () => {
574
574
  for (const item of thousandItems) {
575
575
  await processItem(item); // Hours of work, one checkpoint
576
576
  }
577
577
  });
578
578
 
579
- ## CORRECT - many small steps:
579
+ ### CORRECT - many small steps:
580
580
  for (const item of thousandItems) {
581
581
  await step.run(`process-${item.id}`, async () => {
582
582
  return processItem(item); // Checkpoint after each
@@ -613,7 +613,7 @@ Recommended fix:
613
613
 
614
614
  # ALWAYS set timeouts on activities:
615
615
 
616
- ## Temporal:
616
+ ### Temporal:
617
617
  const activities = proxyActivities<typeof activitiesType>({
618
618
  startToCloseTimeout: '30 seconds', # Required!
619
619
  scheduleToCloseTimeout: '5 minutes',
@@ -624,7 +624,7 @@ const activities = proxyActivities<typeof activitiesType>({
624
624
  }
625
625
  });
626
626
 
627
- ## Inngest:
627
+ ### Inngest:
628
628
  await step.run("call-api", { timeout: "30s" }, async () => {
629
629
  return fetch(url, { signal: AbortSignal.timeout(25000) });
630
630
  });
@@ -700,7 +700,7 @@ Recommended fix:
700
700
 
701
701
  # ALWAYS use exponential backoff:
702
702
 
703
- ## Temporal:
703
+ ### Temporal:
704
704
  const activities = proxyActivities({
705
705
  retry: {
706
706
  initialInterval: '1 second',
@@ -710,13 +710,13 @@ const activities = proxyActivities({
710
710
  }
711
711
  });
712
712
 
713
- ## Inngest (built-in backoff):
713
+ ### Inngest (built-in backoff):
714
714
  {
715
715
  id: "my-function",
716
716
  retries: 5, # Uses exponential backoff by default
717
717
  }
718
718
 
719
- ## Manual backoff:
719
+ ### Manual backoff:
720
720
  const backoff = (attempt) => {
721
721
  const base = 1000;
722
722
  const max = 60000;
@@ -111,7 +111,7 @@ Todoist Module:
111
111
  - Due String: tomorrow
112
112
  """
113
113
 
114
- ## Best Practices:
114
+ ### Best Practices:
115
115
  - Use descriptive Zap/Scenario names
116
116
  - Test with real sample data
117
117
  - Use filters to prevent unwanted runs
@@ -209,7 +209,7 @@ Zap: "Route Support Tickets"
209
209
  # Make's visual router makes complex branching clear
210
210
  """
211
211
 
212
- ## Best Practices:
212
+ ### Best Practices:
213
213
  - Always have a fallback/else path
214
214
  - Test each path independently
215
215
  - Document which conditions trigger which path
@@ -265,7 +265,7 @@ Math:
265
265
  {{round(1.price * 0.8; 2)}} # 20% discount, 2 decimals
266
266
  """
267
267
 
268
- ## Best Practices:
268
+ ### Best Practices:
269
269
  - Transform early in the workflow
270
270
  - Use filters to skip invalid data
271
271
  - Log transformations for debugging
@@ -317,7 +317,7 @@ Example:
317
317
  → Continue scenario
318
318
  """
319
319
 
320
- ## Best Practices:
320
+ ### Best Practices:
321
321
  - Always add error handlers for external APIs
322
322
  - Log errors to a spreadsheet/database
323
323
  - Set up Slack/email alerts for critical failures
@@ -364,7 +364,7 @@ Aggregator combines results back together.
364
364
  Use Array Aggregator for collecting processed items.
365
365
  """
366
366
 
367
- ## Best Practices:
367
+ ### Best Practices:
368
368
  - Use aggregators to combine results
369
369
  - Consider batch limits (some APIs limit to 100)
370
370
  - Watch operation/task counts for cost
@@ -411,7 +411,7 @@ Scenario Schedule Options:
411
411
  [Gmail: Send Report]
412
412
  """
413
413
 
414
- ## Best Practices:
414
+ ### Best Practices:
415
415
  - Consider timezone differences
416
416
  - Add buffer time for long-running jobs
417
417
  - Log execution times for monitoring
@@ -441,7 +441,7 @@ Recommended fix:
441
441
 
442
442
  # If you need dynamic values:
443
443
 
444
- ## Zapier approach:
444
+ ### Zapier approach:
445
445
  1. Add a "Find" or "Search" action first
446
446
  - HubSpot: Find Contact → returns contact_id
447
447
  - Slack: Find User by Email → returns user_id
@@ -450,7 +450,7 @@ Recommended fix:
450
450
  - Dropdown: Use Custom Value
451
451
  - Select the ID from the search step
452
452
 
453
- ## Make approach:
453
+ ### Make approach:
454
454
  1. Add a Search module first
455
455
  - Search Contacts: filter by email
456
456
  - Returns: contact_id
@@ -672,7 +672,7 @@ Recommended fix:
672
672
  - Store processed IDs
673
673
  - Skip if ID exists
674
674
 
675
- ## Zapier example:
675
+ ### Zapier example:
676
676
  [Webhook Trigger]
677
677
 
678
678
  [Airtable: Find Records] - search by event_id
@@ -783,7 +783,7 @@ Recommended fix:
783
783
  - Don't schedule at exactly midnight
784
784
  - Avoid on-the-hour (busy periods)
785
785
 
786
- ## Make timezone handling:
786
+ ### Make timezone handling:
787
787
  - Scenarios use account timezone setting
788
788
  - formatDate() function respects timezone
789
789
  - Use parseDate() with explicit timezone
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-skills-collection",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "description": "OpenCode CLI plugin that automatically downloads and keeps skills up to date.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/skills_index.json CHANGED
@@ -13735,6 +13735,28 @@
13735
13735
  "reasons": []
13736
13736
  }
13737
13737
  },
13738
+ {
13739
+ "id": "git-pr-review",
13740
+ "path": "skills/git-pr-review",
13741
+ "category": "workflow",
13742
+ "name": "git-pr-review",
13743
+ "description": "Generate a concise and structured PR description from commit history with minimal token usage",
13744
+ "risk": "safe",
13745
+ "source": "community",
13746
+ "date_added": "2026-05-03",
13747
+ "plugin": {
13748
+ "targets": {
13749
+ "codex": "supported",
13750
+ "claude": "supported"
13751
+ },
13752
+ "setup": {
13753
+ "type": "none",
13754
+ "summary": "",
13755
+ "docs": null
13756
+ },
13757
+ "reasons": []
13758
+ }
13759
+ },
13738
13760
  {
13739
13761
  "id": "git-pr-workflows-git-workflow",
13740
13762
  "path": "skills/git-pr-workflows-git-workflow",
@@ -22420,6 +22442,28 @@
22420
22442
  "reasons": []
22421
22443
  }
22422
22444
  },
22445
+ {
22446
+ "id": "production-audit",
22447
+ "path": "skills/production-audit",
22448
+ "category": "security",
22449
+ "name": "production-audit",
22450
+ "description": "Audit a shipped repo for production-readiness gaps across RLS, webhooks, secrets, grants, Stripe idempotency, mobile UX, and deployment health.",
22451
+ "risk": "safe",
22452
+ "source": "community",
22453
+ "date_added": "2026-05-04",
22454
+ "plugin": {
22455
+ "targets": {
22456
+ "codex": "supported",
22457
+ "claude": "supported"
22458
+ },
22459
+ "setup": {
22460
+ "type": "none",
22461
+ "summary": "",
22462
+ "docs": null
22463
+ },
22464
+ "reasons": []
22465
+ }
22466
+ },
22423
22467
  {
22424
22468
  "id": "production-code-audit",
22425
22469
  "path": "skills/production-code-audit",
@@ -23544,6 +23588,28 @@
23544
23588
  "reasons": []
23545
23589
  }
23546
23590
  },
23591
+ {
23592
+ "id": "recursive-context-pruning-token-budgeting",
23593
+ "path": "skills/recursive-context-pruning-token-budgeting",
23594
+ "category": "prompt-engineering",
23595
+ "name": "recursive-context-pruning-token-budgeting",
23596
+ "description": "Optimizes AI agent performance by pruning redundant context, managing token usage, and enforcing ultra-concise, direct-to-value responses.",
23597
+ "risk": "safe",
23598
+ "source": "self",
23599
+ "date_added": "2026-05-03",
23600
+ "plugin": {
23601
+ "targets": {
23602
+ "codex": "supported",
23603
+ "claude": "supported"
23604
+ },
23605
+ "setup": {
23606
+ "type": "none",
23607
+ "summary": "",
23608
+ "docs": null
23609
+ },
23610
+ "reasons": []
23611
+ }
23612
+ },
23547
23613
  {
23548
23614
  "id": "red-team-tactics",
23549
23615
  "path": "skills/red-team-tactics",
@@ -26142,6 +26208,28 @@
26142
26208
  "reasons": []
26143
26209
  }
26144
26210
  },
26211
+ {
26212
+ "id": "skill-audit",
26213
+ "path": "skills/skill-audit",
26214
+ "category": "security",
26215
+ "name": "skill-audit",
26216
+ "description": "Pre-install security scanner for AI agent skills. 7.5% of 14,706 skills are malicious. Audit before you trust.",
26217
+ "risk": "safe",
26218
+ "source": "community",
26219
+ "date_added": "2026-05-01",
26220
+ "plugin": {
26221
+ "targets": {
26222
+ "codex": "supported",
26223
+ "claude": "supported"
26224
+ },
26225
+ "setup": {
26226
+ "type": "none",
26227
+ "summary": "",
26228
+ "docs": null
26229
+ },
26230
+ "reasons": []
26231
+ }
26232
+ },
26145
26233
  {
26146
26234
  "id": "skill-check",
26147
26235
  "path": "skills/skill-check",