mcpField
A
atscript

atscript

github.com/moostjs開発244 回インストール2 週間前に更新
リポジトリ

atscript について

atscript は、`.as` ファイルで型、メタデータ、検証を定義する言語非依存のスキーマ言語とツールチェーンです。TypeScript コンパイラーが宣言ファイルと実行時メタデータを生成し、検証や JSON Schema、シリアライズなどに利用できます。

主な機能

  1. 01`.as` による定義の一元管理
  2. 02TypeScript 宣言と実行時コードの生成
  3. 03メタデータと検証のサポート
  4. 04JSON Schema とシリアライズ用ヘルパー
  5. 05プラグインによる注釈名前空間の拡張
  6. 06CLI とエディター連携

活用シーン

  1. 01共有型とメタデータの定義
  2. 02`.as` ファイルからの TypeScript 宣言生成
  3. 03データ検証と JSON Schema の生成
  4. 04`.as` モデルのビルドワークフローへの統合

インストール

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

$npx skills add https://github.com/moostjs/atscript --skill atscript

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

同梱ファイル

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

references/
annotations.md
as-syntax.md
asc-cli.md
codegen.md
config.md
getting-started.md
moost-validator.md
plugin-development.md
primitives.md
runtime.md
unplugin.md
validation.md
vscode.md

詳細

atscript

.as は型、メタデータ、検証の単一の信頼できる情報源です。@atscript/typescript は .as を .d.ts(型)と .js(ランタイムメタデータ)にコンパイルします。利用側ではこれらを検証、JSON Schema、シリアライズ、ORM マッピングに使用します。

言語に依存しません。コアには @meta.*、@expect.*、@emit.* が含まれます。@db.*、@ui.*、カスタム名前空間はプラグインから提供されます。

クイックスタート

npm install @atscript/typescript @atscript/core

プロジェクトルートの atscript.config.{ts,mts,cts,js,mjs,cjs}:

import { defineConfig } from '@atscript/core'
import ts from '@atscript/typescript'

export default defineConfig({
  rootDir: './src',
  plugins: [ts()],
})

ビルド:

npx asc            # emits .d.ts (default) + project-wide atscript.d.ts
npx asc -f js      # emits runtime .js metadata

最初の .as ファイル、使用例、トラブルシューティングを含む詳しい手順 → getting-started.md。

主なインポート

// Config
import { defineConfig, AnnotationSpec } from '@atscript/core'
import type { TAtscriptPlugin, TAtscriptConfig } from '@atscript/core'

// Plugin factory (build-time only)
import ts from '@atscript/typescript'

// Runtime helpers (used by generated .as.js — also available to consumers)
import {
  defineAnnotatedType,             // fluent builder (in generated code)
  forAnnotatedType,                // kind-dispatched walker
  Validator, ValidatorError,
  buildJsonSchema, fromJsonSchema, mergeJsonSchemas, detectDiscriminator,
  serializeAnnotatedType, deserializeAnnotatedType, SERIALIZE_VERSION,
  isAnnotatedType, isAnnotatedTypeOfPrimitive,
} from '@atscript/typescript/utils'
import type { TAtscriptAnnotatedType, TValidatorPlugin } from '@atscript/typescript/utils'

// Test fixtures (compile .as at test-time, inject tsPlugin automatically)
import { prepareFixtures } from '@atscript/typescript/test-utils'

// Moost HTTP integration
import { coercionPipe, validatorPipe, validationErrorTransform } from '@atscript/moost-validator'

// Bundler integration (pick one)
import atscript from 'unplugin-atscript/vite'      // or /rollup /rolldown /webpack /esbuild /rspack /farm

不変条件

  1. @meta.id は引数を取りません。異なるプロパティに複数の @meta.id を指定すると、複合主キーになります。@meta.id(...) は使用しないでください。
  2. 生成ファイル(*.as.d.ts、*.as.js、atscript.d.ts)を手動で編集してはいけません。.as ソースまたはプラグインを修正してください。npx asc -f dts で再生成します。
  3. コアに含まれるのは @meta.*、@expect.*、@emit.* のみです。それ以外の名前空間はすべてプラグインから提供されます。
  4. -f を付けずに asc を実行すると、すべてのプラグインのデフォルト出力が生成されます(TS プラグインは .d.ts を出力します)。ランタイム用の .js を生成するには -f js を指定します(または、バンドル時に unplugin-atscript に生成させます)。
  5. @atscript/typescript/utils はランタイムのエントリーポイントです。@atscript/typescript のデフォルトエクスポートは tsPlugin()(ビルド時のファクトリー)です。
  6. コンパイル済みの .as 成果物を import type でインポートしてはいけません。 .as のエクスポートはクラスであり、1つの名前で値と型の両方を持ち、ランタイムで使用されます(.validator()、.metadata、デコレーター、design:paramtypes によるパラメーター型を使った DI)。型のみのインポートでは値が取り除かれ、デコレーターのメタデータが Object を出力し、検証、DI、フォームバインディングが何も通知せずに機能しなくなります。.as ファイルをインポートするプロジェクトでは、型のみのインポートを強制するリンタールール(typescript/consistent-type-imports など)は無効のままにしてください。create-moost プリセットとエコシステムのリポジトリでは、すでに無効に設定されています。

依存関係の連鎖

@atscript/core          parser, AST, plugin system, diagnostics
  └─ @atscript/typescript    codegen + runtime + asc CLI
       ├─ @atscript/moost-validator   Moost pipe + error transform
       └─ unplugin-atscript           Vite/Rollup/Rolldown/Webpack/esbuild/Rspack/Farm
  └─ @atscript/vscode     LSP, syntax, completions, go-to-def

DB レイヤー(@atscript/db、db-sqlite、db-mongo、db-mysql、moost-db、@db.*、スキーマ同期、リレーション、ビュー):別のリポジトリ(https://db.atscript.dev)にあります。 UI レイヤー(@atscript/ui、vue-form、vue-table、Moost ワークフロー、@ui.*):別のリポジトリにあります。

関連スキル:

npx skills add moostjs/atscript      # this skill (core/typescript/unplugin/vscode/moost-validator)
npx skills add moostjs/atscript-db   # DB layer
npx skills add moostjs/atscript-ui   # UI layer

参照 — 必要なものだけを読み込む

ドメインファイル参照するタイミング
初回利用getting-started.mdインストール、最初の .as、最初のコード生成の実行、スニペットの利用、トラブルシューティング
.as の構文as-syntax.mdインターフェース/型、ユニオン、交差型、タプル、配列、インポート、パターンプロパティ、annotate ブロック
アノテーションannotations.md@meta.*、@expect.*、マージ、カスタムの AnnotationSpec、query/expr/order 引数(バッククォート式、算術演算、並べ替え、括弧内の演算子、「フィールド参照の後に演算子が必要です」)、引数上のエディターフック(fieldScope、refFilter — 引数内での補完/ホバー/F12)
プリミティブprimitives.md組み込み型、セマンティック拡張、decimal、phantom、設定による拡張
設定config.mdatscript.config.*、defineConfig、エントリー/glob、プラグインの設定、出力、models(db sync 用のパッケージ化されたモデル、models: () => import(...))
asc CLIasc-cli.mdasc、-f、-c、--noEmit、--skipDiag、スクリプト、「何も出力されませんでした」/エラーがあると出力を中止、アトミック書き込み、db sync フラグ(--check、--format)、完全なインベントリのルール(「コンパイル済みモデルモジュールを N 個読み込めませんでした」、ERR_MODULE_NOT_FOUND、ネストされた .as インポート)+参照先
コード生成codegen.md.as → .d.ts/.js、グローバルな AtscriptMetadata を定義する atscript.d.ts
ランタイムruntime.mddefineAnnotatedType、TAtscriptAnnotatedType、forAnnotatedType、シリアライズ、refDepth
バリデーションvalidation.mdValidator、ValidatorError、coerceForType、JSON Schema ヘルパー、プラグイン
ビルド連携unplugin.mdVite/Rollup/Rolldown/Webpack/esbuild/Rspack/Farm、HMR、strict、root(誤った cwd からの設定検出、pnpm -C、不明な @db.*/@ui.* アノテーション)、@atscript/typescript/utils の optimizeDeps による事前バンドル(「最適化された依存関係が変更されました。再読み込みしています」)、モデルの移動/型変更後の古い .as インポート(開発サーバーが以前のフィールド型を保持し、再読み込み時に「string が必要です」と表示されるが asc/tsc は成功、watchChange によるキャッシュ無効化)、.as の再エクスポートの dts バンドル(tsdown/rolldown-plugin-dts)
Moost 連携moost-validator.mdMoost パイプ(バリデーション+パラメーター/クエリの型変換)、エラーの変換
VSCodevscode.md拡張機能、LSP 機能、設定の自動検出
プラグイン作成plugin-development.mdTAtscriptPlugin、AnnotationSpec、render/buildEnd

ドキュメント全文:https://atscript.dev.

コメント