Qaynam のアイコン
Qaynamqaynam.dev

RSS

← Projects

Beta · 2026 — · TypeScript · Effect · Astro

Cosense Toolbox

Cosense にためたナレッジを外に持ち出したくて作ったパーサーが、LSP やエディタ拡張にまで育ったツール群。

サイトを開く ↗ソースコード ↗

Cosense Toolbox

Cosense にためているナレッジを、Cosense の外でも読んだり、公開したりしたい。そう思って作り始めたのが、Cosense 記法のパーサーでした。 ずっと前から作りたかったのに、時間が取れずに後回しにしていたものです。バイブコーディングで一気に形になり、そこから欲しいものが次々に出てきて、気づいたらツール群になっていました。

個人で作っているもので、Helpfeel 社とは関係ありません。

パーサーから始まった

Markdown の周りで育ってきた unified や unist を参考にして、Cosense 記法を位置情報つきの AST にしています。 AST を mdast に寄せておけば、使う側は好きなものを作れるし、mdast 向けのパッケージも対応させやすくなります。

AST ができたら HTML にしたくなり、HTML ができたら Cosense と同じ見た目にしたくなりました。 HTML は Cosense がブラウザで描いている構造に寄せているので、普段使っている UserCSS をほとんどそのまま当てられます。

  • @cosense-toolbox/parser: Cosense 記法を AST にして、HTML などに描画する
  • @cosense-toolbox/style / @cosense-toolbox/tailwind: 描画した HTML を Cosense らしい見た目にする
  • @cosense-toolbox/cosense-x: .csn / .csnx のページを JSX モジュールにコンパイルする

エディタでも書きたくなった

パーサーがあるなら LSP も、LSP があるならエディタの拡張も、と広がっていきました。 .csn / .csnx のファイルを、いつものエディタで補完やリンク切れの表示つきで書けます。

  • @cosense-toolbox/lsp: 補完、定義へのジャンプ、リンク切れの診断。CI でも使える
  • @cosense-toolbox/textmate: Shiki や VS Code 向けのシンタックスハイライト
  • VS Code 拡張 / Zed 拡張: ハイライトと Language Server をエディタで

ブログとして公開したくなった

プライベートの Cosense には、ブログで公開したい内容も混ざっています。 別のプロジェクトに移すと、直すたびに同期しないといけません。そこで、公開したいページだけを pull して Astro でビルドできるプラグインを作りました。

  • @cosense-toolbox/astro: .csn / .csnx を Astro のページと content collection として使う

このポートフォリオにも入れていて、Cosense で書いたページをそのまま記事としてビルドできるようにしています。

ほかにも

  • テーマビルダー: Cosense の画面を見ながら色を調整し、UserCSS として書き出す
  • アイコンビルダー: 文字と記号からバッジを作り、[name.icon] 用の画像として書き出す

最初はパーサーが一つあれば満足するはずでした。 今は、作れるかどうかより、何を作って、どこで手を止めるかを考える方が難しくなっています。