このプロジェクトについて
CLI Printing Pressは、任意のAPIやウェブサイト向けのコマンドラインツールとMCPサーバーを生成するジェネレーターで、AIエージェントによる利用を強く重視しています。Goで書かれており、バイナリと、そのバイナリを駆動するエージェントスキル(スラッシュコマンド)のセットとして配布されています。
機能
- 公式APIドキュメントを読み、人気のコミュニティCLIやMCPサーバーを研究し、ブラウザトラフィックをキャプチャすることで、ドキュメント化されていないAPIをリバースエンジニアリングすることもできます。
- 入力として、OpenAPI仕様、ウェブサイトのURL、またはHARファイルを受け付けます。
- APIごとに2つのバイナリを生成します:CobraベースのCLI(`<api>-pp-cli`)とMCPサーバー(`<api>-pp-mcp`)で、同じクライアント、ストア、認証コードを共有します。
- コードとともに、リサーチドキュメント、検証証明、品質スコアを生成します。
主要な設計ポイント
- ローカルファーストのデータ層:ドメイン固有のSQLiteテーブル、FTS5全文検索、カーソル追跡による増分同期、直接クエリのための`sql`コマンド。`sync`、`search`、`sql`などのコマンドはオフラインで動作します。
- 複合コマンド:データがローカルにあると、`stale`、`health`、`bottleneck`、`reconcile`などのコマンドがリソース間で結合し、履歴を分析できます。
- エージェントネイティブな出力:ターミナルでの人間可読なテーブル、パイプ時の自動JSON、トークン出力削減のための`--compact`、型付き終了コード(0/2/3/4/5/7)、`--dry-run`、`--select`、`--csv`、`--stdin`、およびすべてのコマンドでその他のフラグ。
- デュアルインターフェース:CLIはシェルベースのエージェントを対象とし、MCPサーバーはClaude DesktopやCursorなどのIDE統合を対象としています。
- 検証:スコアカード、ドッグフーディング、動作証明、オプションのライブAPIスモークテストを使用して、幻覚のパス、デッドフラグ、認証の不一致を検出します。
ワークフロー
- インストールは、ジェネレーターの`go install`を実行し、`skills` npm CLIを通じてスキルをインストールするシェルスクリプトを介して行われます。Claude Codeがデフォルトで最もテストされたターゲットです。Codexは`--agent codex`フラグでサポートされています。
- エージェントセッション内で、`/printing-press <app-name>`が生成実行を開始します。追加コマンドには、`/printing-press-reprint`、`/printing-press-polish`、`/printing-press-publish`、`/printing-press-amend`があります。
- パイプラインは、解決/再利用、リサーチブリーフ、エコシステム吸収ゲート、ブラウザスニッフゲート、生成、GOATの構築、シップチェック、オプションのライブスモークテストのフェーズを経て実行されます。個々のステップを停止、再開、再実行したいユーザー向けに、より長い9フェーズの管理パイプラインが文書化されています。
- 出力は`~/printing-press/`の下に整理され、アクティブな実行、公開されたCLI、アーカイブされた原稿用の個別ディレクトリがあります。
注目すべき概念
- 「非自明な洞察」(NOI):APIが本当に何に役立つかを一文で言い換えたもので、生成されたコマンドの創造的な基盤として使用されます。
- 「吸収して超越する」:既存のツールやMCPサーバーから機能をカタログ化し、それらをマッチングしてから、ローカルデータによって可能になる複合機能を追加します。
- 単純なエンドポイントラッパーから行動洞察コマンドまでの「創造性のはしご」。
要件と注意点
- Go 1.26.6以降、`npx`用のNode/npm、およびスキル対応エージェント(Claude Codeでテスト済み)が必要です。
- READMEには、パフォーマンスと品質に関する主張(トークン節約や速度など)がありますが、これらはプロジェクト自身の主張であり、独立して検証されたベンチマークではありません。
- リポジトリにはソースカタログが含まれなくなりました。公開されたCLIは、別のライブラリリポジトリで維持されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.