From canva-pack
Executes Canva Connect API production checklist for OAuth, security, webhooks, error handling, and bash verification scripts. Use when deploying integrations to production or validating readiness.
How this skill is triggered — by the user, by Claude, or both
Slash command
/canva-pack:canva-prod-checklistThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Complete checklist for deploying Canva Connect API integrations to production, covering OAuth configuration, security, error handling, monitoring, and Canva's integration review process.
Complete checklist for deploying Canva Connect API integrations to production, covering OAuth configuration, security, error handling, monitoring, and Canva's integration review process.
api.canva.com/rest/v1/* endpointscanva-rate-limits)Retry-After headercanva-webhooks-events)#!/bin/bash
# canva-prod-verify.sh
echo "=== Canva Production Readiness ==="
# 1. Verify API connectivity from production
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $CANVA_ACCESS_TOKEN" \
"https://api.canva.com/rest/v1/users/me")
echo "[$([ $HTTP_CODE = 200 ] && echo 'PASS' || echo 'FAIL')] API connectivity: HTTP $HTTP_CODE"
# 2. Test design creation
DESIGN=$(curl -s -X POST "https://api.canva.com/rest/v1/designs" \
-H "Authorization: Bearer $CANVA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"design_type":{"type":"custom","width":100,"height":100},"title":"Prod Test"}')
DESIGN_ID=$(echo "$DESIGN" | python3 -c "import sys,json; print(json.load(sys.stdin)['design']['id'])" 2>/dev/null)
echo "[$([ -n "$DESIGN_ID" ] && echo 'PASS' || echo 'FAIL')] Design creation: $DESIGN_ID"
# 3. Test export
if [ -n "$DESIGN_ID" ]; then
EXPORT=$(curl -s -X POST "https://api.canva.com/rest/v1/exports" \
-H "Authorization: Bearer $CANVA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"design_id\":\"$DESIGN_ID\",\"format\":{\"type\":\"png\"}}")
EXPORT_ID=$(echo "$EXPORT" | python3 -c "import sys,json; print(json.load(sys.stdin)['job']['id'])" 2>/dev/null)
echo "[$([ -n "$EXPORT_ID" ] && echo 'PASS' || echo 'FAIL')] Export job: $EXPORT_ID"
fi
echo ""
echo "=== Done ==="
For public integrations (available to all Canva users), you must pass Canva's review:
Private integrations (your organization only) do not require review.
app.get('/health', async (req, res) => {
const start = Date.now();
let canvaStatus = 'unknown';
try {
const me = await fetch('https://api.canva.com/rest/v1/users/me', {
headers: { 'Authorization': `Bearer ${getServiceToken()}` },
signal: AbortSignal.timeout(5000),
});
canvaStatus = me.ok ? 'healthy' : `error:${me.status}`;
} catch {
canvaStatus = 'unreachable';
}
res.json({
status: canvaStatus === 'healthy' ? 'healthy' : 'degraded',
services: { canva: { status: canvaStatus, latencyMs: Date.now() - start } },
timestamp: new Date().toISOString(),
});
});
| Alert | Condition | Severity |
|---|---|---|
| Auth failures | 401 errors > 0 | P1 |
| Rate limited | 429 errors > 5/min | P2 |
| Export failures | license_required or internal_failure | P3 |
| API unreachable | Connection timeout | P1 |
| Token refresh fails | Refresh returns error | P1 |
| Issue | Cause | Solution |
|---|---|---|
| Token refresh loop | Revoked refresh token | Re-authorize user |
Export stuck in_progress | Backend delay | Timeout after 120s, retry |
| Webhook URL rejected | HTTP not HTTPS | Use HTTPS endpoint |
| Review rejection | Using preview features | Remove preview-only features |
For version upgrades, see canva-upgrade-migration.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin canva-packIdentifies Canva Connect API pitfalls like token expiry, refresh token reuse, sync export polling, and rate limits. Use for reviewing code, onboarding, or auditing integrations.
Provides production readiness checklist for Figma REST API integrations covering authentication, error handling, rate limits, monitoring, and health checks.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.