This skill should be used when the user asks to "review a script template", "audit a template", "check template implementation", "validate ts-templates code", or mentions reviewing BitCom templates like AIP, MAP, SIGMA, BAP. Validates ScriptTemplate implementations against best practices.
From bsv-skillsnpx claudepluginhub b-open-io/claude-plugins --plugin bsv-skillsThis skill uses the workspace's default tool permissions.
references/checklist-detailed.mdreferences/common-bugs.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Reviews prose for communication issues impeding comprehension, outputs minimal fixes in a three-column table per Microsoft Writing Style Guide. Useful for 'review prose' or 'improve prose' requests.
Review and validate script template implementations in ts-templates for correctness and best practices.
src/template/ appropriate subdirectoryScriptTemplate interface from @bsv/sdkdata property is public readonlybitcomIndex?: number field for protocol positionvalid?: boolean field for verification status| Method | Purpose | Requirements |
|---|---|---|
decode() | Static. Parse from BitComDecoded | Return array of instances |
lock() | Generate LockingScript | Use BitCom for OP_RETURN protocols |
unlock() | Generate UnlockingScript | Throw if not applicable |
verify() | Check signature validity | Return boolean |
script.chunks directly (no toASM().split())Correct pattern:
const script = Script.fromBinary(protocol.script)
const chunks = script.chunks
const field = Utils.toUTF8(chunks[0].data ?? [])
Incorrect patterns to flag:
// BAD: String splitting
const parts = script.toASM().split(' ')
// BAD: Buffer usage
const field = Buffer.from(chunks[0].data).toString()
// BAD: TextEncoder
new TextEncoder().encode(field)
Verify correct Utils functions:
| Operation | Correct | Incorrect |
|---|---|---|
| String → bytes | Utils.toArray(str, 'utf8') | Buffer.from(), TextEncoder |
| Bytes → string | Utils.toUTF8(bytes) | Buffer.toString(), TextDecoder |
| Bytes → hex | Utils.toHex(bytes) | Buffer.toString('hex') |
| Bytes → base64 | Utils.toBase64(bytes) | Buffer.toString('base64') |
For protocols with signatures:
valid field after verificationFor OP_RETURN protocols:
// BAD: Can throw on missing data
const field = Utils.toUTF8(chunks[0].data)
// GOOD: Handle missing data
const field = Utils.toUTF8(chunks[0].data ?? [])
Verify chunk indices match protocol specification:
// BAD: Crashes on parse error
static decode(bitcom: BitComDecoded): Protocol[] {
const script = Script.fromBinary(protocol.script) // Can throw!
}
// GOOD: Handle parse errors
static decode(bitcom: BitComDecoded): Protocol[] {
try {
const script = Script.fromBinary(protocol.script)
} catch {
continue // Skip invalid protocols
}
}
Check that mod.ts includes:
export { default as Protocol, PREFIX } from './src/template/...'
export type { ProtocolData, ProtocolOptions } from './src/template/...'
Provide structured feedback:
## Template Review: [TemplateName]
### Structure: ✅ PASS / ❌ FAIL
- [Details]
### Methods: ✅ PASS / ❌ FAIL
- [Details]
### Code Quality: ✅ PASS / ❌ FAIL
- [Details]
### Issues Found
1. [Issue description and fix]
2. [Issue description and fix]
### Recommendations
- [Optional improvements]
references/checklist-detailed.md - Extended validation criteriareferences/common-bugs.md - Known issues and fixes