Claude-skill-registry synapse-action-development
Explains how to create Synapse plugin actions. Use when the user asks to "create an action", "write an action", uses "@action decorator", "BaseAction class", "function-based action", "class-based action", "Pydantic params", "ActionPipeline", "DataType", "input_type", "output_type", "semantic types", "YOLODataset", "ModelWeights", "pipeline chaining", or needs help with synapse plugin action development.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/action-development" ~/.claude/skills/majiayu000-claude-skill-registry-synapse-action-development && rm -rf "$T"
manifest:
skills/data/action-development/SKILL.mdsource content
Synapse Action Development
Synapse SDK provides two patterns for plugin actions: function-based (simple, stateless) and class-based (complex, stateful).
Quick Start: Function-Based Action
from pydantic import BaseModel from synapse_sdk.plugins.decorators import action from synapse_sdk.plugins.context import RuntimeContext class TrainParams(BaseModel): epochs: int = 10 learning_rate: float = 0.001 @action(name='train', description='Train a model', params=TrainParams) def train(params: TrainParams, ctx: RuntimeContext) -> dict: for epoch in range(params.epochs): ctx.set_progress(epoch + 1, params.epochs) return {'status': 'completed'}
Quick Start: Class-Based Action
from pydantic import BaseModel from synapse_sdk.plugins.action import BaseAction class InferParams(BaseModel): model_path: str threshold: float = 0.5 class InferAction(BaseAction[InferParams]): action_name = 'inference' def execute(self) -> dict: self.set_progress(0, 100) # Implementation here return {'predictions': []}
When to Use Each Pattern
| Criteria | Function-Based | Class-Based |
|---|---|---|
| Complexity | Simple, single-purpose | Complex, multi-step |
| State | Stateless | Can use helper methods |
| Semantic types | Limited | Full support |
Recommendation: Start with function-based. Use class-based when needing helper methods or semantic type declarations.
@action Decorator Parameters
| Parameter | Required | Description |
|---|---|---|
| No | Action name (defaults to function name) |
| No | Human-readable description |
| No | Pydantic model for parameter validation |
| No | Pydantic model for result validation |
| No | PluginCategory for grouping |
Category Parameter Examples
from synapse_sdk.plugins.decorators import action from synapse_sdk.plugins.constants import PluginCategory # Training action @action( name='train', category=PluginCategory.NEURAL_NET, description='Train object detection model' ) def train(params, ctx): ... # Export action @action( name='export_coco', category=PluginCategory.EXPORT, description='Export to COCO format' ) def export_coco(params, ctx): ... # Smart tool (AI-assisted annotation) @action( name='auto_segment', category=PluginCategory.SMART_TOOL, description='Auto-segmentation tool' ) def auto_segment(params, ctx): ... # Pre-annotation @action( name='pre_label', category=PluginCategory.PRE_ANNOTATION, description='Pre-label with model predictions' ) def pre_label(params, ctx): ...
Available Categories:
NEURAL_NET, EXPORT, UPLOAD, SMART_TOOL, PRE_ANNOTATION, POST_ANNOTATION, DATA_VALIDATION, CUSTOM
BaseAction Class Attributes
| Attribute | Description |
|---|---|
| Action name for invocation |
| PluginCategory |
| Semantic input type for pipelines |
| Semantic output type for pipelines |
| Auto-extracted from generic |
| Optional result schema |
Available Methods in BaseAction
- Validated parametersself.params
- RuntimeContextself.ctx
- Logger shortcutself.logger
- Progress trackingself.set_progress(current, total, category)
- Metrics recordingself.set_metrics(value, category)
- Event loggingself.log(event, data, file)
Additional Resources
For detailed patterns and advanced techniques:
- references/patterns.md - Parameter validation, semantic types
- references/categories.md - Available PluginCategory values
- references/types-hierarchy.md - Semantic type system (DataType, Dataset, Model)
- references/pipelines.md - ActionPipeline for chaining actions