{"id":"703dfe36-21cf-452e-965c-af9edbe7db4b","entityType":"agent","slug":"clawhub-unknown-toggle","name":"Toggle","canonicalUrl":"https://www.xpersona.co/agent/clawhub-unknown-toggle","canonicalPath":"/agent/clawhub-unknown-toggle","generatedAt":"2026-10-10T06:42:09.509Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T22:50:33.733Z","emptyReason":null},"description":"Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware... Skill: Toggle Summary: Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-02-20T11:03:36.047Z | user - Expanded and clarified documentation: skill description now emphasizes proactive and context-aware use, including digest generation, pattern detection, nudge","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.9K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install unknown:toggle","sourceUrl":"https://clawhub.ai/unknown/toggle","homepage":"https://clawhub.ai/unknown/skills/toggle","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/unknown/toggle","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/unknown/skills/toggle","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T22:50:33.733Z","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-09T22:50:33.733Z","emptyReason":null},"stars":null,"forks":null,"downloads":1930,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"1.9K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T22:50:33.713Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T22:50:33.733Z","lastCrawledAt":"2026-10-09T22:50:33.713Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T22:50:33.713Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-02-20T11:03:36.047Z","changelog":"- Expanded and clarified documentation: skill description now emphasizes proactive and context-aware use, including digest generation, pattern detection, nudges, and automation suggestions. - Improved field-by-field guidance for interpreting API output, with caveats about data types and concrete examples of workflow entries. - Clearer parsing/interpretation rules, especially around productivity scores, session types, and workflow/project context. - Outlines methods for identifying user routines, context switches, project/task summaries, and follow-up suggestions. - Enhanced quick-reference and troubleshooting/error-handling instructions for easier setup and usage. - Skill version incremented for better tracking; metadata updated (including emoji). No code changes detected.","fileCount":4,"zipByteSize":15464},{"version":"1.0.5","createdAt":"2026-02-19T18:58:52.872Z","changelog":"- Adds support for persisting fetched data to memory files using the `--persist` flag. - Documents new cron auto-sync behavior: checks for cron jobs, handles errors, and suggests user actions based on cron status. - Recommends always using `--persist` when refreshing or saving user data. - After a data summary, now suggests automation opportunities based on detected work patterns. - Updates documentation for new flags, workflows, and agent actions; no code or endpoint changes.","fileCount":3,"zipByteSize":5589},{"version":"1.0.4","createdAt":"2026-02-19T11:49:10.858Z","changelog":"No user-visible changes; metadata fields were reformatted for consistency.","fileCount":3,"zipByteSize":2485},{"version":"1.0.3","createdAt":"2026-02-19T11:31:02.903Z","changelog":"- Updated branding and endpoint URLs from \"Toggle\" to \"ToggleX\" throughout for consistency. - Clarified that the script fetches and prints raw JSON only; all summarization should be performed by the agent. - Expanded instructions for retrieving and configuring the TOGGLE_API_KEY, including new integration page and best practices. - Improved description of how to interpret results and what information to highlight in user-facing summaries. - Minor formatting and documentation improvements for clarity and ease of use.","fileCount":3,"zipByteSize":2509},{"version":"1.0.2","createdAt":"2026-02-19T11:20:53.202Z","changelog":"- Clarified that the skill calls the official Toggle AI integration endpoint and how the API key is sent for authentication. - Removed mention of the raw JSON flag in the usage instructions. - No file or code changes detected; this is a documentation-only update.","fileCount":3,"zipByteSize":2513},{"version":"1.0.1","createdAt":"2026-02-19T11:12:22.734Z","changelog":"- Introduced a Python script (scripts/toggle.py) for fetching and summarizing Toggle workflow data. - Updated setup to require the TOGGLE_API_KEY environment variable; changed environment/config instructions. - Improved usage guidance: now run via python3 instead of curl. - Expanded and clarified skill description and recommended triggers for use. - Updated homepage URL and API integration documentation. - Added support for date range queries and raw JSON output via script flags.","fileCount":3,"zipByteSize":2441},{"version":"1.0.0","createdAt":"2026-02-19T08:25:41.100Z","changelog":"Initial release of the Toggle skill. - Fetches and summarizes your Toggle workflow data for a given date range (defaults to today). - Provides a narrative summary focused on work sessions, including tracked time, main activities, and productivity score insights. - Briefly mentions leisure activities if present; break time is only included if specifically requested. - Notifies users if no data is available for the requested period. - Requires a TOGGLE_OPENCLAW_API_KEY environment variable for access.","fileCount":2,"zipByteSize":1396}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install unknown:toggle","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-unknown-toggle/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/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-10T06:42:09.506Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-unknown-toggle/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":"high","updatedAt":"2026-10-09T22:50:33.733Z","emptyReason":null},"readme":"Skill: Toggle\n\nSummary: Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware...\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-02-20T11:03:36.047Z | user\n\n- Expanded and clarified documentation: skill description now emphasizes proactive and context-aware use, including digest generation, pattern detection, nudges, and automation suggestions.\n- Improved field-by-field guidance for interpreting API output, with caveats about data types and concrete examples of workflow entries.\n- Clearer parsing/interpretation rules, especially around productivity scores, session types, and workflow/project context.\n- Outlines methods for identifying user routines, context switches, project/task summaries, and follow-up suggestions.\n- Enhanced quick-reference and troubleshooting/error-handling instructions for easier setup and usage.\n- Skill version incremented for better tracking; metadata updated (including emoji). No code changes detected.\n\nv1.0.5 | 2026-02-19T18:58:52.872Z | user\n\n- Adds support for persisting fetched data to memory files using the `--persist` flag.\n- Documents new cron auto-sync behavior: checks for cron jobs, handles errors, and suggests user actions based on cron status.\n- Recommends always using `--persist` when refreshing or saving user data.\n- After a data summary, now suggests automation opportunities based on detected work patterns.\n- Updates documentation for new flags, workflows, and agent actions; no code or endpoint changes.\n\nv1.0.4 | 2026-02-19T11:49:10.858Z | user\n\nNo user-visible changes; metadata fields were reformatted for consistency.\n\nv1.0.3 | 2026-02-19T11:31:02.903Z | user\n\n- Updated branding and endpoint URLs from \"Toggle\" to \"ToggleX\" throughout for consistency.\n- Clarified that the script fetches and prints raw JSON only; all summarization should be performed by the agent.\n- Expanded instructions for retrieving and configuring the TOGGLE_API_KEY, including new integration page and best practices.\n- Improved description of how to interpret results and what information to highlight in user-facing summaries.\n- Minor formatting and documentation improvements for clarity and ease of use.\n\nv1.0.2 | 2026-02-19T11:20:53.202Z | user\n\n- Clarified that the skill calls the official Toggle AI integration endpoint and how the API key is sent for authentication.\n- Removed mention of the raw JSON flag in the usage instructions.\n- No file or code changes detected; this is a documentation-only update.\n\nv1.0.1 | 2026-02-19T11:12:22.734Z | user\n\n- Introduced a Python script (scripts/toggle.py) for fetching and summarizing Toggle workflow data.\n- Updated setup to require the TOGGLE_API_KEY environment variable; changed environment/config instructions.\n- Improved usage guidance: now run via python3 instead of curl.\n- Expanded and clarified skill description and recommended triggers for use.\n- Updated homepage URL and API integration documentation.\n- Added support for date range queries and raw JSON output via script flags.\n\nv1.0.0 | 2026-02-19T08:25:41.100Z | user\n\nInitial release of the Toggle skill.\n\n- Fetches and summarizes your Toggle workflow data for a given date range (defaults to today).\n- Provides a narrative summary focused on work sessions, including tracked time, main activities, and productivity score insights.\n- Briefly mentions leisure activities if present; break time is only included if specifically requested.\n- Notifies users if no data is available for the requested period.\n- Requires a TOGGLE_OPENCLAW_API_KEY environment variable for access.\n\nArchive index:\n\nArchive v1.0.6: 4 files, 15464 bytes\n\nFiles: scripts/toggle.py (7752b), skill-card.md (2539b), SKILL.md (27446b), _meta.json (125b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: toggle\nversion: 1.0.5\ndescription: >\n  Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores,\n  and context switches across the web — giving the agent awareness of what the user has actually been doing.\n  Use this skill PROACTIVELY: generate daily digests, nudge stale projects, detect context-switching,\n  spot repeated workflows and propose automations, predict the user's next action based on learned routines,\n  and answer recall questions from memory.\n  Also use when the user asks about their activity, tasks, sessions, productivity, time, or anything work-related.\n  Keywords: what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data,\n  productivity, time tracking, context, pick up where I left off, what was I looking at, stale, pattern, automate,\n  digest, report, focus, scattered, deep work, predict, next task, routine, anticipate, briefing.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - TOGGLE_API_KEY\n      bins:\n        - python3\n    primaryEnv: TOGGLE_API_KEY\n    emoji: \"👁️\"\n    homepage: https://x.toggle.pro\n---\n\n# Toggle (ToggleX) — The Context Layer\n\nToggleX gives you awareness of the user's real work activity across the web — which projects, how long, how focused, and what they left unfinished. Unlike skills that only know what the user tells you, Toggle knows what they *did*.\n\nThe script fetches raw JSON from the ToggleX API. **You are responsible for all intelligence on top of that data**: summarization, pattern detection, nudges, and automations.\n\n> `{baseDir}` throughout this document refers to the root directory of this skill's installation (the folder containing this SKILL.md file). This is standard OpenClaw skill convention.\n\n---\n\n## Quick reference\n\n| Action | Command |\n|--------|---------|\n| Fetch today | `python3 {baseDir}/scripts/toggle.py` |\n| Fetch date range | `python3 {baseDir}/scripts/toggle.py --from-date YYYY-MM-DD --to-date YYYY-MM-DD` |\n| Fetch + save to memory | `python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory` |\n| Cron run (skip cron check) | `python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory --skip-cron-check` |\n\n---\n\n## Endpoint\n\n```\nhttps://ai-x.toggle.pro/public-openclaw/workflows\n```\n\nOperated by ToggleX (https://x.toggle.pro). Your `TOGGLE_API_KEY` is sent as an `x-openclaw-api-key` header. No other data is transmitted.\n\n## Getting your API key\n\nGet your `TOGGLE_API_KEY` from:\n\n```\nhttps://x.toggle.pro/new/clawbot-integration\n```\n\nNever paste the key into chat. Set it in OpenClaw config:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\nOr export in shell: `export TOGGLE_API_KEY=your_key_here`\n\n---\n\n## Interpreting the output\n\nThe script returns raw JSON. The top-level response looks like:\n\n```json\n{\n  \"userId\": \"...\",\n  \"startDate\": \"YYYY-MM-DD\",\n  \"endDate\": \"YYYY-MM-DD\",\n  \"totalWorkflows\": 44,\n  \"totalDays\": 1,\n  \"workflowsByDate\": {\n    \"YYYY-MM-DD\": [ ...workflow entries... ]\n  },\n  \"summary\": {\n    \"totalContextSwitches\": 0,\n    \"totalDurationMinutes\": 797\n  }\n}\n```\n\n### Sample workflow entry\n\n```json\n{\n  \"workflowId\": \"3cd901ef-b708-4869-8ce0-52364ce494e6\",\n  \"date\": \"2026-02-19\",\n  \"workflowType\": \"AI Image Generation Debugging, Toggle/OpenClaw Skill Configuration\",\n  \"workflowDescription\": \"The user began by browsing the OpenClaw GitHub repository...\",\n  \"primaryDomain\": \"github.com\",\n  \"secondaryDomains\": \"[\\\"http://127.0.0.1:18789/agents\\\",\\\"https://github.com/openclaw/openclaw\\\"]\",\n  \"productivityScore\": \"92.00\",\n  \"productivityNotes\": \"Reviewing the ClawHub documentation ensured correct skill file structure...\",\n  \"type\": \"WORK\",\n  \"startTime\": \"2026-02-19T10:49:12.253Z\",\n  \"endTime\": \"2026-02-19T11:34:27.809Z\",\n  \"duration\": 1746.629,\n  \"durationMinutes\": 29,\n  \"isBreakPeriod\": false,\n  \"isLeisure\": false,\n  \"isWork\": true,\n  \"sessionCount\": 10,\n  \"activeSessionCount\": 10,\n  \"projectTask\": {\n    \"id\": \"05f01090-...\",\n    \"name\": \"OpenClaw Environment: Gateway Configuration & Image Generation Skill Integration\",\n    \"goal\": \"Configure and validate the local OpenClaw environment...\",\n    \"isDone\": false,\n    \"context\": \"Local OpenClaw instance; GitHub repositories...\",\n    \"prompts\": [\n      \"What verification steps should I follow to confirm the config changes took effect?\",\n      \"How can I test the skill invocation through the OpenClaw chat interface?\"\n    ],\n    \"project\": {\n      \"id\": \"ab576749-...\",\n      \"name\": \"Toggle Pro AI Chat Feature Development\",\n      \"description\": \"End-to-end development of AI Chat functionality...\",\n      \"isActive\": true,\n      \"summary\": \"The project currently reports 0 of 0 tasks completed...\"\n    }\n  }\n}\n```\n\n### Data type gotchas\n\n- **`productivityScore` is a string** (e.g. `\"92.00\"`), not a number. Parse to float before comparing against thresholds.\n- **`secondaryDomains` is a stringified JSON array**, not an actual array. Parse it with `JSON.parse()` if you need individual URLs.\n- **`duration` is in seconds** (float). `durationMinutes` is a rounded integer approximation.\n- **`projectTask` can be null** — some WORK entries have no project context. Always check before accessing nested fields.\n- **Zero-duration entries exist** — some WORK entries have `duration: 0` and `durationMinutes: 0`. These are brief interactions (e.g. a single page view). Include them in sequence analysis but don't count them as substantial sessions.\n- **`startTime` and `endTime` are UTC (ISO 8601)**. Convert to the user's local timezone before grouping by \"today\" or \"yesterday\" or displaying times. If the user's timezone is unknown, ask once and store in `state.yaml` under `timezone`.\n\n### Key fields\n\n| Field | Description |\n|-------|-------------|\n| `type` | `\"WORK\"`, `\"BREAK\"`, or `\"LEISURE\"` |\n| `workflowType` | Short label for the session (e.g. \"Build Investigation and Scripting\") |\n| `workflowDescription` | Detailed narrative of what the user did. **May contain raw URLs — do not echo these to the user unless asked.** Summarize in your own words. |\n| `primaryDomain` | Main website/app (e.g. `\"github.com\"`, `\"claude.ai\"`, `\"127.0.0.1\"`) |\n| `productivityScore` | `\"0.00\"` to `\"100.00\"` (string). **90+** = sharp, **70–89** = solid, **below 70** = fragmented |\n| `startTime` / `endTime` | ISO 8601 UTC timestamps. `endTime` may equal `startTime` for instantaneous actions, or be null if ongoing. |\n| `duration` | Session length in seconds (float) |\n| `durationMinutes` | Rounded session length in minutes (int) |\n| `projectTask.name` | Human-readable task description |\n| `projectTask.goal` | What the user was trying to accomplish |\n| `projectTask.prompts` | AI-generated follow-up questions relevant to the task. **Use these** — if the user asks \"what should I do next on this project?\", these are high-quality suggestions directly tied to their recent work. |\n| `projectTask.project.name` | Parent project name — use for grouping and stale-project detection |\n| `projectTask.project.summary` | Running project summary — useful for briefings and recall |\n| `summary.totalContextSwitches` | API-provided count of context switches for the period. **Use this instead of calculating manually.** |\n| `summary.totalDurationMinutes` | Total tracked time in minutes |\n\n### Interpretation rules\n\n- Focus on `type: \"WORK\"` entries; skip `BREAK` unless asked; mention `LEISURE` briefly if present\n- Always sort entries by `startTime` — **the API does not return entries in chronological order**\n- If `totalWorkflows` is 0, tell the user Toggle wasn't running or captured nothing for that period\n- When summarizing, use `workflowType` as the headline and `workflowDescription` for detail — but **paraphrase the description**, don't dump it raw (it contains URLs, OAuth tokens, and internal paths)\n\n---\n\n## Error handling\n\nThe script exits with a non-zero code and prints to stderr on failure. Handle these cases:\n\n| Error | Likely cause | What to tell the user |\n|-------|-------------|----------------------|\n| `HTTP error 401` | Invalid or expired API key | \"Your Toggle API key isn't working. Get a new one at https://x.toggle.pro/new/clawbot-integration\" |\n| `HTTP error 403` | Insufficient permissions | \"Your API key doesn't have the right permissions. Check your ToggleX integration settings.\" |\n| `HTTP error 429` | Rate limited | \"Toggle's API is rate-limiting requests. I'll try again in a few minutes.\" Implement exponential backoff: wait 1 min, then 2 min, then 5 min. Max 3 retries. Do not run the script more than once per 5 minutes. |\n| `HTTP error 5xx` | ToggleX server issue | \"ToggleX servers seem to be having issues. I'll try again shortly.\" |\n| `Request failed` / timeout | Network issue | \"Couldn't reach ToggleX. Check your internet connection.\" |\n| `TOGGLE_API_KEY is not set` | Missing env var | \"Your Toggle API key isn't configured yet. Set it up at https://x.toggle.pro/new/clawbot-integration and add it to your OpenClaw config.\" |\n| JSON parse error | Malformed response | \"Got an unexpected response from ToggleX. Usually temporary — I'll retry.\" |\n\n**On first run:** If the fetch fails, do NOT proceed with the setup pitch. Diagnose the error first.\n\n**On cron runs:** If a fetch fails, log the error in `{baseDir}/state.yaml` under `last_error` with a timestamp. On the next successful user interaction, mention it briefly: \"Heads up — the last background sync failed at [time]. It's working again now.\"\n\n---\n\n## Persist to memory\n\n```bash\npython3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory\n```\n\nWrites a `<!-- toggle-data-start -->` / `<!-- toggle-data-end -->` section inside `<date>.md` files. One file per day. Existing content outside that section is preserved.\n\n**Always use `--persist` when running via cron or when the user asks to save/refresh data.**\n\n---\n\n## Cron setup\n\nThe script checks cron status on every run. It reads:\n\n1. `{baseDir}/state.yaml` — if `cron_disabled: true`, skips the check.\n2. `~/.openclaw/cron/jobs.json` — looks for any job with \"toggle\" in its name.\n\n| Status | Meaning | Your action |\n|--------|---------|-------------|\n| `NO_CRON` | No toggle cron job exists | Ask: \"Want me to auto-sync your activity? I can check every hour and keep your context fresh.\" |\n| `CRON_DISABLED` | Job exists but disabled | Ask if they want to re-enable |\n| `CRON_ERROR` | Last run failed | Show error, help troubleshoot |\n| `CRON_OK` | Healthy | No action needed |\n\n### Standard cron commands\n\nThese exact commands are used for all cron setup. Referenced throughout this document — define once here.\n\n**Hourly sync:**\n\n```bash\nopenclaw cron create \\\n  --name \"Toggle hourly sync\" \\\n  --schedule \"0 * * * *\" \\\n  --message \"Run: python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory --skip-cron-check\"\n```\n\n**Daily digest (default 6 PM):**\n\n```bash\nopenclaw cron create \\\n  --name \"Toggle daily digest\" \\\n  --schedule \"0 18 * * *\" \\\n  --message \"Fetch today's Toggle data and generate my end-of-day digest. Run: python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory --skip-cron-check\"\n```\n\nAdjust the digest schedule if the user requests a different `digest_time`.\n\n### If user declines cron\n\nWrite to `{baseDir}/state.yaml`:\n\n```yaml\ncron_disabled: true\n```\n\n---\n\n## State file\n\n`{baseDir}/state.yaml` stores preferences and tracking state. You can read and write it.\n\n### User preferences\n\n| Key | Type | Default | Description |\n|-----|------|---------|-------------|\n| `cron_disabled` | bool | `false` | Skip cron status check |\n| `digest_enabled` | bool | `true` | Whether to generate end-of-day digests |\n| `digest_time` | string | `\"18:00\"` | When to generate the daily digest (24h format) |\n| `nudge_stale_hours` | int | `48` | Hours of inactivity before nudging about a stale project |\n| `focus_alert_threshold` | int | `30` | productivityScore below this triggers a context-switch alert |\n| `focus_alert_window_min` | int | `20` | Minutes of low-focus before alerting |\n| `pattern_detection_days` | int | `7` | Days of history to scan for repeated patterns |\n| `pattern_min_occurrences` | int | `3` | Times a workflow must repeat before proposing automation |\n| `timezone` | string | `null` | User's local timezone (e.g. \"Europe/Sofia\"). Ask once on first run if not set. |\n| `prediction_enabled` | bool | `true` | Whether to proactively predict the user's next action |\n| `prediction_min_days` | int | `5` | Minimum days of data before predictions activate |\n| `prediction_confidence_min` | int | `3` | Minimum occurrences of a routine before predicting it |\n\n### Tracking state (managed by you, the agent)\n\n| Key | Type | Description |\n|-----|------|-------------|\n| `last_nudged` | map | Project names → ISO timestamps of last nudge. Don't re-nudge within 24h. |\n| `dismissed_projects` | list | Project names the user explicitly dropped. Never nudge these again. |\n| `last_focus_alert` | string | ISO timestamp of last context-switch alert. Back off 3h after alerting. |\n| `focus_alert_paused_until` | string | ISO date. If set and today ≤ this date, skip focus alerts. |\n| `proposed_patterns` | map | Pattern description → ISO timestamp. Don't re-propose within 14 days. |\n| `last_error` | string | Last cron error message + timestamp. Clear after reporting to user. |\n| `last_prediction` | string | ISO timestamp of last prediction offered. Back off 2h between predictions. |\n| `prediction_dismissed_until` | string | ISO date. If user declines predictions, pause until this date. |\n| `prediction_hit_log` | list | Log of predictions made + whether the user followed them. Use to refine confidence. |\n\n---\n\n# PROACTIVE BEHAVIORS\n\nThese are the core intelligence features. **Do not wait for the user to ask.** When data is available — through a cron run, a manual fetch, or persisted memory files — analyze it and act.\n\n---\n\n## 1. Daily Digest\n\n**Trigger:** Cron job at the user's `digest_time` (default 6:00 PM), OR the first interaction after end of workday if no cron is set.\n\n**What to do:**\n\n1. Fetch today's data with `--persist` and `--skip-cron-check`\n2. Produce a **short default digest** — 3 to 4 lines max:\n   - Total work time + session count\n   - Top focus area (project with most time)\n   - Biggest open item (most-invested project that still has recent, unfinished activity)\n   - One notable stat (focus score trend vs yesterday, longest session, or `summary.totalContextSwitches`)\n\n**Default format — keep it tight:**\n\n> Your day: 5.2h across 4 sessions. Deepest focus on auth migration (2.1h, 94 focus). Stripe webhooks still open — you were 80% through. Context switches down to 3 from 6 yesterday.\n\n**If the user asks for more detail**, expand to: top 3 focus areas by time, all open items, full focus stats (average score, switch count, longest session), and a tomorrow suggestion.\n\n**Comparing to yesterday:** If yesterday's data exists in `{baseDir}/../../memory/`, compare total time, focus score, and context-switch count. Note trends. Skip comparison if no prior data exists.\n\n---\n\n## 2. Stale Project Nudges\n\n**Trigger:** Every time you fetch or read Toggle data, scan for stale projects.\n\n**A project is stale when both are true:**\n- It has **more than 2 hours of total accumulated time** across all days (a real project, not a one-off visit)\n- It has **no activity in the last `nudge_stale_hours`** (default: 48 hours)\n\nThat's it. Two criteria. Don't try to infer whether a project is \"completed\" — if it is, the user will dismiss the nudge and you'll record that.\n\n**What to do:**\n\n1. After any data fetch, compare current projects against persisted memory from previous days\n2. Read `{baseDir}/../../memory/*.md` files for the past 7 days\n3. Surface stale projects:\n\n> You haven't touched \"Landing Page Deploy\" in 3 days. Last session: 1.5h on responsive layout. Want me to pull up where you left off?\n\n**Rules:**\n- Maximum 2 stale nudges per interaction\n- Check `last_nudged` in state.yaml — skip if same project nudged within 24h\n- Check `dismissed_projects` — never nudge projects on this list\n- If the user says \"I dropped that\" / \"not working on it\" / \"done with that\", add to `dismissed_projects`\n\n---\n\n## 3. Context-Switch Alerts\n\n**Trigger:** When analyzing current or recent data (last 2 hours), detect scattered behavior.\n\n**All three must be true:**\n1. **3+ different `project.name` values** within a 30-minute window (use `startTime` to define the window)\n2. Average `productivityScore` across those sessions is **below `focus_alert_threshold`** (default: 30)\n3. This scattered pattern spans at least **`focus_alert_window_min` minutes** (default: 20)\n\n**What to do:**\n\n> You've switched between 5 different things in the last 25 minutes (focus score: 22). Want me to help you lock in on [project with most time today]?\n\n**Rules:**\n- Check `last_focus_alert` — only alert once per 3-hour window\n- Check `focus_alert_paused_until` — if today ≤ that date, skip entirely\n- If user dismisses (\"I'm fine\" / \"intentionally browsing\"), set `focus_alert_paused_until` to tomorrow\n- Frame as an offer, never a judgment\n\n---\n\n## 4. Pattern Detection & Automation Proposals (Agentify)\n\n**Trigger:** When 7+ days of persisted data exist in `{baseDir}/../../memory/`. Run after each daily digest, or when the user asks about patterns or automations.\n\n**How to detect patterns:**\n\n1. Read memory files for the past `pattern_detection_days` days (default: 7)\n2. For each day, sort sessions by `startTime` to get the chronological sequence\n3. Build sequences of (`workflowType`, `project.name`) tuples in time order\n4. Identify subsequences that appear on `pattern_min_occurrences`+ different days (default: 3):\n   - Same projects visited in the same order (e.g. GitHub → Notion → Slack)\n   - Same `workflowType` at approximately the same time of day (±1 hour window on `startTime`)\n\n**Important:** Do not assume the API returns entries in chronological order. Always sort by `startTime` before building sequences.\n\n**What to propose:**\n\n> I noticed you check GitHub PR comments, then update Notion, then post in Slack — 4 times this week, ~12 min each. Want me to automate that pipeline?\n\n**Rules:**\n- Check what other skills the user has installed. Only propose full automations if the required skills exist\n- If partial: \"I see you do X → Y → Z each morning. Can't automate all of it yet, but I can pre-fetch the data so it's ready.\"\n- Check `proposed_patterns` in state.yaml — don't re-propose the same pattern within 14 days\n- If approved, help create the appropriate cron job or workflow\n\n---\n\n## 5. Instant Recall — \"What Was I Looking At?\"\n\n**Trigger phrases:**\n- \"What was I working on [time period]?\"\n- \"What was that thing I was reading on Tuesday?\"\n- \"Where did I leave off on [project]?\"\n- \"What was I looking at before the meeting?\"\n- \"Pick up where I left off\"\n\n**What to do:**\n\n1. Determine the date range from the user's question\n2. Fetch data: `python3 {baseDir}/scripts/toggle.py --from-date YYYY-MM-DD --to-date YYYY-MM-DD`\n3. Also check persisted memory: `{baseDir}/../../memory/*.md`\n4. Use `startTime` and `endTime` for precise timestamps in the answer\n5. Use `workflowDescription` for context about *what* they were doing, not just *where*\n\n**\"Pick up where I left off\" (no other context):**\nFind the most recent `type: \"WORK\"` session with the highest accumulated time. Describe exactly where they stopped — project, task, time, and description.\n\n> Tuesday afternoon (2:15–4:30 PM) you were deep in the Kalshi API docs — 1.5h across 3 sessions. Last session ended on the authentication endpoint. Focus: 87.\n\n---\n\n## 6. Predictive Context — \"Your Agent Knows What's Next\"\n\nThis is the highest-value behavior. The agent doesn't just know what the user *did* — with enough history, it knows what they're *about to do* and can prepare for it.\n\n**Minimum data required:** `prediction_min_days` days of persisted memory (default: 5). Do NOT attempt predictions with less data — you'll guess wrong and lose trust. When insufficient data exists, silently skip. Never tell the user \"I don't have enough data to predict yet.\"\n\n### 6a. Routine Prediction — \"You usually do X right now\"\n\n**Trigger:** On every cron-triggered fetch, OR when the user starts a new interaction. Compare the current **day of week + approximate time** (±1 hour) against historical patterns.\n\n**How to build routines:**\n\n1. Read `{baseDir}/../../memory/*.md` for the past `prediction_min_days` days\n2. For each day, note what `project.name` and `workflowType` the user was engaged in at each hour block\n3. Group by **day of week + hour**: e.g. \"Monday 9 AM → PR reviews (4 of last 5 Mondays)\"\n4. A routine is valid when the same activity appears at the same day+hour on `prediction_confidence_min` or more occasions (default: 3)\n\n**What to do when a routine is detected for the current moment:**\n\n> It's Tuesday 10 AM — you usually start with PR reviews around now. Want me to pull up open PRs?\n\n**Critical rules:**\n- Only predict if the user **hasn't already started** doing the thing. Check the most recent session in today's data — if they're already in PR reviews, saying \"you usually do PR reviews now\" is useless. Skip it.\n- Maximum 1 routine prediction per 2-hour window. Check `last_prediction` in state.yaml.\n- If the user follows the prediction (their next session matches), log it as a hit in `prediction_hit_log`. If they ignore it, log as a miss. Over time, only surface predictions with a >60% hit rate.\n- If the user says \"stop predicting\" or dismisses predictions repeatedly (3 misses in a row), set `prediction_dismissed_until` to 7 days from now.\n\n### 6b. Session Endurance Prediction — \"You're about to hit your wall\"\n\n**Trigger:** When analyzing current data during a fetch, check if the user is in an active deep-work session.\n\n**How it works:**\n\n1. From historical data, calculate the user's **average deep-work session duration** for the current project (or overall if not enough project-specific data)\n2. Check the current active session's duration against that average\n3. When the current session reaches **90% of the average duration**, offer a heads-up\n\n**Example:** If the user's average deep-work session on \"API Integration\" is 95 minutes and they're currently at 85 minutes:\n\n> You're 85 minutes into the API integration — around when you usually take a break. Want me to bookmark where you are so you can pick it up cleanly?\n\n**Rules:**\n- Only trigger for sessions with `productivityScore` above 70 (actual deep work, not scattered browsing)\n- Only trigger once per session — don't nag at 90%, 95%, 100%\n- If the user keeps working past the prediction, that's fine. Don't mention it again. Log the actual duration to improve future estimates.\n- Never frame it as \"you should stop.\" Frame it as \"here's a natural breakpoint if you want it.\"\n\n### 6c. Next-Task Prediction — \"You just finished X, you usually do Y next\"\n\n**Trigger:** When the most recent session just ended (the user went from active to inactive, or switched to a different project), check if there's a predictable next step.\n\n**How it works:**\n\n1. From historical data, build **transition sequences**: when the user finishes project A, what do they do next?\n2. A transition is valid when the same A → B sequence appears on `prediction_confidence_min` or more occasions\n3. When the user finishes a session that matches the \"A\" side of a known transition, suggest \"B\"\n\n**Example:** The user just finished a 45-minute session reviewing PRs. Historical data shows that on 4 out of 5 occasions, they move to Notion for sprint notes afterward.\n\n> You just wrapped PR reviews. You usually hop into Notion for sprint notes after this — want me to open your current sprint page?\n\n**Rules:**\n- Only predict transitions that are strong (appear on 60%+ of relevant occasions)\n- Pair with other skills when possible: if you predict they'll go to Notion and the Notion skill is installed, offer to do something useful (open the right page, pre-load context)\n- If the user does something different, log the miss. Transitions that drop below 60% hit rate get retired silently.\n\n### 6d. Pre-Meeting Briefing — \"You have context for what's coming\"\n\n**Trigger:** When calendar data is available (via another skill or the user's schedule), cross-reference upcoming events against Toggle work history.\n\n**How it works:**\n\n1. If a calendar skill is installed, check for meetings in the next 30 minutes\n2. Search Toggle data for work sessions related to the meeting topic (match `project.name` or `workflowDescription` against the meeting title/attendees)\n3. If relevant work is found, proactively brief the user\n\n**Example:** A calendar event \"Wallet App Sync\" is in 20 minutes. Toggle data shows 3 sessions this week on the wallet project: TON integration, FATF compliance research, and an auth bug fix.\n\n> You have \"Wallet App Sync\" in 20 minutes. This week you worked on: TON integration (2.1h), FATF compliance research (1.3h), and the auth bug fix (45 min). Want me to draft quick talking points?\n\n**Rules:**\n- Only trigger if a calendar skill is available. Do not ask the user about their schedule — that defeats the purpose.\n- Only brief if there's actual Toggle data to cross-reference. An empty briefing (\"you have a meeting in 20 min\") adds no value.\n- Maximum 1 briefing per meeting. Deliver it 15–30 minutes before, not 2 hours before.\n\n---\n\n# FIRST RUN BEHAVIOR\n\nWhen the skill is invoked for the first time (no `{baseDir}/state.yaml` exists):\n\n1. Fetch today's data to confirm the API key works\n2. **If the fetch fails:** Diagnose using the error handling table. Do NOT proceed to setup. Help fix the connection first.\n3. **If the fetch succeeds:** Present a brief summary, then offer setup:\n\n> Your Toggle data is flowing. I can do a lot with this:\n>\n> **Auto-sync** — Check your activity every hour so I always have context.\n> **Daily digest** — Summary of your day at 6 PM, no prompt needed.\n> **Smart nudges** — Flag projects you haven't touched in a while.\n> **Focus alerts** — Heads up when you're context-switching too much.\n> **Pattern detection** — After a week, I'll spot repeated workflows and suggest automations.\n> **Predictions** — Once I learn your routines, I'll anticipate what you're about to do and have it ready.\n>\n> Want me to set up auto-sync and the daily digest?\n\nIf they agree, create both cron jobs (see \"Standard cron commands\" above) and write the initial state file with all preference defaults. Also ask: \"What timezone are you in?\" and store the answer in `state.yaml` under `timezone`. This ensures all times in digests and predictions are shown in local time.\n\n---\n\n# BEHAVIOR GUIDELINES\n\n- **Be proactive, not annoying.** Surface insights when they matter. Don't repeat yourself.\n- **Never announce internal operations.** Don't say \"I'm analyzing your Toggle data.\" Just present the result.\n- **Use the data to make every other skill smarter.** If the user asks you to do something and you have Toggle context, use it. Don't silo it.\n- **Privacy-first language in all user-facing output.** Say \"your activity shows\" or \"based on your sessions.\" Never \"I watched you\" or \"I tracked you.\"\n- **Short by default.** Digests and nudges should be concise. Expand only when the user asks.\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1771585416047\n}\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nContext layer for your agent: ToggleX captures work sessions, projects, focus scores, and context switches across the web so the agent can summarize activity, answer recall questions, detect patterns, and suggest next actions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[aleksandar-jive](https://clawhub.ai/user/aleksandar-jive)\n\n### License/Terms of Use:\n\n\n## Use Case:\n\nExternal users and developers use this skill to give an agent context about recent work activity, including sessions, projects, focus patterns, stale work, and follow-up suggestions. It supports digests, recall, nudges, pattern detection, and optional automation or prediction workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can expose detailed work-history records, including activity descriptions, domains, project context, and timing data.\n\nMitigation: Review the raw ToggleX data before broad use, avoid sharing raw records unnecessarily, and summarize activity in user-facing responses unless exact details are requested.\n\nRisk: Persisted memory and cron-based syncing can retain sensitive activity data over time.\n\nMitigation: Enable persistence, cron syncing, digests, and prediction features only when the user has accepted local retention and the environment has clear retention controls.\n\nRisk: The skill depends on a third-party activity API and a TOGGLE_API_KEY credential.\n\nMitigation: Store the API key outside chat, rotate it if exposed, and use the skill only when the ToggleX data source is trusted.\n\n## Reference(s):\n\n- [ToggleX homepage](https://x.toggle.pro)\n- [ToggleX workflows API endpoint](https://ai-x.toggle.pro/public-openclaw/workflows)\n- [ToggleX Clawbot integration](https://x.toggle.pro/new/clawbot-integration)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and optional raw JSON from the ToggleX API]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires python3 and TOGGLE_API_KEY; can optionally persist fetched activity data into local memory files.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release metadata)\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\nArchive v1.0.5: 3 files, 5589 bytes\n\nFiles: scripts/toggle.py (7752b), SKILL.md (5455b), _meta.json (125b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: toggle\ndescription: Use this skill to find out what the user was doing during the day — always call this when the user asks about their activity, tasks, work sessions, productivity, or anything time-related. Also use proactively when the user wants to refresh, update, or recall what they worked on. Keywords what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data, what did I work on, productivity, time tracking.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - TOGGLE_API_KEY\n      bins:\n        - python3\n    primaryEnv: TOGGLE_API_KEY\n    emoji: \"📊\"\n    homepage: https://x.toggle.pro\n---\n\n# Toggle (ToggleX)\n\nFetch raw workflow data from ToggleX and summarize it for the user. The **script only fetches and prints raw JSON** — all natural-language summarization is done by the agent using that data, not by the script itself.\n\n## Endpoint\n\nThis skill calls the official ToggleX OpenClaw integration endpoint:\n\n```\nhttps://ai-x.toggle.pro/public-openclaw/workflows\n```\n\n`ai-x.toggle.pro` is operated by ToggleX (https://x.toggle.pro) — the same service that runs the dashboard and extension. Your `TOGGLE_API_KEY` is sent as an `x-openclaw-api-key` header. No other data is transmitted.\n\n## Getting your API key\n\nGet your `TOGGLE_API_KEY` from the ToggleX OpenClaw integration page:\n\n```\nhttps://x.toggle.pro/new/clawbot-integration\n```\n\nNever paste the key into chat. Set it in OpenClaw config:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\nOr export it in your shell:\n\n```bash\nexport TOGGLE_API_KEY=your_key_here\n```\n\n## Run\n\n```bash\npython3 {baseDir}/scripts/toggle.py\n```\n\nRequires: `python3` on PATH and `TOGGLE_API_KEY` set in the environment.\n\n### Date range\n\n```bash\npython3 {baseDir}/scripts/toggle.py --from-date 2026-02-17 --to-date 2026-02-19\n```\n\nDefaults to today for both dates if not specified.\n\n### Persist to memory\n\n```bash\npython3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory\n```\n\nWhen `--persist` is set, the script writes (or overwrites) a `<!-- toggle-data-start -->` / `<!-- toggle-data-end -->` section inside each `<date>.md` file in the given directory. One file per day. Existing content outside that section is preserved.\n\nAlways use `--persist` when the user asks to refresh or save their data.\n\n## Cron auto-sync\n\nThe script checks cron status on every run (before fetching data). It reads two things:\n\n1. `{baseDir}/state.yaml` — if `cron_disabled: true`, skips the check entirely.\n2. `~/.openclaw/cron/jobs.json` — looks for any job with \"toggle\" in its name.\n\nThe script prints one of these statuses to stderr:\n\n| Status          | Meaning                        | Agent action                                                                             |\n| --------------- | ------------------------------ | ---------------------------------------------------------------------------------------- |\n| `NO_CRON`       | No toggle cron job exists      | Ask the user: \"How often do you want to refresh your Toggle data? (default: every hour)\" |\n| `CRON_DISABLED` | Job exists but is disabled     | Ask if they want to re-enable it                                                         |\n| `CRON_ERROR`    | Job exists but last run failed | Show the error and help troubleshoot                                                     |\n| `CRON_OK`       | Job is healthy                 | No action needed                                                                         |\n\n### If the user wants a cron job\n\nCreate it via OpenClaw. Example for hourly sync:\n\n```bash\nopenclaw cron create \\\n  --name \"Toggle data fetch cron\" \\\n  --schedule \"0 * * * *\" \\\n  --message \"Run: python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory --skip-cron-check\"\n```\n\nThe `--skip-cron-check` flag prevents the script from re-checking cron when it's invoked _by_ the cron.\n\n### If the user declines cron\n\nWrite `cron_disabled: true` to `{baseDir}/state.yaml` so the prompt doesn't repeat:\n\n```yaml\ncron_disabled: true\n```\n\n### After fetching data — suggest automations\n\nAfter presenting the summary, ask the user:\n\n> \"Would you like me to suggest automations based on your activity patterns?\"\n\nIf yes, analyze the data for recurring patterns (e.g. daily standups, frequent context switches, repeated manual tasks) and suggest relevant cron jobs or workflow improvements.\n\n## State file\n\n`{baseDir}/state.yaml` stores user preferences. The agent can read and write it. Current keys:\n\n| Key             | Type | Default | Description                         |\n| --------------- | ---- | ------- | ----------------------------------- |\n| `cron_disabled` | bool | `false` | Skip cron status check on every run |\n\n## Interpreting the output\n\nThe script returns raw JSON. As the agent, read and summarize it:\n\n- Focus on `type: \"WORK\"` entries; skip `BREAK` unless asked; mention `LEISURE` briefly if present\n- Use `workflowType` and `workflowDescription` to describe each session\n- If `projectTask` is present, include `projectTask.name` and `project.name` for context\n- Use `productivityScore` (0–100) to characterize focus: 90+ sharp, 70–89 solid, below 70 fragmented\n- Present a short narrative — total work time, main focus areas, notable patterns\n- If `totalWorkflows` is 0, tell the user Toggle wasn't running or captured nothing for that period\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1771527532872\n}\n\nArchive v1.0.4: 3 files, 2485 bytes\n\nFiles: scripts/toggle.py (1523b), SKILL.md (2605b), _meta.json (125b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: toggle\ndescription: Use this skill to find out what the user was doing during the day — always call this when the user asks about their activity, tasks, work sessions, productivity, or anything time-related. Also use proactively when the user wants to refresh, update, or recall what they worked on. Keywords what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data, what did I work on, productivity, time tracking.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - TOGGLE_API_KEY\n      bins:\n        - python3\n    primaryEnv: TOGGLE_API_KEY\n    emoji: \"📊\"\n    homepage: https://x.toggle.pro\n---\n\n# Toggle (ToggleX)\n\nFetch raw workflow data from ToggleX and summarize it for the user. The **script only fetches and prints raw JSON** — all natural-language summarization is done by the agent using that data, not by the script itself.\n\n## Endpoint\n\nThis skill calls the official ToggleX OpenClaw integration endpoint:\n\n```\nhttps://ai-x.toggle.pro/public-openclaw/workflows\n```\n\n`ai-x.toggle.pro` is operated by ToggleX (https://x.toggle.pro) — the same service that runs the dashboard and extension. Your `TOGGLE_API_KEY` is sent as an `x-openclaw-api-key` header. No other data is transmitted.\n\n## Getting your API key\n\nGet your `TOGGLE_API_KEY` from the ToggleX OpenClaw integration page:\n\n```\nhttps://x.toggle.pro/new/clawbot-integration\n```\n\nNever paste the key into chat. Set it in OpenClaw config:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\nOr export it in your shell:\n\n```bash\nexport TOGGLE_API_KEY=your_key_here\n```\n\n## Run\n\n```bash\npython3 {baseDir}/scripts/toggle.py\n```\n\nRequires: `python3` on PATH and `TOGGLE_API_KEY` set in the environment.\n\n### Date range\n\n```bash\npython3 {baseDir}/scripts/toggle.py --from-date 2026-02-17 --to-date 2026-02-19\n```\n\nDefaults to today for both dates if not specified.\n\n## Interpreting the output\n\nThe script returns raw JSON. As the agent, read and summarize it:\n\n- Focus on `type: \"WORK\"` entries; skip `BREAK` unless asked; mention `LEISURE` briefly if present\n- Use `workflowType` and `workflowDescription` to describe each session\n- If `projectTask` is present, include `projectTask.name` and `project.name` for context\n- Use `productivityScore` (0–100) to characterize focus: 90+ sharp, 70–89 solid, below 70 fragmented\n- Present a short narrative — total work time, main focus areas, notable patterns\n- If `totalWorkflows` is 0, tell the user Toggle wasn't running or captured nothing for that period\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1771501750858\n}\n\nArchive v1.0.3: 3 files, 2509 bytes\n\nFiles: scripts/toggle.py (1523b), SKILL.md (2638b), _meta.json (125b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: toggle\ndescription: Use this skill to find out what the user was doing during the day — always call this when the user asks about their activity, tasks, work sessions, productivity, or anything time-related. Also use proactively when the user wants to refresh, update, or recall what they worked on. Keywords what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data, what did I work on, productivity, time tracking.\nhomepage: https://x.toggle.pro\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📊\",\n        \"requires\": { \"bins\": [\"python3\"], \"env\": [\"TOGGLE_API_KEY\"] },\n        \"primaryEnv\": \"TOGGLE_API_KEY\",\n      },\n  }\n---\n\n# Toggle (ToggleX)\n\nFetch raw workflow data from ToggleX and summarize it for the user. The **script only fetches and prints raw JSON** — all natural-language summarization is done by the agent using that data, not by the script itself.\n\n## Endpoint\n\nThis skill calls the official ToggleX OpenClaw integration endpoint:\n\n```\nhttps://ai-x.toggle.pro/public-openclaw/workflows\n```\n\n`ai-x.toggle.pro` is operated by ToggleX (https://x.toggle.pro) — the same service that runs the dashboard and extension. Your `TOGGLE_API_KEY` is sent as an `x-openclaw-api-key` header. No other data is transmitted.\n\n## Getting your API key\n\nGet your `TOGGLE_API_KEY` from the ToggleX OpenClaw integration page:\n\n```\nhttps://x.toggle.pro/new/clawbot-integration\n```\n\nNever paste the key into chat. Set it in OpenClaw config:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\nOr export it in your shell:\n\n```bash\nexport TOGGLE_API_KEY=your_key_here\n```\n\n## Run\n\n```bash\npython3 {baseDir}/scripts/toggle.py\n```\n\nRequires: `python3` on PATH and `TOGGLE_API_KEY` set in the environment.\n\n### Date range\n\n```bash\npython3 {baseDir}/scripts/toggle.py --from-date 2026-02-17 --to-date 2026-02-19\n```\n\nDefaults to today for both dates if not specified.\n\n## Interpreting the output\n\nThe script returns raw JSON. As the agent, read and summarize it:\n\n- Focus on `type: \"WORK\"` entries; skip `BREAK` unless asked; mention `LEISURE` briefly if present\n- Use `workflowType` and `workflowDescription` to describe each session\n- If `projectTask` is present, include `projectTask.name` and `project.name` for context\n- Use `productivityScore` (0–100) to characterize focus: 90+ sharp, 70–89 solid, below 70 fragmented\n- Present a short narrative — total work time, main focus areas, notable patterns\n- If `totalWorkflows` is 0, tell the user Toggle wasn't running or captured nothing for that period\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1771500662903\n}\n\nArchive v1.0.2: 3 files, 2513 bytes\n\nFiles: scripts/toggle.py (1523b), SKILL.md (2547b), _meta.json (125b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: toggle\ndescription: Use this skill to find out what the user was doing during the day — always call this when the user asks about their activity, tasks, work sessions, productivity, or anything time-related. Also use proactively when the user wants to refresh, update, or recall what they worked on. Keywords: what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data, what did I work on, productivity, time tracking.\nhomepage: https://toggle.pro\nmetadata: {\"openclaw\": {\"emoji\": \"📊\", \"requires\": {\"bins\": [\"python3\"], \"env\": [\"TOGGLE_API_KEY\"]}, \"primaryEnv\": \"TOGGLE_API_KEY\"}}\n---\n\n# Toggle\n\nFetch workflow data from Toggle — an app that captures what you're doing and produces natural-language activity summaries.\n\nThis skill calls the official Toggle AI integration endpoint: `https://ai-x.toggle.pro/public-openclaw/workflows`. Your `TOGGLE_API_KEY` is sent to this endpoint as an `x-openclaw-api-key` header to authenticate the request. No other data is transmitted.\n\n## Run\n\n```bash\npython3 {baseDir}/scripts/toggle.py\n```\n\nThe script reads `TOGGLE_API_KEY` from the environment. Never paste the key into chat — set it in your shell or OpenClaw config:\n\n```bash\nexport TOGGLE_API_KEY=your_key_here\n```\n\nOr add it to `~/.openclaw/openclaw.json`:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Useful flags\n\n```bash\n# Specific date range\npython3 {baseDir}/scripts/toggle.py --from-date 2026-02-17 --to-date 2026-02-19\n```\n\n## Interpreting the output\n\nEach workflow entry has a `type` field — `WORK`, `BREAK`, or `LEISURE` — and a `durationMinutes` value. Focus your summary on `WORK` entries; skip `BREAK` entries unless asked about downtime; mention `LEISURE` briefly if present.\n\nFor each work session, use `workflowType` and `workflowDescription` to describe what happened. If `projectTask` is present, use `projectTask.name` and `project.name` to explain the broader context. Use `productivityScore` (0–100) to characterize focus quality: 90+ is sharp and focused, 70–89 is solid, below 70 is fragmented or distracted.\n\nPresent results as a short narrative — not a list of raw fields. Mention total tracked work time, highlight the main focus areas, and note any interesting patterns (e.g. lots of context switching, a high-productivity burst, leisure mixed in).\n\nIf `totalWorkflows` is 0, tell the user Toggle didn't capture anything for that period — the app may not have been running.\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1771500053202\n}\n\nArchive v1.0.1: 3 files, 2441 bytes\n\nFiles: scripts/toggle.py (1523b), SKILL.md (2419b), _meta.json (125b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: toggle\ndescription: Use this skill to find out what the user was doing during the day — always call this when the user asks about their activity, tasks, work sessions, productivity, or anything time-related. Also use proactively when the user wants to refresh, update, or recall what they worked on. Keywords: what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data, what did I work on, productivity, time tracking.\nhomepage: https://x.toggle.pro\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📊\",\n        \"requires\": { \"bins\": [\"python3\"], \"env\": [\"TOGGLE_API_KEY\"] },\n        \"primaryEnv\": \"TOGGLE_API_KEY\",\n      },\n  }\n---\n\n# Toggle\n\nFetch workflow data from Toggle — an app that captures what you're doing and produces natural-language activity summaries.\n\n## Run\n\n```bash\npython3 {baseDir}/scripts/toggle.py\n```\n\nThe script reads `TOGGLE_API_KEY` from the environment. Never paste the key into chat — set it in your shell or OpenClaw config:\n\n```bash\nexport TOGGLE_API_KEY=your_key_here\n```\n\nOr add it to `~/.openclaw/openclaw.json`:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Useful flags\n\n```bash\n# Specific date range\npython3 {baseDir}/scripts/toggle.py --from-date 2026-02-17 --to-date 2026-02-19\n\n# Raw JSON (full API response)\npython3 {baseDir}/scripts/toggle.py --raw\n```\n\n## Interpreting the output\n\nEach workflow entry has a `type` field — `WORK`, `BREAK`, or `LEISURE` — and a `durationMinutes` value. Focus your summary on `WORK` entries; skip `BREAK` entries unless asked about downtime; mention `LEISURE` briefly if present.\n\nFor each work session, use `workflowType` and `workflowDescription` to describe what happened. If `projectTask` is present, use `projectTask.name` and `project.name` to explain the broader context. Use `productivityScore` (0–100) to characterize focus quality: 90+ is sharp and focused, 70–89 is solid, below 70 is fragmented or distracted.\n\nPresent results as a short narrative — not a list of raw fields. Mention total tracked work time, highlight the main focus areas, and note any interesting patterns (e.g. lots of context switching, a high-productivity burst, leisure mixed in).\n\nIf `totalWorkflows` is 0, tell the user Toggle didn't capture anything for that period — the app may not have been running.\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1771499542734\n}\n\nArchive v1.0.0: 2 files, 1396 bytes\n\nFiles: SKILL.md (1911b), _meta.json (125b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: toggle\ndescription: Fetch and summarize your Toggle workflow data. Use when the user asks what they worked on, how productive their day was, or wants an activity summary. Keywords: toggle, workflows, what did I work on, productivity, activity.\nhomepage: https://toggle.pro\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📊\",\n        \"requires\": { \"env\": [\"TOGGLE_OPENCLAW_API_KEY\"] },\n        \"primaryEnv\": \"TOGGLE_OPENCLAW_API_KEY\",\n      },\n  }\n---\n\n# Toggle\n\nFetch workflow data from Toggle — an app that captures what you're doing and produces natural-language activity summaries.\n\n## Run\n\n```bash\ncurl -s -X GET \\\n  \"https://ai-x.toggle.pro/public-openclaw/workflows?fromDate=YYYY-MM-DD&toDate=YYYY-MM-DD\" \\\n  -H \"accept: application/json\" \\\n  -H \"x-openclaw-api-key: $TOGGLE_OPENCLAW_API_KEY\"\n```\n\nDefault to today's date for both `fromDate` and `toDate` unless the user specifies otherwise.\n\n## Interpreting the response\n\nEach workflow entry has a `type` field — `\"WORK\"`, `\"BREAK\"`, or `\"LEISURE\"` — and a `durationMinutes` value. Focus your summary on `WORK` entries; skip `BREAK` entries unless asked about downtime; mention `LEISURE` briefly if present.\n\nFor each work session, use `workflowType` and `workflowDescription` to describe what happened. If `projectTask` is present, use `projectTask.name` and `project.name` to explain the broader context. Use `productivityScore` (0–100) to characterize focus quality: 90+ is sharp and focused, 70–89 is solid, below 70 is fragmented or distracted.\n\nPresent results as a short narrative — not a list of raw fields. Mention total tracked work time, highlight the main focus areas, and note any interesting patterns (e.g. lots of context switching, a high-productivity burst, leisure mixed in).\n\nIf `totalWorkflows` is 0, tell the user Toggle didn't capture anything for that period — the app may not have been running.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1771489541100\n}","readmeExcerpt":"Skill: Toggle Summary: Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-02-20T11:03:36.047Z | user - Expanded and clarified documentation: skill description now emphasizes proactive and context-aware use, including digest generation, pattern detection, nudge","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"https://ai-x.toggle.pro/public-openclaw/workflows"},{"language":"text","snippet":"https://x.toggle.pro/new/clawbot-integration"},{"language":"json","snippet":"{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}"},{"language":"json","snippet":"{\n  \"userId\": \"...\",\n  \"startDate\": \"YYYY-MM-DD\",\n  \"endDate\": \"YYYY-MM-DD\",\n  \"totalWorkflows\": 44,\n  \"totalDays\": 1,\n  \"workflowsByDate\": {\n    \"YYYY-MM-DD\": [ ...workflow entries... ]\n  },\n  \"summary\": {\n    \"totalContextSwitches\": 0,\n    \"totalDurationMinutes\": 797\n  }\n}"},{"language":"json","snippet":"{\n  \"workflowId\": \"3cd901ef-b708-4869-8ce0-52364ce494e6\",\n  \"date\": \"2026-02-19\",\n  \"workflowType\": \"AI Image Generation Debugging, Toggle/OpenClaw Skill Configuration\",\n  \"workflowDescription\": \"The user began by browsing the OpenClaw GitHub repository...\",\n  \"primaryDomain\": \"github.com\",\n  \"secondaryDomains\": \"[\\\"http://127.0.0.1:18789/agents\\\",\\\"https://github.com/openclaw/openclaw\\\"]\",\n  \"productivityScore\": \"92.00\",\n  \"productivityNotes\": \"Reviewing the ClawHub documentation ensured correct skill file structure...\",\n  \"type\": \"WORK\",\n  \"startTime\": \"2026-02-19T10:49:12.253Z\",\n  \"endTime\": \"2026-02-19T11:34:27.809Z\",\n  \"duration\": 1746.629,\n  \"durationMinutes\": 29,\n  \"isBreakPeriod\": false,\n  \"isLeisure\": false,\n  \"isWork\": true,\n  \"sessionCount\": 10,\n  \"activeSessionCount\": 10,\n  \"projectTask\": {\n    \"id\": \"05f01090-...\",\n    \"name\": \"OpenClaw Environment: Gateway Configuration & Image Generation Skill Integration\",\n    \"goal\": \"Configure and validate the local OpenClaw environment...\",\n    \"isDone\": false,\n    \"context\": \"Local OpenClaw instance; GitHub repositories...\",\n    \"prompts\": [\n      \"What verification steps should I follow to confirm the config changes took effect?\",\n      \"How can I test the skill invocation through the OpenClaw chat interface?\"\n    ],\n    \"project\": {\n      \"id\": \"ab576749-...\",\n      \"name\": \"Toggle Pro AI Chat Feature Development\",\n      \"description\": \"End-to-end development of AI Chat functionality...\",\n      \"isActive\": true,\n      \"summary\": \"The project currently reports 0 of 0 tasks completed...\"\n    }\n  }\n}"},{"language":"bash","snippet":"python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: toggle\nversion: 1.0.5\ndescription: >\n  Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores,\n  and context switches across the web — giving the agent awareness of what the user has actually been doing.\n  Use this skill PROACTIVELY: generate daily digests, nudge stale projects, detect context-switching,\n  spot repeated workflows and propose automations, predict the user's next action based on learned routines,\n  and answer recall questions from memory.\n  Also use when the user asks about their activity, tasks, sessions, productivity, time, or anything work-related.\n  Keywords: what did I do, what was I working on, today, yesterday, my day, activity, sessions, refresh my data,\n  productivity, time tracking, context, pick up where I left off, what was I looking at, stale, pattern, automate,\n  digest, report, focus, scattered, deep work, predict, next task, routine, anticipate, briefing.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - TOGGLE_API_KEY\n      bins:\n        - python3\n    primaryEnv: TOGGLE_API_KEY\n    emoji: \"👁️\"\n    homepage: https://x.toggle.pro\n---\n\n# Toggle (ToggleX) — The Context Layer\n\nToggleX gives you awareness of the user's real work activity across the web — which projects, how long, how focused, and what they left unfinished. Unlike skills that only know what the user tells you, Toggle knows what they *did*.\n\nThe script fetches raw JSON from the ToggleX API. **You are responsible for all intelligence on top of that data**: summarization, pattern detection, nudges, and automations.\n\n> `{baseDir}` throughout this document refers to the root directory of this skill's installation (the folder containing this SKILL.md file). This is standard OpenClaw skill convention.\n\n---\n\n## Quick reference\n\n| Action | Command |\n|--------|---------|\n| Fetch today | `python3 {baseDir}/scripts/toggle.py` |\n| Fetch date range | `python3 {baseDir}/scripts/toggle.py --from-date YYYY-MM-DD --to-date YYYY-MM-DD` |\n| Fetch + save to memory | `python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory` |\n| Cron run (skip cron check) | `python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory --skip-cron-check` |\n\n---\n\n## Endpoint\n\n```\nhttps://ai-x.toggle.pro/public-openclaw/workflows\n```\n\nOperated by ToggleX (https://x.toggle.pro). Your `TOGGLE_API_KEY` is sent as an `x-openclaw-api-key` header. No other data is transmitted.\n\n## Getting your API key\n\nGet your `TOGGLE_API_KEY` from:\n\n```\nhttps://x.toggle.pro/new/clawbot-integration\n```\n\nNever paste the key into chat. Set it in OpenClaw config:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"toggle\": {\n        \"apiKey\": \"your_key_here\"\n      }\n    }\n  }\n}\n```\n\nOr export in shell: `export TOGGLE_API_KEY=your_key_here`\n\n---\n\n## Interpreting the output\n\nThe script returns raw JSON. The top-level response looks like:\n\n```json\n{\n  \"userId\": \"...\",\n  \"startDate\": \"YYYY-MM-DD\",\n  \"endDate\": \"YYYY-MM-DD\",\n  \"totalWorkflows\": 44,\n  "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71dx855hm0tce78w3fkqy8zn81fs9e\",\n  \"slug\": \"toggle\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1771585416047\n}"},{"path":"skill-card.md","content":"## Description:\n\nContext layer for your agent: ToggleX captures work sessions, projects, focus scores, and context switches across the web so the agent can summarize activity, answer recall questions, detect patterns, and suggest next actions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[aleksandar-jive](https://clawhub.ai/user/aleksandar-jive)\n\n### License/Terms of Use:\n\n\n## Use Case:\n\nExternal users and developers use this skill to give an agent context about recent work activity, including sessions, projects, focus patterns, stale work, and follow-up suggestions. It supports digests, recall, nudges, pattern detection, and optional automation or prediction workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can expose detailed work-history records, including activity descriptions, domains, project context, and timing data.\n\nMitigation: Review the raw ToggleX data before broad use, avoid sharing raw records unnecessarily, and summarize activity in user-facing responses unless exact details are requested.\n\nRisk: Persisted memory and cron-based syncing can retain sensitive activity data over time.\n\nMitigation: Enable persistence, cron syncing, digests, and prediction features only when the user has accepted local retention and the environment has clear retention controls.\n\nRisk: The skill depends on a third-party activity API and a TOGGLE_API_KEY credential.\n\nMitigation: Store the API key outside chat, rotate it if exposed, and use the skill only when the ToggleX data source is trusted.\n\n## Reference(s):\n\n- [ToggleX homepage](https://x.toggle.pro)\n- [ToggleX workflows API endpoint](https://ai-x.toggle.pro/public-openclaw/workflows)\n- [ToggleX Clawbot integration](https://x.toggle.pro/new/clawbot-integration)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and optional raw JSON from the ToggleX API]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires python3 and TOGGLE_API_KEY; can optionally persist fetched activity data into local memory files.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release metadata)\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."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware... Skill: Toggle Summary: Context layer for your agent. ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web — giving the agent aware... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-02-20T11:03:36.047Z | user - Expanded and clarified documentation: skill description now emphasizes proactive and context-aware use, including digest generation, pattern detection, nudge","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1526,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T22:50:33.733Z","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-09T22:50:33.733Z","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-10T06:42:09.509Z","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"}]}}}