Command Reference
dmx exposes its workflow as slash commands in your IDE. Every command is a skill: a Markdown file with frontmatter that defines its name, description, and arguments.
Commands are invoked as /dmx/{name} in any IDE connected to dmx via MCP.
Passing arguments
Type the command by itself, then give the required value as plain text right after it — the agent reads it as context for the command. For example:
/dmx/create-ticket
Add rate limiting to the public inference endpoint.For optional arguments, just mention the value in your message (e.g. "type it as a chore") and the agent will pass it through, or your IDE may prompt you to fill it in directly. The tables below list every argument's name, whether it's required, and what it does, regardless of how your IDE collects it.
Workflow commands
init
/dmx/init
One-time project setup. Walks through workflow mode and ticketing configuration, auto-detects tech stack and GitHub settings, writes .dmx/config.md, and scaffolds the memory bank. Safe to re-run. It updates config without overwriting memory bank files that already have content.
No arguments.
upgrade
/dmx/upgrade
Refreshes the dmx rule files in your repo (such as .cursor/rules/ or the dmx block in CLAUDE.md) to the workflow version of the installed dmx. Run it once after upgrading dmx, then open a new chat and commit the changed files. It covers every IDE that already has dmx rules in the repo, plus the one you're using.
Doesn't change .dmx/config.md, the memory bank, or .dmx/jobs/, and doesn't commit. Content outside the dmx block in shared files like CLAUDE.md is left as it is. If the rules are already current, it says so and changes nothing. See Upgrading dmx.
No arguments.
create-ticket
/dmx/create-ticket
Add rate limiting to the public inference endpoint.Takes a short task description, reads project context from the memory bank, creates a ticket, creates a branch, checks it out, and scaffolds a spec.md pre-filled with project context. One command to go from idea to ready-to-implement.
The branch is created on GitHub from origin/{branch_base}, so the repository needs at least one commit pushed to origin first. On a repo with no commits, create-ticket stops before creating anything and tells you to commit and push.
| Argument | Required | Description |
|---|---|---|
task | Yes | Short description of the work. Feature, bug, story, or chore. Type is inferred. |
type | No | Override the inferred branch/ticket type. feature, bug, or chore. |
priority | No | Jira priority: High, Medium, or Low. Defaults to Medium. Ignored for other providers. |
derive-ticket
/dmx/derive-ticket
Reads uncommitted changes in the working tree, infers what was built, creates a ticket retroactively, creates a properly named branch, stashes and re-applies changes if on a protected branch, and scaffolds a derived spec.md.
| Argument | Required | Description |
|---|---|---|
type | No | Branch type prefix. feature or bug. Defaults to feature. |
hotfix
/dmx/hotfix
Creates a hotfix branch from the production branch for a production incident, scaffolds the spec, and transitions the ticket to In Progress.
| Argument | Required | Description |
|---|---|---|
ticket_id | No | Ticket identifier. Jira: DM-123. GitHub Issues: 123. Omit when ticketing is none. |
description | No | Short kebab-case description for the branch name. Auto-generated from ticket title if omitted. |
plan
/dmx/plan
Reads the current branch's spec.md, validates all Q&A is complete, and generates a phased tasks.md. Opens the file in preview.
No arguments.
implement-next-phase
/dmx/implement-next-phase
Executes every task in the next unchecked phase of tasks.md, checking each off as it completes. Stops after the phase and waits for review. Never continues to the next phase automatically.
No arguments.
implement-next-task
/dmx/implement-next-task
Executes the single next unchecked task in tasks.md and stops. Use for fine-grained control when tasks are large or risky and you want to review each individually.
No arguments.
validate
/dmx/validate
Three-part quality gate before opening a PR: ticket completeness (spec, acceptance criteria, tasks), code quality (codebase patterns, style, naming), and security (vulnerabilities introduced by the diff). Produces a structured report with a READY FOR PR or NEEDS WORK verdict.
No arguments.
create-pr
/dmx/create-pr
Opens a GitHub pull request with the correct title format and drafted description, syncs the memory bank, then transitions the ticket to In Review.
| Argument | Required | Description |
|---|---|---|
description | No | PR body markdown. If omitted, draft-pr-description is called automatically. |
base | No | Target branch. Defaults to branch_base from config; auto-detects production branch for hotfixes. |
draft | No | Open the PR as a draft. Defaults to false. |
close-ticket
/dmx/close-ticket
After a PR is merged: transitions ticket to Done, adds PR link as a comment, deletes the branch locally and remotely, raises hotfix back-merge PRs if needed.
The ticket is only transitioned and commented on if a merged PR is found for the branch. If none is found, close-ticket warns and still deletes the branch, but leaves the ticket alone. A ticket that's already in a terminal state — a GitHub issue auto-closed by Closes #N, or a Jira ticket moved by an integration — is treated as done, not as an error.
| Argument | Required | Description |
|---|---|---|
ticket_id | No | Auto-detected from current branch name if omitted. |
branch | No | Branch to close out. Defaults to current branch. |
Doesn't remove .dmx/spec.md or .dmx/tasks.md — those merge to your integration branch along with the rest of the PR and are left as-is. This is expected: the next ticket's Spec Loop never trusts them for its own identity, so a leftover file from the last ticket is harmless.
draft-release-note
/dmx/draft-release-note
v0.3.0Generates structured release notes by diffing merged PRs and commits between the last published release and current HEAD. Enriches entries with ticket data.
Writes the notes to .dmx/releases/{version}.md, then commits and pushes the file so release-merge includes it in the release PR. Re-running it when the content hasn't changed is a no-op.
| Argument | Required | Description |
|---|---|---|
version | Yes | Version number for this release, e.g. v0.3.0. |
since | No | Override the baseline tag. Defaults to the most recent git tag. |
release-merge
/dmx/release-merge
v0.3.0Opens a PR from the integration branch to the production branch as the formal release gate. Reads release notes from .dmx/releases/{version}.md if already drafted.
| Argument | Required | Description |
|---|---|---|
version | Yes | Version number, e.g. v0.3.0. |
create-release
/dmx/create-release
v0.3.0Tags the production branch and publishes a GitHub release. Run only after the release-merge PR has been merged.
| Argument | Required | Description |
|---|---|---|
version | Yes | Version tag, e.g. v0.3.0. Must start with v followed by semver. |
prerelease | No | Mark as pre-release on GitHub. Defaults to false. |
Utility commands
commit
/dmx/commit
Stages changes, refreshes the memory bank with light progress updates, and creates a Conventional Commits formatted message referencing the current ticket. Never auto-pushes.
| Argument | Required | Description |
|---|---|---|
message | No | Override the generated commit summary. |
type | No | Conventional Commits type. Inferred from branch prefix if omitted. Values: feat, fix, refactor, chore, docs, test, style, perf, ci, build. |
scope | No | Optional scope in parentheses, e.g. auth, api, db. |
body | No | Optional multi-line explanation added after the summary line. |
stage_all | No | If true (default), runs git add . before committing. Set to false to commit only already-staged files. |
create-branch
/dmx/create-branch
Creates a properly named branch, scaffolds the ticket spec in the memory bank, and transitions the ticket to In Progress.
| Argument | Required | Description |
|---|---|---|
ticket_id | No | Ticket identifier. Omit when ticketing is none. |
type | No | Branch type prefix. feature or bug. Defaults to feature. |
description | No | Short kebab-case description for the branch name. Auto-generated from the ticket title if omitted. |
draft-pr-description
/dmx/draft-pr-description
Generates the PR body from the current branch's commits, diff, and ticket. Available standalone to preview before opening a PR. Called automatically by create-pr.
| Argument | Required | Description |
|---|---|---|
base | No | Base branch to diff against. Defaults to branch_base from config. |
status
/dmx/status
Shows a snapshot of in-progress tickets and open pull requests.
| Argument | Required | Description |
|---|---|---|
repo_only | No | Show only GitHub PR status, skip tickets. Defaults to false. |
sync-branch
/dmx/sync-branch
Rebases (or merges) the latest integration branch onto the current feature or bug branch. Pushes the result to origin.
| Argument | Required | Description |
|---|---|---|
strategy | No | Integration strategy. rebase (default) or merge. |
sync
/dmx/sync
Vendors every shared source declared in .dmx/shared-sources.yaml: clones each one at its pinned ref, copies it into .dmx/vendor/{name}/ with a .lock.json recording the resolved commit SHA, and warns about same-name collisions between your repo and the sources. Then commits and pushes the result. Run it whenever you add a source or change a ref.
Blocked on the integration branch — run it on a branch and open a PR. If a source fails to sync, it reports which one and why, and asks before committing the rest.
No arguments.
update-memory
/dmx/update-memory
Reviews spec.md, tasks.md, and the activeContext learning inbox; extracts durable project learnings; reconciles contradictions; syncs into core memory bank files. Commits its own changes (chore: sync memory bank), so it never leaves .dmx/ edits uncommitted. Use on demand. commit and create-pr handle automatic updates during normal workflow.
No arguments.
Specialist commands
docs
/dmx/docs
src/api/rate_limiter.pyWrites clear, human-first documentation: purpose, parameters, return values, and examples. Uses the idiomatic docstring style for the language.
| Argument | Required | Description |
|---|---|---|
path | Yes | File or module to document. |
style | No | docstrings (default), readme, api, or all. |
audience | No | Intended reader. developer (default), user, or both. |
review
/dmx/review
Reviews code with precision and respect. Focuses on clarity, correctness, maintainability, and functional design. Feedback is actionable, concise, and kind.
| Argument | Required | Description |
|---|---|---|
path | No | File or directory to review. Defaults to the current staged diff. |
focus | No | Focus area: correctness, maintainability, performance, naming, or all. Defaults to all. |
secure
/dmx/secure
Analyzes code for vulnerabilities, unsafe patterns, and bad practices. Produces a risk-rated finding list with concrete remediation steps.
| Argument | Required | Description |
|---|---|---|
path | No | File or directory to analyze. Defaults to the current staged diff. |
severity | No | Minimum severity to report: critical, high, medium, low, or all. Defaults to all. |
test
/dmx/test
src/api/rate_limiter.pyWrites tests that enable change. Prioritizes unit tests, covers edge cases and failure modes, uses property-based tests where useful.
| Argument | Required | Description |
|---|---|---|
path | Yes | File or module to write tests for. |
style | No | unit (default), integration, property, or all. |
framework | No | Test framework to use. Auto-detected from the project if omitted (e.g. pytest, jest, vitest). |
Loop runtime commands
run-loop
/dmx/run-loop
spec
Add rate limiting to the public inference endpoint.Starts a dmx loop by name. Reads the loop config from .dmx/loops/{name}.yaml (or a shared source, or the bundled default), initializes job and task state, and runs the first skill. Any description given after the loop name is passed to that first skill as context — for the spec loop, this description becomes the task description that create-ticket uses to scaffold the ticket, branch, and spec.
| Argument | Required | Description |
|---|---|---|
loop | Yes | Name of the loop to run: spec, plan, dev, validate, release, or any custom loop in .dmx/loops/ or a shared source. |
loop-continue
/dmx/loop-continue
Resumes a paused dmx loop after human review at a gate. Advances past the current pause point and runs the next skill (or the validators, if all skills are complete).
No arguments.