Briefing on Product Development
Every morning I type one command: /morning. A couple of minutes later, I have a complete picture of what’s happening with BattleTabs — what players are saying on Discord, what’s broken, what shipped yesterday, how the business did overnight. Like having someone read every message, glance at every dashboard, and triage every issue before I’ve had my coffee.
I built it because I kept losing the first hour of my day scrolling through Discord, refreshing App Store Connect, checking GitHub notifications, trying to remember where I left off yesterday. The kind of work that feels productive but isn’t really — it’s just catching up. I wanted to compress all of that into something I could glance at and start the day with clarity.
The way it works: /morning is a custom slash command — basically a saved prompt that Claude runs on demand. It’s just a markdown file with six phases:
1. Read .claude/priorities.md
2. Check GitHub — open issues, in-flight PRs, what merged yesterday
3. Check git state — active worktrees, stale branches
4. Walk through the Discord channels that matter
5. Pull yesterday’s App Store and Google Play reviews
6. Synthesize everything into one structured summaryStep 1 is to focus on my priorities. priorities.md is a hand-maintained file — the big things I’m trying to ship this season, the stuff only I can do, the stuff I’ve handed off to Claude. Without it, /morning would just surface noise: every Discord ping, every PR, every 1-star review competing for the same slice of attention. With it, Claude knows what’s signal. A bug report on the Steam demo during NextFest lands differently than a typo on the home screen — one is mid-launch and the other isn’t.
Discord connection is where most of the value sits. The channels include bug-support, the mod-only room, the trusted-community channel, and the suggestions forum. For each, /morning calls a small Discord MCP tool to read the last fifteen or twenty messages and surface anything that looks like a bug, a sharp complaint, or a feature request worth tracking.
The MCP servers are the interesting part. An MCP server is a lightweight integration that gives Claude access to an external service — Discord, App Store Connect, Google Play, GA4, Metabase. With them in place, Claude doesn’t just read code. It reads what players are saying and what they’re buying.
Setting one up is the same shape every time: build the server, add it to .mcp.json in the project, and Claude can use it in any session.
{
"mcpServers": {
"discord": { "command": "node", "args": ["tools/discord-mcp-server/dist/index.js"] },
"appstore-connect": { "command": "node", "args": ["tools/appstore-connect-mcp-server/dist/index.js"] },
"google-play": { "command": "node", "args": ["tools/google-play-mcp-server/dist/index.js"] },
"ga4": { "command": "node", "args": ["tools/ga4-mcp-server/dist/index.js"] }
}
}The first one I added was Discord. Then App Store Connect, Google Play, GA4. Each unlock added a new chunk to the briefing.
The briefing usually ends with Claude suggesting two or three things to focus on today. Sometimes it’s a bug multiple players reported. Sometimes a PR that’s been sitting for a few days. Sometimes an angry reviewer who deserves a personal reply. It’s not always right about priorities — I still make those calls — but it gives me the raw material to decide quickly.
The list isn’t just a thinking aid — it’s a launch pad. If something on it looks worth tackling, I can spawn a fresh agent on it right there in the same session. The context is already loaded; the new agent inherits it. No retyping, no tool-switching. The briefing ends and the day’s work starts.
What surprised me most is how much I was missing before. Players report subtle things in Discord that are easy to overlook when you’re scrolling. A UI element that’s confusing, a ship ability that doesn’t feel right, a lag spike on specific devices. A 2-star review buried under a wave of 5-stars. Claude catches these because it reads everything, not just the messages that happen to catch my eye.
/morning is intentionally light-touch. A daily skim — five or six lines per section, biased toward “is anything on fire?”
Briefing on Business Intelligence
Once it became part of my routine, I noticed I still wasn’t seeing the deeper trends. Whether monetisation was actually healthy week to week. Whether the cohort I acquired three months ago was retaining better than the one before. Whether one or two whales were quietly carrying a whole week’s revenue. Those questions don’t fit into a daily briefing — they need a longer window and a heavier baseline.
So I built three siblings: /business-daily, /business-weekly, and /business-monthly.
All three live in the same repo as the game. When revenue dips on a Tuesday, I can see what shipped Monday right next to the dip. When a cohort retains better, I can scroll back to that month’s PRs and see what changed. The business stays attached to the code that produced it.
/business-daily is the newest. /morning leans engineering — what’s broken, what’s shipping, what players are saying. /business-daily does the same job for the business side: yesterday’s revenue, paying-user count, refund spikes, ratings drift, install anomalies — all compared against a seven-day rolling baseline so single-day noise doesn’t scream. If yesterday’s revenue is within range and no review crater opened up, it says so in two lines and gets out of the way.
/business-weekly runs on Monday mornings. It pulls revenue, engagement, retention, and acquisition for the last seven days — but the comparison isn’t to last week. It’s to the trailing four-week average. Single week-vs-week comparisons get drowned in weekend cycles, paydays, and store-algorithm wobble. A four-week baseline cuts through that.
The headline metric is ARPDAU, not DAU. As a solo studio with no marketing budget, I can’t really move DAU much in a week — but ARPDAU tells me whether monetisation is actually working.
/business-monthly is heavier still. It runs on the first Monday of every month and is meant to be read deliberately, not skimmed.
This is where the cohort stuff lives. Retention heatmaps over the last twelve weeks, cut by acquisition platform and country tier. LTV at D7, D30, D90, D180 by acquisition month — only the cohort ages that have actually matured. Whale concentration with healthy / caution / danger thresholds. A view of who’s churning, who’s coming back, and who’s quietly drifting away.
The bit I find most useful is the “departed whales” section. Net-new whales are easy to celebrate. Departed ones — anyone who left the top 1% this month — are usually the more useful signal. Sometimes it’s a real churn risk worth a personal nudge. Sometimes it’s just a lighter month. Either way, I want to know.
It ends with “Looking Ahead” — proposed updates to my priorities file, derived directly from what the report just surfaced.
The progression from daily to weekly to monthly took some thinking. The temptation was to dump every metric into /morning. That doesn’t work — the daily briefing has to stay glance-able, or I stop running it. Each command sits at a different timescale. /morning: is anything on fire today? /business-daily: did anything move overnight? /business-weekly: is the trend going where I think it is? /business-monthly: are the fundamentals — cohort quality, LTV, churn shape — moving in the right direction?
The version I started with was just Discord. Now it’s a small, layered thing that quietly handles the part of running a game I used to dread.


