Agent skill

Gram Management API

by speakeasy-api in speakeasy-api/gram

Concepts, external interfaces, and conventions for Gram's management API — the Goa-designed HTTP-RPC surface under /rpc/<service.<method that powers the dashboard, CLI, and public SDK.

AGPL-3.0Auto-check passedBackend & APIs

Install Gram Management API

skills CLI
$ npx skills add speakeasy-api/gram --skill gram-management-api -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install speakeasy-api/gram gram-management-api --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/gram-management-api .claude/skills/gram-management-api && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gram-management-api
GitHub stars
272
Token cost
~5.9k tokens
SKILL.md length
2,362 words
Files
1
Skills in repo
39
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Concepts, external interfaces, and conventions for Gram's management API — the Goa-designed HTTP-RPC surface under /rpc/<service.<method that powers the dashboard, CLI, and public SDK.

  • Works in 10 steps: Edit the service's… → Run mise run gen:goa-server to… → Implement the new method on the service… → …
  • Tasks that involve OpenAPI specifications
  • SKILL.md covers Concepts and terminology, Server, Server-client contract and Jobs to be done, plus 3 more sections
  • Calls mise and go

What it does

Gram Management API is an agent skill from speakeasy-api/gram. Concepts, external interfaces, and conventions for Gram's management API — the Goa-designed HTTP-RPC surface under /rpc/<service.<method that powers the dashboard, CLI, and public SDK. Activate whenever the task involves designing, implementing, or modifying a management endpoint (new service, new method, payload/result changes, OpenAPI/SDK surface changes, CLI changes, wiring a new service into the server).

Its SKILL.md is about 5.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering OpenAPI specifications. It works with OpenAPI. The repository describes itself as: Securely scale AI usage across your organization. A single stack to Connect, Secure, Observe and Distribute agents, MCPs, and Skills within your company. The licence is AGPL-3.0.

When your agent uses it

  • Tasks that involve OpenAPI specifications

Example prompts

  • “/gram-management-api”

Workflow steps

10 steps, taken from the first numbered list in SKILL.md.

  1. Edit the service's server/design//design.go — add a Method("", ...) block with Payload, Result, HTTP(...), and the three OpenAPI meta keys.
  2. Run mise run gen:goa-server to regenerate the service interface and HTTP server code.
  3. Implement the new method on the service in server/internal//impl.go, following the handler skeleton.
  4. Add any required SQLc queries to server/internal//queries.sql and run mise run gen:sqlc-server.
  5. Add a view builder in server/internal/mv/.go if the response introduces a new shape.
  6. Gate the handler with an existing RBAC scope (see gram-rbac skill) and emit audit events for mutations (see gram-audit-logging skill).
  7. Write a _test.go file covering the happy path plus the RBAC-deny and not-found / bad-request paths.
  8. Run mise run lint:server and mise run test:server ./internal//....
  9. Run mise run gen:sdk to propagate the change into the TypeScript SDK and OpenAPI outputs.
  10. Add .changeset/.md with "server": minor.

What it can do on your machine

Read from SKILL.md and the folder at commit 4d32da1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • mise
    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Gram Management API loads about 5.9k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 2,362 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~5.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from speakeasy-api/gram at commit 4d32da1, republished under its AGPL-3.0 licence (© speakeasy-api). 2,362 words, ~5,870 tokens.

Download SKILL.mdSave it as .claude/skills/gram-management-api/SKILL.md (or your agent's skills folder).
name
gram-management-api
description
Concepts, external interfaces, and conventions for Gram's management API — the Goa-designed HTTP-RPC surface under `/rpc/<service>.<method>` that powers the dashboard, CLI, and public SDK. Activate whenever the task involves designing, implementing, or modifying a management endpoint (new service, new method, payload/result changes, OpenAPI/SDK surface changes, CLI changes, wiring a new service into the server).
metadata.relevant_files
server/design/**/*.go, server/internal/*/impl.go, server/internal/*/queries.sql, server/internal/*/setup_test.go, server/internal/mv/**/*.go…

Gram's management API is the internal HTTP-RPC surface that the dashboard, CLI, and SDK use to administer projects, toolsets, deployments, access, and related resources. Every endpoint lives at /rpc/<service>.<method>, is authored in Goa DSL under server/design/, implemented in a single Service struct per package under server/internal/<service>/, and exposed through generated server stubs, OpenAPI, CLI bindings, and a TypeScript SDK.

Concepts and terminology

Service. A named collection of related endpoints (e.g. remoteMcp, access, auditlogs). Each service maps one-to-one to a Go package of the same name.

Method. A single endpoint on a service. Exposed as /rpc/<service>.<method>.

Payload / Result. The input and output types for a method. Payloads are composed from shared security payloads plus method-specific form attributes.

Security scheme. The authentication mechanism a method accepts. Gram's management endpoints use three schemes: Session (browser cookie), ByKey (API key header), and ProjectSlug (project-selector header). Additional schemes exist for non-management surfaces and are out of scope here.

Model views (mv). Stateless functions that convert database row types into API response types. Keep database types out of the API boundary — handlers always return a view, never a repo struct.

Handler. One method implementation on the Service struct.

Management API vs public SDK. The same Goa design produces two OpenAPI outputs: an internal spec used to generate the TypeScript SDK that powers the dashboard and CLI, and a public spec derived from it via redaction overlays. Only the internal SDK sees every endpoint.

Changeset. A short changelog file written alongside a change that identifies which package bumps (server, dashboard, sdk) and by how much (patch, minor, major).

Server

The design, implementation, tests, and per-service generated code for every management endpoint live under server/.

Conventions

Naming. Goa service names (e.g. remoteMcp, auditlogs) and method names (e.g. createServer) are camelCase. DSL types (e.g. CreateServerForm, RemoteMcpServer) are PascalCase. Go package names under server/internal/ and server/design/ are lowercase with no separators (e.g. remotemcp).

Design layout. Service DSL lives at server/design/<svc>/design.go. The service package must be blank-imported in server/design/gram.go (alphabetised) for the generator to pick it up.

HTTP methods. Read methods use GET; mutations use POST. Deletes that carry only an id query parameter use DELETE.

Security DSL helpers. server/design/security/ exports the Session, ByKey, and ProjectSlug schemes plus paired helpers — SessionPayload()/SessionHeader(), ByKeyPayload()/ByKeyHeader(), ProjectPayload()/ProjectHeader() — that attach the right payload field and HTTP header to a method.

Security composition. Most management endpoints advertise Session and ByKey side-by-side via repeated Security(...) calls on the service so the dashboard and API-key clients can both reach them. Project-scoped endpoints additionally layer ProjectSlug via ProjectPayload() / ProjectHeader() so the caller must name a project.

Shared errors. Every service calls shared.DeclareErrorResponses() (from server/design/shared/errors.go) exactly once so the standard Gram error envelope applies to every method.

Shared types. When a payload or result type is reused across services, add Meta("struct:pkg:path", "types") so the generator emits it under server/gen/types/ instead of the per-service package.

OpenAPI meta keys. Every method has three metadata keys that control the downstream SDK/CLI names:

  • Meta("openapi:operationId", "verbNounSubject") — OpenAPI operation id.
  • Meta("openapi:extension:x-speakeasy-name-override", "methodName") — method name on the SDK service class.
  • Meta("openapi:extension:x-speakeasy-react-hook", '{"name": "HookName"}') — React Query hook name.

impl.go layout. Lives at server/internal/<svc>/impl.go. Contains the Service struct (injected dependencies — tracer, logger, database pool, *auth.Auth, *access.Manager, plus feature-specific fields), compile-time assertions (var _ gen.Service = (*Service)(nil), and var _ gen.Auther = (*Service)(nil) when ByKey is advertised), a NewService(...) constructor, an Attach(mux, service) wiring function, APIKeyAuth when ByKey is advertised, and one method per Goa Method declaration.

Model view files. server/internal/mv/<svc>.go (singular or per-resource — e.g. remotemcpserver.go). Exported functions are named Build<Subject>View and Build<Subject>ListView. The package doc calls these "model views", which is where the package name comes from.

Wiring. New services are attached in server/cmd/gram/start.go with <svc>.Attach(mux, <svc>.NewService(...)) near the other service attachments.

SQLc. Per-service queries live in server/internal/<svc>/queries.sql. Every new service requires a stanza in server/database/sqlc.yaml pointing at its queries file and writing to server/internal/<svc>/repo/.

Resource URNs. Every resource owned by the service gets a URN type under server/internal/urn/<resource>.go (template: server/internal/urn/api_key.go). URN types wrap uuid.UUID and give callers compile-time protection against mixing ids from different subjects. Audit event structs require them for subject identifier fields (see gram-audit-logging); other consumers can adopt them opportunistically.

Test layout. Tests live in package <svc>_test (black-box). A single setup_test.go per service defines TestMain (calling testenv.Launch) and a newTestService(t) factory that clones a fresh test database, seeds an auth context, and returns the live *Service. Package-local helpers typically include withExactAccessGrants for scope setup and requireOopsCode for error-shape assertions. One <method>_test.go per handler.

Common code flows

Handler skeleton. Inside each method: extract authCtx from context → s.access.Require(...) → validate inputs → repo work → return mv.Build<Subject>View(...). Handlers never return repo types directly. For mutation handlers, wrap the repo work in a transaction — s.db.Begin(ctx) → defer o11y.NoLogDefer(func() error { return dbtx.Rollback(ctx) }) → repo writes → audit.Log* → dbtx.Commit(ctx) — so the audit row and the state it describes commit atomically. Read handlers typically don't need a transaction or audit call.

Cascading soft-deletes. When a delete handler tombstones a parent row whose children reference it, the children have to be soft-deleted in the same handler. ON DELETE CASCADE foreign keys only fire on hard deletes, so a soft-deleted parent otherwise leaves orphan children that still resolve in the active set and point at a tombstone. Run the child cleanup inside the same dbtx as the parent write so the cascade is atomic with it. Scope the cleanup query by both the parent id and project_id (per the postgresql skill) and filter on deleted IS FALSE so re-deletes are no-ops. If the child subject is independently audited, make the cleanup query :many with RETURNING * and emit one audit.Log<Verb> per affected row before the parent's audit event — see "How to audit a cascading delete of child resources" in gram-audit-logging. Tests should both assert no active children remain pointing at the deleted parent and assert the expected child audit-event delta.

Attach wiring. func Attach(mux goahttp.Muxer, service *Service) constructs gen.NewEndpoints(service), layers the middleware.MapErrors() and middleware.TraceMethods(tracer) middleware, and mounts the endpoints via srv.Mount(mux, srv.New(endpoints, mux, goahttp.RequestDecoder, goahttp.ResponseEncoder, nil, nil)).

Non-generated files

Substitute the service name for <svc> and the method name for <method>.

PathPurpose
server/.golangci.yamlPer-file linter exceptions.
server/cmd/gram/start.goWires every service into the HTTP mux.
server/design/<svc>/design.goThe service's Goa design. Regenerates server/gen/<svc>/ and server/gen/http/<svc>/ via mise run gen:goa-server.
server/design/gram.goRoot Goa import graph. Regenerates the aggregate server/gen/** tree via mise run gen:goa-server.
server/design/security/Shared security schemes and helpers.
server/design/shared/Design types shared across services.
server/internal/<svc>/<method>_test.goBlack-box test file, one per method.
server/internal/<svc>/impl.goThe service implementation.
server/internal/<svc>/queries.sqlThe service's SQLc queries. Regenerates server/internal/<svc>/repo/ via mise run gen:sqlc-server.
server/internal/<svc>/setup_test.goShared test harness for the service.
server/internal/<svc>/shared.go (or similar)Non-trivial helpers specific to the service.
server/internal/mv/<svc>.goView builders for the service's response types.
Generated files

Files under server/gen/** and any repo/ subdirectory carry a DO NOT EDIT header.

PathGenerator
server/gen/<svc>/{service.go, client.go, endpoints.go}mise run gen:goa-server from server/design/<svc>/design.go.
server/gen/http/<svc>/{server,client}/{server.go, client.go, cli.go, encode_decode.go, paths.go, types.go}mise run gen:goa-server from server/design/<svc>/design.go.
server/gen/types/mise run gen:goa-server — aggregates types across services that mark Meta("struct:pkg:path", "types").
server/internal/<svc>/repo/{db.go, models.go, queries.sql.go}mise run gen:sqlc-server from server/internal/<svc>/queries.sql (via the service's stanza in server/database/sqlc.yaml).

Server-client contract

The server's design authors the contract; clients receive it through generated OpenAPI, a TypeScript SDK, and CLI bindings. The contract is versioned through changesets.

HTTP routes. /rpc/<service>.<method>. Method names are derived from the Goa Service/Method names — renaming them is a breaking change for CLI and any direct HTTP callers.

OpenAPI. server/gen/http/openapi3.yaml is the raw Goa output (Goa also emits a sibling openapi3.json, but it is gitignored — nothing consumes it). .speakeasy/workflow.yaml defines two sources (Gram-Internal, Gram-Public) that apply overlays from .speakeasy/overlays/ to produce .speakeasy/out.openapi.yaml and .speakeasy/openapi-public.yaml. The TypeScript SDK is generated from the internal spec.

TypeScript SDK. client/dashboard/src/sdk/ — per-operation modules under src/funcs/, a per-service class under src/sdk/, React Query hooks under src/react-query/, and model types under src/models/{components,operations}/.

CLI bindings. server/gen/http/cli/gram/cli.go provides command bindings over the same endpoints.

Changesets. .changeset/<kebab-slug>.md with YAML frontmatter of the form "server": minor (or "dashboard": patch, etc.) and a one-paragraph body. A new endpoint is usually "server": minor; a bug fix or dashboard-only change is patch.

Regeneration. After any design change, run mise run gen:goa-server (server stubs, OpenAPI, CLI), then mise run gen:sdk (Speakeasy overlays, TypeScript SDK, the public OpenAPI output). gen:sdk accepts --check (fail if outputs drift), --skip-versioning (no version bump during iteration), and --skip-upload-spec (skip the Speakeasy registry upload).

Jobs to be done

Show full SKILL.md (996 more words)Show less
How to add a new method to an existing service
  1. Edit the service's server/design/<svc>/design.go — add a Method("<method>", ...) block with Payload, Result, HTTP(...), and the three OpenAPI meta keys.
  2. Run mise run gen:goa-server to regenerate the service interface and HTTP server code.
  3. Implement the new method on the service in server/internal/<svc>/impl.go, following the handler skeleton.
  4. Add any required SQLc queries to server/internal/<svc>/queries.sql and run mise run gen:sqlc-server.
  5. Add a view builder in server/internal/mv/<svc>.go if the response introduces a new shape.
  6. Gate the handler with an existing RBAC scope (see gram-rbac skill) and emit audit events for mutations (see gram-audit-logging skill).
  7. Write a <method>_test.go file covering the happy path plus the RBAC-deny and not-found / bad-request paths.
  8. Run mise run lint:server and mise run test:server ./internal/<svc>/....
  9. Run mise run gen:sdk to propagate the change into the TypeScript SDK and OpenAPI outputs.
  10. Add .changeset/<kebab-slug>.md with "server": minor.
How to add a brand-new management API service
  1. Add a blank import for the new package in server/design/gram.go (alphabetised).
  2. Create server/design/<svc>/design.go with the service declaration, Security(...) calls, shared.DeclareErrorResponses(), and the initial set of methods.
  3. Add a stanza in server/database/sqlc.yaml pointing at server/internal/<svc>/queries.sql and writing to server/internal/<svc>/repo.
  4. Add server/internal/urn/<resource>.go (and a test file) for each new resource the service owns, following the server/internal/urn/api_key.go template.
  5. Author server/internal/<svc>/queries.sql.
  6. Run mise run gen:goa-server and mise run gen:sqlc-server (or mise run gen:server which runs both).
  7. Implement server/internal/<svc>/impl.go: Service struct, compile-time assertions, NewService, Attach, APIKeyAuth (when ByKey is advertised), and each method handler.
  8. Add view builders in server/internal/mv/<svc>.go.
  9. Wire the service into server/cmd/gram/start.go with <svc>.Attach(mux, <svc>.NewService(...)) near the other attachments.
  10. Add server/internal/<svc>/setup_test.go plus one <method>_test.go per handler.
  11. Add any new RBAC scopes (gram-rbac) and audit subjects (gram-audit-logging) the service needs.
  12. Run mise run lint:server, mise run test:server, and mise run gen:sdk.
  13. Add .changeset/<kebab-slug>.md with "server": minor.
  14. Run mise run go:tidy if imports changed.
How to change a payload or result type
  1. Edit the type in server/design/<svc>/design.go. Prefer additive changes: new Attribute calls on existing types are backwards compatible; Required("...") additions and attribute removals are not.
  2. Run mise run gen:goa-server.
  3. Update the handler in server/internal/<svc>/impl.go to populate or consume the new fields. exhaustruct will flag missed struct fields at lint time.
  4. Update the view builder in server/internal/mv/<svc>.go if the response type changed.
  5. Run mise run gen:sdk to propagate to the SDK surface, then update any dashboard consumers (see frontend skill).
  6. Update tests to cover the new shape.
  7. Add .changeset/<kebab-slug>.md — "server": patch for additive changes, minor for anything consumers would notice.
How to rename an endpoint or override its SDK / hook name

SDK surface names are controlled by OpenAPI metadata, not by renaming Go symbols.

  1. Change Meta("openapi:operationId", ...), x-speakeasy-name-override, and/or x-speakeasy-react-hook on the Method in the design file.
  2. Run mise run gen:goa-server then mise run gen:sdk to regenerate the SDK and hook names.
  3. Update dashboard consumers to use the new names (see frontend skill).
  4. Note that the HTTP path is derived from the Goa Service/Method names — changing those is a breaking change for CLI and any direct HTTP callers. Prefer adding a new method and deprecating the old.
How to regenerate outputs after a design change

Order matters because each step's output is the next step's input.

  1. mise run gen:goa-server — after any edit under server/design/**.
  2. mise run gen:sqlc-server — after any edit under server/internal/*/queries.sql or server/database/sqlc.yaml. Requires the local Postgres container from mise run infra:start (sqlc connects to the database to type-check queries). (Or use mise run gen:server to run both.)
  3. mise run lint:server and mise run test:server — catch struct-field drift early.
  4. mise run gen:sdk — regenerate the TypeScript SDK and the public/internal OpenAPI files.
  5. mise run go:tidy if imports changed.

Relevant mise tasks

TaskPurpose
mise run build:serverBuild the server binary.
mise run build:tunnel-gatewayBuild the tunnel gateway binary.
mise run gen:goa-serverRegenerate everything under server/gen/** from the Goa design files.
mise run gen:sdkApply Speakeasy overlays and regenerate the TypeScript SDK and both public/internal OpenAPI files. Flags: --check, --skip-versioning, --skip-upload-spec.
mise run gen:serverConvenience: runs gen:sqlc-server then gen:goa-server.
mise run gen:sqlc-serverRegenerate every repo/ package from every queries.sql. Requires mise run infra:start (sqlc connects to the local Postgres to type-check queries).
mise run go:tidygo mod tidy across the workspace.
mise run lint:servergolangci-lint over the server tree including exhaustruct.
mise run test:serverRuns go test across the server tree; accepts go test arguments.

Maintaining this skill

This file documents conventions that evolve over time. Adding a new endpoint or service using the patterns above is already covered by "Jobs to be done" — those don't require skill edits. Structural changes do. Update this skill in the same commit when you make any of the following kinds of changes:

  • Changing the /rpc/<service>.<method> HTTP route convention, or introducing a second route convention alongside it.
  • Adding, removing, or renaming a security scheme (Session, ByKey, ProjectSlug).
  • Changing the required OpenAPI meta keys or their semantics.
  • Replacing mv/ with a different view pattern, or changing the Build<Subject>View naming convention.
  • Changing the impl.go anatomy — new required struct fields, new middleware layer in Attach, a different NewService contract.
  • Changing the black-box test convention (package <svc>_test, testenv.Launch, newTestService) or moving shared helpers out of per-service setup_test.go.
  • Changing the Speakeasy workflow — new overlay stages, different source definitions in .speakeasy/workflow.yaml, a third OpenAPI output alongside internal/public.
  • Changing the changeset format or adding a new package target.
  • Adding a new API-relevant mise task that belongs on the cheat sheet.

Cross-references

  • golang — Go code style, error handling (oops), logging, testing, dependency injection, and the conv / o11y helpers referenced in the handler skeleton.
  • postgresql — schema design, migrations, SQLc query rules, and the project_id scoping requirement.
  • gram-rbac — scope declaration and access.Require(ctx, access.Check{...}) enforcement inside handlers.
  • gram-audit-logging — emitting audit.Log* calls inside handler transactions.
  • frontend — consuming endpoints from the dashboard via the generated SDK and React Query hooks.
  • mise-tasks — modifying any of the .mise-tasks/gen/*.sh scripts referenced above.

© speakeasy-api, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/gram-management-api of speakeasy-api/gram.

Open the folder on GitHubat commit 4d32da1

Compare with similar skills

Gram Management API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Gram Management API compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gram Management API this skillspeakeasy-api/gram272—~5.9kAutomated safety check: PassAGPL-3.0
ToolJet Marketplace Plugin BuilderToolJet/ToolJet41k—~2.1kAutomated safety check: PassAGPL-3.0
Step Partsearthtojake/text-to-cad18k1 repos~1.5kAutomated safety check: PassMIT
API DesignerJeffallan/claude-skills12k2 repos~2kAutomated safety check: PassMIT
OpenAPI to MCP Servermcp-use/mcp-use11k—~5.2kAutomated safety check: PassApache-2.0
Use Yaakmountain-loop/yaak19k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Turns an API description, such as an OpenAPI file or a Postman collection, into a connector plugin for ToolJet's marketplace and checks it with the repo's validator.

    41k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Step Parts

    earthtojake/text-to-cad

    Find, evaluate, and download common purchasable CAD parts from step.parts, including named off-the-shelf actuators, servos, motors, electronics boards, connectors, screws, bolts, nuts, washers…

    18k GitHub starsUsed in 1 repo~1.5k tokens
    Backend & APIsAuto-check passed
  • API Designer

    Jeffallan/claude-skills

    Designs REST and GraphQL APIs from resource modeling to an OpenAPI 3.1 contract, with versioning, pagination and RFC 7807 error handling.

    12k GitHub starsUsed in 2 repos~2k tokens
    Backend & APIsAuto-check passed
  • OpenAPI to MCP Server

    mcp-use/mcp-use

    Turns an OpenAPI or Swagger spec into an MCP server with the mcp-use TypeScript SDK, mapping each operation to a tool, wiring auth, testing and deploying.

    11k GitHub stars~5.2k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Use Yaak

    mountain-loop/yaak

    A skill your agent uses when the user mentions Yaak, a Yaak workspace, or the yaak command, or asks to call, hit, or smoke test HTTP/REST endpoints, save or organize API requests for reuse or manual…

    19k GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • Old Coder API Design

    AmazingAng/old-coder

    Reviews or designs an HTTP/JSON API's endpoints, auth, pagination, versioning and deprecations, guarding against inventing a bespoke interface or silently breaking consumers.

    749 GitHub starsUsed in 1 repo~3.4k tokens
    Backend & APIsAuto-check passed

More from speakeasy-api/gram

All 39 skills in this repo
  • Gram Playwright CLI

    speakeasy-api/gram

    A skill your agent uses when automating the Gram dashboard in a browser, capturing screenshots, inspecting pages.

    272 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Transactional Email

    speakeasy-api/gram

    A skill your agent uses when adding, changing, restyling, reviewing, validating, or previewing a Gram/Speakeasy transactional email, in Go or in LMX/MJML — a template<name.go, a TemplateKey…

    272 GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Admin Shadcn

    speakeasy-api/gram

    A skill your agent uses when adding, changing, or styling UI in client/admin (the Gram admin dashboard) that touches shadcn/ui — a button, dialog, table, sidebar, badge, select, tabs, tooltip, card…

    272 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • A skill your agent uses when adding, editing, reviewing, testing, or locating a reviewed skill distributed with the Platform MCP plugin; triggers include "Platform MCP skill", "platformmcpskills"…

    272 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Clickhouse

    speakeasy-api/gram

    A skill your agent uses when changing or reviewing Gram ClickHouse schemas, migrations, queries, inserts, access principals, bootstrap SQL, Cloud compatibility, partial migration failures, or…

    272 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • Feature Flag

    speakeasy-api/gram

    A skill your agent uses when gating a feature behind a flag, dogfooding or gradually rolling out a change, choosing between productfeatures and PostHog feature flags, adding or checking a product…

    272 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Gram Management API

What does Gram Management API do?

Concepts, external interfaces, and conventions for Gram's management API — the Goa-designed HTTP-RPC surface under /rpc/<service.<method that powers the dashboard, CLI, and public SDK. Gram Management API is an agent skill from speakeasy-api/gram.<method that powers the dashboard, CLI, and public SDK.

When should I use Gram Management API?

Gram Management API fits situations like: tasks that involve OpenAPI specifications.

How do I install Gram Management API in Claude Code?

Run `npx skills add speakeasy-api/gram --skill gram-management-api -a claude-code`. Or copy the skill folder (.agents/skills/gram-management-api in speakeasy-api/gram) into .claude/skills/gram-management-api in your project. Claude Code loads it when a task matches its description.

How do I install Gram Management API in Codex?

Run `npx skills add speakeasy-api/gram --skill gram-management-api -a codex`. Or copy the skill folder (.agents/skills/gram-management-api in speakeasy-api/gram) into .agents/skills/gram-management-api in your project. Codex loads it when a task matches its description.

Can I use Gram Management API in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add speakeasy-api/gram --skill gram-management-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gram-management-api, .gemini/skills/gram-management-api, .github/skills/gram-management-api and .opencode/skills/gram-management-api in your project.

What does Gram Management API need to run?

Going by SKILL.md and its folder, Gram Management API needs the command-line tools its instructions call (mise and go).

Does Gram Management API access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Gram Management API safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Gram Management API use?

Gram Management API is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Gram Management API use?

About 5.9k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Gram Management API?

Skills that share tags, products or a category with Gram Management API: ToolJet Marketplace Plugin Builder (ToolJet/ToolJet, 41k stars), Step Parts (earthtojake/text-to-cad, 18k stars), API Designer (Jeffallan/claude-skills, 12k stars) and OpenAPI to MCP Server (mcp-use/mcp-use, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gram Management API?

speakeasy-api (a GitHub organization) maintains it in speakeasy-api/gram, which has 272 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 7, 2026.

Source: speakeasy-api/gram on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.