{"id":"5ca42051-d99b-4097-8022-6717b5aeb4de","slug":"developmentcats-task-notifier","name":"background-monitor","description":"Run long-running tasks with autonomous completion notifications. Spawns an isolated monitoring sub-agent that watches your process and notifies you immediately when done. Use for installs, builds, downloads, or any task >2 minutes. Zero bloat - sub-agent auto-deletes after notification.","canonicalUrl":"https://xpersona.co/skill/developmentcats-task-notifier","sourceUrl":"https://github.com/DevelopmentCats/task-notifier","homepage":null,"source":"GITHUB_OPENCLEW","vendor":{"slug":"developmentcats","label":"Developmentcats","url":"https://github.com/DevelopmentCats/task-notifier"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":null,"freshnessAt":"2026-04-14T22:23:36.103Z","freshnessLabel":"Apr 14, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Apr 14, 2026"},{"label":"Vendor","value":"Developmentcats"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"Unpublished"}],"factsPreview":[{"factKey":"docs_crawl","category":"integration","label":"Crawlable docs","value":"6 indexed pages on the official domain","href":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceUrl":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceType":"search_document","confidence":"medium","observedAt":"2026-04-15T05:03:46.393Z","isPublic":true},{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Developmentcats","href":"https://github.com/DevelopmentCats/task-notifier","sourceUrl":"https://github.com/DevelopmentCats/task-notifier","sourceType":"profile","confidence":"medium","observedAt":"2026-04-14T22:23:36.103Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://xpersona.co/api/v1/agents/developmentcats-task-notifier/contract","sourceUrl":"https://xpersona.co/api/v1/agents/developmentcats-task-notifier/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-04-14T22:23:36.103Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://xpersona.co/api/v1/agents/developmentcats-task-notifier/trust","sourceUrl":"https://xpersona.co/api/v1/agents/developmentcats-task-notifier/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["Trust evidence available"],"agentCard":{"name":"background-monitor","description":"Run long-running tasks with autonomous completion notifications. Spawns an isolated monitoring sub-agent that watches your process and notifies you immediately when done. Use for installs, builds, downloads, or any task >2 minutes. Zero bloat - sub-agent auto-deletes after notification.","source":"GITHUB_OPENCLEW","sourceId":"github:1153088176","repository":"https://github.com/DevelopmentCats/task-notifier","documentation":"https://xpersona.co/skill/developmentcats-task-notifier/agent/developmentcats-task-notifier","protocols":["OPENCLEW"],"languages":["typescript"],"install":{"command":"git clone https://github.com/DevelopmentCats/task-notifier.git","ecosystem":"git"},"examples":[{"kind":"example","language":"python","snippet":"# Step 1: Start your long task\nresult = exec(\n  command=\"./install-script.sh\",\n  background=True,\n  timeout=900  # 15 minutes max\n)\nsessionId = result['sessionId']\n\n# Step 2: Spawn monitor sub-agent\nsessions_spawn(\n  task=f\"\"\"\nYou are monitoring background process '{sessionId}'.\n\nLOOP UNTIL PROCESS EXITS:\n1. Check: process(action='poll', sessionId='{sessionId}')\n2. If still running: reply EXACTLY \"HEARTBEAT_OK\" and wait for next wake\n3. If exited: break loop and proceed to announcement\n\nWHEN PROCESS EXITS:\n1. Get output: process(action='log', sessionId='{sessionId}')\n2. Parse for success/failure and key details:\n   - Exit code (0 = success)\n   - Important URLs, credentials, errors\n   - Installation location\n   - Next steps\n3. Clean up: process(action='clear', sessionId='{sessionId}')\n4. Announce results as your FINAL message (this gets delivered to user):\n   ✅/❌ status\n   Key details (URLs, credentials, location)\n   Next actions if needed\n   \nDo NOT say anything after the announcement - it must be your last reply!\n\nCRITICAL: Only reply HEARTBEAT_OK when process is STILL RUNNING. When it exits, announce results instead.\n  \"\"\",\n  cleanup=\"delete\",  # Auto-cleanup when done!\n  label=f\"monitor-{sessionId[:8]}\"\n)\n\n# Step 3: Tell user\nf\"Started installation! Monitoring in background - I'll ping you when complete.\""},{"kind":"example","language":"python","snippet":"def monitored_exec(command, name=\"Task\", timeout=900):\n    \"\"\"Start a monitored background task with autonomous notification.\"\"\"\n    \n    # Start task\n    result = exec(command, background=True, timeout=timeout)\n    sid = result['sessionId']\n    \n    # Spawn monitor\n    sessions_spawn(\n      task=f\"\"\"\nMonitor process '{sid}' (task: {name}).\n\nLOOP: Poll process(action='poll', sessionId='{sid}').\n- If running: reply \"HEARTBEAT_OK\" and wait\n- If exited: STOP replying HEARTBEAT_OK, proceed to announce\n\nWHEN DONE:\n1. Get logs: process(action='log', sessionId='{sid}')\n2. Parse: exit code, URLs, credentials, errors, locations, next steps\n3. Clear: process(action='clear', sessionId='{sid}')\n4. Announce as FINAL message: ✅/❌ {name} complete! [details]\n\nCRITICAL: The announcement must be your LAST reply - nothing after it!\n      \"\"\",\n      cleanup=\"delete\",\n      label=f\"monitor-{sid[:8]}\"\n    )\n    \n    return f\"Started {name} (session: {sid[:8]}). Monitoring in background!\""}]}}