1仕組みと動作原理
コアは同梱ディレクトリ内のローカルBM25検索エンジン:純粋なPython標準ライブラリ実装、外部依存関係ゼロ、ランタイムネットワーク通信ゼロ。データファイルは __file__ による相対パス解決を採用し、スキルディレクトリ自体がナレッジベースとして機能するため、任意のプラグインルートにコピーするだけで動作可能。
import csv import difflib import re from pathlib import Path from math import log from collections import defaultdict
ヒット判定はBM25スコアと単語カバレッジの二重閾値に基づき、低信頼度時は能動的に棄却(弱いデータではなく空を返す)。SKILL.md側でも「0ヒット→1回再試行→依然として空なら組み込みデフォルトであることを明示」を強制し、捏造を二重に防止。
abstain = (top_score <= threshold["min_score"] or coverage < threshold["min_coverage"] or (threshold["min_margin"] > 0 and top_score - runner_up_score < threshold["min_margin"]))
17の検索ドメインと22の技術スタックはCSV_CONFIGおよびスタックCSVによって宣言的に駆動(各ドメインでsearch_colsとoutput_colsを限定)。検索は指定されたCSVの限定列に対するスコアリングとして実行され、無関係なフィールドによるノイズを構造的に排除。
"style": { "file": "styles.csv",
--design-system は単なる文字列結合ではなくオーケストレーションパイプライン:製品ドメインからカテゴリを特定 → ui-reasoning.csv の推論ルールを適用 → style/color/landing/typography に対して重み付け複数ドメイン検索を実行 → パターン/スタイル/パレット/フォント/効果/アンチパターンを一連のセットとして出力。
This aggregates product/style/color/landing/typography matches, applies reasoning rules from `ui-reasoning.csv`, and returns pattern, style, colors, typography, effects, and anti-patterns to avoid.
意思決定ルールは実行コードではなく制限されたDSL:reasoning_contract.py は決定論的な解析と書き換えのみを行い、「データは決して実行しない」と明記。actionプレフィックスはホワイトリスト(constraint/style/pattern/mode)で検証され、データ汚染が発生しても最大でルールの不一致にとどまり、任意コード実行は生じない。
"""Return deterministic mutations and an audit trail; never execute data."""
永続化には「Master + Overrides」モデルを採用し、保守的なディスク書き込みを徹底:--persist には --output-dir の同時指定が必須であり、safe_slug によるプロジェクト名無害化([a-z0-9_-]、パストラバーサル防止)、temp + NamedTemporaryFile + os.link による原子的かつ排他的なデプロイを実施。既存の MASTER.md はデフォルトでスキップされ、--force のみ上書き可能(ユーザーの明示的な許可が必須)。
def safe_slug(name, fallback: str = "default") -> str:
ワークフロー規約において「推測の禁止」をクエリ規律として明文化:Step 1で実際のスタックを検出(package.json/pubspec.yaml/*.xcodeproj 等。検出不可時はユーザーに確認し、デフォルトスタックのハードコードを禁止)→ Step 2 デザインシステム → Step 3 オンデマンドドメイン検索 → Step 4 スタックガイドライン。クエリは単一の主意図 + 2〜5語 + 1つの制約で構成。
If nothing is detectable and stack guidance matters, ask the user. **Never assume a stack**
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | 运行时零外联(search.py/core.py/design_system.py/reasoning_contract.py 均无网络模块——import 审计全标准库) |
| network | 维护期(仓库 CI refresh-catalogs.yml,非 skill 运行时、不随 skill 分发):Google Fonts Developer API 快照 |
| network | 维护期:官方 google/fonts 仓库许可证元数据 sparse clone |
| package | 维护期:npm 安装 pin 版 @phosphor-icons/core 与 @phosphor-icons/react(--ignore-scripts)导出图标清单 |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: python3 scripts/search.py —— SKILL.md の指示に基づきエージェントが手動で呼び出し(単一CLI呼び出し: --domain/--de
- 本地工作目录: ファイル読み書きおよび成果物出力: --persist + --output-dir が明示的に指定された場合のみ、design-system/<project-slug>/MASTER.md および関連パスへ書き込み
5二重目の独立検証
- [ok] 运行时零网络 — search.py 头 import(argparse/json/sys/io + 本地三模块)与 core/design_system/reasoning_contract 的 import 全为标准库;scripts/ 全树 grep requests/urllib/socket/http/curl/wget 零命中(tests 内 URL 为数据校验用字面量)。
- [ok] 功能声明数字 vs 实际数据行数 — 行级计数:styles 88(50 active+29 supplemental+9 deprecated=可检索 79)、products/ui-reasoning/colors 192、typography 74、google-fonts 1934、ux-guidelines 119、icons 105、motion 17、charts 25、landing 34、stacks 22 文件 1260 行——与 description 及 catalog-summary.json 完全一致,无夸大。
- [ok] 持久化写盘面(防穿越/原子/不覆盖) — design_system.py 精读:safe_slug 只留 [a-z0-9_-]、NamedTemporaryFile 写入 + os.link 排他发布、FileExistsError 默认跳过、--force 分支才覆盖;与 SKILL.md 'skips writing and leaves it untouched unless you also pass --force' 一致。
- [ok] 决策规则无执行面 — reasoning_contract.py 无 eval/exec/subprocess/动态 import;ALLOWED_CONDITIONS/ACTION_PREFIXES/TOKEN_RE 白名单 + ValueError;docstring 'never execute data.'。
- [ok] 凭证/env 读取 — 运行时唯一 env 读取 = design_system.py:615 COLORTERM;无 keychain/.env/密钥文件访问;CI 工作流使用的 GOOGLE_FONTS_API_KEY 为 GitHub secrets(仓库侧,非本机)。
- [ok] 外部依赖真实性 — 3 条『维护期』条目逐一在 .github/workflows/refresh-catalogs.yml 65/91/121-123 行找到真实调用点;运行时外部依赖为空。
- [ok] stars/活跃度/commit — GitHub API:stars 126346、pushed_at 2026-09-06T11:29:23Z、MIT;本地 git HEAD == pin 4aad0584d92131626b16d4ff4d77f0455385013c(2026-09-06 18:29:23 +0700)。
- [ok] 分级校准(六档范式) — 运行自带 stdlib 本地脚本 + 显式触发本地写、无网络外发、无凭证 → blue(旧文件曾记 green,按 2026-09-09 统一分档准则校准为 blue);reason 已重写。
6結論
7d01e476eb54034d…