From sws
Master orchestrator. Runs the full SWS pipeline end-to-end: outline → draft → revise → review → cover-letter → ai-disclosure → response-to-reviewers. Each step is skipped when its artifacts already exist (D9 idempotency). Supports --dry-run (plan only) and --only=<csv> (subset). Writes a single passport entry with phase=submit summarising the steps dispatched.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sws:run-cycleThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
End-to-end SWS pipeline driver. Re-run safely — completed steps are skipped.
End-to-end SWS pipeline driver. Re-run safely — completed steps are skipped.
/sws:run-cycle # full pipeline
/sws:run-cycle --dry-run # plan only, no dispatch
/sws:run-cycle --only=cover-letter,disclosure # subset
| Step | Name | Skill dispatched | Skip condition |
|---|---|---|---|
| 1 | outline | /sws:outline-paper | outline.md exists |
| 2 | draft | /sws:draft-paper | _drafts/*.md non-empty |
| 3 | revise | /sws:revise-paper | _drafts/*.revised.md newer than canonical drafts |
| 4 | review | /sws:review-paper | all 3 _review//report.md present |
| 5 | cover-letter | /sws:write-cover-letter | _submission/cover-letter.md exists OR not required |
| 6 | disclosure | /sws:disclose-ai-usage | _submission/ai-disclosure.md exists OR not required |
| 7 | response | /sws:respond-to-reviewers | no pending _review/round-/reviewer-comments.md |
${PAPER_ROOT}/.sws-project.local.md exists.--dry-run and --only=<csv> flags.${CLAUDE_PLUGIN_ROOT}/scripts/sws_python.sh "$PAPER_ROOT" \
${CLAUDE_PLUGIN_ROOT}/scripts/sws_run_cycle.py \
--paper-root "$PAPER_ROOT" --dry-run --json [--only=<csv>]
Capture the JSON plan; print a human-readable summary to the user.--dry-run was passed, exit 0 here.should_run: true:
case "$step_name" in
outline|draft|revise|review|cover-letter|response)
# Agent-backed step — emit MANUAL directive for the user-context
# to dispatch the matching skill. The orchestrating context
# (typically Claude Code in the user's session) reads the
# directive and invokes the skill.
echo "MANUAL: dispatch ${skill_name} (${step_name})"
;;
disclosure)
# Deterministic script — dispatch directly.
${CLAUDE_PLUGIN_ROOT}/scripts/sws_python.sh "$PAPER_ROOT" \
${CLAUDE_PLUGIN_ROOT}/scripts/sws_disclosure_writer.py \
--paper-root "$PAPER_ROOT"
;;
esac
phase: submitvenue: <target_journal> (from marker)round: <N> (only when the response step was dispatched)change_summary: comma-separated list of step names dispatchednext_step: "ready for upload" if all required artifacts exist, else
a short TODO list (e.g. "fill {EDITOR_NAME} in cover-letter.md").When _submission/cover-letter.md predates a _drafts/*.md source file by
more than 5 seconds, the planner flags the step as stale. The orchestrator
prints a notice but does NOT auto-regenerate — the user re-runs the specific
skill if they want a refresh.
Steps 5 (cover-letter) and 7 (response) check both the
RESOLVED_COVER_LETTER_REQUIRED / RESOLVED_DISCLOSURE_REQUIRED resolver
fields and the active profile's agent-activation list before dispatch (D8).
docs/superpowers/specs/2026-05-30-cycle-12-submission-orchestration-design.md
— D2, D9, D10, D14, R4.
npx claudepluginhub piripocchio8/scientific-writing-superpowers --plugin swsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.