Reorganize workspace and archive skill artifacts
This commit is contained in:
@@ -0,0 +1,498 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Waza — 把工程师的习惯变成 Claude 可执行的技能</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans SC", sans-serif;
|
||||
background: #f8f9fb;
|
||||
color: #1d1d1f;
|
||||
line-height: 1.8;
|
||||
padding: 2rem;
|
||||
}
|
||||
.container { max-width: 860px; margin: 0 auto; }
|
||||
|
||||
/* Header */
|
||||
.header {
|
||||
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
|
||||
color: #fff;
|
||||
padding: 3rem 2.5rem;
|
||||
border-radius: 16px;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.header h1 { font-size: 2rem; margin-bottom: 0.5rem; }
|
||||
.header .meta { font-size: 0.85rem; opacity: 0.7; }
|
||||
.header .meta span { margin-right: 1.5rem; }
|
||||
|
||||
/* Sections */
|
||||
h2 {
|
||||
font-size: 1.4rem;
|
||||
margin: 2.5rem 0 1rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 2px solid #e5e7eb;
|
||||
color: #1a1a2e;
|
||||
}
|
||||
h3 { font-size: 1.15rem; margin: 1.5rem 0 0.5rem; color: #333; }
|
||||
p, li { margin-bottom: 0.8rem; }
|
||||
ul, ol { padding-left: 1.5rem; }
|
||||
|
||||
/* TL;DR */
|
||||
.tldr {
|
||||
background: linear-gradient(135deg, #eef2ff, #e0e7ff);
|
||||
border-left: 4px solid #4f46e5;
|
||||
padding: 1.2rem 1.5rem;
|
||||
border-radius: 0 12px 12px 0;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
.tldr blockquote {
|
||||
font-style: italic;
|
||||
color: #3730a3;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
/* Mnemonic Card */
|
||||
.mnemonic-card {
|
||||
background: #fffbeb;
|
||||
border: 2px dashed #f59e0b;
|
||||
border-radius: 12px;
|
||||
padding: 1.2rem 1.5rem;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
.mnemonic-card strong { color: #92400e; font-size: 1.1rem; }
|
||||
.mnemonic-card table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 0.8rem;
|
||||
}
|
||||
.mnemonic-card th, .mnemonic-card td {
|
||||
text-align: left;
|
||||
padding: 0.5rem 0.8rem;
|
||||
border-bottom: 1px solid #fef3c7;
|
||||
}
|
||||
.mnemonic-card th { background: #fef3c7; color: #92400e; }
|
||||
|
||||
/* Fission Section */
|
||||
.fission-section {
|
||||
background: #fef2f2;
|
||||
border-left: 4px solid #dc2626;
|
||||
padding: 1.5rem;
|
||||
border-radius: 0 12px 12px 0;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
.fission-section h3 { color: #991b1b; }
|
||||
.fission-section blockquote {
|
||||
font-style: italic;
|
||||
color: #7f1d1d;
|
||||
border-left: 3px solid #fca5a5;
|
||||
padding-left: 1rem;
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre {
|
||||
background: #1e1e2e;
|
||||
color: #cdd6f4;
|
||||
padding: 1.2rem 1.5rem;
|
||||
border-radius: 10px;
|
||||
overflow-x: auto;
|
||||
margin: 1rem 0;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
code { font-family: "JetBrains Mono", "Fira Code", monospace; }
|
||||
:not(pre) > code {
|
||||
background: #e5e7eb;
|
||||
padding: 0.15rem 0.4rem;
|
||||
border-radius: 4px;
|
||||
font-size: 0.85em;
|
||||
color: #7c3aed;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
th { background: #f3f4f6; font-weight: 600; }
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 0.6rem 0.8rem;
|
||||
border-bottom: 1px solid #e5e7eb;
|
||||
}
|
||||
|
||||
/* ASCII diagram */
|
||||
.ascii-diagram {
|
||||
background: #1e1e2e;
|
||||
color: #a5b4fc;
|
||||
padding: 1.5rem;
|
||||
border-radius: 10px;
|
||||
font-family: "JetBrains Mono", monospace;
|
||||
font-size: 0.8rem;
|
||||
white-space: pre;
|
||||
overflow-x: auto;
|
||||
line-height: 1.5;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
/* Mermaid container */
|
||||
.mermaid-container {
|
||||
background: #fff;
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 12px;
|
||||
padding: 1.5rem;
|
||||
margin: 1rem 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Details / FAQ */
|
||||
details {
|
||||
background: #fff;
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 10px;
|
||||
padding: 0.8rem 1.2rem;
|
||||
margin: 0.6rem 0;
|
||||
}
|
||||
details[open] { border-color: #4f46e5; }
|
||||
details summary { cursor: pointer; font-weight: 600; }
|
||||
details p { margin-top: 0.8rem; color: #555; }
|
||||
details pre { margin-top: 0.5rem; }
|
||||
|
||||
/* Search bar */
|
||||
.search-bar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
background: #f8f9fb;
|
||||
padding: 0.8rem 0;
|
||||
}
|
||||
.search-bar input {
|
||||
width: 100%;
|
||||
padding: 0.8rem 1.2rem;
|
||||
border: 2px solid #e5e7eb;
|
||||
border-radius: 10px;
|
||||
font-size: 1rem;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.search-bar input:focus { border-color: #4f46e5; }
|
||||
|
||||
/* Hidden class for search filter */
|
||||
.hidden { display: none !important; }
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
margin-top: 3rem;
|
||||
padding-top: 1.5rem;
|
||||
border-top: 1px solid #e5e7eb;
|
||||
font-size: 0.85rem;
|
||||
color: #888;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Self-test */
|
||||
.self-test {
|
||||
background: #f0fdf4;
|
||||
border: 1px solid #bbf7d0;
|
||||
border-radius: 12px;
|
||||
padding: 1.2rem 1.5rem;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
.self-test ol li { margin-bottom: 0.6rem; }
|
||||
|
||||
@media (max-width: 600px) {
|
||||
body { padding: 1rem; }
|
||||
.header { padding: 2rem 1.5rem; }
|
||||
.header h1 { font-size: 1.5rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container" id="content-area">
|
||||
|
||||
<!-- Search Bar -->
|
||||
<div class="search-bar">
|
||||
<input type="text" id="search-input" placeholder="搜索当前页面内容..." />
|
||||
</div>
|
||||
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<h1>Waza:把工程习惯变成 Claude 可执行的技能</h1>
|
||||
<div class="meta">
|
||||
<span>作者:叫我小杨同学的小码酱</span>
|
||||
<span>日期:2026-04-17</span>
|
||||
<span>标签:Claude Code / Skills / 工程习惯</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模块 0: TL;DR -->
|
||||
<h2>核心摘要</h2>
|
||||
<div class="tldr">
|
||||
<p><strong>一句话核心</strong>:Waza(技)把优秀工程师的思维方式打包成 8 个 Claude Code 技能 —— 不是替你写代码更快,而是逼你想清楚再动手。</p>
|
||||
<blockquote>认知挂钩:像道场里的型(Kata)。每个技能是一个固定套路,练到变成肌肉记忆。</blockquote>
|
||||
<blockquote>真理锚点:<em>"AI makes you faster. It doesn't make you think more clearly."</em></blockquote>
|
||||
</div>
|
||||
|
||||
<!-- 模块 1: 概念破冰 -->
|
||||
<h2>概念破冰</h2>
|
||||
|
||||
<div class="mnemonic-card">
|
||||
<strong>八字口诀:思设审猎,写学读健</strong>
|
||||
<table>
|
||||
<tr><th>字</th><th>技能</th><th>阶段</th></tr>
|
||||
<tr><td>思</td><td><code>/think</code></td><td>动手前:挑战问题、压力测试设计</td></tr>
|
||||
<tr><td>设</td><td><code>/design</code></td><td>做界面:产出有辨识度的 UI</td></tr>
|
||||
<tr><td>审</td><td><code>/check</code></td><td>合并前:自审 diff、标记危险操作</td></tr>
|
||||
<tr><td>猎</td><td><code>/hunt</code></td><td>出 bug 时:系统调试、确认根因再修</td></tr>
|
||||
<tr><td>写</td><td><code>/write</code></td><td>写文档:中英双语自然表达</td></tr>
|
||||
<tr><td>学</td><td><code>/learn</code></td><td>新领域:六阶段研究 → 输出 → 自审 → 发布</td></tr>
|
||||
<tr><td>读</td><td><code>/read</code></td><td>读资料:URL/PDF 转干净 Markdown</td></tr>
|
||||
<tr><td>健</td><td><code>/health</code></td><td>定期体检:CLAUDE.md、rules、skills、hooks、MCP</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>架构概览</h3>
|
||||
<div class="ascii-diagram">
|
||||
+-----------------------------------------------+
|
||||
| Waza 技能矩阵 |
|
||||
+-----------------------------------------------+
|
||||
| |
|
||||
| /think → /design → /check /hunt |
|
||||
| 思考 设计 审查 调试 |
|
||||
| ↑ ↑ |
|
||||
| └────── /write ────────────┘ |
|
||||
| 写作 |
|
||||
| |
|
||||
| /learn /read /health |
|
||||
| 学习 阅读 体检 |
|
||||
| 输入 ──────→ 转化 ──────→ 输出 |
|
||||
+-----------------------------------------------+</div>
|
||||
|
||||
<!-- 模块 2: 深度解析 -->
|
||||
<h2>深度解析</h2>
|
||||
|
||||
<h3>哲学:为什么是"习惯"而不是"规则"?</h3>
|
||||
<p>Waza 的名字来自日语"技"(わざ),武道中意为"练到成本能的招式"。这与市面上大多数 AI 技能包有根本区别。</p>
|
||||
|
||||
<table>
|
||||
<tr><th>维度</th><th>规则驱动(Superpowers/gstack)</th><th>习惯驱动(Waza)</th></tr>
|
||||
<tr><td>指令风格</td><td>大量 rules,步步规定</td><td>设目标 + 约束,然后放手</td></tr>
|
||||
<tr><td>模型上限</td><td>指令写多少,模型做多少</td><td>约束关键边界,其余自由发挥</td></tr>
|
||||
<tr><td>模型进化</td><td>模型变强后,旧规则变束缚</td><td>模型变强,收益复利增长</td></tr>
|
||||
<tr><td>学习曲线</td><td>陡峭,配置多</td><td>扁平,一个技能一个触发场景</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>工程生命周期</h3>
|
||||
|
||||
<div class="mermaid-container">
|
||||
<div class="mermaid">
|
||||
flowchart TD
|
||||
A["开始新任务"] --> B["/read: 读取相关文档"]
|
||||
B --> C["/think: 挑战问题,验证架构"]
|
||||
C --> D{"前端界面?"}
|
||||
D -->|"是"| E["/design: 产出有审美的 UI"]
|
||||
D -->|"否"| F["编码实现"]
|
||||
E --> F
|
||||
F --> G{"遇到 bug?"}
|
||||
G -->|"是"| H["/hunt: 系统调试"]
|
||||
G -->|"否"| I["/check: 自审 diff"]
|
||||
H --> I
|
||||
I --> J{"写作/文档?"}
|
||||
J -->|"是"| K["/write: 润色中英双语"]
|
||||
J -->|"否"| L["完成"]
|
||||
K --> L
|
||||
M["定期"] --> N["/health: 体检环境"]
|
||||
O["新领域"] --> P["/learn: 六阶段研究"]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>逐技能拆解</h3>
|
||||
|
||||
<p><strong><code>/think</code></strong> —— 先想清楚再动手。挑战问题本身。需求是真的吗?有没有更简单的解法?防止"用正确的方式做错误的事"。</p>
|
||||
|
||||
<p><strong><code>/design</code></strong> —— 界面要有辨识度。产出有明确审美方向的 UI,不是千篇一律的默认样式。</p>
|
||||
|
||||
<p><strong><code>/check</code></strong> —— 合并前的最后一道关。审查 diff,自动修复安全的问题,标记危险命令,用证据说话。支持并行多专家审查。</p>
|
||||
|
||||
<p><strong><code>/hunt</code></strong> —— 系统调试,不靠猜。先复现,再定位,确认根因后才修。</p>
|
||||
|
||||
<p><strong><code>/write</code></strong> —— 像人一样写文章。重写中英双语,去掉生硬公式化表达。</p>
|
||||
|
||||
<p><strong><code>/learn</code></strong> —— 六阶段研究法。收集 → 消化 → 大纲 → 填充 → 精炼 → 自审 → 发布。学习靠产出驱动。</p>
|
||||
|
||||
<p><strong><code>/read</code></strong> —— 把一切变成干净 Markdown。特殊处理 GitHub、PDF、微信、飞书。</p>
|
||||
|
||||
<p><strong><code>/health</code></strong> —— Claude 环境的体检报告。检查 CLAUDE.md、rules、skills、hooks、MCP,按严重程度分级。</p>
|
||||
|
||||
<h3>项目起源</h3>
|
||||
<p>Waza 来自真实项目的失败积累:找错代码路径来回 4 轮才定位、发布 release 前忘了上传 artifacts、服务器重启 8 次都没看报错信息。<strong>30 天、300+ 次会话、7 个项目、500 小时</strong> —— 每个 "gotcha" 对应一次真实失败。</p>
|
||||
|
||||
<!-- 模块 3: 深度裂变 -->
|
||||
<div class="fission-section">
|
||||
<h2>深度裂变</h2>
|
||||
|
||||
<h3>矛盾一:"不完整是设计出来的"</h3>
|
||||
<blockquote>"Waza 只有 8 个技能。不是做不到更多,而是刻意不做完。"</blockquote>
|
||||
<p>市面上的 AI 技能包动辄几十个技能。Waza 反其道:八个习惯,每个做一件事,有明确触发条件,然后让路。对 AI 工具来说,"够用"比"全能"更有价值。</p>
|
||||
|
||||
<h3>矛盾二:"每条规则都是天花板"</h3>
|
||||
<blockquote>"作者写的每一条规则,都成了模型能力的上限。"</blockquote>
|
||||
<p>传统做法是"把所有规则写进 prompt",隐含假设是作者比模型聪明。Waza 的做法是"设目标 + 约束,然后放手"——等模型变强了,自由度带来的收益呈复利。</p>
|
||||
|
||||
<h3>矛盾三:"英文推理更强"的隐性红利</h3>
|
||||
<blockquote>"大多数 AI 模型的英文训练量远超其他语言。"</blockquote>
|
||||
<p>母语写 prompt → 隐形翻译层 → 推理质量打折。切换英文后,回答更精准,顺便练英语。Waza 提供 <code>english.md</code> 规则让 Claude 在英文交互时即时纠错。</p>
|
||||
</div>
|
||||
|
||||
<!-- 模块 4: 实战指南 -->
|
||||
<h2>实战指南</h2>
|
||||
|
||||
<h3>安装</h3>
|
||||
<pre><code># Claude Code
|
||||
npx skills add tw93/Waza -a claude-code -g -y
|
||||
|
||||
# Codex
|
||||
npx skills add tw93/Waza -a codex -g -y
|
||||
|
||||
# Statusline
|
||||
curl -sL https://raw.githubusercontent.com/tw93/Waza/main/scripts/setup-statusline.sh | bash
|
||||
|
||||
# 英文教练
|
||||
mkdir -p ~/.claude/rules && curl -fsSL https://raw.githubusercontent.com/tw93/Waza/main/rules/english.md -o ~/.claude/rules/english.md</code></pre>
|
||||
|
||||
<h3>避坑指南</h3>
|
||||
<table>
|
||||
<tr><th>反模式</th><th>后果</th><th>正确做法</th></tr>
|
||||
<tr><td>跳过 <code>/think</code> 直接写</td><td>做了错误的事,返工成本高</td><td>再急也先想 5 分钟</td></tr>
|
||||
<tr><td><code>/hunt</code> 时直接猜修复</td><td>埋新雷</td><td>先复现,确认根因</td></tr>
|
||||
<tr><td>不看 <code>/check</code> 结果就合并</td><td>危险命令进主干</td><td>审查完再合</td></tr>
|
||||
<tr><td>装了技能从不调用</td><td>形同虚设</td><td>养成肌肉记忆</td></tr>
|
||||
<tr><td>忽略 <code>/health</code></td><td>配置逐渐腐烂</td><td>每周跑一次</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>ROI 分析</h3>
|
||||
<table>
|
||||
<tr><th>投入</th><th>回报</th></tr>
|
||||
<tr><td>安装 5 分钟</td><td>每个任务避免至少 1 次返工</td></tr>
|
||||
<tr><td><code>/think</code> 多花 5 分钟</td><td>可能省下 2 小时重写</td></tr>
|
||||
<tr><td><code>/check</code> 多花 2 分钟</td><td>避免线上事故</td></tr>
|
||||
<tr><td><code>/learn</code> 多花 30 分钟</td><td>产出 > 消费 10 倍效率</td></tr>
|
||||
</table>
|
||||
|
||||
<!-- 模块 5: 温故知新 -->
|
||||
<h2>温故知新</h2>
|
||||
|
||||
<h3>FAQ</h3>
|
||||
|
||||
<details>
|
||||
<summary><b>Q1: Waza 和其他技能包有什么区别?</b></summary>
|
||||
<p>Superpowers 和 gstack 功能更全但更重。Waza 只做 8 个最核心的习惯。哲学不同:规则驱动 vs 习惯驱动。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q2: 只能在 Claude Code 里用吗?</b></summary>
|
||||
<p>不。<code>/health</code> 是 Claude Code 独有的。其余 7 个技能也支持 Codex。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q3: 可以自己改技能吗?</b></summary>
|
||||
<p>可以。每个技能是一个文件夹,MIT 协议。包含参考文档、辅助脚本、gotchas。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q4: 适合什么水平的开发者?</b></summary>
|
||||
<p>有工程经验但想更系统化的开发者。已有习惯 → 帮你自动化;还没养成 → 逼你养成。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q5: "Waza" 怎么念?</b></summary>
|
||||
<p>日语「技」(わざ / waza),发音类似 "哇扎"。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q6: 作者 tw93 是谁?</b></summary>
|
||||
<p>活跃在 GitHub 和 Twitter 的独立开发者,MiaoYan 等项目的作者。养了两只猫:汤圆和可乐。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q7: 最新版本?</b></summary>
|
||||
<p>截至 2026-04-17,最新版本 V3.10.0,252 commits,3.3k+ stars,202 forks。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q8: 怎么卸载?</b></summary>
|
||||
<pre><code>npx skills remove tw93/Waza -g
|
||||
rm -f ~/.claude/statusline.sh
|
||||
rm -f ~/.claude/rules/english.md</code></pre>
|
||||
</details>
|
||||
|
||||
<div class="self-test">
|
||||
<h3>自测题</h3>
|
||||
<ol>
|
||||
<li>Waza 的核心哲学是什么?为什么"不完整是设计出来的"?</li>
|
||||
<li>8 个技能分别是什么?各自在什么场景触发?</li>
|
||||
<li>跳过 <code>/think</code> 直接编码,最大风险是什么?举例说明。</li>
|
||||
<li>描述从接到需求到合并代码的完整 Waza 工作流。</li>
|
||||
<li>Waza 只有 8 个技能。你觉得缺了什么?为什么作者可能故意不做?</li>
|
||||
<li>如何在现有工作流中引入 Waza 技能?哪些最容易养成习惯?</li>
|
||||
<li>如果你要给 Waza 贡献第 9 个技能,会是什么?写 SKILL.md 大纲。</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h3>参考资源</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/tw93/Waza">tw93/Waza GitHub 仓库</a></li>
|
||||
<li><a href="https://tw93.fun/en/2026-03-12/claude.html">作者博客:Claude Code 六层框架</a></li>
|
||||
<li><a href="https://x.com/HiTw93/status/2041312649510822103">Waza 演示推文</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="footer">
|
||||
<p>叫我小杨同学的小码酱 | 2026-04-17 | 基于 Waza 项目分析生成</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Mermaid JS -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
|
||||
<script>
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: 'neutral',
|
||||
securityLevel: 'loose',
|
||||
flowchart: { useMaxWidth: true, htmlLabels: true }
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- Search Filter Script -->
|
||||
<script>
|
||||
window.onload = function() {
|
||||
const input = document.getElementById('search-input');
|
||||
if(!input) return;
|
||||
input.addEventListener('input', (e) => {
|
||||
const term = e.target.value.toLowerCase().trim();
|
||||
const contentArea = document.getElementById('content-area');
|
||||
const blocks = contentArea.querySelectorAll('p, li, blockquote, .fission-section, .mnemonic-card, details, .mermaid, .ascii-diagram, .tldr, .self-test');
|
||||
|
||||
if(term.length === 0) {
|
||||
blocks.forEach(el => el.classList.remove('hidden'));
|
||||
document.querySelectorAll('h1, h2, h3, th, td').forEach(el => el.classList.remove('hidden'));
|
||||
return;
|
||||
}
|
||||
|
||||
blocks.forEach(el => el.classList.add('hidden'));
|
||||
document.querySelectorAll('h1, h2, h3, th, td').forEach(el => el.classList.add('hidden'));
|
||||
|
||||
blocks.forEach(el => {
|
||||
if(el.innerText.toLowerCase().includes(term)) {
|
||||
el.classList.remove('hidden');
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,339 @@
|
||||
---
|
||||
title: "Waza — 把工程师的习惯变成 Claude 可执行的技能"
|
||||
author: "叫我小杨同学的小码酱"
|
||||
tags: ["Claude Code", "Skills", "AI 辅助开发", "工程习惯", "tw93"]
|
||||
date: "2026-04-17"
|
||||
---
|
||||
|
||||
# Waza:你知道的工程习惯,变成 Claude 能跑的技能
|
||||
|
||||
> **一句话核心**:Waza(技)把优秀工程师的思维方式打包成 8 个 Claude Code 技能 —— 不是替你写代码更快,而是逼你想清楚再动手。
|
||||
>
|
||||
> **认知挂钩**:像道场里的型(Kata)。每个技能是一个固定套路,练到变成肌肉记忆。
|
||||
>
|
||||
> **真理锚点**:*"AI makes you faster. It doesn't make you think more clearly."*
|
||||
|
||||
---
|
||||
|
||||
## 模块 0:核心摘要 (TL;DR)
|
||||
|
||||
Waza 是开发者 **tw93** 开源的 Claude Code 技能集(3.3k+ Stars),将 8 个核心工程习惯封装为 `/` 斜杠命令。它不追求"全能",而是聚焦**真正重要的习惯**:先思考再动手、写完自己审、bug 系统排查、界面有审美、文章写得顺、新领域靠输出学、文档当一手资料读、开发环境定期体检。
|
||||
|
||||
**生活类比**:不是给你一把更快的锤子,而是教你先看图纸、再选工具、最后才敲。
|
||||
|
||||
---
|
||||
|
||||
## 模块 1:概念破冰
|
||||
|
||||
### 巧记卡片
|
||||
|
||||
<div class="mnemonic-card">
|
||||
|
||||
**八字口诀**:**思设审猎,写学读健**
|
||||
|
||||
| 字 | 技能 | 阶段 |
|
||||
|---|---|---|
|
||||
| **思** | `/think` | 动手前:挑战问题、压力测试设计 |
|
||||
| **设** | `/design` | 做界面:产出有辨识度的 UI |
|
||||
| **审** | `/check` | 合并前:自审 diff、标记危险操作 |
|
||||
| **猎** | `/hunt` | 出 bug 时:系统调试、确认根因再修 |
|
||||
| **写** | `/write` | 写文档:中英双语自然表达 |
|
||||
| **学** | `/learn` | 新领域:六阶段研究 → 输出 → 自审 → 发布 |
|
||||
| **读** | `/read` | 读资料:URL/PDF 转干净 Markdown |
|
||||
| **健** | `/health` | 定期体检:CLAUDE.md、rules、skills、hooks、MCP |
|
||||
|
||||
</div>
|
||||
|
||||
### 故事引入
|
||||
|
||||
想象两个工程师。
|
||||
|
||||
A 接到需求直接写代码,写完直接提交。遇到 bug 就猜,试十个地方碰巧修好。文档写得像机翻。
|
||||
|
||||
B 接到需求先问:这个问题真的存在吗?有没有更简单的解法?写完代码自己过一遍 diff。遇到 bug 不猜,先复现、定位、确认根因再修。文档写得连外行都能懂。
|
||||
|
||||
AI 让 A 写得更快了,但还是 A。AI 让 B 变成了超级 B。
|
||||
|
||||
Waza 就是给 B 准备的那套工具。
|
||||
|
||||
### 架构概览
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ Waza 技能矩阵 │
|
||||
├─────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │
|
||||
│ │/think │→ │/design│→ │/check │ │/hunt │ │
|
||||
│ │ 思考 │ │ 设计 │ │ 审查 │ │ 调试 │ │
|
||||
│ └───────┘ └───────┘ └───────┘ └───────┘ │
|
||||
│ ↑ ↑ │
|
||||
│ │ ┌───────┐ │ │
|
||||
│ └────────│/write │───────────┘ │
|
||||
│ │ 写作 │ │
|
||||
│ └───────┘ │
|
||||
│ │
|
||||
│ ┌───────┐ ┌───────┐ ┌───────┐ │
|
||||
│ │/learn │ │ /read │ │/health│ │
|
||||
│ │ 学习 │ │ 阅读 │ │ 体检 │ │
|
||||
│ └───────┘ └───────┘ └───────┘ │
|
||||
│ 输入 ──────→ 转化 ──────→ 输出 │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 模块 2:深度解析
|
||||
|
||||
### 哲学:为什么是"习惯"而不是"规则"?
|
||||
|
||||
Waza 的名字来自日语"技"(わざ),武道中意为"练到成本能的招式"。这与市面上大多数 AI 技能包有根本区别:
|
||||
|
||||
**规则驱动 vs 习惯驱动**
|
||||
|
||||
| 维度 | 规则驱动(Superpowers/gstack 类) | 习惯驱动(Waza) |
|
||||
|---|---|---|
|
||||
| 指令风格 | 大量 detailed rules,步步规定 | 设目标 + 约束,然后放手 |
|
||||
| 模型上限 | 指令写多少,模型做多少——指令成了天花板 | 约束关键边界,其余让模型自由发挥 |
|
||||
| 模型进化 | 模型变强后,旧规则可能变成束缚 | 模型变强,自由度带来的收益呈复利增长 |
|
||||
| 学习曲线 | 陡峭,配置多 | 扁平,每个技能一个触发场景 |
|
||||
|
||||
**核心洞察**:作者写下的每一条规则都成了模型能力的天花板。Waza 反其道而行——每个技能设明确目标,退后一步让模型发挥。
|
||||
|
||||
### 8 个技能的工程生命周期
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["开始新任务"] --> B["/read: 读取相关文档、RFC、PR"]
|
||||
B --> C["/think: 挑战问题本身,验证架构"]
|
||||
C --> D{"前端界面?"}
|
||||
D -->|"是"| E["/design: 产出有审美的 UI"]
|
||||
D -->|"否"| F["编码实现"]
|
||||
E --> F
|
||||
F --> G{"遇到 bug?"}
|
||||
G -->|"是"| H["/hunt: 系统调试,确认根因"]
|
||||
G -->|"否"| I["/check: 自审 diff"]
|
||||
H --> I
|
||||
I --> J{"写作/文档?"}
|
||||
J -->|"是"| K["/write: 润色中英双语"]
|
||||
J -->|"否"| L["完成"]
|
||||
K --> L
|
||||
M["定期"] --> N["/health: 体检 Claude 环境"]
|
||||
O["遇到新领域"] --> P["/learn: 六阶段研究"]
|
||||
```
|
||||
|
||||
### 逐技能拆解
|
||||
|
||||
#### 1. `/think` — 先想清楚,再动手
|
||||
|
||||
**触发**:开始任何新任务之前。
|
||||
**做什么**:挑战问题本身。需求是真的吗?有没有更简单的解法?架构有没有隐患?
|
||||
**核心价值**:防止"用正确的方式做错误的事"——这是工程师最常见的浪费。
|
||||
|
||||
#### 2. `/design` — 界面要有辨识度
|
||||
|
||||
**触发**:构建前端界面时。
|
||||
**做什么**:产出有明确审美方向的 UI,不是千篇一律的默认样式。
|
||||
**核心价值**:AI 默认生成"能用但丑"的界面。这个技能逼 Claude 做出有设计感的东西。
|
||||
|
||||
#### 3. `/check` — 合并前的最后一道关
|
||||
|
||||
**触发**:完成任务后、合并代码前。
|
||||
**做什么**:审查 diff,自动修复安全的问题,标记危险命令,用证据说话。
|
||||
**核心价值**:像老工程师坐在你旁边 review——但比你主动。支持并行多专家审查(宿主环境支持时)。
|
||||
|
||||
#### 4. `/hunt` — 系统调试,不靠猜
|
||||
|
||||
**触发**:任何 bug 或异常行为。
|
||||
**做什么**:先复现,再定位,确认根因后才修。
|
||||
**核心价值**:工程师最容易犯的错——看到 bug 就猜。猜 10 次碰巧修了 1 次,剩下 9 次埋了新雷。
|
||||
|
||||
#### 5. `/write` — 像人一样写文章
|
||||
|
||||
**触发**:撰写或编辑文档。
|
||||
**做什么**:重写中英双语,去掉生硬公式化表达。
|
||||
**核心价值**:AI 生成的文档读起来像翻译腔。这个技能让文字有"人味"。
|
||||
|
||||
#### 6. `/learn` — 六阶段研究法
|
||||
|
||||
**触发**:深入不熟悉的领域。
|
||||
**流程**:收集 → 消化 → 大纲 → 填充 → 精炼 → 自审 → 发布。
|
||||
**核心价值**:学习新领域靠产出驱动,而不是消费内容。先写再改再发。
|
||||
|
||||
#### 7. `/read` — 把一切变成干净 Markdown
|
||||
|
||||
**触发**:任何 URL 或 PDF。
|
||||
**做什么**:抓取内容转为干净 Markdown,特殊处理 GitHub、PDF、微信、飞书。
|
||||
**核心价值**:省去手动复制粘贴和格式清理的时间。
|
||||
|
||||
#### 8. `/health` — Claude 环境的体检报告
|
||||
|
||||
**触发**:审计 Claude Code 设置时。
|
||||
**检查项**:CLAUDE.md、rules、skills、hooks、MCP、行为表现。
|
||||
**核心价值**:按严重程度分级标记问题,防止配置腐烂。基于作者的[六层框架](https://tw93.fun/en/2026-03-12/claude.html)。
|
||||
|
||||
### 项目起源与数据
|
||||
|
||||
Waza 不是凭空设计的。它来自真实项目的失败积累:
|
||||
- 找错代码路径,来回 4 轮才定位
|
||||
- 发布 release 前忘了上传 artifacts
|
||||
- 服务器重启 8 次都没看报错信息
|
||||
|
||||
**30 天、300+ 次会话、7 个项目、500 小时** —— 每个 "gotcha" 都对应一次真实失败。
|
||||
|
||||
---
|
||||
|
||||
## 模块 3:深度裂变
|
||||
|
||||
<div class="fission-section">
|
||||
|
||||
### 矛盾分析 & 常识颠覆
|
||||
|
||||
#### 1. "不完整是设计出来的"
|
||||
|
||||
> Waza 只有 8 个技能。不是做不到更多,而是**刻意不做完**。
|
||||
|
||||
市面上的 AI 技能包动辄几十个技能,每个覆盖一个小场景。Waza 反其道:**八个习惯,每个做一件事,有明确触发条件,然后让路**。
|
||||
|
||||
**核爆级结论**:对 AI 工具来说,"够用"比"全能"更有价值。因为每个技能都是独立可调用的,组合起来覆盖工作流全链路,但每个单独调用时负担极小。
|
||||
|
||||
#### 2. "每条规则都是天花板"
|
||||
|
||||
> 作者写的每一条规则,都成了模型能力的上限。
|
||||
|
||||
这是 Waza 最反直觉的设计哲学。传统做法是"把所有规则写进 prompt",但这隐含一个假设:作者比模型聪明。Waza 的做法是"设目标 + 约束,然后放手"——等模型变强了,自由度带来的收益会呈复利。
|
||||
|
||||
**搜索内化**:在 2026 年的 AI 辅助开发社区中,"less prompt engineering, more outcome-driven constraints" 正成为新共识。Waza 是这一理念的极端实践者。
|
||||
|
||||
#### 3. "英文推理更强"的隐性红利
|
||||
|
||||
> 项目专门提供了 English Coaching 规则,建议用英文与 AI 交互。
|
||||
|
||||
理由很朴素:大多数 AI 模型的英文训练量远超其他语言。母语写 prompt → 隐形翻译层 → 推理质量打折。切换英文后,回答更精准,顺便练英语。
|
||||
|
||||
**争议点**:这对非英语母语用户有门槛。Waza 的做法是**不强求**,但提供工具(`english.md` 规则)让 Claude 在英文交互时即时纠错。
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 模块 4:实战指南
|
||||
|
||||
### 如何开始
|
||||
|
||||
```bash
|
||||
# 一步安装所有技能(Claude Code)
|
||||
npx skills add tw93/Waza -a claude-code -g -y
|
||||
|
||||
# 一步安装所有技能(Codex)
|
||||
npx skills add tw93/Waza -a codex -g -y
|
||||
|
||||
# 可选:安装 statusline 显示上下文用量
|
||||
curl -sL https://raw.githubusercontent.com/tw93/Waza/main/scripts/setup-statusline.sh | bash
|
||||
|
||||
# 可选:安装英文教练规则
|
||||
mkdir -p ~/.claude/rules && curl -fsSL https://raw.githubusercontent.com/tw93/Waza/main/rules/english.md -o ~/.claude/rules/english.md
|
||||
```
|
||||
|
||||
### 推荐工作流
|
||||
|
||||
```
|
||||
需求来了 → /think 先挑战问题
|
||||
→ /read 读取相关文档
|
||||
→ 编码(前端先 /design)
|
||||
→ 遇到 bug → /hunt
|
||||
→ 写完 → /check 自审
|
||||
→ 写文档 → /write 润色
|
||||
→ 新领域 → /learn 研究
|
||||
→ 定期 → /health 体检
|
||||
```
|
||||
|
||||
### 避坑指南
|
||||
|
||||
| 反模式 | 后果 | 正确做法 |
|
||||
|---|---|---|
|
||||
| 跳过 `/think` 直接写 | 做了错误的事,返工成本高 | 再急也先想 5 分钟 |
|
||||
| `/hunt` 时直接猜修复 | 埋新雷 | 先复现,确认根因 |
|
||||
| 不看 `/check` 结果就合并 | 危险命令进主干 | 审查完再合 |
|
||||
| 装了技能从不调用 | 形同虚设 | 养成肌肉记忆,每次任务触发对应技能 |
|
||||
| 忽略 `/health` | 配置逐渐腐烂 | 每周跑一次 |
|
||||
|
||||
### ROI 分析
|
||||
|
||||
| 投入 | 回报 |
|
||||
|---|---|
|
||||
| 安装 5 分钟 | 每个任务避免至少 1 次返工 |
|
||||
| `/think` 多花 5 分钟 | 可能省下 2 小时重写 |
|
||||
| `/check` 多花 2 分钟 | 避免线上事故 |
|
||||
| `/learn` 多花 30 分钟 | 产出 > 消费 10 倍效率 |
|
||||
|
||||
---
|
||||
|
||||
## 模块 5:温故知新
|
||||
|
||||
### FAQ
|
||||
|
||||
<details>
|
||||
<summary><b>Q1: Waza 和其他 Claude Code 技能包(如 Superpowers、gstack)有什么区别?</b></summary>
|
||||
<p>Superpowers 和 gstack 功能更全但更重——技能多、配置多、学习曲线陡。Waza 只做 8 个最核心的习惯,每个一件事,触发条件清晰。哲学不同:规则驱动 vs 习惯驱动。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q2: 只能在 Claude Code 里用吗?</b></summary>
|
||||
<p>不。<code>/health</code> 是 Claude Code 独有的(需要检查环境)。其余 7 个技能使用宿主环境的原生 question/search/fetch/agent 机制,也支持 Codex。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q3: 这些技能是固定死的吗?可以自己改吗?</b></summary>
|
||||
<p>每个技能是一个文件夹(不只是 Markdown 文件),包含参考文档、辅助脚本、gotchas。你可以 fork 后按需修改。MIT 协议。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q4: Waza 适合什么水平的开发者?</b></summary>
|
||||
<p>有工程经验但想更系统化的开发者。如果你已经有这些习惯,Waza 帮你自动化。如果你还没有,Waza 逼你养成。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q5: "Waza" 这个名字怎么念?</b></summary>
|
||||
<p>日语「技」(わざ / waza),发音类似 "哇扎"。在武道中指"练到成本能的招式"。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q6: 作者 tw93 是谁?</b></summary>
|
||||
<p>活跃在 GitHub 和 Twitter 的独立开发者,也是 MiaoYan 等项目的作者。养了两只猫:汤圆和可乐。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q7: 最新版本是什么?</b></summary>
|
||||
<p>截至 2026-04-17,最新版本为 V3.10.0,包含 252 次 commits,3.3k+ stars,202 forks。</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Q8: 怎么卸载?</b></summary>
|
||||
<pre><code># 移除所有技能
|
||||
npx skills remove tw93/Waza -g
|
||||
|
||||
# 移除 statusline
|
||||
rm -f ~/.claude/statusline.sh
|
||||
# 然后从 ~/.claude/settings.json 中删除 statusLine 键
|
||||
|
||||
# 移除英文教练
|
||||
rm -f ~/.claude/rules/english.md</code></pre>
|
||||
</details>
|
||||
|
||||
### 自测题
|
||||
|
||||
1. **理解层**:Waza 的核心哲学是什么?为什么"不完整是设计出来的"?
|
||||
2. **记忆层**:8 个技能分别是什么?各自在什么场景触发?
|
||||
3. **分析层**:如果跳过 `/think` 直接编码,最大的风险是什么?请举一个你经历过的例子。
|
||||
4. **应用层**:你接手一个全新项目,描述从接到需求到合并代码的完整 Waza 工作流。
|
||||
5. **批判层**:Waza 只有 8 个技能。你觉得缺了什么?为什么作者可能故意不做?
|
||||
6. **迁移层**:你如何在现有工作流中引入 Waza 技能?哪些最容易养成习惯?哪些最难?
|
||||
7. **创造层**:如果你要给 Waza 贡献第 9 个技能,会是什么?写一个简短的 SKILL.md 大纲。
|
||||
|
||||
### 参考资源
|
||||
|
||||
- [tw93/Waza GitHub 仓库](https://github.com/tw93/Waza)
|
||||
- [作者博客:Claude Code 六层框架](https://tw93.fun/en/2026-03-12/claude.html)
|
||||
- [Waza 演示推文](https://x.com/HiTw93/status/2041312649510822103)
|
||||
Reference in New Issue
Block a user