マシンマニフェスト
2 つの JSON アーティファクトが、ツール(ジェネレータ・リンタ・ IDE プラグイン・構造を求めるエージェント)向けにキットを記述します。 どちらもビルド時にソースから生成され、npm パッケージに同梱され、 このサイトから配信されます:
| アーティファクト | このサイト | パッケージ |
|---|---|---|
| キットマニフェスト | /api/manifest.json | @hypermedia-components/core/manifest.json |
| Custom Elements Manifest(マクロ) | /api/custom-elements.json | @hypermedia-components/core/custom-elements.json(package.json#customElements でも参照) |
LLM のコンテキスト用(構造ではなく散文)には
/llms.txt を使ってください —
そこからここへリンクが張られています。
マニフェストの内容
Section titled “マニフェストの内容”| キー | 形 | 真実の源 |
|---|---|---|
version | core パッケージのバージョン。 | package.json |
components[] | block、parts[]、dataAttributes[](そのブロックのスタイルシートに現れる属性面)、attributeValues{}(値を取る各属性 → 列挙値。例: data-variant → ["primary", …])、cssVars[](スタイルシートが読み取るすべての --hc-* カスタムプロパティ — テーマ可能な面)、containers[](エディタで任意のフロー子要素を受け入れるパート。"" はブロックルート — 構造化コンポーネントは空)、staticSafe(スクリプトレス描画が初期化済みの静止状態と一致するか)、tokensGroup(または null)、behavior(または null)、docsPath。 | src/css/hc-*.css、component.tokens.json |
utilities[] | すべての hc-* ユーティリティクラスと container(ルートが任意のフロー子要素を受け入れるか — レイアウト系: stack、cluster、grid、container、sidebar)。 | src/css/hc.utilities.css |
behaviors[] | name、autoInit(オプトインは installChart の 1 つだけ)。 | src/js/index.js、src/js/behaviors.js |
events[] | name + 発生元 modules[]。detail の形は各コンポーネントページが持ちます。 | src/js/*.js |
recipes[] | name、purpose、needsBehavior(または null)、files[]、docsPath、contractPath。 | recipes/*/(+ 各レシピの機械検証 checks.json) |
macros[] | tag + attributes[]。 | src/macros/*.js |
i18nKeys[] | 上書き可能な全メッセージキー。 | DEFAULT_MESSAGES |
exports[] | パッケージ export map のパス。 | package.json |
- 手書きではなく生成。 core ビルド中に
scripts/build-manifest.mjsがすべてをソースから抽出します。出力は決定論的(ソート済み・ タイムスタンプなし)です。 - CI が完全性を強制。 新しい
installXxx()export が把握されて いないとビルドが失敗し、ユニットスイートがマニフェストを実体と 突き合わせます: 全スタイルシートブロックの存在、auto-init 名簿の 一致、recipes ディレクトリとの一致、マクロ属性と Custom Elements Manifest の一致。新しい API 面は、マニフェストが知らないままでは 出荷できません。 - npm がバージョン管理。 各リリースの tarball にその版の マニフェストが同梱されます — バージョン履歴はレジストリそのものです。
# Every component block name:curl -s https://ingcreators.com/hypermedia-components/api/manifest.json \ | jq -r '.components[].block'
# Which recipes need a behavior, and which one:curl -s https://ingcreators.com/hypermedia-components/api/manifest.json \ | jq -r '.recipes[] | select(.needsBehavior) | "\(.name): \(.needsBehavior)"'
# The data-attribute surface of one component:curl -s https://ingcreators.com/hypermedia-components/api/manifest.json \ | jq '.components[] | select(.block == "hc-datagrid") | .dataAttributes'
# Enumerated variants/sizes — ready for a property inspector or generator:curl -s https://ingcreators.com/hypermedia-components/api/manifest.json \ | jq '.components[] | select(.block == "hc-button") | .attributeValues'