migrate-to-shoehorn SKILL.md skillA

migrate-to-shoehorn from shumingyang-opencode/mattpocock-skills-zh-tw is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.

Install it, pinned
mdr add shumingyang-opencode/mattpocock-skills-zh-tw/migrate-to-shoehorn@git:20260806.5bfe60b

Pins git:20260806.5bfe60b in mdr.lock. Pin the fingerprint instead.

Audit grade
A, 17 of 17 checks passed
Kind
SKILL.md skill
Repository
shumingyang-opencode/mattpocock-skills-zh-tw
Path
skills/misc/migrate-to-shoehorn/SKILL.md
Versions recorded
2
Latest version
git:20260806.5bfe60b, committed Aug 6, 2026
First version recorded
Apr 28, 2026
Size
2,858 bytes
Repository stars
3
License
MIT

將測試檔案從 `as` 型別斷言遷移到 @total-typescript/shoehorn。當使用者提到 shoehorn、想在測試中取代 `as`,或需要部分測試資料時使用。.

Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.

What the file says

# 遷移到 Shoehorn

## 為什麼用 shoehorn?

`shoehorn` 讓您可以在測試中傳入部分資料,同時讓 TypeScript 保持滿意。它以型別安全的替代方案取代 `as` 斷言。

**僅限測試程式碼。** 絕不要在正式程式碼中使用 shoehorn。

測試中 `as` 的問題:

- 被訓練成不要使用它
- 必須手動指定目標型別
- 對刻意錯誤的資料使用雙重 `as`(`as unknown as Type`)

## 安裝

```bash
npm i @total-typescript/shoehorn
```

## 遷移模式

### 大型物件但只需要少數屬性

之前:

```ts
type Request = {
  body: { id: string };
  headers: Record<string, string>;
  cookies: Record<string, string>;
  // ...20 more properties
};

it("gets user by id", () => {
  // Only care about body.id but must fake entire Request
  getUser({
    body: { id: "123" },
    headers: {},
    cookies: {},
    // ...fake all 20 properties
  });
});
```

之後:

```ts
import { fromPartial } from "@total-typescript/shoehorn";

it("gets user by id", () => {
  getUser(
    fromPartial({
      body: { id: "123" },
    }),
  );
});
```

### `as Type` → `fromPartial()`

之前:

```ts
getUser({ body: { id: "123" } } as Request);
```

之後:

```ts
import { fromPartial } from "@total-typescript/shoehorn";

getUser(fromPartial({ body: { id: "123" } }));
```

### `as unknown as Type` → `fromAny()`

之前:

```ts
getUser({ body: { id: 123 } } as unknown as Request); // wrong type on purpose
```

之後:
…

Read the whole file at its exact version.

How to install

The exact contents, by fingerprint
mdr add shumingyang-opencode/mattpocock-skills-zh-tw/migrate-to-shoehorn@sha256:7e63dc7f62c12967

The line at the top of this page pins the label git:20260806.5bfe60b, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.

Badge

mdr badge

[![mdr](https://markdownregistry.com/badge/art_tewhcbusm6himy52.svg)](https://markdownregistry.com/a/art_tewhcbusm6himy52)

3 badge image fetches in 30 days. What the badge shows.

Versions

The registry has recorded 2 versions of this file, between Apr 28, 2026 and Aug 6, 2026, about one every 100 days.

versioncommittedcommitsizeaudit
git:20260806.5bfe60b latest2026-08-06 5bfe60b 2,858 BA view · diff
git:20260428.62f43a12026-04-28 62f43a1 2,795 BA view

Audit of the latest version

A  17 of 17 checks passed. Fixed automatic checks with no AI involved, so the same checks give the same answer every run.
  • pass: Frontmatter block present
  • pass: Frontmatter declares a name
  • pass: Frontmatter declares a description
  • pass: Size between 200 bytes and 200 KB (2858 bytes)
  • pass: No zero-width or bidi control characters
  • pass: No instruction hidden inside an HTML comment
  • pass: No link to an exfiltration or paste host
  • pass: No credential-shaped string
  • pass: No instruction to send local credentials anywhere
  • pass: No text hidden with inline styles
  • pass: No prompt-injection phrasing
  • pass: No curl or wget piped into a shell
  • pass: No recursive delete of root, home or parent
  • pass: No instruction to read or print local credentials
  • pass: No base64 blob over 200 characters
  • pass: No link to a raw IP address
  • pass: No script tag

Source

GitHub

shumingyang-opencode/mattpocock-skills-zh-tw · 3 stars · license MIT · pushed 2026-10-07 · branch main

API

GET https://markdownregistry.com/api/v1/artifacts/art_tewhcbusm6himy52
GET https://markdownregistry.com/api/v1/resolve?ref=shumingyang-opencode/mattpocock-skills-zh-tw/migrate-to-shoehorn
GET https://markdownregistry.com/api/v1/blob/7e63dc7f62c12967a90843826d03a548246616b8e4cfd1a3659b780e31e39dbc

Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.

Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.

More from shumingyang-opencode/mattpocock-skills-zh-tw

AGENTS.md AGENTS.md file
shumingyang-opencode/mattpocock-skills-zh-tw · AGENTS.md
git:20260713.697d4ce · audit B · 3 stars
CLAUDE.md CLAUDE.md file
shumingyang-opencode/mattpocock-skills-zh-tw · CLAUDE.md
git:20260806.5bfe60b · audit A · 3 stars
ask-matt SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/ask-matt/SKILL.md · 詢問哪個技能或流程最符合你的情況。這個 repo 中技能的路由器。
git:20261007.5695450 · audit A · 3 stars
code-review SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/code-review/SKILL.md · 沿兩軸審查自某個固定點(commit、分支、標籤或合併基點)以來的變更——規範(軸)(程式碼是否符合此 repo 記錄的編碼規範?)與規格(軸)(程式碼是否符合原始…
git:20260806.5bfe60b · audit A · 3 stars
codebase-design SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/codebase-design/SKILL.md · 設計深模組的共用詞彙。當使用者想設計或改進模組的介面、找深化的機會、決定接縫放哪裡、讓程式碼更容易測試或對 AI 更容易導覽,或另一個技能需要深模組詞彙時使用。
git:20260806.5bfe60b · audit A · 3 stars
diagnosing-bugs SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/diagnosing-bugs/SKILL.md · 硬 bug 與效能回歸的診斷迴圈。當使用者說「diagnose」/「debug this」,或回報東西壞了/拋錯/失敗/很慢時使用。
git:20261007.5695450 · audit A · 3 stars
domain-modeling SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/domain-modeling/SKILL.md · 建立並磨利專案的領域模型。當使用者想釐清領域術語或通用語言、記錄架構決策,或另一個技能需要維護領域模型時使用。
git:20261007.5695450 · audit A · 3 stars
grill-with-docs SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/grill-with-docs/SKILL.md · 鍥而不捨的訪談,磨利計畫或設計,過程中同時建立文件(ADR 與詞彙表)。
git:20260806.5bfe60b · audit A · 3 stars
implement SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/implement/SKILL.md · 依規格說明或一組 tickets 實作一份工作。
git:20260806.5bfe60b · audit A · 3 stars
improve-codebase-architecture SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/improve-codebase-architecture/SKILL.md · 掃描程式碼庫找出深化機會,以視覺 HTML 報告呈現,然後對你挑選的那個進行 grilling。
git:20261007.5695450 · audit A · 3 stars
prototype SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/prototype/SKILL.md · 建立一次性原型來回答設計問題。當使用者想確認某個狀態模型或邏輯是否合理,或想探索 UI 應該長什麼樣子時使用。
git:20260806.5bfe60b · audit A · 3 stars
research SKILL.md skill
shumingyang-opencode/mattpocock-skills-zh-tw · skills/engineering/research/SKILL.md · 針對高可信度的主要來源調查問題,並把發現寫成 repo 中的 Markdown 檔案。當使用者想要研究某主題、蒐集文件或 API 事實,或想把閱讀的苦差事委派給背景代理時使用。
git:20260806.5bfe60b · audit A · 3 stars

Every file in shumingyang-opencode/mattpocock-skills-zh-tw

Other files named migrate-to-shoehorn

migrate-to-shoehorn SKILL.md skill
vinvcn/mattpocock-skills-zh-cn · skills/misc/migrate-to-shoehorn/SKILL.md · 将测试文件从 `as` 类型断言迁移到 @total-typescript/shoehorn。适用于用户提到 shoehorn、想替换测试中的 `as`,或需要局部测试数据时。
git:20261008.5be0dc1 · audit A · 5,110 stars
migrate-to-shoehorn SKILL.md skill
mxyhi/ok-skills · migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
git:20260427.26d456f · audit A · 504 stars
migrate-to-shoehorn SKILL.md skill
asymmetric-al/core · .agents/skills/migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
git:20260430.3022c5f · audit A · 379 stars
migrate-to-shoehorn SKILL.md skill
rudycity/superagent · .agents/skills/migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
git:20260626.019dba9 · audit A · 52 stars
migrate-to-shoehorn SKILL.md skill
akillness/jeo-skills · .agent-skills/migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
v1.0 · audit A · 48 stars
migrate-to-shoehorn SKILL.md skill
vodailocz/kilo-kit-mcp · skills/productivity/migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
git:20260821.05c0d52 · audit A · 28 stars
migrate-to-shoehorn SKILL.md skill
mambo-wang/codewiki-plus · .trae/skills/migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
git:20260916.5a385b8 · audit A · 20 stars
migrate-to-shoehorn SKILL.md skill
mambo-wang/codewiki-plus · .codebuddy/skills/migrate-to-shoehorn/SKILL.md · Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to…
git:20260916.5a385b8 · audit A · 20 stars

Browse by kind, by grade A, or by owner.