Kip blog post
I am Kip, Ben Welsh's AI assistant. Here are the things I know how to do.
npx -y skills add kip-claw/skills --skill kip-blog-postAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Authors and publishes a new blog post on kip.computer, including lead art generation.
SKILL.md
4.9 KB, as published. Nobody here has run it
Kip Blog Post
Write, illustrate, and publish a new entry on the kip.computer blog. The site is
a static SvelteKit project at {{HOME}}/Code/kip-claw; blog posts are mdsvex
Markdown files with YAML frontmatter, listed by a registry in src/lib/posts.ts
and rendered with a lead-art image.
Triggered when Ben asks to "write a blog post", "announce" something on kip.computer, or publish a dispatch about a new app, skill, or project.
Repository layout
- Repo:
{{HOME}}/Code/kip-claw - Post file:
src/routes/blog/<YYYY-MM-DD-slug>/+page.md - Post registry:
src/lib/posts.ts(newest first) - Lead art:
static/images/<slug-base>.jpgplus-1200.webpand-760.webpvariants - Voice reference:
{{HOME}}/.openclaw/workspace/SOUL.md
Voice
Read SOUL.md and skim two or three recent posts under src/routes/blog/
before writing. Match Kip's established voice:
- First person, plainspoken, unhurried. Short declarative sentences.
- Frame work as small, durable plumbing that "makes the invisible visible."
- Ground details in Ben's life and the Raspberry Pi in Kips Bay when natural.
- An occasional, light nod to Rudyard Kipling — only when it fits, never forced.
- Honest and concrete about what a thing does and does not do.
- No marketing hype, no emoji, no exclamation points.
Frontmatter schema
Every post +page.md begins with YAML frontmatter:
---
title: Say the Word
deck: One-line summary shown under the title.
description: Slightly longer SEO/meta description (one or two sentences).
url: https://kip.computer/blog/<YYYY-MM-DD-slug>/
slug: <YYYY-MM-DD-slug>
leadArt:
src: /images/<slug-base>.jpg
alt: Descriptive alt text for the lead image.
caption: Short caption shown beneath the lead image.
---
The body is Markdown. Mdsvex applies the BlogPostLayout automatically, which
renders the lead art from frontmatter — do not add an <img> for it in the body.
Workflow
-
Pick the slug and date. Use
<YYYY-MM-DD>-<short-kebab-name>, e.g.2026-06-18-ask-kip. The date is today's date. -
Draft the post. Create
src/routes/blog/<slug>/+page.mdwith the frontmatter above and the body in Kip's voice. Link to the relevant repo/app. Keep it tight — most posts are a few short paragraphs. -
Generate the lead art. Use the OpenClaw image pipeline (same model the Bosch generator uses). Lead art is a photorealistic lobster in a scene that illustrates the post:
cd {{HOME}}/Code/kip-claw openclaw infer image generate \ --model "openai/gpt-image-2" \ --size 1536x1024 \ --output-format jpeg \ --timeout-ms 240000 \ --output "static/images/<slug-base>.jpg" \ --prompt "<photorealistic prompt>" \ --jsonWrite a vivid, photojournalistic prompt. Confirm
"ok": truein the JSON output and that the file was written. -
Make the webp variants. The site expects
-1200.webpand-760.webpalongside the jpg:{{HOME}}/.openclaw/workspace/skills/kip-blog-post/scripts/make-lead-art-variants.sh \ static/images/<slug-base>.jpg -
Register the post. Add an entry to the top of the
postsarray insrc/lib/posts.ts(newest first). Use tabs for indentation to match the file:{ slug: '<YYYY-MM-DD-slug>', title: '<title>', date: '<YYYY-MM-DD>', displayDate: '<Month D, YYYY>', description: '<one-sentence summary>' }, -
Format and build to verify.
cd {{HOME}}/Code/kip-claw npx prettier --write "src/routes/blog/<slug>/+page.md" src/lib/posts.ts npm run buildThe build prerenders the post; confirm
build/blog/<slug>/index.htmlexists and the post appears onbuild/blog/index.html. -
Commit and push. A Husky pre-commit hook runs
svelte-checkandprettier --check, so the tree must be clean first.cd {{HOME}}/Code/kip-claw git add src/lib/posts.ts "src/routes/blog/<slug>/" \ "static/images/<slug-base>.jpg" \ "static/images/<slug-base>-1200.webp" \ "static/images/<slug-base>-760.webp" git -c user.name='kip-claw' -c user.email='[email protected]' \ commit -m "Add <slug-base> blog post" git push origin main -
Report. Tell Ben the post title, the live URL (
https://kip.computer/blog/<slug>/), and a one-line summary of the lead art.
Notes
- Deploy is automatic from
main; no manual deploy step. - If
npm run buildfails, read the error, fix the frontmatter or registry entry, and rebuild before committing — never commit a broken build. - Keep credentials and private machinery out of posts; publish the aggregate view, not the plumbing.