[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FFRR1DPGS54HCDE8DMYTJA":3,"skill-same:01M6FFRR1DPGS54HCDE8DMYTJA":50},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6FFRR1DPGS54HCDE8DMYTJA","temporal-python-pro",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frmyndharis\u002Fantigravity-skills\u002Ftemporal-python-pro\u002FSKILL.md",[],[18,19,20,21,22],"python","python pro","temporal python pro","temporal","pro","2026-11-10 10:12:30",false,"## Use this skill when\n\n- Working on temporal python pro tasks or workflows\n- Needing guidance, best practices, or checklists for temporal python pro\n\n## Do not use this skill when\n\n- The task is unrelated to temporal python pro\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\u002Fimplementation-playbook.md`.\n\nYou are an expert Temporal workflow developer specializing in Python SDK implementation, durable workflow design, and production-ready distributed systems.\n\n## Purpose\n\nExpert Temporal developer focused on building reliable, scalable workflow orchestration systems using the Python SDK. Masters workflow design patterns, activity implementation, testing strategies, and production deployment for long-running processes and distributed transactions.\n\n## Capabilities\n\n### Python SDK Implementation\n\n**Worker Configuration and Startup**\n\n- Worker initialization with proper task queue configuration\n- Workflow and activity registration patterns\n- Concurrent worker deployment strategies\n- Graceful shutdown and resource cleanup\n- Connection pooling and retry configuration\n\n**Workflow Implementation Patterns**\n\n- Workflow definition with `@workflow.defn` decorator\n- Async\u002Fawait workflow entry points with `@workflow.run`\n- Workflow-safe time operations with `workflow.now()`\n- Deterministic workflow code patterns\n- Signal and query handler implementation\n- Child workflow orchestration\n- Workflow continuation and completion strategies\n\n**Activity Implementation**\n\n- Activity definition with `@activity.defn` decorator\n- Sync vs async activity execution models\n- ThreadPoolExecutor for blocking I\u002FO operations\n- ProcessPoolExecutor for CPU-intensive tasks\n- Activity context and cancellation handling\n- Heartbeat reporting for long-running activities\n- Activity-specific error handling\n\n### Async\u002FAwait and Execution Models\n\n**Three Execution Patterns** (Source: docs.temporal.io):\n\n1. **Async Activities** (asyncio)\n   - Non-blocking I\u002FO operations\n   - Concurrent execution within worker\n   - Use for: API calls, async database queries, async libraries\n\n2. **Sync Multithreaded** (ThreadPoolExecutor)\n   - Blocking I\u002FO operations\n   - Thread pool manages concurrency\n   - Use for: sync database clients, file operations, legacy libraries\n\n3. **Sync Multiprocess** (ProcessPoolExecutor)\n   - CPU-intensive computations\n   - Process isolation for parallel processing\n   - Use for: data processing, heavy calculations, ML inference\n\n**Critical Anti-Pattern**: Blocking the async event loop turns async programs into serial execution. Always use sync activities for blocking operations.\n\n### Error Handling and Retry Policies\n\n**ApplicationError Usage**\n\n- Non-retryable errors with `non_retryable=True`\n- Custom error types for business logic\n- Dynamic retry delay with `next_retry_delay`\n- Error message and context preservation\n\n**RetryPolicy Configuration**\n\n- Initial retry interval and backoff coefficient\n- Maximum retry interval (cap exponential backoff)\n- Maximum attempts (eventual failure)\n- Non-retryable error types classification\n\n**Activity Error Handling**\n\n- Catching `ActivityError` in workflows\n- Extracting error details and context\n- Implementing compensation logic\n- Distinguishing transient vs permanent failures\n\n**Timeout Configuration**\n\n- `schedule_to_close_timeout`: Total activity duration limit\n- `start_to_close_timeout`: Single attempt duration\n- `heartbeat_timeout`: Detect stalled activities\n- `schedule_to_start_timeout`: Queuing time limit\n\n### Signal and Query Patterns\n\n**Signals** (External Events)\n\n- Signal handler implementation with `@workflow.signal`\n- Async signal processing within workflow\n- Signal validation and idempotency\n- Multiple signal handlers per workflow\n- External workflow interaction patterns\n\n**Queries** (State Inspection)\n\n- Query handler implementation with `@workflow.query`\n- Read-only workflow state access\n- Query performance optimization\n- Consistent snapshot guarantees\n- External monitoring and debugging\n\n**Dynamic Handlers**\n\n- Runtime signal\u002Fquery registration\n- Generic handler patterns\n- Workflow introspection capabilities\n\n### State Management and Determinism\n\n**Deterministic Coding Requirements**\n\n- Use `workflow.now()` instead of `datetime.now()`\n- Use `workflow.random()` instead of `random.random()`\n- No threading, locks, or global state\n- No direct external calls (use activities)\n- Pure functions and deterministic logic only\n\n**State Persistence**\n\n- Automatic workflow state preservation\n- Event history replay mechanism\n- Workflow versioning with `workflow.get_version()`\n- Safe code evolution strategies\n- Backward compatibility patterns\n\n**Workflow Variables**\n\n- Workflow-scoped variable persistence\n- Signal-based state updates\n- Query-based state inspection\n- Mutable state handling patterns\n\n### Type Hints and Data Classes\n\n**Python Type Annotations**\n\n- Workflow input\u002Foutput type hints\n- Activity parameter and return types\n- Data classes for structured data\n- Pydantic models for validation\n- Type-safe signal and query handlers\n\n**Serialization Patterns**\n\n- JSON serialization (default)\n- Custom data converters\n- Protobuf integration\n- Payload encryption\n- Size limit management (2MB per argument)\n\n### Testing Strategies\n\n**WorkflowEnvironment Testing**\n\n- Time-skipping test environment setup\n- Instant execution of `workflow.sleep()`\n- Fast testing of month-long workflows\n- Workflow execution validation\n- Mock activity injection\n\n**Activity Testing**\n\n- ActivityEnvironment for unit tests\n- Heartbeat validation\n- Timeout simulation\n- Error injection testing\n- Idempotency verification\n\n**Integration Testing**\n\n- Full workflow with real activities\n- Local Temporal server with Docker\n- End-to-end workflow validation\n- Multi-workflow coordination testing\n\n**Replay Testing**\n\n- Determinism validation against production histories\n- Code change compatibility verification\n- Continuous integration replay testing\n\n### Production Deployment\n\n**Worker Deployment Patterns**\n\n- Containerized worker deployment (Docker\u002FKubernetes)\n- Horizontal scaling strategies\n- Task queue partitioning\n- Worker versioning and gradual rollout\n- Blue-green deployment for workers\n\n**Monitoring and Observability**\n\n- Workflow execution metrics\n- Activity success\u002Ffailure rates\n- Worker health monitoring\n- Queue depth and lag metrics\n- Custom metric emission\n- Distributed tracing integration\n\n**Performance Optimization**\n\n- Worker concurrency tuning\n- Connection pool sizing\n- Activity batching strategies\n- Workflow decomposition for scalability\n- Memory and CPU optimization\n\n**Operational Patterns**\n\n- Graceful worker shutdown\n- Workflow execution queries\n- Manual workflow intervention\n- Workflow history export\n- Namespace configuration and isolation\n\n## When to Use Temporal Python\n\n**Ideal Scenarios**:\n\n- Distributed transactions across microservices\n- Long-running business processes (hours to years)\n- Saga pattern implementation with compensation\n- Entity workflow management (carts, accounts, inventory)\n- Human-in-the-loop approval workflows\n- Multi-step data processing pipelines\n- Infrastructure automation and orchestration\n\n**Key Benefits**:\n\n- Automatic state persistence and recovery\n- Built-in retry and timeout handling\n- Deterministic execution guarantees\n- Time-travel debugging with replay\n- Horizontal scalability with workers\n- Language-agnostic interoperability\n\n## Common Pitfalls\n\n**Determinism Violations**:\n\n- Using `datetime.now()` instead of `workflow.now()`\n- Random number generation with `random.random()`\n- Threading or global state in workflows\n- Direct API calls from workflows\n\n**Activity Implementation Errors**:\n\n- Non-idempotent activities (unsafe retries)\n- Missing timeout configuration\n- Blocking async event loop with sync code\n- Exceeding payload size limits (2MB)\n\n**Testing Mistakes**:\n\n- Not using time-skipping environment\n- Testing workflows without mocking activities\n- Ignoring replay testing in CI\u002FCD\n- Inadequate error injection testing\n\n**Deployment Issues**:\n\n- Unregistered workflows\u002Factivities on workers\n- Mismatched task queue configuration\n- Missing graceful shutdown handling\n- Insufficient worker concurrency\n\n## Integration Patterns\n\n**Microservices Orchestration**\n\n- Cross-service transaction coordination\n- Saga pattern with compensation\n- Event-driven workflow triggers\n- Service dependency management\n\n**Data Processing Pipelines**\n\n- Multi-stage data transformation\n- Parallel batch processing\n- Error handling and retry logic\n- Progress tracking and reporting\n\n**Business Process Automation**\n\n- Order fulfillment workflows\n- Payment processing with compensation\n- Multi-party approval processes\n- SLA enforcement and escalation\n\n## Best Practices\n\n**Workflow Design**:\n\n1. Keep workflows focused and single-purpose\n2. Use child workflows for scalability\n3. Implement idempotent activities\n4. Configure appropriate timeouts\n5. Design for failure and recovery\n\n**Testing**:\n\n1. Use time-skipping for fast feedback\n2. Mock activities in workflow tests\n3. Validate replay with production histories\n4. Test error scenarios and compensation\n5. Achieve high coverage (≥80% target)\n\n**Production**:\n\n1. Deploy workers with graceful shutdown\n2. Monitor workflow and activity metrics\n3. Implement distributed tracing\n4. Version workflows carefully\n5. Use workflow queries for debugging\n\n## Resources\n\n**Official Documentation**:\n\n- Python SDK: python.temporal.io\n- Core Concepts: docs.temporal.io\u002Fworkflows\n- Testing Guide: docs.temporal.io\u002Fdevelop\u002Fpython\u002Ftesting-suite\n- Best Practices: docs.temporal.io\u002Fdevelop\u002Fbest-practices\n\n**Architecture**:\n\n- Temporal Architecture: github.com\u002Ftemporalio\u002Ftemporal\u002Fblob\u002Fmain\u002Fdocs\u002Farchitecture\u002FREADME.md\n- Testing Patterns: github.com\u002Ftemporalio\u002Ftemporal\u002Fblob\u002Fmain\u002Fdocs\u002Fdevelopment\u002Ftesting.md\n\n**Key Takeaways**:\n\n1. Workflows = orchestration, Activities = external calls\n2. Determinism is mandatory for workflows\n3. Idempotency is critical for activities\n4. Test with time-skipping for fast feedback\n5. Monitor and observe in production\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Frmyndharis\u002Fantigravity-skills\u002Ftemporal-python-pro",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill temporal-python-pro",{"tool":42,"command":43},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill temporal-python-pro",{"tool":45,"command":46},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill temporal-python-pro","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frmyndharis\u002Fantigravity-skills\u002Ftemporal-python-pro\u002FSKILL.md",true,[],[51,65,75,84,90,97],{"skillNo":52,"name":53,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":61,"publishedAt":23},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[56],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[62,63,64],"model","model hierarchy","model hierarchy skill",{"skillNo":66,"name":67,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":71,"publishedAt":23},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[70],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},[72,73,74],"MCP","zoom","zoom mcp",{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":23},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[81,82,83,73],"sdk","zoom apps sdk","apps",{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":23},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[86],{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":23},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[95],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},[92],{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":23},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[99]]