Skip to content
Development
Skill

/ottersec-prep

Prep a Sui Move package for an OtterSec security audit. Use when the user mentions OtterSec or wants audit prep.

From plugin
suiperpower
1360 skills1 MCP

Claude Code

$ npx -y skills add pivyme/suiperpower --skill ottersec-prep --agent claude-code

SKILL.md

ottersec-prep.SKILL.md
name: ottersec-prep
description: Prep a Sui Move package for an OtterSec security audit. Use when the user mentions OtterSec or wants audit prep.

Preamble (run first)

# Suiperpower telemetry. Routes through the CLI so projects.json + Convex stay in sync.
# Silent on failure so the skill never blocks. Opt out: SUIPERPOWER_TELEMETRY=off.
#
# AGENT NOTE: when this skill finishes, run the matching completion command:
#   suiperpower track ottersec-prep build completed
# Or use "failed" / "aborted" if it ended that way.
command -v suiperpower >/dev/null 2>&1 && suiperpower track ottersec-prep build started >/dev/null 2>&1 &
true

If `TEL_PROMPTED` is `no`, before doing real work, ask the user:

> Help suiperpower get better. We track which skills get used and how long they take. No code, no file paths, no PII. Change anytime in `~/.suiperpower/config.json`. > > A) Sure, anonymous > B) No thanks

Write the answer to `~/.suiperpower/config.json` `telemetryTier` field and create `~/.suiperpower/.telemetry-prompted`. Then continue.

What this skill does

Walks the OtterSec pre-audit checklist on the user's Move package, surfaces the gaps, and produces the engagement package the auditor expects (threat model, architecture diagram outline, test report, known-issues doc). The goal is for audit time to be spent on real findings, not on hygiene noise.

When to use it

  • About to engage OtterSec or another Sui Move auditor.
  • Wanting to self-assess audit readiness.
  • Preparing the audit-prep portion of a Sui Overflow submission targeting the OtterSec track.

When NOT to use it

  • Pre-MVP code where auditing is premature; use `review-move` for an in-house P0-P3 walk first.
  • If the project does not have any Move code yet, use `build-with-move` first.
  • For non-Move security questions (frontend XSS, key custody for sponsor wallets), use the relevant build skill.

If you activated this and the user actually wants something else, consult `skills/SKILL_ROUTER.md` and hand off.

Inputs

  • A Sui project with at least one Move package under `move/` or similar.
  • Optional: `.suiperpower/build-context.md` and any prior `review-move` output.

If unclear, interview the user for:

  • Which packages are in scope for the audit?
  • Target deploy: which network, what value at risk?
  • Are there parts the user explicitly does not want audited (test scaffolding, prototypes)?
  • What is the timeline for the audit and the deploy?

Outputs

  • A filled-in pre-audit checklist (every P0 item answered, P1-P3 documented).
  • A `THREAT_MODEL.md` in the project: who is trusted, what are the assets, what are the known risks.
  • An architecture summary (which modules talk to which, where capabilities flow).
  • A test-coverage report from `sui move test`.
  • A `KNOWN_ISSUES.md` listing decisions to ship despite known concerns.
  • Append to `.suiperpower/build-context.md`:
  ## ottersec-prep session, <timestamp>
  - packages in scope: <list>
  - checklist completion: <P0 percent>, <P1 percent>
  - threat model doc: <path>
  - test count: <n>, coverage: <percent>
  - open issues: <list>

The skill never deletes files outside the integration source path without explicit user confirmation.

Workflow

1. **Context gathering**

  • Read `.suiperpower/build-context.md` if present.
  • Confirm the package(s) in scope and the deploy target.

2. **P0 walk**

  • Step through every P0 item from `skills/data/guides/security-checklist.md`.
  • For each, mark pass / fail / not-applicable with a one-line note.
  • For fails, propose a fix and let the user decide whether to fix now or document as known.

3. **Capability inventory**

  • List every `*Cap` struct in the package(s).
  • For each, document: who creates it, who holds it, who can pass it to whom, whether it leaks via Display or public read.

4. **Visibility audit**

  • Confirm `public(package)` is the default; `public` is reserved for true cross-package APIs.
  • Flag any leftover `friend` declarations; recommend migration.
  • Confirm `#[test_only]` on test helpers.

5. **Init function audit**

  • Confirm one-time witness pattern intact.
  • Confirm init does not leak capabilities outside its intended distribution.
  • Confirm reinitialization is impossible (no shared init paths that can be re-entered).

6. **Test coverage**

  • Run `sui move test`, capture output.
  • Confirm every public entry function has at least one positive and one expected-failure test (where applicable).

7. **Build cleanliness**

  • Run `sui move build`. Confirm zero warnings.
  • Strip `assert!(false)`, commented-out checks, and `std::debug::print` from production paths.
  • Confirm error codes are named constants, not magic numbers.

8. **Dependency pin**

  • Confirm `Move.toml` uses pinned revs / tags. Reject `main` or floating versions in production deps.

9. **Threat model + known issues**

  • Help the user write `THREAT_MODEL.md` and `KNOWN_ISSUES.md` if absent.
  • Surface assumptions the auditor needs to know.

10. **Engagement package**

  • Compose the audit submission: repo URL, scope, threat model, architecture, test report, checklist, known issues.
  • Surface the OtterSec contact path (`https://osec.io/`).

11. **Writeback**

  • Append session details to `.suiperpower/build-context.md`.

Quality gate (anti-slop)

Before reporting done, the skill asks itself the following and refuses to declare success if any answer is no:

  • Is every P0 item from the security checklist explicitly marked pass / fail / N/A with a note?
  • Has every public entry function been mapped to at least one happy-path test and one expected-failure test where applicable?
  • Is `THREAT_MODEL.md` non-trivial (assets, trust assumptions, known risks named)?
  • Is the capability inventory complete (every `*Cap` listed with holder strategy)?
  • Is `Move.toml` pinned, no `main` in production deps?
  • Is the engagement package something the user could send to O
Read more
@pivyme
Ships withsuiperpower

Build something meaningful, on Sui. A superpower for AI coding agents to ship real products on Sui. Your AI coding agent has never written Move before. Suiperpower fixes that.

1360 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
13
Star history of pivyme/suiperpower on GitHub, a chart by star-history.com

Other skills on suiperpower.

brand-design

brand-design

Pick a brand name, color palette, or typography for a Sui product. Use when the user wants to name or brand a Sui project.

@pivyme@pivymeInstall Skill
build-ai-agent

build-ai-agent

Build an AI agent that signs Sui transactions or runs onchain actions. Use when the user wants an AI agent on Sui.

@pivyme@pivymeInstall Skill
build-data-pipeline

build-data-pipeline

Build a Sui data indexer or analytics pipeline. Use when the user wants to index Sui events, build a pipeline, or query Sui RPC…

@pivyme@pivymeInstall Skill
build-mobile-sui

build-mobile-sui

Build a mobile Sui app with React Native or the Sui Mobile SDK. Use when the user wants iOS, Android, or mobile Sui flows.

@pivyme@pivymeInstall Skill
build-with-claude

build-with-claude

Pair with a coding agent to build a Sui MVP step by step. Use when the user wants to build the MVP iteratively with an agent.

@pivyme@pivymeInstall Skill
build-with-move

build-with-move

Author Sui Move modules and packages with a senior Move dev as your pair. Use when the user wants to write, build, author, add,…

@pivyme@pivymeInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about ottersec-prep.

Which coding agents can use ottersec-prep?
ottersec-prep installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.