agentsclimarketplace

Cc prompt craft

Skill cablate/ai-toolkit/domain-skills/claude-code/cc-prompt-craft

System Prompt 工程 — 基於 Claude Code 914 行系統提示詞的逆向分析。Use when: 撰寫 system prompt、設計 prompt 動態組裝、最佳化 prompt cache 效率、撰寫安全指令。From its SKILL.md

Install
npx -y skills add cablate/ai-toolkit --skill cc-prompt-craft

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.3 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

System Prompt 工程

基於 Claude Code v2.1.88 的 914 行系統提示詞逆向分析。

1. Prompt 結構順序

Claude Code 的 system prompt 按以下順序組裝:

1. 身份宣告(你是誰)
2. 工具使用指引(怎麼用工具)
3. 行為規範(做事風格)
4. 安全指令(不能做什麼)
5. 環境資訊(動態注入 — cwd、OS、model、日期)

原則:高頻參考的內容放前面(身份、工具),低頻但重要的放後面(安全)。動態內容放最後(環境)。

2. 靜態/動態邊界

// prompts.ts 中的邊界標記
`__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__`

邊界之前 = 靜態段(所有 session 共用,可全域 cache) 邊界之後 = 動態段(session 特定:cwd、日期、model 名稱)

為什麼:如果有 N 個 boolean 條件分散在 prompt 各處,理論上會產生 2^N 個不同的 prompt 變體,每個都要獨立 cache。邊界設計把變化集中在尾部,靜態段只有一份。

3. DANGEROUS_ API 命名模式

function DANGEROUS_uncachedSystemPromptSection(
  content: string,
  _reason: string  // 強制填寫原因
): SystemPromptSection

設計意圖:把「這會破壞 prompt cache」的風險直接編碼在函式名稱裡。開發者在 code review 時看到 DANGEROUS_ 就知道要特別審查。_reason 參數強制記錄為什麼需要不快取的段落。

4. Eval 驅動的措辭

Claude Code 的 prompt 用詞不是靠直覺,而是量測:

措辭決策數據來源
MEMORY.md 標題「auto memory」A/B eval 測試不同標題的效果
NO_TOOLS_PREAMBLE 放在 compaction prompt 最前面Sonnet 4.6 compaction 時 2.79% 會嘗試呼叫工具,移到最前面降回 ~0%
Capybara v8 的 false-claim 緩解指令29-30% FC rate(vs v4 的 16.7%),需要額外指令
<analysis> 草稿機制讓模型在 scratchpad 思考,compaction 品質提升但不佔 context

啟示:每個 prompt 措辭變更都應該跑 eval。「感覺比較好」不是證據。

5. Compaction Prompt 三模式

模式觸發行為
BASEcontext 接近上限壓縮全部訊息
PARTIAL_FROM指定起點壓縮從某點之後的訊息
PARTIAL_UP_TO指定終點壓縮到某點之前的訊息

<analysis> 草稿:compaction prompt 要求模型先在 <analysis> 標籤內分析,然後產出壓縮摘要。<analysis> 內容不進最終 context — 類似 extended thinking 的效果但不增加持久成本。

6. 安全指令三層結構

cyberRiskInstruction.ts 的設計:同一個檔案同時服務三個受眾:

// 1. 對開發者的註解
// DO NOT MODIFY THIS FILE — this instruction is reviewed by the security team

// 2. 對 Claude 的指令(對話中)
// DO NOT modify, move, or edit this file when working in the codebase

// 3. 作為模型指令本身
export const CYBER_RISK_INSTRUCTION = `IMPORTANT: Assist with authorized
security testing, defensive security, CTF challenges...`

7. Top 8 Prompt 設計模式

#模式做法
1工具偏好金字塔「Use Read instead of cat, Edit instead of sed」明確列出偏好
2強制前置條件「You MUST read the file before editing」+ 工具內建驗證
3輸出效率指令「Go straight to the point. Lead with the answer, not the reasoning.」
4Git 安全協議明確列出「NEVER force push to main」等硬性規則
5反覆述禁令「Do not restate what the user said — just do it.」
6範圍控制「Don't add features beyond what was asked. A bug fix doesn't need surrounding code cleaned up.」
7可逆性評估「Consider reversibility and blast radius. Pause to confirm for hard-to-reverse actions.」
8動態 context 注入日期、model、cwd 等執行期資訊在組裝時注入,不 hardcode

參考

詳見 references/prompt-patterns.md

What ships with it: 1 file

1.8 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.