Documentation Contributor guides

Use /steward slash commands

Steward responds to slash commands posted as PR or issue comments. They're the contributor-side ergonomics for asking Steward to do something on demand rather than waiting for an automatic trigger. This guide covers the full set, with the contributor-relevant ones in depth and the maintainer-side ones referenced for completeness.

How slash commands work

Drop a command as a comment on a PR or issue:

/steward <command> [arguments]

Rules:

  • Commands fire on comment creation only. Editing a comment with the command text doesn't re-trigger.
  • A command must be on the first line of your comment.
  • The space between /steward and the verb is required.
  • Comment can contain other text below the command line — Steward parses only the first slash-prefixed line.
  • Unknown commands get a polite "unknown command" reply with the full list.

Steward records every command invocation as an audit event (see Audit log + compliance) so the slash-command trail is reviewable later.

Commands every contributor uses

/steward check-reputation

Posts your reputation across every domain of the current repo, decayed to now:

Reputation vector for @alice (decayed to now)

| Domain | Decayed reputation |
| :----- | -----------------: |
| api    |              12.40 |
| docs   |               6.10 |
| ui     |               0.80 |
  • No arguments. Operates on the comment author's identity.
  • Anyone can run it. A drive-by contributor with zero reputation gets an all-zero table; an established contributor sees their accumulated scores.
  • Cross-repo accumulation applies — see Reputation as a contributor. The numbers reflect your activity across every Steward repo with the same domain names, not just this one.

When to use it: before opening a PR if you want to see whether your reputation in the touched domain is above the approval_threshold. Sometimes the answer is "no, you'll need a reviewer" — better to know before you open the PR.

/steward sandbox-me

Asks Steward to assign you a sandbox-labeled open issue:

@alice — assigned `sandbox` issue #142 to you. Closing it
as merged increases your reputation in that domain.
  • No arguments. Picks one issue from the repo's configured sandbox labels.
  • If no sandbox issues are open, you'll get a polite "check back when the maintainers seed the backlog" reply.
  • Works regardless of your current reputation. Even contributors with established reputation can use it (though see "when this isn't right" in Sandbox issues).

When to use it: you want to build reputation in a domain you don't yet have authority in, and the repo has a curated sandbox-issue backlog.

/steward evaluate

Re-runs the per-PR evaluation on the current PR:

  • Only works on PR comments, not issue comments. On an issue, you'll get "this command only works on PRs."
  • Posts a verdict comment like the auto-trigger does (Read the verdict on your PR).
  • The PR must have at least one file mapping to a governance domain. If your changes are entirely outside the governance.pxf domains' path_globs, you'll get "Steward cannot evaluate this PR: no governance domain matches any changed path."

When to use it:

  • The original automatic evaluation arrived as failed and the upstream cause is resolved.
  • The repo is on the Community tier where automatic per-PR evaluation is opt-in — /steward evaluate works on every tier.
  • You've made significant changes since the last verdict and want a fresh score without pushing a no-op commit.

Commands for high-reputation contributors

/steward slash <pr-number> <issue-number>

Applies a retroactive slashing penalty to a merged PR linked to a critical bug:

/steward slash 142 187

This says "PR #142 (which is merged) caused issue #187 (the critical bug). Reduce the original PR author's reputation in the touched domain."

Eligibility rules:

  • The repo's governance.pxf must have slashing.enabled = true. If it doesn't, you'll get "slashing is disabled in governance.pxf."
  • PR #142 must be already merged. Slashing an open PR doesn't make sense.
  • Your reputation in PR #142's domain must be at or above the approval_threshold for that domain. Only contributors who could have approved the PR can slash it.
  • A PR/issue pair can only be slashed once — repeated invocations confirm "PR #N has already been slashed for issue #M; the penalty stands."

The penalty amount grows with days_undetected (longer between merge and slash = larger penalty, capped at base_points × max_multiplier).

On success:

Slashing applied. PR #142 (auth domain) was undetected for
47.3 days; 6-point penalty applied to the original author's
reputation in auth.

Slashing is a load-bearing trust signal — use it when a merged PR genuinely caused a critical bug, not as a punitive hammer in unrelated disputes. Audit trails the action with your handle + reputation for accountability.

Other commands

These exist but are less contributor-relevant. Brief mentions for completeness:

Command Use case Restriction
/steward release [tag] [prev-tag] Drafts release notes via GitHub's API. Posts as a comment. Anyone can run; no governance side effects.
/steward analyze-alternatives Surfaces highest-Jaccard import-pair similarities on the PR's Go files (the behavioral-signature analyzer). Audit-only — never blocks merges. PR comment only.
/steward constitution Bootstraps the initial governance.pxf for a fresh repo with placeholder thresholds. Repo owner / installer only.

For the full mechanical detail on any of these, the source of truth is internal/judge/app/slash.go.

Common gotchas

  • Typing /steward Evaluate (capital E) — verbs are case-sensitive. Use lowercase.
  • Putting the command on the second line. Steward only parses the first slash-prefixed line. If you precede the command with anything else, the command isn't seen.
  • Editing a comment to add the command later. Doesn't trigger. Post a fresh comment instead.
  • Running /steward evaluate on an issue, not a PR. You'll get a polite error.
  • Spelling the command as /steward sandbox (no -me). Unknown command. The verb is sandbox-me.
  • Including the /steward literally inside backticks or code blocks. The webhook parses raw comment body text, so backticks around /steward sandbox-me still trigger the command if it's on the first line. Use <code> HTML tags or quote the comment if you really want to mention a command without invoking it.

Quoting a command in your text

If you want to mention a slash command in a comment without invoking it (e.g., explaining to another contributor), make sure it's NOT on the first line:

Hey @bob — try one of these:

/steward sandbox-me
/steward check-reputation

Steward parses the first line ("Hey @bob"), sees no slash-prefix, and does nothing. The subsequent lines are text, not commands.

Or wrap in a code fence:

```
/steward sandbox-me
```

The triple-backtick block isn't parsed as a command line.

What's next