{"id":"9f676faa-277d-4f63-b789-4b477a611bf5","shortId":"2St4kd","kind":"skill","title":"workflow-orchestration-patterns","tagline":"Master workflow orchestration architecture with Temporal, covering fundamental design decisions, resilience patterns, and best practices for building reliable distributed systems.","description":"# Workflow Orchestration Patterns\n\nMaster workflow orchestration architecture with Temporal, covering fundamental design decisions, resilience patterns, and best practices for building reliable distributed systems.\n\n## Use this skill when\n\n- Working on workflow orchestration patterns tasks or workflows\n- Needing guidance, best practices, or checklists for workflow orchestration patterns\n\n## Do not use this skill when\n\n- The task is unrelated to workflow orchestration patterns\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## When to Use Workflow Orchestration\n\n### Ideal Use Cases (Source: docs.temporal.io)\n\n- **Multi-step processes** spanning machines/services/databases\n- **Distributed transactions** requiring all-or-nothing semantics\n- **Long-running workflows** (hours to years) with automatic state persistence\n- **Failure recovery** that must resume from last successful step\n- **Business processes**: bookings, orders, campaigns, approvals\n- **Entity lifecycle management**: inventory tracking, account management, cart workflows\n- **Infrastructure automation**: CI/CD pipelines, provisioning, deployments\n- **Human-in-the-loop** systems requiring timeouts and escalations\n\n### When NOT to Use\n\n- Simple CRUD operations (use direct API calls)\n- Pure data processing pipelines (use Airflow, batch processing)\n- Stateless request/response (use standard APIs)\n- Real-time streaming (use Kafka, event processors)\n\n## Critical Design Decision: Workflows vs Activities\n\n**The Fundamental Rule** (Source: temporal.io/blog/workflow-engine-principles):\n\n- **Workflows** = Orchestration logic and decision-making\n- **Activities** = External interactions (APIs, databases, network calls)\n\n### Workflows (Orchestration)\n\n**Characteristics:**\n\n- Contain business logic and coordination\n- **MUST be deterministic** (same inputs → same outputs)\n- **Cannot** perform direct external calls\n- State automatically preserved across failures\n- Can run for years despite infrastructure failures\n\n**Example workflow tasks:**\n\n- Decide which steps to execute\n- Handle compensation logic\n- Manage timeouts and retries\n- Coordinate child workflows\n\n### Activities (External Interactions)\n\n**Characteristics:**\n\n- Handle all external system interactions\n- Can be non-deterministic (API calls, DB writes)\n- Include built-in timeouts and retry logic\n- **Must be idempotent** (calling N times = calling once)\n- Short-lived (seconds to minutes typically)\n\n**Example activity tasks:**\n\n- Call payment gateway API\n- Write to database\n- Send emails or notifications\n- Query external services\n\n### Design Decision Framework\n\n```\nDoes it touch external systems? → Activity\nIs it orchestration/decision logic? → Workflow\n```\n\n## Core Workflow Patterns\n\n### 1. Saga Pattern with Compensation\n\n**Purpose**: Implement distributed transactions with rollback capability\n\n**Pattern** (Source: temporal.io/blog/compensating-actions-part-of-a-complete-breakfast-with-sagas):\n\n```\nFor each step:\n  1. Register compensation BEFORE executing\n  2. Execute the step (via activity)\n  3. On failure, run all compensations in reverse order (LIFO)\n```\n\n**Example: Payment Workflow**\n\n1. Reserve inventory (compensation: release inventory)\n2. Charge payment (compensation: refund payment)\n3. Fulfill order (compensation: cancel fulfillment)\n\n**Critical Requirements:**\n\n- Compensations must be idempotent\n- Register compensation BEFORE executing step\n- Run compensations in reverse order\n- Handle partial failures gracefully\n\n### 2. Entity Workflows (Actor Model)\n\n**Purpose**: Long-lived workflow representing single entity instance\n\n**Pattern** (Source: docs.temporal.io/evaluate/use-cases-design-patterns):\n\n- One workflow execution = one entity (cart, account, inventory item)\n- Workflow persists for entity lifetime\n- Receives signals for state changes\n- Supports queries for current state\n\n**Example Use Cases:**\n\n- Shopping cart (add items, checkout, expiration)\n- Bank account (deposits, withdrawals, balance checks)\n- Product inventory (stock updates, reservations)\n\n**Benefits:**\n\n- Encapsulates entity behavior\n- Guarantees consistency per entity\n- Natural event sourcing\n\n### 3. Fan-Out/Fan-In (Parallel Execution)\n\n**Purpose**: Execute multiple tasks in parallel, aggregate results\n\n**Pattern:**\n\n- Spawn child workflows or parallel activities\n- Wait for all to complete\n- Aggregate results\n- Handle partial failures\n\n**Scaling Rule** (Source: temporal.io/blog/workflow-engine-principles):\n\n- Don't scale individual workflows\n- For 1M tasks: spawn 1K child workflows × 1K tasks each\n- Keep each workflow bounded\n\n### 4. Async Callback Pattern\n\n**Purpose**: Wait for external event or human approval\n\n**Pattern:**\n\n- Workflow sends request and waits for signal\n- External system processes asynchronously\n- Sends signal to resume workflow\n- Workflow continues with response\n\n**Use Cases:**\n\n- Human approval workflows\n- Webhook callbacks\n- Long-running external processes\n\n## State Management and Determinism\n\n### Automatic State Preservation\n\n**How Temporal Works** (Source: docs.temporal.io/workflows):\n\n- Complete program state preserved automatically\n- Event History records every command and event\n- Seamless recovery from crashes\n- Applications restore pre-failure state\n\n### Determinism Constraints\n\n**Workflows Execute as State Machines**:\n\n- Replay behavior must be consistent\n- Same inputs → identical outputs every time\n\n**Prohibited in Workflows** (Source: docs.temporal.io/workflows):\n\n- ❌ Threading, locks, synchronization primitives\n- ❌ Random number generation (`random()`)\n- ❌ Global state or static variables\n- ❌ System time (`datetime.now()`)\n- ❌ Direct file I/O or network calls\n- ❌ Non-deterministic libraries\n\n**Allowed in Workflows**:\n\n- ✅ `workflow.now()` (deterministic time)\n- ✅ `workflow.random()` (deterministic random)\n- ✅ Pure functions and calculations\n- ✅ Calling activities (non-deterministic operations)\n\n### Versioning Strategies\n\n**Challenge**: Changing workflow code while old executions still running\n\n**Solutions**:\n\n1. **Versioning API**: Use `workflow.get_version()` for safe changes\n2. **New Workflow Type**: Create new workflow, route new executions to it\n3. **Backward Compatibility**: Ensure old events replay correctly\n\n## Resilience and Error Handling\n\n### Retry Policies\n\n**Default Behavior**: Temporal retries activities forever\n\n**Configure Retry**:\n\n- Initial retry interval\n- Backoff coefficient (exponential backoff)\n- Maximum interval (cap retry delay)\n- Maximum attempts (eventually fail)\n\n**Non-Retryable Errors**:\n\n- Invalid input (validation failures)\n- Business rule violations\n- Permanent failures (resource not found)\n\n### Idempotency Requirements\n\n**Why Critical** (Source: docs.temporal.io/activities):\n\n- Activities may execute multiple times\n- Network failures trigger retries\n- Duplicate execution must be safe\n\n**Implementation Strategies**:\n\n- Idempotency keys (deduplication)\n- Check-then-act with unique constraints\n- Upsert operations instead of insert\n- Track processed request IDs\n\n### Activity Heartbeats\n\n**Purpose**: Detect stalled long-running activities\n\n**Pattern**:\n\n- Activity sends periodic heartbeat\n- Includes progress information\n- Timeout if no heartbeat received\n- Enables progress-based retry\n\n## Best Practices\n\n### Workflow Design\n\n1. **Keep workflows focused** - Single responsibility per workflow\n2. **Small workflows** - Use child workflows for scalability\n3. **Clear boundaries** - Workflow orchestrates, activities execute\n4. **Test locally** - Use time-skipping test environment\n\n### Activity Design\n\n1. **Idempotent operations** - Safe to retry\n2. **Short-lived** - Seconds to minutes, not hours\n3. **Timeout configuration** - Always set timeouts\n4. **Heartbeat for long tasks** - Report progress\n5. **Error handling** - Distinguish retryable vs non-retryable\n\n### Common Pitfalls\n\n**Workflow Violations**:\n\n- Using `datetime.now()` instead of `workflow.now()`\n- Threading or async operations in workflow code\n- Calling external APIs directly from workflow\n- Non-deterministic logic in workflows\n\n**Activity Mistakes**:\n\n- Non-idempotent operations (can't handle retries)\n- Missing timeouts (activities run forever)\n- No error classification (retry validation errors)\n- Ignoring payload limits (2MB per argument)\n\n### Operational Considerations\n\n**Monitoring**:\n\n- Workflow execution duration\n- Activity failure rates\n- Retry attempts and backoff\n- Pending workflow counts\n\n**Scalability**:\n\n- Horizontal scaling with workers\n- Task queue partitioning\n- Child workflow decomposition\n- Activity batching when appropriate\n\n## Additional Resources\n\n**Official Documentation**:\n\n- Temporal Core Concepts: docs.temporal.io/workflows\n- Workflow Patterns: docs.temporal.io/evaluate/use-cases-design-patterns\n- Best Practices: docs.temporal.io/develop/best-practices\n- Saga Pattern: temporal.io/blog/saga-pattern-made-easy\n\n**Key Principles**:\n\n1. Workflows = orchestration, Activities = external calls\n2. Determinism is non-negotiable for workflows\n3. Idempotency is critical for activities\n4. State preservation is automatic\n5. Design for failure and recovery\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["workflow","orchestration","patterns","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-workflow-orchestration-patterns","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/workflow-orchestration-patterns","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34404 github stars · SKILL.md body (9,702 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:52:00.149Z","embedding":null,"createdAt":"2026-04-18T21:47:45.133Z","updatedAt":"2026-04-22T00:52:00.149Z","lastSeenAt":"2026-04-22T00:52:00.149Z","tsv":"'/activities):':837 '/blog/compensating-actions-part-of-a-complete-breakfast-with-sagas):':395 '/blog/saga-pattern-made-easy':1085 '/blog/workflow-engine-principles):':239,572 '/develop/best-practices':1080 '/evaluate/use-cases-design-patterns':1075 '/evaluate/use-cases-design-patterns):':479 '/fan-in':539 '/workflows':1070 '/workflows):':650,697 '1':379,399,423,755,904,938,1088 '1k':582,585 '1m':579 '2':404,429,461,764,912,944,1094 '2mb':1027 '3':410,435,535,776,920,953,1102 '4':592,927,959,1108 '5':966,1113 'account':175,486,514 'across':277 'act':860 'action':109 'activ':232,247,304,346,370,409,556,738,794,838,873,881,883,925,936,1003,1015,1036,1057,1091,1107 'actor':464 'add':509 'addit':1061 'aggreg':548,562 'airflow':211 'all-or-noth':139 'allow':724 'alway':956 'api':204,218,250,318,351,757,993 'appli':101 'applic':667 'appropri':1060 'approv':169,603,628 'architectur':8,31 'argument':1029 'ask':1152 'async':593,986 'asynchron':615 'attempt':811,1040 'autom':180 'automat':152,275,641,655,1112 'backoff':801,804,1042 'backward':777 'balanc':517 'bank':513 'base':898 'batch':212,1058 'behavior':527,681,791 'benefit':524 'best':18,41,62,103,900,1076 'book':166 'bound':591 'boundari':922,1160 'build':21,44 'built':324 'built-in':323 'busi':164,258,822 'calcul':736 'call':205,253,273,319,333,336,348,719,737,991,1093 'callback':594,631 'campaign':168 'cancel':439 'cannot':269 'cap':807 'capabl':390 'cart':177,485,508 'case':127,506,626 'challeng':745 'chang':498,746,763 'characterist':256,307 'charg':430 'check':518,858 'check-then-act':857 'checklist':65 'checkout':511 'child':302,552,583,916,1054 'ci/cd':181 'clarif':1154 'clarifi':95 'classif':1020 'clear':921,1127 'code':748,990 'coeffici':802 'command':660 'common':975 'compat':778 'compens':295,383,401,415,426,432,438,443,448,453 'complet':561,651 'concept':1067 'configur':796,955 'consider':1031 'consist':529,684 'constraint':97,674,863 'contain':257 'continu':622 'coordin':261,301 'core':376,1066 'correct':783 'count':1045 'cover':11,34 'crash':666 'creat':768 'criteria':1163 'critic':227,441,833,1105 'crud':200 'current':502 'data':207 'databas':251,354 'datetime.now':713,980 'db':320 'decid':289 'decis':14,37,229,245,363 'decision-mak':244 'decomposit':1056 'dedupl':856 'default':790 'delay':809 'deploy':184 'deposit':515 'describ':1131 'design':13,36,228,362,903,937,1114 'despit':283 'detail':114 'detect':876 'determin':640,673,1095 'determinist':264,317,722,728,731,741,999 'differ':87 'direct':203,271,714,994 'distinguish':969 'distribut':23,46,136,386 'docs.temporal.io':129,478,649,696,836,1069,1074,1079 'docs.temporal.io/activities):':835 'docs.temporal.io/develop/best-practices':1078 'docs.temporal.io/evaluate/use-cases-design-patterns':1073 'docs.temporal.io/evaluate/use-cases-design-patterns):':477 'docs.temporal.io/workflows':1068 'docs.temporal.io/workflows):':648,695 'document':1064 'domain':88 'duplic':847 'durat':1035 'email':356 'enabl':895 'encapsul':525 'ensur':779 'entiti':170,462,473,484,492,526,531 'environ':935,1143 'environment-specif':1142 'error':786,817,967,1019,1023 'escal':194 'event':225,533,600,656,662,781 'eventu':812 'everi':659,689 'exampl':115,286,345,420,504 'execut':293,403,405,450,482,541,543,676,751,773,840,848,926,1034 'expert':1148 'expir':512 'exponenti':803 'extern':248,272,305,310,360,368,599,612,635,992,1092 'fail':813 'failur':155,278,285,412,459,566,671,821,826,844,1037,1116 'fan':537 'fan-out':536 'file':715 'focus':907 'forev':795,1017 'found':829 'framework':364 'fulfil':436,440 'function':734 'fundament':12,35,234 'gateway':350 'generat':704 'global':706 'goal':96 'grace':460 'guarante':528 'guidanc':61 'handl':294,308,457,564,787,968,1011 'heartbeat':874,886,893,960 'histori':657 'horizont':1047 'hour':148,952 'human':186,602,627 'human-in-the-loop':185 'i/o':716 'id':872 'ideal':125 'idempot':332,446,830,854,939,1007,1103 'ident':687 'ignor':1024 'implement':385,852 'includ':322,887 'individu':576 'inform':889 'infrastructur':179,284 'initi':798 'input':100,266,686,819,1157 'insert':868 'instanc':474 'instead':866,981 'instruct':94 'interact':249,306,312 'interv':800,806 'invalid':818 'inventori':173,425,428,487,520 'item':488,510 'kafka':224 'keep':588,905 'key':855,1086 'last':161 'librari':723 'lifecycl':171 'lifetim':493 'lifo':419 'limit':1026,1119 'live':340,469,947 'local':929 'lock':699 'logic':242,259,296,329,374,1000 'long':145,468,633,879,962 'long-liv':467 'long-run':144,632,878 'loop':189 'machin':679 'machines/services/databases':135 'make':246 'manag':172,176,297,638 'master':5,28 'match':1128 'maximum':805,810 'may':839 'minut':343,950 'miss':1013,1165 'mistak':1004 'model':465 'monitor':1032 'multi':131 'multi-step':130 'multipl':544,841 'must':158,262,330,444,682,849 'n':334 'natur':532 'need':60,85 'negoti':1099 'network':252,718,843 'new':765,769,772 'non':316,721,740,815,973,998,1006,1098 'non-determinist':315,720,739,997 'non-idempot':1005 'non-negoti':1097 'non-retry':814,972 'noth':142 'notif':358 'number':703 'offici':1063 'old':750,780 'one':480,483 'open':118 'oper':201,742,865,940,987,1008,1030 'orchestr':3,7,26,30,55,68,82,124,241,255,924,1090 'orchestration/decision':373 'order':167,418,437,456 'outcom':107 'output':268,688,1137 'outsid':91 'parallel':540,547,555 'partial':458,565 'partit':1053 'pattern':4,16,27,39,56,69,83,378,381,391,475,550,595,604,882,1072,1082 'payload':1025 'payment':349,421,431,434 'pend':1043 'per':530,910,1028 'perform':270 'period':885 'perman':825 'permiss':1158 'persist':154,490 'pipelin':182,209 'pitfal':976 'polici':789 'practic':19,42,63,104,901,1077 'pre':670 'pre-failur':669 'preserv':276,643,654,1110 'primit':701 'principl':1087 'process':133,165,208,213,614,636,870 'processor':226 'product':519 'program':652 'progress':888,897,965 'progress-bas':896 'prohibit':691 'provid':108 'provis':183 'pure':206,733 'purpos':384,466,542,596,875 'queri':359,500 'queue':1052 'random':702,705,732 'rate':1038 'real':220 'real-tim':219 'receiv':494,894 'record':658 'recoveri':156,664,1118 'refund':433 'regist':400,447 'releas':427 'relev':102 'reliabl':22,45 'replay':680,782 'report':964 'repres':471 'request':607,871 'request/response':215 'requir':99,117,138,191,442,831,1156 'reserv':424,523 'resili':15,38,784 'resourc':827,1062 'resources/implementation-playbook.md':119 'respons':624,909 'restor':668 'result':549,563 'resum':159,619 'retri':300,328,788,793,797,799,808,846,899,943,1012,1021,1039 'retryabl':816,970,974 'revers':417,455 'review':1149 'rollback':389 'rout':771 'rule':235,568,823 'run':146,280,413,452,634,753,880,1016 'safe':762,851,941 'safeti':1159 'saga':380,1081 'scalabl':919,1046 'scale':567,575,1048 'scope':93,1130 'seamless':663 'second':341,948 'semant':143 'send':355,606,616,884 'servic':361 'set':957 'shop':507 'short':339,946 'short-liv':338,945 'signal':495,611,617 'simpl':199 'singl':472,908 'skill':50,74,1122 'skill-workflow-orchestration-patterns' 'skip':933 'small':913 'solut':754 'sourc':128,236,392,476,534,569,647,694,834 'source-sickn33' 'span':134 'spawn':551,581 'specif':1144 'stall':877 'standard':217 'state':153,274,497,503,637,642,653,672,678,707,1109 'stateless':214 'static':709 'step':110,132,163,291,398,407,451 'still':752 'stock':521 'stop':1150 'strategi':744,853 'stream':222 'substitut':1140 'success':162,1162 'support':499 'synchron':700 'system':24,47,190,311,369,613,711 'task':57,77,288,347,545,580,586,963,1051,1126 'tempor':10,33,645,792,1065 'temporal.io':238,394,571,1084 'temporal.io/blog/compensating-actions-part-of-a-complete-breakfast-with-sagas):':393 'temporal.io/blog/saga-pattern-made-easy':1083 'temporal.io/blog/workflow-engine-principles):':237,570 'test':928,934,1146 'thread':698,984 'time':221,335,690,712,729,842,932 'time-skip':931 'timeout':192,298,326,890,954,958,1014 'tool':90 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'touch':367 'track':174,869 'transact':137,387 'treat':1135 'trigger':845 'type':767 'typic':344 'uniqu':862 'unrel':79 'updat':522 'upsert':864 'use':48,72,122,126,198,202,210,216,223,505,625,758,915,930,979,1120 'valid':106,820,1022,1145 'variabl':710 'verif':112 'version':743,756,760 'via':408 'violat':824,978 'vs':231,971 'wait':557,597,609 'webhook':630 'withdraw':516 'work':52,646 'worker':1050 'workflow':2,6,25,29,54,59,67,81,123,147,178,230,240,254,287,303,375,377,422,463,470,481,489,553,577,584,590,605,620,621,629,675,693,726,747,766,770,902,906,911,914,917,923,977,989,996,1002,1033,1044,1055,1071,1089,1101 'workflow-orchestration-pattern':1 'workflow.get':759 'workflow.now':727,983 'workflow.random':730 'write':321,352 'year':150,282","prices":[{"id":"de2a636a-ff27-412f-95a4-e6993ed5c173","listingId":"9f676faa-277d-4f63-b789-4b477a611bf5","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:47:45.133Z"}],"sources":[{"listingId":"9f676faa-277d-4f63-b789-4b477a611bf5","source":"github","sourceId":"sickn33/antigravity-awesome-skills/workflow-orchestration-patterns","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/workflow-orchestration-patterns","isPrimary":false,"firstSeenAt":"2026-04-18T21:47:45.133Z","lastSeenAt":"2026-04-22T00:52:00.149Z"}],"details":{"listingId":"9f676faa-277d-4f63-b789-4b477a611bf5","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"workflow-orchestration-patterns","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34404,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-21T16:43:40Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"fba6454aad5823091e17fa55fd155971b0873c82","skill_md_path":"skills/workflow-orchestration-patterns/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/workflow-orchestration-patterns"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"workflow-orchestration-patterns","description":"Master workflow orchestration architecture with Temporal, covering fundamental design decisions, resilience patterns, and best practices for building reliable distributed systems."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/workflow-orchestration-patterns"},"updatedAt":"2026-04-22T00:52:00.149Z"}}