diff --git a/apps/gittensory-ui/src/lib/command-reference.ts b/apps/gittensory-ui/src/lib/command-reference.ts
index 3b366525c9..178c9cfc1d 100644
--- a/apps/gittensory-ui/src/lib/command-reference.ts
+++ b/apps/gittensory-ui/src/lib/command-reference.ts
@@ -1,7 +1,149 @@
// Generated by scripts/gen-command-reference.mjs. Do not edit manually.
// Regenerate via `npm run command-reference`.
+export const PUBLIC_COMMAND_ENTRIES = [
+ {
+ "id": "help",
+ "title": "Gittensory command help",
+ "description": "Show public-safe @gittensory command help."
+ },
+ {
+ "id": "ask",
+ "title": "Gittensory contribution context Q&A",
+ "description": "Answer contribution-quality questions from connected cached sources with citations."
+ },
+ {
+ "id": "preflight",
+ "title": "Gittensory preflight",
+ "description": "Summarize public PR hygiene and validation readiness."
+ },
+ {
+ "id": "blockers",
+ "title": "Gittensory readiness blockers",
+ "description": "Explain public-safe readiness blockers."
+ },
+ {
+ "id": "duplicate-check",
+ "title": "Gittensory duplicate & WIP check",
+ "description": "Summarize duplicate and in-progress overlap caution."
+ },
+ {
+ "id": "miner-context",
+ "title": "Gittensory miner context",
+ "description": "Confirm public Gittensor miner context when available."
+ },
+ {
+ "id": "next-action",
+ "title": "Gittensory next step",
+ "description": "Suggest the next public-safe action."
+ },
+ {
+ "id": "reviewability",
+ "title": "Gittensory PR readiness",
+ "description": "Summarize maintainer-friendly PR readiness without private review internals."
+ },
+ {
+ "id": "repo-fit",
+ "title": "Gittensory repository fit",
+ "description": "Summarize public-safe repository fit signals."
+ },
+ {
+ "id": "packet",
+ "title": "Gittensory public packet",
+ "description": "Prepare public-safe PR packet guidance."
+ }
+] as const;
+
export const PUBLIC_COMMAND_LIST =
"@gittensory help\n@gittensory ask\n@gittensory preflight\n@gittensory blockers\n@gittensory duplicate-check\n@gittensory miner-context\n@gittensory next-action\n@gittensory reviewability\n@gittensory repo-fit\n@gittensory packet";
+export const MAINTAINER_COMMAND_ENTRIES = [
+ {
+ "id": "queue-summary",
+ "title": "Gittensory maintainer queue summary",
+ "description": "Post a maintainer-only queue digest from cached GitHub metadata."
+ },
+ {
+ "id": "confirmed-miners",
+ "title": "Gittensory confirmed-miner PRs",
+ "description": "List open PRs whose authors are confirmed in the official-miner cache."
+ },
+ {
+ "id": "review-now",
+ "title": "Gittensory review-now queue",
+ "description": "List cached PRs that look ready for maintainer review."
+ },
+ {
+ "id": "needs-author",
+ "title": "Gittensory needs-author queue",
+ "description": "List cached PRs that need author cleanup before detailed review."
+ },
+ {
+ "id": "duplicate-clusters",
+ "title": "Gittensory duplicate clusters",
+ "description": "List duplicate or WIP clusters visible from cached GitHub metadata."
+ },
+ {
+ "id": "burden-forecast",
+ "title": "Gittensory burden forecast",
+ "description": "Project maintainer review load and queue-growth risk from cached metadata."
+ },
+ {
+ "id": "intake-health",
+ "title": "Gittensory intake health",
+ "description": "Summarize contributor-intake health from cached queue and config signals."
+ },
+ {
+ "id": "outcome-patterns",
+ "title": "Gittensory outcome patterns",
+ "description": "Summarize what this repo actually merges vs closes from cached PR outcomes."
+ },
+ {
+ "id": "noise-report",
+ "title": "Gittensory noise report",
+ "description": "Highlight queue noise sources maintainers should triage first."
+ }
+] as const;
+
export const MAINTAINER_COMMAND_LIST =
"@gittensory queue-summary\n@gittensory confirmed-miners\n@gittensory review-now\n@gittensory needs-author\n@gittensory duplicate-clusters\n@gittensory burden-forecast\n@gittensory intake-health\n@gittensory outcome-patterns\n@gittensory noise-report";
+
+export const ACTION_COMMAND_ENTRIES = [
+ {
+ "id": "gate-override",
+ "title": "Gate override",
+ "description": "Record a maintainer override for this commit's gate check only (does not persist across new commits)."
+ },
+ {
+ "id": "review",
+ "title": "Request review",
+ "description": "Request an auto-review run on the current PR head (`@gittensory re-review` is an alias)."
+ },
+ {
+ "id": "pause",
+ "title": "Pause auto-review",
+ "description": "Pause auto-review for this PR with an optional reason; does not change gate enforcement."
+ },
+ {
+ "id": "resume",
+ "title": "Resume auto-review",
+ "description": "Resume auto-review for this PR with an optional reason; does not change gate enforcement."
+ },
+ {
+ "id": "resolve",
+ "title": "Resolve finding",
+ "description": "Mark a review finding as resolved, optionally naming the finding in trailing text."
+ },
+ {
+ "id": "configuration",
+ "title": "Show configuration",
+ "description": "Show the effective resolved review configuration for this repository."
+ },
+ {
+ "id": "explain",
+ "title": "Explain finding",
+ "description": "Explain a specific review finding; supply the finding reference in trailing text."
+ }
+] as const;
+
+export const ACTION_COMMAND_LIST =
+ "@gittensory gate-override\n@gittensory review\n@gittensory pause\n@gittensory resume\n@gittensory resolve\n@gittensory configuration\n@gittensory explain";
diff --git a/apps/gittensory-ui/src/routeTree.gen.ts b/apps/gittensory-ui/src/routeTree.gen.ts
index 7173d5a8c6..78d409c9f7 100644
--- a/apps/gittensory-ui/src/routeTree.gen.ts
+++ b/apps/gittensory-ui/src/routeTree.gen.ts
@@ -49,6 +49,7 @@ import { Route as DocsMaintainerWorkflowRouteImport } from './routes/docs.mainta
import { Route as DocsMaintainerSelfHostingRouteImport } from './routes/docs.maintainer-self-hosting'
import { Route as DocsMaintainerInstallTrustRouteImport } from './routes/docs.maintainer-install-trust'
import { Route as DocsHowReviewsWorkRouteImport } from './routes/docs.how-reviews-work'
+import { Route as DocsGittensoryCommandsRouteImport } from './routes/docs.gittensory-commands'
import { Route as DocsGithubAppRouteImport } from './routes/docs.github-app'
import { Route as DocsBranchAnalysisRouteImport } from './routes/docs.branch-analysis'
import { Route as DocsBetaOnboardingRouteImport } from './routes/docs.beta-onboarding'
@@ -279,6 +280,11 @@ const DocsHowReviewsWorkRoute = DocsHowReviewsWorkRouteImport.update({
path: '/how-reviews-work',
getParentRoute: () => DocsRoute,
} as any)
+const DocsGittensoryCommandsRoute = DocsGittensoryCommandsRouteImport.update({
+ id: '/gittensory-commands',
+ path: '/gittensory-commands',
+ getParentRoute: () => DocsRoute,
+} as any)
const DocsGithubAppRoute = DocsGithubAppRouteImport.update({
id: '/github-app',
path: '/github-app',
@@ -398,6 +404,7 @@ export interface FileRoutesByFullPath {
'/docs/beta-onboarding': typeof DocsBetaOnboardingRoute
'/docs/branch-analysis': typeof DocsBranchAnalysisRoute
'/docs/github-app': typeof DocsGithubAppRoute
+ '/docs/gittensory-commands': typeof DocsGittensoryCommandsRoute
'/docs/how-reviews-work': typeof DocsHowReviewsWorkRoute
'/docs/maintainer-install-trust': typeof DocsMaintainerInstallTrustRoute
'/docs/maintainer-self-hosting': typeof DocsMaintainerSelfHostingRoute
@@ -455,6 +462,7 @@ export interface FileRoutesByTo {
'/docs/beta-onboarding': typeof DocsBetaOnboardingRoute
'/docs/branch-analysis': typeof DocsBranchAnalysisRoute
'/docs/github-app': typeof DocsGithubAppRoute
+ '/docs/gittensory-commands': typeof DocsGittensoryCommandsRoute
'/docs/how-reviews-work': typeof DocsHowReviewsWorkRoute
'/docs/maintainer-install-trust': typeof DocsMaintainerInstallTrustRoute
'/docs/maintainer-self-hosting': typeof DocsMaintainerSelfHostingRoute
@@ -516,6 +524,7 @@ export interface FileRoutesById {
'/docs/beta-onboarding': typeof DocsBetaOnboardingRoute
'/docs/branch-analysis': typeof DocsBranchAnalysisRoute
'/docs/github-app': typeof DocsGithubAppRoute
+ '/docs/gittensory-commands': typeof DocsGittensoryCommandsRoute
'/docs/how-reviews-work': typeof DocsHowReviewsWorkRoute
'/docs/maintainer-install-trust': typeof DocsMaintainerInstallTrustRoute
'/docs/maintainer-self-hosting': typeof DocsMaintainerSelfHostingRoute
@@ -578,6 +587,7 @@ export interface FileRouteTypes {
| '/docs/beta-onboarding'
| '/docs/branch-analysis'
| '/docs/github-app'
+ | '/docs/gittensory-commands'
| '/docs/how-reviews-work'
| '/docs/maintainer-install-trust'
| '/docs/maintainer-self-hosting'
@@ -635,6 +645,7 @@ export interface FileRouteTypes {
| '/docs/beta-onboarding'
| '/docs/branch-analysis'
| '/docs/github-app'
+ | '/docs/gittensory-commands'
| '/docs/how-reviews-work'
| '/docs/maintainer-install-trust'
| '/docs/maintainer-self-hosting'
@@ -695,6 +706,7 @@ export interface FileRouteTypes {
| '/docs/beta-onboarding'
| '/docs/branch-analysis'
| '/docs/github-app'
+ | '/docs/gittensory-commands'
| '/docs/how-reviews-work'
| '/docs/maintainer-install-trust'
| '/docs/maintainer-self-hosting'
@@ -1024,6 +1036,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DocsHowReviewsWorkRouteImport
parentRoute: typeof DocsRoute
}
+ '/docs/gittensory-commands': {
+ id: '/docs/gittensory-commands'
+ path: '/gittensory-commands'
+ fullPath: '/docs/gittensory-commands'
+ preLoaderRoute: typeof DocsGittensoryCommandsRouteImport
+ parentRoute: typeof DocsRoute
+ }
'/docs/github-app': {
id: '/docs/github-app'
path: '/github-app'
@@ -1204,6 +1223,7 @@ interface DocsRouteChildren {
DocsBetaOnboardingRoute: typeof DocsBetaOnboardingRoute
DocsBranchAnalysisRoute: typeof DocsBranchAnalysisRoute
DocsGithubAppRoute: typeof DocsGithubAppRoute
+ DocsGittensoryCommandsRoute: typeof DocsGittensoryCommandsRoute
DocsHowReviewsWorkRoute: typeof DocsHowReviewsWorkRoute
DocsMaintainerInstallTrustRoute: typeof DocsMaintainerInstallTrustRoute
DocsMaintainerSelfHostingRoute: typeof DocsMaintainerSelfHostingRoute
@@ -1239,6 +1259,7 @@ const DocsRouteChildren: DocsRouteChildren = {
DocsBetaOnboardingRoute: DocsBetaOnboardingRoute,
DocsBranchAnalysisRoute: DocsBranchAnalysisRoute,
DocsGithubAppRoute: DocsGithubAppRoute,
+ DocsGittensoryCommandsRoute: DocsGittensoryCommandsRoute,
DocsHowReviewsWorkRoute: DocsHowReviewsWorkRoute,
DocsMaintainerInstallTrustRoute: DocsMaintainerInstallTrustRoute,
DocsMaintainerSelfHostingRoute: DocsMaintainerSelfHostingRoute,
diff --git a/apps/gittensory-ui/src/routes/docs.gittensory-commands.tsx b/apps/gittensory-ui/src/routes/docs.gittensory-commands.tsx
new file mode 100644
index 0000000000..a65079c500
--- /dev/null
+++ b/apps/gittensory-ui/src/routes/docs.gittensory-commands.tsx
@@ -0,0 +1,158 @@
+import { createFileRoute, Link } from "@tanstack/react-router";
+
+import { DocsPage } from "@/components/site/docs-page";
+import { Callout, CodeBlock } from "@/components/site/primitives";
+import {
+ ACTION_COMMAND_ENTRIES,
+ MAINTAINER_COMMAND_ENTRIES,
+ PUBLIC_COMMAND_ENTRIES,
+} from "@/lib/command-reference";
+
+export const Route = createFileRoute("/docs/gittensory-commands")({
+ head: () => ({
+ meta: [
+ { title: "@gittensory command reference — Gittensory docs" },
+ {
+ name: "description",
+ content:
+ "Every @gittensory PR and issue comment command: syntax, default authorization roles, and the hard boundary between auto-review and the one-shot gate.",
+ },
+ { property: "og:title", content: "@gittensory command reference — Gittensory docs" },
+ {
+ property: "og:description",
+ content:
+ "Every @gittensory PR and issue comment command: syntax, default authorization roles, and the hard boundary between auto-review and the one-shot gate.",
+ },
+ { property: "og:url", content: "/docs/gittensory-commands" },
+ ],
+ links: [{ rel: "canonical", href: "/docs/gittensory-commands" }],
+ }),
+ component: GittensoryCommandsReference,
+});
+
+const DEFAULT_ROLE_SUMMARY: Record
+ Post a comment on a pull request (or issue thread) mentioning
+ Default allowed roles ship in the worker configuration. A maintainer can tighten or widen a single verb
+ via
+ Maintainer-only digest verbs ignore a plain {title}
+
+
+
+
+
+
+
+ {entries.map((entry) => (
+ Syntax
+ Effect
+ Default roles
+
+
+ ))}
+
+
+ @gittensory {entry.id}
+
+ {entry.description}
+ {DEFAULT_ROLE_SUMMARY[entry.id] ?? "see policy"}
+ pause and resume affect only auto-review scheduling — not gate enforcement.
+ See How reviews work for the gate/review split.
+ Syntax
+ @gittensory followed by a
+ verb. Trailing free text becomes the command argument where noted (for example{" "}
+ @gittensory ask what should I fix first?).
+ Per-command authorization overrides
+ commandAuthorization in .gittensory.yml (resolved in the same order as
+ other per-repo settings: manifest → database → defaults).
+ pr_author role even when widened — only
+ maintainer, collaborator, and confirmed_miner survive the clamp for those commands.
+ Related docs
+
+
+
+ For syntax, default roles, PR action verbs, and the gate vs auto-review boundary, see the{" "} + @gittensory command reference. +