Agent skill

Horse Request Response

by HashLoad in HashLoad/horse

Guide to interacting with THorseRequest (body, query, params, headers) and THorseResponse (Send, Status, ContentType).

MITAuto-check passed

Install Horse Request Response

skills CLI
$ npx skills add HashLoad/horse --skill horse-request-response -a claude-code

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

GitHub CLI
$ gh skill install HashLoad/horse horse-request-response --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/HashLoad/horse.git skills-src && mkdir -p .claude/skills && cp -r skills-src/doc/skills/horse-request-response .claude/skills/horse-request-response && 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
horse-request-response
GitHub stars
1.4k
Token cost
~1.2k tokens
SKILL.md length
418 words
Files
1
Skills in repo
23
Repo updated
First seen
Licence
MIT

At a glance

Guide to interacting with THorseRequest (body, query, params, headers) and THorseResponse (Send, Status, ContentType).

  • SKILL.md covers THorseRequest (Reading Request…, Safe Parameter Parsing &…, Cookies Management and THorseResponse (Sending HTTP…, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Horse Request Response is an agent skill from HashLoad/horse. Guide to interacting with THorseRequest (body, query, params, headers) and THorseResponse (Send, Status, ContentType).

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

The repository describes itself as: Fast, opinionated, minimalist web framework for Delphi. The licence is MIT.

Example prompts

  • “/horse-request-response”

What it can do on your machine

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

    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

Horse Request Response loads about 1.2k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 418 words of instructions outside code blocks.

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

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 HashLoad/horse at commit d4351a5, republished under its MIT licence (© HashLoad). 418 words, ~1,238 tokens.

Download SKILL.mdSave it as .claude/skills/horse-request-response/SKILL.md (or your agent's skills folder).
name
horse-request-response
description
Guide to interacting with THorseRequest (body, query, params, headers) and THorseResponse (Send, Status, ContentType).

Horse Request & Response

THorseRequest (Reading Request Data)

The THorseRequest object contains all details of the incoming HTTP request.

  • Body: To read the raw text payload, use Req.Body. If the Jhonson middleware is active, you can read the parsed JSON directly:
    pascal
    var
      LBody: TJSONObject;
    begin
      LBody := Req.Body<TJSONObject>;
    end;
  • Params: For path parameters (defined with :name), use Req.Params.Items['name'] (or Req.Params['name']).
  • Query: For query parameters (e.g., ?page=1&limit=10), use Req.Query.Items['page'] (or Req.Query['page']).
  • Headers: Read request headers using Req.Headers.Items['Authorization'].

Safe Parameter Parsing & Validation (THorseCoreParamField)

Instead of accessing raw string dictionary values (e.g., Req.Params['id']) and converting them manually, always prefer using the .Field() method to obtain a THorseCoreParamField. This provides type-safe conversions and declarative parameter validation:

  • Type Conversion: Convert parameters to the target type without manually calling StrToInt or StrToBool:
    pascal
    var
      LId: Integer;
      LActive: Boolean;
      LDate: TDateTime;
    begin
      LId := Req.Params.Field('id').AsInteger;
      LActive := Req.Query.Field('active').AsBoolean;
      LDate := Req.Query.Field('since').AsISO8601DateTime;
    end;
  • Required Check: Automatically halt execution and return a 400 Bad Request with a custom error message if the parameter is missing:
    pascal
    var
      LEmail: string;
    begin
      // Automatically raises EHorseException if 'email' query param is empty
      LEmail := Req.Query.Field('email').Required.RequiredMessage('The "email" parameter is required.').AsString;
    end;
  • Supported Converters: AsInteger, AsInt64, AsBoolean, AsFloat, AsCurrency, AsDateTime, AsISO8601DateTime, AsStream (for multipart uploads), and AsString.

Cookies Management

Horse provides a provider-agnostic, typed API to read cookies from requests and write them back in responses (RFC 6265 compliant).

  • Reading Cookies: Read incoming cookies safely using the .Field() helper:

    pascal
    var
      LSessionToken: string;
    begin
      LSessionToken := Req.Cookie.Field('session_token').AsString;
    end;
  • Writing Cookies (Set-Cookie): Write response cookies using Res.Cookie and configure properties fluently:

    pascal
    uses Horse.Core.Cookie;
    
    procedure SetCookieHandler(Req: THorseRequest; Res: THorseResponse; Next: TProc);
    begin
      // Creates, registers, and configures the cookie fluently (XE7 compatible)
      Res.Cookie('session_id', 'xyz789')
        .Path('/')
        .HttpOnly(True)
        .Secure(True)
        .SameSite(TSameSite.ssLax);
    
      Res.Send('Cookie has been set');
    end;

Show full SKILL.md (137 more words)Show less

THorseResponse (Sending HTTP Responses)

The THorseResponse object is used to build and send the HTTP response back to the client.

  • Send: Returns text or objects. It supports method chaining:
    pascal
    // Sending simple text with Status 200 (OK)
    Res.Send('Success');
    
    // Setting Status 201 (Created) and sending an object (MUST set status BEFORE calling Send)
    Res.Status(THTTPStatus.Created).Send<TJSONObject>(LJson);
  • Status: Set the HTTP status code using integer values or the THTTPStatus enum:
    pascal
    Res.Status(400); // Bad Request
    Res.Status(THTTPStatus.NoContent);
  • ContentType: Set custom content type headers if you are not returning standard JSON:
    pascal
    Res.ContentType('text/html').Send('<h1>HTML Content</h1>');

Structured Error Handling (EHorseException)

To return error responses with custom HTTP statuses and error details, raise EHorseException. The framework captures this exception and formats it as a structured JSON error response:

pascal
uses Horse.Exception, Horse.Commons;

procedure GetProduct(Req: THorseRequest; Res: THorseResponse; Next: TProc);
var
  LId: Integer;
  LProduct: TProduct;
begin
  LId := Req.Params.Field('id').AsInteger;
  if LId <= 0 then
    raise EHorseException.New
      .Status(THTTPStatus.BadRequest)
      .Error('Invalid product ID');

  LProduct := FindProduct(LId);
  if not Assigned(LProduct) then
    raise EHorseException.New
      .Status(THTTPStatus.NotFound)
      .Error('Product not found')
      .Code(4041)
      .Detail('The requested product does not exist in our catalog.');

  Res.Send(LProduct);
end;

When EHorseException is raised, it automatically serializes to a clean JSON response containing fields like error, code, and detail.

© HashLoad, MIT. 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 doc/skills/horse-request-response of HashLoad/horse.

Open the folder on GitHubat commit d4351a5

Compare with similar skills

Horse Request Response 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.

Horse Request Response compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Horse Request Response this skillHashLoad/horse1.4k—~1.2kAutomated safety check: PassMIT
Responsive Unitsthedaviddias/Front-End-Checklist74k—~472Automated safety check: PassMIT
Table Headersthedaviddias/Front-End-Checklist74k—~460Automated safety check: PassMIT
Responsive Designwshobson/agents40k2 repos~498Automated safety check: PassMIT
Responsive Imagesthedaviddias/Front-End-Checklist74k—~403Automated safety check: PassMIT
Aria Hidden Bodythedaviddias/Front-End-Checklist74k—~444Automated safety check: PassMIT

Similar skills

  • Responsive Units

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Use relative units for responsive layouts.

    74k GitHub stars~472 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Table Headers

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Define proper table headers.

    74k GitHub stars~460 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Responsive Design

    wshobson/agents

    Implement modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first breakpoint strategies.

    40k GitHub starsUsed in 2 repos~498 tokens
    Frontend & DesignAuto-check passed
  • Responsive Images

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing article images, cards, galleries, or any component rendered at multiple sizes across breakpoints.

    74k GitHub stars~403 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Aria Hidden Body

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Do not use aria-hidden on the document body.

    74k GitHub stars~444 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Td Headers Attr

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Link table cells to headers using IDs.

    74k GitHub stars~429 tokensUpdated yesterday
    Frontend & DesignAuto-check passed

More from HashLoad/horse

All 23 skills in this repo
  • Horse App Structure

    HashLoad/horse

    Guide for setting up Horse applications, bootstrap program (.dpr), basic console initialization, and registering modules.

    1.4k GitHub stars~716 tokensUpdated yesterday
    Auto-check passed
  • Guide for setting up thread-safe database connection pooling (FireDAC / UniDAC) in multithreaded Horse applications.

    1.4k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Guide for managing request-scoped contextual services and IoC (dependency injection) in Delphi and Lazarus.

    1.4k GitHub stars~985 tokensUpdated yesterday
    Auto-check passed
  • Horse Files Streams

    HashLoad/horse

    Guide to handling file uploads (multipart), downloads, and stream lifetime management in the Horse framework.

    1.4k GitHub stars~601 tokensUpdated yesterday
    Auto-check passed
  • Horse Grpc

    HashLoad/horse

    Guidelines and workflows for developing and maintaining gRPC services, HTTP/2 h2c transport, and Protobuf serialization within the Horse framework.

    1.4k GitHub stars~776 tokensUpdated yesterday
    Auto-check passed
  • Guide for writing automated integration tests for Horse endpoints using DUnit/DUnitX and THTTPClient.

    1.4k GitHub stars~964 tokensUpdated yesterday
    Auto-check passed

Questions about Horse Request Response

What does Horse Request Response do?

Guide to interacting with THorseRequest (body, query, params, headers) and THorseResponse (Send, Status, ContentType). Horse Request Response is an agent skill from HashLoad/horse. Guide to interacting with THorseRequest (body, query, params, headers) and THorseResponse (Send, Status, ContentType).

How do I install Horse Request Response in Claude Code?

Run `npx skills add HashLoad/horse --skill horse-request-response -a claude-code`. Or copy the skill folder (doc/skills/horse-request-response in HashLoad/horse) into .claude/skills/horse-request-response in your project. Claude Code loads it when a task matches its description.

How do I install Horse Request Response in Codex?

Run `npx skills add HashLoad/horse --skill horse-request-response -a codex`. Or copy the skill folder (doc/skills/horse-request-response in HashLoad/horse) into .agents/skills/horse-request-response in your project. Codex loads it when a task matches its description.

Can I use Horse Request Response 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 HashLoad/horse --skill horse-request-response -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/horse-request-response, .gemini/skills/horse-request-response, .github/skills/horse-request-response and .opencode/skills/horse-request-response in your project.

What does Horse Request Response need to run?

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

Does Horse Request Response 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 Horse Request Response 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 Horse Request Response use?

Horse Request Response is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Horse Request Response use?

About 1.2k tokens (SKILL.md is roughly 5k 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 Horse Request Response?

Skills that share tags, products or a category with Horse Request Response: Responsive Units (thedaviddias/Front-End-Checklist, 74k stars), Table Headers (thedaviddias/Front-End-Checklist, 74k stars), Responsive Design (wshobson/agents, 40k stars) and Responsive Images (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Horse Request Response?

HashLoad (a GitHub organization) maintains it in HashLoad/horse, which has 1,377 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 7, 2026.

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