AgentSkillsCN

dev-blog

适用于开发博客撰写工作流的操作。当用户提出“搭建我的博客”“初始化博客”“校准我的写作风格”“捕捉这一刻”“从存储桶中起草”“起草一篇博文”“发布博文”“发布草稿”,或进行任何博客撰写活动时使用此功能。触发指令包括:初始化、校准、捕捉、起草、发布、博客文章、写作风格、风格档案、捕捉存储桶、博客工作流、初始化博客、搭建博客。 当此技能被调用时,根据参数(初始化、校准、捕捉、起草或发布)识别对应的指令,并按照commands/目录中的相应工作流执行。对于起草与发布指令,从.claude/context/style-profile.md加载风格档案。

SKILL.md
--- frontmatter
name: dev-blog
argument-hint: "[init | calibrate | capture <slug> | draft <bucket> | publish <draft>]"
description: >
  REQUIRED for dev blog authoring workflow operations.
  Use when the user asks to "set up my blog", "initialize blog",
  "calibrate my writing style", "capture this", "draft from bucket",
  "draft a post", "publish the post", "publish draft",
  or any blog authoring activity.
  Triggers: init, calibrate, capture, draft, publish, blog post,
  writing style, style profile, capture bucket, blog workflow,
  initialize blog, set up blog.

  When this skill is invoked, identify the command from the argument
  (init, calibrate, capture, draft, or publish) and follow the
  corresponding workflow in the commands/ directory. Load the style
  profile from .claude/context/style-profile.md for draft and publish
  commands.
allowed-tools:
  - "Bash(bundle *)"
  - "Bash(gem install *)"
  - "Bash(gh release *)"
  - "Bash(gh api *)"
  - "Bash(git *)"
  - "Bash(mkdir *)"
  - "Bash(pkill *)"
  - "Bash(ruby *)"
  - "Bash(rougify *)"
  - "Bash(mise *)"
  - "Bash(which *)"
  - Edit
  - Glob
  - Grep
  - Read
  - Write
  - "mcp__playwright__*"

Dev Blog Workflow

When This Skill Must Be Used

ALWAYS invoke this skill when the user's request involves ANY of these:

  • Initializing or setting up a new dev blog
  • Calibrating or updating a writing style profile
  • Capturing a development entry for a future blog post
  • Drafting a blog post from captured entries
  • Publishing a draft to the live blog
  • Any operation involving the capture/draft/publish pipeline
  • Questions about blog configuration, media strategy, or content types

Commands

PatternCommandDescription
/dev-blog initInitScaffold a new blog with Jekyll, CSS cascade layers, and GitHub Pages deployment
/dev-blog calibrateCalibrateGenerate or update writing style profile from writing samples
/dev-blog capture <slug>CaptureStage an entry into a named capture bucket
/dev-blog draft <bucket>DraftGenerate a rough draft from captured entries in a bucket
/dev-blog publish <draft>PublishFinalize a draft, release media, and deploy

Init Metadata

The init command collects the following metadata to scaffold the blog:

FieldRequiredDefaultDescription
Repository nameYesGitHub repository name, used as baseurl (/{repo})
Repository ownerYesGitHub organization or username
Site titleYesDisplayed in nav header and page titles
Author nameYesFooter copyright and HTML meta tags
Pages domainNo{owner}.github.ioCustom domain or GitHub Pages default
Dark themeYesRouge-compatible theme name for dark mode (see themes.md)
Light themeYesRouge-compatible theme name for light mode (see themes.md)

Blog Configuration

Content Types

All types use the same post layout. Differentiation is through frontmatter only. Categories are open-ended — new categories can be introduced at draft time and will automatically appear in navigation and category pages.

TypeCategoryPurpose
ProgressprogressDevelopment progress, new capabilities, strategic direction
EngineeringengineeringTechnical architecture and design documents
AnnouncementannouncementBrief, focused announcements of specific details
FuturefutureSpeculative engineering concepts explored for the joy of it

Post Frontmatter Schema

yaml
---
layout: post
title: "Post Title"
date: YYYY-MM-DD HH:MM:SS
tags: [tag-1, tag-2, tag-3]
category: progress | engineering | announcement | future
excerpt: "One-sentence summary for the post listing."
---
  • layout is always post
  • date includes time component for same-day ordering (newest at top)
  • category is singular (e.g. progress, engineering, announcement, future)
  • tags is a YAML array
  • excerpt truncated to 30 words on home page

URL Structure

code
/{baseurl}/{category}/YYYY/MM/DD/{slug}.html

Media Strategy

Git history bloats with binary files. Media is hosted via GitHub Releases:

  • Tag pattern: post/{slug}
  • Download URL: https://github.com/{owner}/{repo}/releases/download/post/{slug}/{filename}
  • Local staging: assets/media/ (gitignored) — used during drafting, rewritten to release URLs on publish

Style Profile

The writing style profile at .claude/context/style-profile.md calibrates the voice for draft generation. It is produced by the calibrate command and consumed by draft and publish.

If the style profile does not exist when draft or publish is invoked, trigger calibration first.

Commands

References