Agent skill

Verification Protocol

by PlamenTSV in PlamenTSV/plamen

Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

MITAuto-check passed

Install Verification Protocol

skills CLI
$ npx skills add PlamenTSV/plamen --skill verification-protocol -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install PlamenTSV/plamen verification-protocol --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/skills/sui/verification-protocol .claude/skills/verification-protocol && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
verification-protocol
GitHub stars
303
Token cost
~3.5k tokens
SKILL.md length
1,207 words
Files
3 (incl. references)
Skills in repo
87
Repo updated
First seen
Licence
MIT

At a glance

Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

  • Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)
  • SKILL.md covers Evidence Source Tracking…, Pre-Verification Understanding, Pre-PoC Feasibility Gates… and Test File Templates, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Verification Protocol is an agent skill from PlamenTSV/plamen. Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/advanced.md` and `references/templates.md`).

The repository describes itself as: Autonomous Web3 security audit agent for Claude Code. The licence is MIT.

When your agent uses it

  • Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

Example prompts

  • “/verification-protocol”

What it can do on your machine

Read from SKILL.md and the folder at commit 795962b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Verification Protocol loads about 3.5k tokens when it runs, and up to ~10k if it reads all its reference files. Until then it costs about 31 tokens; SKILL.md has 1,207 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~31
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~10k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from PlamenTSV/plamen at commit 795962b, republished under its MIT licence (© PlamenTSV). 1,207 words, ~3,487 tokens.

Download SKILL.mdSave it as .claude/skills/verification-protocol/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
verification-protocol
description
Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

Verification Protocol (Sui Move)

Trigger Pattern: Always (used by all verifier agents) Inject Into: security-verifier agents (Phase 5) Purpose: Prove hypotheses TRUE or FALSE using Sui Move test framework with test_scenario PoC code.


Evidence Source Tracking (MANDATORY)

CRITICAL: For EVERY piece of evidence used in verification, you MUST tag its source. Evidence from mocks or unverified external packages CANNOT support a REFUTED verdict.

Evidence Source Tags
TagMeaningValid for REFUTED?
[PROD-ONCHAIN]Production Sui object data (via Sui Explorer or RPC)YES
[PROD-SOURCE]Verified source from Sui Explorer / published packageYES
[PROD-PUBLISHED]Test against published package bytecodeYES
[CODE]Audited codebase (in-scope source)YES
[MOCK]Mock/test modules or objectsNO
[EXT-UNV]External, unverified package behaviorNO
[DOC]Documentation/spec onlyNO (needs verification)
Evidence Audit Table (REQUIRED in every verification output)

Before ANY verdict, fill this table:

markdown
### Evidence Audit
| Claim | Evidence Source | Tag | Valid for REFUTED? |
|-------|-----------------|-----|-------------------|
| "External package returns X" | Mock module | [MOCK] | NO |
| "Object ownership is Y" | sources/module.move:123 | [CODE] | YES |
| "Shared object state is Z" | Sui Explorer object view | [PROD-ONCHAIN] | YES |
Mock Rejection Rule

AUTOMATIC OVERRIDE: If ANY evidence supporting REFUTED has tag [MOCK] or [EXT-UNV]:

  • CANNOT return REFUTED
  • MUST return CONTESTED
  • Triggers production verification

Example:

markdown
## Verdict: REFUTED -> CONTESTED (mock evidence override)

### Evidence Audit
| Claim | Source | Tag | Valid? |
|-------|--------|-----|--------|
| "External module validates input" | test_helper.move:45 | [MOCK] | NO |

**Override reason**: REFUTED verdict relies on mock behavior at test_helper.move:45.
Production package behavior is UNVERIFIED. Must fetch published package source.

Pre-Verification Understanding

Before writing ANY test code, you MUST answer:

Question 1: What is the EXACT bug?
NOT: "Object ownership is wrong"
NOT: "Access control is missing"
NOT: "State is inconsistent"

YES: "Function [X] in module [Y] accepts shared object [Z] as `&mut` without
      verifying caller holds [CapabilityType], allowing any address to mutate
      field [W] at line [N]"
Question 2: What OBSERVABLE difference proves it?
NOT: "State changed"
NOT: "Object was modified"

YES: "Before exploit: pool.total_supply = 1000, attacker_balance = 0
      After exploit: pool.total_supply = 1000, attacker_balance = 500
      Expected: transaction should have aborted with ENotAuthorized"
Question 3: What is the EXACT assertion?
NOT: assert!(exploit_worked, 0)

YES: assert!(coin::value(&stolen_coin) > 0, ERR_EXPLOIT_FAILED)
 OR: // Transaction should abort -- if it succeeds, the bug exists
 OR: assert!(state_after.field != state_before.field, ERR_STATE_UNCHANGED)

If you cannot answer all three -> ASK FOR CLARIFICATION


Pre-PoC Feasibility Gates (MANDATORY)

Before writing test code, verify these two gates. If either FAILS, adjust the hypothesis.

Gate F1: Reachability

Trace a call path from a permissionless entry point to the vulnerable code.

  • Entry point identified (public/external/entry function)
  • Call path traced through intermediary functions
  • All access checks on the path are passable by the attacker profile

If NO entry point reaches the vulnerable code → UNREACHABLE → FALSE_POSITIVE. If reachable only through a restricted path → document the restriction, adjust likelihood.

Gate F2: Math Bounds

Substitute real-world value domains into the expression that triggers the bug.

  • Parameter domains identified (token decimals, max supply, TVL range, fee range, time bounds)
  • Expression evaluated at worst-case feasible inputs
  • Result crosses the bug threshold

If the bug requires values outside feasible domains → INFEASIBLE → FALSE_POSITIVE. If feasible only at extreme but realistic parameters → document the threshold, proceed with adjusted severity.

Both gates PASS → proceed to PoC. Either gate FAILS → document and stop.


Test File Templates

See templates.md in this directory for all Sui Move test templates (Templates 1-6: shared object mutation, capability theft, dynamic fields, object wrapping, PTB exploit, concurrent access).

Interpreting Results

Test PASSES -> Bug CONFIRMED

The assertion that "proves the bug" succeeded.

Test FAILS -> Check Why
FailureMeaningAction
Abort with error codeFunction validation rejected the actionCheck if rejection IS the bug or a fix
test_scenario::take_from_sender failsObject not at expected addressCheck transfer logic in setup
test_scenario::take_shared failsShared object not publishedCheck initialization creates shared objects
Type mismatchWrong object type taken from scenarioFix type parameters
Arithmetic abort (overflow/underflow)Math operation failedCheck if this IS the bug or setup error
Borrow checker error (compile)Cannot borrow object mutablyRestructure test to respect Move borrow rules

Iteration Protocol

Attempt 1: Direct implementation of test strategy from hypothesis.

Attempt 2: Adjust parameters:

  • Different coin amounts (larger/smaller, edge values like 0, 1, u64::MAX)
  • Different transaction ordering (swap next_tx blocks)
  • Different actor addresses
  • Different object states (empty pool, full pool, single-user, multi-user)

Attempt 3: Re-examine assumptions:

  • Are shared objects properly published in setup?
  • Are capability objects at the right addresses?
  • Is the module's initialization complete (all shared objects created)?
  • Are type parameters correct (generic type instantiation)?
  • Does the function require a Clock or TxContext argument not provided?

After 5 attempts: If still fails -> FALSE_POSITIVE with documented reasoning.


Severity Determination

CRITICAL
  • Direct fund theft (Coin drain from shared pools)
  • Unauthorized admin capability acquisition
  • Arbitrary package upgrade (if upgrade cap compromised and no timelock)
  • No special prerequisites needed
  • Attacker profits significantly
HIGH
  • Fund loss with specific setup (object pre-creation, ordering dependency)
  • Broken core functionality (deposits, withdrawals, swaps, liquidations)
  • Shared object state corruption affecting all users
  • Significant TVL at risk
MEDIUM
  • Limited fund loss under specific conditions
  • Object state corruption (non-fund data)
  • Edge cases with real impact at design limits
  • Dynamic field pollution affecting protocol behavior
  • Moderate value at risk
LOW
  • Negligible direct impact
  • Extreme edge cases only
  • Admin-controlled risk (with multisig governance)
  • View function / event emission issues
  • Stranded non-value objects

Exchange Rate Finding Severity (MANDATORY)

CRITICAL: Before assigning severity to ANY finding affecting share/asset ratios or exchange rates, you MUST complete this quantitative analysis.

Show full SKILL.md (487 more words)Show less
Required Quantitative Analysis

For findings affecting exchange rates, fill in this table:

MetricValueSource
Protocol TVL[X SUI or USD]Production or documented estimate
Attack cost[Y]Calculated from attack steps (gas, tokens, opportunity)
Attacker profit[Z]Calculated (extraction - cost)
Victim loss per user[W]Calculated per affected user
Affected user count[N]one / some / all
Profit ratio[Z/Y]Attacker profit / attack cost
Severity Calculation

Step 1: Calculate total impact = W * N (victim loss * affected users) Step 2: Calculate profitability = Z/Y (attacker profit / cost) Step 3: Apply severity matrix:

Total ImpactProfitability > 2xProfitability 1-2xProfitability < 1x
> $100,000CRITICALHIGHHIGH
$10,000 - $100,000HIGHHIGHMEDIUM
$1,000 - $10,000HIGHMEDIUMMEDIUM
< $1,000MEDIUMLOWLOW
What NOT to Do
  • "This enables extraction" (qualitative, no numbers)
  • "Attacker can profit significantly" (undefined)
  • "Loss of funds possible" (unquantified)
What TO Do
  • "Attacker profits 500,000 SUI ($500,000) from 1,000 SUI ($1,000) investment"
  • "Each victim loses up to 2% of deposit value, affecting all pool users"
  • "Total extractable value: $500,000 with 500x profit ratio -> CRITICAL"

Design Flaw Severity Escalation

When a finding is classified as a "design flaw" rather than an exploit, apply this escalation check:

CriterionYES/NO
Risk-free for the attacker (no capital at risk, or attacker profits even if partial)
Repeatable (can be executed on every occurrence of a triggering event)
Scales with protocol usage (impact grows with TVL, user count, or time)
No mitigation without code change (off-chain monitoring cannot prevent, only detect)

If ALL 4 criteria are YES: Severity floor = MEDIUM (cannot be rated LOW or Informational) If 3 of 4 criteria are YES: Recheck -- the remaining criterion may not actually block the attack at scale



Advanced Protocol Reference: See advanced.md for RAG queries, RAG confidence override, chain hypothesis protection, Sui-specific testing considerations, dual-perspective verification, realistic parameter validation, anti-downgrade guard, new observations, error trace output, and bidirectional role analysis.

Output Format

CONFIRMED
markdown
## Verdict: CONFIRMED

### Bug Mechanism Verified
{Explain what the test_scenario test proves in 2-3 sentences}

### Test Code
{Full Move test function}

### Test Output
{Relevant assertions and logged values from `sui move test`}

### Key Evidence
| Metric | Value |
|--------|-------|
| Before | {value} |
| After | {value} |
| Expected | {value} |
| Difference | {calculation} |

### Evidence Audit
| Claim | Evidence Source | Tag | Valid for REFUTED? |
|-------|-----------------|-----|-------------------|

### RAG Evidence
- **Attack Vectors Consulted**: [list]
- **Similar Exploits Found**: [count]
- **Historical Precedent**: [description]

### Severity: {LEVEL}
{Justification in 1-2 sentences}
FALSE_POSITIVE
markdown
## Verdict: FALSE_POSITIVE

### Attempts Made

**Attempt 1:**
- Approach: {description}
- Result: {what happened -- include abort codes}
- Learning: {insight}

**Attempt 2:**
- Approach: {description}
- Result: {what happened}
- Learning: {insight}

**Attempt 3:**
- Approach: {description}
- Result: {what happened}
- Learning: {insight}

### Evidence Audit
| Claim | Evidence Source | Tag | Valid for REFUTED? |
|-------|-----------------|-----|-------------------|

### Why It Is Not a Bug
{Explain the actual behavior and why hypothesis was wrong in 2-3 sentences}

### Error Trace
- **Failure Type**: {type}
- **Location**: {location}
- **Error Code**: {code}
- **State at Failure**: {state}
- **Investigation Question**: {question}
CONTESTED
markdown
## Verdict: CONTESTED

### Evidence Status
| Checkpoint | Status | Details |
|------------|--------|---------|
| External package behavior verified against PRODUCTION | YES/NO | {details} |
| All entry functions checked | YES/NO | {details} |
| Object ownership model verified | YES/NO | {details} |
| Shared object access control confirmed | YES/NO | {details} |

### Evidence Audit
| Claim | Evidence Source | Tag | Valid for REFUTED? |
|-------|-----------------|-----|-------------------|

### Why This Cannot Be REFUTED
{Explain what evidence is missing to definitively rule out the bug}

### Escalation Required
- [ ] Fetch published package source for {external dep}
- [ ] Dump production object state for {object}
- [ ] Check additional entry function paths: {list}

### Error Trace
- **Failure Type**: {type}
- **Location**: {location}
- **Error Code**: {code}
- **State at Failure**: {state}
- **Investigation Question**: {question}

Insufficient Evidence (HALT CONDITIONS)

Before marking REFUTED, check ALL boxes:

  • External package behavior verified against PRODUCTION (not mock)
  • Attack path checked on ALL public entry functions that access the same shared objects
  • Profit calculated with attacker HOLDING tokens (not just transferring in)
  • Missing precondition documented (type: STATE / ACCESS / TIMING / EXTERNAL / BALANCE)
  • Searched other findings for matching postconditions (chain analysis integration)
  • Object ownership verified in source (not assumed from naming)
  • Capability access control verified for ALL shared object mutation paths
  • Dynamic field access patterns verified (correct key types, no collisions)
Evidence That Does NOT Count
  • "Mock module shows X" -- mocks are not production behavior
  • "Standard Coin<T>" -- may be wrapped in custom module with hooks/restrictions
  • "Attacker loses by sending coins" -- may profit via position held in pool
  • "Function is public(package)" -- may be callable via CPI from another module in the same package
  • "Requires AdminCap" -- AdminCap may have store ability and be transferable
  • "Attacker cannot acquire X" -- another finding may CREATE this condition
  • "Object is owned by admin" -- ownership may be transferable if object has store

© PlamenTSV, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in agents/skills/sui/verification-protocol of PlamenTSV/plamen.

  • SKILL.md
  • references/advanced.md
  • references/templates.md

Open the folder on GitHubat commit 795962b

Compare with similar skills

Verification Protocol next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Verification Protocol compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verification Protocol this skillPlamenTSV/plamen303—~3.5kAutomated safety check: PassMIT
Golang Patternsaffaan-m/ECC274k—~1.1kAutomated safety check: PassMIT
Dotnet Patternsaffaan-m/ECC274k1 repos~2.3kAutomated safety check: PassMIT
Fastapi Patternsaffaan-m/ECC274k—~2.3kAutomated safety check: PassMIT
Kotlin Exposed Patternsaffaan-m/ECC274k4 repos~5.5kAutomated safety check: PassMIT
Python Patternsaffaan-m/ECC274k—~2.3kAutomated safety check: PassMIT

Similar skills

  • Golang Patterns

    affaan-m/ECC

    Go-specific design patterns and best practices including functional options, small interfaces, dependency injection, concurrency patterns, error handling, and package organization.

    274k GitHub stars~1.1k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Dotnet Patterns

    affaan-m/ECC

    Idiomatic C and .NET patterns, conventions, dependency injection, async/await, and best practices for building robust, maintainable .NET applications.

    274k GitHub starsUsed in 1 repo~2.3k tokens
    DevelopmentAuto-check passed
  • Fastapi Patterns

    affaan-m/ECC

    FastAPI patterns for async APIs, dependency injection, Pydantic request and response models, OpenAPI docs, tests, security, and production readiness.

    274k GitHub stars~2.3k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • JetBrains Exposed ORM patterns including DSL queries, DAO pattern, transactions, HikariCP connection pooling, Flyway migrations, and repository pattern.

    274k GitHub starsUsed in 4 repos~5.5k tokens
    DatabasesAuto-check passed
  • Python Patterns

    affaan-m/ECC

    Python-specific design patterns and best practices including protocols, dataclasses, context managers, decorators, async/await, type hints, and package organization.

    274k GitHub stars~2.3k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Fastapi Patterns

    affaan-m/ECC

    FastAPI best practices covering project structure, Pydantic v2 schemas, dependency injection, async handlers, authentication, authorization, transactional service layers, and testing with httpx and…

    274k GitHub starsUsed in 1 repo~3.9k tokens
    Backend & APIsAuto-check: notes

More from PlamenTSV/plamen

All 87 skills in this repo
  • Audit Prep

    PlamenTSV/plamen

    Prepare Solidity projects for a security audit — test coverage, test quality, NatSpec docs, code hygiene, dependency health, best-practice enforcement, deployment readiness, and project…

    303 GitHub stars~3.7k tokensUpdated 11 days ago
    Auto-check passed
  • Ability Analysis

    PlamenTSV/plamen

    Trigger Pattern Always (Aptos Move) - foundational security check - Inject Into Breadth agents, depth agents

    303 GitHub stars~3.3k tokensUpdated 11 days ago
    Auto-check passed
  • Ability Analysis

    PlamenTSV/plamen

    Trigger Pattern Always (Sui Move) -- foundational security check - Inject Into Breadth agents, depth agents

    303 GitHub stars~3.2k tokensUpdated 11 days ago
    Auto-check passed
  • Account Lifecycle

    PlamenTSV/plamen

    Trigger Pattern ACCOUNTCLOSING flag detected (close/CloseAccount usage) - Inject Into Breadth agents, depth agents

    303 GitHub stars~1.2k tokensUpdated 11 days ago
    Auto-check passed
  • Account Validation

    PlamenTSV/plamen

    Trigger Pattern Always required for Solana audits - Inject Into Breadth agents, depth agents

    303 GitHub stars~1.7k tokensUpdated 11 days ago
    Auto-check passed
  • Auth Validation

    PlamenTSV/plamen

    Trigger Pattern Always required for Soroban audits - Inject Into Breadth agents, depth agents

    303 GitHub stars~2.2k tokensUpdated 11 days ago
    Auto-check passed

Questions about Verification Protocol

What does Verification Protocol do?

Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5). Verification Protocol is an agent skill from PlamenTSV/plamen.

When should I use Verification Protocol?

Verification Protocol fits situations like: pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5).

How do I install Verification Protocol in Claude Code?

Run `npx skills add PlamenTSV/plamen --skill verification-protocol -a claude-code`. Or copy the skill folder (agents/skills/sui/verification-protocol in PlamenTSV/plamen) into .claude/skills/verification-protocol in your project. Claude Code loads it when a task matches its description.

How do I install Verification Protocol in Codex?

Run `npx skills add PlamenTSV/plamen --skill verification-protocol -a codex`. Or copy the skill folder (agents/skills/sui/verification-protocol in PlamenTSV/plamen) into .agents/skills/verification-protocol in your project. Codex loads it when a task matches its description.

Can I use Verification Protocol in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PlamenTSV/plamen --skill verification-protocol -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/verification-protocol, .gemini/skills/verification-protocol, .github/skills/verification-protocol and .opencode/skills/verification-protocol in your project.

What does Verification Protocol need to run?

SKILL.md names no scripts, command-line tools or credentials: Verification Protocol is instructions for the agent only.

Does Verification Protocol access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Verification Protocol safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Verification Protocol use?

Verification Protocol is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Verification Protocol use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.7k tokens, read only when the agent opens those files.

What are the alternatives to Verification Protocol?

Skills that share tags, products or a category with Verification Protocol: Golang Patterns (affaan-m/ECC, 274k stars), Dotnet Patterns (affaan-m/ECC, 274k stars), Fastapi Patterns (affaan-m/ECC, 274k stars) and Kotlin Exposed Patterns (affaan-m/ECC, 274k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verification Protocol?

PlamenTSV (a GitHub user) maintains it in PlamenTSV/plamen, which has 303 GitHub stars. The repository holds 87 skills in this directory. The repository was last updated on September 26, 2026.

Source: PlamenTSV/plamen on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.