@rudderhq/agent-runtime-opencode-local 0.4.6-canary.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/execute.d.ts +2 -2
- package/dist/server/execute.d.ts.map +1 -1
- package/dist/server/execute.js +60 -20
- package/dist/server/execute.js.map +1 -1
- package/dist/server/skills.d.ts.map +1 -1
- package/dist/server/skills.js +17 -6
- package/dist/server/skills.js.map +1 -1
- package/package.json +2 -2
- package/skills/rudder-docs/SKILL.md +161 -0
- package/skills/rudder-docs/evals/trigger-evals.json +82 -0
- package/skills/{rudder → rudder-docs}/references/api-reference.md +17 -1
- package/skills/{rudder → rudder-docs}/references/cli-reference.md +49 -94
- package/skills/rudder-docs/references/control-plane-practices.md +231 -0
- package/skills/{rudder → rudder-docs}/references/organization-skills.md +15 -1
- package/skills/rudder-docs/references/source-map.md +138 -0
- package/skills/visualize/SKILL.md +132 -0
- package/skills/visualize/agents/openai.yaml +7 -0
- package/skills/visualize/assets/example-chart.html +89 -0
- package/skills/visualize/references/runtime-contract.md +114 -0
- package/skills/rudder/SKILL.md +0 -314
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "Rudder 里 Chat 和 issue 的职责边界到底是什么?我们团队正在设计交接流程,请给我当前官方文档链接,并说明什么时候应该保留在 Chat。",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "Before I write this integration, verify which Rudder MCP tools this agent can actually call in the current run. Please use live capability evidence instead of memory.",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "我 checkout 一个已分配的 Rudder issue 时返回了 409。为什么不能直接重试?请对照当前产品契约、源码和测试解释冲突语义。",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "How do I configure Codex as a Rudder runtime on the latest released version? I need the supported fields and exact official setup page, not an example from the development branch.",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "Where in the official Rudder source are bundled skills materialized for local runtime adapters, and which tests protect stale managed-skill cleanup?",
|
|
20
|
+
"should_trigger": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "Rudder 显示这个 skill 已 enabled,但刚才的 run 没有使用它。这是 selected、loaded 和 used 语义不同,还是运行时出了 bug?请核对当前契约。",
|
|
24
|
+
"should_trigger": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "我把交付文档写进 Rudder Library 后,为什么评论里必须使用返回的 markdownLink,不能手写 library-entry URL?请给出准确规则。",
|
|
28
|
+
"should_trigger": true
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"query": "Which Rudder API endpoint is the compatibility fallback behind the CLI issue checkout command, and under what failure conditions is direct API fallback allowed?",
|
|
32
|
+
"should_trigger": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"query": "RUD-248 已分配给我,但标记 done 失败了。请先查清当前 Rudder 对完成评论和验证证据的精确要求,再告诉我应该用哪个受支持的操作。",
|
|
36
|
+
"should_trigger": true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"query": "我需要给 agent 添加 agent-browser。Rudder 的 skills enable 和 skills sync 到底哪个是增量、哪个会替换完整集合?请核对精确策略后回答。",
|
|
40
|
+
"should_trigger": true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"query": "hi",
|
|
44
|
+
"should_trigger": false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"query": "这个 React 组件在当前 Rudder run 里渲染成空白了,帮我修复状态更新逻辑并补一个组件测试。",
|
|
48
|
+
"should_trigger": false
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"query": "RUD-248 这个 issue 已经分配给我,检查结果也都在上下文里;直接用当前 typed tool 把它标成 done。",
|
|
52
|
+
"should_trigger": false
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"query": "Use the exposed Rudder skill tool to enable agent-browser for this agent; the exact selection and target agent are already present in the active context.",
|
|
56
|
+
"should_trigger": false
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"query": "把下面这段提到 rudder control 的英文产品文案总结成三条中文要点;这里的 rudder 是船舵控制,不是软件产品。",
|
|
60
|
+
"should_trigger": false
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"query": "在这个 Rudder run 里分析附件中的三家竞品定价表,算出年付折扣并推荐我们的套餐价格。",
|
|
64
|
+
"should_trigger": false
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"query": "Write a short email to the design team saying the issue is complete and that the new screenshots are ready for review.",
|
|
68
|
+
"should_trigger": false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"query": "Please fix the spelling mistakes on the docs page in this repository, preserve its existing tone, and run the markdown linter afterward.",
|
|
72
|
+
"should_trigger": false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"query": "帮我设计一个名叫 Rudder 的船舵图标:深蓝色、圆形徽章、透明背景,输出 1024px PNG。",
|
|
76
|
+
"should_trigger": false
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"query": "用当前已经暴露的 Library 文件读取工具打开季度计划,把第二节复制到这条聊天里;路径和权限都已在上下文中。",
|
|
80
|
+
"should_trigger": false
|
|
81
|
+
}
|
|
82
|
+
]
|
|
@@ -2,10 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
Internal/debug reference for the Rudder control plane API.
|
|
4
4
|
|
|
5
|
-
-
|
|
5
|
+
- The `rudder-docs` router treats this as a compatibility and source-debugging
|
|
6
|
+
reference, not the normal first interface for agent operations.
|
|
6
7
|
- The stable agent command catalog lives in `cli-reference.md`.
|
|
8
|
+
- Conditional ownership, review, workspace, and authentication guidance lives
|
|
9
|
+
in `control-plane-practices.md`.
|
|
7
10
|
- Keep this document for compatibility, low-level debugging, and route-level implementation work.
|
|
8
11
|
|
|
12
|
+
## Section Map
|
|
13
|
+
|
|
14
|
+
- [Canonical terms](#canonical-terms)
|
|
15
|
+
- [Core agent context](#core-agent-context)
|
|
16
|
+
- [Issue workflows](#issue-workflows)
|
|
17
|
+
- [Organization surfaces](#organization-surfaces)
|
|
18
|
+
- [Approval workflows](#approval-workflows)
|
|
19
|
+
- [Agent configuration and instructions](#agent-configuration-and-instructions)
|
|
20
|
+
- [Organization skills](#organization-skills)
|
|
21
|
+
- [OpenClaw invite](#openclaw-invite)
|
|
22
|
+
- [Organization portability](#organization-portability)
|
|
23
|
+
- [Worked example](#worked-example-ic-heartbeat)
|
|
24
|
+
|
|
9
25
|
## Canonical Terms
|
|
10
26
|
|
|
11
27
|
- Use `orgId` and `/api/orgs/...` routes.
|
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
# Rudder Agent CLI Reference
|
|
2
2
|
|
|
3
|
-
Stable
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
Stable typed-tool and CLI fallback catalog for the bundled `rudder-docs`
|
|
4
|
+
package. Prefer first-party Rudder MCP tools when the runtime exposes them; use
|
|
5
|
+
these CLI commands as fallback when MCP is unavailable or a Rudder MCP tool
|
|
6
|
+
returns a transport or configuration error.
|
|
7
|
+
|
|
8
|
+
## Section Map
|
|
9
|
+
|
|
10
|
+
- [Operating policy owners](#operating-policy-owners)
|
|
11
|
+
- [Defaults](#defaults)
|
|
12
|
+
- [JSON output contract](#json-output-contract)
|
|
13
|
+
- [Agent V1 commands](#agent-v1-commands)
|
|
14
|
+
- [Issue command I/O and shapes](#issue-command-io-and-shapes)
|
|
15
|
+
- [Renderable Library CLI output](#renderable-library-cli-output)
|
|
16
|
+
- [Reviewer decision command shapes](#reviewer-decision-command-shapes)
|
|
17
|
+
- [Compatibility commands](#compatibility-commands)
|
|
18
|
+
|
|
19
|
+
## Operating Policy Owners
|
|
20
|
+
|
|
21
|
+
Keep this file focused on commands and CLI-specific I/O. Consult the exact
|
|
22
|
+
control-plane owner for operating behavior:
|
|
23
|
+
|
|
24
|
+
- [Interface and Chat/issue scope](control-plane-practices.md#interface-and-scope)
|
|
25
|
+
- [Ownership, checkout, and wake scope](control-plane-practices.md#ownership-checkout-and-wake-scope)
|
|
26
|
+
- [Comments, mentions, and evidence](control-plane-practices.md#comments-mentions-and-evidence)
|
|
27
|
+
- [Review and close-out](control-plane-practices.md#review-and-close-out)
|
|
28
|
+
- [Durable Library artifacts](control-plane-practices.md#durable-library-artifacts)
|
|
29
|
+
- [Git identity and attribution](control-plane-practices.md#git-identity-and-attribution)
|
|
13
30
|
|
|
14
31
|
## Defaults
|
|
15
32
|
|
|
@@ -24,8 +41,6 @@ operator intent or team governance requires that structure.
|
|
|
24
41
|
|
|
25
42
|
`rudder ... --json` commands must write valid JSON to stdout on success. ID fields in CLI JSON use short display IDs by default; pass `--full-ids` to preserve raw UUIDs. Short run IDs returned by CLI output can be passed back into `rudder runs get`, `events`, `log`, `transcript`, `errors`, `cancel`, and `retry`. If a command cannot produce the requested JSON, it must exit nonzero and write a diagnostic error to stderr. An exit-0 command with empty stdout is a CLI/runtime defect, not a valid empty result.
|
|
26
43
|
|
|
27
|
-
Direct API fallback is allowed for heartbeat close-out only when a required CLI command fails diagnostically or returns exit 0 with empty stdout. When using fallback, note the affected command and reason in the issue comment or run notes so the CLI path can be fixed.
|
|
28
|
-
|
|
29
44
|
## Agent V1 Commands
|
|
30
45
|
|
|
31
46
|
| MCP Tool | CLI Fallback | Description | Mutating | Org | Agent | Run ID |
|
|
@@ -100,108 +115,48 @@ Direct API fallback is allowed for heartbeat close-out only when a required CLI
|
|
|
100
115
|
| `rudder_chat_archive` | `rudder chat archive <chat-id>` | Archive a chat conversation without deleting it. | yes | no | no | attached when available |
|
|
101
116
|
| `rudder_runs_list` | `rudder runs list --org-id <id> [--used-skill <skill>] [--loaded-skill <skill>] [--cursor <cursor>] [--full]` | List lightweight run summaries with stable pagination and filters; use --full only for legacy full-row compatibility. | no | required | no | no |
|
|
102
117
|
| `rudder_runs_by_skill` | `rudder runs by-skill <skill> --org-id <id> [--evidence <used-or-loaded>] [--cursor <cursor>] [--full]` | Build a paginated skill evidence packet from lightweight run summaries; use --full only for legacy full-row compatibility. | no | required | no | no |
|
|
103
|
-
| `rudder_runs_get` | `rudder runs get <run-id
|
|
104
|
-
| `rudder_runs_events` | `rudder runs events <run-id> [--after-seq <n>] [--limit <n>]` | List a bounded page of persisted run events with a
|
|
118
|
+
| `rudder_runs_get` | `rudder runs get <run-id> [--full]` | Read one bounded run summary; use --full only from a direct trusted CLI for raw detail. | no | no | no | no |
|
|
119
|
+
| `rudder_runs_events` | `rudder runs events <run-id> [--cursor <cursor>] [--after-seq <n>] [--limit <n>] [--full]` | List a bounded page of persisted run events with a lossless opaque cursor and clipped payload previews. | no | no | no | no |
|
|
105
120
|
| `rudder_runs_log` | `rudder runs log <run-id> [--offset <bytes>] [--limit-bytes <n>]` | Read a bounded byte range of stored run log content. | no | no | no | no |
|
|
106
|
-
| `rudder_runs_transcript` | `rudder runs transcript <run-id> [--turn-limit <n>] [--cursor <cursor>] [--include-output]` | Read
|
|
121
|
+
| `rudder_runs_transcript` | `rudder runs transcript <run-id> [--turn-limit <n>] [--cursor <cursor>] [--include-output] [--full]` | Read a compact server-normalized transcript; --json changes encoding only and --full is direct-CLI-only raw access. | no | no | no | no |
|
|
107
122
|
| `rudder_runs_errors` | `rudder runs errors <run-id>` | List failed tool calls, stderr, runtime failures, and jump-to-context commands. | no | no | no | no |
|
|
108
123
|
| `rudder_runs_cancel` | `rudder runs cancel <run-id>` | Cancel a heartbeat run through the governed server route. | yes | no | no | attached when available |
|
|
109
124
|
| `rudder_runs_retry` | `rudder runs retry <run-id>` | Retry a failed, timed out, or cancelled run through the governed server route. | yes | no | no | attached when available |
|
|
110
125
|
|
|
111
|
-
## Issue
|
|
112
|
-
|
|
113
|
-
Before a successful `todo` or `in_progress` issue run exits, leave one close-out signal with the command that matches the outcome:
|
|
114
|
-
|
|
115
|
-
- progress remains: `rudder issue comment <issue> --body-file <path> [--image <path>]`
|
|
116
|
-
- work is complete: `rudder issue done <issue> --comment-file <path> [--image <path>]`
|
|
117
|
-
- work is blocked: `rudder issue block <issue> --comment-file <path> [--image <path>]`
|
|
118
|
-
- ownership changes: add an explicit handoff comment before or with the assignee update
|
|
126
|
+
## Issue Command I/O And Shapes
|
|
119
127
|
|
|
120
|
-
|
|
121
|
-
unassigned issues, treat that comment as the scope of the wake unless it
|
|
122
|
-
explicitly asks you to implement, modify files, close the issue, or take
|
|
123
|
-
ownership. Questions should get answers, corrections should get acknowledgment
|
|
124
|
-
or explanation, and narrow requests should not become permission to finish the
|
|
125
|
-
whole issue.
|
|
128
|
+
Operating rules live in [ownership, checkout, and wake scope](control-plane-practices.md#ownership-checkout-and-wake-scope), [comments and evidence](control-plane-practices.md#comments-mentions-and-evidence), and [review and close-out](control-plane-practices.md#review-and-close-out). The CLI close-out shapes are:
|
|
126
129
|
|
|
127
|
-
|
|
130
|
+
- progress: `rudder issue comment <issue> --body-file <path> [--image <path>]`
|
|
131
|
+
- done: `rudder issue done <issue> --comment-file <path> [--image <path>]`
|
|
132
|
+
- blocked: `rudder issue block <issue> --comment-file <path> [--image <path>]`
|
|
128
133
|
|
|
129
|
-
Issue comment and close-out commands accept comment bodies only from files or stdin. For
|
|
134
|
+
Issue comment and close-out commands accept comment bodies only from files or stdin. For multiline Markdown, command names, code spans, code blocks, test summaries, or screenshot evidence, pass `--body-file <path>` or `--comment-file <path>`, or pass `-` to read the body from stdin.
|
|
130
135
|
|
|
131
136
|
Issue comment responses include `shortRef` when available. `rudder issue comments get <issue> <comment-id-or-cmt-ref>` accepts a full comment UUID or `cmt_<uuid-prefix>`, and `rudder issue comments list <issue> --after <comment-id-or-cmt-ref>` accepts the same forms for the pagination anchor. Use the full UUID when a short ref is ambiguous within the issue.
|
|
132
137
|
|
|
133
138
|
`--image` may be repeated. The CLI uploads each local PNG/JPEG/WebP/GIF as an issue attachment and appends Markdown image links to the comment text before sending it.
|
|
134
139
|
|
|
135
|
-
|
|
140
|
+
## Renderable Library CLI Output
|
|
136
141
|
|
|
137
|
-
|
|
142
|
+
File placement and handoff policy lives in [Durable Library artifacts](control-plane-practices.md#durable-library-artifacts). Request a renderable reference with `rudder library file ref <library-relative-path> --json`.
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
The relevant JSON fields are:
|
|
140
145
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
project context. When there is no project context, write durable generated
|
|
145
|
-
chat/work artifacts under
|
|
146
|
-
`$RUDDER_ORG_WORKSPACE_ROOT/artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>`
|
|
147
|
-
and reference the Library-relative product path
|
|
148
|
-
`artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>`. After creating,
|
|
149
|
-
updating, or reading a durable Library file, use `rudder library file ref` to
|
|
150
|
-
get the CLI-returned `markdownLink` for issue comments, review comments,
|
|
151
|
-
blocker notes, done comments, and chat replies.
|
|
146
|
+
- `libraryEntryId`: stable identity for the Library file.
|
|
147
|
+
- `mentionHref`: raw renderable target, optionally with a Rudder-generated path hint.
|
|
148
|
+
- `markdownLink`: complete Markdown link for the renderer.
|
|
152
149
|
|
|
153
|
-
|
|
154
|
-
printf '%s\n' "<markdown body>" > "$RUDDER_PROJECT_LIBRARY_ROOT/<issue>.md"
|
|
155
|
-
result="$(rudder library file ref "$RUDDER_PROJECT_LIBRARY_PATH/<issue>.md" --json)"
|
|
156
|
-
printf '%s\n' "$result" | jq -r .markdownLink
|
|
150
|
+
The `ref` argument is Library-relative, not an absolute filesystem path. CLI fallback shapes are `rudder library file get <library-relative-path> --json` and `rudder library file put <library-relative-path> --body-file <path> --json`. `rudder library file link <library-relative-path> --json` remains a compatibility alias for `ref`.
|
|
157
151
|
|
|
158
|
-
|
|
159
|
-
printf '%s\n' "<markdown body>" > "$RUDDER_ORG_WORKSPACE_ROOT/artifacts/YYYY-MM-DD/<conversation-title>/<artifact>.md"
|
|
160
|
-
result="$(rudder library file ref "artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>" --json)"
|
|
161
|
-
printf '%s\n' "$result" | jq -r .markdownLink
|
|
162
|
-
```
|
|
152
|
+
## Reviewer Decision Command Shapes
|
|
163
153
|
|
|
164
|
-
|
|
154
|
+
Reviewer policy lives in [Review and close-out](control-plane-practices.md#review-and-close-out). Supported decision command shapes are:
|
|
165
155
|
|
|
166
|
-
- `
|
|
167
|
-
- `
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
- `markdownLink`: complete Markdown link that the renderer turns into a Library
|
|
171
|
-
chip. Its identity remains the entry id; any `p` query value is only a
|
|
172
|
-
synchronous navigation hint and agents should not hand-write it.
|
|
173
|
-
|
|
174
|
-
Use `rudder library file get/put` only when local filesystem access to the
|
|
175
|
-
Library is unavailable, such as remote or restricted runtimes. `rudder library
|
|
176
|
-
file link <path> --json` remains as a compatibility alias for `ref`. The
|
|
177
|
-
`ref` path is Library-relative, for example
|
|
178
|
-
`$RUDDER_PROJECT_LIBRARY_PATH/<relative-file>` with project context or
|
|
179
|
-
`artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>` without project
|
|
180
|
-
context; do not pass absolute filesystem paths such as
|
|
181
|
-
`$RUDDER_PROJECT_LIBRARY_ROOT/...` or `$RUDDER_ORG_WORKSPACE_ROOT/...`. Posting
|
|
182
|
-
the returned `markdownLink` is the Rudder-visible handoff checkpoint for direct
|
|
183
|
-
filesystem writes. If `$RUDDER_PROJECT_LIBRARY_ROOT` is unset or inaccessible
|
|
184
|
-
but `$RUDDER_PROJECT_LIBRARY_PATH` exists, use
|
|
185
|
-
`rudder library file get/put "$RUDDER_PROJECT_LIBRARY_PATH/<relative-file>"` as
|
|
186
|
-
the remote or restricted runtime fallback. If there is no project context, use
|
|
187
|
-
the organization artifacts fallback path instead. Treat `library-file://...` as
|
|
188
|
-
legacy weak path syntax and use it only when preserving old content that has no
|
|
189
|
-
`libraryEntryId`.
|
|
190
|
-
|
|
191
|
-
## Git Identity Policy
|
|
192
|
-
|
|
193
|
-
Codex local runs preserve the operator `HOME` for host CLI auth while using managed `CODEX_HOME` and Git sidecars for runtime isolation. Codex local runs and runtime-created git worktrees are prepared with `user.useConfigOnly=true` so missing identity fails fast instead of producing `*@*.local` commits. If Git reports missing author or committer identity, configure the repository explicitly with `git config user.name <name>` and `git config user.email <safe-email>`; do not unset the guard or accept auto-detected local-host metadata.
|
|
194
|
-
|
|
195
|
-
## Reviewer Close-Out Signals
|
|
196
|
-
|
|
197
|
-
When the inbox row or wake context says `relationship: "reviewer"`, `role: "reviewer"`, or `wakeSource: "review"`, finish the review with one structured reviewer decision. Reviewer work can be either `in_review` or `blocked`; blocked reviewer work means blocker triage, not implementation takeover.
|
|
198
|
-
|
|
199
|
-
- approve: `rudder issue review <issue> --decision approve --comment-file <path>`
|
|
200
|
-
- request changes: `rudder issue review <issue> --decision request_changes --comment-file <path>`
|
|
201
|
-
- needs follow-up: `rudder issue review <issue> --decision needs_followup --comment-file <path>`
|
|
202
|
-
- blocked or blocker confirmed: `rudder issue review <issue> --decision blocked --comment-file <path>`; use this only for a confirmed human/external blocker and name the next human action.
|
|
203
|
-
|
|
204
|
-
Do not rely on a free-form reject or accept comment as the review outcome. The structured decision is the durable close-out signal. If a blocked reviewer decision needs human input, name the next human action in the review comment; Rudder records only the reviewer decision and removes the issue from repeated reviewer pickup until the board changes the issue.
|
|
156
|
+
- `rudder issue review <issue> --decision approve --comment-file <path>`
|
|
157
|
+
- `rudder issue review <issue> --decision request_changes --comment-file <path>`
|
|
158
|
+
- `rudder issue review <issue> --decision needs_followup --comment-file <path>`
|
|
159
|
+
- `rudder issue review <issue> --decision blocked --comment-file <path>`
|
|
205
160
|
|
|
206
161
|
## Compatibility Commands
|
|
207
162
|
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Rudder Control-Plane Practices
|
|
2
|
+
|
|
3
|
+
Consult this reference only for questions about exact Rudder operating
|
|
4
|
+
behavior. It is conditional documentation, not a trigger and not an always-run
|
|
5
|
+
workflow. For exact tool and CLI syntax, pair the relevant rule with
|
|
6
|
+
`cli-reference.md` instead of recreating its command table here.
|
|
7
|
+
|
|
8
|
+
## Section Map
|
|
9
|
+
|
|
10
|
+
- [Interface and scope](#interface-and-scope)
|
|
11
|
+
- [Ownership, checkout, and wake scope](#ownership-checkout-and-wake-scope)
|
|
12
|
+
- [Comments, mentions, and evidence](#comments-mentions-and-evidence)
|
|
13
|
+
- [Review and close-out](#review-and-close-out)
|
|
14
|
+
- [Approvals](#approvals)
|
|
15
|
+
- [Delegation, escalation, and budget](#delegation-escalation-and-budget)
|
|
16
|
+
- [Git identity and attribution](#git-identity-and-attribution)
|
|
17
|
+
- [Workspaces, projects, and resources](#workspaces-projects-and-resources)
|
|
18
|
+
- [Durable Library artifacts](#durable-library-artifacts)
|
|
19
|
+
- [Organization and agent skills](#organization-and-agent-skills)
|
|
20
|
+
- [Authentication and runtime environment](#authentication-and-runtime-environment)
|
|
21
|
+
- [User activity context](#user-activity-context)
|
|
22
|
+
|
|
23
|
+
## Interface And Scope
|
|
24
|
+
|
|
25
|
+
- Prefer exposed first-party Rudder typed tools for normal control-plane work.
|
|
26
|
+
Use the installed `rudder ... --json` CLI as the compatibility fallback when
|
|
27
|
+
MCP is unavailable or a Rudder tool has a transport or configuration error.
|
|
28
|
+
- Use `rudder agent capabilities --json` to discover the current capability
|
|
29
|
+
set. Treat direct API use as an internal, debugging, or compatibility path,
|
|
30
|
+
not the normal interface.
|
|
31
|
+
- Direct API fallback for required close-out is acceptable only when the CLI
|
|
32
|
+
exits nonzero with a diagnostic error or incorrectly exits zero with empty
|
|
33
|
+
stdout. Record the failed command and fallback reason in the issue comment or
|
|
34
|
+
run notes.
|
|
35
|
+
- If wake text explicitly declares HTTP compatibility mode, follow that
|
|
36
|
+
bounded mode for the run.
|
|
37
|
+
|
|
38
|
+
Chat and issues are parallel work surfaces. Continue chat-scoped work in Chat
|
|
39
|
+
unless the operator asks for issue structure or team policy requires explicit
|
|
40
|
+
ownership, status, dependencies, or review. Do not create an issue merely
|
|
41
|
+
because work is executable, durable, long-running, or reviewable.
|
|
42
|
+
|
|
43
|
+
## Ownership, Checkout, And Wake Scope
|
|
44
|
+
|
|
45
|
+
- Before issue-scoped execution, checkout the assigned issue. Never retry a
|
|
46
|
+
checkout that returns `409`; stop and report the ownership conflict.
|
|
47
|
+
- Never look for unassigned work. Work the authenticated agent's assignee or
|
|
48
|
+
reviewer inbox and the explicit wake context.
|
|
49
|
+
- Self-assign only when a wake comment explicitly transfers ownership.
|
|
50
|
+
- A wake on an issue not assigned to the agent, including a user-owned or
|
|
51
|
+
unassigned issue, is scoped to that comment unless it explicitly requests
|
|
52
|
+
implementation, file changes, close-out, or ownership transfer. Answer a
|
|
53
|
+
question as a question; do not silently take over the whole issue.
|
|
54
|
+
- Treat `issue_passive_followup` as follow-up on the same issue, not a fresh
|
|
55
|
+
assignment. Treat `issue_review_closeout_missing` as review follow-up.
|
|
56
|
+
|
|
57
|
+
## Comments, Mentions, And Evidence
|
|
58
|
+
|
|
59
|
+
- Keep issue comments concise: a short status line, the material change or
|
|
60
|
+
blocker, validation evidence, and links to related entities, Library files,
|
|
61
|
+
or external pages.
|
|
62
|
+
- Use normal Markdown links with Rudder's canonical renderable entity schemes:
|
|
63
|
+
`issue://`, `agent://`, `automation://`, `project://`, `chat://`, and
|
|
64
|
+
`skill://`. Add `?c=<comment-id>` to an issue URI for a specific comment.
|
|
65
|
+
- Add `?intent=wake` to an agent URI only when intentionally waking that agent;
|
|
66
|
+
omit it for a reference-only link. Plain text names are not wake requests.
|
|
67
|
+
- For Library files, copy the returned `markdownLink` instead of constructing a
|
|
68
|
+
URI. Link external pages with a descriptive Markdown `https` link.
|
|
69
|
+
- Multiline comments, code spans, test summaries, and Markdown should be passed
|
|
70
|
+
from a file or stdin according to the CLI reference. Do not depend on fragile
|
|
71
|
+
shell interpolation.
|
|
72
|
+
- Attach each screenshot or image with `--image` when it is evidence in an
|
|
73
|
+
issue comment or close-out. A local filesystem path alone is not inspectable
|
|
74
|
+
by board users.
|
|
75
|
+
- Always communicate before exiting active issue work, except when a blocked
|
|
76
|
+
issue has no new context to report.
|
|
77
|
+
|
|
78
|
+
## Review And Close-Out
|
|
79
|
+
|
|
80
|
+
Use the close-out signal matching the outcome: a progress comment when work
|
|
81
|
+
remains, done with completion evidence, blocked with a blocker comment, or an
|
|
82
|
+
explicit handoff comment with an ownership change.
|
|
83
|
+
|
|
84
|
+
If blocked, set the issue to `blocked`, identify the blocker, name the next
|
|
85
|
+
actor or action, and leave the blocker comment before exit. Do not present
|
|
86
|
+
partial work as complete.
|
|
87
|
+
|
|
88
|
+
A reviewer does not take over implementation unless explicitly asked.
|
|
89
|
+
Reviewer work may cover `in_review` or `blocked`; the latter is blocker triage,
|
|
90
|
+
not implementation ownership. Record one structured durable decision:
|
|
91
|
+
|
|
92
|
+
- `--decision approve` for accepted work;
|
|
93
|
+
- `--decision request_changes` for required changes;
|
|
94
|
+
- `--decision needs_followup` when review remains open; or
|
|
95
|
+
- `--decision blocked` only for a confirmed human or external blocker, with
|
|
96
|
+
the next human action named.
|
|
97
|
+
|
|
98
|
+
Do not rely on free-form accept, reject, or change-request text as the review
|
|
99
|
+
outcome. The structured decision is the durable close-out signal.
|
|
100
|
+
|
|
101
|
+
## Approvals
|
|
102
|
+
|
|
103
|
+
When `RUDDER_APPROVAL_ID` is present, read the approval and its linked issues
|
|
104
|
+
before acting. Preserve the approval boundary: comment, request revision,
|
|
105
|
+
resubmit, approve, or reject only through the governed approval surface and
|
|
106
|
+
only when the current actor is authorized. An approval question does not grant
|
|
107
|
+
permission for the underlying mutation. When an approval remains unresolved,
|
|
108
|
+
report the status and required follow-up rather than bypassing it.
|
|
109
|
+
|
|
110
|
+
## Delegation, Escalation, And Budget
|
|
111
|
+
|
|
112
|
+
- Agent-created issues default to the creating agent when no assignee is
|
|
113
|
+
supplied. Set an explicit assignee when delegating to someone else.
|
|
114
|
+
- Always set `parentId` for delegated work. Set `goalId` unless intentionally
|
|
115
|
+
creating top-level management work. When the organization has a mature label
|
|
116
|
+
taxonomy, choose at least one suitable label after inspecting the available
|
|
117
|
+
labels.
|
|
118
|
+
- Never cancel cross-team work. Reassign upward with an explanation, and use
|
|
119
|
+
`chainOfCommand` for escalation.
|
|
120
|
+
- Above 80% spend, focus on critical work only and avoid expanding scope.
|
|
121
|
+
- Use the canonical `rudder-create-agent` workflow for hiring or agent creation
|
|
122
|
+
rather than assembling a raw control-plane payload.
|
|
123
|
+
|
|
124
|
+
## Git Identity And Attribution
|
|
125
|
+
|
|
126
|
+
Every agent-created commit must include this trailer at the end of the commit
|
|
127
|
+
message:
|
|
128
|
+
|
|
129
|
+
`Co-Authored-By: Rudder <285064165+Rudderhq@users.noreply.github.com>`
|
|
130
|
+
|
|
131
|
+
Use an explicit safe Git identity. Rudder prepares isolated runtime worktrees
|
|
132
|
+
with `user.useConfigOnly=true`; if Git reports a missing identity, configure
|
|
133
|
+
repository-local `user.name` and `user.email`. Do not bypass the guard and
|
|
134
|
+
never accept `*@*.local` author or committer metadata.
|
|
135
|
+
|
|
136
|
+
## Workspaces, Projects, And Resources
|
|
137
|
+
|
|
138
|
+
Each organization has one managed shared workspace under its Rudder instance.
|
|
139
|
+
The organization storage key is filesystem-safe; for UUID-backed organizations
|
|
140
|
+
it is the first 12 lowercase hexadecimal characters with dashes removed. APIs
|
|
141
|
+
continue to use the full organization ID.
|
|
142
|
+
|
|
143
|
+
- The organization Resources catalog is reusable shared context, but it is not
|
|
144
|
+
injected wholesale into every run.
|
|
145
|
+
- A project-linked run or chat receives only that project's attached
|
|
146
|
+
resources. Project Context is the curated starting set, not a knowledge
|
|
147
|
+
boundary; inspect broader Library or organization workspace knowledge when
|
|
148
|
+
the attached set is insufficient.
|
|
149
|
+
- Library resources use `sourceType: "library"` and safe locators below
|
|
150
|
+
`library:projects/<project-key>/`. External resources retain their original
|
|
151
|
+
URL, local path, repository path, or connector locator.
|
|
152
|
+
- Use Workspaces for disk-backed shared files and skill packages. Agent-private
|
|
153
|
+
files live below the agent's workspace key. New projects do not create
|
|
154
|
+
independent workspace roots.
|
|
155
|
+
- Preserve organization and workspace boundaries. Do not query or copy another
|
|
156
|
+
organization's private resources to fill a context gap.
|
|
157
|
+
- Use the typed project or stable CLI surface for project records; do not
|
|
158
|
+
substitute ad hoc API mutations.
|
|
159
|
+
|
|
160
|
+
## Durable Library Artifacts
|
|
161
|
+
|
|
162
|
+
With project context in a local trusted run, write durable project work under
|
|
163
|
+
`$RUDDER_PROJECT_LIBRARY_ROOT`. Use
|
|
164
|
+
`$RUDDER_PROJECT_LIBRARY_PATH/<relative-file>` only when requesting a
|
|
165
|
+
renderable Rudder reference.
|
|
166
|
+
|
|
167
|
+
Without project context, write durable generated chat or work artifacts under
|
|
168
|
+
`$RUDDER_ORG_WORKSPACE_ROOT/artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>`
|
|
169
|
+
and use the product locator
|
|
170
|
+
`library:artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>`. Do not choose an existing project, such as Getting Started, merely to obtain a project
|
|
171
|
+
Library path. Reserve temporary directories for scratch and verification
|
|
172
|
+
artifacts.
|
|
173
|
+
|
|
174
|
+
After creating or changing a durable Library file, request its stable
|
|
175
|
+
`markdownLink` using `rudder library file ref` with the Library-relative path.
|
|
176
|
+
Use that returned link in the final chat reply, issue comment, review, blocker,
|
|
177
|
+
or done comment. Direct filesystem writes are not complete Rudder-visible
|
|
178
|
+
handoff evidence until the returned link is posted.
|
|
179
|
+
|
|
180
|
+
Do not hand-write `library-entry://` URLs or their query parameters. Copy the
|
|
181
|
+
returned `mentionHref` or `markdownLink`; the entry ID is stable identity and a
|
|
182
|
+
Rudder-generated `p` value is only a synchronous path hint. Treat
|
|
183
|
+
`library-file://` and `library-doc://` as legacy references for existing
|
|
184
|
+
content, not new links.
|
|
185
|
+
|
|
186
|
+
Use `rudder library file get/put` only when the local Library filesystem is
|
|
187
|
+
unavailable, such as a remote or restricted runtime. With project context the
|
|
188
|
+
fallback path is `$RUDDER_PROJECT_LIBRARY_PATH/<relative-file>`; without it,
|
|
189
|
+
use `artifacts/YYYY-MM-DD/<conversation-title>/<relative-file>`. These are
|
|
190
|
+
Library-relative paths, never absolute workspace paths.
|
|
191
|
+
|
|
192
|
+
Do not mark an issue done when the request was only to create or revise a plan.
|
|
193
|
+
Reassign the plan for review when that is the expected workflow, and include
|
|
194
|
+
the returned `markdownLink` in the handoff. The retired `rudder issue
|
|
195
|
+
documents` surface is not a durable-plan path.
|
|
196
|
+
|
|
197
|
+
## Organization And Agent Skills
|
|
198
|
+
|
|
199
|
+
For private skills used only by the running agent, prefer agent-private skill
|
|
200
|
+
creation under `AGENT_HOME/skills`, then confirm the skill is enabled in the
|
|
201
|
+
agent snapshot. Installed but disabled skills do not load on future runs.
|
|
202
|
+
|
|
203
|
+
For organization discovery, import, inspection, and assignment, consult
|
|
204
|
+
`organization-skills.md`. `skills enable` is additive and preserves existing
|
|
205
|
+
optional selections; `skills sync` replaces the full optional enabled-skill
|
|
206
|
+
set and should be used only when replacement is intentional. Do not fall back
|
|
207
|
+
to raw HTTP for this workflow in local adapters or packaged Desktop.
|
|
208
|
+
|
|
209
|
+
## Authentication And Runtime Environment
|
|
210
|
+
|
|
211
|
+
Rudder normally injects the runtime context, including `RUDDER_AGENT_ID`,
|
|
212
|
+
`RUDDER_ORG_ID`, `RUDDER_API_URL`, `RUDDER_API_KEY`, and `RUDDER_RUN_ID`.
|
|
213
|
+
Issue, wake, or approval contexts may also provide `RUDDER_TASK_ID`,
|
|
214
|
+
`RUDDER_WAKE_REASON`, `RUDDER_WAKE_COMMENT_ID`, `RUDDER_APPROVAL_ID`,
|
|
215
|
+
`RUDDER_APPROVAL_STATUS`, and `RUDDER_LINKED_ISSUE_IDS`.
|
|
216
|
+
|
|
217
|
+
Never ask for `RUDDER_API_KEY`; never print it. Do not hard-code the API URL.
|
|
218
|
+
For local adapters and packaged Desktop, the installed `rudder` binary should
|
|
219
|
+
already be on `PATH`. Manual local CLI setup outside a managed run may use the
|
|
220
|
+
documented local-cli authentication flow, but it must preserve organization
|
|
221
|
+
scope and should not expose the minted key in durable output.
|
|
222
|
+
|
|
223
|
+
## User Activity Context
|
|
224
|
+
|
|
225
|
+
Use the user activity ledger when a question depends on recent user-authored
|
|
226
|
+
Rudder activity, such as today's conversations, feedback, or handoff context.
|
|
227
|
+
The ledger's excerpts are pointers with provenance, not ground truth when exact
|
|
228
|
+
wording matters. Inspect the cited source before writing durable memory,
|
|
229
|
+
profile changes, or stable preference conclusions. Do not use the ledger to
|
|
230
|
+
bypass permissions or promote private content into long-term memory without a
|
|
231
|
+
clear durable operating lesson.
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Use this reference when a board user or authorized agent asks you to discover, import, inspect, or enable organization skills.
|
|
4
4
|
|
|
5
|
-
This
|
|
5
|
+
This is the organization and agent-skill administration reference for the
|
|
6
|
+
bundled `rudder-docs` package. Use the typed Rudder tool when exposed and the
|
|
7
|
+
documented CLI as its compatibility fallback. General control-plane ownership,
|
|
8
|
+
authentication, and workspace rules remain in `control-plane-practices.md`.
|
|
6
9
|
|
|
7
10
|
For a skill that belongs only to the running agent, do not use organization import or scan commands. Use:
|
|
8
11
|
|
|
@@ -12,6 +15,17 @@ rudder agent skills create "$RUDDER_AGENT_ID" --name "<name>" --description "<de
|
|
|
12
15
|
|
|
13
16
|
Agent-private skill creation writes under `AGENT_HOME/skills` and does not require organization skill mutation permission.
|
|
14
17
|
|
|
18
|
+
## Section Map
|
|
19
|
+
|
|
20
|
+
- [Canonical model](#canonical-model)
|
|
21
|
+
- [Core CLI surface](#core-cli-surface)
|
|
22
|
+
- [Source types](#source-types)
|
|
23
|
+
- [Import examples](#import-examples)
|
|
24
|
+
- [Inspect imported skills](#inspect-imported-skills)
|
|
25
|
+
- [Enable skills on an existing agent](#enable-skills-on-an-existing-agent)
|
|
26
|
+
- [Permission model](#permission-model)
|
|
27
|
+
- [Notes](#notes)
|
|
28
|
+
|
|
15
29
|
## Canonical Model
|
|
16
30
|
|
|
17
31
|
1. import or scan the skill into the organization library
|