Skip to main content

plugin-prepare

Plan a plugin before specifying it — the provider's motions and resources, the API surface to support, and the algebra each operation needs. Writes plugins/<name>/spec/preparation.md.

설치로 이동

소스 정보

저장소
resonatehq/resonate-plugins
최근 소스 활동
2026년 8월 30일 07:24
감지된 SKILL.md 언어
영어
스타
0
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
plugin-prepare
description
Plan a plugin before specifying it — the provider's motions and resources, the API surface to support, and the algebra each operation needs. Writes plugins/<name>/spec/preparation.md.
# plugin-prepare Read [plugin](../plugin) first — the goal, the approach, the algebra. Write `plugins/<name>/spec/preparation.md`: the design the specification is then written from. It decides *what* the plugin exposes and *what shape* each operation has; the specification decides how. Every claim comes from the provider's documentation fetched now, never from memorized API knowledge. ## Procedure 1. Fetch the API documentation, and the OpenAPI document if one is published. Actually fetch each URL and confirm what came back is the document rather than an error page or a login wall. Where one is unreachable from here, record what you read instead — a mirror, the provider's shipped source, an official client library. Never fall back on recall. 2. Name the **motions**: what people actually do with this system, in their words, not the API's. "Render an image from a template." "Open a support ticket and see it through." A motion a caller would not perform through a durable promise is not a motion for us. 3. Name the **resources** those motions act on, and pick the primary one — the one the plugin is about. Most providers have exactly one. 4. Map each motion onto the provider's endpoints, method and path. This is where the provider's async splits become visible: a motion answered by a submit endpoint plus a status endpoint is one motion, not two. 5. Decide the surface. The primary resource's whole lifecycle, every verb the provider offers on it; the durable units; the reads that find ids, constrain arguments, and inspect records. Out: instance administration (users, permissions, licences, settings, schema management the provider expects out of band) and transport mechanics (poll endpoints, token exchanges, webhook registration, pagination plumbing). 6. Give each operation its algebra — `call` or `call + poll`, nothing finer. `call + poll` wherever the provider splits submit from status, since collapsing that split is the point. How the operation begins safely is the specification's Invocation rung and is not decided here. Add `<resource>.submit` only where the wait is long enough that a caller might not want it and the handle stays good long enough to be redeemed. 7. Write the document. Where a decision was close, say so in Open questions rather than burying it — the specification agent inherits your judgement and should know which parts were judgement. ## Template ~~~markdown # <Provider> — preparation | | | |---|---| | **Docs** | <url, or "url — unreachable from here (403); read <what> instead"> | | **OpenAPI** | <same form, or "none published"> | | **Primary resource** | `<resource>` | ## Motions | motion | what the caller is doing | provider endpoints | |---|---|---| | <name> | <one clause> | `POST /v1/images`, `GET /v1/images/{uid}` | ## Surface | operation | algebra | provider endpoints | resolves with | |---|---|---|---| | `image.create` | `call + poll` | `POST /v1/images`, `GET /v1/images/{uid}` | the finished image | | `image.submit` | `call` | `POST /v1/images` | the handle | | `image.get` | `call` | `GET /v1/images/{uid}` | the record | ## Lifecycle — `<primary resource>` | verb | provider endpoint | exposed as | |---|---|---| | create | `POST /v1/images` | `image.create`, `image.submit` | | read | `GET /v1/images/{uid}` | `image.get` | | list | `GET /v1/images` | `image.list` | | update | — | — | | delete | — | — | ## Out of scope | what | why | |---|---| | `POST /v1/accounts` | instance administration | ## Open questions - <a judgement the specification agent should know was a judgement> ~~~ Write `—` in the lifecycle table where the provider has no such endpoint; that is an answer. A verb the provider offers and the plugin does not expose needs a reason here and in the specification, not silence. ## Style Tables, endpoints, and short clauses. No prose paragraphs, no alternatives considered, no restating what the `plugin` skill already says.
GitHub에서 보기