mcpField
T
typescript-magician

typescript-magician

github.com/mcollina開発2.0k2.8k 回インストール2 週間前に更新
リポジトリ

typescript-magician について

型エラーや複雑な型の課題に取り組む開発者向けの TypeScript スキルです。精密で型安全な修正を重視し、tsc で検証します。

主な機能

  1. 01高度なジェネリクスと型推論
  2. 02条件型とマップ型
  3. 03型の絞り込みとユーティリティ型
  4. 04ブランド型とモジュール拡張
  5. 05変更前後のコンパイルチェック
  6. 06型テストと IntelliSense の指針

活用シーン

  1. 01TypeScript コンパイラーエラーの診断
  2. 02any を精密な型に置き換え
  3. 03複雑なジェネリクス推論の解決
  4. 04コードベースへの厳密な型の導入

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mcollina/skills --skill typescript-magician

インストール後、Claude Code で/typescript-magicianを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

tile.json
rules/
array-index-access.md
as-const-typeof.md
builder-pattern.md
conditional-types.md
deep-inference.md
error-diagnosis.md
function-overloads.md
generics-basics.md
infer-keyword.md
mapped-types.md
opaque-types.md
template-literal-types.md
type-narrowing.md
utility-types.md

詳細

使用する場面

このスキルは、次のような場合に使用します。

  • TypeScript のエラーや型に関する課題
  • コードベースからの any 型の排除
  • 複雑なジェネリクスや型推論の問題
  • 厳密な型付けが必要な場合

手順

呼び出されたときは、次の手順に従います。

  1. 変更を加える前に tsc --noEmit を実行し、エラー出力全体を取得します
  2. 型の問題の根本原因(不健全な推論、制約の不足、暗黙の any など)を特定します
  3. TypeScript の高度な機能を使って、正確で型安全な解決策を作成します
  4. 適切な型付けですべての any 型を排除します。置き換えた型が呼び出し箇所でも引き続き要件を満たすことを検証します
  5. 2 回目の tsc --noEmit を実行し、エラーなくコンパイルできることを確認します

対応できる内容:

  • 高度なジェネリクスと条件型
  • テンプレートリテラル型とマップ型
  • ユーティリティ型と型操作
  • ブランド型と公称型付け
  • 複雑な推論パターン
  • 変性と分配のルール
  • モジュール拡張と宣言のマージ

TypeScript の課題ごとに、次の内容を提供します。

  • 問題の背景にある型理論の説明
  • 該当する場合は、複数の解決方法
  • 変更前と変更後の型表現
  • 包括的な型テスト
  • 完全な IntelliSense サポート

簡単な例

ジェネリクスによる any の排除

変更前

function getProperty(obj: any, key: string): any {
  return obj[key];
}

変更後

function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}
// getProperty({ name: "Alice" }, "name") → inferred as string ✓
不明な API レスポンスの型の絞り込み

変更前

async function fetchUser(): Promise<any> {
  const res = await fetch("/api/user");
  return res.json();
}

変更後

interface User { id: number; name: string }

function isUser(value: unknown): value is User {
  return (
    typeof value === "object" &&
    value !== null &&
    "id" in value &&
    "name" in value
  );
}

async function fetchUser(): Promise<User> {
  const res = await fetch("/api/user");
  const data: unknown = await res.json();
  if (!isUser(data)) throw new Error("Invalid user shape");
  return data;
}

リファレンス

詳細な説明とコード例については、個別のルールファイルを参照してください。

基本パターン
高度なジェネリクス
型レベルプログラミング
型安全性のパターン
デバッグ

コメント