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.
- package/README.md +1 -2
- package/bundled-skills/.antigravity-install-manifest.json +5 -1
- package/bundled-skills/20-andruia-niche-intelligence/SKILL.md +1 -1
- package/bundled-skills/advogado-criminal/SKILL.md +49 -49
- package/bundled-skills/advogado-especialista/SKILL.md +49 -49
- package/bundled-skills/agent-memory-systems/SKILL.md +1 -1
- package/bundled-skills/agents-v2-py/SKILL.md +1 -1
- package/bundled-skills/ai-product/SKILL.md +7 -7
- package/bundled-skills/amazon-alexa/SKILL.md +14 -14
- package/bundled-skills/andrej-karpathy/SKILL.md +12 -12
- package/bundled-skills/angular-best-practices/SKILL.md +0 -4
- package/bundled-skills/apify-actorization/SKILL.md +2 -2
- package/bundled-skills/audit-context-building/SKILL.md +8 -8
- package/bundled-skills/auri-core/SKILL.md +9 -9
- package/bundled-skills/autonomous-agents/SKILL.md +1 -1
- package/bundled-skills/azure-search-documents-py/SKILL.md +5 -5
- package/bundled-skills/backend-dev-guidelines/SKILL.md +13 -13
- package/bundled-skills/bill-gates/SKILL.md +2 -2
- package/bundled-skills/browser-automation/SKILL.md +14 -14
- package/bundled-skills/buywhere-product-catalog/SKILL.md +2 -2
- package/bundled-skills/carrier-relationship-management/SKILL.md +1 -1
- package/bundled-skills/cc-skill-security-review/SKILL.md +1 -1
- package/bundled-skills/cred-omega/SKILL.md +21 -21
- package/bundled-skills/customs-trade-compliance/SKILL.md +1 -1
- package/bundled-skills/docker-expert/SKILL.md +1 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/elon-musk/SKILL.md +50 -50
- package/bundled-skills/email-systems/SKILL.md +18 -18
- package/bundled-skills/energy-procurement/SKILL.md +1 -1
- package/bundled-skills/evaluation/SKILL.md +1 -1
- package/bundled-skills/frontend-dev-guidelines/SKILL.md +16 -16
- package/bundled-skills/git-pr-review/SKILL.md +167 -0
- package/bundled-skills/hosted-agents/SKILL.md +1 -1
- package/bundled-skills/hosted-agents-v2-py/SKILL.md +1 -1
- package/bundled-skills/ilya-sutskever/SKILL.md +18 -18
- package/bundled-skills/image-studio/SKILL.md +6 -6
- package/bundled-skills/inventory-demand-planning/SKILL.md +1 -1
- package/bundled-skills/leiloeiro-edital/SKILL.md +4 -4
- package/bundled-skills/leiloeiro-juridico/SKILL.md +8 -8
- package/bundled-skills/leiloeiro-risco/SKILL.md +2 -2
- package/bundled-skills/linear-claude-skill/SKILL.md +0 -24
- package/bundled-skills/linkedin-cli/SKILL.md +1 -1
- package/bundled-skills/logistics-exception-management/SKILL.md +1 -1
- package/bundled-skills/matematico-tao/SKILL.md +6 -6
- package/bundled-skills/mental-health-analyzer/SKILL.md +1 -1
- package/bundled-skills/multi-advisor/SKILL.md +8 -8
- package/bundled-skills/nestjs-expert/SKILL.md +1 -1
- package/bundled-skills/nodejs-best-practices/SKILL.md +2 -2
- package/bundled-skills/postgres-best-practices/SKILL.md +1 -1
- package/bundled-skills/prisma-expert/SKILL.md +1 -1
- package/bundled-skills/product-inventor/SKILL.md +5 -5
- package/bundled-skills/production-audit/SKILL.md +209 -0
- package/bundled-skills/production-scheduling/SKILL.md +1 -1
- package/bundled-skills/quality-nonconformance/SKILL.md +1 -1
- package/bundled-skills/react-best-practices/SKILL.md +1 -1
- package/bundled-skills/react-patterns/SKILL.md +8 -0
- package/bundled-skills/recursive-context-pruning-token-budgeting/SKILL.md +108 -0
- package/bundled-skills/rehabilitation-analyzer/SKILL.md +1 -1
- package/bundled-skills/returns-reverse-logistics/SKILL.md +1 -1
- package/bundled-skills/skill-audit/SKILL.md +174 -0
- package/bundled-skills/skill-rails-upgrade/SKILL.md +2 -2
- package/bundled-skills/social-orchestrator/SKILL.md +4 -4
- package/bundled-skills/steve-jobs/SKILL.md +24 -24
- package/bundled-skills/telegram/SKILL.md +1 -1
- package/bundled-skills/typescript-expert/SKILL.md +1 -1
- package/bundled-skills/ui-ux-pro-max/SKILL.md +1 -1
- package/bundled-skills/verification-before-completion/SKILL.md +1 -1
- package/bundled-skills/voice-agents/SKILL.md +27 -27
- package/bundled-skills/warren-buffett/SKILL.md +2 -2
- package/bundled-skills/whatsapp-cloud-api/SKILL.md +1 -1
- package/bundled-skills/wiki-architect/SKILL.md +1 -1
- package/bundled-skills/wiki-changelog/SKILL.md +1 -1
- package/bundled-skills/wiki-onboarding/SKILL.md +1 -1
- package/bundled-skills/wiki-page-writer/SKILL.md +1 -1
- package/bundled-skills/wiki-qa/SKILL.md +1 -1
- package/bundled-skills/wiki-researcher/SKILL.md +1 -1
- package/bundled-skills/wiki-vitepress/SKILL.md +1 -1
- package/bundled-skills/workflow-automation/SKILL.md +10 -10
- package/bundled-skills/zapier-make-patterns/SKILL.md +10 -10
- package/package.json +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
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",
|