Skip to content

feat: zeabur-server-ssh skill 改用 server exec(DES-803)#72

Merged
leechenghsiu merged 4 commits into
mainfrom
matthewlee/des-803-更新-zeabur-server-ssh-skill-改用-server-exec
Jul 10, 2026

Hidden character warning

The head ref may contain hidden characters: "matthewlee/des-803-\u66f4\u65b0-zeabur-server-ssh-skill-\u6539\u7528-server-exec"
Merged

feat: zeabur-server-ssh skill 改用 server exec(DES-803)#72
leechenghsiu merged 4 commits into
mainfrom
matthewlee/des-803-更新-zeabur-server-ssh-skill-改用-server-exec

Conversation

@leechenghsiu

@leechenghsiu leechenghsiu commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

⚠️ DRAFT — 先別 merge。 這個 skill 改動相依於 CLI server exec 發版到 npm。
前置zeabur/cli#263(DES-802)merge + CLI 發新版。發版後才 mark ready / merge。

背景

zeabur-server-ssh skill 原本教兩步:server ssh-info 拿憑證 → 自己拼 ssh2/sshpass。這對含特殊字元的密碼會轉義崩壞(密碼被塞進多層轉義 shell 腳本),也綁死 sandbox 專屬 NODE_PATH

改動

zeabur server exec --id <id> -- <command> 設為主要方法:CLI 內部拿憑證、跑命令,密碼不經 shell、不需 ssh2/sshpass。

  • kubectl 範例改用 server exec
  • 保留 ssh-info + ssh2/sshpass 為 fallback(舊 CLI 用)。
  • 更新 frontmatter description 觸發詞(加「run a command on server」)。
  • 已跑 scripts/sync-codex-plugin.mjs 重新產生 plugins/zeabur/(CI sync 檢查會過)。

為什麼保留 fallback

npx zeabur@latest 一定抓最新版,發版後 server exec 就有了。fallback 是保險:萬一極舊快取 / 未發版環境,agent 仍能用兩步式。

影響範圍

skill 是 marketplace plugin,用戶自己的 coding agent 也會用 —— server exec 對他們是增益(更簡單、不用 ssh2)、不破壞既有兩步式。

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

Summary by CodeRabbit

  • Documentation
    • Updated the dedicated-server SSH/exec skill guide to make npx zeabur@latest server exec the primary workflow for running server-level commands and debugging Kubernetes workloads.
    • Clarified that credential/password handling is managed by the CLI, and improved guidance on quoting compound remote commands and correctly propagating exit codes.
    • Reorganized and expanded kubectl instructions around server exec, including an “always use sudo kubectl” requirement and a compact command reference.
    • Streamlined the manual SSH fallback and refreshed troubleshooting tips (batching checks, -o wide, namespace discovery/scoping, and server vs service pointers).

…pass

Running a command on a dedicated server previously meant `server ssh-info` +
a hand-rolled ssh2/sshpass invocation, which corrupts passwords with special
characters (the credential is embedded in a multi-layer-escaped shell script)
and requires sandbox-specific NODE_PATH.

Make `zeabur server exec --id <id> -- <command>` the primary path: the CLI
fetches credentials and runs the command internally, so the password is never
shell-quoted and no ssh2/sshpass is needed. Keep the ssh-info + ssh2/sshpass
flow as a documented fallback for older CLIs.

Regenerated plugins/zeabur/ via scripts/sync-codex-plugin.mjs.

DES-803

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@leechenghsiu leechenghsiu self-assigned this Jul 10, 2026
@linear-code

linear-code Bot commented Jul 10, 2026

Copy link
Copy Markdown

DES-803

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5ddd614f-a4b1-43ce-a1fd-03afc493366d

📥 Commits

Reviewing files that changed from the base of the PR and between 3b27537 and b26a6e0.

📒 Files selected for processing (2)
  • plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
  • skills/zeabur-server-ssh/SKILL.md
📝 Walkthrough

Walkthrough

Rewrites the Zeabur server SSH skill in both locations to recommend npx zeabur@latest server exec, add sudo kubectl command guidance, and provide a conditional manual SSH fallback. The tips now cover command batching, wide output, namespace handling, project documentation checks, server ID discovery, and choosing server- or service-level execution skills.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: switching the zeabur-server-ssh skill to server exec.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@leechenghsiu leechenghsiu marked this pull request as ready for review July 10, 2026 15:06
@opencodezebra

opencodezebra Bot commented Jul 10, 2026

Copy link
Copy Markdown

LGTM ✅ — Documentation-only skill update correctly introduces server exec as the primary method and preserves SSH fallback; no blockers found.
Reviewed at d167993 (round 1)

What This PR Does

Rewrites the zeabur-server-ssh skill to use zeabur server exec --id <id> -- <command> as the primary remote-execution method. The previous two-step approach (fetch SSH credentials via server ssh-info then run ssh2/sshpass) is demoted to a fallback for environments with an older CLI. The synced plugin copy under plugins/zeabur/ is regenerated to stay in sync.

How It Works

  • New primary path: a single npx zeabur@latest server exec invocation that handles credential retrieval and command execution internally, avoiding shell-escaping pitfalls with special-character passwords.
  • Fallback path: the original ssh2 Node.js snippet and sshpass approach remain for backward compatibility.
  • Both skills/zeabur-server-ssh/SKILL.md and plugins/zeabur/skills/zeabur-server-ssh/SKILL.md are byte-identical after sync script execution.

Findings

ID Severity Finding Location
F1 🟡 Compound-command quoting advice depends on unreleased CLI argv semantics skills/zeabur-server-ssh/SKILL.md:34-35
F2 🟢 Compound command quoting example correctly wraps multi-operator shell in single-quoted arg skills/zeabur-server-ssh/SKILL.md:29
F3 🟢 Fallback ssh2 Node.js snippet preserved intact from prior version skills/zeabur-server-ssh/SKILL.md:86-103
F4 🟢 Plugin sync verified — files are byte-identical plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
F5 🟢 CI check-sync and CodeRabbit both pass
Finding Details

🟡 F1: Compound-command quoting depends on unreleased CLI semantics

The skill advises wrapping compound commands as a single quoted argument after -- (e.g. -- 'cmd1 && cmd2'). This mirrors ssh host '<cmd>' semantics, but the actual server exec argument handling depends on zeabur/cli#263 which is unreleased. If the CLI joins positional args with spaces vs. passes an argv array, the quoting guidance may need adjustment. Non-blocking since the PR is draft pending that release — recommend a smoke test once the CLI ships.

What's Good (🟢)
  • Clean single-command UX that eliminates password-escaping bugs for agents.
  • Backward-compatible fallback ensures no breakage for older CLI versions.
  • Sync script was run correctly; plugin copy is identical.
  • All CI checks pass.
Baseline Check
Review Metadata
  • Reviewers: rev1 (approve)
  • Consensus: approve
  • Absent reviewers: none

🔴×0 🟡×1 🟢×4 · 💬 Comment @opencodezebra <question> for a follow-up · 🔁 Push new commits or comment @opencodezebra review <fix notes> to re-run the council

@opencodezebra opencodezebra Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Council: approved - see the review comment.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
skills/zeabur-server-ssh/SKILL.md (2)

6-116: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use the required troubleshooting section structure.

This troubleshooting skill does not follow the required Problem/Symptom → Cause → Solution → Examples/Tips structure. Reorganize the content into those sections while preserving the server-exec-first workflow.

Sources: Coding guidelines, Learnings


65-103: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Do not expose SSH passwords in the fallback workflow.

ssh-info prints the password, sshpass -p exposes it in process arguments, the inline ssh2 script interpolates it into the command, and StrictHostKeyChecking=no disables MITM protection. Use a secure secret channel and host-key verification, or keep the fallback unavailable unless it can be made safe.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c2c52ce6-cd98-48ce-b6b4-49020e571219

📥 Commits

Reviewing files that changed from the base of the PR and between 801c803 and d167993.

📒 Files selected for processing (2)
  • plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
  • skills/zeabur-server-ssh/SKILL.md

Comment thread skills/zeabur-server-ssh/SKILL.md
Comment thread skills/zeabur-server-ssh/SKILL.md
CodeRabbit review on #72:
- Note that piped commands report only the last stage's exit code (`... | tail`
  hides an upstream failure) — use `set -o pipefail` when that matters.
- Warn that any command with `|` / `&&` must be quoted as a single argument to
  `server exec`, or the local shell splits it and runs part locally.

Regenerated plugins/zeabur/ via scripts/sync-codex-plugin.mjs.

DES-803
@leechenghsiu

Copy link
Copy Markdown
Contributor Author

Addressed in c6a550e:

  • pipeline exit codes — noted that a pipeline reports only its last stage's status (... | tail hides an upstream failure), and to prefix set -o pipefail when that matters.
  • quoting piped commands — added a note that any command with | / && must be quoted as a single argument to server exec, with an example, otherwise the local shell splits it.

@opencodezebra

opencodezebra Bot commented Jul 10, 2026

Copy link
Copy Markdown

LGTM ✅ — Docs-only skill update correctly introduces server exec as primary method; round 2 delta improves quoting guidance and adds pipefail tip. No blockers.
Reviewed at c6a550e (round 2)

What This PR Does

Rewrites the zeabur-server-ssh skill to use zeabur server exec --id <id> -- <command> as the primary remote-execution method. The previous two-step approach (fetch SSH credentials via server ssh-info then run ssh2/sshpass) is demoted to a fallback for environments with an older CLI. The synced plugin copy under plugins/zeabur/ is regenerated to stay in sync.

How It Works

  • New primary path: a single npx zeabur@latest server exec invocation that handles credential retrieval and command execution internally, avoiding shell-escaping pitfalls with special-character passwords.
  • Fallback path: the original ssh2 Node.js snippet and sshpass approach remain for backward compatibility.
  • Both skills/zeabur-server-ssh/SKILL.md and plugins/zeabur/skills/zeabur-server-ssh/SKILL.md are byte-identical after sync script execution.

Findings

Resolved Severity Finding Fixed in
F1 🟡 Compound-command quoting advice depends on unreleased CLI argv semantics — now strengthened with explicit quoting warning and pipefail tip c6a550e3
New Severity Finding Location
F2 🟢 New pipefail guidance correctly warns about pipeline exit-code masking skills/zeabur-server-ssh/SKILL.md:36-38
F3 🟢 Strengthened quoting warning above kubectl table prevents local-shell splitting skills/zeabur-server-ssh/SKILL.md:46-49
F4 🟢 Plugin sync still byte-identical — CI check-sync passes plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
F5 🟢 CI check-sync passes (×2 workflow runs)
Finding Details

Resolved: 🟡 F1 — Compound-command quoting (from round 1)

Round 1 noted the quoting advice depended on unreleased CLI semantics. The round 2 delta adds an explicit inline warning ("Any command with a pipe or && must be quoted as a single argument, or the local shell splits it and runs part locally") and a set -o pipefail tip. The guidance is now self-contained and correct regardless of CLI internal argv handling. Resolved.

What's Good (🟢)
  • Clean single-command UX eliminates password-escaping bugs for agents.
  • Backward-compatible fallback ensures no breakage for older CLI versions.
  • New pipefail tip is a practical improvement agents will benefit from.
  • Sync script was run correctly; plugin copy is identical.
  • All CI checks pass.
Baseline Check
  • Main already has: the two-step ssh-info + ssh2/sshpass skill.
  • Net-new value: simpler server exec primary path that avoids shell-escaping issues, plus improved quoting and pipefail guidance.
  • PR is draft, blocked on feat(server): 新增 zeabur server exec(DES-802) cli#263 merge + CLI publish.
  • Round 1 reviewed at d167993; round 2 delta is +14/-2 lines (quoting/pipefail improvements).
Review Metadata
  • Reviewers: rev1 (approve)
  • Consensus: approve
  • Absent reviewers: none
  • Prior round: round 1 approved at d167993 with F1 (🟡) open; now resolved.

🔴×0 🟡×0 🟢×4 · 💬 Comment @opencodezebra <question> for a follow-up · 🔁 Push new commits or comment @opencodezebra review <fix notes> to re-run the council

@opencodezebra opencodezebra Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Council: approved - see the review comment.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
skills/zeabur-server-ssh/SKILL.md (1)

12-122: 📐 Maintainability & Code Quality | 🟠 Major | 🏗️ Heavy lift

Use the required troubleshooting-skill section structure.

This skill currently introduces several peer sections (Run a command, Common kubectl Commands, Fallback, and Tips) instead of the required Problem/Symptom → Cause → Solution → Examples structure. Rehome these workflows under those four sections, then regenerate the plugin copy.

Based on learnings, troubleshooting skills must use exactly the four-section pattern in that order.

Source: Learnings

plugins/zeabur/skills/zeabur-server-ssh/SKILL.md (1)

61-61: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not leave a literal escaped pipe in the copyable table command.

Inside the Markdown table, \| is displayed literally. If copied into the quoted remote command, it escapes the pipe and passes | to kubectl instead of starting head. Render the pipe without a literal backslash, or explicitly tell users to remove it before execution.

♻️ Duplicate comments (1)
skills/zeabur-server-ssh/SKILL.md (1)

61-61: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not leave a literal escaped pipe in the copyable table command.

Inside the Markdown table, \| is displayed literally. If copied into the quoted remote command, it escapes the pipe and passes | to kubectl instead of starting head. Render the pipe without a literal backslash, or explicitly tell users to remove it before execution.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 552cef4f-272a-443f-bb45-774a70ffb423

📥 Commits

Reviewing files that changed from the base of the PR and between d167993 and c6a550e.

📒 Files selected for processing (2)
  • plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
  • skills/zeabur-server-ssh/SKILL.md

Comment thread plugins/zeabur/skills/zeabur-server-ssh/SKILL.md Outdated
Comment thread skills/zeabur-server-ssh/SKILL.md Outdated
set -o pipefail is a bashism and fails under /bin/sh, so wrap it as
bash -lc 'set -o pipefail && ...' and note the Bash requirement.

CodeRabbit review on #72. DES-803
@leechenghsiu

Copy link
Copy Markdown
Contributor Author

Addressed in latest commit: wrapped the pipefail example as bash -lc 'set -o pipefail && ...' and noted it needs Bash (not /bin/sh).

@opencodezebra

opencodezebra Bot commented Jul 10, 2026

Copy link
Copy Markdown

LGTM ✅ — Docs-only skill update introduces server exec as primary method; round 3 delta correctly wraps pipefail in bash -lc and notes Bash requirement. No blockers.
Reviewed at 3b27537 (round 3)

What This PR Does

Rewrites the zeabur-server-ssh skill to use zeabur server exec --id <id> -- <command> as the primary remote-execution method. The previous two-step approach (fetch SSH credentials via server ssh-info then run ssh2/sshpass) is demoted to a fallback for environments with an older CLI. The synced plugin copy under plugins/zeabur/ is regenerated to stay in sync.

How It Works

  • New primary path: a single npx zeabur@latest server exec invocation that handles credential retrieval and command execution internally, avoiding shell-escaping pitfalls with special-character passwords.
  • Fallback path: the original ssh2 Node.js snippet and sshpass approach remain for backward compatibility.
  • Both skills/zeabur-server-ssh/SKILL.md and plugins/zeabur/skills/zeabur-server-ssh/SKILL.md are byte-identical after sync script execution.

Findings

Resolved Severity Finding Fixed in
F1 🟡 Compound-command quoting advice depends on unreleased CLI argv semantics — resolved with explicit quoting warning and pipefail tip c6a550e3
New Severity Finding Location
F6 🟢 pipefail example now correctly wrapped in bash -lc '...' with Bash-only caveat skills/zeabur-server-ssh/SKILL.md:36-38
F7 🟢 Plugin sync still byte-identical — CI check-sync passes on both workflow runs plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
F8 🟢 Quoting warning above kubectl table remains clear and actionable skills/zeabur-server-ssh/SKILL.md:46-49
F9 🟢 CI passes (×2 check-sync runs at head 3b27537)
Finding Details

Resolved: 🟡 F1 — Compound-command quoting (from round 1)

Round 1 noted the quoting advice depended on unreleased CLI semantics. Round 2 added explicit inline quoting warning. Round 3 further improves by wrapping the pipefail example as bash -lc 'set -o pipefail && ...' and noting Bash is required (not /bin/sh). The guidance is now self-contained and correctly scoped. Resolved.

What's Good (🟢)
  • Clean single-command UX eliminates password-escaping bugs for agents.
  • Backward-compatible fallback ensures no breakage for older CLI versions.
  • Pipefail tip with bash -lc is a practical improvement — agents executing kubectl pipelines will surface failures correctly.
  • Sync script was run correctly; plugin copy is identical.
  • All CI checks pass.
Baseline Check
  • Main already has: the two-step ssh-info + ssh2/sshpass skill.
  • Net-new value: simpler server exec primary path that avoids shell-escaping issues, plus improved quoting and pipefail guidance.
  • PR is draft, blocked on feat(server): 新增 zeabur server exec(DES-802) cli#263 merge + CLI publish.
  • Round 1 reviewed at d167993; round 2 at c6a550e; round 3 delta is the bash -lc pipefail fix.
Review Metadata
  • Reviewers: rev1 (approve)
  • Consensus: approve
  • Absent reviewers: none
  • Prior rounds: round 1 approved at d167993 with F1 (🟡) open; round 2 approved at c6a550e with F1 resolved; round 3 confirms fix holds.

🔴×0 🟡×0 🟢×4 · 💬 Comment @opencodezebra <question> for a follow-up · 🔁 Push new commits or comment @opencodezebra review <fix notes> to re-run the council

@opencodezebra opencodezebra Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Council: approved - see the review comment.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
plugins/zeabur/skills/zeabur-server-ssh/SKILL.md (1)

52-52: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Include the required CLI entry point in this example.

This command is missing npx zeabur@latest, so copying it will fail unless server is independently installed. All skill CLI commands should use the documented entry point.

-`server exec --id <id> -- 'sudo kubectl top pods -A --sort-by=memory | head -20'`.
+`npx zeabur@latest server exec --id <id> -- 'sudo kubectl top pods -A --sort-by=memory | head -20'`.

As per coding guidelines, all skill CLI commands must use npx zeabur@latest as the CLI entry point.

Source: Coding guidelines

skills/zeabur-server-ssh/SKILL.md (1)

52-52: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Include the required CLI entry point in this example.

This command is missing npx zeabur@latest, so copying it will fail unless server is independently installed.

-`server exec --id <id> -- 'sudo kubectl top pods -A --sort-by=memory | head -20'`.
+`npx zeabur@latest server exec --id <id> -- 'sudo kubectl top pods -A --sort-by=memory | head -20'`.

As per coding guidelines, all skill CLI commands must use npx zeabur@latest as the CLI entry point.

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 79ddebb9-6a95-4379-a6b7-cfd376612f19

📥 Commits

Reviewing files that changed from the base of the PR and between c6a550e and 3b27537.

📒 Files selected for processing (2)
  • plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
  • skills/zeabur-server-ssh/SKILL.md

Comment thread plugins/zeabur/skills/zeabur-server-ssh/SKILL.md Outdated
Comment thread skills/zeabur-server-ssh/SKILL.md Outdated
Drop the set -o pipefail example (kept drawing portability/quoting nits) and
keep just the core caveat: a pipeline reports only its last stage's status.

DES-803
@leechenghsiu

Copy link
Copy Markdown
Contributor Author

Simplified the note — dropped the set -o pipefail example (it kept drawing portability/quoting nits) and kept just the core caveat: a pipeline reports only its last stage's exit code, so don't rely on exit status across a pipe. Content is accurate and this removes the fragile example entirely.

@opencodezebra

opencodezebra Bot commented Jul 10, 2026

Copy link
Copy Markdown

LGTM ✅ — Docs-only skill update introduces server exec as primary method; round 4 delta simplifies pipefail note to a concise warning. No blockers.
Reviewed at b26a6e0 (round 4)

What This PR Does

Rewrites the zeabur-server-ssh skill to use zeabur server exec --id <id> -- <command> as the primary remote-execution method. The previous two-step approach (fetch SSH credentials via server ssh-info then run ssh2/sshpass) is demoted to a fallback for environments with an older CLI. The synced plugin copy under plugins/zeabur/ is regenerated to stay in sync.

How It Works

  • New primary path: a single npx zeabur@latest server exec invocation that handles credential retrieval and command execution internally, avoiding shell-escaping pitfalls with special-character passwords.
  • Fallback path: the original ssh2 Node.js snippet and sshpass approach remain for backward compatibility.
  • Both skills/zeabur-server-ssh/SKILL.md and plugins/zeabur/skills/zeabur-server-ssh/SKILL.md are byte-identical after sync script execution.

Findings

Resolved Severity Finding Fixed in
F1 🟡 Compound-command quoting advice depends on unreleased CLI argv semantics c6a550e3
New Severity Finding Location
F10 🟢 Pipefail note simplified to a concise "don't rely on exit code across a pipe" warning — clearer for agents that shouldn't be expected to know bash -lc skills/zeabur-server-ssh/SKILL.md:36-38
F11 🟢 Plugin sync still byte-identical — CI check-sync passes (×2 runs) plugins/zeabur/skills/zeabur-server-ssh/SKILL.md
F12 🟢 CI passes at head b26a6e0
Finding Details

🟢 F10 — Pipefail note simplified

Round 3 introduced a bash -lc 'set -o pipefail && ...' recommendation. Round 4 replaces it with a simpler parenthetical: "a pipeline reports only its last stage's status — … | tail hides an upstream failure, so don't rely on the exit code across a pipe." This trades an actionable workaround for brevity and avoids introducing Bash-only syntax into agent instructions. Acceptable tradeoff for a skill doc targeting agents that may not understand shell internals.

What's Good (🟢)
  • Clean single-command UX eliminates password-escaping bugs for agents.
  • Backward-compatible fallback ensures no breakage for older CLI versions.
  • Simplified pipefail note is more appropriate for agent consumers.
  • Sync script was run correctly; plugin copy is identical.
  • All CI checks pass.
Baseline Check
Review Metadata
  • Reviewers: rev1 (approve)
  • Consensus: approve
  • Absent reviewers: none
  • Prior rounds: round 1 approved with F1 (🟡) open; round 2 approved with F1 resolved; round 3 confirmed fix; round 4 confirms simplification is clean.

🔴×0 🟡×0 🟢×3 · 💬 Comment @opencodezebra <question> for a follow-up · 🔁 Push new commits or comment @opencodezebra review <fix notes> to re-run the council

@opencodezebra opencodezebra Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Council: approved - see the review comment.

@leechenghsiu leechenghsiu merged commit ca62504 into main Jul 10, 2026
2 checks passed
@leechenghsiu leechenghsiu deleted the matthewlee/des-803-更新-zeabur-server-ssh-skill-改用-server-exec branch July 10, 2026 16:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant