Make Pages Interactive
paraschopra/make-pages-interactive
Turn a directory of static HTML pages into a live commenting surface.
Renders a calm, single-page HTML morning brief from your connected calendar, email and chat, or sets it up to run automatically on weekdays.
$ npx skills add asgeirtj/system_prompts_leaks --skill morning -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install asgeirtj/system_prompts_leaks morning --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Anthropic/claude-code/skills/morning .claude/skills/morning && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "morning" agent skill from https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morning into .claude/skills/morning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morning", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morningType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add asgeirtj/system_prompts_leaks --skill morning -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install asgeirtj/system_prompts_leaks morning --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks.git skills-src && mkdir -p .agents/skills && cp -r skills-src/Anthropic/claude-code/skills/morning .agents/skills/morning && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "morning" agent skill from https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morning into .agents/skills/morning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morning", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add asgeirtj/system_prompts_leaks --skill morning -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install asgeirtj/system_prompts_leaks morning --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/Anthropic/claude-code/skills/morning .cursor/skills/morning && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "morning" agent skill from https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morning into .cursor/skills/morning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morning", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/asgeirtj/system_prompts_leaks.git --path Anthropic/claude-code/skills/morning--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add asgeirtj/system_prompts_leaks --skill morning -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install asgeirtj/system_prompts_leaks morning --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/Anthropic/claude-code/skills/morning .gemini/skills/morning && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "morning" agent skill from https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morning into .gemini/skills/morning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morning", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install asgeirtj/system_prompts_leaks morningInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add asgeirtj/system_prompts_leaks --skill morning -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks.git skills-src && mkdir -p .github/skills && cp -r skills-src/Anthropic/claude-code/skills/morning .github/skills/morning && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "morning" agent skill from https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morning into .github/skills/morning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morning", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add asgeirtj/system_prompts_leaks --skill morning -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install asgeirtj/system_prompts_leaks morning --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/Anthropic/claude-code/skills/morning .opencode/skills/morning && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "morning" agent skill from https://github.com/asgeirtj/system_prompts_leaks/tree/main/Anthropic/claude-code/skills/morning into .opencode/skills/morning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "morning", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
morningRenders a calm, single-page HTML morning brief from your connected calendar, email and chat, or sets it up to run automatically on weekdays.
The skill draws one hand-sketched HTML page for a 30-second morning glance: a visual terrain-style anchor for the shape of the day across the top, and below it what needs attention, what is already sorted, and any extra sections you asked for. It only triggers on an explicit request to run, see or set up the brief, or the /morning command itself, not on an ordinary question about your schedule.
When setting it up as a recurring task, it infers which language to write the brief in from how you phrased the setup request and bakes that into the scheduled prompt so unattended runs do not have to guess. On an interactive run it checks which connectors are available across calendar, email and chat, skipping any role with nothing connected, and offers connector suggestions for missing core roles rather than skipping silently. The calendar pull covers today in full plus a look at tomorrow for context. An unattended scheduled run skips the interactive suggestion prompts and just renders the brief.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 181ebcd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmnodeplaywrightFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
claude.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Morning Brief Renderer loads about 4.5k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 2,767 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from asgeirtj/system_prompts_leaks at commit 181ebcd, republished under its CC0-1.0 licence (© asgeirtj). 2,767 words, ~4,487 tokens.
.claude/skills/morning/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.This page is my 30-second morning glance: one calm view of the shape of my day and the few things worth knowing, so I start oriented instead of overwhelmed.
Draw one warm, hand-sketched single-file HTML page. The top half is a visual anchor: the day drawn as terrain with a few words underneath. The bottom half is important things: what needs me, what's already sorted, and any extra sections I've asked for.
When I ask to set this up as a recurring task, infer which language the brief should be in: during the interactive session, the language I wrote to you in; otherwise the language I wrote my setup request in. Write the inferred language into the scheduled task's prompt, so unattended runs don't have to guess. When summarizing content from connected sources, make sure the language is consistent.
Let the user know this skill will take a few minutes.
Check connections and sort available tools into roles: calendar · email · chat · other (task trackers, docs). A missing role is skipped; the page adapts.
When a core role (calendar, email, chat) has no connected tool and the session is interactive, surface the fix as connector suggestion cards, not prose.
For each missing role, search the connector catalog by its everyday names — calendar: "google calendar", "outlook calendar" · email: "gmail", "email" · chat: "slack", "teams", "chat". The mainstream matches are typically Google Calendar, Gmail, Slack, and Microsoft 365 (Outlook mail/calendar and Teams in one). Offer them as one card of suggestions covering every missing role together, alongside the delivered page.
Checking my existing connections only shows what's already installed — an empty or off-role result there still means the catalog needs searching, and the card shown by that check is not the suggestion. Not every session can search the catalog or offer suggestion cards; when this one can't, skip the cards and let the Write fallbacks carry the ask.
Skip all of this on an unattended scheduled run: no one is there to click, so just render the brief.
Calendar: one fetch, today 00:00 → tomorrow 24:00 in home timezone. Only today's events are drawn and classified. Tomorrow's events are for context: they can colour the evening act, earn a motif, or result in a prep item on Needs attention. From tomorrow's events, extract the project name from any I organize or that name a project and search for the latest context.
Remaining calls on connected roles, in priority:
Pull ~8 candidates per search from snippets.
If a Sections: list came with the invocation, make one targeted fetch per entry on whatever connected tool serves it (a chat channel, a doc, a search). A section that finds nothing is dropped later.
Every candidate goes into one of two lists or is dropped silently, stacked top to bottom: Needs attention first, then Resolved below it (single column, full width), not side by side.
Needs attention. It would cost me something to ignore until tomorrow: someone's blocked on me, a window closes today, or it gets harder to undo. Must be anchored to a real tool result, verify if it's still open, and any quote verbatim. Before a Slack or email item lands here, open its thread once: if I've already replied in it, or reacted to the ask with any emoji, it moves to Resolved or is dropped. A prep item counts here: something tomorrow that goes better if I've read, decided, or drafted today. If I'm the organizer, it earns a line — the prep is the agenda I'll open with, and the button seeds it. If it's a retro or review, the prep is two or three thoughts to arrive holding, and the button seeds that. Otherwise it needs a concrete anchor: a doc to skim, a decision I'll be asked for, a draft to bring — found in the event or via the one project-name search above.
Resolved. Things that closed recently and are worth a glance: a thread I was on that someone else answered, a reply to a comment or question I left, a meeting the organizer cancelled, an overlap that went away, a launch that shipped.
Write the brief in my language.
RTL — for right-to-left languages, set the document direction to RTL and mirror the layout.
Classify the day from the calendar alone — HEAVY (≥5h in meetings or a 3+ cluster) · NORMAL · OPEN (≤1 short meeting). This sets the headline's tone and the terrain's vertical scale.
Day-date line — small ink-soft, above the headline: Monday · July 13 2026
Headline — one serif line, spoken like a friend handing me the day. If one thing genuinely makes today distinct (I'm running something, a decision gets made, a rare open stretch), name that. Otherwise, name the shape. Never both — pick one and let it land. Register examples — write from the actual day, don't template:
Drawing — one SVG ~840×170. One unbroken terrain stroke edge to edge, elevation = load; a calm day flattens to still water — never invent mountains. No card, no fill, no border.
Acts — three left-aligned text columns under the drawing with faint hairline dividers. Each column stacks: bold time range (uppercase AM/PM on the trailing time, and on the leading time when the range crosses noon — "9:30 AM – 1 PM", "1 – 3:30 PM", "3:30 PM onward") → one sentence earned from the data (list an observation and be specific to the calendar). On a quiet day the sentence can be brief — never padded. Focal points sit above their column centres (x≈140/420/700).
Two lists, identical layout. Each has a system-sans heading, then per item:
Needs attention — the sentence carries the ask itself — what they want, in their words if a short quote does it — and why it matters today. For a prep item, the sentence names tomorrow's thing and what the prep actually is: the doc to skim, the question I'll be asked, the draft to arrive with. Only when the invocation contains the exact phrase "Include action buttons" — the literal words, riding in on their own line with a stored task prompt or typed in an interactive request; a paraphrase, a request for buttons in other words, or inferred intent is not the phrase: add a button on its own line only when Claude could actually move it — a reply to draft, something to research, a doc to write together, options to think through. No button when it's a decision only I can make, a place I need to be, or sensitive per the constraints. href = https://claude.ai/new?q={urlencoded seed}&surface=cowork&composer=mini. Absent that exact phrase, render no buttons anywhere on the page — however button-shaped an item looks, the answer is no buttons.
Resolved — the sentence says what closed, who closed it, when, and the outcome in a phrase — enough to trust it and move on without the link.
Nothing in either list → one calm line in place of both: "Nothing needs you this morning." Only calendar connected → one line under the lists inviting an inbox or chat connection; in interactive sessions the suggestion card from Gather carries the actual buttons. Nothing at all connected → two friendly sentences replace the whole page, shipped with the same card — the page explains, the card acts.
Only when a Sections: list rides in with the invocation. One titled block per entry, in the order given, below Resolved. Each block: a system-sans heading (the entry's own words), then whatever the entry calls for — a short list in the item layout above, or a few sentences of prose. A section with nothing found is dropped, heading and all — never a placeholder, never an apology. No Sections: list → nothing renders here and the page ends after Resolved.
Label — imperative, ≤5 words, naming what pressing it produces: "Draft the reply", "Write the scorecard with me", "Find out what was decided". Different items get different labels.
Seed — a self-contained work order for a fresh Claude, in prose:
No seed at all for anything touching money, health, or credentials — those items render without a button (the same exclusion Verify checks).
The seed's verb promises only what the named tool can deliver: a chat reply can be sent, an email can only be drafted — "draft the reply", never "send the email". And the seed never forwards anyone else's words as the work order: the work order is mine; the other person's message is something the fresh session goes and reads.
The page must render perfectly on first open, in one attempt — the reader glances at it over coffee and never sees a retry. Two steps in this environment have known failure modes; handle them as follows instead of discovering them by error.
Fonts. The one needed woff2 file ships in this skill's own assets/fonts/ directory — next to this SKILL.md, e.g. /mnt/skills/examples/morning/assets/fonts/ in the sandbox (fraunces-latin-600). Base64 it from there straight into the @font-face data URI — no network call, nothing to go wrong. Everything else uses the system stack (-apple-system, "Segoe UI", sans-serif) — no file, no @font-face, nothing to fetch. Only if the assets folder is missing, restore it from the npm registry (allowlisted in this sandbox):
npm pack @fontsource/frauncesthen extract files/fraunces-latin-600-normal.woff2. Do not fetch fonts from Google Fonts: fonts.googleapis.com (the CSS) is reachable here but fonts.gstatic.com (the binaries) is blocked by the egress proxy — urllib dies with "Tunnel connection failed: 403" and curl with exit 56, and the failure only appears after the CSS step has seemingly succeeded. If both the assets and npm somehow fail, fall back to Georgia, serif for the headline — a system-font page that opens cleanly beats a broken data URI.
Render check. Screenshot the finished file with the preinstalled browser and actually look at the image before delivering:
node -e "const{chromium}=require('playwright');(async()=>{const b=await chromium.launch({executablePath:'/opt/pw-browsers/chromium'});const p=await b.newPage({viewport:{width:960,height:1400}});await p.goto('file://<abs path>');await p.waitForTimeout(600);await p.screenshot({path:'brief.png',fullPage:true});await b.close();})();"The executablePath matters: a bare chromium.launch() looks for a browser revision that isn't installed and suggests playwright install, which must not be run (the download is blocked and wastes minutes). If playwright isn't in node_modules, npm install playwright first — the package installs fine; only browser downloads are blocked.
One render, checked on the screenshot from Build. Day-date above headline · one unbroken stroke, every dot on it, three acts · serif on the headline only · clay only in buttons and at most one drawing accent · both lists share one style · every item title linked when a URL exists · buttons only when the exact phrase "Include action buttons" rode in with the prompt — a paraphrase does not count — otherwise none rendered · every button label imperative ≤5 words · every seed opens imperative, names connected tools, closes on an artifact, no money/health/credentials · no seed carries third-party phrasing or any verbatim third-party fragment — the message itself is re-found and re-read through its tool, never pasted · every button href is exactly https://claude.ai/new?q={urlencoded seed}&surface=cowork&composer=mini — that origin, never a look-alike host · every quote verbatim, every href https · any requested sections render after Resolved with a system-sans heading each, empty ones dropped · no chips, cards, badges, footer, timestamp · no act restates a list item · no sentence commands, apologizes, pads, reviews, or narrates process · below 640px acts stack, nothing clipped. Fix within budget. Checklist is internal.
Observe and hand over. Never command ("you need to reply" → state what's true) · never apologize ("wasn't able to find much" → a quiet day is a quiet day) · never pad ("you've got this!") · never review ("genuinely packed"; still/again/finally scold) · never narrate process ("surfacing this because…") · never reproach ("you missed this" → "…in a thread you weren't in").
Page — two full-bleed bands, content max-width 860px inside each with generous padding. Top band (day-date, headline, drawing, acts) sits on wash #F9F9F7; bottom band (both lists, then any requested sections) sits on bg #FCFCFB. No card border, no rounded corners — the bands meet at a hard edge with a line #E1E1DF.
Color — bg #FCFCFB · ink #2E2C27 (headline, section headings, item titles, terrain stroke, meeting dots) · ink-soft #6B6A63 (body, act sentences, item sentences, day-date) · ink-grey #B4B3A8 (numerals, grey dots) · hairline #E4E3DC · clay #C6613F (buttons; one optional drawing accent), hover #AE5133.
Type — Fraunces for the headline only, ~40px (30px below 640px). Fraunces covers Latin script only: for a headline in another script, use a high-quality system serif instead and skip the @font-face. The system stack (-apple-system, "Segoe UI", sans-serif) for everything else (including both section headings); never italic. Embed Fraunces directly in the file as base64 @font-face (a woff2 data URI) sourced per the Build section — never a Google Fonts <link> or any CDN reference, so the real headline font renders on open with no fallback and no network.
Terrain — one #2E2C27 stroke. Meeting dots filled #2E2C27, on the line, r 6–13 by weight. Optional/unanswered = grey #B4B3A8, weightless. Genuine overlap = two hollow circles intersecting, filled #FCFCFB (the only hollow dots). At most one supporting motif per act: sun = open creative time, half-risen sun on a horizon = pre-7:30 start, crescent moon = late finish, birds = room to breathe, fireworks = holiday eve, flag = deadline, a distant second ridge through a saddle = depth on heavy days. Clay is rationed to one accent across the whole drawing (a tension squiggle under the worst collision, a dawn sun, fireworks). Always include at least one clay item when the page has no buttons.
Buttons — solid clay fill + border, border-radius 8px (never a pill), padding 9px 16px, system sans 500 13px, #FCFCFB text, no arrow/icon; hover #AE5133. Nothing else on the page is a button, badge, or filled label. Responsive — one media query at 640px: acts stack vertically in order, hairlines horizontal, drawing stays full-width above.
© asgeirtj, CC0-1.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (assets) in Anthropic/claude-code/skills/morning of asgeirtj/system_prompts_leaks.
Open the folder on GitHubat commit 181ebcd
Morning Brief Renderer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Morning Brief Renderer this skillasgeirtj/system_prompts_leaks | 69k | — | ~4.5k | Automated safety check: Pass | CC0-1.0 | |
| Make Pages Interactiveparaschopra/make-pages-interactive | 482 | — | ~2k | Automated safety check: Pass | MIT | |
| Creator Daily Analysisdragon-hh/ai-boshu-crawler | 106 | — | ~920 | Automated safety check: Pass | None | |
| Creator Three Day Analysisdragon-hh/ai-boshu-crawler | 106 | — | ~920 | Automated safety check: Pass | None | |
| Creator Weekly Analysisdragon-hh/ai-boshu-crawler | 106 | — | ~945 | Automated safety check: Pass | None | |
| WeCom Calendar SchedulerWecomTeam/wecom-cli | 3.2k | 1 repos | ~3.7k | Automated safety check: Pass | MIT |
paraschopra/make-pages-interactive
Turn a directory of static HTML pages into a live commenting surface.
dragon-hh/ai-boshu-crawler
Analyze every tracked creator video published in the rolling 24-hour window ending at the latest successful Feishu local sync, using the complete mirrored readable transcript plus current metrics…
dragon-hh/ai-boshu-crawler
Analyze every tracked creator video published in the rolling 72-hour window ending at the newest successful Feishu local sync, using complete readable transcripts, reusable video profiles, current…
dragon-hh/ai-boshu-crawler
Analyze every tracked creator video published in the rolling 168-hour window ending at the newest successful Feishu local sync, using complete readable transcripts, reusable video profiles, current…
WecomTeam/wecom-cli
Books, views, searches, updates, cancels or checks free/busy time on WeCom (Enterprise WeChat) calendars and meeting rooms, routed away from online-meeting creation.
Prismer-AI/PrismerCloud
Gives an agent account-scoped access to Gmail, Calendar, Drive, Contacts, Docs and Sheets through the gws CLI or a bundled Python client.
asgeirtj/system_prompts_leaks
Shows one digest of coding-agent sessions across your connected machines and lets you open, read, steer, approve, stop and close them, over Herdr, tmux or MSP.
asgeirtj/system_prompts_leaks
Diagnoses a Muse Code installation's own failures from binary and session evidence, instead of treating the report as an ordinary repository bug.
asgeirtj/system_prompts_leaks
A skill your agent uses whenever the user wants to create, read, edit, or manipulate Word documents (.docx) or Word templates (.dotx).
asgeirtj/system_prompts_leaks
Runs a goal as a project in which the agent coordinates separate agent threads, judging when to split the work, and interviews you first when nothing can be verified.
asgeirtj/system_prompts_leaks
Creates and validates a new native Muse plugin package in the current workspace, limited to five capability families, and leaves installation to you.
asgeirtj/system_prompts_leaks
A skill your agent uses when the user's prompt requires (1) researching a topic across multiple sources, comparing options or alternatives, analyzing trends or history, understanding markets or…
Renders a calm, single-page HTML morning brief from your connected calendar, email and chat, or sets it up to run automatically on weekdays. The skill draws one hand-sketched HTML page for a 30-second morning glance: a visual terrain-style anchor for the shape of the day across the top, and below it what needs attention, what is already sorted, and any extra sections you asked for. It only triggers on an explicit request to run, see or set up the brief, or the /morning command itself, not on an ordinary question about your schedule.
Morning Brief Renderer fits situations like: asking to see or run your morning brief; setting the morning brief up as a recurring weekday task; invoking the /morning command directly.
Run `npx skills add asgeirtj/system_prompts_leaks --skill morning -a claude-code`. Or copy the skill folder (Anthropic/claude-code/skills/morning in asgeirtj/system_prompts_leaks) into .claude/skills/morning in your project. Claude Code loads it when a task matches its description.
Run `npx skills add asgeirtj/system_prompts_leaks --skill morning -a codex`. Or copy the skill folder (Anthropic/claude-code/skills/morning in asgeirtj/system_prompts_leaks) into .agents/skills/morning in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add asgeirtj/system_prompts_leaks --skill morning -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/morning, .gemini/skills/morning, .github/skills/morning and .opencode/skills/morning in your project.
Going by SKILL.md and its folder, Morning Brief Renderer needs the command-line tools its instructions call (npm, node and playwright). Our summary lists: Connected calendar, email or chat accounts for a full brief.
SKILL.md names 1 domain. As links in the text: claude.ai. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Morning Brief Renderer is published under the CC0-1.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Morning Brief Renderer: Make Pages Interactive (paraschopra/make-pages-interactive, 482 stars), Creator Daily Analysis (dragon-hh/ai-boshu-crawler, 106 stars), Creator Three Day Analysis (dragon-hh/ai-boshu-crawler, 106 stars) and Creator Weekly Analysis (dragon-hh/ai-boshu-crawler, 106 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
asgeirtj (a GitHub user) maintains it in asgeirtj/system_prompts_leaks, which has 69,367 GitHub stars. The repository holds 128 skills in this directory. The repository was last updated on October 10, 2026.
Source: asgeirtj/system_prompts_leaks on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.