Skip to main content
ClaudeWave
Skill107 estrellas del repoactualizado 4d ago

wjs-eating-and-growing

# wjs-eating-and-growing This Claude Code skill guides structured reflection through five sequential steps when someone encounters a personal setback, mistake, or recurring behavioral pattern. Rather than generating reflection menus or commitment trackers, it isolates one specific behavioral alternative for the next time the triggering situation occurs, but only after identifying which underlying interpretation pattern requires updating. The skill targets layer-3 weight adjustment, the automatic first response, by progressively moving from event description through automatic thought, core assumption, new parameter training target, and finally a concrete replacement action measurable in seconds.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/jianshuo/claude-skills /tmp/wjs-eating-and-growing && cp -r /tmp/wjs-eating-and-growing/wjs-eating-and-growing ~/.claude/skills/wjs-eating-and-growing
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# wjs-eating-and-growing(吃一堑长一智)

## 这个 skill 在干什么

帮王建硕在每次"吃堑"之后,按 5 步走一遍:

**堑** → **自动输出** → **旧权重** → **新参数** → **替代动作**

不开练习菜单,不排打卡频次,不要他每天冥想 10 分钟。最终只交付一条:**下次这件事再发生的那一秒,他具体做什么不一样**。

但在"下次做什么"之前,必须先穿过一层:**这次该更新的是哪一条旧解释模式 / 想训练的新参数是什么**。这是从「情绪复盘」推进到「行为训练」的关键——不更新解释模式,再多 next step 也只是症状管理。

底层框架(来自 Mars 任鑫《庄子,业力和大模型》):

| 层 | 类比 | 改它靠什么 | 改完会变吗 |
|---|---|---|---|
| **L1 外挂文档** | 笔记、读一篇文章 | 读 / 记 | ❌ 不变 |
| **L2 推理链路** | 临场慢思考 | 外部触发器 | 状态好时变,状态差时被冲垮 |
| **L3 底层权重** | 不假思索的第一反应 | 高梯度小数据练习 | ✅ 默认输出真的变 |

**这个 skill 默认目标永远是 L3** —— 不假思索的第一反应。

**The Iron Law**:知道道理 ≠ 临场用上 ≠ 默认反应。光把"道理"加到笔记里,是在重复作者吐槽过的状态——"Obsidian 两千条笔记,下次被怼还是先暴怒三秒"。

## 怎么用 — 5 步交互式

**一步一问。每一步只问一个问题,等用户回答,再走下一步。不可跳,不可合并,不可一次性把五个问题罗列出来要他一起答。**

用户在情绪里走出来的速度是慢的,跳步等于回到 L1 笔记。

---

### Step 1 — 这次"堑"是什么?

> "用一句话写清楚发生了什么。
>
> 不要解读,不要分析,先把事实落地。比如:
> - 朋友临时爽约了
> - 对方一句话让我瞬间破防
> - 我又拖延到最后一刻才做事"

**为什么**:先把"事件"从"对事件的解释"里剥出来。后面要更新的是解释,不是事件——必须先看清这两层不是同一个东西。

如果用户一上来就给的是解释("他不尊重我"),**追问一次**:"这是你的解读。先退回一步——纯事实层面、外面装个摄像头能拍到的那件事,是什么?"

---

### Step 2 — 我当时的自动输出是什么?

> "**不是你事后的解释,是第一反应。**
>
> 那个瞬间脑子里蹦出来的原话——比如:
> - "他不尊重我。"
> - "他就是看不起我。"
> - "我完了,我总是这样。"
> - "我必须马上回击。"
>
> 如果一时想不起,就先回到身体——哪里紧了、热了?心跳起来了吗?拳头握住了吗?身体先反应,话紧随其后。把那句话抓住。"

**为什么**:自动输出是 L3 权重的可观测投影。文章原话——"这个瞬间的 learning rate 远高于事后复盘"。事后再聪明的总结,梯度都已经凉了,改不动 L3。

如果用户给的是事后视角("我应该当时冷静一点"、"我那时候不该…"),**追问一次**:"这是事后视角。回到那一秒——脑子里实际蹦出来的那句话是什么?"

---

### Step 3 — 这个输出背后的旧权重是什么?

> "也就是:你为什么总往这个方向解释?
>
> 不是这一次为什么,是**你这个人**为什么会对这类事情默认这样反应。比如:
> - 我很怕被忽视
> - 我对失控特别敏感
> - 我从小对批评高度警觉
> - 我习惯把别人的状态解释成针对我
> - 我遇到压力就会逃避
>
> 用一句话写。"

**为什么**:**这一步是关键。真正该更新的不是事件本身,而是你解释事件的旧模式。**

如果用户停在症状层("我又急了"、"我意志力不够"、"我就是这样"),**追问一次**:"这是症状。再下一层——为什么这个症状会发生在你身上、不发生在别人身上?底下那个一直没解决的旧情绪、一直被违反的假设、一直没补的能力,是什么?"

---

### Step 4 — 这次我想训练哪个新参数?

> "不要太大,不要空泛,要具体。
>
> 不要写:
> - "以后我要情绪稳定。"
> - "我要更成熟。"
> - "我要开悟。"
>
> 要写成针对**一类具体情境的新响应模式**:
> - 遇到别人冷淡时,不立刻理解成否定我
> - 愤怒起来时,先停三秒再说话
> - 被放鸽子时,先确认事实,不脑补动机
> - 焦虑时,先描述身体感觉,不马上相信想法
>
> 你这次想训练的那一条是?"

**好的新参数的 3 条标准**(用户答完核对一遍):

1. **指向一类触发情境** —— "遇到 X 时…",不是"这次以后…",也不是"我整个人要变成 Z"
2. **是针对那一类触发的具体新响应** —— "不立刻 Y" / "先做 W 再 V",不是"我要更成熟 / 更冷静 / 想得开"
3. **小到能落地一类情境** —— 一条参数对应一类触发,不是包打天下的人生修行目标

如果违反任何一条,说出来,让他改一次。

---

### Step 5 — 下次再来时,我的替代动作是什么?

> "新参数是要训练的目标。训练靠的是动作,不是念头。
>
> 一定要小到能执行——下次这一类情境再来的那一秒,你具体做什么。比如:
> - 先不回消息,走两分钟
> - 先问一句"你是临时有事吗"
> - 先把"他故意的"改成"我现在在这样解读"
> - 先说"我现在有点上头,十分钟后再聊"
>
> 你的那一秒动作是什么?"

**好的替代动作的 4 条标准**(用户答完核对一遍):

1. **触发器是外部、客观可观测的** —— "他又说 X 那句话时" / "心跳起来时",不是"当我觉得不对劲"
2. **动作小到 2 秒内能完成** —— 不是"找时间反思"、不是"每天冥想"
3. **是动作,不是念头** —— "做 X",不是"想 X"、"提醒自己 X"
4. **不依赖意志力** —— 物理动作或纯本能反应级别

如果违反任何一条,**说出来,让他改一次**。但只改一次,不要纠缠——比"完美的替代动作"重要的是他记得住、用得上。

---

## 输出模板

走完 5 步,给一个 block:

```
**堑**:<Step 1 一句事实>
**自动输出**:<Step 2 第一反应原话>
**旧权重**:<Step 3 一句根因 / 老模式>
**新参数**:<Step 4 想训练的那条新响应模式>
**下次的那一秒**:<触发器> → <动作>
```

五行。不附加待办、不附加打卡表、不附加阅读材料。

这五行的内在关系一句话:**旧权重**要改的是这个 → **新参数**练的方向是这个 → **替代动作**就是那一秒练它的方式。前三行讲清楚"练什么",后两行讲清楚"怎么练"。

## 一个完整的例子(五行长什么样)

同一个人、同一件事,五步走出来的五行:

**堑**:朋友群约周六晚上吃饭,到了餐厅发现少了三个人没来,群里也没解释
**自动输出**:「他们不重视和我吃饭」
**旧权重**:别人状态不明时,我默认解释成"跟我有关",很少先想"他们各自有自己的事"
**新参数**:遇到别人状态不明 / 没主动解释时,不预设动机,先直接问一句
**下次的那一秒**:注意到"没人解释"那一秒 → 在群里发一句"今晚临时有事?"

判断写对了没有:每一行都能反过来回答上一行的"为什么"——

- 为什么"先问一句"是个好动作?因为新参数是"不预设动机先直接问"
- 为什么要训练这条新参数?因为旧权重是"信息缺失时默认跟我有关"
- 为什么这条旧权重被触发?因为自动输出冒出的是「他们不重视」
- 为什么会有这个自动输出?因为堑是"少三个人没来还没解释"

哪一行接不上,回那一步重写。

## Red Flags — 见到立刻停

| 念头 | 实际 |
|---|---|
| Step 1 写成"他不尊重我" | 这是解读不是事件。回 Step 1 写纯事实 |
| Step 2 写成"我应该当时…"、"我那时候不该…" | 这是事后视角不是自动输出。回 Step 2 抓第一反应 |
| Step 3 写"我意志力不够"、"我又急了" | 这是症状不是旧权重。再挖一层 |
| Step 4 写"以后我要情绪稳定"、"我要更成熟" | 太大、空泛、是 to-do 决心。改写成针对一类触发情境的新响应 |
| Step 4 和 Step 5 写成同一句 | 第 4 是要训练的参数(一类情境的新模式),第 5 是那一秒落地的具体动作。两层。重写 |
| Step 5 写"我下次会注意"、"我会想开点" | 这不是动作。改成可观测物理动作 |
| Step 5 写"想 X"、"提醒自己 X" | 想不是动作。改成可观测物理动作 |
| "我记下来" / "我写进笔记" | 这是 L1,整个 skill 就是反对这个 |
| "下次我每天冥想 10 分钟" | 太大、依赖意志力。回 Step 5 改小 |
| "五步太麻烦,我先记一下感受" | 这正是他过去 N 次没长一智的原因 |

## 不要做这个 skill 的时候

- **一次性外部事件**、没有反复模式——没必要走五步,记一下就行
- **情绪正在炸**——先让情绪走完再开 Step 1,不要在火上叫他答问题
- **没"吃堑"的预防性反思**——这不是这个 skill 的工作,去做 office-hours 之类的
- **别人的事**——这个 skill 只对当事人有效,替别人走五步没意义
skill-quality-reviewerSubagent

Repo-wide drift detector for the wjs-* Claude Code skills in this marketplace. Sweeps every SKILL.md, scores it against the repo's own conventions (V-ing naming, trigger-phrase density, companion files, description shape), and returns a grouped punch list ordered by severity. Read-only — never edits files. Use before pushing a batch of skill changes, or whenever you wonder "are these skills still internally consistent?

wangjianshuo-perspectiveSkill

|

wjs-auditing-projectSkill

Use when the user asks to audit what's wrong with a project, "make it right", "看看项目出了什么问题", "为什么用户的需求还没上线", "为什么没提交App Store", "为什么没新build", or wants a holistic state-of-the-project check covering unmerged branches, stalled PRs, failed GitHub Actions, stale builds, plan drift (TODOS.md / ROADMAP), unreleased commits, and log errors. Runs read-only investigation, presents a grouped checklist, fixes only after explicit user confirmation. Aware of the Cathier iOS app workflow (Xcode + fastlane + auto-merge @claude PRs from in-app feedback).

wjs-burning-subtitlesSkill

Use when the user has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track. Also handles the final composite step for the localization pipeline — burn subs, mix a dub track, and keep the original audio as a low-volume bed, all in ONE ffmpeg encode (no cascade). Verifies libass availability and auto-downloads a static evermeet ffmpeg build when Homebrew's stripped binary lacks it. Triggers — "烧字幕", "硬字幕", "burn subtitles", "burn-in subs", "embed subtitle", "soft mux SRT", "把字幕烧进视频", "做最终合成".

wjs-cleaning-spamSkill

Use when the user complains about spam on his X/Twitter posts — 同城面付 / 寻固炮 / 线下上门 / 免费破处 这类引流号在他推文下刷的 emoji 垃圾回复 — and wants them removed. Covers the last 7 days (X recent-search window). Triggers — "把这些spam删掉", "清理X垃圾回复", "推文下面好多引流号", "clean spam replies", "/wjs-cleaning-spam".

wjs-converting-text-to-videoSkill

Use when the user wants a 王建硕-style WeChat article (article.md) turned into a narrated short MP4 video — TTS voiceover via 火山引擎 Volcano TTS, HyperFrames CSS/GSAP animation per scene, subtle SFX, abstract watercolor background, full pipeline rendering to 1080×1920 portrait MP4 (30-90s). Triggers — "把这篇文章做成视频", "做一个解说视频", "讲解视频", "/wjs-converting-text-to-video".

wjs-converting-wp-to-hugoSkill

Use when migrating a WordPress site to a Hugo static site on GitHub Pages from a WXR export (.xml) plus the wp-content/uploads folder — preserving /archives/<id>/ URLs, localizing images, and deploying via GitHub Actions. Triggers — "把 WordPress 迁成 Hugo", "wordpress 转静态站", "migrate WordPress to Hugo", "WXR to Hugo", "publish WordPress to GitHub Pages", "/wjs-converting-wp-to-hugo".

wjs-dubbing-videoSkill

Use when the user has a video + a target-language SRT and wants the video to actually speak that language — generates a time-aligned TTS voice dub. Routes by voice ID — Volcano (豆包) TTS for Chinese, edge-tts neural for any language. Defaults to one voice (single-speaker); opt-in multi-speaker via visual diarization. Outputs `*_<lang>_dub.mp4` with the dub audio in place of the original. Final mixing (audio bed + burn-in) is handed off to `/wjs-burning-subtitles`. Triggers — "配音", "中文配音", "Chinese dub", "voice over this", "dub the video", "TTS this SRT", "different voice for each speaker".