The skills/ dir was gitignored for npx-installed third-party skills,
but all our custom joelclaw skills lived there too. Only 3 of 19 were
ever committed. The rest existed only on disk.
Replaces batch-of-48 approach with individual step.run per file (806 steps,
under 1,000 limit). Each file gets independent retry, memoization, and
visibility in Inngest traces. Supports both dry-run and live scp modes.
Replaces Vaul drawer with portal-based inline editor that renders
directly below the clicked paragraph. Paragraph gets ring highlight
and scrolls into view. Click same paragraph to toggle closed. Esc to dismiss.
diagnose: automated layer-by-layer health check (process → CLI status →
error log → stdout log → E2E test → model API → Redis state). Scans for
known failure patterns, returns structured findings per layer.
review: extracts recent session context from the gateway JSONL transcript.
Returns exchanges, tool call summary, compactions, and log highlights
within a configurable time window. Gives agents working memory about
what the gateway was doing.
Both follow HATEOAS envelope with contextual next_actions.
Root cause: HEARTBEAT.md checklist processing (30-90s of tool calls)
blocked the gateway pi session, causing Telegram messages to fail with
'Agent is already processing' errors and triggering model fallback.
Three overlapping heartbeat paths were injecting prompts into the
single-threaded gateway session. Meanwhile, Inngest check/* functions
already perform all the same checks independently in the worker.
Changes:
- Gateway heartbeat.ts: remove prompt injection, keep tripwire/watchdog
- Inngest heartbeat: remove push-gateway-heartbeat step
- Redis channel: filter stale cron.heartbeat events, guard empty prompts
- Remove dead code: readHeartbeatChecklist, HEARTBEAT_PATH
- Titles wrap fully instead of truncating
- Relevance text shows complete (no line-clamp)
- Date shown as relative time (2d ago) above title, not stealing width
- Single type badge (repo/article/video) replaces full tag list
- Source URL removed from index (shown on detail page)
- Tighter card spacing for better scan density
- Re-removed duplicate self-hosting discovery (also from Vault source)