{"id":17654,"plugin_id":"plugins_6a7adacb0bbc8191b326b6d54a2a7745","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:14:18.478Z","digest":"1c6945f2e52008b6276d8e8ddf5ebfcdb2a21c758a0cf0217ce85240ea756109","against":null,"payload":{"description":"Check QuarryFi R&D tracking status across all configured company profiles","included_files":[],"name":"quarryfi-status","skill_md_contents":"---\nname: quarryfi-status\ndescription: Check QuarryFi R&D tracking status across all configured company profiles\n---\n\nShow the user's QuarryFi tracking status across all configured profiles, plus the currently installed Codex plugin version and whether hooks have fired recently on this machine.\n\n## What to do\n\n1. Read `~/.quarryfi/config.json` without displaying any full `api_key`. If it doesn't exist, tell the user to run setup from the verified source clone in a regular terminal, not in the Codex conversation:\n   ```\n   cd ~/plugins/quarryfi-time-tracker && bash setup.sh\n   ```\n   Never ask the user to paste a tracker key into Codex, and never invent a credential.\n\n2. Detect the config format:\n   - **Multi-profile** (has `\"profiles\"` array): iterate each profile.\n   - **Legacy** (has top-level `\"api_key\"`): treat as a single unnamed profile.\n\n3. For each profile, display:\n   - Profile name\n   - Masked key identifier only (for example, `qf_abcd…1234`)\n   - API destination: `https://quarryfi.com` (legacy custom `api_url` values are ignored)\n   - Mapped project directories (or \"all projects\" if empty)\n   - Whether the current working directory matches this profile\n\n4. Read the local plugin version:\n   - Check `~/plugins/quarryfi-time-tracker/.codex-plugin/plugin.json` first\n   - If the plugin is installed elsewhere, read the version from that install's `.codex-plugin/plugin.json`\n\n5. For each profile, query only QuarryFi's production status endpoint. Do not use a configured `api_url` value:\n   ```bash\n   curl --proto '=https' --tlsv1.2 -s -H \"Authorization: Bearer $API_KEY\" \"https://quarryfi.com/api/status\"\n   ```\n   Keep the key inside the command environment. Do not echo it, include the full value in the response, or write it to the audit log.\n\n6. If the API responds successfully, display per profile:\n   - Last heartbeat timestamp\n   - Last accepted heartbeat receipt\n   - Last authenticated contact\n   - Health state\n   - Plugin version / runtime channel / hook mode / install revision\n   - Last 24 hours tracked minutes\n   - Last 7 days tracked minutes\n   - Active projects from the last 7 days\n   - Recent sessions\n\n7. If the API request fails, fall back to the local audit log instead of stopping.\n\n8. Show audit log summary:\n   - Check if `~/.quarryfi/audit.log` exists\n   - Show the count of recent entries and last heartbeat timestamp\n   - Specifically note whether there is any `hook_fired` entry from the current session/day\n   - If the user asks for details, show the last 10 lines of the audit log\n\n9. If any API returns an error, show the HTTP status and suggest verifying the API key.\n10. Tell the user the dashboard remains the source of truth for deduped activity blocks and qualification review. Tracker activity is supporting evidence, not a determination of tax-credit eligibility or tax advice.\n\n## Response format\n\n```\nQuarryFi R&D Tracking Status\n═════════════════════════════\n\nProfile: Acme Corp\n  API:       https://quarryfi.com\n  Projects:  /Users/me/work/acme-api, /Users/me/work/acme-frontend\n  Match:     ✓ (current directory matches)\n  Today:     2h 34m\n  This week: 12h 15m\n  Sessions:  3 today\n\nProfile: Personal Projects\n  API:       https://quarryfi.com\n  Projects:  all (catch-all)\n  Match:     ✗\n  Today:     0h 45m\n  This week: 3h 20m\n\n─────────────────────────────\nAudit log: 142 entries, last heartbeat 2 min ago\nSource: Codex CLI\n```\n\nAdapt based on actual API response fields. Keep it concise. If the API is unavailable, use the audit log plus the current directory/profile match as the fallback status.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}