Figure
vectorize-io/hindsight
Draw an animated figure (boxes, arrows, moving data) as one self-contained SVG for a GitHub README, PR, issue or blog post.
Create a new "Last Week in Pony" blog post from the open GitHub issue
$ npx skills add ponylang/ponylang-website --skill lwip -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ponylang/ponylang-website lwip --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/ponylang/ponylang-website.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/lwip .claude/skills/lwip && 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 "lwip" agent skill from https://github.com/ponylang/ponylang-website/tree/main/.claude/skills/lwip into .claude/skills/lwip/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lwip", 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/ponylang/ponylang-website/tree/main/.claude/skills/lwipType 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 ponylang/ponylang-website --skill lwip -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ponylang/ponylang-website lwip --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ponylang/ponylang-website.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/lwip .agents/skills/lwip && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "lwip" agent skill from https://github.com/ponylang/ponylang-website/tree/main/.claude/skills/lwip into .agents/skills/lwip/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lwip", 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 ponylang/ponylang-website --skill lwip -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ponylang/ponylang-website lwip --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ponylang/ponylang-website.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/lwip .cursor/skills/lwip && 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 "lwip" agent skill from https://github.com/ponylang/ponylang-website/tree/main/.claude/skills/lwip into .cursor/skills/lwip/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lwip", 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/ponylang/ponylang-website.git --path .claude/skills/lwip--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 ponylang/ponylang-website --skill lwip -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ponylang/ponylang-website lwip --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ponylang/ponylang-website.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/lwip .gemini/skills/lwip && 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 "lwip" agent skill from https://github.com/ponylang/ponylang-website/tree/main/.claude/skills/lwip into .gemini/skills/lwip/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lwip", 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 ponylang/ponylang-website lwipInstalls 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 ponylang/ponylang-website --skill lwip -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ponylang/ponylang-website.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/lwip .github/skills/lwip && 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 "lwip" agent skill from https://github.com/ponylang/ponylang-website/tree/main/.claude/skills/lwip into .github/skills/lwip/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lwip", 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 ponylang/ponylang-website --skill lwip -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ponylang/ponylang-website lwip --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ponylang/ponylang-website.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/lwip .opencode/skills/lwip && 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 "lwip" agent skill from https://github.com/ponylang/ponylang-website/tree/main/.claude/skills/lwip into .opencode/skills/lwip/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lwip", 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.
lwipCreate a new "Last Week in Pony" blog post from the open GitHub issue
Lwip is an agent skill from ponylang/ponylang-website. Create a new "Last Week in Pony" blog post from the open GitHub issue
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Writing & Content, covering Blog and article writing. It works with GitHub. The repository describes itself as: The ponylang.io website. The licence is BSD-2-Clause.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9429bcf. 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:
ghgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, which can reach the network depending on how they are called.
From 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.
Lwip loads about 3.5k tokens when it runs. Until then it costs about 19 tokens; SKILL.md has 2,180 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 ponylang/ponylang-website at commit 9429bcf, republished under its BSD-2-Clause licence (© ponylang). 2,180 words, ~3,480 tokens.
.claude/skills/lwip/SKILL.md (or your agent's skills folder).Create a new "Last Week in Pony" blog post.
People who write Pony, and people following the language. Not people who work on whatever subsystem an item happens to be about.
What they know. They know Pony and they write Pony programs. They don't know the internals of ponyc, of lori, or of whatever library an item covers, and they have not read the changelogs, the PRs, or the design docs you read to write the post. A fact that only lands for someone who has read what you read buries the item, however true and however well sourced it is.
Why they are reading. Some of them write Pony and want the practical news: what will break their code, what to upgrade for, what fixes a problem they might have hit. A lot of them are lookie-loos who don't use Pony and never will act on any of it. They read because it's interesting to watch a language get built. Both halves matter. An item that's useful but dull serves half the audience, and detail only a maintainer could care about serves neither.
The job is to give the major news and entertain people who want to know what's going on with Pony. It is not to account for everything that happened. Leaving things out is part of the work.
How much an item gets depends on what a reader can do with it.
Released. They can go get it. Say what it does for them. The release notes carry the full detail, so don't reproduce them — a post that re-explains every fix does the release notes' job twice and buries its own news doing it.
Merged but not released. They can't get it yet, so per-fix detail helps nobody. Say what's coming, when, and why it's worth knowing about now.
Not merged. Say what's coming, why, whatever is genuinely settled — that it's a breaking change, roughly when — and link to where they can follow along. Nothing else. The design docs and PRs behind unfinished work contradict each other and use provisional names, because that's what unfinished work looks like. Mining them for mechanism produces detail that's wrong as often as it's right, and the links carry it for anyone who wants it.
Real but far off. A plan that won't be real for a long time is a distraction rather than news. Every fact about it can be true and sourced and it still costs the reader more than it gives them. Wait until there's something to do about it.
Every factual claim in the post must come from a verifiable source: the issue or its comments, linked PRs/releases, git/gh history, or the user. This applies especially to characterizations — how long something existed, how widely it affected users, the history behind a fix, the severity of a bug. Don't invent backstory to make a routine item sound dramatic. Duration, impact, and history are factual claims; if you can't substantiate them, don't write them.
When you're tempted to add color about history, severity, or impact:
gh issue view, gh pr view, gh release view,
git log, release notes. The actual history is usually one command
away.The interview in step 6 is where most of this gets settled. The goal is correctness and narrative interestingness, not speed to getting a draft up. Multiple rounds of questions are fine.
## Items of Note as ### subsections. Top-level
## sections are reserved for highlighted items only. The default home for
any item is Items of Note — only promote to ## when there's a specific
reason. Things that warrant highlighting:## Releases bullet list. Not every release
earns an Items of Note writeup. A version bump that pulls in upstream
dependency fixes, or a release whose changes are routine, belongs in the
Releases list and nowhere else. Read the release notes and ask: is there a
story a reader would care about? Bug fixes that affect users, new features,
breaking changes — those warrant a ### subsection under Items of Note.
"There were changes" does not.owner/repo format),
use lowercase to match the actual repo name: ponyc, corral, ponyup,
not Ponyc, Corral, Ponyup.ponylang/ponyc in the releases list.## RFCs section (when applicable) goes after ## Releases. Use ###
subsections by status change (### New, ### Accepted,
### Final Comment Period, ### Implemented, etc.). Only include statuses
that have entries that week.Follow these steps:
Read editorial guidelines: Read the "Last Week in Pony" section in this project's AGENTS.md for format, tone, and domain-specific notes.
Study recent posts and voice calibration: Read the 2-3 most recent
posts in docs/blog/posts/last-week-in-pony-*.md. Also read 2-3 posts
from ~/code/seantallen/seantallen.com/content/posts/ to calibrate on
Sean's personal writing voice. Key traits: he connects ideas into
flowing narrative (not choppy fact sequences), tells you why things
matter (not just what they are), shares opinions freely, uses natural
asides and humor, and varies sentence length. The language is
hyperbolic but the facts aren't — the flair is in how things are
said ("gracing you with," "the whole thing"), not in inflating what
they are. Don't write feature checklists ("X is supported. Y is
supported.") — describe things the way you'd tell someone about them
in conversation.
Rotate the issue first: Run
gh issue list --repo ponylang/ponylang-website --label last-week-in-pony --state open
to identify the current issue. Calculate the next Sunday from today's
date. Create a new empty issue in ponylang/ponylang-website titled
Last Week in Pony - {next Sunday: Month Day, Year}, add the
last-week-in-pony label, and pin it. Then remove the
last-week-in-pony label from the current week's issue, unpin it, and
close it.
Why first: until you rotate, the current issue is still the live, pinned target. If you collect the week's items and then rotate, anything posted in between lands on an issue you've already read and closed — lost from both this post and next week's. Rotating first moves the live target to the new issue, freezing this week's set before you read it.
Read the rotated-out issue: Read the now-closed issue with all its comments. This is the frozen set of items for the post.
Read release notes: For any release items in the rotated-out
issue, fetch the release notes (e.g.,
gh release view TAG --repo ORG/REPO) and evaluate whether the
release has noteworthy content deserving its own section.
Interview the author, then verify: Interview before you draft. Always, not only when something looks like it's missing — you can't tell that it is. The answers that matter most are in the author's head and appear in no issue, PR, or release note, so no amount of reading surfaces them and a pile of verified facts feels like coverage while the gaps stay invisible.
Ask what they've been working on that isn't in the issue, what they think matters most this week, what's coming that people should know about, and what's actually shipped versus still sitting on a branch. Those work because none of them require you to have spotted a gap first. Follow the answers rather than the list, and go more than one round.
Then verify: list every characterization you intend to make about
history, severity, duration, or impact, and confirm each from sources
(issue/PR/release notes, git log, gh) or from the author.
Correctness and narrative interestingness beat draft speed.
Write the draft: Create the post following the format in AGENTS.md. Use the date from the issue title for the filename and front matter.
Review: Run the ponylang-prose-review skill on the draft (full
mode — a post is always more than two paragraphs). It runs the house-voice,
narrative, reader-orientation, tightness, and content-honesty lenses as
parallel reviewers (plus a conditional accuracy lens when the post has code
or technical claims), checks the draft against the AGENTS.md editorial
guidelines and the craft rules with the week's source bundle (the rotated
issue and its comments, linked posts, release notes, cited PRs/issues) in
hand, and runs the mechanical pre-check (cspell, mkdocs build --strict,
em-dash count, link sanity). Apply its Fix findings; for each Park finding,
incorporate it if you agree, or present the dispute to the user for a
ruling. The ensemble synthesizes in one pass — there's no per-round
re-spawn loop.
Commit and PR: Create a branch, commit the new post with the message
Last Week in Pony - Month Day, Year, and open a PR. Report the PR URL
to the user.
© ponylang, BSD-2-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/lwip of ponylang/ponylang-website.
Open the folder on GitHubat commit 9429bcf
Lwip 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 |
|---|---|---|---|---|---|---|
| Lwip this skillponylang/ponylang-website | 160 | — | ~3.5k | Automated safety check: Pass | BSD-2-Clause | |
| Figurevectorize-io/hindsight | 47k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Content Writerdageno-agents/geo-content-writer | 214 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Release Blog Drafterobot-platform/obot | 1.1k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Linkyee Plugin BuilderZhgChgLi/linkyee | 180 | — | ~1.9k | Automated safety check: Notes | MIT | |
| Readability Checkjdevalk/skills | 105 | — | ~3.3k | Automated safety check: Pass | MIT |
vectorize-io/hindsight
Draw an animated figure (boxes, arrows, moving data) as one self-contained SVG for a GitHub README, PR, issue or blog post.
dageno-agents/geo-content-writer
A skill your agent uses when the user wants to turn [Dageno](https://dageno.ai/?utmsource=github&utmmedium=social&utmcampaign=official) GEO opportunities into a real-fanout backlog and then write…
obot-platform/obot
Drafts a release announcement blog post for an obot release as a Markdown file, with an optional WordPress draft through MCP and no live publishing without confirmation.
ZhgChgLi/linkyee
A skill your agent uses when the user wants to add dynamic data (GitHub stars, latest blog posts, weather, follower counts, repo activity, anything fetched from a URL) to their linkyee site by…
jdevalk/skills
Runs a readability audit on a blog post draft or other multi-paragraph prose, calibrated for readers who read English as a second language.
digoal/blog
Write Chinese "数据库筑基课" Markdown articles for database architects, DBAs, and application developers.
ponylang/ponylang-website
Ensemble review of ponylang blog and Last Week in Pony prose.
ponylang/ponylang-website
Turn a Pony Development Sync meeting summary into a fact-checked comment on the open "Last Week in Pony" issue
Works with
Categories
Create a new "Last Week in Pony" blog post from the open GitHub issue. Lwip is an agent skill from ponylang/ponylang-website.
Lwip fits situations like: tasks that involve Blog and article writing.
Run `npx skills add ponylang/ponylang-website --skill lwip -a claude-code`. Or copy the skill folder (.claude/skills/lwip in ponylang/ponylang-website) into .claude/skills/lwip in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ponylang/ponylang-website --skill lwip -a codex`. Or copy the skill folder (.claude/skills/lwip in ponylang/ponylang-website) into .agents/skills/lwip 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 ponylang/ponylang-website --skill lwip -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lwip, .gemini/skills/lwip, .github/skills/lwip and .opencode/skills/lwip in your project.
Going by SKILL.md and its folder, Lwip needs the command-line tools its instructions call (gh and git).
SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. 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.
Lwip is published under the BSD-2-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k 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 Lwip: Figure (vectorize-io/hindsight, 47k stars), Content Writer (dageno-agents/geo-content-writer, 214 stars), Release Blog Drafter (obot-platform/obot, 1.1k stars) and Linkyee Plugin Builder (ZhgChgLi/linkyee, 180 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ponylang (a GitHub organization) maintains it in ponylang/ponylang-website, which has 160 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 4, 2026.
Source: ponylang/ponylang-website on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.