New skill instagram-content-insights: content patterns, not just raw numbers
Our Instagram card in the dashboard only showed a snapshot so far: followers, reach, the last eight posts. The new skill builds a growing post history from that, calculates the engagement rate per post, and once there are enough data points, spots rough patterns in caption hooks. First real run against our own account: question hooks perform noticeably better on average than statement hooks, though still on a small sample. Result lands directly as a new block in the existing dashboard card.
Two new skills for the finance dashboard
Built two small skills for the new finance tab in the dashboard, each running on demand per ticker: position-earnings-review summarizes the latest quarterly earnings release (beat/miss, guidance change, three to five key points), position-news-review scores the last one to two weeks of news by sentiment and impact. Both write their result as JSON, and the dashboard renders a card per position from it. Pure WebSearch/WebFetch, no external data provider.
Our Claude Code setup now lives in its own repo
Our whole Claude Code setup (CLAUDE.md, skills, agents, commands) now lives in its own git repo instead of directly inside ~/.claude. A setup.sh script symlinks the files back. On a new machine, a clone plus one script call brings the whole setup back. Before, ~/.claude itself was the repo, which coupled our configuration to Claude Code's own directory structure more tightly than we liked.
New agent repo-research-agent: no more blind adoption
Before we adopt anyone else's Claude Code setup or tool repo, a read-only audit now runs first: stars, structure, number of skills/agents/commands, recent activity. Triggered via /research-repo <url>, the agent closes with a clear call: adopt, skip, or worth a closer look. Stops a well-marketed repo from sliding into our own setup unchecked.
Audited the diagram-design repo: borrow the patterns, skip the install
Audited via our own repo-research-agent: cathrynlavery/diagram-design (26,000 stars) builds editorial diagrams as standalone HTML+SVG with Playwright export, deliberately skipping Mermaid. Same rendering stack as our carousel skills, carousel-inzpyre and tste-carousel, just for diagrams instead of social posts. We are not installing the skill, the diagram types do not fit our content. Three patterns we are taking for the next carousel iteration: the Playwright export recipe with a networkidle and fonts-ready wait as a robustness check against our own render.js, semantic design tokens instead of raw hex values, and a brand profile that derives itself automatically from a URL.
frontend-ohne-slop: a skill against the generic AI look
A new skill for frontend work with fixed phases: clarify style questions first, then an audit against eight known AI-slop patterns, then a DESIGN.md as the binding reference, then rebuild screen by screen with a screenshot comparison after every step. At the end, ten acceptance questions that all have to come back no before anything counts as done.
app-store-readiness: a multi-agent check before every App Store release
A skill for the final check before submitting to the App Store: several agents check review compliance, GDPR, backend security, StoreKit/monetization, and localization in parallel, plus a Codex tandem for auth/payment/security. Mechanical issues get fixed directly, everything else lands as a go/no-go list with the items that need a human call. Built from the first real run on one of our apps, not designed on paper.
newsletter-to-blog-inzpyre: one content format becomes two
Second skill in the newsletter pipeline: once a newsletter is sent, this skill automatically turns it into a bilingual blog article for the website, following the pattern of an earlier newsletter that was already converted this way once. One format, two channels, without writing the text twice.
New CLAUDE.md rule: how I phrase tasks
A new section collects patterns from Anthropic's own prompt library: state the outcome instead of prescribing steps, ship verification along with the task instead of just "write tests", point at a reference pattern instead of dictating implementation, use a measurable goal instead of vague quality. If a task comes in unclear or too granular, it gets rephrased against these patterns before starting and shown back for a quick confirmation.
Newsletter drafts built from the work we actually did
A new skill assembles the skeleton of the next newsletter issue from what really happened since the last send: git commits, memory entries, the news digest from our daily AI briefing. What comes out is a draft, not a finished mailing. Where data is missing, the skill drops a placeholder instead of inventing something. The pattern fits any recurring format you would otherwise start from a blank document.
Nightly automations need a proper wake-up call
Two of our scheduled runs kept failing at login in the morning. The cause was power management: the Mac fires the jobs even out of Power Nap, and in that half-awake state networking is not up yet, so the token refresh went nowhere. A `caffeinate -u` before the start forces a real wake, and a `caffeinate -i` keeps the machine awake for the length of the run. If your automation only fails at night, look there first and not at the script.
Rotation without memory repeats itself
Our content automations pick topics and images on rotation. Within one week we shipped two duplicates, both for the same reason: the pick came from pure arithmetic (day number modulo X) or from folder order, and nothing recorded what had already gone out. When two modulo values share a factor, that even produces a fixed pattern which repeats the exact same combination every eight days. Now every pick writes down what it used, and the least recently used candidate wins.
Learning: cadence jobs need an auth precheck before the real run
A daily launchd job once fired while the Mac was still asleep or locked: Keychain access for the Claude session was briefly unavailable, the run failed with an auth error, but the daily dedup gate still stamped the day as done. Fix: a short claude -p smoke test with a timeout before the real run. If it fails, only the lock gets released, last-run stays unstamped, so a later trigger can still succeed the same day.
tste-reel: Instagram reels from script, AI b-roll, and voiceover
New skill builds Instagram reels (9:16, 20-30 seconds) for a culinary app: script, AI-generated b-roll, voiceover, HTML/CSS/Playwright text overlays, ffmpeg final assembly. Builds on tste-carousel's architecture (cadence proposal, manual approval, no auto-post), but with real video and TTS costs per run instead of ~$0.04 per image. That's why the automatic cadence trigger stays off until there's an explicit cost go-ahead.
app-store-submission: App Store Connect metadata from real repo facts
New skill pre-fills the App Store Connect form fields (app information, privacy label, pricing, IAP, store copy) with facts it reads straight from the code, like product IDs from the .storekit file or the data actually collected per the privacy manifest. Complements a technical pre-submission audit another skill handles: where the repo has no evidence, it flags the field as open instead of guessing.
admin-panel-kit: a kit for admin panels
New skill for Next.js/Supabase admin panels: auth+nav, self-built tracking, newsletter, a private media library, and bulk actions as parameterized modules. It only builds what an app actually needs, none of the 5 modules is mandatory.
ai-daily: a daily AI news briefing with auto-posting
New skill scans AI news every day, turns it into an internal one-pager, a website update, and an Instagram story, renders the story as a PNG, and posts it without manual approval. A watchdog timeout stops one hung run from blocking the whole chain.
tste-carousel: Instagram carousels from 3 confirmed design directions
New skill builds Instagram and LinkedIn carousels for a culinary app: slide copy, HTML templates, Playwright rendering, delivered as ready-to-post images. 3 design directions and 4 content formats are locked in upfront, no redesign for every post.
Learning: guard automation against Obsidian's own saveSettings()
2 automation skills wrote straight into Obsidian's data.json and lost changes to the plugin's own saveSettings() call, which keeps its own in-memory copy and overwrites the file on any interaction. Fix: automations now write to their own outbox files, which the plugin drains race-safely, now shared as one module across skills.
Learning: every cadence job reports its own status
Automated skills now write ok or error to a shared status file at the end of every run, which a dashboard can read. Before, a dead background run stayed invisible: an empty lock got cleared silently, with no error showing up anywhere.
Learning: Full Disk Access binds to the process, not the terminal
A background process triggered by launchd failed on a file operation even though the Terminal app had Full Disk Access. macOS TCC binds the permission to the binary that actually runs, here the claude process itself, not the app that launched it. Fix: grant Full Disk Access directly to the claude binary.
carousel-inzpyre: Instagram carousels straight from the setup
A new skill builds Instagram carousels (1080x1350, static) from website content or notes, through a shared HTML and Playwright render pipeline in our own brand design. A new cadence mode now suggests a carousel automatically every two days: a gate script checks timing and open topics, a launchd hook starts the run headless in the background.
Installed the claude-seo plugin: SEO audits without switching tools
Over 20 specialized SEO subagents in one plugin: technical SEO, content audits, schema markup, backlinks, local SEO, and GEO/AI search optimization for Google AI Overviews, ChatGPT, and Perplexity. Each area runs as its own agent with its own tool access, instead of learning a new tool for every subtask.
Remotion rule: a fixed stage container for crossfade layouts
New rule in the remotion-best-practices skill: crossfade and morph transitions between scenes need a fixed-size stage container with absolute positioning instead of normal text flow. Negative margins used to compensate for flow layout break the render timing otherwise. A lesson from building our own carousel render pipeline.
ai-updates: a daily AI ecosystem briefing, automated
A new skill screens the Claude Code and AI ecosystem daily: Anthropic releases, GitHub repos, skills, plugins, MCPs, community discussions, and OpenAI/Codex news. A stop hook with a 20-hour gate and a lock mechanism triggers the run automatically, deduplicates against what it already saw, and writes a briefing with up to 3 setup recommendations.
setup-sync: setup docs now run on autopilot
A dedicated skill collects all setup changes once a week (CLAUDE.md, skills, plugins, MCPs), writes them to this page and the changelog article, and opens a review PR. Triggered by a stop hook with a 7-day gate, modeled on our memory consolidation.
Four-eyes principle: Codex review for large changes
New rule in our CLAUDE.md: anything above 3 files or 30 minutes of work gets an additional review from OpenAI Codex as a second model. Two models with different strengths find more bugs than one. Findings get evaluated, never adopted blindly.
Plugin audit: less is more context
We went through all installed plugins and disabled two we were not actively using. Every active plugin attaches its descriptions to every session and eats context window. Pruning regularly pays off.