feat: zeabur-server-ssh skill 改用 server exec(DES-803)#72
Hidden character warning
Conversation
…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>
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughRewrites the Zeabur server SSH skill in both locations to recommend 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
|
LGTM ✅ — Documentation-only skill update correctly introduces What This PR DoesRewrites the How It Works
Findings
Finding Details🟡 F1: Compound-command quoting depends on unreleased CLI semanticsThe skill advises wrapping compound commands as a single quoted argument after What's Good (🟢)
Baseline Check
Review Metadata
🔴×0 🟡×1 🟢×4 · 💬 Comment |
There was a problem hiding this comment.
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 winUse the required troubleshooting section structure.
This troubleshooting skill does not follow the required
Problem/Symptom → Cause → Solution → Examples/Tipsstructure. Reorganize the content into those sections while preserving the server-exec-first workflow.Sources: Coding guidelines, Learnings
65-103: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy liftDo not expose SSH passwords in the fallback workflow.
ssh-infoprints the password,sshpass -pexposes it in process arguments, the inlinessh2script interpolates it into the command, andStrictHostKeyChecking=nodisables 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
📒 Files selected for processing (2)
plugins/zeabur/skills/zeabur-server-ssh/SKILL.mdskills/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
|
Addressed in
|
|
LGTM ✅ — Docs-only skill update correctly introduces What This PR DoesRewrites the How It Works
Findings
Finding DetailsResolved: 🟡 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 What's Good (🟢)
Baseline Check
Review Metadata
🔴×0 🟡×0 🟢×4 · 💬 Comment |
There was a problem hiding this comment.
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 liftUse the required troubleshooting-skill section structure.
This skill currently introduces several peer sections (
Run a command,Common kubectl Commands,Fallback, andTips) instead of the requiredProblem/Symptom → Cause → Solution → Examplesstructure. 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 winDo 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|tokubectlinstead of startinghead. 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 winDo 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|tokubectlinstead of startinghead. 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
📒 Files selected for processing (2)
plugins/zeabur/skills/zeabur-server-ssh/SKILL.mdskills/zeabur-server-ssh/SKILL.md
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
|
Addressed in latest commit: wrapped the |
|
LGTM ✅ — Docs-only skill update introduces What This PR DoesRewrites the How It Works
Findings
Finding DetailsResolved: 🟡 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 What's Good (🟢)
Baseline Check
Review Metadata🔴×0 🟡×0 🟢×4 · 💬 Comment |
There was a problem hiding this comment.
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 winInclude the required CLI entry point in this example.
This command is missing
npx zeabur@latest, so copying it will fail unlessserveris 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@latestas the CLI entry point.Source: Coding guidelines
skills/zeabur-server-ssh/SKILL.md (1)
52-52: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winInclude the required CLI entry point in this example.
This command is missing
npx zeabur@latest, so copying it will fail unlessserveris 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@latestas 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
📒 Files selected for processing (2)
plugins/zeabur/skills/zeabur-server-ssh/SKILL.mdskills/zeabur-server-ssh/SKILL.md
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
|
Simplified the note — dropped the |
|
LGTM ✅ — Docs-only skill update introduces What This PR DoesRewrites the How It Works
Findings
Finding Details🟢 F10 — Pipefail note simplifiedRound 3 introduced a What's Good (🟢)
Baseline Check
Review Metadata
🔴×0 🟡×0 🟢×3 · 💬 Comment |
背景
zeabur-server-sshskill 原本教兩步:server ssh-info拿憑證 → 自己拼 ssh2/sshpass。這對含特殊字元的密碼會轉義崩壞(密碼被塞進多層轉義 shell 腳本),也綁死 sandbox 專屬NODE_PATH。改動
把
zeabur server exec --id <id> -- <command>設為主要方法:CLI 內部拿憑證、跑命令,密碼不經 shell、不需 ssh2/sshpass。server exec。ssh-info+ ssh2/sshpass 為 fallback(舊 CLI 用)。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
Need help on this PR? Tag
/codesmithwith what you need. Autofix is disabled.Summary by CodeRabbit
npx zeabur@latest server execthe primary workflow for running server-level commands and debugging Kubernetes workloads.kubectlinstructions aroundserver exec, including an “always usesudo kubectl” requirement and a compact command reference.-o wide, namespace discovery/scoping, and server vs service pointers).