mcpField
C
create-import-module

create-import-module

github.com/plainlang開発8042 回インストール今日更新
リポジトリ

create-import-module について

モジュール間で定義や実装・テスト要件を共有する `.plain` インポートモジュールの作成スキルです。`import` と `requires` の違いや検証手順も説明します。

主な機能

  1. 01`template/` で共有モジュールを作成
  2. 02定義や実装・テスト要件を共有
  3. 03必須概念と frontmatter を検証
  4. 04`import` と `requires` を区別

活用シーン

  1. 01複数モジュール間で概念定義を共有
  2. 02共通の実装要件やテスト要件を再利用

インストール

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

$npx skills add https://github.com/plainlang/plain-forge --skill create-import-module

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

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

インポートモジュールの作成

まだ取得していない場合に限り、必ずスキル load-plain-reference を使用してプレーン構文ルールを取得してください。

インポートモジュールとは

インポートモジュールとは、template/ ディレクトリに置かれる .plain ファイルで、***定義***、***実装要件***、および/または ***テスト要件*** のみを含みます。***機能仕様*** を含めてはならず、フロントマターで requires を使用してはなりません。他のモジュールは、YAML フロントマターの import フィールドを通じてその内容を取り込み、定義と要件を利用できるようになります。

インポートモジュールは、次の用途に使用します。

  • 複数のモジュールで概念の定義を共有する
  • 共通の実装要件(技術スタック、コーディング規約など)を提供する
  • 共通のテスト要件を提供する
  • 再利用可能な基盤構造(テンプレート)を作成する

モジュールに機能仕様(つまり、ソフトウェアが何をすべきかを記述する内容)が必要な場合、それはインポートモジュールではありません。create-requires-module スキルを参照してください。

ワークフロー

  1. このモジュールが提供する共有コンテンツを決定します — 他のモジュールが必要とする定義、実装要件、テスト要件を確認します。
  2. YAML フロントマターを含む .plain ファイルを template/ ディレクトリに作成します。インポートするモジュールが定義しなければならない概念を required_concepts で宣言します。レイヤー化した再利用のために他のテンプレートを import することもできますが、requires は使用してはなりません。
  3. 共有コンテンツを追加します — 定義、実装要件、および/またはテスト要件を追加します。
  4. ***機能仕様*** を追加しないでください — インポートモジュールに機能仕様を含めてはなりません。
  5. 概念が利用可能であることを確認します — 参照されるすべての :Concepts: が、このモジュール内で定義されているか、このモジュール自体のインポートから提供されるか、required_concepts として宣言されているか、事前定義された概念であることを確認します。

形式

import フィールドは、YAML フロントマター内でモジュールパスのリストとして指定します。

---
import:
  - base_template
required_concepts: [":AppName:"]
description: Shared API definitions and reqs
---

***definitions***

- :ApiClient: is the HTTP client used to communicate with external services.

- :ApiResponse: is the response returned by :ApiClient:.

***implementation reqs***

- :Implementation: should handle HTTP errors by raising appropriate exceptions.

- :ApiClient: should support configurable timeouts.

***test reqs***

- :ConformanceTests: should mock all external HTTP calls made by :ApiClient:.

デフォルトのインポートディレクトリは template/ です。インポートパスに template/ プレフィックスを付ける必要はありません。.plain 拡張子は省略します。***機能仕様*** がないことに注意してください。インポートモジュールに機能仕様を含めてはなりません。

必須概念を満たす

インポートしたテンプレートで required_concepts が宣言されている場合、インポートするモジュールは自身の ***定義*** セクションでそれらの概念を定義する必要があります。

---
import:
  - auth_template
---

> auth_template declares required_concepts: [":AuthSchema:", ":AuthApiSpec:"]
> So this module must define them:

***definitions***

- :AuthSchema: is the JSON schema describing the authentication data structure.

- :AuthApiSpec: is the OpenAPI specification for the external service's auth endpoint.

import と requires の違い

項目importrequires
定義を取り込むはいいいえ(exported_concepts のみ)
実装要件を取り込むはいいいえ
テスト要件を取り込むはいいいえ
機能仕様を取り込むいいえはい(前提要件として、推移的に取り込む)
生成されたコードをコピーするいいえはい(累積された祖先チェーン)
一般的な用途テンプレート、共有定義モジュールをビルドチェーンに追加する

検証チェックリスト

  • モジュールファイルが template/ ディレクトリにある
  • モジュールに ***機能仕様*** が含まれていない
  • モジュールのフロントマターで requires が使用されていない
  • 定義、実装要件、テスト要件のうち、少なくとも1つが含まれている
  • このモジュールが使用するインポートに含まれるすべての required_concepts が満たされている
  • ここで定義されていない、参照対象の概念が required_concepts で宣言されている
  • このモジュールのインポートとローカル定義の間に概念名の衝突がない
  • YAML フロントマターが --- マーカーで正しく囲まれている

コメント