canva-reliability-patterns

v2026.09.24

Implement Canva reliability controls for transport failures, asynchronous jobs, token rotation, throttling, and dead letters. Use when preventing duplicate writes or recovering safely across timeouts and restarts. Trigger with: "Canva retries", "Canva circuit breaker", "recover Canva job".

GitHub
Install command
npx skhub add jeremylongshore/canva-reliability-patterns
Markdown
SKILL.md

Canva Reconciliation and Recovery

Overview

Reliability begins with knowing whether an operation happened. Reconcile existing resources and jobs before replaying a mutation, and keep credential rotation outside generic request retries.

Prerequisites

  • Operation types, retry classifications, and duplicate impact
  • Durable identity/job ledger and terminal-state contract
  • Endpoint/user queues, time budgets, alert owner, and rollback

Instructions

Step 1: Classify operations

Use Read and Grep to label safe read, token exchange, mutating submission, job poll, webhook delivery, and cleanup. Define retriable errors per operation.

Step 2: Persist before dispatch

Create one application operation record with tenant/resource authorization and intended effect before sending a mutating request.

Step 3: Handle ambiguous failure

After timeout or connection loss, use returned or recoverable identity to query existing state. Never blindly recreate a design, export, upload, or autofill.

Step 4: Poll bounded jobs

Apply exponential backoff with jitter to the same job, stop at local deadline, continue later from durable state, and handle success/failed plus unknown future states safely.

Step 5: Serialize credential refresh

Single-flight by Canva user, atomically store the returned replacement refresh token, wake waiting requests on success, and reauthorize rather than looping invalid credentials.

Step 6: Use scoped circuits and dead letters

Open by endpoint/failure class, preserve operations with reconciliation state, and require an owner before replay. Do not mix authorization failures with provider availability.

Step 7: Prove recovery

Use Write or Edit to test restart, duplicate delivery, lost response, throttling, terminal failure, refresh race, circuit recovery, and dead-letter replay.

Authentication

Canva Connect calls use Bearer access tokens obtained by a backend through OAuth 2.0 Authorization Code with SHA-256 PKCE. Request explicit least-privilege scopes, keep client secrets and tokens out of browser-visible state, and serialize refresh so the replacement single-use refresh token is stored atomically.

Tool Discipline

Use Read and Grep for discovery and evidence. Use Write or Edit only for the approved artifact, code, configuration, test, or receipt described by this workflow; do not make an unapproved Canva-side change.

Output

  • Scoped decision or implementation artifact
  • Redacted operation and validation receipt
  • Failure, rollback, and follow-up ownership record

Examples

A network timeout follows export submission. The worker retains the operation and job reference, resumes polling after restart, and never submits a second export merely because the response was uncertain.

Error Handling

FailureResponse
No identity survived timeoutStop automatic replay and investigate manually
Refresh token was reusedRequire reauthorization and fix atomic rotation
Circuit hides authorization errorsSplit failure classes and deny affected requests
Dead letter lacks owner/stateDo not replay it

Resources

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/.curated/canva-reliability-patterns

Default branch

main

Latest commit

e5a6c3b

Tree SHA

c2dc8e8