/trident-api-reference
Type Reference document (prevents method signature hallucination) - Trigger trident_available true in build_status.md
$ npx -y skills add PlamenTSV/plamen --skill trident-api-reference --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/trident-api-reference
Context preview
The summary Claude sees to decide when to auto-load this skill.
Type Reference document (prevents method signature hallucination) - Trigger trident_available true in build_status.md
SKILL.md
trident-api-reference.SKILL.mdname: "trident-api-reference"
description: "Type Reference document (prevents method signature hallucination) - Trigger trident_available true in build_status.md"
Skill: Trident API Reference (v0.12.0)
> **Type**: Reference document (prevents method signature hallucination) > **Trigger**: `trident_available: true` in `build_status.md` > **Loaded by**: Invariant fuzz generator (Phase 4b), security-verifier Template 6 (Phase 5) > **Version**: Trident v0.12.0 (Ackee Blockchain Security) > **Important**: Check `trident --version` before using. If version differs, warn and proceed with caution.
---
CLI Commands
# Initialize scaffolding (creates trident-tests/ from program IDL)
trident init
# Run fuzz campaign (v0.11+ uses built-in TridentSVM - no honggfuzz/AFL needed)
# Run from the trident-tests/ directory
cd trident-tests && trident fuzz run fuzz_0
# Run with a specific seed for reproducibility
trident fuzz run fuzz_0 12345
# Enable detailed transaction logging
TRIDENT_LOG=1 trident fuzz run fuzz_0
# Build without running (useful for CI or pre-checks)
trident fuzz run fuzz_0 --skip-build
**Platform support**: Trident v0.11+ works on **Linux, macOS (including Apple Silicon), and Windows**. Earlier versions (<=0.10) required honggfuzz (Linux-only).
Project Structure
trident-tests/
fuzz_tests/
fuzz_0/
fuzz_instructions.rs # Handler definitions (auto-generated, customize)
test_fuzz.rs # Entry point (auto-generated)
.fuzz-artifacts/ # Crash/violation files written here (v0.11+)
Trident.toml # Configuration (iterations, coverage, regression)Key Types and Traits
FuzzInstruction Enum
// Auto-generated from IDL. Each variant = one program instruction.
// Customize: add bounds to parameters, constrain account selection.
#[derive(Arbitrary, DisplayIx, FuzzTestExecutor, FuzzDeserialize)]
pub enum FuzzInstruction {
InstructionName(InstructionNameData),
// ...
}Instruction Data Structs
#[derive(Arbitrary, Debug)]
pub struct InstructionNameData {
// Fields mirror the instruction's arguments
pub amount: u64,
pub authority: AccountId, // AccountId = index into AccountsStorage
// ...
}AccountsStorage
// Manages test accounts. Use AccountId (u8) to reference accounts.
// Trident creates/reuses accounts automatically.
// Read account state:
let account = fuzz_accounts.token_account.storage().get(&account_id);
// Custom account setup (e.g., mock oracle):
fn set_account_custom(
&mut self,
account_id: AccountId,
data: &[u8],
owner: &Pubkey,
) -> Pubkey;Invariant Hooks
impl FuzzInstruction {
// Called after EACH instruction execution
fn check_invariant(&self, pre_state: &Snapshot, post_state: &Snapshot) {
// Assert protocol invariants here
// Panic = violation found = crash file generated
assert!(
post_state.total_supply == post_state.sum_balances(),
"Supply invariant violated"
);
}
}Snapshot Pattern
// Capture state before instruction for comparison
struct Snapshot {
total_supply: u64,
vault_balance: u64,
// Add fields for each invariant
}
impl Snapshot {
fn capture(accounts: &AccountsStorage) -> Self {
// Read relevant account states
}
}Common Pitfalls
1. **Check `.fuzz-artifacts/` for violations**: Trident v0.11+ writes crash/violation files to `.fuzz-artifacts/` (not `fuzzing/fuzz_0/` like older versions). Always check this directory even if stdout shows no errors. 2. **AccountId reuse**: Multiple instruction fields using the same AccountId type will be assigned the same account. Use distinct account pools for distinct roles. 3. **Silent reverts**: If handler setup fails (wrong PDA, missing prerequisite), the instruction silently reverts. Check success rate -- if all calls revert, the campaign is trivial.
Read more
name: "trident-api-reference" description: "Type Reference document (prevents method signature hallucination) - Trigger trident_available true in build_status.md"
Skill: Trident API Reference (v0.12.0)
> **Type**: Reference document (prevents method signature hallucination) > **Trigger**: `trident_available: true` in `build_status.md` > **Loaded by**: Invariant fuzz generator (Phase 4b), security-verifier Template 6 (Phase 5) > **Version**: Trident v0.12.0 (Ackee Blockchain Security) > **Important**: Check `trident --version` before using. If version differs, warn and proceed with caution.
---
CLI Commands
# Initialize scaffolding (creates trident-tests/ from program IDL) trident init # Run fuzz campaign (v0.11+ uses built-in TridentSVM - no honggfuzz/AFL needed) # Run from the trident-tests/ directory cd trident-tests && trident fuzz run fuzz_0 # Run with a specific seed for reproducibility trident fuzz run fuzz_0 12345 # Enable detailed transaction logging TRIDENT_LOG=1 trident fuzz run fuzz_0 # Build without running (useful for CI or pre-checks) trident fuzz run fuzz_0 --skip-build
**Platform support**: Trident v0.11+ works on **Linux, macOS (including Apple Silicon), and Windows**. Earlier versions (<=0.10) required honggfuzz (Linux-only).
Project Structure
trident-tests/
fuzz_tests/
fuzz_0/
fuzz_instructions.rs # Handler definitions (auto-generated, customize)
test_fuzz.rs # Entry point (auto-generated)
.fuzz-artifacts/ # Crash/violation files written here (v0.11+)
Trident.toml # Configuration (iterations, coverage, regression)Key Types and Traits
FuzzInstruction Enum
// Auto-generated from IDL. Each variant = one program instruction.
// Customize: add bounds to parameters, constrain account selection.
#[derive(Arbitrary, DisplayIx, FuzzTestExecutor, FuzzDeserialize)]
pub enum FuzzInstruction {
InstructionName(InstructionNameData),
// ...
}Instruction Data Structs
#[derive(Arbitrary, Debug)]
pub struct InstructionNameData {
// Fields mirror the instruction's arguments
pub amount: u64,
pub authority: AccountId, // AccountId = index into AccountsStorage
// ...
}AccountsStorage
// Manages test accounts. Use AccountId (u8) to reference accounts.
// Trident creates/reuses accounts automatically.
// Read account state:
let account = fuzz_accounts.token_account.storage().get(&account_id);
// Custom account setup (e.g., mock oracle):
fn set_account_custom(
&mut self,
account_id: AccountId,
data: &[u8],
owner: &Pubkey,
) -> Pubkey;Invariant Hooks
impl FuzzInstruction {
// Called after EACH instruction execution
fn check_invariant(&self, pre_state: &Snapshot, post_state: &Snapshot) {
// Assert protocol invariants here
// Panic = violation found = crash file generated
assert!(
post_state.total_supply == post_state.sum_balances(),
"Supply invariant violated"
);
}
}Snapshot Pattern
// Capture state before instruction for comparison
struct Snapshot {
total_supply: u64,
vault_balance: u64,
// Add fields for each invariant
}
impl Snapshot {
fn capture(accounts: &AccountsStorage) -> Self {
// Read relevant account states
}
}Common Pitfalls
1. **Check `.fuzz-artifacts/` for violations**: Trident v0.11+ writes crash/violation files to `.fuzz-artifacts/` (not `fuzzing/fuzz_0/` like older versions). Always check this directory even if stdout shows no errors. 2. **AccountId reuse**: Multiple instruction fields using the same AccountId type will be assigned the same account. Use distinct account pools for distinct roles. 3. **Silent reverts**: If handler setup fails (wrong PDA, missing prerequisite), the instruction silently reverts. Check success rate -- if all calls revert, the campaign is trivial.
Autonomous Web3 security auditor for Claude Code and OpenAI Codex CLI. Orchestrates 18-100 AI agents across 40+ phases to produce audit reports with verified PoC exploits — for smart contracts and L1 node-client infrastructure.
Repo: PlamenTSV/plamen
Other skills on plamen.
- /ability-analysis
Trigger Pattern Always (Aptos Move) - foundational security check - Inject Into Breadth agents, depth agents
Open skill - /bit-shift-safety
Trigger Pattern Always (Aptos Move) - Move VM aborts on shift = bit width - Inject Into Breadth agents, depth-edge-case
Open skill - /centralization-risk
Trigger Protocol has privileged roles (admin, operator, governance, resource account owner) - Covers Single points of failure, privilege escalation, external governance dependen...
Open skill - /cross-chain-timing
Trigger Pattern wormhole|layerzero|ccip|bridge|cross_chain|vaa|guardian|emitter|relay|remote_chain|payload|nonce.sequence - Inject Into Breadth agents, depth-external
Open skill - /dependency-audit
Trigger EXTERNAL_LIB flag detected (protocol uses third-party Move dependencies) - Used by Breadth agents, depth-external
Open skill - /economic-design-audit
Trigger Pattern MONETARY_PARAMETER flag (required) - Inject Into Breadth agents (merged via M4 hierarchy)
Open skill

