From RDF — rfxn Development Framework
Runs a multi-stage release workflow with preflight checks, verification gates, release preparation, and PR publishing. Supports resume from interrupted sessions.
How this command is triggered — by the user, by Claude, or both
Slash command
/rdf:r-shipclaude-plugin/output/commands/The summary Claude sees in its command listing — used to decide when to auto-load this command
You are running the /rdf:r-ship release workflow. This is a composite workflow that verifies readiness, dispatches quality gates, prepares release artifacts, and publishes a PR. ## Arguments $ARGUMENTS — optional: base branch override (default: auto-detect via `git symbolic-ref refs/remotes/origin/HEAD` or fall back to `main`) ## Setup - Read .rdf/governance/index.md to understand the project - Load governance/verification.md for project-specific release checks - Load governance/conventions.md for commit/changelog format - Determine project name, version, and branch from governance inde...
You are running the /rdf:r-ship release workflow. This is a composite workflow that verifies readiness, dispatches quality gates, prepares release artifacts, and publishes a PR.
$ARGUMENTS — optional: base branch override (default: auto-detect via
git symbolic-ref refs/remotes/origin/HEAD or fall back to main)
Source ~/.rdf/state/rdf-bus.sh and call rdf_session_init. If the helper is
absent (plugin-only install), skip resume detection and proceed without
session-scoped progress; full state requires the symlink deploy (rdf generate claude-code). Then look for
.rdf/work-output/ship-progress-${RDF_SESSION_ID}.md. If not found, glob
.rdf/work-output/ship-progress-*.md and present candidates ordered by mtime.
If exactly one un-suffixed .rdf/work-output/ship-progress.md exists (legacy
from pre-3.1.0), prompt: "Found legacy progress file. Import? [Y/n]".
If a progress file is found:
ship-progress-${RDF_SESSION_ID}.md and start freshAfter each stage completes, write state to .rdf/work-output/ship-progress-${RDF_SESSION_ID}.md:
STAGE: {preflight|verify|prep|publish|report}
STATUS: {complete|in-progress}
PR_URL: {if created}
VERSION: {version string}
Run all three checks and display results as a task list. Each check is pass/fail — a checked box means the gate passed.
~/.rdf/state/rdf-bus.sh; rdf_session_init. Resolve the active
plan: plan_path="$(rdf_active_plan_path)".$plan_path — verify ALL phases are marked complete.git status (never -uall), git diff --statmain/master (should be a
feature/release branch)git log --oneline $(git merge-base HEAD origin/{base})..HEAD
to summarize branch changesPresent results as a task list with inline code for values:
### Preflight
- [x] **Plan**: all phases complete (`12`/`12`)
- [x] **Working tree**: clean
- [ ] **Branch**: on `main` — *expected a feature/release branch*
If a check fails, use an unchecked box and add an italic reason. If a check is skipped, use a checked box with (skipped) annotation.
Blocked — preflight failed: {reason}
Use a blockquote for any blocker that halts the workflow.
Dispatch two subagents in parallel:
Dispatch qa subagent with:
Dispatch reviewer subagent in sentinel mode with:
Present gate results as a task list — checked = passed, unchecked = failed or pending:
### Verification Gates
- [x] **QA**: *PASS* — `672` tests, `0` failures
- [ ] **Reviewer**: *MUST-FIX* — 2 findings (1 security, 1 regression)
If a gate fails, show the findings immediately below in a blockquote:
QA Gate Failed — 3 test failures
test/core.batsline 42: expected0, got1test/trust.batsline 118: timeout after 30stest/cli.batsline 55: missing output line
Ask user to fix or explicitly override.
git log since last tag/releaseFold this release's outcome into the maintained current-state spec. Skipped
when rdf_active_tier is bugfix (a defect fix does not change the
architecture) and when the plan File Map cannot be parsed (degrade — never
block the release).
source ~/.rdf/state/rdf-bus.sh; tier="$(rdf_active_tier)". If bugfix, skip.docs/specs/CURRENT.md (create with a living-spec header if absent).## <version> — <date> block to CURRENT.md and
stage it with the release commit (amend Stage 3d's commit or a follow-up).OpenSpec precedent; this must stay lightweight, never ceremony.
After the release tag/commit lands, clear the session pointers:
source ~/.rdf/state/rdf-bus.sh
rdf_clear_active_plan
rdf_clear_active_tier
The plan file in docs/plans/ is retained as historical record; only
the session-scoped pointers are removed so the next planning session
starts clean with no stale tier.
Present release prep results as a task list:
### Release Prep
- [x] **Changelog**: updated — `12` entries added to `CHANGELOG`
- [x] **Attribution scrub**: clean — no AI references found
- [ ] **Version strings**: *mismatch* — `VERSION` says `2.0.2`, `setup.py` says `2.0.1`
- [x] **Commit**: `a1b2c3d` pushed to `origin/2.0.2`
If version mismatches are found, use a blockquote:
Version Mismatch — resolve before proceeding
files/apf:VERSION="2.0.2"setup.py:version="2.0.1"
gh pr create with:
After PR creation, show a brief confirmation. Use inline code for the PR URL and number so they stand out:
### PR Created
**PR** `#42`: {title}
**URL**: {url}
For CI monitoring, use a task list that updates as checks complete:
### CI Status
- [x] **lint**: *pass* (12s)
- [x] **test-debian12**: *pass* (1m 42s)
- [ ] **test-rocky9**: *running*
- [ ] **test-centos7**: *pending*
When CI completes, collapse into a single line in the final report.
Present a structured summary using tables, task lists, and blockquotes. This is the final output the user sees — it must be scannable at a glance.
## Ship Report: {project} `{version}`
| Property | Value | Property | Value |
|----------|-------|----------|-------|
| **PR** | {url} | **Commits** | `{count}` |
| **Branch** | `{branch}` -> `{base}` | **HEAD** | `{hash}` |
---
### Verification Gates
- [x] **QA**: *PASS* — `{test_count}` tests, `{fail_count}` failures
- [x] **Reviewer**: *APPROVE* — {summary}
### Release Prep
- [x] **Changelog**: updated — `{entry_count}` entries
- [x] **Attribution scrub**: clean
- [x] **Version strings**: consistent (`{version}`)
- [x] **Commit**: `{hash}` pushed to `origin/{branch}`
### CI
- [x] **Status**: *pass* — all checks green
---
### Verdict
**READY TO MERGE** — all gates passed, PR awaiting review
Verdict styling — use bold for the verdict keyword and a brief reason. Three possible verdicts:
When the verdict is not READY TO MERGE, use a blockquote to highlight what needs attention:
ACTION NEEDED — reviewer flagged 1 concern (overridden by user)
When the verdict is BLOCKED, list the blockers:
BLOCKED — cannot merge
- QA gate: FAIL — 3 test failures
- Version strings: mismatch in
setup.py
After presenting the final report, output the completion handoff:
Released — PR
{url}Merge when CI passes. Pipeline complete.
Delete .rdf/work-output/ship-progress-${RDF_SESSION_ID}.md after successful completion.
All output from this workflow uses the markdown primitives below. Follow these consistently across every stage.
| Primitive | Syntax | Use in this workflow |
|---|---|---|
| Table | | col | col | | Ship report summary, PR metadata |
| Task list | - [x] / - [ ] | Preflight checks, gate results, release prep, CI status |
| Blockquote | > | Blockers, warnings, gate failures, version mismatches |
| Bold | **text** | Labels (PR, Branch, QA), verdict keywords |
| Italic | *text* | Status keywords (PASS, FAIL, running, skipped) |
| Inline code | `text` | Versions, hashes, branch names, paths, commands, counts |
| Rule | --- | Section dividers in final report |
Do NOT use (not rendered in Claude Code):
HTML tags, <details>, ANSI color codes, Mermaid diagrams, footnotes.
Conventions:
npx claudepluginhub rfxn/rdf/releaseOrchestrates a complete release workflow with quality gates, version bumping, changelog generation, and optional npm/GitHub publishing.
/hatch3r-releaseOrchestrates the full release workflow on a release branch: preflight checks, SemVer bump, changelog sync, CycloneDX SBOM generation, adapter verification, quality gates, and release-notes reconciliation. Stops before publish for human approval.
/git-workflowOrchestrates git workflow from code review and quality gates through commit, push, and PR creation to target branch. Supports flags: --skip-tests, --draft-pr, --no-push, --squash, --conventional, --trunk-based.
/releaseReleases the project using adaptive learned configuration — discovers the release pipeline on first run and caches it. Also supports version bump types and --dry-run preview.
/releaseScans project files for secrets and personal artifacts, then guides cleanup before a public GitHub release.
/releasePrepares Python project release: validates prereqs/tests/Work Items, updates version in pyproject.toml/src/manifest, generates CHANGELOG, creates git commit/tag, and CI/CD handoff doc. [--dry-run]