ネイティブ macOS アプリ · 無料 & オープンソース · 署名・公証済み

ドキュメントは、差分を取る 読むためにある。

PullMark は、ローカルの Markdown を読み手が目にするその姿でレンダリングします。そしてドキュメント中心の GitHub プルリクエストを、変わった単語だけをハイライトしたレンダリング差分として表示。 +/ だらけの文章の壁に目を凝らすことなく、コメントも、提案も、レビューの送信もできます。

Homebrew
$ brew tap jedijashwa/tap
$ brew trust jedijashwa/tap
$ brew install --cask pullmark
直接ダウンロード
PullMark をダウンロード

最新の DMG です。開いて Applications にドラッグするだけ(後片付けは PullMark が引き受けます)。 すべてのリリース →

どちらの方法でも、PullMark がアップデートを確認し、ワンクリックでインストールします。

macOS 13+ · Developer ID 署名、Apple による公証済み · ソースからのビルドも可能

プロジェクトのドキュメントを整形されたページとしてレンダリングする PullMark。blame ガターがオンで、左余白には作者のアバターが、同じコミットで最後に変更された連続ブロックのまとまりごとにひとつずつ並んでいる
整形されたプロジェクトドキュメント。余白には履歴——連続するブロックのまとまりごとにアバターがひとつ、それぞれがコミットへの入り口です。

あなたのエージェント

エージェントは計画を書く。
それを、同僚の文書のようにレビューする。

エージェントは大量の Markdown を生み出します。実装計画、仕様書、調査レポート——誰かが動き出す前に、 あなたの判断を必要とする長い文書たちです。ところが、その判断を伝える既存の手段は、どれもこの仕事に 向いていません。エディタで生ソースを読めば、読み手が見るはずの姿は隠れてしまう。チャットに断片を 貼り付ければ、フィードバックは元の場所から切り離される。PR のコメント欄ほしさに作業中のドラフトを コミットするのは、ただの儀式です——すべての文書がプルリクエストに収まるべきとは限りません。

マージンノートは、フィードバックを文書そのものの中に置きます。ドラフトを レンダリングされた姿で読み、気になった箇所をクリックして、そのブロックに固定された署名付きノートを 残す。ノートの実体はごく普通の HTML コメントで、レンダリングされたページには現れません。だから 「計画のノートに対応して」のひと言で受け渡しは完了。エージェントは、あなたが残したまさに その場所でノートを読みます。コミットも、貼り付けも、プルリクエストも不要。あとは修正が届くのを 眺めるだけ——「比較」がエージェントの編集を単語単位でハイライトし、保存のたびにライブで 更新します。

Wind Gust Alerts と題されたエージェント作の設計仕様書をレンダリングする PullMark。レビュアーの署名付きカードとして 3 件のマージンノートが表示されている——きれいな第 2 稿を求めるファイルレベルのノート、仕様のサンプリングレートの前提に異議を唱えるノート、ある機能に YAGNI を宣告するノート。サイドバーには、ブランチ main の git リポジトリの docs/superpowers/specs フォルダにこの仕様書が見えている
エージェントの仕様書を、その場でレビュー。3 件の署名付きノートが異議のあるブロックに 固定され、ごく普通の HTML コメントとしてファイルそのものに保存されています——エージェントは ひとつずつ対応し、削除していきます。

エージェントに渡す指示文まで含めたループの全体は、エージェントの ページで順を追って説明しています。マージンノートはベータ版で、デフォルトで有効。仕組みの詳細は ドキュメントにあります。

なぜ

文章はコードではない。
コードの流儀でレビューするのは、やめよう。

覚えがあるはずです。README の差分に現れた 40 行の緑の壁と、そのどこかに埋もれた、実際に変わった たった一文。設計ドキュメント、意思決定の記録、運用手順書、エージェント定義——毎週レビューキューを 流れていくものは、どんどん文章になっています。そして文章のソース差分は、あなたが判断すべきその 当のものを覆い隠すのです。

PullMark は変更を、読み手が出会うその姿で見せます。レンダリングされたページの上で、 変わった単語だけがハイライトされる。表は表のまま、図は図のまま、一語の修正はハイライトされた 一語です。どのブロックにコメントしても、GitHub が期待する正確な行に着地します。承認も、変更の リクエストも、作者がワンクリックで適用できる提案も、そのままどうぞ。

「工房のとなりの、読書室。」
Note

PullMark は、あえてフルレビュークライアントにはしていません。表示するのは PR 内の Markdown ファイルだけ。変更のコード部分については、いつものレビューツールが引き続き 最適です。

レビュー

ドキュメントレビューのすべてを、レンダリングされたページから。

レイアウトはインライン左右並列を切り替えられ、生の 「ソース差分」に降りることも、最終形の「結果」をプレビューすることもできます。 すべてツールバーから——ファイルからファイルへの移動も PR への戻りも、サイドバーに触れずに済みます。 YAML フロントマターは太字だらけの壁ではなく控えめなメタデータ表としてレンダリング されるので、設定の多いドキュメントもきれいに差分が取れます。新規ドキュメントは、全ブロックを緑に 染める代わりに「すべて新規」のひと言を添えて、一篇のドキュメントとして読めます。既存のレビュー スレッドは、話題にしているブロックの下に表示。ブロックにポインタを重ねてバブルをクリックすれば、 ブロック全体にも選んだ行だけにもコメントできます。仕上げは概要画面から 「承認」「変更をリクエスト」「コメント」——行コメントの有無は問いません。ファイル単位のコメントや、 通常の会話コメントも残せます。概要画面が示すのは PR の現在地。承認済みか変更 リクエスト中か、各レビュアーの判定、ログまでクリックひとつでたどれる CI チェック、そして読みやすい タイムラインになった会話の全体です。開いている PR は毎分チェックされ、ブランチが動いたらワンクリックで 更新——下書きはそのまま残ります。

ドキュメントのプルリクエストをレビューする PullMark。レンダリングされた差分では変更された段落に単語単位のハイライトが乗り、追加された Mermaid フローチャートが緑の追加ブロックの色合いの上にレンダリングされている。サイドバーはファイルのコメント数を示し、ツールバーのレビューコントロールには保留中のコメント 3 件とともに「レビューを完了」と表示されている
レンダリングされた差分としてのドキュメント PR。変わった一文には単語単位のハイライトが 乗り、新しいフローチャートは追加ブロックの色合いの上にとして届きます——80 行の緑の Mermaid ソースとしてではなく。
レビューを開始

デフォルトの動作。下書きをローカルに集めておき、「コメント」「承認」「変更をリクエスト」の いずれかでまとめて送信します。保留中のレビューとして保存し、github.com で仕上げることも できます。

単一のコメントを追加

単発のレビューコメントをその場で投稿します。ブロックに固定するか、コンポーザーで選んだ 行だけに絞り込めます。

提案を追加

鉛筆アイコンがブロックの Markdown ソースをエディタに開きます。加えた変更は ```suggestion として投稿され、作者はワンクリックで適用できます。

PullMark のプルリクエスト概要。「オープン」チップ付きの PR タイトル、「変更をリクエスト済み」カプセル、「チェック成功」カプセル、判定バッジをまとったレビュアーのアバター、docs-guild チームのチップ、レンダリングされた PR 説明、そして最初のレビューコメントに表が表として表示されている会話のタイムライン
会話もドキュメントとして。レビューコメントの中の表は表としてレンダリングされ、 各レビュアーのアバターは自分の判定バッジをまとっています。

読む

ディスクの上にすでにある Markdown のための、ちゃんとしたリーダー。

自分のメモ、README、チームの docs フォルダ。ファイルひとつでもディレクトリ丸ごとでも 開いて、本来あるべき姿で読めます。ディスク上で変更された瞬間にすべてが再レンダリングされ、相対パスの 画像やリンクは当たり前のように解決されます。そして、GitHub がレンダリングするものなら、PullMark も レンダリングします。

太字斜体取り消し線インラインコードハイライト、H2O、mc2e + 1 = 0ホバープレビュー付きのリンク、脚注[1]タスクリスト——さらに表、Mermaid 図、 シンタックスハイライト付きコード、> [!NOTE] アラート、オフラインの KaTeX 数式、 [toc]、そして整ったメタデータ表に折りたたまれる YAML フロントマター。

docs リポジトリのローカル Markdown ファイルをレンダリングする PullMark。サイドバーの「開いているファイル」セクションには確定済みの文書 3 件と斜体のプレビュー 1 件。「場所」セクションにはフォルダがサブフォルダと Markdown ファイルのツリーとして表示され、git ブランチのチップと GitHub リポジトリのマークをまとっている。開いているプルリクエストの変更ファイルはステータスアイコンとコメント数バッジ付きのツリーを成し、レンダリングされた文書には見出し・リスト・リンク・Tip アラートが見える。タイトルバーにはファイルのフォルダと git ブランチ、隅には語数のピルが表示されている
フォルダは生きたツリーとして並び、どの場所にも git ブランチが添えられ、ブラウズ中の ファイルはプレビュー——「開いているファイル」に現れる斜体の 1 行で、次の クリックで入れ替わります。プルリクエストはローカルファイルの隣に並び、タイトルバーは今いる場所を 心得ています。
  • 余白に宿る履歴 — 控えめな blame ガター。連続ブロックのまとまりごとに アバターがひとつ。ホバーで作者・日付・コミット、クリックで行履歴の全体へ。
  • つねに最新 — どのエディタから保存しても、ページはもう再レンダリング されています。
  • 履歴との差分 — ワンクリックで、作業中のファイルを最近の任意のコミットや ブランチと比較。PR の差分と同じレンダリングで、ファイルが変わり続けてもライブで追従します。 pullmark --diff ならターミナルから——「エージェントはいま自分のドキュメントに 何をした?」への最速の答えです。
  • 埋もれないブラウズ — フォルダやリポジトリをシングルクリックでたどると、 各ファイルはプレビューとして開きます。「開いているファイル」に置かれる斜体の 1 行だけが使われ、 次のクリックで入れ替わります。ダブルクリック(または編集の開始)で確定です。
  • アウトラインサイドバー — 見出しを一望するナビゲータ風マップ。トグル ひとつで現れます。
  • 何でも検索⌘F でページ内の一致を順にたどり、 ⇧⌘F でサイドバーの全ファイルを一括検索。
  • リフローするズーム⌘+⌘−(またはピンチ)で テキスト・画像・本文カラムがまとめて拡大縮小。起動をまたいで記憶され、ナビゲーションも 一緒に育ちます。
  • クリックで拡大表示 — 画像・Mermaid 図・ブロック数式は、パンとズームの できる専用オーバーレイで開きます。複雑な図がカラム幅に閉じ込められることはありません。 見ているそのものを保存・共有でき、図は本物の SVG として書き出せます。
  • どこへでも持ち出せる — PDF や自己完結した単一の HTML として書き出し。 ⌘C は Docs や Slack にリッチテキストで貼り付き、⌥⌘C は Markdown を 返します。
  • 3 つの読書テーマ — Editorial、GitHub、Terminal。「設定」でライブ プレビューでき、自作の CSS を置くこともできます。ライトとダークは Mermaid まで含めてすべてを 着替えさせ、行の長さも Standard・Wide・Full Width から選べます。
  • GitHub リンクはアプリ内で — Markdown ファイルへの github.com リンクをクリックすると PullMark がレンダリングし、リポジトリ @ ブランチの出所バーが つねに表示されます。 クリックならブラウザへ。
  • 「クイックオープン」⌘K であいまい一致から任意の見出し・ファイル・PR に ジャンプ。PR の URL、リポジトリの URL、ファイルパスを貼り付ければ、それを直接開きます。
  • 移動は移動として — そのまま場所を変えた段落は、赤と緑のノイズではなく、 控えめな紫のチップ付きで一度だけレンダリングされます。
  • 続きから再開 — ファイルも PR も読書位置も、起動時に復元されます。

ここまでがハイライトです。残りはドキュメントに—— すべての機能、すべての設定、すべてのアイコン、キーボードマップの全体、そして pullmark コマンド。

読むのが基本。編集は、その場で。

⌘E を押すと、ページがそのままエディタになります。カーソルの下のブロックが その場で生の Markdown を見せ——書体も位置もそのまま、何も跳ねません——すぐに入力を始められます。 矢印キーでブロックを移り、Backspace で結合、空行で分割。ブロックを離れると、他のすべてと同じ ガード付き・バージョン管理された経路で保存されます。基本はあくまで読むこと。モードの境界は、 保存という所作です。

編集モードのレンダリングされた文書。ひとつの段落だけが生の Markdown ソースとしてその場に現れ、まわりはレンダリングされた内容のまま
編集モード。アクティブなブロックはソースを見せ、それ以外はレンダリングされたままです。

GitHub はドキュメントの住まい。だから、読む場所として扱う。

Markdown ファイルへの github.com リンクをクリックすると、PullMark が アプリ内で取得してレンダリングします。最初のクリックでどちらの動作にするか尋ね、 クリックは つねにもう一方を実行。ページ上部の出所バーが、いま読んでいるリポジトリとブランチを、解決された コミットに固定して正確に示します。相対リンクはリポジトリを基準に解決され続け、Markdown ツリーの全体は サイドバーからワンクリック。プライベートリポジトリには PR がすでに使っている GitHub サインインが そのまま使われ、取得した内容がディスクに触れることはありません。どのリポジトリにもブランチのチップが 付き、その場で切り替えるのも、別ブランチを独立したサイドバー項目として開くのも、ローカルの ワークツリーに飛び移るのも自在。しかも、そのブランチのリポジトリがすでに Mac 上にクローンされて いれば、リンクはローカルファイルの方を開きます。

GitHub リポジトリから取得した Markdown ファイルをレンダリングする PullMark。本文の上の出所バーにはリポジトリ名、ブランチのチップ、ファイルパス、固定されたコミットが並び、「GitHub で開く」リンクがある。サイドバーの「場所」セクションには本のアイコン付きのリポジトリとその Markdown ファイルツリーが見えている
GitHub から直接読むドキュメント。出所バーがつねに現在地——リポジトリ、ブランチ、 固定されたコミット——を告げ、ブランチのチップはページを離れずに切り替えも別ブランチのオープンも こなします。
PullMark の設定ウィンドウ、「外観」タブ。GitHub・Editorial・Terminal の 3 枚のライブテーマプレビューカードが同じサンプル文書を実際のパイプラインでレンダリングしており、Editorial が選択されている。下にはカスタムの Themes フォルダを開くボタン
設定 → 外観。実際のパイプラインでレンダリングされる 3 枚の ライブテーマプレビュー——カードをクリックで切り替えです。

ネイティブ

Mac アプリらしく振る舞う、Mac アプリ。

クイックルック

Finder で Markdown ファイルを選んでスペースキーを押せば、アプリを開くまでもなく、 読書テーマでレンダリングされた姿が見られます。

本物の CLI

pullmark README.mdpullmark ~/wt docs/plan.md——ファイルも フォルダもワークツリーも、起動中のアプリの、つねに最前面のウィンドウに開きます。 pullmark --help にもドキュメントにも詳細があります。

.md のデフォルトアプリに

「設定」のワンクリックで、Finder のダブルクリックがどこでも「レンダリングして開く」の 意味になります。アップグレードで関連付けが外れても、PullMark が気づいて取り戻しを申し出ます。

いつもの認証情報で

独自のログインはありません。PullMark は gh auth token か git の credential helper を使うので、プライベートリポジトリも組織のリポジトリもそのまま動きます。

ディスクには何も残さない

取得した PR の内容は、一時的なセッションと上限付きのメモリキャッシュの中だけに存在します。 GitHub から来たものが永続ストレージに書き込まれることはありません。

オープンソース、MIT

Swift 製、パッケージ依存はゼロ、そして邪魔をしないライセンスソースを読む

ドキュメントに、読書室を。

無料、オープンソース、署名・公証済み。 ダウンロードひとつの距離です。

Homebrew
$ brew tap jedijashwa/tap
$ brew trust jedijashwa/tap
$ brew install --cask pullmark
直接ダウンロード
PullMark をダウンロード

最新の DMG です。開いて Applications にドラッグするだけ(後片付けは PullMark が引き受けます)。 すべてのリリース →

どちらの方法でも、PullMark がアップデートを確認し、ワンクリックでインストールします。

またはソースからビルド