Agent skill

Huma

by getopenpost in getopenpost/openpost

Huma - Go REST/RPC API Framework. An agent skill from getopenpost/openpost.

AGPL-3.0Auto-check passedBackend & APIs

Install Huma

skills CLI
$ npx skills add getopenpost/openpost --skill huma -a claude-code

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

GitHub CLI
$ gh skill install getopenpost/openpost huma --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/getopenpost/openpost.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/huma .claude/skills/huma && 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
huma
GitHub stars
653
Token cost
~1k tokens
SKILL.md length
214 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Huma - Go REST/RPC API Framework. An agent skill from getopenpost/openpost.

  • Works in 4 steps: Don't return *models.Model directly if… → Handler methods should take api huma.API… → huma.WriteErr(api, ctx, status, msg)… → …
  • Tasks that involve OpenAPI specifications
  • SKILL.md covers Core Pattern, Input/Output Structs, Validation Tags and Error Handling, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Huma is an agent skill from getopenpost/openpost. Huma - Go REST/RPC API Framework. Use with Echo adapter (humaecho) for OpenAPI 3.1 generation.

Its SKILL.md is about 1k 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: Create, adapt, schedule, and track social posts. Open-source, hosted or self-hosted. The licence is AGPL-3.0.

When your agent uses it

  • Tasks that involve OpenAPI specifications

Example prompts

  • “/huma”

Workflow steps

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

  1. Don't return *models.Model directly if it has fields named Status, CreatedAt etc. — use explicit output structs with Body wrapper
  2. Handler methods should take api huma.API and call huma.Register internally (method-as-registrar pattern)
  3. huma.WriteErr(api, ctx, status, msg) needs the API reference — pass it via closure in middleware factories
  4. huma.WithValue takes 3 args: (ctx, key, value), not (ctx, context.Context)

What it can do on your machine

Read from SKILL.md and the folder at commit ed8ad44. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are 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

Huma loads about 1k tokens when it runs. Until then it costs about 25 tokens; SKILL.md has 214 words of instructions outside code blocks.

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

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 getopenpost/openpost at commit ed8ad44, republished under its AGPL-3.0 licence (© getopenpost). 214 words, ~1,002 tokens.

Download SKILL.mdSave it as .claude/skills/huma/SKILL.md (or your agent's skills folder).
name
huma
description
Huma - Go REST/RPC API Framework. Use with Echo adapter (humaecho) for OpenAPI 3.1 generation.
version
1.0.0
user-invocable
false

Huma - Go REST/RPC API Framework

Huma generates OpenAPI 3.1 from Go types with zero annotations beyond struct tags. Use the Echo adapter (humaecho) for this project.

Core Pattern

go
import (
    "github.com/danielgtaylor/huma/v2"
    "github.com/danielgtaylor/huma/v2/adapters/humaecho"
)

// Setup in main.go
apiGroup := e.Group("/api/v1")
api := humaecho.NewWithGroup(e, apiGroup, huma.DefaultConfig("API", "1.0.0"))

// Handler registration - auto-generates OpenAPI
huma.Register(api, huma.Operation{
    OperationID: "get-user",
    Method:      http.MethodGet,
    Path:        "/users/{id}",
    Summary:     "Get a user",
    Tags:        []string{"Users"},
    Errors:      []int{404},
}, func(ctx context.Context, input *GetUserInput) (*GetUserOutput, error) {
    // handler logic
})

Input/Output Structs

Input structs use tags for path, query, header, body parameters. Output structs define response shape. Always wrap outputs in explicit Body field to avoid Huma interpreting fields as headers.

go
type GetUserInput struct {
    ID    string `path:"id" doc:"User ID"`
    Verbose bool `query:"verbose" doc:"Include extra details"`
    // Body is optional for GET
}

type GetUserOutput struct {
    Body struct {
        ID   string `json:"id"`
        Name string `json:"name"`
    }
}

IMPORTANT: Fields named Status on output structs must use Body wrapper, otherwise Huma interprets them as HTTP status codes (must be int). Same for CreatedAt which gets treated as response headers.

Validation Tags

go
type CreateInput struct {
    Body struct {
        Name     string `json:"name" minLength:"1" maxLength:"100"`
        Email    string `json:"email" format:"email"`
        Age      int    `json:"age" minimum:"0" maximum:"150"`
        Role     string `json:"role" enum:"admin,user,guest"`
        Tags     []string `json:"tags" minItems:"1" uniqueItems:"true"`
    }
}

Error Handling

go
return nil, huma.Error404NotFound("not found")
return nil, huma.Error400BadRequest("bad request", &huma.ErrorDetail{...})
return nil, huma.Error401Unauthorized("unauthorized")
return nil, huma.Error500InternalServerError("internal error")

Middleware

Huma middleware signature: func(ctx huma.Context, next func(huma.Context))

go
// Per-operation middleware
huma.Register(api, huma.Operation{
    Middlewares: huma.Middlewares{authMiddleware},
}, handler)

// Global middleware
api.UseMiddleware(loggingMiddleware)

// Context values
ctx = huma.WithValue(ctx, key, value)
val := ctx.Context().Value(key)

Echo Adapter Notes

  • humaecho.New(echo, config) - creates API from Echo instance
  • humaecho.NewWithGroup(echo, group, config) - creates API for a group path
  • Path conversion: Huma {param} → Echo :param (automatic)
  • Error writing requires API reference: pass api to middleware factory

OpenAPI Spec

The spec is auto-generated. Access via api.OpenAPI() and serve as JSON:

go
e.GET("/openapi.json", func(c echo.Context) error {
    data, _ := json.Marshal(api.OpenAPI())
    return c.Blob(http.StatusOK, "application/json", data)
})

Convenience Methods

go
huma.Get(api, "/items", handler)    // auto-generates operation ID
huma.Post(api, "/items", handler)
huma.Put(api, "/items/{id}", handler)
huma.Delete(api, "/items/{id}", handler)

Gotchas

  1. Don't return *models.Model directly if it has fields named Status, CreatedAt etc. — use explicit output structs with Body wrapper
  2. Handler methods should take api huma.API and call huma.Register internally (method-as-registrar pattern)
  3. huma.WriteErr(api, ctx, status, msg) needs the API reference — pass it via closure in middleware factories
  4. huma.WithValue takes 3 args: (ctx, key, value), not (ctx, context.Context)

© getopenpost, 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/huma of getopenpost/openpost.

Open the folder on GitHubat commit ed8ad44

Compare with similar skills

Huma 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.

Huma compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Huma this skillgetopenpost/openpost653—~1kAutomated 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 today
    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 getopenpost/openpost

  • Openpost CLI

    getopenpost/openpost

    Operate a running OpenPost instance through the openpost CLI.

    653 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Cuelume

    getopenpost/openpost

    Add or audit OpenPost interaction sounds with Cuelume. An agent skill from getopenpost/openpost.

    653 GitHub stars~620 tokensUpdated yesterday
    Auto-check passed
  • Openapi Typescript

    getopenpost/openpost

    Type-safe OpenAPI consumption in TypeScript using openapi-typescript and openapi-fetch.

    653 GitHub stars~887 tokensUpdated yesterday
    Auto-check passed
  • Openpost SEO

    getopenpost/openpost

    Audit OpenPost marketing and documentation SEO with the pinned claude-seo toolkit.

    653 GitHub stars~766 tokensUpdated yesterday
    Auto-check passed
  • Agent Workflow

    getopenpost/openpost

    Coordinate substantial OpenPost features, refactors, or multi-ticket work.

    653 GitHub stars~811 tokensUpdated yesterday
    Auto-check passed
  • UX Consistency

    getopenpost/openpost

    OpenPost acceptance bar for frontend UI and copy changes. An agent skill from getopenpost/openpost.

    653 GitHub stars~680 tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Huma

What does Huma do?

Huma - Go REST/RPC API Framework. An agent skill from getopenpost/openpost. Huma is an agent skill from getopenpost/openpost. Huma - Go REST/RPC API Framework.

When should I use Huma?

Huma fits situations like: tasks that involve OpenAPI specifications.

How do I install Huma in Claude Code?

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

How do I install Huma in Codex?

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

Can I use Huma 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 getopenpost/openpost --skill huma -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/huma, .gemini/skills/huma, .github/skills/huma and .opencode/skills/huma in your project.

What does Huma need to run?

SKILL.md names no scripts, command-line tools or credentials: Huma is instructions for the agent only.

Does Huma 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 Huma 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 Huma use?

Huma 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 Huma use?

About 1k tokens (SKILL.md is roughly 4k 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 Huma?

Skills that share tags, products or a category with Huma: 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 Huma?

getopenpost (a GitHub organization) maintains it in getopenpost/openpost, which has 653 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 6, 2026.

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