**Quick Reference** - Load this first for fast context (~3KB)
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/test-integrations.jstemplates/external-services-config.yamlQuick Reference - Load this first for fast context (~3KB)
Execute comprehensive external service integration smoke tests to validate third-party APIs, payment gateways, email/SMS providers, and monitoring service connectivity during release workflows.
Use this skill when:
skills:
- name: smoke-test-external-services
path: skills/smoke-test-external-services/SKILL.md
const { SmokeTestExternalServices } = require('./scripts/test-integrations.js');
const tester = new SmokeTestExternalServices({
services: [
{
name: 'stripe',
type: 'payment',
baseUrl: 'https://api.stripe.com',
apiKey: process.env.STRIPE_API_KEY
},
{
name: 'sendgrid',
type: 'email',
baseUrl: 'https://api.sendgrid.com',
apiKey: process.env.SENDGRID_API_KEY
}
]
});
const result = await tester.executeTests({
environment: 'staging',
tests: ['connectivity', 'authentication', 'basic-operation']
});
if (result.passed) {
console.log('✅ External service smoke tests passed');
} else {
console.error('❌ External service smoke tests failed');
}
environment: staging
services:
- name: stripe
type: payment
baseUrl: https://api.stripe.com
apiKey: ${STRIPE_API_KEY}
tests:
- connectivity
- authentication
- create-test-charge
- name: sendgrid
type: email
baseUrl: https://api.sendgrid.com
apiKey: ${SENDGRID_API_KEY}
tests:
- connectivity
- authentication
- send-test-email
const SLA_TARGETS = {
connectivity: 2000, // Connection test: ≤2000ms
authentication: 3000, // Auth test: ≤3000ms
basicOperation: 5000, // Basic API operation: ≤5000ms
webhookValidation: 1000, // Webhook validation: ≤1000ms
timeout: 10000 // Global timeout: ≤10000ms
};
Pass: All external service tests must pass
Fail: Any external service test failure blocks deployment
External service smoke tests are executed at these points in the release workflow:
const result = await tester.testServiceConnectivity({
name: 'stripe',
url: 'https://api.stripe.com/v1/customers',
timeout: 5000
});
const result = await tester.testAuthentication({
name: 'sendgrid',
url: 'https://api.sendgrid.com/v3/user/profile',
apiKey: process.env.SENDGRID_API_KEY
});
const result = await tester.testBasicOperation({
service: 'stripe',
operation: 'create-test-charge',
params: {
amount: 100,
currency: 'usd',
source: 'tok_visa'
}
});
const result = await tester.testWebhookValidation({
service: 'stripe',
webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
payload: mockWebhookPayload,
signature: mockSignature
});
{
passed: true,
details: {
totalServices: 5,
passed: 5,
failed: 0,
executionTime: 3456
},
reason: 'External service smoke tests passed: All 5 services healthy',
metrics: {
servicesPassed: 5,
servicesFailed: 0,
averageResponseTime: 456,
executionTime: 3456
},
results: [
{
service: 'stripe',
type: 'payment',
tests: {
connectivity: { passed: true, duration: 234 },
authentication: { passed: true, duration: 456 },
basicOperation: { passed: true, duration: 789 }
},
overall: { passed: true, duration: 1479 }
}
]
}
const tester = new SmokeTestExternalServices({
circuitBreaker: {
enabled: true,
failureThreshold: 3, // Open circuit after 3 failures
successThreshold: 2, // Close circuit after 2 successes
timeout: 30000, // Half-open state after 30 seconds
fallbackService: 'backup-provider'
}
});
const tester = new SmokeTestExternalServices({
rateLimiting: {
detectRateLimits: true,
retryAfterHeader: 'Retry-After',
maxRetries: 3,
backoffMultiplier: 2
}
});
For comprehensive documentation including:
Load: skills/smoke-test-external-services/REFERENCE.md (~15KB)