Claude Skills
CollectionsCompareWorkflowsNominate
Sign inSign up
© 2026 Curated Agent Skills·Learn more about Agent Skills
Back to repository

synapse-step-workflow

verified

Explains step-based workflow system for Synapse plugin actions. Use when the user mentions "BaseStep", "StepRegistry", "Orchestrator", "StepResult", "BaseStepContext", "step-based workflow", "workflow steps", "rollback", "progress_weight", or needs help with multi-step action development.

View on GitHub

Marketplace

synapse-marketplace

datamaker-kr/synapse-claude-marketplace

Plugin

synapse-plugin-helper

development

Repository

datamaker-kr/synapse-claude-marketplace
1stars

plugins/synapse-plugin-helper/skills/step-workflow/SKILL.md

Last Verified

February 5, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/datamaker-kr/synapse-claude-marketplace/blob/main/plugins/synapse-plugin-helper/skills/step-workflow/SKILL.md -a claude-code --skill synapse-step-workflow

Installation paths:

Claude
.claude/skills/synapse-step-workflow/
Powered by add-skill CLI

Instructions

# Step-based Workflow System

Synapse SDK provides a step-based workflow system for complex actions that need:
- Multi-phase execution with progress tracking
- Automatic rollback on failure
- State sharing between steps
- Conditional step execution

## Core Components

| Component | Purpose |
|-----------|---------|
| `BaseStep` | Abstract step definition |
| `StepResult` | Step execution result |
| `StepRegistry` | Ordered step registration |
| `Orchestrator` | Step execution with rollback |
| `BaseStepContext` | State sharing between steps |

## Quick Start

```python
from dataclasses import dataclass, field
from synapse_sdk.plugins.steps import (
    BaseStep,
    StepResult,
    StepRegistry,
    Orchestrator,
    BaseStepContext,
)
from synapse_sdk.plugins.context import RuntimeContext

# 1. Define context for state sharing
@dataclass
class ProcessContext(BaseStepContext):
    data: list = field(default_factory=list)
    processed: int = 0

# 2. Define steps
class LoadStep(BaseStep[ProcessContext]):
    @property
    def name(self) -> str:
        return 'load'

    @property
    def progress_weight(self) -> float:
        return 0.3

    def execute(self, ctx: ProcessContext) -> StepResult:
        ctx.data = load_data()
        return StepResult(success=True, data={'count': len(ctx.data)})

class ProcessStep(BaseStep[ProcessContext]):
    @property
    def name(self) -> str:
        return 'process'

    @property
    def progress_weight(self) -> float:
        return 0.7

    def execute(self, ctx: ProcessContext) -> StepResult:
        for item in ctx.data:
            process(item)
            ctx.processed += 1
            ctx.set_progress(ctx.processed, len(ctx.data))
        return StepResult(success=True)

# 3. Register and run
registry = StepRegistry[ProcessContext]()
registry.register(LoadStep())
registry.register(ProcessStep())

context = ProcessContext(runtime_ctx=runtime_ctx)
orchestrator = Orchestrator(registry, context)
result = orchestrator.exe

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3459 chars

Issues Found:

  • name_directory_mismatch