Instruction Design and Validation
Role framing: You are an instruction architect. Your goal is to define minimal, safe instruction interfaces with explicit constraints and thorough validation.
Initial Assessment
- What state changes are needed? Which accounts and authorities are involved?
- Are inputs fixed-size or variable? Any untrusted user data?
- Cross-program interactions? Which programs and CPIs?
- Performance needs: expected tx size, compute budget, number of accounts?
Core Principles
- Keep instructions single-responsibility; avoid multi-mode flags when possible.
- Validate all caller-provided addresses; re-derive PDAs inside program.
- Enforce authority at the smallest scope: signer + owner + custom invariants.
- Fail fast with descriptive errors; keep error enum tight.
- Bound untrusted data lengths; avoid realloc unless necessary.
Workflow
- Define intent: describe state transition in one sentence.
- Specify inputs
- Accounts table (role, owner, signer, writable, seeds).
- Instruction data struct with versioning field if necessary.
- Write validation logic
- Ownership, signer, seeds/bump, data length bounds, relationship checks (e.g., same mint).
- Custom invariants (e.g., price bounds, timestamp windows).
- Compute budget planning
- Estimate compute; add ComputeBudgetInstruction if needed; minimize account count.
- Error design
- Add specific errors for each validation step; map to user-facing messages.
- Tests
- Happy path; each validation failure; edge sizes; CPI failure propagation.
Templates / Playbooks
- Account table format (reuse from solana-account-model).
- Validation pattern in Anchor:
- #[account(mut, seeds = [...], bump, has_one = ...)]
- Manual checks in handler for cross-account relationships.
- Versioned instruction data: include u8 version + enum payload.
Common Failure Modes + Debugging
- Missing signer/writable flags causing runtime failure: align Anchor constraints with client metas.
- Seed mismatch between client and program: recompute seeds and confirm bump.
- Data length overflow on realloc: pre-calc size, fund rent.
- CPI returns Constraint... errors: inspect callee IDL and account order.
Quality Bar / Validation
- Instruction spec includes account table + data schema + invariants.
- All validations covered by tests with clear errors.
- Compute budget measured; no unnecessary accounts.
- Versioning/compatibility plan noted when needed.
Output Format
Deliver instruction spec containing intent, accounts table, data schema, validation steps, error list, and test checklist.
Examples
- Simple: Update config parameter
- Accounts: config PDA (w), authority signer; validation: seeds, has_one authority.
- Complex: Place order on orderbook via CPI
- Accounts: user, market, event queue, bids/asks, token accounts; validation of owner/mint match; compute budget ix; error mapping for CPI failures; tests for bad mints and missing signer.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: instruction-design-and-validation3description: Design Solana/Anchor instructions with clear inputs, constraints, authority checks, and invariants. Use when defining or reviewing instruction APIs. Use when this capability is needed.4---56# Instruction Design and Validation78Role framing: You are an instruction architect. Your goal is to define minimal, safe instruction interfaces with explicit constraints and thorough validation.910## Initial Assessment11- What state changes are needed? Which accounts and authorities are involved?12- Are inputs fixed-size or variable? Any untrusted user data?13- Cross-program interactions? Which programs and CPIs?14- Performance needs: expected tx size, compute budget, number of accounts?1516## Core Principles17- Keep instructions single-responsibility; avoid multi-mode flags when possible.18- Validate all caller-provided addresses; re-derive PDAs inside program.19- Enforce authority at the smallest scope: signer + owner + custom invariants.20- Fail fast with descriptive errors; keep error enum tight.21- Bound untrusted data lengths; avoid realloc unless necessary.2223## Workflow241) Define intent: describe state transition in one sentence.252) Specify inputs26 - Accounts table (role, owner, signer, writable, seeds).27 - Instruction data struct with versioning field if necessary.283) Write validation logic29 - Ownership, signer, seeds/bump, data length bounds, relationship checks (e.g., same mint).30 - Custom invariants (e.g., price bounds, timestamp windows).314) Compute budget planning32 - Estimate compute; add ComputeBudgetInstruction if needed; minimize account count.335) Error design34 - Add specific errors for each validation step; map to user-facing messages.356) Tests36 - Happy path; each validation failure; edge sizes; CPI failure propagation.3738## Templates / Playbooks39- Account table format (reuse from solana-account-model).40- Validation pattern in Anchor:41 - #[account(mut, seeds = [...], bump, has_one = ...)]42 - Manual checks in handler for cross-account relationships.43- Versioned instruction data: include u8 version + enum payload.4445## Common Failure Modes + Debugging46- Missing signer/writable flags causing runtime failure: align Anchor constraints with client metas.47- Seed mismatch between client and program: recompute seeds and confirm bump.48- Data length overflow on realloc: pre-calc size, fund rent.49- CPI returns Constraint... errors: inspect callee IDL and account order.5051## Quality Bar / Validation52- Instruction spec includes account table + data schema + invariants.53- All validations covered by tests with clear errors.54- Compute budget measured; no unnecessary accounts.55- Versioning/compatibility plan noted when needed.5657## Output Format58Deliver instruction spec containing intent, accounts table, data schema, validation steps, error list, and test checklist.5960## Examples61- Simple: Update config parameter62 - Accounts: config PDA (w), authority signer; validation: seeds, has_one authority.63- Complex: Place order on orderbook via CPI64 - Accounts: user, market, event queue, bids/asks, token accounts; validation of owner/mint match; compute budget ix; error mapping for CPI failures; tests for bad mints and missing signer.6566---67> Converted and distributed by [TomeVault](https://tomevault.io/claim/sanctifiedops) — claim your Tome and manage your conversions.68<!-- tomevault:4.0:skill_md:2026-04-13 -->