Skip to content
Back to skills

Ironflow

ASecurity

Entry point for building on the Ironflow workflow engine. Use for setting up an Ironflow project (server + worker), writing a WorkflowHandler, writing a custom Operation, testing a workflow end to end, reviewing a handler, upgrading the ironflow crates and migrating the code, or auditing existing code against the current Ironflow idioms. Trigger on "ironflow", "workflow handler", "ironflow setup", "ctx.shell", "ctx.agent", "approval gate", "upgrade ironflow", "bump ironflow", "créer un workfl...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
developmentgoshellbashtestingapi

Works with

  • api

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add ThomasTartrau/ironflow --skill ironflow --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ironflow?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ironflow
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thomastartrau-ironflow/badge)](https://www.skillsdirectory.com/skills/thomastartrau-ironflow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ironflow
description: Entry point for building on the Ironflow workflow engine. Use for setting up an Ironflow project (server + worker), writing a WorkflowHandler, writing a custom Operation, testing a workflow end to end, reviewing a handler, upgrading the ironflow crates and migrating the code, or auditing existing code against the current Ironflow idioms. Trigger on "ironflow", "workflow handler", "ironflow setup", "ctx.shell", "ctx.agent", "approval gate", "upgrade ironflow", "bump ironflow", "créer un workflow ironflow", "mettre en place ironflow", "mettre à jour ironflow", "migrer ironflow".
argument-hint: "[setup|workflow|operation|test|review|upgrade|audit] [name|version]"
---

# Ironflow

Routes to one sub-skill per verb. Arguments: `$ARGUMENTS`.

## Route

| Verb | Load | Purpose |
|---|---|---|
| `setup` | skill `ironflow:setup` | Scaffold a workspace (workflows lib, server, worker, hello workflow, e2e test) |
| `workflow <name>` | skill `ironflow:workflow` | Write a `WorkflowHandler` and register it |
| `operation <name>` | skill `ironflow:operation` | Write a custom `Operation` (API call tracked as a step) |
| `test <workflow>` | skill `ironflow:test` | Write an end-to-end test for a handler |
| `review [file]` | agent `ironflow:workflow-reviewer` | Review a handler for replay, naming and secret pitfalls |
| `upgrade [version]` | skill `ironflow:upgrade` | Bump every ironflow crate (latest by default), then migrate the code to that release |
| `audit` | skill `ironflow:upgrade` | Check existing code against the current idioms, without bumping |

Invoke the sub-skill with the Skill tool, passing the remaining arguments (`audit` included, it selects the mode). For `review`, spawn the agent with the file path (or the handler name to locate).

## No verb given

Detect the project state before asking anything:

```bash
# Is this an ironflow project?
grep -rl "ironflow-engine" --include=Cargo.toml . 2>/dev/null | head -3
# Which handlers exist?
grep -rn "impl WorkflowHandler for" --include=*.rs . 2>/dev/null | head -20
```

- No `ironflow-engine` dependency anywhere: propose `setup`. Say what it creates in one line.
- Dependency present: list the handlers found and propose `workflow`, `operation`, `test` or `review`. One question, not a menu of everything.
- `ironflow-engine` in `Cargo.lock` older than `cargo search ironflow-engine --limit 1`: say so, and add `upgrade` to the proposal.

## Conventions shared by every sub-skill

- Never write a crate version by hand. Add dependencies with `cargo add` so the project picks the latest release.
- Imports at the top of the file with `use`. No inline `some::path::Type` in bodies.
- Every handler has a typed input struct deriving `serde::Deserialize` and `schemars::JsonSchema`, exposed through `input_schema()`, read with `ctx.input::<T>()`.
- Every handler is added to `handlers()` in the workflows crate. That one list feeds the server and the worker.
- After `workflow` finishes, offer the review: "Run the workflow reviewer on this handler?" Do not run it without asking.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…