{"id":"d758e4f6-32b4-4a18-be40-9b4ae7a29a30","entityType":"agent","slug":"clawhub-lumen01-agent-bark-notify","name":"Bark Notify","canonicalUrl":"https://www.xpersona.co/agent/clawhub-lumen01-agent-bark-notify","canonicalPath":"/agent/clawhub-lumen01-agent-bark-notify","generatedAt":"2026-10-09T22:49:36.423Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:24:44.748Z","emptyReason":null},"description":"Send Bark notifications from agents","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.2K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17dv4tf5j8ta3eh6hph7m1hns8a6ts5:agent-bark-notify","sourceUrl":"https://clawhub.ai/lumen01/agent-bark-notify","homepage":"https://clawhub.ai/lumen01/skills/agent-bark-notify","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/lumen01/agent-bark-notify","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/lumen01/skills/agent-bark-notify","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":67,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Bark Notify technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:24:44.748Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:24:44.748Z","emptyReason":null},"stars":null,"forks":null,"downloads":2221,"packageName":null,"latestVersion":"0.1.8","tractionLabel":"2.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:24:44.747Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T17:24:44.748Z","lastCrawledAt":"2026-10-09T17:24:44.747Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T17:24:44.747Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.8","createdAt":"2026-09-04T10:42:27.898Z","changelog":"- Removed the file skill-card.md. - No changes to core functionality or documentation aside from file removal.","fileCount":23,"zipByteSize":1357153},{"version":"0.1.7","createdAt":"2026-08-04T07:35:47.061Z","changelog":"- Initial release with foundational skill files and directory structure. - Added examples, scripts, agent asset, tests, and workflow files for configuration and CI. - Removed outdated documentation file (skill-card.md). - No changes to user/agent usage or notification logic.","fileCount":23,"zipByteSize":1357212},{"version":"0.1.6","createdAt":"2026-08-04T07:23:31.233Z","changelog":"- Removed repository files and directories unrelated to agent skill usage (e.g. .github, LICENSE, assets, examples, tests). - Added AGENTS.md; removed agent and example directories from the repo for improved privacy and clarity. - README and docs clarified: moved agent configuration and icon instructions out of the main repo, with new references for WorkBuddy agent setup. - Updated documentation to emphasize defining agent config (including WorkBuddy) only in private local files. - Scripts and core notifications flow unchanged; no user-facing CLI/API changes.","fileCount":9,"zipByteSize":17521},{"version":"0.1.5","createdAt":"2026-08-01T16:22:33.250Z","changelog":"No changes detected in this version. - Version bumped to 0.1.5 with no file or documentation changes.","fileCount":21,"zipByteSize":1355273},{"version":"0.1.4","createdAt":"2026-08-01T03:48:30.554Z","changelog":"**Initial public release with project structure and safety-focused documentation.** - Added full project structure, including scripts, assets, agents, tests, and configuration examples. - Provided safety and privacy guidelines for handling Bark API keys. - Included usage instructions and decision logic for when to send notifications. - Explained notification levels and configuration options in detail. - Supplied example configuration files and test assets for quick setup.","fileCount":21,"zipByteSize":1355273},{"version":"0.1.3","createdAt":"2026-07-17T12:46:04.509Z","changelog":"- Revised notification policy: Only send Bark notifications when significant or explicitly requested; skip routine or minor updates. - Changed default notification level guidance: Use active for meaningful progress, reserve passive for explicit quiet/background requests. - Updated icon resolution order: Uses explicit `--icon`, then agent config, then a built-in default icon. - Documentation clarified on notification decision-making, configuration, and icon handling. - Removed `skill-card.md` file.","fileCount":8,"zipByteSize":16864},{"version":"0.1.2","createdAt":"2026-07-16T08:01:15.292Z","changelog":"- Added author metadata (\"Lumen\") to SKILL.md. - Removed redundant skill-card.md file. - Updated documentation files (README.md, README.zh-CN.md, SKILL.md) with minor improvements and metadata alignment.","fileCount":8,"zipByteSize":15527},{"version":"0.1.1","createdAt":"2026-07-10T13:31:16.538Z","changelog":"- Added README files (including multilingual support) and detailed test/agent configuration examples. - Updated SKILL.md: revised notification level guidelines, added safer key handling instructions, and expanded usage with `--doctor` and `--dry-run` options. - Improved private key security by recommending `--key-stdin` to avoid leaking secrets into shell history. - Documented new `--doctor` and `--dry-run` CLI features for safer troubleshooting and inspection. - Removed old skill-card documentation for clarity.","fileCount":8,"zipByteSize":15375}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dv4tf5j8ta3eh6hph7m1hns8a6ts5:agent-bark-notify","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dv4tf5j8ta3eh6hph7m1hns8a6ts5:agent-bark-notify` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/lumen01/agent-bark-notify before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T22:49:36.419Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lumen01-agent-bark-notify/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:24:44.748Z","emptyReason":null},"readme":"Skill: Bark Notify\n\nOwner: lumen01\n\nSummary: Send Bark notifications from agents\n\nTags: latest:0.1.8\n\nVersion history:\n\nv0.1.8 | 2026-09-04T10:42:27.898Z | auto\n\n- Removed the file skill-card.md.\n- No changes to core functionality or documentation aside from file removal.\n\nv0.1.7 | 2026-08-04T07:35:47.061Z | auto\n\n- Initial release with foundational skill files and directory structure.\n- Added examples, scripts, agent asset, tests, and workflow files for configuration and CI.\n- Removed outdated documentation file (skill-card.md).\n- No changes to user/agent usage or notification logic.\n\nv0.1.6 | 2026-08-04T07:23:31.233Z | auto\n\n- Removed repository files and directories unrelated to agent skill usage (e.g. .github, LICENSE, assets, examples, tests).\n- Added AGENTS.md; removed agent and example directories from the repo for improved privacy and clarity.\n- README and docs clarified: moved agent configuration and icon instructions out of the main repo, with new references for WorkBuddy agent setup.\n- Updated documentation to emphasize defining agent config (including WorkBuddy) only in private local files.\n- Scripts and core notifications flow unchanged; no user-facing CLI/API changes.\n\nv0.1.5 | 2026-08-01T16:22:33.250Z | auto\n\nNo changes detected in this version.\n\n- Version bumped to 0.1.5 with no file or documentation changes.\n\nv0.1.4 | 2026-08-01T03:48:30.554Z | auto\n\n**Initial public release with project structure and safety-focused documentation.**\n\n- Added full project structure, including scripts, assets, agents, tests, and configuration examples.\n- Provided safety and privacy guidelines for handling Bark API keys.\n- Included usage instructions and decision logic for when to send notifications.\n- Explained notification levels and configuration options in detail.\n- Supplied example configuration files and test assets for quick setup.\n\nv0.1.3 | 2026-07-17T12:46:04.509Z | auto\n\n- Revised notification policy: Only send Bark notifications when significant or explicitly requested; skip routine or minor updates.\n- Changed default notification level guidance: Use active for meaningful progress, reserve passive for explicit quiet/background requests.\n- Updated icon resolution order: Uses explicit `--icon`, then agent config, then a built-in default icon.\n- Documentation clarified on notification decision-making, configuration, and icon handling.\n- Removed `skill-card.md` file.\n\nv0.1.2 | 2026-07-16T08:01:15.292Z | auto\n\n- Added author metadata (\"Lumen\") to SKILL.md.\n- Removed redundant skill-card.md file.\n- Updated documentation files (README.md, README.zh-CN.md, SKILL.md) with minor improvements and metadata alignment.\n\nv0.1.1 | 2026-07-10T13:31:16.538Z | auto\n\n- Added README files (including multilingual support) and detailed test/agent configuration examples.\n- Updated SKILL.md: revised notification level guidelines, added safer key handling instructions, and expanded usage with `--doctor` and `--dry-run` options.\n- Improved private key security by recommending `--key-stdin` to avoid leaking secrets into shell history.\n- Documented new `--doctor` and `--dry-run` CLI features for safer troubleshooting and inspection.\n- Removed old skill-card documentation for clarity.\n\nv0.1.0 | 2026-07-09T14:45:09.518Z | auto\n\nInitial release of the Bark Notify skill.\n\n- Enables agents to send Bark push notifications via the bundled Python script.\n- Allows configuration of notification level, agent metadata, and icon/group settings.\n- Supports secure handling of Bark keys; recommends local private configuration.\n- Provides instructions for sending, configuring, and testing Bark notifications.\n- Includes guidelines for notification urgency levels and when to use each.\n\nArchive index:\n\nArchive v0.1.8: 23 files, 1357153 bytes\n\nFiles: .clawhubignore (186b), .github (0b), .github/workflows (0b), .github/workflows/clawhub-publish.yml (564b), .gitignore (158b), agents (0b), AGENTS.md (241b), agents/openai.yaml (192b), assets (0b), assets/agent-bark.png (1349459b), examples (0b), examples/agents.json.example (301b), examples/bark-notify.env.example (148b), LICENSE (1063b), README.md (8119b), README.zh-CN.md (7509b), scripts (0b), scripts/bark-notify.py (10816b), skill-card.md (2243b), SKILL.md (5470b), tests (0b), tests/test_cli.py (7632b), _meta.json (136b)\n\nFile v0.1.8:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\nTo send WorkBuddy notifications, add a `workbuddy` entry to the local agent\nconfiguration with group `WorkBuddy` and the server-hosted icon URL from the\nexample configuration.\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nRules:\n\n- Default to `active` whenever a notification is worth sending, including meaningful progress and task completion.\n- Do not use `passive` as a low-stakes default or a fallback for routine progress. Skip the push instead.\n- Use `passive` only when the user explicitly requests quiet/background delivery.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no `--icon` or agent icon is configured, use the built-in Agent Bark icon hosted from `assets/agent-bark.png` through jsDelivr. Resolution order is explicit `--icon`, agent environment/config, then the built-in default.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.8:README.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nConfigure WorkBuddy in the local agent metadata with the `WorkBuddy` group and\nthe server-hosted icon URL shown in the example configuration.\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nWhen neither `--icon` nor an agent icon is configured, the skill uses the Agent\nBark artwork above through its public jsDelivr URL. The precedence is explicit\n`--icon`, agent configuration or environment, then the built-in default.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --agent workbuddy --level active \"Build finished\" \"WorkBuddy task completed\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nFirst decide whether an update warrants a push. Skip routine tool activity, short\ntasks, tests merely starting or continuing, partial findings, and updates already\nvisible in the active conversation. A useful progress instruction does not make\nevery agent update notification-worthy.\n\nDefault to `active` whenever a notification is worth sending, including meaningful\nprogress and task completion. Reserve `passive` for cases where the user explicitly\nasks for quiet, background, or Notification Center-only delivery. If an update feels\ntoo minor for `active`, skip the push. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.8:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.8\",\n  \"publishedAt\": 1788518547898\n}\n\nFile v0.1.8:AGENTS.md\n\n# Agent Instructions\n\n- 在 `dev` 分支中研发迭代。\n- Use the bark-notify SKILL to update the user on progress, especially when handling time-consuming tasks.\n- 不要出现“不是…而是…”句式，使用别的句式代替。\n\nFile v0.1.8:README.zh-CN.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nWorkBuddy 使用同一份本机 Agent 配置：将 `workbuddy` 设置为\n`WorkBuddy` 分组，并把 ICON 指向 Bark Server 托管的\n`https://bark.ilumen.cc/icons/agents/workbuddy-v1.png`。\n\n图标必须能被接收通知的 iOS 设备访问。Bark Server 已提供 Agent ICON 的静态资源路径。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --agent workbuddy --level active \"Build finished\" \"WorkBuddy task completed\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## 通知等级\n\n技能使用 Bark 的通知中断等级：\n\n| 场景 | 等级 |\n| --- | --- |\n| 有意义的进度、用户交办任务完成或普通提醒 | `active` |\n| Agent 被阻塞，需要用户尽快决定 | `timeSensitive` |\n| 部署失败、服务不可用、长任务崩溃 | `timeSensitive` |\n| 用户明确要求紧急/严重告警 | `critical` |\n| 用户明确要求安静、后台或仅进入通知中心 | `passive` |\n\n发送前先判断这条更新是否值得推送。常规工具活动、短任务、测试刚开始或仍在运行、局部发现，以及当前对话里已经可见的更新，都应跳过 Bark。要求 Agent 汇报进度，只代表允许发送有价值的通知，并不意味着每一步都需要推送。\n\n只要一条通知值得发送，就默认使用 `active`，包括有意义的进度和任务完成。`passive` 仅用于用户明确要求安静、后台或只进入通知中心的场景。如果一条更新轻微到不适合 `active`，直接跳过推送。启用相应权限后，`timeSensitive` 可在专注模式中显示。`critical` 可忽略静音和专注模式，只应在真实事故或用户明确要求紧急通知时使用。\n\niOS 上需为 Bark 开启对应通知权限：\n\n- 打开 iOS“设置”→“通知”→“Bark”。\n- 启用 Bark 通知。\n- 若希望 `timeSensitive` 穿透专注模式，启用“时效性通知”。\n- 若 Bark 提供该选项且确有需要，启用“关键通知”。\n- 专注模式仍可能影响即时显示；请在相关专注模式中允许 Bark。\n\n如果需要 shell 命令，可选地创建本地包装器：\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## 发送前诊断\n\n当 Agent、图标、分组或服务器行为不符合预期时，使用 `--doctor`。它会输出解析后的配置并 ping Bark，但不会暴露 device key。使用 `--dry-run` 可查看最终推送 payload 而不实际发送；其中 device key 始终显示为 `***`。\n\n## 自动发布到 ClawHub\n\n`.github/workflows/clawhub-publish.yml` 会在相关文件推送到 `main` 时自动发布本技能。它使用 ClawHub 官方可复用工作流：未变更内容会被跳过；技能有变更时会自动发布下一个 patch 版本。\n\n首次运行前，请添加名为 `CLAWHUB_TOKEN` 的仓库 Actions Secret：\n\n1. 以该技能所有者身份登录 ClawHub，在网页中创建 ClawHub API token。\n2. 在 GitHub 仓库打开 **Settings → Secrets and variables → Actions**，新建名为 `CLAWHUB_TOKEN` 的 Secret，并填入该 token。\n3. 在 Actions 页面手动运行一次 **Publish Bark Notify to ClawHub**，或向 `main` 推送相关改动。\n\n该 token 只会传给发布工作流，绝不能提交到仓库。\n\n## 开发与测试\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.8:skill-card.md\n\n## Description:\n\nUse when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[lumen01](https://clawhub.ai/user/lumen01)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers and agent users use this skill to let an agent send Bark push notifications for requested alerts, meaningful milestones, task completion, blockers, and delivery tests.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The Bark device key and notification body can be sent to the configured Bark server, including an arbitrary or unencrypted server URL.\n\nMitigation: Use only a trusted HTTPS Bark server, avoid accepting BARK_SERVER from untrusted environments, and avoid sensitive notification bodies unless the configured server is acceptable for that content.\n\nRisk: Bark credentials can be exposed through command history, process inspection, logs, or committed config files.\n\nMitigation: Keep configuration under a private ~/.config directory, prefer manual config creation or --key-stdin, use restrictive file permissions, and do not print, commit, or quote the Bark key.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/lumen01/skills/agent-bark-notify)\n- [Server-resolved source repository](https://github.com/Lumen01/agent-bark-notify)\n- [Bark project](https://github.com/Finb/Bark)\n\n## Skill Output:\n\n**Output Type(s):** [text, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell command examples and JSON command output from the bundled helper]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can send Bark notification requests, run dry-run payload previews with masked device keys, and report diagnostics without exposing the device key.]\n\n## Skill Version(s):\n\n0.1.8 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.1.8:.github/workflows/clawhub-publish.yml\n\nname: Publish Bark Notify to ClawHub\n\non:\n  push:\n    branches: [main]\n    paths:\n      - SKILL.md\n      - scripts/**\n      - assets/**\n      - examples/**\n      - agents/**\n      - README.md\n      - README.zh-CN.md\n      - .github/workflows/clawhub-publish.yml\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  id-token: write\n\njobs:\n  publish:\n    uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v0.23.1\n    with:\n      skill_path: .\n      dry_run: false\n      ref: ${{ github.sha }}\n    secrets:\n      clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}\n\nFile v0.1.8:agents/openai.yaml\n\ninterface:\n  display_name: \"Bark Notify\"\n  short_description: \"Send Bark notifications from agents\"\n  default_prompt: \"Use $bark-notify to send a concise notification with a title and body.\"\n\nFile v0.1.8:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Lumen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.1.7: 23 files, 1357212 bytes\n\nFiles: .clawhubignore (186b), .github (0b), .github/workflows (0b), .github/workflows/clawhub-publish.yml (564b), .gitignore (158b), agents (0b), AGENTS.md (241b), agents/openai.yaml (192b), assets (0b), assets/agent-bark.png (1349459b), examples (0b), examples/agents.json.example (301b), examples/bark-notify.env.example (148b), LICENSE (1063b), README.md (8119b), README.zh-CN.md (7509b), scripts (0b), scripts/bark-notify.py (10816b), skill-card.md (2552b), SKILL.md (5470b), tests (0b), tests/test_cli.py (7632b), _meta.json (136b)\n\nFile v0.1.7:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\nTo send WorkBuddy notifications, add a `workbuddy` entry to the local agent\nconfiguration with group `WorkBuddy` and the server-hosted icon URL from the\nexample configuration.\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nRules:\n\n- Default to `active` whenever a notification is worth sending, including meaningful progress and task completion.\n- Do not use `passive` as a low-stakes default or a fallback for routine progress. Skip the push instead.\n- Use `passive` only when the user explicitly requests quiet/background delivery.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no `--icon` or agent icon is configured, use the built-in Agent Bark icon hosted from `assets/agent-bark.png` through jsDelivr. Resolution order is explicit `--icon`, agent environment/config, then the built-in default.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.7:README.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nConfigure WorkBuddy in the local agent metadata with the `WorkBuddy` group and\nthe server-hosted icon URL shown in the example configuration.\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nWhen neither `--icon` nor an agent icon is configured, the skill uses the Agent\nBark artwork above through its public jsDelivr URL. The precedence is explicit\n`--icon`, agent configuration or environment, then the built-in default.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --agent workbuddy --level active \"Build finished\" \"WorkBuddy task completed\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nFirst decide whether an update warrants a push. Skip routine tool activity, short\ntasks, tests merely starting or continuing, partial findings, and updates already\nvisible in the active conversation. A useful progress instruction does not make\nevery agent update notification-worthy.\n\nDefault to `active` whenever a notification is worth sending, including meaningful\nprogress and task completion. Reserve `passive` for cases where the user explicitly\nasks for quiet, background, or Notification Center-only delivery. If an update feels\ntoo minor for `active`, skip the push. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.7:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.7\",\n  \"publishedAt\": 1785828947061\n}\n\nFile v0.1.7:AGENTS.md\n\n# Agent Instructions\n\n- 在 `dev` 分支中研发迭代。\n- Use the bark-notify SKILL to update the user on progress, especially when handling time-consuming tasks.\n- 不要出现“不是…而是…”句式，使用别的句式代替。\n\nFile v0.1.7:README.zh-CN.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nWorkBuddy 使用同一份本机 Agent 配置：将 `workbuddy` 设置为\n`WorkBuddy` 分组，并把 ICON 指向 Bark Server 托管的\n`https://bark.ilumen.cc/icons/agents/workbuddy-v1.png`。\n\n图标必须能被接收通知的 iOS 设备访问。Bark Server 已提供 Agent ICON 的静态资源路径。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --agent workbuddy --level active \"Build finished\" \"WorkBuddy task completed\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## 通知等级\n\n技能使用 Bark 的通知中断等级：\n\n| 场景 | 等级 |\n| --- | --- |\n| 有意义的进度、用户交办任务完成或普通提醒 | `active` |\n| Agent 被阻塞，需要用户尽快决定 | `timeSensitive` |\n| 部署失败、服务不可用、长任务崩溃 | `timeSensitive` |\n| 用户明确要求紧急/严重告警 | `critical` |\n| 用户明确要求安静、后台或仅进入通知中心 | `passive` |\n\n发送前先判断这条更新是否值得推送。常规工具活动、短任务、测试刚开始或仍在运行、局部发现，以及当前对话里已经可见的更新，都应跳过 Bark。要求 Agent 汇报进度，只代表允许发送有价值的通知，并不意味着每一步都需要推送。\n\n只要一条通知值得发送，就默认使用 `active`，包括有意义的进度和任务完成。`passive` 仅用于用户明确要求安静、后台或只进入通知中心的场景。如果一条更新轻微到不适合 `active`，直接跳过推送。启用相应权限后，`timeSensitive` 可在专注模式中显示。`critical` 可忽略静音和专注模式，只应在真实事故或用户明确要求紧急通知时使用。\n\niOS 上需为 Bark 开启对应通知权限：\n\n- 打开 iOS“设置”→“通知”→“Bark”。\n- 启用 Bark 通知。\n- 若希望 `timeSensitive` 穿透专注模式，启用“时效性通知”。\n- 若 Bark 提供该选项且确有需要，启用“关键通知”。\n- 专注模式仍可能影响即时显示；请在相关专注模式中允许 Bark。\n\n如果需要 shell 命令，可选地创建本地包装器：\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## 发送前诊断\n\n当 Agent、图标、分组或服务器行为不符合预期时，使用 `--doctor`。它会输出解析后的配置并 ping Bark，但不会暴露 device key。使用 `--dry-run` 可查看最终推送 payload 而不实际发送；其中 device key 始终显示为 `***`。\n\n## 自动发布到 ClawHub\n\n`.github/workflows/clawhub-publish.yml` 会在相关文件推送到 `main` 时自动发布本技能。它使用 ClawHub 官方可复用工作流：未变更内容会被跳过；技能有变更时会自动发布下一个 patch 版本。\n\n首次运行前，请添加名为 `CLAWHUB_TOKEN` 的仓库 Actions Secret：\n\n1. 以该技能所有者身份登录 ClawHub，在网页中创建 ClawHub API token。\n2. 在 GitHub 仓库打开 **Settings → Secrets and variables → Actions**，新建名为 `CLAWHUB_TOKEN` 的 Secret，并填入该 token。\n3. 在 Actions 页面手动运行一次 **Publish Bark Notify to ClawHub**，或向 `main` 推送相关改动。\n\n该 token 只会传给发布工作流，绝不能提交到仓库。\n\n## 开发与测试\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.7:skill-card.md\n\n## Description: <br>\nUse when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[lumen01](https://clawhub.ai/user/lumen01) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent users use this skill to send concise Bark push notifications for requested reminders, meaningful task milestones, completed long-running work, and blockers that need attention. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The Bark device key could be exposed through committed files, shell history, process inspection, or pasted command output. <br>\nMitigation: Keep BARK_KEY in private local config or pass it through standard input, avoid command-line keys, and use dry-run or doctor output that masks the device key. <br>\nRisk: Notifications and the device key are sent through the configured Bark server. <br>\nMitigation: Use the default Bark server or set --server only when the server is trusted. <br>\nRisk: An agent could send unnecessary or over-urgent notifications. <br>\nMitigation: Send notifications only for explicit requests, meaningful milestones, completion, blockers, or failures; reserve timeSensitive and critical levels for prompt action or explicit emergency use. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/lumen01/skills/agent-bark-notify) <br>\n- [Source repository](https://github.com/Lumen01/agent-bark-notify) <br>\n- [Source commit](https://github.com/Lumen01/agent-bark-notify/commit/e56a3203b4b9ac92e75e1044302ac41bf9a890ce) <br>\n- [Bark project](https://github.com/Finb/Bark) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, JSON] <br>\n**Output Format:** [Markdown guidance with inline shell commands and optional JSON command output] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Notifications are sent through the configured Bark server; dry-run and doctor modes mask the Bark device key.] <br>\n\n## Skill Version(s): <br>\n0.1.7 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.1.7:.github/workflows/clawhub-publish.yml\n\nname: Publish Bark Notify to ClawHub\n\non:\n  push:\n    branches: [main]\n    paths:\n      - SKILL.md\n      - scripts/**\n      - assets/**\n      - examples/**\n      - agents/**\n      - README.md\n      - README.zh-CN.md\n      - .github/workflows/clawhub-publish.yml\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  id-token: write\n\njobs:\n  publish:\n    uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v0.23.1\n    with:\n      skill_path: .\n      dry_run: false\n      ref: ${{ github.sha }}\n    secrets:\n      clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}\n\nFile v0.1.7:agents/openai.yaml\n\ninterface:\n  display_name: \"Bark Notify\"\n  short_description: \"Send Bark notifications from agents\"\n  default_prompt: \"Use $bark-notify to send a concise notification with a title and body.\"\n\nFile v0.1.7:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Lumen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.1.6: 9 files, 17521 bytes\n\nFiles: AGENTS.md (241b), agents/openai.yaml (192b), README.md (8119b), README.zh-CN.md (7509b), scripts/bark-notify.py (10816b), skill-card.md (2359b), SKILL.md (5470b), tests/test_cli.py (7632b), _meta.json (136b)\n\nFile v0.1.6:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\nTo send WorkBuddy notifications, add a `workbuddy` entry to the local agent\nconfiguration with group `WorkBuddy` and the server-hosted icon URL from the\nexample configuration.\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nRules:\n\n- Default to `active` whenever a notification is worth sending, including meaningful progress and task completion.\n- Do not use `passive` as a low-stakes default or a fallback for routine progress. Skip the push instead.\n- Use `passive` only when the user explicitly requests quiet/background delivery.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no `--icon` or agent icon is configured, use the built-in Agent Bark icon hosted from `assets/agent-bark.png` through jsDelivr. Resolution order is explicit `--icon`, agent environment/config, then the built-in default.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.6:README.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nConfigure WorkBuddy in the local agent metadata with the `WorkBuddy` group and\nthe server-hosted icon URL shown in the example configuration.\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nWhen neither `--icon` nor an agent icon is configured, the skill uses the Agent\nBark artwork above through its public jsDelivr URL. The precedence is explicit\n`--icon`, agent configuration or environment, then the built-in default.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --agent workbuddy --level active \"Build finished\" \"WorkBuddy task completed\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nFirst decide whether an update warrants a push. Skip routine tool activity, short\ntasks, tests merely starting or continuing, partial findings, and updates already\nvisible in the active conversation. A useful progress instruction does not make\nevery agent update notification-worthy.\n\nDefault to `active` whenever a notification is worth sending, including meaningful\nprogress and task completion. Reserve `passive` for cases where the user explicitly\nasks for quiet, background, or Notification Center-only delivery. If an update feels\ntoo minor for `active`, skip the push. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.6:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.6\",\n  \"publishedAt\": 1785828211233\n}\n\nFile v0.1.6:AGENTS.md\n\n# Agent Instructions\n\n- 在 `dev` 分支中研发迭代。\n- Use the bark-notify SKILL to update the user on progress, especially when handling time-consuming tasks.\n- 不要出现“不是…而是…”句式，使用别的句式代替。\n\nFile v0.1.6:README.zh-CN.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nWorkBuddy 使用同一份本机 Agent 配置：将 `workbuddy` 设置为\n`WorkBuddy` 分组，并把 ICON 指向 Bark Server 托管的\n`https://bark.ilumen.cc/icons/agents/workbuddy-v1.png`。\n\n图标必须能被接收通知的 iOS 设备访问。Bark Server 已提供 Agent ICON 的静态资源路径。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --agent workbuddy --level active \"Build finished\" \"WorkBuddy task completed\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## 通知等级\n\n技能使用 Bark 的通知中断等级：\n\n| 场景 | 等级 |\n| --- | --- |\n| 有意义的进度、用户交办任务完成或普通提醒 | `active` |\n| Agent 被阻塞，需要用户尽快决定 | `timeSensitive` |\n| 部署失败、服务不可用、长任务崩溃 | `timeSensitive` |\n| 用户明确要求紧急/严重告警 | `critical` |\n| 用户明确要求安静、后台或仅进入通知中心 | `passive` |\n\n发送前先判断这条更新是否值得推送。常规工具活动、短任务、测试刚开始或仍在运行、局部发现，以及当前对话里已经可见的更新，都应跳过 Bark。要求 Agent 汇报进度，只代表允许发送有价值的通知，并不意味着每一步都需要推送。\n\n只要一条通知值得发送，就默认使用 `active`，包括有意义的进度和任务完成。`passive` 仅用于用户明确要求安静、后台或只进入通知中心的场景。如果一条更新轻微到不适合 `active`，直接跳过推送。启用相应权限后，`timeSensitive` 可在专注模式中显示。`critical` 可忽略静音和专注模式，只应在真实事故或用户明确要求紧急通知时使用。\n\niOS 上需为 Bark 开启对应通知权限：\n\n- 打开 iOS“设置”→“通知”→“Bark”。\n- 启用 Bark 通知。\n- 若希望 `timeSensitive` 穿透专注模式，启用“时效性通知”。\n- 若 Bark 提供该选项且确有需要，启用“关键通知”。\n- 专注模式仍可能影响即时显示；请在相关专注模式中允许 Bark。\n\n如果需要 shell 命令，可选地创建本地包装器：\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## 发送前诊断\n\n当 Agent、图标、分组或服务器行为不符合预期时，使用 `--doctor`。它会输出解析后的配置并 ping Bark，但不会暴露 device key。使用 `--dry-run` 可查看最终推送 payload 而不实际发送；其中 device key 始终显示为 `***`。\n\n## 自动发布到 ClawHub\n\n`.github/workflows/clawhub-publish.yml` 会在相关文件推送到 `main` 时自动发布本技能。它使用 ClawHub 官方可复用工作流：未变更内容会被跳过；技能有变更时会自动发布下一个 patch 版本。\n\n首次运行前，请添加名为 `CLAWHUB_TOKEN` 的仓库 Actions Secret：\n\n1. 以该技能所有者身份登录 ClawHub，在网页中创建 ClawHub API token。\n2. 在 GitHub 仓库打开 **Settings → Secrets and variables → Actions**，新建名为 `CLAWHUB_TOKEN` 的 Secret，并填入该 token。\n3. 在 Actions 页面手动运行一次 **Publish Bark Notify to ClawHub**，或向 `main` 推送相关改动。\n\n该 token 只会传给发布工作流，绝不能提交到仓库。\n\n## 开发与测试\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.6:skill-card.md\n\n## Description: <br>\nBark Notify sends Bark push notifications from agents. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[lumen01](https://clawhub.ai/user/lumen01) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent operators use Bark Notify to let agents send concise Bark notifications for requested alerts, meaningful milestones, completed long-running tasks, and blockers that need attention. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: A Bark device key can be exposed if it is printed, committed, or passed on the command line. <br>\nMitigation: Store the key only in private local configuration or provide it through standard input, avoid command-line key arguments for real secrets, and summarize sensitive output instead of quoting it. <br>\nRisk: Proactive notification instructions can create unwanted or excessive pushes. <br>\nMitigation: Enable proactive AGENTS.md instructions only where milestone, completion, or blocker notifications are desired, and skip routine progress updates. <br>\nRisk: Notifications are sent through the configured Bark server and may fail or reach an unintended endpoint if configuration is wrong. <br>\nMitigation: Use dry-run and doctor checks to inspect resolved configuration and server health before sending, and override server, group, or icon settings only when explicitly requested. <br>\n\n\n## Reference(s): <br>\n- [Bark project](https://github.com/Finb/Bark) <br>\n- [Bark Notify ClawHub release](https://clawhub.ai/lumen01/skills/agent-bark-notify) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, json] <br>\n**Output Format:** [Markdown guidance with bash examples and JSON CLI output] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Sends network requests to the configured Bark server; dry-run and doctor modes avoid exposing the Bark device key.] <br>\n\n## Skill Version(s): <br>\n0.1.6 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.1.6:agents/openai.yaml\n\ninterface:\n  display_name: \"Bark Notify\"\n  short_description: \"Send Bark notifications from agents\"\n  default_prompt: \"Use $bark-notify to send a concise notification with a title and body.\"\n\nArchive v0.1.5: 21 files, 1355273 bytes\n\nFiles: .clawhubignore (186b), .github (0b), .github/workflows (0b), .github/workflows/clawhub-publish.yml (564b), .gitignore (158b), agents (0b), agents/openai.yaml (192b), assets (0b), assets/agent-bark.png (1349459b), examples (0b), examples/agents.json.example (187b), examples/bark-notify.env.example (148b), LICENSE (1063b), README.md (7868b), README.zh-CN.md (7238b), scripts (0b), scripts/bark-notify.py (10791b), SKILL.md (5293b), tests (0b), tests/test_cli.py (7545b), _meta.json (136b)\n\nFile v0.1.5:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nRules:\n\n- Default to `active` whenever a notification is worth sending, including meaningful progress and task completion.\n- Do not use `passive` as a low-stakes default or a fallback for routine progress. Skip the push instead.\n- Use `passive` only when the user explicitly requests quiet/background delivery.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no `--icon` or agent icon is configured, use the built-in Agent Bark icon hosted from `assets/agent-bark.png` through jsDelivr. Resolution order is explicit `--icon`, agent environment/config, then the built-in default.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.5:README.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nWhen neither `--icon` nor an agent icon is configured, the skill uses the Agent\nBark artwork above through its public jsDelivr URL. The precedence is explicit\n`--icon`, agent configuration or environment, then the built-in default.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nFirst decide whether an update warrants a push. Skip routine tool activity, short\ntasks, tests merely starting or continuing, partial findings, and updates already\nvisible in the active conversation. A useful progress instruction does not make\nevery agent update notification-worthy.\n\nDefault to `active` whenever a notification is worth sending, including meaningful\nprogress and task completion. Reserve `passive` for cases where the user explicitly\nasks for quiet, background, or Notification Center-only delivery. If an update feels\ntoo minor for `active`, skip the push. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.5:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.5\",\n  \"publishedAt\": 1785601353250\n}\n\nFile v0.1.5:README.zh-CN.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\n图标必须能被接收通知的 iOS 设备访问。可使用 GitHub Pages、Cloudflare Pages、S3/R2、nginx、Caddy 或 jsDelivr 托管。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## 通知等级\n\n技能使用 Bark 的通知中断等级：\n\n| 场景 | 等级 |\n| --- | --- |\n| 有意义的进度、用户交办任务完成或普通提醒 | `active` |\n| Agent 被阻塞，需要用户尽快决定 | `timeSensitive` |\n| 部署失败、服务不可用、长任务崩溃 | `timeSensitive` |\n| 用户明确要求紧急/严重告警 | `critical` |\n| 用户明确要求安静、后台或仅进入通知中心 | `passive` |\n\n发送前先判断这条更新是否值得推送。常规工具活动、短任务、测试刚开始或仍在运行、局部发现，以及当前对话里已经可见的更新，都应跳过 Bark。要求 Agent 汇报进度，只代表允许发送有价值的通知，并不意味着每一步都需要推送。\n\n只要一条通知值得发送，就默认使用 `active`，包括有意义的进度和任务完成。`passive` 仅用于用户明确要求安静、后台或只进入通知中心的场景。如果一条更新轻微到不适合 `active`，直接跳过推送。启用相应权限后，`timeSensitive` 可在专注模式中显示。`critical` 可忽略静音和专注模式，只应在真实事故或用户明确要求紧急通知时使用。\n\niOS 上需为 Bark 开启对应通知权限：\n\n- 打开 iOS“设置”→“通知”→“Bark”。\n- 启用 Bark 通知。\n- 若希望 `timeSensitive` 穿透专注模式，启用“时效性通知”。\n- 若 Bark 提供该选项且确有需要，启用“关键通知”。\n- 专注模式仍可能影响即时显示；请在相关专注模式中允许 Bark。\n\n如果需要 shell 命令，可选地创建本地包装器：\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## 发送前诊断\n\n当 Agent、图标、分组或服务器行为不符合预期时，使用 `--doctor`。它会输出解析后的配置并 ping Bark，但不会暴露 device key。使用 `--dry-run` 可查看最终推送 payload 而不实际发送；其中 device key 始终显示为 `***`。\n\n## 自动发布到 ClawHub\n\n`.github/workflows/clawhub-publish.yml` 会在相关文件推送到 `main` 时自动发布本技能。它使用 ClawHub 官方可复用工作流：未变更内容会被跳过；技能有变更时会自动发布下一个 patch 版本。\n\n首次运行前，请添加名为 `CLAWHUB_TOKEN` 的仓库 Actions Secret：\n\n1. 以该技能所有者身份登录 ClawHub，在网页中创建 ClawHub API token。\n2. 在 GitHub 仓库打开 **Settings → Secrets and variables → Actions**，新建名为 `CLAWHUB_TOKEN` 的 Secret，并填入该 token。\n3. 在 Actions 页面手动运行一次 **Publish Bark Notify to ClawHub**，或向 `main` 推送相关改动。\n\n该 token 只会传给发布工作流，绝不能提交到仓库。\n\n## 开发与测试\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.5:.github/workflows/clawhub-publish.yml\n\nname: Publish Bark Notify to ClawHub\n\non:\n  push:\n    branches: [main]\n    paths:\n      - SKILL.md\n      - scripts/**\n      - assets/**\n      - examples/**\n      - agents/**\n      - README.md\n      - README.zh-CN.md\n      - .github/workflows/clawhub-publish.yml\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  id-token: write\n\njobs:\n  publish:\n    uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v0.23.1\n    with:\n      skill_path: .\n      dry_run: false\n      ref: ${{ github.sha }}\n    secrets:\n      clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}\n\nFile v0.1.5:agents/openai.yaml\n\ninterface:\n  display_name: \"Bark Notify\"\n  short_description: \"Send Bark notifications from agents\"\n  default_prompt: \"Use $bark-notify to send a concise notification with a title and body.\"\n\nFile v0.1.5:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Lumen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.1.4: 21 files, 1355273 bytes\n\nFiles: .clawhubignore (186b), .github (0b), .github/workflows (0b), .github/workflows/clawhub-publish.yml (564b), .gitignore (158b), agents (0b), agents/openai.yaml (192b), assets (0b), assets/agent-bark.png (1349459b), examples (0b), examples/agents.json.example (187b), examples/bark-notify.env.example (148b), LICENSE (1063b), README.md (7868b), README.zh-CN.md (7238b), scripts (0b), scripts/bark-notify.py (10791b), SKILL.md (5293b), tests (0b), tests/test_cli.py (7545b), _meta.json (136b)\n\nFile v0.1.4:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nRules:\n\n- Default to `active` whenever a notification is worth sending, including meaningful progress and task completion.\n- Do not use `passive` as a low-stakes default or a fallback for routine progress. Skip the push instead.\n- Use `passive` only when the user explicitly requests quiet/background delivery.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no `--icon` or agent icon is configured, use the built-in Agent Bark icon hosted from `assets/agent-bark.png` through jsDelivr. Resolution order is explicit `--icon`, agent environment/config, then the built-in default.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.4:README.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nWhen neither `--icon` nor an agent icon is configured, the skill uses the Agent\nBark artwork above through its public jsDelivr URL. The precedence is explicit\n`--icon`, agent configuration or environment, then the built-in default.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nFirst decide whether an update warrants a push. Skip routine tool activity, short\ntasks, tests merely starting or continuing, partial findings, and updates already\nvisible in the active conversation. A useful progress instruction does not make\nevery agent update notification-worthy.\n\nDefault to `active` whenever a notification is worth sending, including meaningful\nprogress and task completion. Reserve `passive` for cases where the user explicitly\nasks for quiet, background, or Notification Center-only delivery. If an update feels\ntoo minor for `active`, skip the push. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.4:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.4\",\n  \"publishedAt\": 1785556110554\n}\n\nFile v0.1.4:README.zh-CN.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\n图标必须能被接收通知的 iOS 设备访问。可使用 GitHub Pages、Cloudflare Pages、S3/R2、nginx、Caddy 或 jsDelivr 托管。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## 通知等级\n\n技能使用 Bark 的通知中断等级：\n\n| 场景 | 等级 |\n| --- | --- |\n| 有意义的进度、用户交办任务完成或普通提醒 | `active` |\n| Agent 被阻塞，需要用户尽快决定 | `timeSensitive` |\n| 部署失败、服务不可用、长任务崩溃 | `timeSensitive` |\n| 用户明确要求紧急/严重告警 | `critical` |\n| 用户明确要求安静、后台或仅进入通知中心 | `passive` |\n\n发送前先判断这条更新是否值得推送。常规工具活动、短任务、测试刚开始或仍在运行、局部发现，以及当前对话里已经可见的更新，都应跳过 Bark。要求 Agent 汇报进度，只代表允许发送有价值的通知，并不意味着每一步都需要推送。\n\n只要一条通知值得发送，就默认使用 `active`，包括有意义的进度和任务完成。`passive` 仅用于用户明确要求安静、后台或只进入通知中心的场景。如果一条更新轻微到不适合 `active`，直接跳过推送。启用相应权限后，`timeSensitive` 可在专注模式中显示。`critical` 可忽略静音和专注模式，只应在真实事故或用户明确要求紧急通知时使用。\n\niOS 上需为 Bark 开启对应通知权限：\n\n- 打开 iOS“设置”→“通知”→“Bark”。\n- 启用 Bark 通知。\n- 若希望 `timeSensitive` 穿透专注模式，启用“时效性通知”。\n- 若 Bark 提供该选项且确有需要，启用“关键通知”。\n- 专注模式仍可能影响即时显示；请在相关专注模式中允许 Bark。\n\n如果需要 shell 命令，可选地创建本地包装器：\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## 发送前诊断\n\n当 Agent、图标、分组或服务器行为不符合预期时，使用 `--doctor`。它会输出解析后的配置并 ping Bark，但不会暴露 device key。使用 `--dry-run` 可查看最终推送 payload 而不实际发送；其中 device key 始终显示为 `***`。\n\n## 自动发布到 ClawHub\n\n`.github/workflows/clawhub-publish.yml` 会在相关文件推送到 `main` 时自动发布本技能。它使用 ClawHub 官方可复用工作流：未变更内容会被跳过；技能有变更时会自动发布下一个 patch 版本。\n\n首次运行前，请添加名为 `CLAWHUB_TOKEN` 的仓库 Actions Secret：\n\n1. 以该技能所有者身份登录 ClawHub，在网页中创建 ClawHub API token。\n2. 在 GitHub 仓库打开 **Settings → Secrets and variables → Actions**，新建名为 `CLAWHUB_TOKEN` 的 Secret，并填入该 token。\n3. 在 Actions 页面手动运行一次 **Publish Bark Notify to ClawHub**，或向 `main` 推送相关改动。\n\n该 token 只会传给发布工作流，绝不能提交到仓库。\n\n## 开发与测试\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.4:.github/workflows/clawhub-publish.yml\n\nname: Publish Bark Notify to ClawHub\n\non:\n  push:\n    branches: [main]\n    paths:\n      - SKILL.md\n      - scripts/**\n      - assets/**\n      - examples/**\n      - agents/**\n      - README.md\n      - README.zh-CN.md\n      - .github/workflows/clawhub-publish.yml\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  id-token: write\n\njobs:\n  publish:\n    uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v0.23.1\n    with:\n      skill_path: .\n      dry_run: false\n      ref: ${{ github.sha }}\n    secrets:\n      clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}\n\nFile v0.1.4:agents/openai.yaml\n\ninterface:\n  display_name: \"Bark Notify\"\n  short_description: \"Send Bark notifications from agents\"\n  default_prompt: \"Use $bark-notify to send a concise notification with a title and body.\"\n\nFile v0.1.4:LICENSE\n\nMIT License\n\nCopyright (c) 2026 Lumen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v0.1.3: 8 files, 16864 bytes\n\nFiles: agents/openai.yaml (192b), README.md (7868b), README.zh-CN.md (7238b), scripts/bark-notify.py (10791b), skill-card.md (2347b), SKILL.md (5293b), tests/test_cli.py (7545b), _meta.json (136b)\n\nFile v0.1.3:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nRules:\n\n- Default to `active` whenever a notification is worth sending, including meaningful progress and task completion.\n- Do not use `passive` as a low-stakes default or a fallback for routine progress. Skip the push instead.\n- Use `passive` only when the user explicitly requests quiet/background delivery.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no `--icon` or agent icon is configured, use the built-in Agent Bark icon hosted from `assets/agent-bark.png` through jsDelivr. Resolution order is explicit `--icon`, agent environment/config, then the built-in default.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.3:README.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nWhen neither `--icon` nor an agent icon is configured, the skill uses the Agent\nBark artwork above through its public jsDelivr URL. The precedence is explicit\n`--icon`, agent configuration or environment, then the built-in default.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n| User explicitly requested quiet/background delivery | `passive` |\n\nFirst decide whether an update warrants a push. Skip routine tool activity, short\ntasks, tests merely starting or continuing, partial findings, and updates already\nvisible in the active conversation. A useful progress instruction does not make\nevery agent update notification-worthy.\n\nDefault to `active` whenever a notification is worth sending, including meaningful\nprogress and task completion. Reserve `passive` for cases where the user explicitly\nasks for quiet, background, or Notification Center-only delivery. If an update feels\ntoo minor for `active`, skip the push. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.3\",\n  \"publishedAt\": 1784292364509\n}\n\nFile v0.1.3:README.zh-CN.md\n\n# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\n图标必须能被接收通知的 iOS 设备访问。可使用 GitHub Pages、Cloudflare Pages、S3/R2、nginx、Caddy 或 jsDelivr 托管。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## 通知等级\n\n技能使用 Bark 的通知中断等级：\n\n| 场景 | 等级 |\n| --- | --- |\n| 有意义的进度、用户交办任务完成或普通提醒 | `active` |\n| Agent 被阻塞，需要用户尽快决定 | `timeSensitive` |\n| 部署失败、服务不可用、长任务崩溃 | `timeSensitive` |\n| 用户明确要求紧急/严重告警 | `critical` |\n| 用户明确要求安静、后台或仅进入通知中心 | `passive` |\n\n发送前先判断这条更新是否值得推送。常规工具活动、短任务、测试刚开始或仍在运行、局部发现，以及当前对话里已经可见的更新，都应跳过 Bark。要求 Agent 汇报进度，只代表允许发送有价值的通知，并不意味着每一步都需要推送。\n\n只要一条通知值得发送，就默认使用 `active`，包括有意义的进度和任务完成。`passive` 仅用于用户明确要求安静、后台或只进入通知中心的场景。如果一条更新轻微到不适合 `active`，直接跳过推送。启用相应权限后，`timeSensitive` 可在专注模式中显示。`critical` 可忽略静音和专注模式，只应在真实事故或用户明确要求紧急通知时使用。\n\niOS 上需为 Bark 开启对应通知权限：\n\n- 打开 iOS“设置”→“通知”→“Bark”。\n- 启用 Bark 通知。\n- 若希望 `timeSensitive` 穿透专注模式，启用“时效性通知”。\n- 若 Bark 提供该选项且确有需要，启用“关键通知”。\n- 专注模式仍可能影响即时显示；请在相关专注模式中允许 Bark。\n\n如果需要 shell 命令，可选地创建本地包装器：\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## 发送前诊断\n\n当 Agent、图标、分组或服务器行为不符合预期时，使用 `--doctor`。它会输出解析后的配置并 ping Bark，但不会暴露 device key。使用 `--dry-run` 可查看最终推送 payload 而不实际发送；其中 device key 始终显示为 `***`。\n\n## 自动发布到 ClawHub\n\n`.github/workflows/clawhub-publish.yml` 会在相关文件推送到 `main` 时自动发布本技能。它使用 ClawHub 官方可复用工作流：未变更内容会被跳过；技能有变更时会自动发布下一个 patch 版本。\n\n首次运行前，请添加名为 `CLAWHUB_TOKEN` 的仓库 Actions Secret：\n\n1. 以该技能所有者身份登录 ClawHub，在网页中创建 ClawHub API token。\n2. 在 GitHub 仓库打开 **Settings → Secrets and variables → Actions**，新建名为 `CLAWHUB_TOKEN` 的 Secret，并填入该 token。\n3. 在 Actions 页面手动运行一次 **Publish Bark Notify to ClawHub**，或向 `main` 推送相关改动。\n\n该 token 只会传给发布工作流，绝不能提交到仓库。\n\n## 开发与测试\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.3:skill-card.md\n\n## Description: <br>\nSends Bark push notifications from agents, including terminal notifications, delivery checks, and configurable notification metadata. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[lumen01](https://clawhub.ai/user/lumen01) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent users use this skill to send Bark notifications for explicit requests, meaningful task milestones, completion events, and blockers while keeping Bark credentials in local private configuration. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Notification titles and bodies are sent to the configured Bark server. <br>\nMitigation: Use the skill only for content appropriate to send through Bark, and avoid putting sensitive information in notification text. <br>\nRisk: A Bark device key can be exposed if supplied on the command line or committed in repository files. <br>\nMitigation: Keep the key in the private local config file or provide it through stdin setup, and avoid command-line key arguments. <br>\nRisk: A global agent instruction can cause multiple agents to send notifications proactively. <br>\nMitigation: Enable proactive notification instructions only where wanted, and limit pushes to explicit requests, meaningful milestones, completion events, and blockers. <br>\n\n\n## Reference(s): <br>\n- [Agent Bark Notify on ClawHub](https://clawhub.ai/lumen01/skills/agent-bark-notify) <br>\n- [Bark project](https://github.com/Finb/Bark) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON configuration examples; CLI checks may print JSON.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [The bundled CLI can send notifications, perform ping and doctor checks, and print masked dry-run payloads.] <br>\n\n## Skill Version(s): <br>\n0.1.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v0.1.3:agents/openai.yaml\n\ninterface:\n  display_name: \"Bark Notify\"\n  short_description: \"Send Bark notifications from agents\"\n  default_prompt: \"Use $bark-notify to send a concise notification with a title and body.\"\n\nArchive v0.1.2: 8 files, 15527 bytes\n\nFiles: agents/openai.yaml (192b), README.md (7102b), README.zh-CN.md (6459b), scripts/bark-notify.py (10608b), skill-card.md (2309b), SKILL.md (4072b), tests/test_cli.py (6839b), _meta.json (136b)\n\nFile v0.1.2:SKILL.md\n\n---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level passive \"Progress update\" \"Tests are running\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\n## Notification Level\n\nChoose the lowest Bark interruption level that fits the situation:\n\n| Situation | Level |\n| --- | --- |\n| Progress update, background status, FYI | `passive` |\n| Requested task completed, or user explicitly asked for a normal notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service is unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n\nRules:\n\n- Default to `active` when notifying that a user-requested task is complete. It is a normal visible notification.\n- Use `passive` for intermediate progress updates that should not light up the screen.\n- Use `timeSensitive` only when the user should notice promptly.\n- Use `critical` only when explicitly requested or clearly safety/incident critical; do not use it for routine task failures.\n- If the user specifies a level, obey the user.\n\n## Configure\n\nCreate `~/.config/bark-notify.env` manually when possible. It is private local configuration and the script saves it with mode `0600`:\n\n```bash\nmkdir -p ~/.config\nchmod 700 ~/.config\n```\n\nTo initialize it without putting the key in shell history, pass the key through standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\nAgent metadata is optional and lives outside the repository at `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nBark icons must be URLs reachable by the receiving device. Local `.app`, `.icns`, or filesystem paths are not valid notification icon values. If no icon URL is configured, omit the icon and still send the notification.\n\n## Check\n\n```bash\npython3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\"\n```\n\n`--doctor` reports the selected server, config-file permissions, agent/group/icon resolution, and ping result without printing the key. `--dry-run` prints the final request payload with `device_key` masked and never sends a notification.\n\nIf sending fails, first check `--doctor`; then inspect the reported server/network status. Preserve HTTP status and short messages without exposing credentials.\n\nFile v0.1.2:README.md\n\n# Bark Notify Skill\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL to update the user on progress, especially when handling time-consuming tasks.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\nOr initialize it by securely reading the key from standard input:\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent Identity\n\nAgent group and icon metadata can live in `~/.config/bark-notify-agents.json`:\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nThe icon must be a URL reachable by the receiving iOS device. Common hosting\nchoices include GitHub Pages, Cloudflare Pages, S3/R2, nginx, Caddy, or jsDelivr.\nIf no icon URL is configured, the notification is still sent without a custom icon.\n\nEnvironment variables override the agent JSON:\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent Usage\n\nAfter the skill is installed, an agent should load `SKILL.md` and run the bundled\nscript relative to the skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level passive \"Progress update\" \"Tests are running\"\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Build finished\" \"Ready\"\n```\n\n## Notification Levels\n\nThe skill uses Bark's notification interruption levels:\n\n| Situation | Level |\n| --- | --- |\n| Progress update, background status, FYI | `passive` |\n| Requested task completed, or user explicitly asked for a normal notification | `active` |\n| Agent is blocked and needs user input soon | `timeSensitive` |\n| Deployment failed, service unavailable, long task crashed | `timeSensitive` |\n| User explicitly requested an emergency/critical alert | `critical` |\n\n`passive` only enters Notification Center and does not light the screen. `active`\nis Bark's normal visible notification and should be used for user-requested task\ncompletion. `timeSensitive` can appear during a Focus mode when Bark and iOS\nare authorized for it. `critical` can ignore silent/Focus modes and should only\nbe used for a real incident or an explicit emergency request.\n\nOn iOS, Bark must be allowed to deliver the corresponding notification type:\n\n- Open iOS Settings, then Notifications, then Bark.\n- Enable notifications for Bark.\n- Enable Time Sensitive Notifications if you want `timeSensitive` alerts to break through Focus modes.\n- Enable Critical Alerts if Bark shows that option and you intend to use `critical`.\n- Focus modes can still affect what appears immediately; allow Bark in the relevant Focus if needed.\n\nIf the user wants a shell command, they may optionally create a local wrapper:\n\n```bash\nmkdir -p ~/.local/bin\nln -sf ~/.agents/skills/bark-notify/scripts/bark-notify.py ~/.local/bin/bark-notify\n```\n\n## Diagnose Before Sending\n\nUse `--doctor` when an agent, icon, group, or server does not behave as\nexpected. It reports the resolved configuration and pings Bark without exposing\nthe device key. Use `--dry-run` to inspect the final push payload without\nsending; the device key is always shown as `***`.\n\n## Automatic ClawHub Publishing\n\nThe GitHub Actions workflow at `.github/workflows/clawhub-publish.yml` publishes\nthis skill whenever relevant files are pushed to `main`. It uses ClawHub's\nofficial reusable workflow, which skips unchanged content and automatically\ncreates the next patch version when the skill changed.\n\nBefore the first run, add a repository Actions secret named `CLAWHUB_TOKEN`:\n\n1. Create a ClawHub API token from the ClawHub web UI while signed in as the\n   owner of this skill.\n2. In GitHub, open **Settings → Secrets and variables → Actions** for this\n   repository and create the `CLAWHUB_TOKEN` secret with that value.\n3. Run **Publish Bark Notify to ClawHub** once from the Actions tab, or push a\n   relevant change to `main`.\n\nThe token is only passed to the publishing workflow and must never be committed\nto this repository.\n\n## Develop And Test\n\n```bash\npython3 -m unittest discover -s tests\npython3 -m py_compile scripts/bark-notify.py tests/test_cli.py\n```\n\nFile v0.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.2\",\n  \"publishedAt\": 1784188875292\n}\n\nFile v0.1.2:README.zh-CN.md\n\n# Bark Notify Skill\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL to update the user on progress, especially when handling time-consuming tasks.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bar\n\nArchive v0.1.1: 8 files, 15375 bytes\n\nFiles: agents/openai.yaml (192b), README.md (6915b), README.zh-CN.md (6253b), scripts/bark-notify.py (10608b), skill-card.md (2387b), SKILL.md (4044b), tests/test_cli.py (6839b), _meta.json (136b)\n\nArchive v0.1.0: 3 files, 2955 bytes\n\nFiles: skill-card.md (2432b), SKILL.md (3046b), _meta.json (136b)","readmeExcerpt":"Skill: Bark Notify Owner: lumen01 Summary: Send Bark notifications from agents Tags: latest:0.1.8 Version history: v0.1.8 | 2026-09-04T10:42:27.898Z | auto - Removed the file skill-card.md. - No changes to core functionality or documentation aside from file removal. v0.1.7 | 2026-08-04T07:35:47.061Z | auto - Initial release with foundational skill files and directory structure. - Added examples, scripts, agent asset,","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\""},{"language":"bash","snippet":"python3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\""},{"language":"bash","snippet":"mkdir -p ~/.config\nchmod 700 ~/.config"},{"language":"bash","snippet":"read -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY"},{"language":"json","snippet":"{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}"},{"language":"bash","snippet":"python3 scripts/bark-notify.py --help\npython3 scripts/bark-notify.py --ping\npython3 scripts/bark-notify.py --doctor\npython3 scripts/bark-notify.py --dry-run --agent codex --level active \"Done\" \"Ready\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: bark-notify\ndescription: Use when the user asks an agent to send a Bark push notification, notify them from the terminal, test Bark notification delivery, or use a Bark notification skill.\nmetadata:\n  author: \"Lumen\"\n---\n\n# Bark Notify\n\n## Overview\n\nUse this skill to send Bark notifications from an agent. The bundled script is `scripts/bark-notify.py`, resolved relative to this `SKILL.md`.\n\n## Safety\n\n- Never print, commit, or quote `BARK_KEY`.\n- Do not put Bark keys in repository files.\n- Prefer local private config at `~/.config/bark-notify.env`.\n- Do not put a real key after `--key` in a shell command: it can be retained in shell history or exposed to local process inspection. Use the private config file or `--key-stdin` for setup.\n- Use `--agent <name>` for agent-originated pushes so group/icon metadata can come from config.\n- Only pass `--server`, `--key`, `--group`, or `--icon` when the user explicitly asks to override defaults.\n- If command output could include sensitive config, summarize it instead of pasting raw output.\n\n## Send\n\nRun the bundled script from this skill directory:\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py Title Body words without quoting the body\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\n```\n\nUse explicit overrides only when requested:\n\n```bash\npython3 scripts/bark-notify.py --agent codex --group Custom --icon \"https://example.com/custom.png\" \"Title\" \"Body\"\n```\n\nTo send WorkBuddy notifications, add a `workbuddy` entry to the local agent\nconfiguration with group `WorkBuddy` and the server-hosted icon URL from the\nexample configuration.\n\n## Decide Whether to Send\n\nA progress-update instruction grants permission to send useful notifications; it does not make every agent update notification-worthy.\n\nSend a Bark notification when at least one of these is true:\n\n- The user explicitly asked for a Bark notification or reminder.\n- A long-running task reached a meaningful milestone or completed while the user may be away.\n- The agent is blocked, a long-running task failed, or the user needs to act.\n\nSkip Bark for routine tool activity, short tasks, tests merely starting or continuing, partial findings, and updates already visible in the active conversation. If an update is too minor for a normal visible notification, usually do not send it. Use `passive` only when the user explicitly asks for a quiet, passive, background, or Notification Center-only delivery.\n\n## Notification Level\n\nAfter deciding to send, choose the level from this table. Use `active` when the user did not specify a level and the situation does not require `timeSensitive` or `critical`:\n\n| Situation | Level |\n| --- | --- |\n| Meaningful progress, requested task completed, or ordinary user-requested notification | `active` |\n| Agent i"},{"path":"README.md","content":"# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark icon\" width=\"180\">\n</p>\n\n[中文文档](README.zh-CN.md)\n\nSkill for sending [Bark](https://github.com/Finb/Bark) push notifications from agents.\n\nThis repository is a skill first. The notification helper is a bundled script at\n`scripts/bark-notify.py`, not a standalone package that must be installed from PyPI.\n\n> ⭐ If this Skill helps you, please [star the repository](https://github.com/Lumen01/agent-bark-notify). It helps more people discover the project and supports continued improvements.\n\n## Install The Skill\n\n### Ask an Agent to Install It\n\nPaste this prompt into an agent that has terminal access:\n\n```text\nRead https://github.com/Lumen01/agent-bark-notify/blob/main/README.md and install Bark Notify Skill by following its “Install Manually” section. Prefer the shared multi-agent installation unless I ask for a single runtime. Check for an existing installation before changing files, expose the skill to the requested runtime, and confirm that its SKILL.md is discoverable. Do not configure, print, commit, or place a Bark device key in shell history.\n```\n\n### Install Manually\n\nThe following instructions are for people who prefer to install the skill themselves.\n\n#### For Multiple Agents\n\nIf you want Codex, Claude, OpenCode, and other agents to share this skill, install\nit once under `~/.agents`:\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\nThen point each agent runtime at that shared copy if the runtime needs its own\nskills directory.\n\n#### For One Specific Agent\n\nIf you only want one agent to use this skill, install or link it into that\nagent's own skills directory. Examples:\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nFor OpenCode or other agents, use the equivalent skills directory documented by\nthat runtime. The only requirement is that the skill root contains `SKILL.md`.\n\n## Prompt Agents To Use It\n\nInstalling the skill only makes it available. To make agents use it proactively,\nadd this instruction to a global or project-level `AGENTS.md`, depending on\nwhere you want the behavior:\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\nPut it in a global `AGENTS.md` when you want progress notifications across many\nprojects. Put it in a project `AGENTS.md` when only that repository should use\nBark progress updates.\n\n## Configure Secrets\n\nKeep Bark credentials local and private. Do not commit real keys.\n\nCreate `~/.config/bark-notify.env` manually. This is the preferred setup because the key never appears in a command or shell history:\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-devic"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn78ge2mfb4vyz0qn9xpnne8v58a732j\",\n  \"slug\": \"agent-bark-notify\",\n  \"version\": \"0.1.8\",\n  \"publishedAt\": 1788518547898\n}"},{"path":"AGENTS.md","content":"# Agent Instructions\n\n- 在 `dev` 分支中研发迭代。\n- Use the bark-notify SKILL to update the user on progress, especially when handling time-consuming tasks.\n- 不要出现“不是…而是…”句式，使用别的句式代替。"},{"path":"README.zh-CN.md","content":"# Bark Notify Skill\n\n<p align=\"center\">\n  <img src=\"assets/agent-bark.png\" alt=\"Agent Bark 图标\" width=\"180\">\n</p>\n\n[English README](README.md)\n\n供各类 Agent 发送 [Bark](https://github.com/Finb/Bark) 推送通知的技能。\n\n本仓库首先是一个技能；通知工具位于 `scripts/bark-notify.py`，不需要从 PyPI 单独安装包。\n\n> ⭐ 如果这个 Skill 对你有帮助，请为[本仓库点一个 Star](https://github.com/Lumen01/agent-bark-notify)。你的支持能让更多人发现这个项目，也会鼓励项目持续改进。\n\n## 安装技能\n\n### 让 Agent 执行安装\n\n将下面这段 Prompt 交给有终端权限的 Agent：\n\n```text\n请阅读 https://github.com/Lumen01/agent-bark-notify/blob/main/README.md，并按照其中“Install Manually”章节安装 Bark Notify Skill。除非我明确要求仅给单一运行时安装，否则优先采用多 Agent 共享安装方式。修改前检查是否已经安装；将技能暴露给我指定的运行时，并确认其能够发现 SKILL.md。不要配置、输出、提交 Bark device key，也不要把它写入 shell history。\n```\n\n### 手工安装\n\n以下说明面向希望自行安装技能的使用者。\n\n#### 多 Agent 共用\n\n如果希望 Codex、Claude、OpenCode 等多个 Agent 共用此技能，只需在 `~/.agents` 下安装一次：\n\n```bash\ngit clone https://github.com/Lumen01/agent-bark-notify.git ~/.agents/skills/bark-notify\n```\n\n如果运行时有自己的技能目录，再将它指向这份共享副本。\n\n#### 仅供单个 Agent 使用\n\n如果只给一个 Agent 使用，请安装或链接到该 Agent 的技能目录。例如：\n\n```bash\nmkdir -p ~/.codex/skills\nln -sf ~/.agents/skills/bark-notify ~/.codex/skills/bark-notify\n\nmkdir -p ~/.claude/skills\nln -sf ~/.agents/skills/bark-notify ~/.claude/skills/bark-notify\n```\n\nOpenCode 或其他 Agent 请使用其文档中约定的等价技能目录。唯一要求是技能根目录包含 `SKILL.md`。\n\n## 让 Agent 主动使用\n\n安装技能只会让它变为可用。若希望 Agent 主动发送进度通知，请按作用范围在全局或项目级 `AGENTS.md` 中加入：\n\n```markdown\n- Use the bark-notify SKILL for meaningful milestones, completion, and blockers during time-consuming tasks. Default to active; skip routine progress; use passive only when explicitly requested.\n```\n\n希望多个项目都使用时，请放在全局 `AGENTS.md`；只针对当前仓库时，请放在项目级 `AGENTS.md`。\n\n## 配置凭据\n\n请将 Bark 凭据保存在本机私有位置，绝不能提交真实 Key。\n\n推荐手动创建 `~/.config/bark-notify.env`，这样 Key 不会出现在命令或 shell history 中：\n\n```env\nBARK_SERVER=\"https://api.day.app\"\nBARK_KEY=\"your-bark-device-key\"\nBARK_GROUP=\"Agents\"\n```\n\n也可以通过标准输入安全初始化：\n\n```bash\nread -rs BARK_KEY; printf '\\n'\nprintf '%s\\n' \"$BARK_KEY\" | python3 ~/.agents/skills/bark-notify/scripts/bark-notify.py --save-config --key-stdin\nunset BARK_KEY\n```\n\n## Agent 身份\n\nAgent 的分组和图标元数据可存放在 `~/.config/bark-notify-agents.json`：\n\n```json\n{\n  \"codex\": {\n    \"group\": \"Codex\",\n    \"icon\": \"https://example.com/icons/codex.png\"\n  }\n}\n```\n\nWorkBuddy 使用同一份本机 Agent 配置：将 `workbuddy` 设置为\n`WorkBuddy` 分组，并把 ICON 指向 Bark Server 托管的\n`https://bark.ilumen.cc/icons/agents/workbuddy-v1.png`。\n\n图标必须能被接收通知的 iOS 设备访问。Bark Server 已提供 Agent ICON 的静态资源路径。如果没有传入 `--icon`，Agent 配置或环境变量里也没有图标，技能会通过公开的 jsDelivr URL 使用上面的 Agent Bark 图标。优先级依次为显式 `--icon`、Agent 配置或环境变量、内置默认图标。\n\n环境变量的优先级高于 Agent JSON：\n\n```env\nBARK_AGENT_CODEX_GROUP=\"Codex\"\nBARK_AGENT_CODEX_ICON=\"https://example.com/icons/codex.png\"\n```\n\n## Agent 使用方式\n\n技能安装后，Agent 应读取 `SKILL.md`，并以技能目录为相对路径运行脚本：\n\n```bash\npython3 scripts/bark-notify.py \"Title\" \"Body\"\npython3 scripts/bark-notify.py --agent codex --level active \"Build finished\" \"Codex completed the requested task\"\npython3 scripts/bark-notify.py --agent codex --level active \"Milestone reached\" \"The first migration finished\"\npython3 scripts/bark-notify.py "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1619,"uniquenessScore":39,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T17:24:44.748Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T17:24:44.748Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T22:49:36.423Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}