mcpField
C
charted-scaffold

charted-scaffold

github.com/marmicode開発1359 回インストール5 週間前に更新
リポジトリ

charted-scaffold について

charted-scaffold は、設計ドキュメントから実装途中のコードを作成する開発スキルです。指定された PR に範囲を限定でき、既存の動作を維持しながら、新規部分を非推奨の WIP として扱います。

主な機能

  1. 01設計ドキュメントから WIP コードを生成
  2. 02PR 単位で範囲を指定
  3. 03追加部分に非推奨の WIP 表記
  4. 04既存の動作を維持
  5. 05設計手順から todo テストを作成

活用シーン

  1. 01設計ドキュメントから実装の骨組みを作成
  2. 02特定の PR に作業範囲を限定
  3. 03設計上のテスト手順を todo テストに記録

インストール

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

$npx skills add https://github.com/marmicode/skills --skill charted-scaffold

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

詳細

コンテキスト

  • designDocPath:$ARGUMENTS[0]
  • prNumber:$ARGUMENTS[1]

タスク

以下の設計ドキュメント ${designDocPath} に基づき、設計ドキュメントで説明されている実装の WIP コードを作成してください。

  • 指定されている場合は、PR #${prNumber} のみに注目してください。
  • 新しいクラス、関数、またはメソッドを追加する場合は、"🚧 work in progress" エラーをスローするようにし、jsdoc に "@deprecated 🚧 work in progress" タグを追加してください。
  • 新しいコンポーネントを追加する場合は、jsdoc に "@deprecated 🚧 work in progress" タグを追加しますが、テンプレートやメソッドは実装しないでください。
  • 新しい振る舞いは一切追加しないでください。
    • 例として、コンポーネントに子コンポーネントを追加しないでください。
  • 既存の振る舞いを一切変更しないでください:
    • 関数またはメソッドのシグネチャを後方互換性のある形で変更する場合は、"🚧 work in progress" エラーをスローしないでください。
    • 関数またはメソッドに新しいオプションのパラメーターを追加する場合、そのパラメーターが設定されていれば "🚧 work in progress" エラーをスローしてください。
    • PR の目的が既存の関数またはメソッドの振る舞いを変更することであっても、"🚧 work in progress" エラーをスローしないでください。既存の振る舞いを維持してください。
  • WIP テストでは、設計ドキュメントにあるテスト手順をそのまま、"it.todo" テストの本体内のコメントに記述してください。

例

WIP クラスの例
/**
 * @deprecated 🚧 work in progress
 */
class Greetings {
  hello() {
    throw new Error(`🚧 work in progress`);
  }
}
WIP メソッドの例
class Greetings {
  /**
   * @deprecated 🚧 work in progress
   */
  hello() {
    throw new Error(`🚧 work in progress`);
  }
}
WIP コンポーネント
/**
 * @deprecated 🚧 work in progress
 */
@Component({
  changeDetection: ChangeDetectionStrategy.OnPush,
  selector: "wm-rules",
  template: `Rules - 🚧 work in progress`,
})
class Rules {
  rules = input.required<Rule[]>();
  ruleSelect = output<Rule>();
}
WIP テストの例

注:テスト名は小文字で始めてください(例:「search rules ...」)。

import { describe, it } from "vitest";

describe(RuleSearch.name, () => {
  it.todo("search rules without filtering", () => {
    // mount RuleSearch
    // click on first rule
    // assert output was triggered once
  });

  it.todo("...", () => {
    // ...
  });
});

コメント