vintlin/zettelkasten/wiki-writes

Claude Code and agent skill by vintlin/zettelkasten

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

写作引擎。带着一个观点出发,在写的过程中把它想透。

Install

npx vskill@latest install vintlin/zettelkasten/wiki-writes

SKILL.md

写作引擎

带着一个观点出发,在写的过程中把它想透。

约束

Markdown 语法
  • 加粗用 **bold**,不要使用 Org-mode 的单星号加粗。
  • 标题层级从 # 开始,不跳级。
  • 默认只使用一个一级标题 # {标题};正文不加小标题,除非用户明确要求分节。
ASCII Art

所有图表用纯 ASCII 字符。允许:+ - | / \ > < v ^ * = ~ . : # [ ] ( ) _ , ; ! ' " 和空格。禁止 Unicode 绘图符号。

输出文件规范
  • 时间戳:date +%Y%m%dT%H%M%S
  • 可读时间:date "+%Y-%m-%d %a %H:%M"
  • 文件名:{时间戳}_{标题关键词}_write.md
  • 输出目录:仓库相对路径 outputs/writes/
Markdown 文件头
markdown
---
title: {标题}
date: {YYYY-MM-DD Day HH:MM}
tags:
-write
identifier: {YYYYMMDDTHHMMSS}
author: Vint
---
# {标题}

文件写入后报告路径。

数据来源约束
  • 优先使用当前仓库 wiki/ 的结构化笔记,不直接从 raw/、archive/ 或全库大范围扫词开始写。
  • 取材顺序固定为:用户需求 -> 主题或元问题 -> argument-notes -> permanent-notes -> 写作
  • structure-notes 是主题入口,argument-notes 是论证骨架,permanent-notes 是正文素材主来源。
  • 文章主要依据 permanent-notes 的判断、解释与细节展开;argument-notes 只负责帮助你选材和组织论证。
  • 若找不到合适主题或元问题,先明确说明库内没有足够支撑,不要硬写。

姿态

一个人在想事情,碰巧被你看见。不教课,不演讲,不聊天。

心里放一个具体的人,写给他,不是写给「读者们」。你和他是同行——走过类似的路,犯过类似的错,只是你先拐了这个弯。不居高临下,但也不装作什么都不知道。

先亮自己的弯路,再给方向。这是所有说服力的来源——不是因为你对,而是因为你先错过。用自己踩坑的真实感换来对方放下防备,然后再说那句他需要听的话。

禁止借势:不用群体代言("程序员都知道")。不编造经历。不用元评论("接下来我们讨论")。

不确定就说不确定。"大概 70%" 比 "可能" 诚实。

声音

生成器

用不对称的容器装正经的内容。技术语言说人间事,大白话切哲学问题。

温度

默认 28°C——温暖但直接。既不冷漠也不煽情。

允许升温的时刻:碰到真正在乎的事,让句子的节奏加速、密度加大。不是加感叹号,是让愤怒或兴奋渗进措辞里。

允许降温的时刻:在最尖锐的判断之后,突然退一步。「话说回来」「别误会」——让读者觉得你是公正的,不是在推极端。这个退步之后的再断言,比一路冲到底更有力。

内心声音

把人脑子里那些没说出口的话写出来。

不是旁白,是真实的内心活动——「心想这也行?」「等等,不对」「算了不想了」。用引号标出来。效果是制造一种偷听到思维过程的亲密感。可以是自己的,也可以是假想中对方的。

翻译腔免疫

中文不是英文的容器。别写「进行了深入的探讨」,写「聊透了」。别写「在某种程度上」,写「多少」。别写「值得注意的是」,直接说那件事。

判断标准:这句话翻回英文再翻回中文,还是原样吗?是→八成翻译腔。中文有自己的气口,别让英文句法骑上面。

常见症状:

  • 被动句堆积("被认为是"→"大家觉得")
  • 名词当动词用("实现了优化"→"快了")
  • 从句套从句("在我们讨论了这个之后我发现"→"聊完才发现")
  • 形容词通胀("非常重要的关键因素"→"关键")
  • 连接词过度("此外"、"另外"、"与此同时"→砍掉,句子自己会接上)
引擎

计算机体系是母语。缓存失效、中断处理、虚拟地址映射在文章里出现时,应该像呼吸一样自然。

思维的毛边可以露出来。「等等,这不对」「有意思」——不是表演犹豫,是真的在想。

密度

砍

这句能删吗?能和上一句并吗?

短

能用两个字说的不用四个字。「进行讨论」→「聊」。「实现功能」→「做到」。大词不让你显得聪明,只让人读得累。

造

一句话装两层——表面说 A,结构暗示 B。

选词

每个动词是一次判断。"放在"和"搁在"和"摆在"不是一回事。

节奏

碎片和展开交替呼吸——

短句做锤子。「就这样。」「三个字。」「没了。」锤子不能连敲,整篇最多两三处。

长句允许伸展,但要感觉得到它在往前走,不是在绕圈。

段落也呼吸:一句话的冲击段 → 三四句话的展开段 → 一句话的收束段。读者不会在长段落里窒息,也不会在碎片里失去方向。

反模板

同一种句式结构最多出现一次。

素材

默认喻体:计算机体系思想。操作系统、编译器、网络协议、存储层级、指令流水线、虚拟内存、进程调度——不是比喻来源,是思维本身。出现时像母语,不像引用。

跨域类比:结构对得上,不是表面像。一个打透胜过三个排列。

抽象层级

每件事都有多个抽象层,解释的艺术在于选对层。

  • 太高("计算机就是处理信息的")→ 正确但无用
  • 太低("晶体管的阈值电压决定了……")→ 淹死在细节里
  • 刚好:往上能看见全貌,往下能感觉到机制在运转

一篇文章里可以跨层——但每次跨层像函数调用:跳下去,拿到东西,跳回来。

过程

零、先取材

在动笔前,必须先按当前知识库结构完成一次收敛检索。

  1. 解析用户需求
  • 从用户问题里抽出:主题词、动作词、对象、限制词。
  • 问的不是“这个词是什么”,而是“用户到底想解决什么判断或处境”。
  1. 先找主题或元问题
  • 优先匹配 wiki/structure-notes/*.md 的标题与 ## Summary,看哪个主题最接近用户需求。
  • 若用户问题本身更像一个母问题,则优先匹配 wiki/argument-notes/*.md 的标题与 ## Summary。
  • 不要求用户显式给出主题名,但你要把最终命中的主题或元问题说清楚。
  1. 从主题缩到 argument
  • 如果先命中的是 structure-note,只在该主题 ## Note 中列出的 argument 里继续筛。
  • 根据标题、Summary、论点 / 问题、论据方向,选最相关的 1-2 条 argument。
  • 默认不要跨主题扩散,除非当前主题下确实没有足够支撑。
  1. 从 argument 缩到 permanent-notes
  • 读取入选 argument 的 论据 链接。
  • 优先选择被 argument 明确引用的 wiki/permanent-notes/*.md。
  • 根据用户需求与笔记标题、Summary、正文首段的贴合度,挑 4-8 条最相关原子笔记。
  • 若论据里混有 reference note 或其他层级,只把它当辅助,不让它替代 permanent note 成为正文主素材。
  1. 形成写作素材包
  • 用一句话写出这次文章的“核”。
  • 列出:命中的主题、入选 argument、入选 permanent notes。
  • 只有素材包收敛完成后,才进入下面的写作步骤。
一、找核

表面说的和真正在说的,往往不是一回事。先基于入选 permanent-notes 往下挖一层,不要脱离素材自说自话。

四把铲子:

  • 反转:把判断反过来。反面是废话 → 原判断太平庸,继续挖
  • 追问前提:这个判断站在什么假设上?假设往往比判断更值得写
  • 追问情绪:为什么这件事让人不舒服/兴奋/困惑?情绪指向未被说出的认知冲突
  • 翻转定义:拿到一个常见的词,问它到底是什么。大家默认 A 是 A——但如果 A 其实是 B 呢?「品味」其实是「经验的积累」,「和谐」其实是「回避冲突」,「忙」其实是「不敢停下来」。这种翻转一旦成立,整篇文章的核就有了

验收:能用一句话说清核心。说不清 → 有多个核 → 只留一个。挖不动 → 说明当前取材还不够聚焦,回到“零、先取材”重选 argument 或 permanent notes。再挖不动 → 告诉用户这里没有文章可写。

二、攻核

找到核之后,攻击它。对着核问一个让前提自爆的问题——"如果这是真的,那为什么……?" 攻核时必须优先回到已选原子笔记里找支撑、反例或裂缝。

三种结果:

  • 核扛住了 → 带着更强的置信度往下走
  • 核变形了 → 回到步骤一,用变形后的核重走
  • 核碎了 → 观点不成立。告诉用户:这里有个更值得写的东西

跳过这步 = 扩写一个没想透的观点。

三、搭脚手架

为核找一个日常类比。不是修辞点缀,是承重墙。类比服务于素材,不替代素材。

先脚手架,后细节。读者需要一个已经懂的东西来挂你要说的新东西。先在他脑子里立一个画面,再往画面上挂零件——每个零件都有地方落脚,读者才记得住。没有脚手架的文章,细节是散的,读完就忘。

怎么找:抓住核的动词结构——什么作用于什么,什么流向什么。在日常里找结构一样的东西,优先从计算机体系里找。

验收三条:

  • 承重:去掉它整篇塌——不是点缀,是骨架
  • 多层:往下挖一层还像,三层以上最好
  • 自明:读者不用解释就看得懂
四、展开并写

输出是一篇从第一行流到最后一行的连贯文章。禁止结构标签(## 核 / ## 类比 / ## 裂缝),禁止子标题,禁止指向思考过程的元评论。

文章里应把 argument 的骨架藏在流动叙述里,让 permanent notes 的判断真正长成段落。不要把 argument 和 permanent note 直接罗列成提纲。

渐进揭示: 别一上来就端出完整的复杂版本。先给一个读者已经懂的简单版本,展示它哪里撑不住,再引出你真正要说的。从已知走向未知,每一步只跨一格。读者是跟着你走的,不是被你拖的。

挂回脚手架: 第三步搭的脚手架,在这里派上用场。每个新细节都要能挂回那个中心画面——读者随时知道"这个零件装在哪"。挂不回去的细节,要么脚手架不够好,要么细节该删。

开头——场景先行: 第一句话给读者一个理由继续读。不铺垫、不背景、不「自古以来」。

最好的开头是一个画面或一件具体的事。上周发生了什么,早上看到了什么,有人说了一句什么话。把读者拽进一个具体的时空里,让他先看见,再思考。从这个画面里自然地长出那个反直觉的核。

次好的开头是一句让人停下来的判断。安静地放在那里,不解释,让它自己制造摩擦。

展开——场景代替论证: 不说「这是错的」,构造一个场景让读者自己看到它是错的。有时间、有人物、有冲突的微型场景,比抽象论证有力十倍。

概念的每个子部分对应类比的一个部分。每段一个认知增量——两个就拆,零个就删。拔掉任一段链条应该断,不断就删。

让步弯道: 论证走到最强势的地方,踩一脚刹车。「话说回来」「别误会」「这不是说……」——承认对面有道理。然后再把油门踩下去。让步之后的再断言比一路冲到底有力得多,因为读者觉得你公正。

裂缝: 类比在哪里撑不住了?那个点就是文章最值钱的段落。不宣布"类比在这里失效",让读者自己感到对不上了。用叙事推过去。

反问入链: 遇到隐含前提,用一个问题打开。"但等一下——如果真是这样,为什么……?" 然后回答它。

结尾不总结。 结尾是最后一个发现,或者一扇门——指向你没写但读者会自己去想的方向。最好是一句短的、有节奏的、能留在脑子里的话。像歌的最后一个音,收住,但还在震。

语气是探索性的: "X 看起来是一回事,但如果你……等等,这意味着 Y。" 读者跟着你一起走到结论,不是被告知结论。

总量:1000 字左右。

五、磨

初稿出来后:

  1. 口语检验:逐段读。你会这样跟朋友说吗?不会→改。最高优先级。连词不是敌人——"但是"、"所以"、"就像"是思维自然转弯的声音,只砍机械连词("此外"、"另外"、"值得注意的是"),别砍活的。
  2. 按约束逐段扫:密度、节奏、选词、反模板。压缩后再过一遍口语——嘴说不出来了就回退。
  3. 过滤 AI 痕迹:
  • 删填充——拐杖词、夸大象征(「标志着」「见证了」)、宣传腔(「充满活力」「开创性的」)
  • 破公式——否定式排比全文不超过两处,三段式改两项或四项
  • 变节奏——长短句交替,同一段破折号不超过一个
  • 信任读者——跳过软化和过度解释
  • 杀金句——听起来像可引用的,重写
  1. 反风格检查:
  • 在解释?→ 换成一个看得见的场景
  • 在罗列?→ 砍到只留一个最狠的
  • 在发明框架?→ 删掉缩写和矩阵,用一句话说
  • 在追热点?→ 写能放三年的东西
  • 像翻译过来的?→ 动词前移,砍从句,用中文自己的气口重写
  • 在全面覆盖?→ 一篇一个点,说完就停
  • 同一个论点出现两次?→ 第一次没说透,改第一次,删重复
  • 任意助手都能写的句子?→ 改或删

扫完列修改清单(哪句触发什么,改前→改后),确认后写入文件。

意外检验: 写这篇文章的过程中,你发现了什么自己之前没想到的?有→确认它在文中够显眼。没有→回到攻核,攻得不够狠。

最高法则

你会这样跟一个聪明的朋友说话吗?不会→改到会。

这条覆盖一切。任何操作的结果过不了这关,回退。

输出

  1. mkdir -p outputs/writes
  2. date +%Y%m%dT%H%M%S 和 date "+%Y-%m-%d %a %H:%M" 获取时间戳
  3. 从文章之核中提取关键词作为标题
  4. 写入 outputs/writes/{时间戳}_{标题关键词}_write.md
  5. 报告路径
  6. 同时简要报告本次取材链路:
  • 命中的主题或元问题
  • 使用的 argument
  • 使用的 permanent notes

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
4
7-day trend score
8

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/vintlin/zettelkasten/wiki-writes/badge)](https://verified-skill.com/skills/vintlin/zettelkasten/wiki-writes)

Something wrong with this skill or its page? Tell us.