Plan, write, and review VS Code blog posts. ALWAYS use this skill when the user asks to "write a blog post", "draft a blog", "add a blog post for", "review this blog post", or provides a feature/issue/PR to announce on the VS Code blog. For new posts, it proposes an outline and asks clarifying questions first, and does not edit any files until you approve the plan.
65
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./.github/skills/blog-writer/SKILL.mdHelp author a new VS Code blog post or review an existing one in the blogs/ folder. The skill has two modes:
All work must follow the blog-writing style guide, which in turn builds on the docs-writing style guide.
Use this skill whenever the request maps to any of these:
blogs/.For new posts, run the plan-first workflow rather than jumping straight to a draft, even when the topic seems small.
Do not use this skill for reference documentation, release notes, or API docs. Those are handled by other skills (doc-writer, release-note-writer) or direct edits. If the user wants reference docs rather than a narrative post, switch to doc-writer.
blogs/ folder. Do not update reference docs, release notes, or API docs as part of this skill.blogs/<year>/<month>/<day>/ with each date level as its own subfolder. Store images and the social image alongside the post.Order, TOCTitle, PageTitle, MetaDescription, MetaSocialImage, Date, Author). Order must be unique and higher than the most recent post, so check existing posts before assigning it.TODO comment for a human to capture and add it later. Do not fabricate image references or invent file names beyond the placeholder.Happy coding! 💙.Do not modify any files in this phase.
Understand the topic. Read the feature description, issue, or PR provided. If it is ambiguous or lacks detail, ask clarifying questions before continuing.
Establish the content framing. Identify the primary persona, reader intent, and narrative purpose by following the blog content-framing guidance. Infer them from the topic, source material, existing coverage, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the angle, ask the writer to confirm before proposing the outline.
Check the source if needed. To understand the feature, inspect the source code in the microsoft/vscode and microsoft/vscode-copilot-chat repos. Use the gh CLI for all GitHub interactions (issues, PRs, code). See user memory gh-cli-powershell.md for PowerShell-specific gh patterns.
| Area being written about | Primary source repo |
|---|---|
| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | microsoft/vscode |
| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | microsoft/vscode-copilot-chat |
Verify public availability. Confirm that each announced capability is available to users in the named public channel by the publication date. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Exclude planned, hidden, internal dogfood, and source-only functionality.
Determine placement and metadata. Decide the target folder (blogs/<year>/<month>/<day>/) and the next available Order value by checking recent posts. Confirm the author name and social media profile link with the user if unknown.
Present the outline. Summarize:
TODO image placeholders that will be needed (hero/social image, inline screenshots).Stop and wait for approval. Do not proceed to Phase 2 until the user explicitly approves the outline (or adjusts it).
Once the user approves the outline:
blogs/<year>/<month>/<day>/<slug>.md with complete YAML frontmatter.<Month> <day>, <year> by [<author>](<social link>) and a blank line.Happy coding! 💙.TODO comments where images or screenshots need to be captured by a human.TODOs for the user.When the user asks you to review an existing blog post instead of writing one:
Order, MetaDescription under 160 chars, TOCTitle under 30 chars).blogs/<year>/<month>/<day>/).Happy coding! 💙).gh CLI.193d3e4
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.