Portable Text Serialization
sanity-io/agent-toolkit
Render and serialize Portable Text to React, Svelte, Vue, Astro, HTML, Markdown, and plain text.
This skill should be used when publishing a new or updated skill to the claude-skills-site Astro website.
$ npx skills add glebis/claude-skills --skill publish-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install glebis/claude-skills publish-skill --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/glebis/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/publish-skill .claude/skills/publish-skill && 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 "publish-skill" agent skill from https://github.com/glebis/claude-skills/tree/main/publish-skill into .claude/skills/publish-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-skill", 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/glebis/claude-skills/tree/main/publish-skillType 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 glebis/claude-skills --skill publish-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install glebis/claude-skills publish-skill --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/publish-skill .agents/skills/publish-skill && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "publish-skill" agent skill from https://github.com/glebis/claude-skills/tree/main/publish-skill into .agents/skills/publish-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-skill", 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 glebis/claude-skills --skill publish-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install glebis/claude-skills publish-skill --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/publish-skill .cursor/skills/publish-skill && 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 "publish-skill" agent skill from https://github.com/glebis/claude-skills/tree/main/publish-skill into .cursor/skills/publish-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-skill", 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/glebis/claude-skills.git --path publish-skill--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 glebis/claude-skills --skill publish-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install glebis/claude-skills publish-skill --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/publish-skill .gemini/skills/publish-skill && 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 "publish-skill" agent skill from https://github.com/glebis/claude-skills/tree/main/publish-skill into .gemini/skills/publish-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-skill", 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 glebis/claude-skills publish-skillInstalls 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 glebis/claude-skills --skill publish-skill -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/publish-skill .github/skills/publish-skill && 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 "publish-skill" agent skill from https://github.com/glebis/claude-skills/tree/main/publish-skill into .github/skills/publish-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-skill", 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 glebis/claude-skills --skill publish-skill -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install glebis/claude-skills publish-skill --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/publish-skill .opencode/skills/publish-skill && 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 "publish-skill" agent skill from https://github.com/glebis/claude-skills/tree/main/publish-skill into .opencode/skills/publish-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish-skill", 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.
publish-skillThis skill should be used when publishing a new or updated skill to the claude-skills-site Astro website.
Publish Skill is an agent skill from glebis/claude-skills. This skill should be used when publishing a new or updated skill to the claude-skills-site Astro website. Use this skill for both adding new skills AND updating existing ones on the site. Triggers on "/publish-skill skillname", "add skill to site", "publish skillname to skills site", "update skill on site", "edit skill on site", "sync skill to site", "republish skill". Reads SKILL.md from the skills repo, generates MDX frontmatter and body, picks the right bundle, updates bundle skills array, and commits/pushes…
Its SKILL.md is about 4.1k 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 Documents & Office, covering Markdown and Static sites and blogs. It works with Astro. The repository describes itself as: Collection of Claude Code skills for enhanced AI workflows. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3b88261. 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:
gitrsyncFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and rsync, 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.
Publish Skill loads about 4.1k tokens when it runs. Until then it costs about 182 tokens; SKILL.md has 1,735 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 glebis/claude-skills at commit 3b88261, republished under its MIT licence (© glebis). 1,735 words, ~4,116 tokens.
.claude/skills/publish-skill/SKILL.md (or your agent's skills folder).Automate the full pipeline for publishing a skill to the claude-skills-site Astro website.
~/ai_projects/claude-skills/~/ai_projects/claude-skills-site/~/ai_projects/claude-skills-site/src/content/skills/*.mdx~/ai_projects/claude-skills-site/src/content/bundles/*.mdx/publish-skill <skill-name> # New skill — generates a hero image by default
/publish-skill <skill-name> --update # Regenerate existing .mdx (+ hero image)
/publish-skill <skill-name> --dry-run # Show what would be written, no commits, no image
/publish-skill <skill-name> --no-image # Skip hero-image generationExecute these phases in order. Stop and report on any error.
~/ai_projects/claude-skills/<skill-name>/SKILL.md exists. Also check ~/.claude/skills/<skill-name>/SKILL.md.<skill-name>. Ensure the skill directory exists in the skills repo or ~/.claude/skills/."~/.claude/skills/ version is newer (by mtime), sync it to the skills repo with rsync -av --exclude='*.egg-info' --exclude='__pycache__', commit the change, and push. This ensures the skills repo always has the latest version.name from YAML frontmatterdescription from YAML frontmatter---)~/ai_projects/claude-skills/<skill-name>/README.md exists — if so, read it for supplementary context.~/ai_projects/claude-skills-site/src/content/skills/<skill-name>.mdx already exists.--update was NOT passed: stop and ask for confirmation. "The skill <skill-name> already has an .mdx on the site. Pass --update to regenerate, or confirm to overwrite."--update was passed: read the existing .mdx. Preserve these fields from the existing file (do not regenerate):apothecary_namehero_imageauto_activityauto_last_synced (will be updated to today)Generate each field:
name — Use the skill directory name (kebab-case). Must match the filename.
tagline — One sentence, max 80 characters. Summarize what the skill does in plain language. End with a period. Do not start with "A skill that..." — lead with the action verb or the thing it produces.
apothecary_name — A poetic 2-4 word name in the style of an old apothecary shop. Follow the existing pattern:
bundle — Select the best-fit bundle by analyzing the skill's purpose against these categories:
| Bundle key | Name | Covers |
|---|---|---|
meeting-intelligence | Meeting Intelligence | Transcripts, meetings, recordings, action items, video/audio processing |
communication | Communication | Email, messaging, Telegram, Google Workspace, Zoom |
research | Research | Web research, search, image sourcing, knowledge retrieval |
content-publishing | Content & Publishing | Image generation, presentations, PDFs, reports, brand assets, visual tools |
personal-analytics | Personal Analytics | Health data, dictation analytics, browsing history, self-reflection, hardware signals, knowledge visualization |
thinking-strategy | Thinking & Strategy | Decision frameworks, JTBD, dialogue modes, cognitive tools, self-design |
developer-tools | Developer Tools | TDD, LLM CLI, issue tracking, session search, code tools |
lab-consulting | Lab & Consulting | Lab meetings, client discovery, retrospectives, demos |
If the skill could fit multiple bundles, prefer the one where it adds the most differentiation. If genuinely unsure, ask the user.
tags — 3-6 lowercase kebab-case tags. Derive from the skill's domain, tools used, and output types. Check existing skills for tag reuse.
accent_color — Pick from the validated set: amber (default), blue, cyan, green, orange, purple, violet. Use amber unless the skill has a strong thematic reason for another color (e.g., hardware/signals → cyan, mental health → violet, nature/strategy → green).
auto_description — Copy the description field from the SKILL.md frontmatter verbatim. Truncate at 200 characters if longer.
auto_triggers — Extract 0-3 trigger phrases from the SKILL.md description (e.g., "queries like", "check my email"). Leave empty [] if no clear triggers.
auto_tools — Leave as [].
auto_last_synced — Today's date in YYYY-MM-DD format. Run date +"%Y-%m-%d" to get it.
auto_last_commit — Run git -C ~/ai_projects/claude-skills log -1 --format="%Y-%m-%d" -- <skill-name>/ to get the last commit date for that skill directory.
auto_activity — Leave as [] for new skills. Preserve from existing .mdx on --update.
install_command — Leave as "".
repo_path — The skill directory name (same as name).
dependencies — Extract from SKILL.md requirements/prerequisites sections. List Python packages, CLI tools, or APIs needed. Use [] if none.
hero_image — Leave commented out (# hero_image:) at this stage. Phase 6.5 generates a hero image by default and rewrites this field to the generated path. It stays commented only if --no-image was passed (or generation fails and no repo screenshot exists).
Write the body following this exact structure:
## What it does
[2-3 sentences describing the skill's primary function. Be specific about what it produces or enables. Reference concrete tools, APIs, or protocols if relevant.]
## Key features
[Bulleted list of 4-6 distinguishing features. Each bullet: **Bold label** — explanation. Focus on what makes this skill interesting, not obvious capabilities.]
## When to use
[1-2 sentences describing the trigger scenarios. Start with "When..." to match the existing pattern.]Additional sections to include only when relevant:
## Signals or ## Modes — if the skill has named operational modes or signal types## How it works — if the skill uses a non-obvious protocol (MIDI, MCP, etc.)Do NOT include: installation instructions, quick start commands, code blocks, or dependency lists. Those belong in the SKILL.md and README, not the site .mdx.
Before writing, verify:
~/ai_projects/claude-skills-site/src/content/bundles/<bundle>.mdx exists.--update, confirm no .mdx already exists (handled in Phase 2).amber, blue, cyan, green, orange, purple, violet.name field, repo_path, and filename must all match.If any check fails, report the specific error and stop.
~/ai_projects/claude-skills-site/src/content/skills/<skill-name>.mdx.skills: array if not already present. Append at the end of the array.--dry-run: Instead of writing, display the full .mdx content and the bundle change, then stop.--no-image)This phase runs by default. Skip it only if --no-image was passed, or under --dry-run (which shows planned output without generating).
Generate a hero image using the /codex skill. Codex has a built-in image_gen tool that produces images without needing an API key. The image follows the site's apothecary visual language established in the original Codex design session. Fallback: if /codex is unavailable or its image_gen fails, regenerate with the gpt-image-2 or nano-banana skill using the same prompt and the same 16:9 target size/path.
Prompt template — fill in SKILL_NAME, APOTHECARY_NAME, SCENE_BACKDROP, SUBJECT, COMPOSITION_DETAIL, and AVOID_EXTRA:
Use case: stylized-concept
Asset type: 16:9 skill hero image for the Claude Skills site
Primary request: Create a skill-specific hero artwork for the skill "SKILL_NAME", apothecary name "APOTHECARY_NAME". No readable text.
Style reference: Match the existing main site hero style: dark apothecary workbench fused with developer terminal artifacts, hand-tinted copperplate engraving, technical diagram overlays, tactile paper grain, oxidized copper, medicinal green, ink brown, warm bone, tiny electric-blue signal accents.
Scene/backdrop: SCENE_BACKDROP
Subject: SUBJECT
Composition: Wide 16:9, COMPOSITION_DETAIL, quiet dark negative space left, no border.
Lighting: Low raking desk light, sharp engraving detail, warm copper highlights.
Avoid: no readable words, no logos, no human figures, AVOID_EXTRA, no stock-photo look, no neon sci-fi.Exact prompts from existing hero images (use as style/structure reference):
tdd ("The Test Anvil"):
jtbd ("The Hiring Compass"):
skill-studio ("The Automation Architect"):
telegram-telethon ("The Daemon's Relay"):
agency-docs-updater ("The Publisher's Engine"):
vision-bench ("The Judge's Loupe"):
Subject crafting guidelines:
Steps:
/codex skill with the assembled prompt, requesting a 16:9 image saved to ~/ai_projects/claude-skills-site/public/images/SKILL_NAME-hero.jpg# hero_image: to hero_image: "/images/SKILL_NAME-hero.jpg"If Codex is not available or image generation fails, warn the user and continue without the image. The skill publishes fine without a hero image.
git -C ~/ai_projects/claude-skills-site diff to show all changes.git -C ~/ai_projects/claude-skills-site add \
src/content/skills/<skill-name>.mdx \
src/content/bundles/<bundle>.mdx \
public/images/<skill-name>-hero.jpg # omit only if --no-image / no image was producedfeat: add <skill-name> skill to site--update: feat: update <skill-name> skill on sitegit -C ~/ai_projects/claude-skills-site push| Error | Recovery |
|---|---|
| SKILL.md not found | Check both paths, report which were tried |
| Bundle .mdx not found | List available bundles, ask user to pick |
| .mdx already exists (no --update) | Ask user to confirm overwrite or pass --update |
| Git push fails | Show error, suggest git pull --rebase first |
| accent_color invalid | Default to amber, warn user |
| Skill already in bundle array | Skip bundle update, not an error |
---
name: "<skill-name>"
tagline: "<tagline>"
apothecary_name: "<apothecary_name>"
bundle: <bundle>
tags: [<tags>]
accent_color: <color>
# hero_image:
auto_description: "<description>"
auto_triggers: [<triggers>]
auto_tools: []
auto_last_synced: "<date>"
auto_last_commit: "<date>"
auto_activity: []
install_command: ""
repo_path: "<skill-name>"
dependencies: [<deps>]
---
## What it does
<body>
## Key features
<features>
## When to use
<when>© glebis, MIT. 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 publish-skill of glebis/claude-skills.
Open the folder on GitHubat commit 3b88261
Publish Skill 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 |
|---|---|---|---|---|---|---|
| Publish Skill this skillglebis/claude-skills | 391 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Portable Text Serializationsanity-io/agent-toolkit | 188 | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Write Missing Core Wordsnicejade/gpt-wordbook | 167 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Fix Broken Linkschef/chef-web-docs | 143 | — | ~3.2k | Automated safety check: Pass | Custom licence | |
| Markdown Integrationlive-codes/livecodes | 1.5k | — | ~2k | Automated safety check: Pass | MIT | |
| Astrodavila7/claude-code-templates | 33k | 3 repos | ~2.5k | Automated safety check: Pass | MIT |
sanity-io/agent-toolkit
Render and serialize Portable Text to React, Svelte, Vue, Astro, HTML, Markdown, and plain text.
nicejade/gpt-wordbook
Batch author missing vocabulary MDX files for the gpt-wordbook project.
chef/chef-web-docs
Run linkchecker against a locally served site, a deployed URL, or a local HTML build output, parse the errors, map each broken link back to its Markdown source file, suggest replacement URLs, and…
live-codes/livecodes
Integrate LiveCodes with documentation sites using remark-livecodes, markdown-it-livecodes, gatsby-remark-livecodes, or marked-livecodes for Docusaurus, Astro, VitePress, Next.js, and Storybook.
davila7/claude-code-templates
Build content-focused websites with Astro — zero JS by default, islands architecture, multi-framework components, and Markdown/MDX support.
timmo001/system-bridge
Update the System Bridge marketing landing page in the Astro + Starlight docs site.
glebis/claude-skills
Runs a human-first workflow for labeling PII spans in a transcript, then scores inter-annotator agreement and drafts an adjudicated gold set.
glebis/claude-skills
Automates a dedicated, logged-in Chrome instance per profile without ever closing the user's own open tabs or browser windows.
glebis/claude-skills
This skill should be used when conducting comprehensive research on any topic using the OpenAI Deep Research API.
glebis/claude-skills
This skill should be used for elimination-style research where the user wants to choose from a shortlist of products, tools, services, vendors, or other options using explicit criteria, numeric…
glebis/claude-skills
Generates a self-contained HTML presentation with article and slides modes, ElevenLabs voiceover narration and optional GPT Image 2 illustrations.
glebis/claude-skills
Writes fictional but realistic coaching or therapy session transcripts for evals, demos and few-shot examples, in several modalities and export formats.
Works with
Categories
This skill should be used when publishing a new or updated skill to the claude-skills-site Astro website. Publish Skill is an agent skill from glebis/claude-skills. This skill should be used when publishing a new or updated skill to the claude-skills-site Astro website.
Publish Skill fits situations like: both adding new skills AND updating existing ones on the site; /publish-skill skillname; add skill to site; publish skillname to skills site.
Run `npx skills add glebis/claude-skills --skill publish-skill -a claude-code`. Or copy the skill folder (publish-skill in glebis/claude-skills) into .claude/skills/publish-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add glebis/claude-skills --skill publish-skill -a codex`. Or copy the skill folder (publish-skill in glebis/claude-skills) into .agents/skills/publish-skill 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 glebis/claude-skills --skill publish-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish-skill, .gemini/skills/publish-skill, .github/skills/publish-skill and .opencode/skills/publish-skill in your project.
Going by SKILL.md and its folder, Publish Skill needs the command-line tools its instructions call (git and rsync). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use 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.
Publish Skill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k 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 Publish Skill: Portable Text Serialization (sanity-io/agent-toolkit, 188 stars), Write Missing Core Words (nicejade/gpt-wordbook, 167 stars), Fix Broken Links (chef/chef-web-docs, 143 stars) and Markdown Integration (live-codes/livecodes, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
glebis (a GitHub user) maintains it in glebis/claude-skills, which has 391 GitHub stars. The repository holds 92 skills in this directory. The repository was last updated on October 8, 2026.
Source: glebis/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.