From alchemy-pack
Executes production readiness checklist for Alchemy-powered dApps, covering API infrastructure, security, smart contracts, and performance validation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/alchemy-pack:alchemy-prod-checklistThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- [ ] API key restricted to production domains in Alchemy Dashboard
console.log of sensitive data in production builds// src/prod/readiness.ts
import { Alchemy, Network } from 'alchemy-sdk';
async function checkReadiness(): Promise<void> {
const checks: Array<{ name: string; pass: boolean; detail: string }> = [];
// 1. API connectivity
const alchemy = new Alchemy({ apiKey: process.env.ALCHEMY_API_KEY, network: Network.ETH_MAINNET });
try {
const block = await alchemy.core.getBlockNumber();
checks.push({ name: 'API Connectivity', pass: true, detail: `Block ${block}` });
} catch (err: any) {
checks.push({ name: 'API Connectivity', pass: false, detail: err.message });
}
// 2. Enhanced API
try {
await alchemy.core.getTokenBalances('0x0000000000000000000000000000000000000000');
checks.push({ name: 'Enhanced API', pass: true, detail: 'getTokenBalances works' });
} catch { checks.push({ name: 'Enhanced API', pass: false, detail: 'Enhanced API unavailable' }); }
// 3. NFT API
try {
await alchemy.nft.getContractMetadata('0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D');
checks.push({ name: 'NFT API', pass: true, detail: 'getContractMetadata works' });
} catch { checks.push({ name: 'NFT API', pass: false, detail: 'NFT API unavailable' }); }
// 4. API key not in build output
const fs = await import('fs');
const buildDir = './dist';
if (fs.existsSync(buildDir)) {
const content = fs.readdirSync(buildDir, { recursive: true })
.filter((f: any) => f.toString().endsWith('.js'))
.map((f: any) => fs.readFileSync(`${buildDir}/${f}`, 'utf8'))
.join('');
const apiKeyExposed = content.includes(process.env.ALCHEMY_API_KEY || '');
checks.push({ name: 'API Key Safety', pass: !apiKeyExposed, detail: apiKeyExposed ? 'CRITICAL: API key found in build!' : 'API key not in build' });
}
// Print results
console.log('\n=== Alchemy Production Readiness ===\n');
for (const c of checks) {
console.log(`[${c.pass ? 'PASS' : 'FAIL'}] ${c.name}: ${c.detail}`);
}
const failures = checks.filter(c => !c.pass);
console.log(`\n${failures.length === 0 ? 'READY FOR PRODUCTION' : `${failures.length} BLOCKING ISSUES`}`);
}
checkReadiness().catch(console.error);
For version upgrades, see alchemy-upgrade-migration.
2plugins reuse this skill
First indexed Jul 18, 2026
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin alchemy-packApplies Web3 security best practices for Alchemy-powered apps: API key protection, private key management, input validation, and dApp hardening.
Walks through a production readiness checklist for QuickNode blockchain RPC and Web3 infrastructure integration. Covers connection, error handling, and common issues.
Production readiness checklist for Clerk deployment. Covers environment config, security hardening, monitoring, error handling, and compliance.