ドキュメント&知識ベース · JimLiu/baoyu-skills

baoyu-format-markdown

フロントマター、タイトル、要約、見出し、太字、リスト、コードブロックを用いてプレーンテキストやMarkdownファイルをフォーマットします。ユーザーが「Markdownをフォーマットして」「記事を綺麗にして」「フォーマットを追加して」またはレイアウト改善を求めた際に使用します。出力先は {filename}-formatted.md です。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author JimLiuGitHub JimLiu/baoyu-skills ↗Stars 25926License MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)Commit 1567581c26
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

役割の二分:コンテンツレベルの分析・再構成はモデルが SKILL.md の手順(Step 1〜5)に沿って行い、タイポグラフィレベルの確定的な修正は内蔵スクリプト(Step 6)に任せます。

skills/baoyu-format-markdown/SKILL.md
Claude performs content analysis and formatting (Steps 1-5), then runs the script for typography fixes (Step 6).
ここでの処理内容:「検証不能な編集判断」と「スクリプト化可能な組版修正」を分離しています。スクリプトはコンテンツの書き換えに関与しないため、ステップの境界によってモデルの越権余地が制限されます。

コアとなる規律は「書式のみを調整し、内容には触れない」こと:リライト、加筆削除、論評の追加は行いません。

skills/baoyu-format-markdown/SKILL.md
**Core principle**: Only adjust formatting and fix obvious typos. Never add, delete, or rewrite content.
Step 4 ではこれを禁止リスト(Do NOT add sentences/explanations、Do NOT rephrase…)と許可リスト(著者のトーン維持、結論の太字強調、並列項目のリスト・表への整理)に展開しています。

スクリプト本体は unified/remark パイプライン:パース → 任意のCJK向け強調修復 → GFM/frontmatter → stringify を行い、その場でファイルに上書きします。

skills/baoyu-format-markdown/scripts/main.ts
.use(options.emphasis ? remarkCjkFriendly : [])
frontmatter は YAML.parseDocument(`doc.toString({ lineWidth: 0 })`)で再整形され、テキストノード内の引用符指定があれば全角引用符に置換されます。最終的に `writeFileSync(filePath, formattedContent, "utf-8")` で元ファイルを上書きします。

CJK/英字間のスペース調整は自前実装せず、実行時に `npx autocorrect-node --fix` を呼び出してファイルを直接修正します。

skills/baoyu-format-markdown/scripts/autocorrect.ts
const result = spawnSync(npxCmd, ["autocorrect-node", "--fix", filePath], {
spacing はデフォルトで true のため、通常パスでは npm レジストリから autocorrect-node を取得します。--no-spacing で無効化可能です。

任意の引用符正規化:ペアの ASCII 二重引用符および「」を全角の曲がり引用符(“”)に置換します。

skills/baoyu-format-markdown/scripts/quotes.ts
.replace(/"([^"]+)"/g, "\u201c$1\u201d")
デフォルトではオフ(DEFAULT_OPTIONS.quotes=false)であり、--quotes が渡された場合のみテキストノードに対して有効になります。

見出し生成は再利用可能な公式集を活用:references/title-formulas.md が提供する 8 つのフック公式+ストレート型に基づき、4〜5 個の候補を出力してユーザーに選ばせます。

skills/baoyu-format-markdown/references/title-formulas.md
8 hook formulas + straightforward style for balanced title generation.
SKILL.md の要件:まず中核となる論点・最強の主張・読者のペインを抽出し、最も合致する 2〜3 個の公式を選んでフック見出しを生成、さらに 1〜2 個のストレートな見出しを追加(`using formulas from `references/title-formulas.md``)し、最も強力なフックを先頭に置いて (recommended) とマークします。

frontmatter フィールドには固定の処理ルールが存在:title/slug/summary/description/coverImage を扱い、summary と description は文字数要件を伴う 2 系統を用意します。

skills/baoyu-format-markdown/SKILL.md
| `summary` | 1 sentence, ~50-80 chars | Concise hook — for feeds, social sharing, SEO meta |
禁止パターン(「This article introduces…」などの書き出し禁止)を適用します。既存の title があっても候補を再生成しますが、既存の summary/description は保持し、欠落している項目のみを補完します。

ファイル書き込みの規律:{filename}-formatted.md を出力し、上書き前にタイムスタンプ付きでバックアップを作成します。分析ドキュメント {original-filename}-analysis.md も編集の根拠として保持されます。

skills/baoyu-format-markdown/SKILL.md
mv "{filename}-formatted.md" "{filename}-formatted.backup-$(date +%Y%m%d-%H%M%S).md"
Markdown の書式が検出された場合、ユーザーに 3 つの選択肢(書式の最適化 / 元の書式を保持 / 組版修正のみ)を提示します。3 つ目は元ファイルを直接変更するものであり、本スキルにおいてユーザーの元ファイルを直接編集する唯一の分岐です。

2コア機能

01Markdown/プレーンテキストの判別と 3 つの処理パス(最適化/元フォーマット保持/組版修正のみ)
02読者視点でのコンテンツ分析:見どころ・名言、構造、アクション情報、組版課題の 4 次元で -analysis.md に出力
03frontmatter の生成と標準化(title/slug/summary/description/coverImage)
04公式に基づく複数候補の見出し生成とユーザー選択(auto_select によるスキップ可)
05組版修正スクリプト:CJK/英字のスペース調整(autocorrect)、CJK 強調記号修正、全角引用符変換、frontmatter YAML の再整形
06設定ファイル EXTEND.md(プロジェクト/XDG/ホームの 3 階層)による auto_select 等の挙動制御

3外部依存関係

KindDependency / Endpoint
clinpx autocorrect-node --fix(CJK/英文间距修复)
packageremark-cjk-friendly
packageremark-parse / remark-stringify / remark-gfm / remark-frontmatter / unified / unist-util-visit / yaml
clibun(首选运行时;无 bun 时 npx -y bun)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: bun {baseDir}/scripts/main.ts <file.md> [--quotes/--no-spacing/--no-emphasi
  • 网络端点: 外部ネットワークアクセスの宣言: registry.npmjs.org:npx が autocorrect-node を取得(本リポジトリではバージョン未固定)、初回実行後は npm によりキャッシュ
  • 本地工作目录: ファイル読み書きと成果物出力: 処理対象の .md ファイルへのインプレース上書き(main.ts の quotes/emphasis フェーズにおける writeFileSync、「組版修正のみ」パスではユーザーの元ファイルを直接変更)
監査ノート: 3 段階の自己検証:① 判定対象は本スキルディレクトリ(SKILL.md + scripts/{main,quotes,autocorrect}.ts + references/title-formulas.md);② ディレクトリ内の動作はローカルの読み書き(ユーザー md の直接編集、-formatted.md/-analysis.md/バックアップの作成)に加え、固定の公開エンドポイントへの外部通信が 1 件存在:`skills/baoyu-format-markdown/scripts/autocorrect.ts` の `spawnSync(npxCmd, ["autocorrect-node", "--fix", filePath] …)` がデフォルトの spacing 有効時に registry.npmjs.org から該当のサードパーティ CLI を取得・実行;③ 認証情報やキーの読み取りはなく、ユーザーコンテンツの外部送信もなく、リバースエンジニアリング、なりすまし、バイパス、セキュリティのダウングレードもないため、オレンジやレッドではなくイエローと判定。注意点:デフォルトパスでユーザー元ファイルをインプレース変更する点(第 3 のパス)およびバージョン未固定の npx パッケージを実行する点は verdict.risks に記載済み。

5二重目の独立検証

  • [ok] 『模型做内容、脚本做排版』的两段式划分 — SKILL.md Workflow 段逐字:'Claude performs content analysis and formatting (Steps 1-5), then runs the script for typography fixes (Step 6).' 与脚本能力一致(脚本无内容改写逻辑)。
  • [ok] 脚本的确定性修复项与默认值 — main.ts DEFAULT_OPTIONS={quotes:false, spacing:true, emphasis:true};--quotes/--no-spacing/--no-emphasis 均有对应分支;与 SKILL.md 选项表一致。
  • [ok] npx autocorrect-node 为唯一外部命令调用 — 全目录 grep spawn/exec/npx 仅 autocorrect.ts 命中一处;main.ts 只有 readFileSync/writeFileSync。
  • [ok] 外部依赖清单完整性 — package.json 声明 8 个包(remark 生态 + unified + yaml),另加运行时 npx 的 autocorrect-node;全目录无任何 http 端点/API 调用。
  • [ok] 无凭证读取 — 目录内 token 扫描 API_KEY/TOKEN/SECRET/.env/keychain 零命中;仅读取 EXTEND.md 偏好(路径在 SKILL.md 明列)。
  • [ok] 标题公式库内容与『8 个公式』一致 — references/title-formulas.md 首行 '8 hook formulas + straightforward style for balanced title generation.',表格确为 8 行 hook(Subversive…Empathy)。
  • [ok] 『仅排版修复』会原地改用户文件 — SKILL.md 第三条路径写明 'Run typography script on original file in-place / No copy created, modifies original file directly',与 main.ts writeFileSync(filePath…) 行为一致,已列为使用注意。
  • [ok] 元数据(license/stars/commit) — git HEAD=1567581c26ec29f4216c6e6835415bf30343b0e3;仓库根 LICENSE=MIT(Copyright (c) 2026 Jim Liu);GitHub API stars=25926、pushed_at=2026-09-10T15:13:43Z。

6結論

  • プロセスが明確に階層化されており、スクリプトとモデルの責任範囲が重複しない:スクリプトは検証可能な組版修正のみを担当し、内容判断はモデルに委ねることで勝手なリライトのリスクを低減。
  • タイトルや要約の生成に再利用可能な方法論(8 つのフック公式+ストレート型+禁止例)があり、モデルの即興任せにしない。
  • CJK テキスト特有の課題(スペース、強調記号、全角引用符)を決定論的に修正でき、モデルの感覚に依存しない。
  • ファイル書き込み時のバックアップ規律があり、成果物の命名規則も固定されているため、バージョン比較やロールバックが容易。
  • 最適な用途: 自身が書いた長文記事、インタビュー原稿、ブログ下書きをエージェントに渡し、「構造的に流し読みしやすく、要点が掴みやすい」レイアウトへと再構成させ、同時に frontmatter(title/slug/summary/description)を生成したいシナリオに最適です。また、markdown-to-html や post-to-wechat などの後続スキルの前処理(デフォルトのスペース・強調修正により WeChat 等での太字パース失敗を回避)としても適しています。
    不向きな用途: 厳密なレイアウトの一致が要求される文書(固定テンプレートや CI チェックを利用すべき)や、原文の改変が一切許されないコンプライアンス文書には不向きです。既存の Markdown 原文が唯一のマスターであり、直接のインプレース書き換えを許容しない環境(3 番目のパスは直接上書き)には適しません。また、スクリプト単体でのコンテンツ翻訳や要約改変を期待する用途にも適していません(本スキルは書式のみを調整し内容には手を触れません)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload baoyu-format-markdown.tar.gz
    sha256: 6367312d8f2334bb…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 1567581c26.