monitor
Manage feed subscriptions that track blogs, repos, and living pages for changes. Use when adding, listing, removing, or checking monitored resources. Also use when the discovery skill flags a resource as monitorable. Triggers on: 'monitor this', 'subscribe to', 'track this repo', 'watch this blog', 'what are we monitoring', 'check feeds', 'unsubscribe', 'stop monitoring', or any task involving feed subscriptions.
What this skill does
# Resource Monitor — Track What Matters
Manage the feed subscription system (ADR-0127). Inngest cron checks subscriptions hourly, detects changes, summarizes via LLM, and notifies Joel via gateway with approve/dismiss for `/cool` publishing.
## Joel's Interest Profile
Use this to assess whether a discovered resource is worth monitoring. If a resource clearly maps to 2+ of these, **recommend monitoring** with a brief explanation.
- **Agentic AI** — agent patterns, agent infrastructure, tool use, MCP, multi-agent systems
- **Developer education** — course platforms, learning design, course-builder ecosystem
- **TypeScript tooling** — Effect ecosystem, Bun, type-level programming, compiler work
- **Inngest / durable workflows** — event-driven systems, step functions, background jobs
- **Personal AI systems** — local-first AI, semantic memory, knowledge management, RAG
- **BEAM / Elixir / OTP** — Erlang ecosystem, actor model, fault tolerance
- **Video infrastructure** — Mux, transcription, media pipelines
- **Next.js / React** — RSC, App Router, cache components, Vercel platform
- **CLI design** — agent-first interfaces, HATEOAS, terminal UIs
- **Knowledge management** — Obsidian, digital gardens, PKM, zettelkasten
- **Self-hosted infra** — homelab, k8s, Tailscale, NAS, local services
- **AT Protocol / Bluesky** — decentralized web, PDS, lexicons
- **Convex** — real-time database, reactive backends
## CLI Commands
```bash
# List all monitored subscriptions
joelclaw subscribe list
# Add a subscription (auto-detects type from URL)
joelclaw subscribe add <url> --name "Simon Willison" --interval hourly
joelclaw subscribe add <url> --name "json-render" --type github --interval daily
# Remove a subscription
joelclaw subscribe remove <id>
# Force-check a specific subscription now
joelclaw subscribe check --id <id>
# Force-check all subscriptions
joelclaw subscribe check
# Show recent updates across all subscriptions
joelclaw subscribe summary
```
### Direct Inngest Fallback (alternative)
```bash
# Add subscription via event
joelclaw send subscription/add -d '{
"id": "simon-willison-blog",
"name": "Simon Willison",
"feedUrl": "https://simonwillison.net/atom/everything/",
"type": "atom",
"checkInterval": "hourly",
"notify": true,
"summarize": true,
"publishToCool": false,
"active": true
}'
# Force check all
joelclaw send subscription/check-feeds
# Check single
joelclaw send subscription/check-single -d '{"subscriptionId": "simon-willison-blog"}'
```
## Subscription Types
| Type | Detection | Method | Best For |
|------|-----------|--------|----------|
| `atom` / `rss` | URL ends in `/atom/`, `/feed/`, `/rss` or has XML content-type | Standard feed parse | Blogs, newsletters |
| `github` | `github.com/<owner>/<repo>` | GitHub API (releases, commits) | Open source projects |
| `page` | Any other URL | Content hash diff via defuddle | Living documents, guides |
| `bluesky` | `bsky.app` or AT Protocol handle | AT Protocol feed | Social/microblog |
## Auto-Detection Heuristics
When adding a subscription, detect the type:
1. **GitHub URL** → `github` type, check releases + significant commits
2. **URL with `/atom/` or `/feed/`** → `atom` type
3. **URL with `/rss`** → `rss` type
4. **Blog root URL** → try `{url}/atom/`, `{url}/feed/`, `{url}/rss.xml` before falling back to `page`
5. **Everything else** → `page` type (content hash diff)
## How Updates Flow
```
Inngest cron (hourly) → subscription/check-feeds
→ fans out: subscription/check-single per subscription
→ fetch feed / API / page hash
→ new entries detected?
→ YES: subscription/summarize → LLM summary
→ gateway notification with [Publish to /cool] [Dismiss]
→ Joel approves → discovery/noted → vault note → /cool
→ NO: log quiet check, move on
```
## Notification Format
Gateway notifications for feed updates include:
- **Source name** and subscription type
- **Brief LLM summary** of what changed
- **Entry count** and links to significant items
- **Relevance tag** (which interest areas it maps to)
- **Action buttons**: [Publish to /cool] [Dismiss]
## Adding from Discovery
When the discovery skill fires and the agent assesses the resource is monitorable, use MCQ to recommend:
```
After firing joelclaw discover:
1. Assess: Is this a blog, repo, or living page with ongoing updates?
2. Assess: Does it map to 2+ items in Joel's Interest Profile above?
3. If both yes → recommend monitoring via MCQ with brief reasoning
4. If monitorable but low relevance → mention it's monitorable but don't push
5. If not monitorable (one-shot article, tweet, etc.) → don't mention monitoring
```
## Backend
- **Redis storage**: `joelclaw:subscriptions` hash (lib at `packages/system-bus/src/lib/subscriptions.ts`)
- **Inngest functions**: `packages/system-bus/src/inngest/functions/subscriptions.ts`
- **Feed checker**: `packages/system-bus/src/lib/feed-checker.ts`
- **ADR**: `~/Vault/docs/decisions/0127-feed-subscriptions-and-resource-monitoring.md`
Related in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.