自由接案提案審查工具 是做什麼的?
目標:讓用戶在無論哪個接案平台上,都能寫出一段客戶願意讀完並回覆的短提案,且每個宣稱都有用戶自己的事實檔案支持。
審查腳本位於此技能資料夾的 scripts/lint-cover.mjs(Node 20+,無依賴,無需網路)。它與本倉庫中 cover-letter-lint 技能的腳本相同,但隨此技能一同提供以便獨立安裝。在 Claude Code 中可透過完整路徑執行:node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs,在其他 AI 代理人中則使用技能資料夾路徑,例如:node .claude/skills/freelance-proposal-lint/scripts/lint-cover.mjs。
1. 先找事實檔案
尋找 facts.md、me/facts.md 或包含 "facts" 路徑的 .cover-lint.json。所有宣稱只能來自這些檔案。
如果找不到:向用戶提供此技能資料夾中的 templates/facts.md 範本,請用戶填寫(技能、角色、與個人資料完全相符的經歷記錄、證明連結、永不使用的詞語)。不要自行編造任何內容。如果用戶拒絕填寫,則在不加 --facts 參數的情況下執行審查,並告知用戶宣稱未經檢查。
2. 根據平台調整格式
若用戶未說明,先詢問是哪個接案平台。然後:
- Upwork:撰寫 50-90 字的求職信加上任何篩選問題的回答。直接依序回答每個篩選問題。
- Freelancer.com、PeoplePerHour、Guru:提案會並列比較,包含價格與交付時間。在第一行說明具體做法,並確保文字中的價格與天數與用戶在提案表單中輸入的數字一致。
- Fiverr 簡報或自訂報價:買家已選擇類別,因此以他們的確切交付項目開頭,接著說明報價包含的內容與修改次數。
- Contra 或直接詢問:視為第一則訊息,使用
--mode message進行審查。
模仿客戶的語氣:對方寫三行隨意句子,就用三行隨意句子回應;對方使用另一種語言,就用該語言回覆。
3. 撰寫
使用簡潔句子,無條列或標題:
- 以客戶風格的問候開頭,接著提及對方貼文中一個具體細節,以及可能的原因或你的處理方式。切勿重述貼文內容。
- 從事實檔案中選一條真正相關的證明。個人專案應如實稱為個人專案。若無合適證明,則省略證明部分。
- 用一到兩句說明計畫,如果用戶提供了費率,則包含時數與價格。
- 一個問題,其答案會影響範圍或價格。
- 用戶的名字獨佔一行。
4. 審查與修正
node ${CLAUDE_SKILL_DIR}/scripts/lint-cover.mjs --facts facts.md --job job.md bid.md
- 讀取標準輸入,--mode message 針對回覆模式調整字數範圍,--json 輸出機器可讀格式。修正每個錯誤並重新執行,直到腳本以代碼 0 退出。除非有充分理由,否則也修正警告,並說明原因。
導致提案失敗的項目(錯誤):模板用語(如「I hope this finds you well」、「seamless」、「I'm excited to」)、「not just X, but Y」類型的對比、破折號、[Your Name] 等佔位符、電子郵件、電話號碼或「message me on WhatsApp」(多數平台禁止在簽約前提供聯絡方式)、連結、事實檔案未支持的「N years」、以及「Never say」下列出的詞語。在封面模式(cover mode)下,字數不得超過 90 字。警告涵蓋:既不在事實檔案也不在貼文中的技術名詞、缺少或第二個提問、列表、「Dear Sir」、「!!」、表情符號以及過長的句子。每個專案的自訂調整可放在 .cover-lint.json 中:
{"facts": "facts.md", "maxWords": 90, "minWords": 50, "extraPhrases": [], "allowPhrases": [], "disable": []}。
未經用戶確認為真,切勿編輯事實檔案以使某個宣稱通過檢查。
5. 交給用戶
顯示提案、提案中提到的價格與交付時間,以及審查腳本的最後一行。然後自己再對照事實檔案讀一遍:審查腳本檢查連結、年資和技術名稱,但並非每個句子。由用戶自行發送提案;永遠不要替他們提交任何內容。