Agent skill

Lwip

by ponylang in ponylang/ponylang-website

Create a new "Last Week in Pony" blog post from the open GitHub issue

BSD-2-ClauseAuto-check passedWriting & Content

Install Lwip

skills CLI
$ npx skills add ponylang/ponylang-website --skill lwip -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ponylang/ponylang-website lwip --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
lwip
GitHub stars
160
Token cost
~3.5k tokens
SKILL.md length
2,180 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
BSD-2-Clause

At a glance

Create a new "Last Week in Pony" blog post from the open GitHub issue

  • Works in 3 steps: Verify first. Use gh issue view, gh pr… → Ask the user if you can't verify and the… → If neither, drop the characterization. A…
  • Tasks that involve Blog and article writing
  • SKILL.md covers Who reads this, What state is the work in, Critical: don't fabricate and Additional Notes, plus 1 more section
  • Calls gh and git

What it does

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.

When your agent uses it

  • Tasks that involve Blog and article writing

Example prompts

  • “Last Week in Pony”
  • “/lwip”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Verify first. Use gh issue view, gh pr view, gh release view,
  2. Ask the user if you can't verify and the characterization adds
  3. If neither, drop the characterization. A flat description of what

What it can do on your machine

Read from SKILL.md and the folder at commit 9429bcf. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~19
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from ponylang/ponylang-website at commit 9429bcf, republished under its BSD-2-Clause licence (© ponylang). 2,180 words, ~3,480 tokens.

Download SKILL.mdSave it as .claude/skills/lwip/SKILL.md (or your agent's skills folder).
name
lwip
description
Create a new "Last Week in Pony" blog post from the open GitHub issue
disable-model-invocation
false

Create a new "Last Week in Pony" blog post.

Who reads this

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.

What state is the work in

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.

Critical: don't fabricate

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:

  1. Verify first. Use gh issue view, gh pr view, gh release view, git log, release notes. The actual history is usually one command away.
  2. Ask the user if you can't verify and the characterization adds value.
  3. If neither, drop the characterization. A flat description of what happened beats a fabricated dramatic one. The hyperbolic-language rule ("flair in how things are said, not in inflating what they are") applies to phrasing. This rule applies to facts.

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.

Additional Notes

  • Most items go under ## 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:
    • Changes in Pony team membership (new committers, new core team members, departures).
    • Libraries with a 0.1.0 release — describe what the library provides and why you'd want it. Don't cover libraries that haven't had a first release yet.
    • Major version bumps (1.0.0, 2.0.0, etc.) — cover what changed and why it matters.
    • Items explicitly flagged for highlighting in the issue comments.
  • Every release goes in the ## 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.
  • New library sections should be feature overviews, not per-version changelogs. When a library has multiple releases in one week, describe what it does as a whole. Don't enumerate what changed in each version.
  • Describe libraries and tools by what happens when you use them, not by listing their contents. "Load it and Claude has the actual capability rules in context instead of guessing" tells the reader more than "capabilities, subtyping rules, common gotchas." Lead with the experience of using it, not the inventory. Focus on what it does for the user, not project-internal motivations (why it was built, what larger effort it's part of).
  • Re-establish context for libraries that evolve between posts. When covering a new release of something that appeared in a previous LWIP, bring forward the context the reader needs. Don't assume they remember last week's post. If hobby introduced actor-per-request handlers in 0.4.0 and this week's 0.5.0 adds interceptors that run before the handler actor is spawned, explain the model before referencing it.
  • When referring to repos by short name in prose (not owner/repo format), use lowercase to match the actual repo name: ponyc, corral, ponyup, not Ponyc, Corral, Ponyup.
  • The post is authored by seantallen. Write in first person ("I", "my"), not third person ("Sean", "his"). Third person is occasionally used as a joke but is not the default.
  • Link targets should match what the link text describes. Don't link "Homebrew formula" to a Zulip thread about the formula — either link to the formula itself or use plain text.
  • Be frugal with em dashes. A few per post is fine, but heavy use reads as AI-generated. Prefer periods, commas, colons, or parentheses when they work just as well.
  • Issue comments are raw material, not copy. Turn them into flowing narrative. Avoid choppy sequences of disconnected sentences. But when the raw material has personality — colorful phrasing, genuine enthusiasm, humor — preserve and amplify it. Don't grind human voice down into flat declarative prose. Adapt it to fit the post's flow, but keep the energy.
  • Every section should be narrative, not a topic inventory. A paragraph of independent facts separated by periods is just a bullet list without the bullets. Connect ideas: cause and effect, contrast, significance, what ties them together. The reader should feel a thread pulling them through, not a checklist they're being walked down. This applies everywhere — opening hooks, Items of Note subsections, release write-ups. If you could turn the paragraph into bullets and lose nothing, it needs rewriting.
  • Match section depth to the story, not to the release notes. A release with a long changelog can have a short story. Twelve entries in the release notes does not mean twelve things to cover — it means finding the two or three the reader cares about and telling those well. Conversely, a single change with real consequences for users can warrant a full section. The release notes' length is not the section's length.
  • Items of Note altitude: what broke and what to do. Tell the reader what was broken and what to do about it. Not how the bug worked. The reader is a Pony user, not a maintainer — "signal handling had enough edge-case bugs that anyone using it seriously would hit one" is the right altitude; enumerating each edge case and its mechanism is not. Save the mechanism for the release notes link.
  • Keep voice consistent between adjacent sections. When two sections cover similar content (two new tools, two related libraries), they should read the same way.
  • Use "ponyc" not "ponylang/ponyc" in prose and section headings. Only use ponylang/ponyc in the releases list.
  • The opening should match the energy of the week. LWIP is community outreach and a hypefest. Not sales — genuine excitement. When there's a lot going on, the opening should convey that. Let the reader know whether it was a big week or a quiet one. Gab with them a little before diving in. If there are three big things happening, be excited about three big things happening. A flat "Let's get into it" after a stacked week undersells the content and the community behind it.
  • ## 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.
Show full SKILL.md (665 more words)Show less

Steps

Follow these steps:

  1. Read editorial guidelines: Read the "Last Week in Pony" section in this project's AGENTS.md for format, tone, and domain-specific notes.

  2. 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.

  3. 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.

  4. Read the rotated-out issue: Read the now-closed issue with all its comments. This is the frozen set of items for the post.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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

Files

Just SKILL.md in .claude/skills/lwip of ponylang/ponylang-website.

Open the folder on GitHubat commit 9429bcf

Compare with similar skills

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.

Lwip compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lwip this skillponylang/ponylang-website160—~3.5kAutomated safety check: PassBSD-2-Clause
Figurevectorize-io/hindsight47k—~1.9kAutomated safety check: PassMIT
Content Writerdageno-agents/geo-content-writer214—~1.2kAutomated safety check: PassMIT
Release Blog Drafterobot-platform/obot1.1k—~4.6kAutomated safety check: PassMIT
Linkyee Plugin BuilderZhgChgLi/linkyee180—~1.9kAutomated safety check: NotesMIT
Readability Checkjdevalk/skills105—~3.3kAutomated safety check: PassMIT

Similar skills

  • 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.

    47k GitHub stars~1.9k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Content Writer

    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…

    214 GitHub stars~1.2k tokensUpdated 3 mo ago
    Writing & ContentAuto-check passed
  • Release Blog Drafter

    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.

    1.1k GitHub stars~4.6k tokensUpdated today
    Writing & ContentAuto-check passed
  • Linkyee Plugin Builder

    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…

    180 GitHub stars~1.9k tokensUpdated today
    Writing & ContentAuto-check: notes
  • Readability Check

    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.

    105 GitHub stars~3.3k tokensUpdated 3 mo ago
    Writing & ContentAuto-check passed
  • Write Chinese "数据库筑基课" Markdown articles for database architects, DBAs, and application developers.

    8.6k GitHub stars~2.4k tokensUpdated today
    Writing & ContentAuto-check passed

More from ponylang/ponylang-website

  • Ponylang Prose Review

    ponylang/ponylang-website

    Ensemble review of ponylang blog and Last Week in Pony prose.

    160 GitHub stars~2.9k tokensUpdated 5 days ago
    Auto-check passed
  • Dev Sync Summary

    ponylang/ponylang-website

    Turn a Pony Development Sync meeting summary into a fact-checked comment on the open "Last Week in Pony" issue

    160 GitHub stars~2.6k tokensUpdated 5 days ago
    Auto-check passed

Works with

Questions about Lwip

What does Lwip do?

Create a new "Last Week in Pony" blog post from the open GitHub issue. Lwip is an agent skill from ponylang/ponylang-website.

When should I use Lwip?

Lwip fits situations like: tasks that involve Blog and article writing.

How do I install Lwip in Claude Code?

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.

How do I install Lwip in Codex?

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.

Can I use Lwip in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Lwip need to run?

Going by SKILL.md and its folder, Lwip needs the command-line tools its instructions call (gh and git).

Does Lwip access the network?

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.

Is Lwip safe to install?

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.

What licence does Lwip use?

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.

How many tokens does Lwip use?

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.

What are the alternatives to Lwip?

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.

Who maintains Lwip?

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.