Skip to main content

service-integration

Facilitates seamless integration of external services and APIs, enhancing application functionality with email, CMS, and analytics solutions.

Install this skill

or
0/100

Security score

The service-integration skill was audited on Feb 28, 2026 and we found 72 security issues across 4 threat categories, including 2 high-severity. Review the findings below before installing.

Categories Tested

Security Issues

medium line 236

Template literal with variable interpolation in command context

SourceSKILL.md
236throw new Error(`Email send failed: ${error.message}`);
medium line 662

Template literal with variable interpolation in command context

SourceSKILL.md
662console.log(`[Retry] Attempt ${attempt}/${maxAttempts} failed, retrying in ${delayMs}ms`); // Note: Use structured logger in production
medium line 748

Template literal with variable interpolation in command context

SourceSKILL.md
748const id = `mock-${Date.now()}`;
medium line 823

Template literal with variable interpolation in command context

SourceSKILL.md
823throw new Error(`Missing required environment variable: ${envVar}`);
medium line 898

Template literal with variable interpolation in command context

SourceSKILL.md
898throw new Error(`Email send failed: ${error.message}`);
high line 969

Template literal with variable interpolation in command context

SourceSKILL.md
9691. Verify API key is set: `printf "%s\n" "${RESEND_API_KEY:0:5}..."` (bash parameter expansion to display first 5 chars)
medium line 781

Curl to non-GitHub URL

SourceSKILL.md
781if curl -X POST http://localhost:3000/api/webhooks/sanity \
medium line 3

Webhook reference - potential data exfiltration

SourceSKILL.md
3description: "Load PROACTIVELY when task involves connecting external services or third-party APIs. Use when user says \"add email sending\", \"integrate a CMS\", \"set up file uploads\", \"add analyt
medium line 29

Webhook reference - potential data exfiltration

SourceSKILL.md
29- Configure webhook endpoints for third-party services
low line 88

Webhook reference - potential data exfiltration

SourceSKILL.md
88- id: webhook-routes
low line 90

Webhook reference - potential data exfiltration

SourceSKILL.md
90patterns: ["src/app/api/webhooks/**/*.ts", "pages/api/webhooks/**/*.ts"]
medium line 391

Webhook reference - potential data exfiltration

SourceSKILL.md
391### Step 4.3: Set Up Webhook Endpoint
medium line 393

Webhook reference - potential data exfiltration

SourceSKILL.md
393For real-time content updates, implement a webhook handler:
low line 398

Webhook reference - potential data exfiltration

SourceSKILL.md
398- path: "src/app/api/webhooks/sanity/route.ts"
low line 407

Webhook reference - potential data exfiltration

SourceSKILL.md
407const signature = request.headers.get('sanity-webhook-signature');
low line 409

Webhook reference - potential data exfiltration

SourceSKILL.md
409// Verify webhook signature
low line 410

Webhook reference - potential data exfiltration

SourceSKILL.md
410const secret = process.env.SANITY_WEBHOOK_SECRET;
low line 412

Webhook reference - potential data exfiltration

SourceSKILL.md
412return NextResponse.json({ error: 'Webhook secret not configured' }, { status: 500 });
low line 431

Webhook reference - potential data exfiltration

SourceSKILL.md
431console.log('[Webhook] Sanity content updated:', _type); // Note: Use structured logger in production
low line 434

Webhook reference - potential data exfiltration

SourceSKILL.md
434console.error('[Webhook] Failed to process Sanity webhook:', error);
low line 435

Webhook reference - potential data exfiltration

SourceSKILL.md
435return NextResponse.json({ error: 'Webhook processing failed' }, { status: 500 });
medium line 764

Webhook reference - potential data exfiltration

SourceSKILL.md
764### Step 8.2: Implement Webhook Testing
medium line 766

Webhook reference - potential data exfiltration

SourceSKILL.md
766Test webhook handlers locally:
low line 771

Webhook reference - potential data exfiltration

SourceSKILL.md
771- path: "scripts/test-webhook.sh"
low line 778

Webhook reference - potential data exfiltration

SourceSKILL.md
778# Test Sanity webhook locally
low line 780

Webhook reference - potential data exfiltration

SourceSKILL.md
780echo "[INFO] Testing Sanity webhook..."
low line 781

Webhook reference - potential data exfiltration

SourceSKILL.md
781if curl -X POST http://localhost:3000/api/webhooks/sanity \
low line 783

Webhook reference - potential data exfiltration

SourceSKILL.md
783-H "sanity-webhook-signature: $SANITY_WEBHOOK_SECRET" \
low line 789

Webhook reference - potential data exfiltration

SourceSKILL.md
789echo "[PASS] Webhook test successful"
low line 791

Webhook reference - potential data exfiltration

SourceSKILL.md
791echo "[FAIL] Webhook test failed"
medium line 932

Webhook reference - potential data exfiltration

SourceSKILL.md
932### 4. Missing Webhook Verification
low line 947

Webhook reference - potential data exfiltration

SourceSKILL.md
947const signature = request.headers.get('webhook-signature');
low line 949

Webhook reference - potential data exfiltration

SourceSKILL.md
949// Validate webhook secret
low line 950

Webhook reference - potential data exfiltration

SourceSKILL.md
950const secret = process.env.WEBHOOK_SECRET;
low line 952

Webhook reference - potential data exfiltration

SourceSKILL.md
952return NextResponse.json({ error: 'Webhook secret not configured' }, { status: 500 });
medium line 977

Webhook reference - potential data exfiltration

SourceSKILL.md
9771. Verify webhook endpoint is publicly accessible
medium line 978

Webhook reference - potential data exfiltration

SourceSKILL.md
9782. Check webhook secret matches
medium line 979

Webhook reference - potential data exfiltration

SourceSKILL.md
9793. Test webhook locally with ngrok
medium line 981

Webhook reference - potential data exfiltration

SourceSKILL.md
9815. Check CMS webhook logs
medium line 1010

Webhook reference - potential data exfiltration

SourceSKILL.md
1010- [ ] Webhook endpoints have signature verification
medium line 1023

Webhook reference - potential data exfiltration

SourceSKILL.md
1023- [Webhook Best Practices](https://webhooks.fyi)
high line 979

Ngrok tunnel reference

SourceSKILL.md
9793. Test webhook locally with ngrok
low line 82

Access to .env file

SourceSKILL.md
82glob: ".env.example"
low line 208

Access to .env file

SourceSKILL.md
208if (!process.env.RESEND_API_KEY) {
low line 212

Access to .env file

SourceSKILL.md
212export const resend = new Resend(process.env.RESEND_API_KEY);
low line 320

Access to .env file

SourceSKILL.md
320- path: ".env.example"
low line 355

Access to .env file

SourceSKILL.md
355if (!process.env.NEXT_PUBLIC_SANITY_PROJECT_ID) {
low line 359

Access to .env file

SourceSKILL.md
359if (!process.env.NEXT_PUBLIC_SANITY_DATASET) {
low line 364

Access to .env file

SourceSKILL.md
364projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
low line 365

Access to .env file

SourceSKILL.md
365dataset: process.env.NEXT_PUBLIC_SANITY_DATASET,
low line 367

Access to .env file

SourceSKILL.md
367useCdn: process.env.NODE_ENV === 'production',
low line 410

Access to .env file

SourceSKILL.md
410const secret = process.env.SANITY_WEBHOOK_SECRET;
low line 533

Access to .env file

SourceSKILL.md
533if (!process.env.AWS_REGION || !process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY || !process.env.AWS_S3_BUCKET) {
low line 538

Access to .env file

SourceSKILL.md
538region: process.env.AWS_REGION,
low line 540

Access to .env file

SourceSKILL.md
540accessKeyId: process.env.AWS_ACCESS_KEY_ID,
low line 541

Access to .env file

SourceSKILL.md
541secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
low line 547

Access to .env file

SourceSKILL.md
547Bucket: process.env.AWS_S3_BUCKET,
low line 590

Access to .env file

SourceSKILL.md
590if (process.env.NEXT_PUBLIC_POSTHOG_KEY) {
low line 591

Access to .env file

SourceSKILL.md
591posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY, {
low line 592

Access to .env file

SourceSKILL.md
592api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://app.posthog.com',
low line 594

Access to .env file

SourceSKILL.md
594if (process.env.NODE_ENV === 'development') {
low line 822

Access to .env file

SourceSKILL.md
822if (!process.env[envVar]) {
low line 879

Access to .env file

SourceSKILL.md
879if (!process.env.RESEND_API_KEY) {
low line 882

Access to .env file

SourceSKILL.md
882const resend = new Resend(process.env.RESEND_API_KEY);
low line 950

Access to .env file

SourceSKILL.md
950const secret = process.env.WEBHOOK_SECRET;
medium line 1008

Access to .env file

SourceSKILL.md
1008- [ ] Environment variables documented in .env.example
low line 592

External URL reference

SourceSKILL.md
592api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://app.posthog.com',
low line 781

External URL reference

SourceSKILL.md
781if curl -X POST http://localhost:3000/api/webhooks/sanity \
low line 1018

External URL reference

SourceSKILL.md
1018- [Resend Documentation](https://resend.com/docs)
low line 1019

External URL reference

SourceSKILL.md
1019- [Sanity Documentation](https://www.sanity.io/docs)
low line 1021

External URL reference

SourceSKILL.md
1021- [PostHog Documentation](https://posthog.com/docs)
low line 1023

External URL reference

SourceSKILL.md
1023- [Webhook Best Practices](https://webhooks.fyi)
Scanned on Feb 28, 2026
View Security Dashboard