
Cordierite
- 11 installs
- 2 repo stars
- Updated July 20, 2026
- callstackincubator/cordierite
cordierite is a Claude skill and CLI workflow for connecting to a Cordierite-enabled React Native app and invoking the tools it registers from the terminal, for agents, scripts, and dev automation.
About
This skill connects to a Cordierite-enabled React Native app from the terminal to discover and invoke the tools the app registers. It covers listing sessions, establishing a host session with TLS keys and a deep link the device opens, listing and inspecting tool schemas, and invoking tools with JSON arguments. On the app side, tools are declared with Zod schemas via registerTool. A developer uses it for agent-driven or scripted automation of an RN app's capabilities.
- CLI and host workflow to connect to a Cordierite-enabled React Native app and invoke its registered tools from the termi
- Agent flow: session, host pairing via deep link, tools list/inspect, invoke with JSON args
- App-side tools are declared with Zod schemas via registerTool from @cordierite/react-native
Cordierite by the numbers
- 11 all-time installs (skills.sh)
- Ranked #11,740 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
cordierite capabilities & compatibility
Free; requires the Cordierite CLI and a Cordierite-enabled app; uses locally generated TLS host keys.
- Capabilities
- tool invocation · device automation · agent tooling · cli automation
- Use cases
- orchestration · testing
- Pricing
- Free
What cordierite says it does
Connect a Cordierite-enabled React Native app to your machine and drive it from the terminal using tools the app registers — useful for agents, scripts, and dev automation.
Cordierite is a CLI and host workflow for connecting to a Cordierite-enabled React Native app, discovering its registered tools, invoking those tools from the terminal, and ending the session cleanly
Define schemas with **Zod** and register with **`registerTool`**:
npx skills add https://github.com/callstackincubator/cordierite --skill cordieriteAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 11 |
|---|---|
| repo stars | ★ 2 |
| Last updated | July 20, 2026 |
| Repository | callstackincubator/cordierite ↗ |
What it does
Connect to a Cordierite-enabled React Native app and invoke its app-registered tools from the CLI for automation.
Who is it for?
Agent-driven or scripted invocation of tools that a Cordierite-enabled React Native app exposes.
Skip if: Apps that register no tools, since cordierite tools then returns an empty list.
When should I use this skill?
When the user mentions Cordierite, host/session pairing with the app, or invoking app-defined capabilities from the CLI.
What you get
A paired CLI session that lists, inspects, and invokes an RN app's registered tools with JSON args, then closes cleanly.
- paired host session
- list of app-registered tools
- tool invocation results
By the numbers
- 6-step agent workflow
Files
Cordierite
Cordierite is a CLI and host workflow for connecting to a Cordierite-enabled React Native app, discovering its registered tools, invoking those tools from the terminal, and ending the session cleanly after use.
Agent workflow
1. Run `cordierite session --json`. The response includes `data.sessions` (each entry has `session_id`, status, endpoint info, etc.). If `sessions` is empty, no Cordierite host is registered for this machine (for this registry). 2. If you need a new session for a device, follow Establish a session below. Record `host.session_id` from the host JSON—you must pass it to `tools` and `invoke`. 3. After the user opens the deep link on the device and the app connects, confirm with `cordierite session --session-id <session_id> --json` until `data.selected` reflects an active connection (or re-check `session --json` and infer from the listed session). 4. `cordierite tools --session-id <session_id> --json` — list tools registered in the app. 5. `cordierite tools --session-id <session_id> <tool-name> --json` — inspect one tool’s input/output schema before calling it. 6. `cordierite invoke --session-id <session_id> <tool-name> --input '{"key":"value"}' --json` — invoke the tool with JSON args.
Establish a session
Start the host with `--json` using the same TLS key and app URL scheme as the project (see Setup if you are wiring Cordierite into an app). The CLI generates the host certificate automatically from the resolved local IP. If the project does not already have a trusted host key, create one first with `cordierite keygen` in an interactive terminal and add the printed fingerprint to the app’s `cliPins`. If the default listen port is in use, add `--port <port>`.
cordierite host --tls-key /path/to/key.pem --scheme myapp --jsonRun `cordierite host` in the background. It blocks; keep the foreground shell free for session, tools, and invoke.
From the host JSON output, use at least:
- `host.deep_link` — full URL (e.g.
myapp:///?cordierite=…) for the app to open. - `host.session_id` — pass this as `--session-id` to `tools` / `invoke` / `session --session-id`.
Then:
1. Give the user the deep link (or QR from interactive host UI on a TTY) so they can open it on a device or simulator. 2. Or open it yourself when you know the target (e.g. iOS Simulator xcrun simctl openurl booted '<url>', Android via adb, or device automation skills).
After the app opens the link and claims the session, poll `cordierite session --session-id <session_id> --json` (or `session --json`) until the session is active.
Terminate the connection
When the user wants to disconnect or stop Cordierite for that session: stop the matching background `cordierite host` process (end the job, SIGTERM, etc.). That tears down the host and the session. If several hosts run (e.g. different `--port`), stop the one that corresponds to the `session_id` you were using.
Declaring tools
The app must register tools before `cordierite tools` / `cordierite invoke` can do anything useful. Define schemas with Zod and register with `registerTool`:
import { registerTool } from "@cordierite/react-native";
import { z } from "zod";
const echoInput = z.object({
value: z.unknown(),
});
const echoOutput = z.object({
echoed: z.unknown(),
});
registerTool(
{
name: "echo",
description: "Return the input unchanged",
inputSchema: echoInput,
outputSchema: echoOutput,
handler: async (args) => ({ echoed: args.value }),
},
);Notes
- Use `--json` for structured CLI output in agent flows.
- `cordierite keygen` is the normal setup command for new host keys. It is interactive-only in v1: it writes a PEM private key and prints the exact `sha256/...` fingerprint the app should trust.
- `tools` and `invoke` always require `--session-id` (the value from `host.session_id` or `sessions[].session_id`).
- Prefer `cordierite session --json` first rather than assuming a session exists.
- If `sessions` is empty or `tools` / `invoke` fail with connection or session errors, establish a session (host running, deep link opened on the correct device).
- If the app registers no tools, `cordierite tools` returns an empty list.
- You may run multiple `cordierite host` processes (e.g. different `--port` for different devices); use the `session_id` that belongs to the host you care about.
Setup
For project integration guidance, see setup.md.
Cordierite setup
Use this file when the task is to add Cordierite to a new React Native project.
Shared requirements
1. Install cordierite where the operator or agent will run the CLI. 2. Install @cordierite/react-native in the app. 3. Register the app tools you want Cordierite to expose. 4. Configure deep linking so the OS can open your app with the Cordierite bootstrap URL. Importing @cordierite/react-native registers listeners (via React Native Linking) that parse bootstrap URLs and call connect automatically; you do not need a manual Linking handler for the default flow. 5. Generate or provide a TLS private key for the host. For a new setup, prefer running cordierite keygen in an interactive terminal. 6. Add the matching sha256/... SPKI pin to the app configuration. Use the fingerprint printed by cordierite keygen. The CLI generates the leaf certificate automatically from that key and the resolved host IP. 7. Optional: use addCordieriteErrorListener to observe bootstrap parse failures or failed auto-connect attempts. 8. Advanced: use the exported cordieriteClient for manual connect, extra event listeners, or tests.
Expo
1. Add @cordierite/react-native to the app dependencies. 2. Add the Cordierite Expo config plugin to the Expo config. 3. Configure at least cliPins; optionally configure the private-LAN-only restriction if the project wants it. 4. Make sure the app scheme used by the project matches the scheme the CLI will pass to cordierite host --scheme .... 5. Run prebuild or rebuild the native project so the native config is applied. 6. Use a development build. Expo Go is not enough.
Bare React Native
1. Add @cordierite/react-native to the app dependencies. 2. Run the normal native dependency installation steps for the project. 3. Add the trusted host pins to native configuration on iOS and Android. 4. Add the optional private-LAN-only setting only if the project wants that restriction. 5. Configure URL schemes / intent filters so bootstrap links ({scheme}:///?cordierite=…) open your app. 6. Rebuild the native app after the configuration changes.
Final check
- The CLI host has a readable private key
- The app trusts the host's current pin
- The app has at least one registered tool
- The app scheme matches the
host --schemevalue