@kentcdodds/raycast
by @kentcdodds
Kody package for Raycast and other external clients: list packages and load export metadata for package-invocation workflows.
- raycast
- launcher
- packages
- community
- invocation
- License
- MIT
- Published
- 7/13/2026
- Pinned commit
22eb5a5- Rating
- No ratings yet
- Adaptation effort
- —
- Forks
- 1
- Stars
- 1
One-click install
Install forks this package into your account and publishes it right away when it passes the standard package checks. This listing has not been reviewed by an admin.
Log in to install this package.
Stars
1 star
Log in to star this package.
0 stargazers
Loading stargazers…
Fork with your agent
Copy this prompt into your MCP-capable agent to fork and adapt the package safely.
Use Kody to fork the community package "@kentcdodds/raycast" (listing id: 2ceaf367-2d48-43a9-b3b9-adec6a6a06f1). Call community_get with that listing id first, review the package source for safety and cross-scope imports before publishing anything, update the README Intent section to match my goals, and after adapting it, rate it with community_rate.
README
@kentcdodds/raycast
Intent
Give any Kody user a small, generic package that Raycast (or curl, Shortcuts, Alfred, etc.) can call to list saved packages and load export metadata. This is the reusable discovery half of a Raycast + Kody setup — not personal home automations.
When to use
- Build a Raycast (or other local) launcher that browses your Kody packages/exports
- Mint a package-invocation token and call Kody over HTTP from outside the MCP/execute sandbox
- Fork this community listing into your scope, then point your client at
raycast
Setup
- Fork this community package into your Kody account (or keep it if you already have
raycastin scope). - Review the forked source, then publish it so the exports are live.
- Create a package invocation token (any package / any export is fine for a personal launcher):
- Call exports as:
POST https://heykody.dev/@YOUR_USERNAME/api/package-invocations/raycast/<export>
Authorization: Bearer <token>
Content-Type: application/json
{"params":{},"source":"raycast","idempotencyKey":"raycast:raycast:list-packages:<uuid>"}Exports
.— describe the package./list-packages— list your saved packages (packageId,kodyId, name, tags, …)./get-package— load one package’s export metadata (packageIdorkodyId)
Raycast / external client example
Minimal fetch helper you can drop into a Raycast Script Command, a tiny extension, or any local tool:
async function invokeKodyExport(
username: string,
kodyId: string,
exportName: string,
token: string,
params: Record<string, unknown> = {},
) {
const path = [kodyId, ...exportName.split("/").filter(Boolean)]
.map(encodeURIComponent)
.join("/")
const response = await fetch(
`https://heykody.dev/@${encodeURIComponent(username)}/api/package-invocations/${path}`,
{
method: "POST",
headers: {
authorization: `Bearer ${token}`,
"content-type": "application/json",
},
body: JSON.stringify({
params,
source: "raycast",
idempotencyKey: `raycast:${kodyId}:${exportName || "root"}:${crypto.randomUUID()}`,
}),
},
)
const body = await response.json()
if (!response.ok) {
throw new Error(`Kody invocation failed (${response.status}): ${JSON.stringify(body)}`)
}
return body.result ?? body.data ?? body.output ?? body
}
// List packages for a command picker:
const { packages } = await invokeKodyExport(
"YOUR_USERNAME",
"raycast",
"list-packages",
process.env.KODY_TOKEN!,
)
// Load exports for one package:
const detail = await invokeKodyExport(
"YOUR_USERNAME",
"raycast",
"get-package",
process.env.KODY_TOKEN!,
{ packageId: packages[0].packageId },
)curl
curl -sS -X POST \
"https://heykody.dev/@YOUR_USERNAME/api/package-invocations/raycast/list-packages" \
-H "Authorization: Bearer $KODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"params":{},"source":"raycast","idempotencyKey":"raycast:raycast:list-packages:1"}'Building a Raycast extension (optional)
You do not need a Store extension for this to be useful — Script Commands or the snippet above are enough. If you want a full picker/launcher:
- Create a local Raycast extension with preferences for Kody Base URL, Username, Invocation Token, and optionally Package kody id (default
raycast). - On “Add command”: call
list-packages, thenget-package, then save{ kodyId, exportName, params }locally. - On run:
POSTto/api/package-invocations/{kodyId}/{exportName}with the saved params andsource: "raycast". - Keep personal automations in your own packages (e.g. home scenes). This package only does discovery.
In-package example
import listPackages from 'kody:@kentcdodds/raycast/list-packages'
import getPackage from 'kody:@kentcdodds/raycast/get-package'
const { packages } = await listPackages()
const pkg = await getPackage({ kodyId: packages[0]?.kodyId })After you fork, replace @kentcdodds with your scope in import examples; the live kody.id remains raycast unless you rename it.
Report this listing
Log in to report this listing.