본문으로 건너뛰기
cccskills
무료GitHub에 공개

migrate-to-shoehorn

Replace TypeScript type assertions in tests with functions from @total-typescript/shoehorn. Use partial objects when only a few properties matter, or deliberately invalid data for error tests, then run a type check to verify the migration.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.

설치 방법 보기

이럴 때 유용합니다

  • Replace as assertions in TypeScript tests
  • Build test objects with only the properties you need
  • Pass deliberately invalid data for error tests

포함된 파일(2)

  • SKILL.md2.7 KB
  • agents/openai.yaml110 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Migrate to Shoehorn

Why shoehorn?

shoehorn lets you pass partial data in tests while keeping TypeScript happy. It replaces as assertions with type-safe alternatives.

Test code only. Never use shoehorn in production code.

Problems with as in tests:

  • Trained not to use it
  • Must manually specify target type
  • Double-as (as unknown as Type) for intentionally wrong data

Install

npm i @total-typescript/shoehorn

Migration patterns

Large objects with few needed properties

Before:

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
  });
});

After:

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

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

as Type → fromPartial()

Before:

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

After:

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

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

as unknown as Type → fromAny()

Before:

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

After:

import { fromAny } from "@total-typescript/shoehorn";

getUser(fromAny({ body: { id: 123 } }));

When to use each

FunctionUse case
fromPartial()Pass partial data that still type-checks
fromAny()Pass intentionally wrong data (keeps autocomplete)
fromExact()Force full object (swap with fromPartial later)

Workflow

  1. Gather requirements - ask user:

    • What test files have as assertions causing problems?
    • Are they dealing with large objects where only some properties matter?
    • Do they need to pass intentionally wrong data for error testing?
  2. Install and migrate:

    • Install: npm i @total-typescript/shoehorn
    • Find test files with as assertions: grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"
    • Replace as Type with fromPartial()
    • Replace as unknown as Type with fromAny()
    • Add imports from @total-typescript/shoehorn
    • Run type check to verify

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

ask-matt

무료요약 있음AI 평가 90점

아이디어 정리, 구현, 오류 조사에 맞는 관련 스킬과 사용 순서를 안내합니다. 작업의 규모와 단계에 따라 다음 절차를 선택하도록 돕습니다.

  • 아이디어부터 구현까지의 절차 선택
  • 오류 조사를 시작할 지점 찾기
  • 여러 세션에 걸친 개발 진행 방식 상담
mattpocock/skills30.2만2026년 10월 22일 업데이트

chief-of-staff

무료요약 있음AI 평가 60점

한 세션에서 장기 목표를 향해 여러 하위 에이전트의 작업을 조율합니다. 사용자와 대화를 이어가면서 다음 작업에도 도움이 될 환경과 공통 규칙을 개선합니다.

  • 장기 목표를 위한 작업 담당을 조율할 때
  • 백그라운드 작업 중에도 대화를 이어갈 때
  • 공통 규칙과 작업 환경을 개선할 때
mattpocock/skills30.2만2026년 10월 22일 업데이트

claude-handoff

무료요약 있음AI 평가 90점

진행 중인 대화를 인계용으로 요약하고 민감한 정보를 제외한 뒤 새 백그라운드 에이전트에 전달합니다. 다음 작업의 초점과 참고 자료를 정리해 현재 작업 위치에서 이어 갑니다.

  • 새 에이전트에 후속 작업 인계
  • 다음 세션의 작업 범위를 좁혀 인계
  • 다음 세션에 필요한 참고 자료 정리
mattpocock/skills30.2만2026년 10월 22일 업데이트

code-review

무료요약 있음AI 평가 90점

지정한 커밋이나 브랜치를 기준으로 코드 변경을 검토합니다. 문서화된 개발 규칙 준수와 요구 사항 구현을 별도로 확인하고 두 관점의 지적 사항을 나누어 보고합니다.

  • 브랜치나 PR의 변경 검토
  • 지정 커밋이나 태그 이후 변경 확인
  • 문서화된 개발 규칙과 대조
mattpocock/skills30.2만2026년 10월 22일 업데이트

codebase-design

무료요약 있음AI 평가 90점

호출자가 익혀야 할 사용법은 줄이고 복잡한 처리는 내부에 모으는 모듈 설계를 돕습니다. 공통 용어와 판단 기준으로 사용 편의성과 테스트 용이성을 검토합니다.

  • 모듈 호출 방법 간소화
  • 흩어진 복잡한 처리 통합
  • 구현을 교체할 위치 검토
mattpocock/skills30.2만2026년 10월 22일 업데이트

diagnosing-bugs

무료요약 있음AI 평가 80점

재현하기 어려운 오류와 성능 저하를 증상 감지 테스트나 스크립트로 조사합니다. 원인 후보를 검증하고 수정한 뒤 재발 방지 테스트까지 확인합니다.

  • 재현하기 어려운 오류 조사
  • 처리 속도가 느려진 원인 조사
  • 간헐적 오류를 반복해서 검증
mattpocock/skills30.2만2026년 10월 22일 업데이트

mattpocock의 스킬 모두 보기

이 스킬의 문제 신고