Generate TypeScript types, dispatch helpers, AMQP bindings, and framework adapters from an AsyncAPI 3.0 spec via `@ir-kit/asyncapi-typescript`. Use when the user has an event-driven API, message broker schemas, pub/sub workflows, or wants typed publish/consume code for RabbitMQ / Kafka / NATS. The package uses a plugin-compose architecture — each plugin emits one slice (types, Events const, dispatch helpers, AMQP helpers, barrel) and the orchestrator topologically sorts by `dependsOn`. Triggers on "AsyncAPI", "event types from spec", "AMQP from spec", "RabbitMQ types", "message types", "pub/sub types", "publish/subscribe TypeScript", "event-driven typing". Do NOT use for OpenAPI / HTTP APIs (see openapi-sdk) or k6 load testing.
Migrate a project from the legacy `@ahmedrowaihi/*` npm scope to the new `@ir-kit/*` scope. Rewrites `import` / `require` statements across TypeScript / JavaScript files, updates `package.json` dependencies, and (optionally) refreshes lockfile + verifies the build. Use when the user mentions "migrate to ir-kit", "switch to @ir-kit", "upgrade from @ahmedrowaihi", or is upgrading any package previously under `@ahmedrowaihi/openapi-*`, `@ahmedrowaihi/asyncapi-*`, `@ahmedrowaihi/fn-schema-*`, `@ahmedrowaihi/k6*`, `@ahmedrowaihi/codegen-core`, `@ahmedrowaihi/openapi-ts-{orpc,faker,typia,paths}`, or `@ahmedrowaihi/create-k6`. Triggers on "ir-kit migrate", "@ir-kit migration", "rename scope from ahmedrowaihi". Do NOT use for unrelated package renames or for migrating between major versions of `@ir-kit/*` itself.
Generate idiomatic native SDK clients (Go, Kotlin, Swift, or TypeScript) from an OpenAPI 3.x spec using `@ir-kit/openapi-{go,kotlin,swift,typescript}`. Each generator emits language-native code — Go uses `net/http` + `encoding/json` + `context.Context`, Kotlin uses OkHttp + kotlinx-serialization + suspend, Swift uses Codable + URLSession + async/throws, TypeScript wraps `@hey-api/openapi-ts` with the same `generate({ input, output })` shape. Use when the user wants to ship multi-language SDKs from one spec, generate a client for a specific language, or wire codegen into a build pipeline. Triggers on "Go SDK", "Kotlin client", "Swift SDK", "generate client from OpenAPI", "SDK from spec", "OpenAPI to Go", "OpenAPI to Kotlin", "OpenAPI to Swift", "multi-language SDK". Do NOT use for hey-api plugin authoring (see heyapi-plugin-author) or k6 load testing (see k6-loadtest).
Extract JSON Schema (Draft 2020-12) for TypeScript function inputs and outputs from real source code, using `@ir-kit/fn-schema-cli` or its underlying lib `@ir-kit/fn-schema-core`. Use when the user wants `schemaOf(fn)` at build time, JSON Schemas derived from existing TS function signatures (without rewriting types to Zod/Yup/etc), per-function schema files, a bundled schemas.json, or OpenAPI 3.1 `components.schemas` fragments. Pairs with the `@ir-kit/fn-schema-transformer` TS compiler-API transformer for inline-at-emit replacement of `schemaOf(myFn)` calls. Triggers on "JSON Schema from TypeScript", "function signature to schema", "schemaOf", "extract schema from TS function", "schemas from existing code", "schemas without rewriting types", "fn-schema". Do NOT use for OpenAPI codegen (see openapi-sdk) or schema authoring (see hey-api plugins / typia).
Write a `@hey-api/openapi-ts` plugin that emits custom codegen on top of hey-api's IR. Use when the user wants to add a TypeScript code generator that hooks into hey-api's spec → IR pipeline — custom validators, mock factories, RPC clients, route maps, framework adapters, anything hey-api doesn't ship. The ir-kit repo already has five reference plugins (`openapi-ts-faker`, `openapi-ts-orpc`, `openapi-ts-paths`, `openapi-ts-typia`, `openapi-ts-k6`) that serve as templates. Triggers on "hey-api plugin", "openapi-ts plugin", "custom codegen plugin", "extend hey-api", `definePluginConfig`, `definePlugin`, "openapi-ts hooks", "openapi-ts plugin author". Do NOT use for hey-api consumption (use openapi-sdk → `@ir-kit/openapi-typescript`) or for non-hey-api codegen (see openapi-sdk for go/kotlin/swift, asyncapi-typescript for AsyncAPI).
Load-test an HTTP API with the @ir-kit/k6 v2 stack — generate a typed k6 client (sync + async parallel via http.asyncRequest) from an OpenAPI spec, scaffold scenario files interactively or via flags, then bundle and spawn k6 (CLI or programmatic). Use when the user wants to write k6 load tests in TypeScript, perf-test an API from its OpenAPI spec, run smoke/load/stress/spike/soak/arrival-rate scenarios, do parallel fan-out from one VU, declare custom metrics, write group/check assertions, scaffold scenarios from spec tags, or invoke `k6 run` from a script. Triggers on "load test", "perf test", "k6", "stress test the API", "spike test", "soak test", "smoke test", "arrival rate", "RPS test", "parallel HTTP", "scaffold scenario", "k6-ts", "k6-ts scaffold", `defineLoadTest`, `runK6`, `useAuth`, `arrivalRate`, `rampingArrivalRate`, `handleSummary`, `flow.batch`, `flow.group`, `flow.check`, "k6 scenarios", "k6 budgets", "k6 thresholds", "OpenAPI to k6". Do NOT use for unit tests, integration tests, non-HTTP workloa
Reverse-engineer an OpenAPI 3.1 spec from observed HTTP traffic. Use `@ir-kit/openapi-recon` (a runtime-agnostic lib that accepts standard Web Fetch `Request` / `Response` pairs and folds them into a JSON Schema 2020-12 document) when the user has live traffic but no spec, wants to discover a third-party API's shape, capture an internal API from real usage, or generate a starting `openapi.yaml` from a HAR/proxy log. Ships a `fromHAR()` helper that one-lines HAR-file ingestion — works with HARs exported from k6 Studio Recorder, browser DevTools, mitmproxy, Charles, Postman, anything. For interactive capture from a browser, point them at `@ir-kit/glean` (the Chrome DevTools extension built on `openapi-recon`). Triggers on "reverse engineer API", "discover spec from traffic", "OpenAPI from HAR", "k6 Studio HAR to spec", "capture API in DevTools", "mitmproxy to OpenAPI", "infer schema from requests", "spec from observed HTTP", "generate spec from network tab", `fromHAR`. Do NOT use when the user already has an Op