1仕組みと動作原理
プロンプトオーケストレーション + 単一スクリプト実行:SKILL.md はエージェントに自身のディレクトリを SKILL_DIR として扱わせ、実際の変換処理を Bun/TypeScript スクリプト scripts/main.ts に委託します。
**Agent Execution**: Determine this SKILL.md directory as `SKILL_DIR`, then use `${SKILL_DIR}/scripts/<name>.ts`.
変換コマンドは npx -y bun を使用してローカルスクリプトを即時実行し、--theme / --title / --keep-title などのオプションをサポートします。
npx -y bun ${SKILL_DIR}/scripts/main.ts <markdown_file> --theme <theme>
実装スタックは依存関係マニフェストによって公開されています:パースに marked、ハイライトに highlight.js、CSSインライン化に juice、メタデータ抽出に front-matter を採用しています。
"juice": "^11.0.1", "marked": "^15.0.6", "reading-time": "^1.5.0",
テーマは CSS 変数 + テーマファイルで実装されており、default テーマは各見出し、引用、コードブロック、テーブルなどのタイポグラフィを定義しています(例:H2 見出しの白抜き文字・カラー背景・中央揃え)。
h2 { display: table; padding: 0 0.2em; margin: 4em auto 2em; color: #fff; background: var(--md-primary-color);
3段階の外部設定メカニズム:プロジェクトレベルの .canghe-skills/... が最優先され、次に $HOME/.canghe-skills/... が適用され、デフォルトテーマ、カスタム CSS 変数、コードブロックスタイルをサポートします。
**EXTEND.md Supports**: Default theme | Custom CSS variables | Code block style
出力と競合処理:HTML は入力と同じディレクトリに出力され、既存ファイルがある場合は .bak-YYYYMMDDHHMMSS としてバックアップされた後、後続処理で置換するための画像プレースホルダーを含む JSON を stdout に出力します。
**Conflict handling**: If HTML file already exists, it will be backed up first:
中国語の前処理:入力に CJK 文字が含まれる場合のみ、canghe-format-markdown の利用可能性を検知すると、事前にフォーマットを行うか確認します(句読点による ** の破損修復など)。
**Condition**: Only execute if input file contains Chinese text.
オプションの PlantUML レンダリングは、図のソースコードをパブリックサーバー(デフォルト: www.plantuml.com)に送信します。これは実行時における唯一の外部送信経路です。
* @default 'https://www.plantuml.com/plantuml'
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | bun(经 npx -y 即时拉取) |
| api | PlantUML 公共渲染服务(图表源码外发) |
| package | marked(Markdown 解析) |
| package | juice(CSS 内联化) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: npx -y bun ${SKILL_DIR}/scripts/main.ts <markdown_file> --theme <theme>(age
- 网络端点: 外部ネットワークアクセスの宣言: PlantUML レンダリング:https://www.plantuml.com/plantuml に GET リクエストを送信して SVG を取得(図のソースコードを外部送信)。ドキュメントに p が含まれる場合のみ
- 本地工作目录: ファイルの読み書きと成果物の出力: 入力と同じディレクトリに <name>.html を書き込み(上書き前に .bak-YYYYMMDDHHMMSS としてバックアップ)
5二重目の独立検証
- [ok] 实现原理(SKILL.md 编排 + main.ts 执行) — SKILL.md 的 Script Directory/Workflow 段落自证 agent 只做路由,转换由 scripts/main.ts 承担;执行命令逐字可核。
- [ok] PlantUML 执行期外发 — plantuml.ts 的 @default 端点与风险扫描 plantuml.ts:193 的 fetch(svgUrl) 相互印证,判橙据成立。
- [ok] 三套主题存在性 — §1 清单与 §2 内文均含 themes/default.css、grace.css、simple.css,主题描述与 SKILL.md 一致。
- [ok] 依赖栈 — package.json 列出 marked/highlight.js/juice/front-matter/remark-cjk-friendly 等,与实现原理相符。
- [ok] 是否存在凭证读取 — 「凭证/环境变量」65 条命中均为 ${SKILL_DIR}/$HOME 路径或示例占位,未发现密钥/cookie 读取,判定为无。
- [unlocatable] main.ts / render.ts 写盘细节 — bundle 只列清单未展开这两份正文,写盘/备份行为以 SKILL.md 描述与扫描行(main.ts:244、render.ts:868)为据,未代码级复核。
- [ok] URL 命中性质 — 193 条 URL 命中绝大多数为注释/文档链接与 highlight.js 语言名;真实执行期网络仅 plantuml fetch,未发现被夸大的外发。
- [ok] 跨 skill 调用 canghe-format-markdown — SKILL.md Step 0 明写条件式调用,属他人 skill 行为,按范式不参与本 skill 判级。
6結論
1c1036babb2494ed…