graft
Graftを使ったアプリやプロキシの構築・リファクタリング・ドキュメント化に使用します。ツールサーバー、APIサーバー、デュアルプロトコルサーバー、MCP-HTTPブリッジの作成など、ツールとハンドラーの定義、認証ミドルウェアの設定、HTTPおよびstdioトランスポートのセットアップ、OpenAPIドキュメントの生成、プロキシモードによる既存APIのラッピングといった操作を網羅します。Graftの核心は「ツールを一度定義するだけで、HTTP RESTエンドポイントとMCPツールの両方として同一サーバーから提供できる」という思想です。
description の原文を見る
>- Use when building, refactoring, or documenting Graft apps and proxies, including when asked to create a tool server, API server, dual-protocol server, or MCP-HTTP bridge. Graft's core thesis: define tools once and serve them as both HTTP REST endpoints and MCP tools from the same server, with discovery, docs, and OpenAPI generated automatically. Covers concrete actions such as defining tools and handlers, configuring authentication middleware, setting up HTTP and stdio transports, generating OpenAPI documentation, wrapping existing APIs via proxy mode, and wiring up the full CLI workflow.
SKILL.md 本文
Graft
Graft サーバーの作成または改善、既存 API の Graft プロキシモードによるラッピング、または現在の graft パッケージの動作に合わせた貢献者向けドキュメントと例の更新が必要な場合に、このスキルを使用してください。
プロダクトのコンセプト
Graft のコア価値には 3 つの側面があります:
- 一度の定義 — 名前、スキーマ、ハンドラーを持つツール。
- HTTP と MCP として提供 — 同じサーバーから、単一の共有パイプライン(同じ認証、バリデーション、ミドルウェア)を通じて。
- ディスカバリーは自動 — エージェントは
agent.json、mcp.json、llms.txt経由でツールを検出します。ユーザーはインタラクティブなドキュメント(/docs)と OpenAPI スペック(/openapi.json)を取得します。ゼロ設定。
Graft を説明する際は、3 つすべての側面をリードします。例を示すときは、両方のアクセスパターン(MCP と HTTP)を実演し、サーバーが自動提供するものについて言及してください。これは、ソースベースのアプリとプロキシモードの両方に適用されます。
ワークフロー
- 変更を提案する前にモードを特定します:
- アプリオーサリング:
createApp(...)、ツール、リソース、プロンプト、HTTP ルート、Node または fetch インテグレーション。 - プロキシ/OpenAPI:
graft serve --openapi ...またはgraft.proxy.yaml。 - ドキュメント/リリースの衛生:README、インストール手順、スキル、例、貢献者チェック。
- メモリを使用する前に現在のリポジトリを確認します:
- ツールアクセスが利用可能な場合は、現在のソース、パブリックエクスポート、CLI コマンド、スキャッフォルドテンプレート、テストを検査します。
- ツールアクセスが利用不可の場合は、推測を避けるために必要な最小限のファイルまたは例セットを要求してください。
- 例とレビューで現在のパブリックコントラクトに従います:
- インラインツール例:
app.tool('name', config)を優先します。 - モジュラーツール例:
defineTool(...)とapp.tool(definedTool)を優先します。 - 認証形状:
true、['role']、または{ roles: [...] }。 - MCP Streamable HTTP エンドポイント:
POST /mcp。 - 自動提供フレームワークエンドポイント:
/.well-known/agent.json、/.well-known/mcp.json、/openapi.json、/docs、/llms.txt、/llms-full.txt、/health。 - フル CLI:
serve、dev、check、test、studio、install、add-tool。 - ツール例を示すときは、MCP
tools/callの呼び出しと同等の HTTP リクエスト(例:GET /list-items?q=helloまたはPOST /create-entry)を実演してください。
- 正確性を実質的に向上させる場合はツールを使用しますが、ポータビリティを保ちます:
- リポジトリまたはシェルアクセスがある場合は、変更後にファイルを検査し、バリデーションコマンドを実行します。
- リポジトリまたはシェルアクセスがない場合は、仮定を明示的に述べ、推奨事項を目に見えるソースまたはユーザーが提供したスニペットに結びつけておきます。
- 必要な参照のみを読み込みます:
- アプリオーサリング:
references/app-authoring.md - プロキシ/OpenAPI ラッピング:
references/proxy-openapi.md - バリデーション、ドキュメント、リリース衛生:
references/validation-release.md
クイック例
インラインツール — 両方のアクセスパターン
import { createApp } from '@schrepa/graft'
import { z } from 'zod'
const app = createApp()
app.tool('list_items', {
description: 'クエリに一致するアイテムをリストします。',
params: z.object({ q: z.string() }),
auth: true,
handler: async ({ q }) => ({
items: ['hello', 'world'].filter((item) => item.includes(q)),
}),
})
export default app
MCP (tools/call):
{ "method": "tools/call", "params": { "name": "list_items", "arguments": { "q": "hello" } } }
HTTP 等価:
GET /list-items?q=hello
Authorization: Bearer <token>
同じハンドラー、認証ミドルウェア、バリデーションが両方に対して実行されます。
プロキシモード — graft.proxy.yaml
target: https://petstore3.swagger.io/api/v3
tools:
- method: GET
path: /pet/findByStatus
name: find_pets_by_status
description: ステータス別にペットを検索します。
parameters:
type: object
properties:
status:
type: string
- method: POST
path: /pet
name: create_pet
description: ペットを作成します。
parameters:
type: object
properties:
name:
type: string
required: [name]
プロキシサーバーを起動します:
graft serve --config graft.proxy.yaml
Graft は設定された各操作を HTTP エンドポイントと MCP ツール両方として公開し、/openapi.json、/docs、およびディスカバリーファイルを自動生成します。
直接 OpenAPI パスの場合は、以下を使用します:
graft serve --openapi ./openapi.yaml --target https://api.example.com
ガードレール
- 古い例に言及されているからという理由だけで、サポートされていない動作をドキュメント化しないでください。
- 例は実行可能で小さい状態に保ちます;多くのバリアントより 1 つの正しいパターンを優先します。
- 古いノート、ブログ記事、またはメモリより現在のソースとテストを優先します。
- 編集中のリポジトリに実際に存在しない限り、レジストリやパブリッシング成果物について言及しないでください。
- ドキュメントの主張がドリフトする可能性が高い場合は、自動チェックを追加または更新してください。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- schrepa
- リポジトリ
- schrepa/graft
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/schrepa/graft / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。