violet: Skill for Claude Code

.agents/skills/blog-writing/SKILL.md

blog-writing is a skill for Claude Code, Codex from VOD-Studio/violet. It costs 75 tokens per session (1,772 once invoked), scanned A, original, MIT.

A workflow for writing and revising engineering blog articles from supplied material, source code, research, or completed work. It can also capture short reusable findings as notes.

In plain words
What is it for?
Use it to choose an article topic, draft or revise a technical post, save an authorised draft, publish an approved article, or record a concise lesson.
Why use it?
It helps turn engineering work into explanations that readers can understand independently, while separating drafts, saved drafts, and published articles.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents).

This is VOD-Studio/violet's own configuration. It tells Claude Code and Codex how to work on violet itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything violet configures →

Reuse

Borrowing it

Nothing to install: this file belongs to VOD-Studio/violet. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/VOD-Studio/violet/release/2.0/.agents/skills/blog-writing/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/VOD-Studio/violet

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for blog-writing

README.md
[![agentmods](https://agentmods.dev/badge/skills/vod-studio/violet/blog-writing/github.svg)](https://agentmods.dev/skills/vod-studio/violet/blog-writing)
Your own site
<a href="https://agentmods.dev/skills/vod-studio/violet/blog-writing"><img src="https://agentmods.dev/badge/skills/vod-studio/violet/blog-writing/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for blog-writing

Your own site · 80×15
<a href="https://agentmods.dev/skills/vod-studio/violet/blog-writing"><img src="https://agentmods.dev/badge/skills/vod-studio/violet/blog-writing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 75 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,772 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00075 $0.01772
Opus 5.5 $0.00030 $0.00709
Sonnet 5.5 $0.00015 $0.00354
Haiku 4.5 $0.00007 $0.00177

Measured 25d ago against content hash a682f61caa4b, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

blog-writing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 25d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/scan-sensitive.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/blog-writing/SKILL.md · 70 lines

How it starts

The opening of the file, as written. The whole thing — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Blog Writing

按用户的请求写一篇读者读完有收获的技术文章。只在用户主动触发时工作,不在会话收尾时自动选题或提示;没有被要求写,就不写、不问、不入库。用户只要求维护本 skill 时,不生成或入库文章。

先确认本次交付

用户意图 本次交付
写文章(给了主题、材料、包名或链接) 完整文章稿;题目和范围已明确就沿用
写笔记 一条可检索的短笔记:触发条件、结论、可复用动作
改稿 读取指定原文,修正用户指出的问题;不默认扩大为整篇重写
存草稿、发布、更新指定文章 完成稿件后按已获授权执行博客操作
发布已完成的现稿 核对稿件、目标和授权,进入出版参考;不重新选题或擅自重写

“写文章”授权写作,“存草稿”授权保存,“发布”授权公开。已明确的授权持续有效,不反复确认;缺少授权时交付可阅读稿件。草稿仍是远端写入。用户显式要求文章时交付文章,不自行降级成笔记;材料不足就针对性补读、实际动手取证,或指出缺口。

选题:先弄清读者为什么要读

动笔前用几句话回答:谁会读这篇、他现在遇到什么问题或在比较什么、读完能判断或做到什么。 回答不出,说明材料还没成为文章,先补读或向用户问一个关键问题,不用泛论补齐。需要更细的判断读 decision-guide.md。

文章分三种常见形态,可以混合;用户点名的形态优先:

  • 发现型:一个反直觉行为如何发生、一次故障如何被证据定位、两个合理选择的真实代价。主线是一条被证据支撑的因果。
  • 库介绍型:完整介绍一个库或工具:它是什么、解决什么问题、原来的做法痛在哪、优势与特性、怎么做到的(核心算法及原始出处)、与同类的对比、怎么上手、边界在哪。可以也应当讲设计;只照抄 README 的特性列表、没有问题背景、原理出处和对比,不构成介绍。
  • 场景型:围绕一个库、工具或机制的具体使用场景深入:读者原来怎么做、卡在哪、这个东西改变了什么、什么时候不该用,用实际运行的对比作答,不转述设计意图。

库介绍型与场景型是两种文章,不互相替代。同一个库还没有介绍文章时,首篇通常写库介绍型;已有介绍或用户给了具体问题时写场景型,并链接介绍文章。

更新已有内容时优先补原文。只有实现清单、过程状态或通用常识的材料,向用户说明后不硬写。完成了功能、改了很多文件、通过很多测试都不是选题理由。

写作前围绕主题查重:文章用 search_posts,笔记用 list_notes 并检查分页;只读可能相关的正文。MCP 不可用时仍可完成本地写作,说明尚未查重;不要猜测已有文章或创建新远端内容。

写作:读者能看见、能验证、能上手

新写文章或实质重写时读 article-workflow.md。保留一个简短约定:谁的问题 → 本文回答 → 支撑回答的关键材料,它约束取舍,不做正文模板。

价值底线,缺一项就继续补材料,而不是润色:

  • 有读者能亲眼看到的东西:真实运行输出、渲染结果、前后对比、可复现的最小示例中的至少一类,来自实际运行,不是描述“会得到什么”。
  • 比官方文档多一层:读者读完这篇,能知道 README 或 API 文档没直接告诉他的东西,例如适用边界、替代方案的差别、踩坑与代价。
  • 读完能做点什么:判断是否采用、照着跑通一个例子,或在遇到某个现象时知道往哪查。

其余约定:

  • 按解释需要自由使用 Markdown 的标题、列表、表格、引用、脚注、链接、图片、公式与代码,不设字数或形式配额。写法参考见 markdown.md,不因当前站点解析能力排除合适的语法。
  • 区分实际观察、源码确认和条件推演。需要证据时可以在临时目录安装依赖、写最小示例、运行并截图或记录输出;这是写文章的取证,不是项目验收,不改业务代码、不跑项目级测试。这种区分是作者的取证纪律:试错过程、环境问题和逐条“未验证”不写成正文。
  • 限定语只放在真正会误导读者的地方,一节一处为宜,不给每个论点都挂一句“这不是……”。
  • 讲库、工具或机制时,用到的算法、协议和外部服务给出原始出处(论文、标准、官方文档),在相应论点附近引用;库介绍型文末列参考文献。
  • 中文正文保留稳定技术术语;不虚构第一人称经历、测量数字、失败场景或验证结果。介绍用户自己的项目时,作者动机和设计取舍问用户,不回避作者视角。
  • 笔记写清触发场景、非显然结论及可复用动作,不强行展开为小论文。

完成初稿后独立审读(可用独立 agent;不可用则另做一次编辑通读,不以作者自评代替)。审读除查因果缺口和过度结论外,还要回答价值底线三问。按发现改稿。

Read the full file on GitHub · 70 lines

Files

What ships with it

5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 25d ago Changed · +12 lines · +25 tokens per session a682f61caa4b
  2. 1mo ago First seen · 58 lines · 50 tokens per session scan A f36167e78f32

Subscribe to this mod's changes

blog-writing is a skill published in the GitHub repository VOD-Studio/violet (4 stars, last pushed yesterday), licensed MIT. It adds 75 tokens to every session and 1,772 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-03.

Related

blog-writing compared with skills from other repositories

blog-writing next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
blog-writingVOD-Studio/violetSkill4yesterdayMITA75Claude Code, Codex
audit-network-securitygordcurrie/unifi-mcpSkill215d agoMITA81Claude Code, Codex
unifi-networkgordcurrie/unifi-mcpSkill215d agoMITA111Claude Code, Codex
dark-memoryOpita-Code/dark-memory-mcpSkill14d agononeA353Claude Code, Codex
vibe-loop-gitOpita-Code/dark-memory-mcpSkill14d agononeA0Claude Code, Codex
opencodeOpita-Code/dark-memory-mcpSkill14d agononeA0Claude Code, Codex
claude-codeOpita-Code/dark-memory-mcpSkill14d agononeA0Claude Code, Codex