通过实际操作产品验证交付内容,记录用户可查看的证据,并发布验收报告。可检查已有验证计划或创建检查项,选择合适的操作界面,并使用 `lh` CLI 发布结果。
- 实际检查更改后的产品行为
- 收集截图或其他验证证据
- 编写验证计划和报告
检查 LobeHub Desktop 安全策略,预览脆弱版本限制,或通过现有发布工作流发布获准的标记或撤销。签名策略可指定分发渠道、平台和应用组件。
Inspect, mark, or revoke vulnerable LobeHub Desktop versions through the existing release workflow and signed R2 security policy. Use for forced security updates across Stable, Canary, Beta, and Nightly.
实测评分 未实测
查看安装方法检查 LobeHub Desktop 安全策略,并预览或发布针对脆弱版本的限制。创建规则时,可以指定分发渠道、操作系统、shell 或 core 组件、受影响的版本范围以及修复版安装程序。也可以撤销现有规则。签名策略通过现有发布工作流交付;发布后,技能会检查报告和运行结果,以确认公开网址是否能查看该策略。
当漏洞影响范围和修复版本已经确定,需要对指定渠道或操作系统应用更新时,可以使用此技能。如果只要求调查,它可以检查策略并预览变更。
发布需要明确的目标范围和修复版安装程序。应用变更需要获准的请求。执行时会使用现有 GitHub Actions 工作流及其中的签名和 R2 密钥。
本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。
AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。
不计入评分。 由 AI(OpenAI Codex)于 2026年10月26日 评估。仅供参考,安装前请同时查看原文。
安装前可以查看交给 AI 代理的指令内容。
Operate .github/workflows/release-desktop-core-ota.yml using its security_policy input. This selects only the policy job; it does not build or publish Core. The policy is global across channels at <UPDATE_SERVER_URL base>/security-policy.json in the existing update bucket.
Read the policy contract for client behavior and delivery limitations. The deterministic operator is apps/desktop/scripts/desktopSecurityPolicy.mjs; it shares schema/signature validation with the client. Do not hand-sign JSON, fetch signing secrets locally, replace the whole rule set, or add a workflow.
For a mark, determine the installer build channel, platforms, shell or core target, affected npm SemVer range, fixed full-installer version, and reason. An exact version is a valid range. Do not guess the affected scope from the latest release. If scope is ambiguous, inspect the current policy while asking only for the missing scope. Publish the fixed installer first: the operator checks the public feed and installer availability for every requested platform, including both macOS architectures. Beta uses the Canary installer feed.
A concrete user instruction to mark or revoke a specified scope authorizes that operation. If the user only asks to investigate or prepare, stop after inspection/preview. Do not invent a security restriction while implementing or testing this tooling. Never automatically weaken a range or minimum to make a failed preflight pass.
gh repo view --json nameWithOwner. Use the trusted canary branch after this workflow change is merged. Check that the remote workflow at the selected ref contains security_policy before dispatching; an older workflow could otherwise run an ordinary Core release. Do not dispatch unreviewed code with production signing secrets.{"action":"inspect"}. Read the downloaded report, including storage revision, rule IDs, publicRevision, and publicError. Initial absence is revision 0. If an existing policy differs from the public endpoint, resolve that discrepancy before a mutation.expectedRevision, a concise reason, and apply:false. Dispatch it and show the concrete before/after rules and installer checks. A preview performs no writes and uses no private key.apply:true. If it is not authorized, ask for approval of this prepared change. An earlier explicit mark/revoke instruction is sufficient; do not ask again.status: verified, with the public URL serving the exact signed policy just written. Report the new revision, affected scope (or revoked rule), and run URL. no-change means no publication occurred.Mark example (replace the illustrative values with the user's scope):
{
"action": "mark",
"apply": false,
"expectedRevision": 7,
"reason": "Security fix in the full installer",
"rule": {
"channel": "stable",
"platforms": ["darwin", "win32", "linux"],
"target": "shell",
"affectedVersions": ">=2.2.0 <2.2.20",
"minimumInstallerVersion": "2.2.20"
}
}
Revoke request: {"action":"revoke","expectedRevision":8,"apply":false,"reason":"Restriction withdrawn","ruleId":"<64-character ID from inspect>"}. Revocation publishes a newer signed revision; never delete the policy or restore an older revision. Marking the same scope updates its minimum; changing its scope creates another rule, so revoke the old rule separately when that is intended.
Write JSON to a temporary file. Pass it with gh workflow run --json via stdin; never interpolate user text into shell commands. Use a fresh UUID as security_policy_request_id for each dispatch. The workflow title includes it, so unrelated concurrent runs cannot be mistaken for this operation.
POLICY_REQUEST_ID=$(uuidgen)
jq --arg id "$POLICY_REQUEST_ID" \
'{channel:"canary",security_policy:tojson,security_policy_request_id:$id}' \
/tmp/security-policy-request.json > /tmp/security-policy-dispatch.json
gh workflow run release-desktop-core-ota.yml --repo "$POLICY_REPO" --ref canary \
--json < /tmp/security-policy-dispatch.json
Here channel:canary satisfies the existing workflow input; the policy request determines the actual affected channels. Locate the run by exact displayTitle == "Desktop security policy (<UUID>)", event == workflow_dispatch, and headBranch == canary using gh run list --workflow release-desktop-core-ota.yml --repo "$POLICY_REPO" --json databaseId,displayTitle,event,headBranch,headSha,url,status,conclusion. Poll for at most two minutes to locate it; do not redispatch just because run discovery is delayed. Watch that run and download desktop-security-policy-<run-id> using gh run download <run-id> --repo "$POLICY_REPO" --name ... --dir <unique-temp-directory>. Inspect logs if no report was produced.
The publisher checks expectedRevision, preserves unrelated rules, signs in Actions, archives the signed revision, conditionally replaces the R2 object using its ETag, and verifies the ordinary public URL. R2 credentials and the OTA signing pair reuse existing workflow secrets.
On a revision/precondition conflict, stop that mutation and inspect again; do not blindly rerun a stale request. On published-unverified, the write already succeeded: inspect storage and public delivery, investigate caching, and do not bump revision just to retry. Ambiguous network failures after a write also require inspection. Keep reports/logs as evidence, but never treat a green job, archived object, or preview as proof that clients can fetch the new policy.
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
通过实际操作产品验证交付内容,记录用户可查看的证据,并发布验收报告。可检查已有验证计划或创建检查项,选择合适的操作界面,并使用 `lh` CLI 发布结果。
本技能指导在 LobeHub 中接入 AI 模型提供商,涵盖运行时、模型信息、设置、品牌展示、文档和验收,并帮助判断新增模型是否需要新的提供商集成。
本技能指导如何用服务器端环境变量设置用户偏好默认值,涵盖变量校验、服务器配置、写入用户状态,以及更新 `.env.example` 和自托管文档。
说明如何在智能体执行步骤、工具调用、人工审批、上下文压缩和子智能体调用时注册钩子。钩子可观察事件、模拟本地工具结果,也可通过 Webhook 按配置策略允许或拒绝工具调用。
此技能用于为智能体设计事件驱动的后台工作流,划分来源、信号、动作和策略的职责,并处理异步交接、去重、执行范围、完成记录与运行观测。
本技能在 macOS 桌面聊天应用中测试机器人频道:打开应用、进入频道或联系人、发送消息、等待回复并截图。支持 Discord、Slack、Telegram、微信、飞书和 QQ;iMessage 使用 BlueBubbles 桥接。