Community寫作與編輯github.com

atokim4/cover-letter-lint

用於撰寫或檢查自由接案者的自我推薦信、提案或客戶訊息,使其讀起來像真人撰寫,且只陳述受過事實支持的內容。

cover-letter-lint 是什麼?

這個 AI 技能專為自由接案者設計,協助他們在 Upwork、Fiverr、PeoplePerHour、Freelancer.com 或一般求職平台上,撰寫或檢查自我推薦信、提案或客戶訊息。其主要目標是讓訊息讀起來像真人撰寫,杜絕常見的 AI 生成痕跡,並確保所有宣稱都有使用者自己的事實檔案(facts.md)作為依據。技能提供一個 Node.js 腳本,能標記出超過 75 種 AI 慣用語、不當的破折號、佔位符、離平台聯絡資訊、以及誇大或未經證實的技能宣稱。支援 Claude Code 的全局或專案安裝,也可透過完整路徑在其他代理程式中使用。流程包含:尋找事實檔案、撰寫或審閱使用者草稿、執行 linter 修復錯誤、最後再由使用者自行送出。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atokim4/cover-letter-lint/tree/HEAD/skills/cover-letter-lint

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

自我推薦信檢查工具(Cover letter lint)

目標:一封 50-90 字的自我推薦信,讓忙碌的客戶能讀到最後並回覆,且每一項宣稱都必須有使用者自己的事實檔案作為背書。

檢查工具是本技能資料夾中的 scripts/lint-cover.mjs(需要 Node 20+,無其他依賴)。在 Claude Code 中(外掛安裝也適用),請使用完整路徑呼叫:node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs。其他代理程式可能不支援該環境變數,因此請改用實際資料夾位置,例如專案安裝用 node .claude/skills/cover-letter-lint/scripts/lint-cover.mjs,全域安裝則用 node ~/.claude/skills/cover-letter-lint/scripts/lint-cover.mjs。

1. 尋找事實檔案

在當前專案中尋找 facts.md、me/facts.md 或 .cover-lint.json 中 "facts" 路徑指向的檔案。

  • 找到:讀取它。所有宣稱只能來自此檔案。
  • 找不到:提議從本技能資料夾的 templates/facts.md 建立 facts.md,並請使用者填入資料(技能、角色、過往紀錄、證明連結、絕對不能說的事)。不要憑空編造任何內容。如果使用者拒絕建立,則在執行 linter 時不要加上 --facts 參數,並告知使用者宣稱未經檢查。

2. 撰寫(如果使用者已有草稿則跳過)

如果使用者貼了一份工作貼文,請將其儲存成檔案(例如 job.md)。然後以純文字句子(不要使用條列式或標題)撰寫:

  1. 以客戶的語氣打招呼,然後針對他們貼文中的一個具體細節(錯誤、技術棧、截止日期),說明可能的原因或你會如何處理。切勿重複貼文內容。
  2. 從事實檔案中找出一條真正相關的證明(類似的工作、一個角色、一個展示連結)。個人專案請標明是個人專案。如果沒有誠實的匹配項,則省略證明。
  3. 以一兩句話說明計畫,如果使用者給了你費率,則加上時數和價格。
  4. 一個問題,一個答案會改變範圍或價格的問題。
  5. 使用者名字自成一行。

模仿貼文的風格:三行隨意的貼文就回三行隨意的內容,對方用另一種語言就用同樣語言回覆。

3. 檢查與修正

node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs --facts facts.md --job job.md proposal.md

(- 代表從標準輸入讀取;--mode message 用於客戶回覆,此模式無字數範圍限制;--json 則輸出機器可讀的格式。) 修正所有錯誤,並重新執行直到 exit code 為 0。對於警告:除非有理由保留,否則全部修正,並說明理由。對於 unlisted-skill,可以移除該宣稱,或詢問使用者是否要將該技能加入事實檔案。未經使用者確認,絕不為讓宣稱通過而編輯事實檔案。

規則等級偵測項目
ai-phraseerror約 75 種模板用語:「I hope this finds you well」、「seamless」、「I'm excited to」、「the key is」…
not-x-but-yerror「This is not just X, but Y」這種對比句型
dasherror長破折號及用來代替長破折號的連字號
placeholdererror[Your Name]、{{name}}、<client>、TODO、lorem ipsum
off-platformerror電子郵件、電話號碼、「在 WhatsApp 上聯絡我」、平台外付款
unbacked-claimerror事實檔案中沒有的連結和「N 年經驗」
never-sayerror事實檔案中「Never say」底下所列的用語
word-counterror / warn在 cover 模式下,超過 90 字(error)、低於 50 字(warning)
unlisted-skillwarn信件中提到的事實檔案和工作貼文都沒有的框架或服務
questionwarn沒有問題,或超過一個問題
list, greeting, exclamation, emoji, long-sentence, i-startwarn條列、「Dear Sir」、「!!」、表情符號、超過 35 字的句子、太多以「I」開頭的句子

每個專案的自訂設定可放在 .cover-lint.json(所有鍵皆為選填): {"facts": "facts.md", "maxWords": 90, "minWords": 50, "extraPhrases": [], "allowPhrases": [], "disable": []}。

4. 移交給使用者

顯示信件內容以及檢查工具的最後一行輸出。說出你選擇的價格和問題,讓使用者可以修改。然後自己對照事實檔案再讀一遍:檢查工具負責檢查連結、年資和技術名稱,但並非檢查每個句子。由使用者自行送出,絕不要代替他們送出任何東西。

Individual skills in this repo

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

相關技能