# Codemod Rust Workspace

> Use when working on Codemod's Rust workspace, including workflow engine crates, models, state, runners, scheduler, CLI-adjacent Rust crates, schema generation, Cargo features, Rust tests, clippy, rustfmt, or CI parity.

- Skill: `codemod/codemod-rust-workspace` (Agent Skill)
- Install (CLI): `npx skillmds@latest add codemod/codemod-rust-workspace`
- Raw SKILL.md: https://api.skillmd.com/api/skills/codemod/codemod-rust-workspace/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: codemod (https://skillmd.com/u/codemod)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/codemod/codemod-rust-workspace

---


# Codemod Rust Workspace

## Start Here

1. Read the nearest `AGENTS.md` for the crate you are changing.
2. Identify the crate role before editing:
   - `butterflow-models`: workflow schema/data contracts.
   - `butterflow-core`: execution engine, step execution, reports, git/file operations.
   - `butterflow-state`: state adapters.
   - `butterflow-runners`: Docker/Podman/direct runner abstractions.
   - `butterflow-scheduler`: task scheduling and WASM package logic.
   - `codemod`: CLI command surface and TUI.
   - `codemod-sandbox`: JSSG runtime and sandbox.
   - `testing-utils`: shared test helpers.
3. Prefer workspace dependencies in root `Cargo.toml`.

## Implementation Rules

- Keep model contracts in `crates/models`; avoid duplicate public structs in higher-level crates.
- Preserve async cancellation and error propagation.
- Avoid logging-only failures for user-visible workflow behavior.
- Do not write directly to stdout/stderr from non-CLI crates. Return structured data, errors, events,
  reports, or log records and let `crates/cli` choose text, TUI, JSONL, or task-log routing.
- Keep feature gates meaningful, especially `docker`, `podman`, `wasm`, `native`, and `real-fs`.
- For schema-affecting model changes, run `cargo xtask schema` and review generated diffs.

## Validation

- Focused crate: `cargo test -p <crate>`
- Workspace: `cargo test`
- Format: `cargo fmt --check`
- Lint: `cargo clippy --tests --no-deps -- -D warnings`
- CI parity for terminal dependencies: `bash ./scripts/check-single-crossterm.sh`

