From hex-pack
Polls Hex API for project run status and triggers callbacks on completion or error for notifications, simulating webhooks since none exist.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin hex-packThis skill is limited to using the following tools:
Hex doesn't provide push webhooks. For event-driven integrations, poll run status or build your own notification system around run completions.
Generates TypeScript code for Hex API: list projects, trigger runs with params, poll completion, access results. For new integrations, setup testing, or API learning.
Creates webhook endpoints with HMAC signature verification, idempotency checks, payload parsing, and async retry handling for Stripe, GitHub, Twilio.
Generates webhook handlers with signature verification, idempotency checks, and retry logic for Stripe, GitHub, Shopify, Twilio, and other providers. Use for third-party integrations.
Share bugs, ideas, or general feedback.
Hex doesn't provide push webhooks. For event-driven integrations, poll run status or build your own notification system around run completions.
async function runWithCallback(
client: HexClient,
projectId: string,
params: Record<string, any>,
onComplete: (result: any) => void,
onError: (error: Error) => void
) {
try {
const { runId } = await client.runProject(projectId, params);
const poll = async () => {
const status = await client.getRunStatus(projectId, runId);
if (status.status === 'COMPLETED') { onComplete(status); return; }
if (status.status === 'ERRORED' || status.status === 'KILLED') { onError(new Error(status.status)); return; }
setTimeout(poll, 5000);
};
poll();
} catch (err) { onError(err as Error); }
}
runWithCallback(client, 'project-id', { date: '2025-01-01' },
(result) => {
// Send Slack notification, email, etc.
fetch(process.env.SLACK_WEBHOOK_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text: `Hex project completed: ${result.runId}` }),
});
},
(error) => console.error('Run failed:', error)
);