用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/posit-dev/open-source-website --skill new-post命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | new-post |
| description | Scaffold a new blog post with inferred frontmatter, branch, and optional environment setup |
| argument-hint | [title] [topic] [authors] [format] |
Help the user create a new blog post for the Posit open-source website. Work through these steps in order.
Description: "Checking whether you're working from a direct clone or a fork"
git remote get-url origin
If the remote URL does not contain posit-dev/open-source-website, note to the user:
Looks like you're working from a fork. That's supported — you'll just need to comment
/deploy-previewon your PR once to trigger the preview build (fork PRs can't auto-deploy because the workflow runs with a read-only token). If you're a member of theposit-devorg, the smoother path is to cloneposit-dev/open-source-websitedirectly so branch PRs get auto-deploy.
Then ask whether they'd like to continue from the fork or stop to re-clone.
Ask the user for anything not already provided in their request:
.qmd. It supports executable code and Quarto features (tabsets, callouts, multi-column layouts), so it's the right choice for most posts. Use .md only when the post is straight prose with no code blocks and none of those Quarto features. Offer .ipynb if the user prefers writing in Jupyter. For .qmd posts that will execute code, also ask whether it's R, Python, or both.From the title and topic, reason about:
content/software/ that the post is about (e.g. ggplot2, quarto, great-tables)data/topics.yaml: Machine Learning, Artificial Intelligence, Visualization, Interactive Apps, Publishing, MLOps and Admin, Data Wrangling, Best Practices, Communitysource: tidyverse → /blog/q/tidyverse/). Older project blog URLs (e.g. tidyverse.org/blog/) redirect to these listing pages, so this is how a new post stays visible to those readers. Valid values: positron, tidyverse, ai, shiny, great_tables, plotnine, pointblank, quarto. Infer from the inferred software/topic (e.g. dplyr/ggplot2 → tidyverse, Positron → positron); confirm with the user. Omit only if the post genuinely doesn't belong to any of these projects.Present your inferences clearly and ask the user to confirm or correct before proceeding.
For every shell command below, use a description that explains why this step is needed in the context of creating the blog post — not just what the command does. This text appears in the permission prompt and helps the author understand what's happening.
Description: "Creating a dedicated branch for this post so it can be reviewed as a PR before going live"
git checkout -b blog/<slug>
New posts go at the top level: content/blog/<slug>/. The content/blog/ported/ tree is reserved for posts ported from legacy blogs — never scaffold a new post in there, even if source is set. The source frontmatter field controls which project blog listing the post appears on; it does not affect folder placement.
Description: "Scaffolding the post folder and frontmatter from the blog archetype"
hugo new blog/<slug>/index.md
If the format is .qmd, rename the file:
Description: "Renaming to .qmd so Quarto will render this post to Markdown before Hugo builds it"
mv content/blog/<slug>/index.md content/blog/<slug>/index.qmd
Edit the created file to replace the archetype defaults with the confirmed values:
title, date (today), people, descriptiontopics to only the relevant values (remove the rest)source if confirmed in step 2; otherwise omit it entirelysoftware and languages to only the relevant values; remove empty - entriestags entriesimage and image-alt empty for the author to fill inReport the full path to the created file so the user can open it themselves, along with the predicted permalink the post will live at: /blog/<date>_<slug-or-folder>/ (e.g. /blog/2026-04-07_my-post/).
Local preview is recommended for fast iteration but optional — the author can also rely on the Netlify preview that gets built on the PR. Mention this up front, then offer the local-preview setup as something they can opt into.
Detect which preview tools the user already has on PATH. Run four separate command -v checks — issue them as parallel Bash calls so each is a single-command invocation the permission system can auto-allow (compound statements with loops or &&/|| won't statically analyze):
command -v justcommand -v hugocommand -v nodecommand -v quartoA zero exit code (and a printed path) means the tool is present; non-zero means it's missing.
For any that are missing, list them and offer to install them. Don't run the install yourself unprompted — the author may prefer their own setup.
brew install just, brew install hugo node; install Quarto from quarto.orgIf node_modules/ doesn't exist at the repo root, offer to run just install to pick up the Node dependencies.
Then offer to start a local preview in the background:
just dev for Hugo + Tailwind.qmd posts, additionally offer quarto preview index.qmd from the post directory so Quarto re-renders on save while Hugo live-reloadsSkip any of these if the author declines or already has a preview running.
Finish with a short next-steps list:
image (1920×1080 PNG or JPG recommended) and image-alt to the frontmatter.check-post skill to validate it.review-post skill for a content review before opening a PR.main to get a Netlify preview and a human review.