Skip to content
cccskills
FreePublished on GitHubEnglish overview

desktop-security-update

Inspect LobeHub Desktop security policy, preview a version restriction, or publish an authorized mark or revocation through the existing release workflow. The signed policy can target specified channels, platforms, and app components.

OriginalShow the original description

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/lobehub83,504 stars(GitHub 83,504 + cccskills 0)
Works withGitHub

Run score Not tested

See how to install

Good for

  • Review the current desktop security policy
  • Preview a restriction for affected versions
  • Revoke a security rule that is no longer needed

Overview

What it does

Review LobeHub Desktop security policy and preview or publish restrictions on vulnerable versions. Create rules that specify distribution channels, operating systems, the shell or core component, affected version ranges, and the fixed installer version. You can also revoke existing rules. The skill delivers signed policies through the existing release workflow, then checks the report and run results to see whether the policy is available at its public URL.

When it helps

Use it when the vulnerability scope and fixed version are known and you need to apply an update across selected channels or operating systems. For an investigation-only request, it can inspect the policy and prepare a preview.

Example requests

  • “Preview an update policy for this version range on Stable.”
  • “After confirming the fixed installer is available, restrict the specified range.”
  • “Revoke this security rule.”

Notes

Publishing requires a specific target scope and a fixed installer. Applying a change requires an authorized request. Execution uses the existing GitHub Actions workflow and its signing and R2 secrets.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
AGoodIt requires scope checks and authorization, then verifies public delivery.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingIt requires GitHub Actions and signing and R2 secrets, without setup steps.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 26, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md6.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Desktop security updates

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.

Resolve the request

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.

Inspect, preview, apply

  1. Resolve the actual repository with 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.
  2. Dispatch {"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.
  3. Prepare one mark or revoke request with the inspected 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.
  4. If the requested concrete mutation is authorized, dispatch the same request with 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.
  5. Read the report and the exact workflow run. Success requires 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.

Dispatch and collect evidence

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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

acceptance

FreeSummary

Use this skill to verify a delivery by exercising the real product through a suitable surface such as a CLI, web app, desktop app, or iOS Simulator. It helps create or find a verification plan, capture evidence, and publish an acceptance report.

  • Verifying a completed product change
  • Collecting screenshots or other evidence
  • Creating a verification plan and report
lobehub/lobehub83.5KUpdated Oct 26, 2026

Use this skill to add an AI model provider to LobeHub across runtime integration, model cards, settings, branding, documentation, and acceptance checks. It also covers provider documentation updates and distinguishes new providers from models added to an existing provider.

  • Integrating a new AI model provider into LobeHub
  • Updating setup or usage documentation for a provider
  • Checking whether a model needs a new provider integration
lobehub/lobehub83.5KUpdated Oct 26, 2026

add-setting-env

FreeSummary

Use this skill to add a server-side environment variable that sets a default for a user setting. It walks through validation, server configuration and store merging, plus updating the example environment file and self-hosting documentation.

  • Adding an environment variable for a setting default
  • Wiring a new setting domain into server config
  • Documenting a new variable for self-hosting
lobehub/lobehub83.5KUpdated Oct 26, 2026

Provides guidance for registering hooks around an agent’s execution steps, tool calls, human approvals, context compression, and sub-agent calls. Hooks can observe events, supply local mock tool results, or use webhooks to allow or deny tool results under configured policies.

  • Observing agent steps and tool errors
  • Mocking tool results during local execution
  • Requiring webhook decisions before or after a tool call
lobehub/lobehub83.5KUpdated Oct 26, 2026

agent-signal

FreeSummary

Build event-driven background workflows for agents by defining sources, interpreting them as signals, and running actions through policies. It also guides asynchronous handoffs, deduplication, scoped execution, completion receipts, and observability.

  • Adding a new event source to an agent workflow
  • Routing interpreted signals to concrete background actions
  • Enqueuing work for asynchronous processing
lobehub/lobehub83.5KUpdated Oct 26, 2026

Use this skill to run end-to-end acceptance checks for bot channels in real desktop chat apps. It drives apps such as Discord, Slack, Telegram, WeChat, Lark, and QQ to send a message, wait for a response, and capture the result.

  • Checking a bot response in a real Discord channel
  • Testing chat behavior through Slack or Telegram
  • Capturing a bot interaction in a native macOS app
lobehub/lobehub83.5KUpdated Oct 26, 2026

See all skills by lobehub

Report a problem with this skill