Agent skill

Dependency Audit

by PlamenTSV in PlamenTSV/plamen

Trigger Pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents, depth-external

MITAuto-check passed

Install Dependency Audit

skills CLI
$ npx skills add PlamenTSV/plamen --skill dependency-audit -a claude-code

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

GitHub CLI
$ gh skill install PlamenTSV/plamen dependency-audit --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/dependency-audit .claude/skills/dependency-audit && 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
dependency-audit
GitHub stars
303
Token cost
~3.3k tokens
SKILL.md length
1,478 words
Files
1
Skills in repo
87
Repo updated
First seen
Licence
MIT

At a glance

Trigger Pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents, depth-external

  • Works in 6 steps: Dependency Inventory → Package Immutability Check → Transitive Dependency Risk → …
  • Pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents
  • SKILL.md covers Trigger Patterns, Step 1: Dependency Inventory, Step 2: Package Immutability… and Step 3: Transitive Dependency…, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Dependency Audit is an agent skill from PlamenTSV/plamen. Trigger Pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents, depth-external

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

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

When your agent uses it

  • Pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents

Example prompts

  • “/dependency-audit”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Dependency Inventory
  2. Package Immutability Check
  3. Transitive Dependency Risk
  4. Math Library Audit (CRITICAL -- Cetus Precedent)
  5. Shared Object Dependencies
  6. Interface Compatibility

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

Dependency Audit loads about 3.3k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 1,478 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~43
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

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,478 words, ~3,330 tokens.

Download SKILL.mdSave it as .claude/skills/dependency-audit/SKILL.md (or your agent's skills folder).
name
dependency-audit
description
Trigger Pattern EXTERNAL_LIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents, depth-external

Skill: DEPENDENCY_AUDIT (Sui/Move)

Trigger Pattern: EXTERNAL_LIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) Inject Into: Breadth agents, depth-external Finding prefix: [DEP-N] Rules referenced: R1, R4, R8, R10

Move's dependency model is package-based: Move.toml declares dependencies with git URLs and revisions. Unlike EVM's compiled-and-deployed model where dependencies are inlined at compile time, Sui Move packages can depend on other PUBLISHED packages (on-chain) or source packages (compiled together). Third-party math libraries, utility packages, and protocol SDKs are common dependency vectors.

STEP PRIORITY: Steps 3 (Critical Function Audit, especially Step 4 Math Library Audit) and 5 (Shared Object Dependencies) are where HIGH/CRITICAL severity findings most commonly hide. The Cetus hack originated from a custom math library bit shift bug. Do NOT rush these steps.


Trigger Patterns

[dependencies]|git\s*=|subdir\s*=|rev\s*=|published-at|math|utils|library|helpers|common

Step 1: Dependency Inventory

Parse Move.toml and build a complete dependency tree. Categorize:

#Dependency NameSource TypeSource URL/AddressVersion/Rev Pinned?Trust LevelUpgrade Risk
1SuiFrameworksui frameworkValidator-controlledTRUSTEDFramework upgrade by validators
2MoveStdlibFrameworkstd libraryValidator-controlledTRUSTEDFramework upgrade by validators
3{third_party}Git source{url}YES (rev={hash}) / NO (branch)MUST_AUDIT{describe}
4{on_chain_dep}Published{on-chain address}YES (version pinned) / NOMUST_AUDIT{describe}
5{protocol_own}Local path{path}N/A (in scope)IN_SCOPEN/A

Trust classification:

  • TRUSTED: Sui framework packages (sui, std). Audited by Mysten Labs, upgraded by validator governance. Minimal audit needed (but check for version-specific quirks).
  • MUST_AUDIT: Third-party packages. MUST analyze critical functions used by the protocol.
  • IN_SCOPE: Protocol's own packages. Full audit in main analysis.

Step 2: Package Immutability Check

For each third-party dependency, assess immutability and upgrade risk:

DependencyPinned to Specific Rev?Published On-Chain?UpgradeCap StatusUpgrade PolicyRisk
{dep}YES (rev: {hash}) / NO (branch: main)YES/NODestroyed (immutable) / Held by {who} / UNKNOWN{compatible/additive/dep_only/immutable}{assess}

Source dependencies (compiled together):

  • Pinned to specific git revision -> code is fixed at that commit. Safe from upstream changes.
  • Pinned to a branch (e.g., main) -> upstream pushes automatically affect next compilation. FINDING: unpinned dependency.
  • No rev field -> defaults to latest on default branch. Highest risk.

Published on-chain dependencies (referenced via published-at):

  • Immutable package (UpgradeCap destroyed) -> behavior cannot change. Safe.
  • Package with active UpgradeCap + compatible policy -> behavior CAN change.
  • Your package pins to a specific version at compile time. If dependency publishes V2, you still use V1.
  • Risk: When YOU upgrade (recompile), you may pull in dependency's latest version unknowingly.

Known upgrade history: Has the dependency been upgraded before? How many versions exist? Frequent upgrades indicate active development but also active change risk.

Checklist:

  • Every third-party dependency is pinned to a specific git revision (not a branch)
  • Published dependencies are either immutable or their upgrade policy is documented
  • No dependency uses a latest or main branch reference

Step 3: Transitive Dependency Risk

Map the full dependency tree:

Dependency ADepends OnDep B Audited?Dep B Upgrade RiskVersion Conflict?
{dep_A}{dep_B, dep_C}YES/NO{describe}YES/NO

Transitive dependency risks:

  • A -> B -> C: If C has vulnerability, A is affected even though A does not directly import C
  • Version conflicts: If A depends on C v1 and B depends on C v2, Move compilation may fail. Sui resolves diamond dependencies by requiring all paths to agree on the same version.
  • Transitive upgrade: If B upgrades and changes its dependency on C, your next recompile may pull different C code.

If Dep B upgrades, does it affect us through Dep A?

  • Only if we recompile our package (Sui does not dynamically resolve dependencies)
  • But: if Dep B is an on-chain published package that Dep A calls via CPI-equivalent, behavior changes immediately after Dep B upgrades

Step 4: Math Library Audit (CRITICAL -- Cetus Precedent)

Historical context: A major DeFi exploit targeted a bug in a custom bit shift helper function in a math library. This step is MANDATORY for any custom math/arithmetic library in the dependency tree.

For any custom math/arithmetic library dependency:

4a. Bit Shift Operation Audit (MR2)

Trace ALL bit shift operations (<<, >>) in the math library:

#FunctionShift OperationShift Amount SourceBounds Checked?Overflow Possible?
1{func}value << amount{parameter / constant / computed}YES/NOYES/NO

Move bit shift rules:

  • << and >> do NOT abort if shift amount >= bit width -- they produce 0
  • Custom bit shift helpers MUST validate shift amount < bit width
  • If shift amount comes from user input or computation, it must be bounds-checked

Specific checks:

  • Are ALL shift amounts validated to be < bit width of the operand type?
  • Do custom bit shift helpers correctly handle edge cases (shift amount >= bit width, zero inputs, overflow)?
  • Can intermediate computation produce a shift amount >= bit width?
  • Are there any bit manipulation patterns that assume shift produces a specific non-zero result?
4b. Overflow/Underflow Audit
#FunctionOperationInput RangeOverflow Possible?Handling
1{func}a * b{describe}YES if a,b > sqrt(MAX_U128)abort (safe) / wrapping (DANGEROUS)

Move arithmetic safety:

  • Default +, -, * abort on overflow/underflow -- safe
  • But: custom math libraries may use bitwise operations to implement unchecked arithmetic for gas optimization
  • as casts between integer types abort on overflow (e.g., (x as u64) where x > MAX_U64)
  • Fixed-point: (a * b) / SCALE -- intermediate a * b may overflow u128 even if final result fits in u64
4c. Rounding and Precision
#FunctionRounding DirectionConsistent?Impact if Wrong Direction
1{mul_div}{up / down / nearest / truncation}YES/NO{describe: e.g., attacker extracts extra dust per operation}

Check: For every division operation in the math library:

  • Is rounding direction documented?
  • Is rounding direction consistent with how the protocol uses the result?
  • Can rounding errors accumulate across many operations?

Show full SKILL.md (575 more words)Show less

Step 5: Shared Object Dependencies

If the protocol uses shared objects from external packages:

External Shared ObjectPackageOur Functions That Access ItWhat We Read/WriteBehavior Change If Package Upgrades?
{oracle_obj}{oracle_pkg}{our_module::read_price}READ price fieldYES -- oracle upgrade could change price format
{dex_pool}{dex_pkg}{our_module::swap}WRITE (swap)YES -- DEX upgrade could change swap logic

Are we validating shared object state after external calls?

  • After reading price from external oracle shared object: do we validate freshness? bounds? format?
  • After calling external DEX swap: do we validate received amount? slippage?
  • If external package upgrades and changes shared object behavior, our code reads different data without any change on our side.

Key risk: External package with compatible upgrade policy can change function implementations. Our calls to those functions produce different results after upgrade, with no code change or compilation on our side.


Step 6: Interface Compatibility

Could new abort conditions be added in dependency upgrades?

Dependency FunctionCurrent Abort ConditionsPossible New Abort ConditionsImpact on Our Protocol
{dep::func}{list current aborts}{what upgrades could add}{describe: e.g., our transaction aborts unexpectedly}

Check:

  • If a dependency function currently never aborts but an upgrade adds an abort condition -> our protocol's transactions may start failing
  • If a dependency function changes its return value semantics (e.g., rounding direction changes) -> our calculations become incorrect
  • If a dependency adds new type constraints -> our generic calls may no longer compile on next recompile

Key Questions (Must Answer All)

  1. Pinning: Are all third-party dependencies pinned to specific git revisions?
  2. Critical functions: For each math/utility function from a dependency, does it handle edge cases correctly?
  3. Bit shifts: Are ALL bit shift operations in math libraries bounds-checked? (Cetus precedent)
  4. Upgrade risk: Can any dependency change behavior without the protocol team's knowledge?
  5. Shared objects: If we use shared objects from external packages, can their behavior change via upgrade?
  6. Transitive: Are there transitive dependencies, and are they audited?

Common False Positives

  1. Framework dependencies: sui::* and std::* are validator-controlled and well-audited. Findings about framework functions are rarely valid unless version-specific.
  2. Pinned and immutable: Dependency pinned to specific rev AND on-chain package is immutable -> no upgrade risk.
  3. Unused imports: Dependency imported but no functions actually called -> no runtime risk.
  4. Well-known libraries: Widely-used and audited libraries with specific rev pinning -> lower risk, but STILL check edge cases for specific functions used.

Output Schema

markdown
## Finding [DEP-N]: Title

**Verdict**: CONFIRMED / PARTIAL / REFUTED / CONTESTED
**Step Execution**: check1,2,3,4,5,6 | skip(reason) | uncertain
**Rules Applied**: [R1:___, R4:___, R8:___, R10:___]
**Severity**: Critical/High/Medium/Low/Info
**Location**: Move.toml or sources/{module}.move:LineN (where dep function is called)

**Dependency**: {dependency_name}
**Function**: {specific function if applicable}
**Issue Type**: UNPINNED_VERSION / ARITHMETIC_UNSAFE / BIT_SHIFT_UNSAFE / EDGE_CASE_UNHANDLED / SPEC_MISMATCH / TRANSITIVE_RISK / UPGRADE_RISK / SHARED_OBJECT_DEP

**Description**: What is wrong
**Impact**: What can happen (incorrect calculation, overflow, unexpected abort, supply manipulation)
**Evidence**: Code showing the issue
**Recommendation**: How to fix (pin version, add validation, use alternative, wrap with checks)

Step Execution Checklist (MANDATORY)

StepRequiredCompleted?Notes
1. Dependency InventoryYESAll deps from Move.toml enumerated
2. Package Immutability CheckYESPinning and on-chain policy for each dep
3. Transitive Dependency RiskYESFull dependency tree mapped
4. Math Library AuditIF math/arithmetic deps existHIGH PRIORITY -- Cetus precedent
4a. Bit Shift Operation AuditIF bit shifts in math depsEvery shift bounds-checked
4b. Overflow/Underflow AuditIF math depsChecked vs unchecked arithmetic
4c. Rounding and PrecisionIF division in math depsDirection documented and consistent
5. Shared Object DependenciesIF external shared objects usedBehavior change on upgrade
6. Interface CompatibilityIF upgradeable depsNew abort conditions, return value changes
Cross-Reference Markers

After Step 2: If any dependency unpinned -> immediate Informational/Low finding.

After Step 4: If math library has unchecked bit shifts -> cross-reference with BIT_SHIFT_SAFETY skill for protocol-level impact analysis.

After Step 5: If shared object dependencies from upgradeable packages -> cross-reference with PACKAGE_VERSION_SAFETY Step 3 and EXTERNAL_PRECONDITION_AUDIT Step 3b.

If any step skipped, document valid reason (N/A, no third-party deps, framework-only, no math functions used).

© 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

Just SKILL.md in agents/skills/sui/dependency-audit of PlamenTSV/plamen.

Open the folder on GitHubat commit 795962b

Compare with similar skills

Dependency Audit 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.

Dependency Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dependency Audit this skillPlamenTSV/plamen303—~3.3kAutomated safety check: PassMIT
Third Party Cookiesthedaviddias/Front-End-Checklist74k—~580Automated safety check: PassMIT
Third Party Scriptsthedaviddias/Front-End-Checklist74k—~417Automated safety check: PassMIT
Golang Patternsaffaan-m/ECC275k—~1.1kAutomated safety check: PassMIT
Managing Third Party Vendor Riskmukul975/Anthropic-Cybersecurity-Skills34k—~2.2kAutomated safety check: PassApache-2.0
Audit Third Party Contractsben-manes/caffeine18k—~943Automated safety check: PassApache-2.0

Similar skills

  • Third Party Cookies

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing a website for privacy compliance, third-party resource loading, or cookie consent implementation.

    74k GitHub stars~580 tokensUpdated 2 days ago
    Legal & ComplianceAuto-check passed
  • Third Party Scripts

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing slow page loads, heavy assets, or rendering delays related to Optimize third-party script loading.

    74k GitHub stars~417 tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • 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.

    275k GitHub stars~1.1k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Managing Third Party Vendor Risk

    mukul975/Anthropic-Cybersecurity-Skills

    Build and run a third-party/vendor risk management (TPRM) program aligned to NIST SP 800-161 C-SCRM: inventory and tier vendors, issue SIG/CAIQ questionnaires, review SOC 2/ISO 27001 evidence, set…

    34k GitHub stars~2.2k tokensUpdated 1 mo ago
    Legal & ComplianceAuto-check passed
  • Audit Third Party Contracts

    ben-manes/caffeine

    Verify every third-party and sharp-edged JDK API usage against the contract the upstream documentation actually states

    18k GitHub stars~943 tokensUpdated 2 days ago
    Auto-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.

    275k GitHub starsUsed in 1 repo~2.3k tokens
    DevelopmentAuto-check passed

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 12 days ago
    Auto-check passed
  • Verification Protocol

    PlamenTSV/plamen

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

    303 GitHub stars~3.5k tokensUpdated 12 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 12 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 12 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 12 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 12 days ago
    Auto-check passed

Questions about Dependency Audit

What does Dependency Audit do?

Trigger Pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents, depth-external. Dependency Audit is an agent skill from PlamenTSV/plamen.

When should I use Dependency Audit?

Dependency Audit fits situations like: pattern EXTERNALLIB flag (third-party Move dependencies detected in Move.toml beyond Sui framework) - Inject Into Breadth agents.

How do I install Dependency Audit in Claude Code?

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

How do I install Dependency Audit in Codex?

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

Can I use Dependency Audit 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 dependency-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dependency-audit, .gemini/skills/dependency-audit, .github/skills/dependency-audit and .opencode/skills/dependency-audit in your project.

What does Dependency Audit need to run?

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

Does Dependency Audit 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 Dependency Audit 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 Dependency Audit use?

Dependency Audit 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 Dependency Audit use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dependency Audit?

Skills that share tags, products or a category with Dependency Audit: Third Party Cookies (thedaviddias/Front-End-Checklist, 74k stars), Third Party Scripts (thedaviddias/Front-End-Checklist, 74k stars), Golang Patterns (affaan-m/ECC, 275k stars) and Managing Third Party Vendor Risk (mukul975/Anthropic-Cybersecurity-Skills, 34k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dependency Audit?

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.