Community影像github.com

xingcanlee/wisp-writer

在 Wisp(Astro 技術部落格主題)站點中寫作的 skill。用於撰寫、改寫、擴寫、整理筆記或論文,批量產生草稿,並檢查 frontmatter、格式與標籤合規。提供文章模板、建立與檢查腳本及中文技術寫作規範,確保文章風格與主題一致。繪圖請交由 wisp-diagram skill 處理。

wisp-writer 是什麼?

這是一個專為 Wisp(基於 Astro 的技術部落格主題)設計的寫作輔助 skill。它能幫助使用者在 Wisp 站點中建立、改寫、擴寫部落格文章,或將筆記、論文、文件、對話整理成文章,並支援批量產生草稿。此外,它會檢查文章的 frontmatter、格式、標籤是否合規,並提供文章模板、建立與檢查腳本(Python + uv,PEP 723 內聯依賴),以及中文技術寫作規範。此 skill 支援的命令包括 `new_post.py` 用於建立文章,`check_post.py` 用於驗證合規性。它適用於 Claude Code、Cursor、Codex 等 AI 代理工具,確保生成的每篇文章風格與 Wisp 主題一致(安靜、準確、克制)。重點在於強制遵守硬規則如從 h2 開始、標籤大小寫一致、避免編造事實等。圖表與互動元件需另由 wisp-diagram skill 處理。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/xingcanlee/astro-wisp/tree/HEAD/skills/wisp-writer

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

wisp-writer:用 Wisp 主題寫出風格一致的文章

Wisp 的取向是安靜、準確、克制。文章寫在 src/content/posts/<slug>/index.mdx(或 index.md),frontmatter 以 src/content.config.ts 為準。本 skill 提供:

SKILL.md
reference/   frontmatter.md  style-guide.md  elements.md  templates/
scripts/     new_post.py  check_post.py  tests/   (Python + uv,PEP 723 內聯依賴,無需安裝)

命令約定

所有命令在站台根目錄執行,寫成 uv run skills/wisp-writer/scripts/<腳本>.py ...。把本 skill 複製到其他 Wisp 站台時:

  • 放在 <站台>/skills/wisp-writer/:命令不變。
  • 放在 <站台>/.claude/skills/wisp-writer/ 或 ~/.claude/skills/wisp-writer/:把路徑換成實際位置;腳本會從目前目錄向上尋找 astro.config.* 或 src/content,也可以用 --root <站台根目錄> 指定。
  • 找不到站台時腳本會提示並以退出碼 2 結束,不會寫入任何檔案。
  • 沒有 uv 時:python3 <路徑>/new_post.py ... 同樣可以執行(只用標準庫,需要 Python 3.10+)。

工作流程

  1. 明確讀者和重點。 動筆前寫下三件事:讀者是誰(會用什麼、不會什麼),讀完能帶走什麼(一句話結論),文章類型。資料不足時先問使用者,不要編造事實、資料或引用。
  2. 建立文章。 按類型選模板:tutorial 教學、deep-dive 原理深挖、algorithm 演算法講解(含互動元件)、note 短筆記、paper-reading 論文解讀。
    uv run skills/wisp-writer/scripts/new_post.py attention-explained \
      --title "自注意力機制講解" --template deep-dive \
      --tags "LLM,Transformer" --category 機器學習 \
      --description "從直覺到公式,講清楚自注意力的計算過程。"
    
    slug 用 kebab-case;已存在會報錯。腳本會列出現有標籤和分類,優先重用。參數:--draft、--md/--mdx、--date、--list-templates。
  3. 寫作。 遵循 style-guide,元素寫法見 elements,欄位見 frontmatter。替換模板裡的全部 TODO。
  4. 配圖與互動。 需要圖時,使用 wisp-diagram skill 產出原始檔案和 .wisp.svg,再用圖表引用語法放進文章;簡單流程直接用 Mermaid。需要互動展示時使用現有的 explainer 元件(目前是 MatMul);其他演算法需要新增元件,方法見 docs/guide/explainers.md,那屬於程式碼變更,應單獨說明並徵得同意,不要在寫文章時順手改。
  5. 檢查並修復。
    uv run skills/wisp-writer/scripts/check_post.py attention-explained --strict
    
    輸出格式 檔案:行號 層級 規則 說明。error 必須修;warning 逐條判斷,能修就修;info 只是提示。--json 供程式讀取,--all 檢查全部文章。
  6. 預覽。 pnpm build 必須通過(會校驗 frontmatter 和 Mermaid);想看效果用 pnpm dev。可選:用 Playwright 對文章頁分別在 light 和 dark 主題截圖各一張,檢查公式、圖表和程式碼區塊是否溢出、深色下是否看得清。

硬規則

  1. 正文從 h2 開始,不寫 h1,層級不跳階;h2 用名詞短語。
  2. title ≤ 80、description ≤ 200 個字元;description 寫清文章解決什麼問題。
  3. 標籤和分類重用已有寫法,大小寫一致(不要同時有 llm 和 LLM)。
  4. 中文段落用全形標點符號;中英文之間不需手動加空格;中文強調用 **粗體**,不用斜體。
  5. 術語首次出現時標註英文,如「自注意力(self-attention)」。
  6. 每個程式碼區塊都有語言標識;長程式碼區塊的摺疊是可選項,預設不用管。
  7. 每張圖都有 alt,描述圖要表達的結論;圖註用 "圖 N:說明"。
  8. 不硬編碼顏色,不寫 style=,不用 Tailwind 色階;顏色只能來自主題變數。
  9. 用到元件的文章必須是 .mdx 並 import;互動元件加 client:visible。
  10. 不編造事實、資料、引用和連結;沒有把握的內容明確標註或刪除。
  11. 不改動現有文章,除非使用者要求;只在 src/content/posts/<slug>/ 內工作。

範例片段

下面是符合語氣的一段(講清一件事,不鋪墊,不誇張):

## 為什麼要除以 √d

假設 $q$ 和 $k$ 的每個分量都是變異數為 1 的獨立隨機變數,那麼點積 $q \cdot k$ 的變異數是 $d_k$。維度越大,點積越大,softmax 就越接近 one-hot,梯度會變得很小。

除以 $\sqrt{d_k}$ 之後,變異數回到 1 左右,softmax 的輸出保持在溫和的範圍內。沒有這一步,深層網路很難訓練。

對比:「眾所周知,這個超級簡單但非常重要的小技巧能夠極大地提升效果!」——空洞、過度強調、沒有資訊。

常見錯誤

  • 開頭寫「本文將介紹……」「隨著……的發展」,應直接給出結論或問題。
  • 在正文中寫 # 標題;或 h2 之後直接寫 h4。
  • 標題用句子(「我們來看看怎麼實現」),應為名詞短語(「實現」)。
  • 中文裡混用半形逗號、括號;用斜體強調中文。
  • .md 檔案裡寫元件,或 .mdx 裡忘了 import;互動元件忘了 client:visible。
  • 圖片沒有 alt;引用了尚未生成的 .excalidraw(先畫圖,再引用);引用 .wisp.svg 而不是原始檔案。
  • 同一概念用了新標籤(Llm、大模型 與已有 LLM 並存)。
  • Mermaid 節點文字過長,渲染後重疊;應縮短到大約 12 個中文字以內。
  • 留下 TODO 佔位就交付;check_post.py --strict 能發現。
  • 只寫程式碼不解釋:程式碼前說明目的,程式碼後說明關鍵點或預期輸出。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能