Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/GoranErhartic/cursor-development-rulesnpx agentmods add rules/goranerhartic/cursor-development-rules/api-gateway-http-apiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/goranerhartic/cursor-development-rules/api-gateway-http-api)<a href="https://agentmods.dev/rules/goranerhartic/cursor-development-rules/api-gateway-http-api"><img src="https://agentmods.dev/badge/rules/goranerhartic/cursor-development-rules/api-gateway-http-api/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/goranerhartic/cursor-development-rules/api-gateway-http-api"><img src="https://agentmods.dev/badge/rules/goranerhartic/cursor-development-rules/api-gateway-http-api.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00046 | $0.01536 |
| Opus 5.5 | $0.00018 | $0.00614 |
| Sonnet 5.5 | $0.00009 | $0.00307 |
| Haiku 4.5 | $0.00005 | $0.00154 |
Grade A, and why
api-gateway-http-api scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 188 lines — stays where its author put it; the contents beside it link to each section on GitHub.
API Gateway HTTP API (v2)
Overview
HTTP API (v2) is the recommended API Gateway type for most Lambda-backed APIs: lower cost, lower latency, and native JWT authorizers. Use payload format version 2.0 and type APIGatewayProxyEventV2 in handlers.
When to Use HTTP API vs REST API
| Use HTTP API (v2) | Use REST API (v1) |
|---|---|
| New APIs, JWT/Cognito auth | API keys, request validation, WAF v1 |
| Lower cost, simpler | Complex request/response mapping |
| Real estate web app (Cognito) | Legacy or specific v1 features |
Dependencies
pnpm add -D @types/aws-lambda
# CDK: aws-cdk-lib (HttpApi, HttpLambdaIntegration, HttpJwtAuthorizer)
CDK HttpApi with JWT Authorizer
// cdk/lib/stacks/http-api-stack.ts
import { Stack, StackProps } from "aws-cdk-lib";
import { Construct } from "constructs";
import {
HttpApi,
HttpMethod,
PayloadFormatVersion,
HttpRouteKey,
} from "aws-cdk-lib/aws-apigatewayv2";
import { HttpLambdaIntegration } from "aws-cdk-lib/aws-apigatewayv2-integrations";
import { HttpJwtAuthorizer } from "aws-cdk-lib/aws-apigatewayv2-authorizers";
import { StandardLambda } from "../constructs/lambda-function";
import { Table } from "aws-cdk-lib/aws-dynamodb";
interface HttpApiStackProps extends StackProps {
dataTable: Table;
idempotencyTable: Table;
userPoolId: string;
userPoolClientId: string;
}
export class HttpApiStack extends Stack {
public readonly httpApi: HttpApi;
constructor(scope: Construct, id: string, props: HttpApiStackProps) {
super(scope, id, props);
const jwtAuthorizer = new HttpJwtAuthorizer("JwtAuthorizer", props.userPoolId, {
identitySource: ["$request.header.Authorization"],
jwtAudience: [props.userPoolClientId],
});
this.httpApi = new HttpApi(this, "RealEstateHttpApi", {
apiName: "real-estate-http-api",
corsPreflight: {
allowOrigins: [process.env.CORS_ORIGIN ?? "https://app.example.com"],
allowMethods: [HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE],
allowHeaders: ["Content-Type", "Authorization", "X-Correlation-Id"],
allowCredentials: true,
},
});
const getPropertyHandler = new StandardLambda(this, "GetProperty", {
entry: "src/functions/get-property/handler.ts",
handler: "handler",
memorySize: 256,
timeoutSeconds: 10,
environment: { DYNAMODB_TABLE_NAME: props.dataTable.tableName },
});
props.dataTable.grantReadData(getPropertyHandler);
// Public route (no auth)
this.httpApi.addRoutes({
path: "/properties/{propertyId}",
methods: [HttpMethod.GET],
integration: new HttpLambdaIntegration(
"GetPropertyIntegration",
getPropertyHandler,
{ payloadFormatVersion: PayloadFormatVersion.V2_0 }
),
});
// Protected route (JWT required)
const createListingHandler = new StandardLambda(this, "CreateListing", {
entry: "src/functions/create-listing/handler.ts",
handler: "handler",
memorySize: 512,
timeoutSeconds: 30,
environment: {
DYNAMODB_TABLE_NAME: props.dataTable.tableName,
IDEMPOTENCY_TABLE_NAME: props.idempotencyTable.tableName,
},
});
props.dataTable.grantReadWriteData(createListingHandler);
props.idempotencyTable.grantReadWriteData(createListingHandler);
this.httpApi.addRoutes({
path: "/listings",
methods: [HttpMethod.POST],
integration: new HttpLambdaIntegration(
"CreateListingIntegration",
createListingHandler,
{ payloadFormatVersion: PayloadFormatVersion.V2_0 }
),
authorizer: jwtAuthorizer,
});
}
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 188 lines · 46 tokens per session scan A 5a2b1d26c49a
api-gateway-http-api is a cursor rule published in the GitHub repository GoranErhartic/cursor-development-rules (19 stars, last pushed 7mo ago), licensed MIT. It adds 46 tokens to every session and 1,536 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other cursor rules, from other repositories
cloudflare-email-telegram-cursorrules-prompt-file
Cursor rules for setting up email-to-Telegram forwarding via Cloudflare Email Routing and Workers using the mail2tg CLI.
implement-graceful-shutdown-for-your-application
Cursor rule "implement-graceful-shutdown-for-your-application" from PaulJPhilp/EffectPatterns, covering implement graceful shutdown for your application and example.
service-bindings
Worker-to-Worker RPC - bindings.worker() by name, WorkerEntrypoint callee, typed RPC deferred, requestId propagation.
hatch3r-scalability
CQ6 Scalability Quality measurement rule — stateless-handler ratio, back-pressure pattern adoption, idempotency-key adoption on POST/PUT/PATCH, queue offloading for >1s ops, pool sizing per concurrency profile.
cloudflare-workers-hono-angular-saas-cursorrules-prompt-file
Cursor rule "cloudflare-workers-hono-angular-saas-cursorrules-prompt-file" from XD3an/awesome-ai-coding-all-in-one, covering cloudflare workers + hono + angular saas, stack, typescript, hono api and angular.
knative-istio-typesense-gpu-cursorrules-prompt-fil
description: "Cursor rules for Knative development with Istio, Typesense, and GPU integration." globs: / alwaysApply: false.