Agent skill

Migration Analysis

by PlamenTSV in PlamenTSV/plamen

Trigger Pattern Contract upgrades via updatecurrentcontractwasm, storage migration, deprecated functions, token migrations - Inject Into Breadth agents, depth-state-trace

MITAuto-check passedSecurity

Install Migration Analysis

skills CLI
$ npx skills add PlamenTSV/plamen --skill migration-analysis -a claude-code

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

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

At a glance

Trigger Pattern Contract upgrades via updatecurrentcontractwasm, storage migration, deprecated functions, token migrations - Inject Into Breadth agents, depth-state-trace

  • Works in 6 steps: Identify Upgrade and Migration Patterns → Storage Schema Compatibility → Trace Storage Access Paths Through Upgrade → …
  • Pattern Contract upgrades via updatecurrentcontractwasm
  • SKILL.md covers Step 1: Identify Upgrade and…, Step 2: Storage Schema…, Step 3: Trace Storage Access… and Step 4: Stranded Asset Analysis, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Migration Analysis is an agent skill from PlamenTSV/plamen. Trigger Pattern Contract upgrades via updatecurrentcontractwasm, storage migration, deprecated functions, token migrations - Inject Into Breadth agents, depth-state-trace

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

It sits in Security, covering Smart contract auditing. It works with WebAssembly and Stellar. The repository describes itself as: Autonomous Web3 security audit agent for Claude Code. The licence is MIT.

When your agent uses it

  • Pattern Contract upgrades via updatecurrentcontractwasm
  • Storage migration
  • Deprecated functions
  • Token migrations - Inject Into Breadth agents

Example prompts

  • “/migration-analysis”

Workflow steps

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

  1. Identify Upgrade and Migration Patterns
  2. Storage Schema Compatibility
  3. Trace Storage Access Paths Through Upgrade
  4. Stranded Asset Analysis
  5. Upgrade Authority Lifecycle
  6. Downstream Integration 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 rust and 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

Migration Analysis loads about 3.9k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 1,475 words of instructions outside code blocks.

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

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,475 words, ~3,851 tokens.

Download SKILL.mdSave it as .claude/skills/migration-analysis/SKILL.md (or your agent's skills folder).
name
migration-analysis
description
Trigger Pattern Contract upgrades via update_current_contract_wasm, storage migration, deprecated functions, token migrations - Inject Into Breadth agents, depth-state-trace

Skill: Migration Analysis (Soroban)

Trigger Pattern: Contract upgrades via update_current_contract_wasm, storage migration, deprecated functions, token migrations Inject Into: Breadth agents, depth-state-trace Finding prefix: [MG-N] Rules referenced: R4, R9, R10

update_current_contract_wasm|upgrade|migrate|deprecated|migrat|
legacy|v2|V2|old_token|new_token|storage_migration|DataKey::

Key Soroban difference from EVM: There is no proxy pattern (no delegatecall). There is no BPFLoaderUpgradeable (Solana model). Soroban contract upgrade uses env.deployer().update_current_contract_wasm(new_wasm_hash), which replaces the contract's WASM bytecode while preserving ALL storage in-place. The contract address and all storage entries survive the upgrade unchanged. This means:

  1. Storage migration (if needed) must be performed manually — there is no automatic migration callback.
  2. If the new WASM reads storage with a different key schema or different data type than what old WASM wrote, the reads will fail or silently return defaults.
  3. Instance data, Persistent data, and Temporary data all persist through an upgrade — their TTLs continue ticking independently.

Step 1: Identify Upgrade and Migration Patterns

Find all upgrade-related patterns:

  • update_current_contract_wasm calls (the actual WASM upgrade mechanism)
  • Storage migration functions (functions that read old-format data and write new-format data)
  • Deprecated functions still callable after upgrade
  • Old storage key definitions that may conflict with new ones
  • Token migrations (old Stellar classic asset → new SAC, or old custom token → new token)

For each transition:

Old EntityNew EntityUpgrade/Migration FunctionWho Can Call ItIs Migration Atomic with Upgrade?

Critical question for each upgrade entry point: Is the upgrade function properly access-controlled with require_auth(&admin_address)? An unprotected update_current_contract_wasm is a CRITICAL vulnerability allowing any caller to replace the contract with arbitrary WASM.


Step 2: Storage Schema Compatibility

For each upgrade that changes storage data structures:

  1. What data keys and types exist in the OLD WASM?
  2. What data keys and types exist in the NEW WASM?
  3. Are new fields ADDED to a new key (safe) or do they REPLACE existing keys with different types (breaking)?
  4. Does the new WASM attempt to deserialize old data with a new struct layout?
rust
// Example mismatch:
// V1 storage: DataKey::VaultState -> VaultStateV1 { owner: Address, balance: i128 }
// V2 storage: DataKey::VaultState -> VaultStateV2 { owner: Address, balance: i128, fee_rate: u32 }
// BREAKING: V2 reads VaultStateV2 from key DataKey::VaultState,
//           but the stored bytes are VaultStateV1 — deserialization fails (trap) OR
//           interprets the trailing bytes of balance as fee_rate (silent corruption).
Storage KeyV1 Data Type (fields)V2 Data Type (fields)Compatible?Migration Path

Soroban deserialization behavior on mismatch:

  • If new struct has MORE fields than stored data has bytes: Soroban SDK will likely panic (trap) at runtime when deserializing.
  • If new struct has FEWER fields: the extra stored bytes may be silently ignored (data loss).
  • If field TYPES change (e.g., i128 → u64): deserialization may silently reinterpret bytes.

Check for each storage key: does V2 WASM read the same key as V1 WASM wrote? If both use the same key but different types, this is a migration hazard.


Step 3: Trace Storage Access Paths Through Upgrade

For each contract function that accesses upgraded storage:

  1. Entry point: What storage key does the user-facing function read/write?
  2. Internal flow: What data type does the function deserialize from that key?
  3. External calls: What type do external contracts (invoke_contract) expect from this contract?
  4. TTL: What storage class (Instance / Persistent / Temporary) holds the data, and is the TTL extended during migration?
FunctionStorage Key ExpectedData Type ExpectedData Actually Stored (post-upgrade)Mismatch?
Step 3b: External Contract Side Effect Compatibility

When the upgrade changes the contract's behavior, check whether external callers handle the changes:

External CallerPre-Upgrade Expected ReturnPost-Upgrade Actual ReturnCaller Handles Both?Breaking?

Pattern: Contract upgrade changes function return values or events, but external contracts that call this contract via invoke_contract were written for the old interface. After upgrade, return values are misinterpreted by callers.

Step 3c: Pre-Upgrade Storage Inventory

Before analyzing stranded asset paths, inventory all storage entries the contract owns:

Storage KeyStorage ClassStored Value TypePost-Upgrade Logic Handles?Withdrawal Path Post-Upgrade?
{DataKey::Vault}PersistentVaultStateYES/NO{function name or NONE}
{DataKey::UserBalance(addr)}Persistenti128YES/NO{function name or NONE}
{DataKey::Config}InstanceConfigYES/NO{function name or NONE}
{DataKey::TempNonce}Temporaryu64N/A (expires)N/A

Pattern: Upgrade changes which storage keys the contract reads/writes, but old keys still hold value. If new logic cannot read or close old keys, assets associated with them are stranded.


Step 4: Stranded Asset Analysis

4a. Asset Inventory by Era
Asset/StorageV1 Write PathV2 Write PathV1 Withdraw PathV2 Withdraw Path
{DataKey::Vault(user)}deposit_v1()deposit_v2()withdraw_v1()withdraw_v2()
{DataKey::Stake(user)}stake()stake()unstake()unstake()

Rule: If V1 Write exists but V2 Withdraw does not handle V1 storage key/type -> potential stranding.

4b. Cross-Era Access Matrix
Storage EraState ConditionAvailable Withdraw/Close PathsWorks?Reason
V1 key formatV2 WASM deployedwithdraw_v2() reads DataKey::VaultV2Y/NV1 used DataKey::VaultV1 — different key
V1 key formatMigration function existsmigrate_user(user) reads DataKey::VaultV1Y/N{why}
V1 key formatMigration NOT calledwithdraw_v2()Y/NOld data at old key, inaccessible
In-flight during upgradePartial operation state???Y/N{why}

STRANDING RULE: If ALL withdraw/close paths fail for any storage state combination -> STRANDED ASSETS FINDING

4c. Recovery Function Inventory
FunctionWho Can CallWhat State Can RecoverLimitations
migrate_user(user)Any user / admin onlyV1 user balancesOne-time per user; must be called before TTL expires
emergency_withdraw()AdminProtocol-owned token balancesRequires active admin
update_and_migrate()AdminPerforms upgrade + migration atomicallyIs migration truly atomic?
4d. Worst-Case Scenarios (MANDATORY)

Scenario 1: V1 Storage + V2 WASM — No Migration Called

State: User has balance stored at DataKey::BalanceV1(user_address) in Persistent storage
Event: Contract upgraded to V2; V2 uses DataKey::BalanceV2(user_address)
Question: Can user withdraw via V2 withdraw() function?
Trace: [document storage key lookup and deserialization in V2 withdraw()]
Result: [SUCCESS / STRANDED + amount]

Scenario 2: In-Flight During Upgrade

State: User submitted a multi-step operation (e.g., unlock request) at ledger N
       Contract stores pending operation at DataKey::PendingOp(user_address)
Event: Contract upgraded at ledger N+1; V2 no longer reads DataKey::PendingOp
Question: Can user complete their operation at ledger N+2?
Trace: [document function path and storage access in V2]
Result: [SUCCESS / STRANDED + amount]

Scenario 3: Storage Key Renamed

State: V1 uses DataKey::Config for configuration struct ConfigV1
Event: V2 uses DataKey::Config for configuration struct ConfigV2 with additional fields
Question: Does V2 correctly read V1-written Config data?
Trace: [document deserialization: ConfigV2::from(stored_bytes) where stored_bytes is ConfigV1]
Result: [SUCCESS (if additive and defaults apply) / TRAP / SILENT_CORRUPTION]

Scenario 4: TTL Expiry During Migration Window

State: User's balance is in Persistent storage with a TTL set at V1 initialization
Event: Contract is upgraded; migration requires user to call migrate_user() within TTL window
Question: What happens if user does not call migrate_user() before TTL expires?
Trace: [document TTL of Persistent entries and whether upgrade extends TTLs]
Result: [DATA_WIPED_ON_EXPIRY / SAFE (TTL auto-extended by upgrade)]
4e. Step 4 Completion Checklist
  • 4a: ALL storage keys inventoried with write/withdraw paths per era
  • 4b: Cross-era access matrix completed for all state combinations
  • 4c: Recovery functions enumerated with limitations
  • 4d: All four worst-case scenarios modeled with traces
  • For EVERY stranding possibility: recovery path exists OR finding created

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

Step 4f: User-Blocks-Admin Scenarios

Admin/Migration FunctionPrecondition RequiredUser Action That Blocks ItTiming WindowSeverity
{admin_fn}{precondition}{user_action}{window}{assess}

Soroban-specific patterns:

  • User has a large balance in old-format storage -> migration function must iterate over user entries, which may exceed compute budget if too many entries exist
  • User calls a function that creates storage with the old key format after the upgrade announcement but before the actual upgrade (extends the "old format exists" window)
  • User purposely extends TTL of old-format storage entries to prevent their expiry and the associated cleanup path

Step 5: Upgrade Authority Lifecycle

CheckStatusEvidence
Upgrade authority identified?{address or NONE}{source location}
Is upgrade gated by require_auth?YES/NOIf NO: CRITICAL
Is authority a multisig (Stellar multisig or Soroban governance contract)?YES/NO
Is there a timelock on upgrade execution?YES/NODuration: {N ledgers}
Can upgrade authority be transferred to zero/revoked?YES/NOIf YES: is revocation safe post-migration?
Does the upgrade function also run migration logic?YES/NOAtomic upgrade+migrate is safer than separate steps
Can upgrade be performed with a WASM hash that produces a trap on first call?YES/NOBricking risk
Are Instance-class storage TTLs extended during upgrade?YES/NOContract instance TTL must not expire before users can act

Step 6: Downstream Integration Compatibility

Contract ChangeDownstream ConsumerExpected InterfacePost-Migration ActualBreaking?
{change}External callers via invoke_contract{expected function signature}{actual function signature}YES/NO
{change}Indexers / Horizon event processors{expected event structure}{actual event structure}YES/NO
{change}Frontend SDK{expected function and arg types}{actual}YES/NO

Pattern: Contract upgrade changes function signatures, argument types, or event structures, but downstream consumers built against the old interface continue to call the new WASM with old argument encoding — calls may trap (wrong arg count) or silently pass with misinterpreted arguments.

Soroban ABI note: Soroban functions are identified by their name (as a Symbol). There is no ABI checksum like EVM function selectors. An upgraded function with the same name but different argument types will accept the old call encoding, potentially silently misinterpreting arguments.


Key Questions (Must Answer All)

  1. Storage Compatibility: Are ALL existing storage entries readable by the new WASM version?
  2. Key Stability: Do ALL storage key definitions remain identical after upgrade?
  3. Migration Completeness: Can ALL V1 storage entries be migrated or withdrawn via V2 paths?
  4. Stranded Assets: Is there any combination of (old_storage_state + new_WASM) that traps user funds?
  5. Authority Security: Is the upgrade function properly access-controlled and is the authority appropriately secured?
  6. TTL Safety: Do storage entry TTLs survive the upgrade and migration window without expiry?

Common False Positives

  1. Additive storage schema: New fields added with new keys, old keys still readable by V2 — backward compatible
  2. Versioned deserialization: Contract explicitly handles both V1 and V2 data layouts via enum variants
  3. Admin-controlled migration: Stranded accounts recoverable via authority-gated migration function
  4. Atomic upgrade+migrate: If update_current_contract_wasm is called within the same function that writes migrated storage, the migration is effectively atomic

Finding Template

markdown
**ID**: [MG-N]
**Verdict**: CONFIRMED / PARTIAL / REFUTED / CONTESTED
**Step Execution**: (see checklist below)
**Rules Applied**: [R4:___, R9:___, R10:___]
**Severity**: Critical/High/Medium/Low/Info
**Location**: src/{file}.rs:LineN

**Storage Transition**:
- Old: {old_key / old_type / old_storage_class}
- New: {new_key / new_type / new_storage_class}
- Mismatch Point: {where key or type diverges}

**Description**: {what is wrong}
**Impact**: {stranded funds, corrupted state, bricked contract, broken callers}
**Evidence**: {code showing mismatch}

Step Execution Checklist (MANDATORY)

StepRequiredCompleted?Notes
1. Identify Upgrade and Migration PatternsYES
2. Storage Schema CompatibilityYES
3. Trace Storage Access PathsYES
3b. External Contract Side Effect CompatibilityYES
3c. Pre-Upgrade Storage InventoryYES
4. Stranded Asset Analysis (4a-4e)YES
4f. User-Blocks-Admin ScenariosYES
5. Upgrade Authority LifecycleYES
6. Downstream Integration CompatibilityYES

If any step skipped, document valid reason (N/A, no upgrade function, immutable contract, single version, no external callers).

© 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/soroban/migration-analysis of PlamenTSV/plamen.

Open the folder on GitHubat commit 795962b

Compare with similar skills

Migration Analysis 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.

Migration Analysis compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Migration Analysis this skillPlamenTSV/plamen303—~3.9kAutomated safety check: PassMIT
Smart Contract Upgrade Governancesickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT
Soroban Contract Auditsickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT
Soroban Liquidity Poolsickn33/agentic-awesome-skills47k1 repos~1.3kAutomated safety check: PassMIT
Soroban Storage Ttl Lifecyclesickn33/agentic-awesome-skills47k1 repos~1.3kAutomated safety check: PassMIT
Soroban Token Mintersickn33/agentic-awesome-skills47k1 repos~1.3kAutomated safety check: PassMIT

Similar skills

  • Smart Contract Upgrade Governance

    sickn33/agentic-awesome-skills

    Soroban WASM upgrade governance register: executable bytecode hash, timelocked migration delays, and multi-sig authorization quorum.

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Backend & APIsAuto-check passed
  • Soroban Contract Audit

    sickn33/agentic-awesome-skills

    Soroban smart contract security audit register: authorization checks, panic pathways, integer overflows, and storage footprint verification for Stellar.

    47k GitHub starsUsed in 1 repo~1.4k tokens
    SecurityAuto-check passed
  • Soroban Liquidity Pool

    sickn33/agentic-awesome-skills

    Automated market maker liquidity pool register: constant-product invariant curves, swap fee tiers, and LP token shares for Soroban DeFi.

    47k GitHub starsUsed in 1 repo~1.3k tokens
    SecurityAuto-check passed
  • Soroban Storage Ttl Lifecycle

    sickn33/agentic-awesome-skills

    Soroban ledger state rent and TTL extension register: live state tracking, bump thresholds, rent fee reserves, and archive boundaries.

    47k GitHub starsUsed in 1 repo~1.3k tokens
    SecurityAuto-check passed
  • Soroban Token Minter

    sickn33/agentic-awesome-skills

    Soroban SEP-41 token contract architecture register: admin control, supply caps, metadata standard, and transfer event emissions on Stellar.

    47k GitHub starsUsed in 1 repo~1.3k tokens
    SecurityAuto-check passed
  • Stellar Dev

    VelaPayments/vela-payments

    End-to-end Stellar development playbook. An agent skill from VelaPayments/vela-payments.

    131 GitHub stars~1.8k tokensUpdated yesterday
    Backend & APIsAuto-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 11 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 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

Categories

Questions about Migration Analysis

What does Migration Analysis do?

Trigger Pattern Contract upgrades via updatecurrentcontractwasm, storage migration, deprecated functions, token migrations - Inject Into Breadth agents, depth-state-trace. Migration Analysis is an agent skill from PlamenTSV/plamen.

When should I use Migration Analysis?

Migration Analysis fits situations like: pattern Contract upgrades via updatecurrentcontractwasm; storage migration; deprecated functions; token migrations - Inject Into Breadth agents.

How do I install Migration Analysis in Claude Code?

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

How do I install Migration Analysis in Codex?

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

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

What does Migration Analysis need to run?

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

Does Migration Analysis 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 Migration Analysis 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 Migration Analysis use?

Migration Analysis 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 Migration Analysis use?

About 3.9k tokens (SKILL.md is roughly 15k 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 Migration Analysis?

Skills that share tags, products or a category with Migration Analysis: Smart Contract Upgrade Governance (sickn33/agentic-awesome-skills, 47k stars), Soroban Contract Audit (sickn33/agentic-awesome-skills, 47k stars), Soroban Liquidity Pool (sickn33/agentic-awesome-skills, 47k stars) and Soroban Storage Ttl Lifecycle (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Migration Analysis?

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.