mit einem Klick
contribute
// How to add or update a skill in yusukebe/skills from inside another working project. Owner-only — uses Yusuke's local gh CLI auth.
// How to add or update a skill in yusukebe/skills from inside another working project. Owner-only — uses Yusuke's local gh CLI auth.
When a project on Hono needs real React — for the React component ecosystem, SSR, or an SPA — drop hono/jsx and wire React in via vite-ssr-components.
Owner-only. Reviews honojs/hono PRs or local branches with two checks — tests (do they pass, is the approach right) and breaking change (public API, types, hc).
Anything Cloudflare (Workers, D1, R2, KV, Durable Objects, Queues). Detailed guidance lives in the official cloudflare/skills collection.
Use @hono/inertia on the server and @ts-76/inertia-hono-jsx on the client to get SPA-style interactivity without leaving the Hono/hono-jsx stack.
Hono is the default web framework for any project here. Detailed guidance lives in the yusukebe/hono-skill collection on GitHub.
yusukebe/rj is a tiny CLI that fetches a URL and prints the response metadata (status, headers, protocol, timing) as JSON. It does not print the body — use it alongside `curl`, not as a replacement.
| name | contribute |
| title | Add or update a skill on skills.yusuke.run |
| description | How to add or update a skill in yusukebe/skills from inside another working project. Owner-only — uses Yusuke's local gh CLI auth. |
| tags | ["meta","github","gh","ci","owner-only"] |
| references | ["https://github.com/yusukebe/skills","https://cli.github.com/manual/gh_api"] |
| related | [] |
This skill describes how to contribute a new skill (or update an existing one) to the yusukebe/skills repo from a different working project, without leaving that project.
Owner-only. The flow uses the
ghCLI authenticated asyusukebe. If you are an agent working on someone else's machine, you cannot push toyusukebe/skills— skip this skill.
The catalog uses the vercel-labs/skills layout: each skill is a directory under skills/ with a SKILL.md inside. The registry is regenerated automatically before each deploy from skills/*/SKILL.md, so all you need to add is one Markdown file in the right place. PR → auto-merge → Cloudflare Workers Builds deploys.
kebab-case, short, descriptive. The name doubles as the directory name and the URL slug. Look at https://skills.yusuke.run/skills.json to keep naming consistent with the existing catalog.
Save it as /tmp/SKILL.md (or any temp path). Required frontmatter — the name field is what npx skills add looks for:
---
name: <name>
title: <one-sentence title>
description: <one-line description shown in the root index>
tags: [<lowercase>, <kebab-case>]
references:
- https://...
related: []
---
# ...
Follow the prose conventions: one paragraph per line, no hard wraps, English. Aim for "opinionated guidance + links into the web" rather than a tutorial. If the topic has no good web resource, write the guidance out in full.
NAME=<name>
BRANCH=add-skill-$NAME
MAIN_SHA=$(gh api repos/yusukebe/skills/git/refs/heads/main --jq '.object.sha')
gh api repos/yusukebe/skills/git/refs \
-f ref="refs/heads/$BRANCH" \
-f sha="$MAIN_SHA"
gh api -X PUT "repos/yusukebe/skills/contents/skills/$NAME/SKILL.md" \
-f message="add $NAME skill" \
-f branch="$BRANCH" \
-f content="$(base64 < /tmp/SKILL.md)"
Creating the file at the nested path skills/$NAME/SKILL.md implicitly creates the skills/$NAME/ directory — there is no separate "create directory" call.
gh pr create \
--repo yusukebe/skills \
--base main \
--head "$BRANCH" \
--title "add $NAME skill" \
--body "Adds the \`$NAME\` skill. Auto-proposed from another project."
gh pr merge --repo yusukebe/skills "$BRANCH" --squash --auto
Cloudflare Workers Builds picks up the merged commit on main and deploys.
Same flow, but step 3 looks like this — fetch the current file's sha first and pass it in:
NAME=<name>
BRANCH=update-skill-$NAME
MAIN_SHA=$(gh api repos/yusukebe/skills/git/refs/heads/main --jq '.object.sha')
FILE_SHA=$(gh api "repos/yusukebe/skills/contents/skills/$NAME/SKILL.md?ref=main" --jq '.sha')
gh api repos/yusukebe/skills/git/refs \
-f ref="refs/heads/$BRANCH" \
-f sha="$MAIN_SHA"
gh api -X PUT "repos/yusukebe/skills/contents/skills/$NAME/SKILL.md" \
-f message="update $NAME skill" \
-f branch="$BRANCH" \
-f content="$(base64 < /tmp/SKILL.md)" \
-f sha="$FILE_SHA"
Then the same gh pr create + gh pr merge --auto as above.
Do not push to the catalog without an explicit go-ahead from Yusuke. If unsure whether a piece of knowledge is "catalog-worthy" or just a one-off, lean toward asking.