Deepsec Documentation Guide
vercel-labs/deepsec
Points the agent at deepsec's own docs to answer questions about initializing, configuring, resuming, scanning with and extending the vulnerability scanner.
Trigger FASTANDARD flag detected (protocol uses FungibleAsset standard) - Used by Breadth agents, depth-token-flow
$ npx skills add PlamenTSV/plamen --skill fungible-asset-security -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install PlamenTSV/plamen fungible-asset-security --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/skills/aptos/fungible-asset-security .claude/skills/fungible-asset-security && rm -rf skills-srcUse ~/.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/
Install the "fungible-asset-security" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-security into .claude/skills/fungible-asset-security/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fungible-asset-security", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-securityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add PlamenTSV/plamen --skill fungible-asset-security -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install PlamenTSV/plamen fungible-asset-security --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agents/skills/aptos/fungible-asset-security .agents/skills/fungible-asset-security && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fungible-asset-security" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-security into .agents/skills/fungible-asset-security/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fungible-asset-security", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add PlamenTSV/plamen --skill fungible-asset-security -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install PlamenTSV/plamen fungible-asset-security --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agents/skills/aptos/fungible-asset-security .cursor/skills/fungible-asset-security && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fungible-asset-security" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-security into .cursor/skills/fungible-asset-security/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fungible-asset-security", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/PlamenTSV/plamen.git --path agents/skills/aptos/fungible-asset-security--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add PlamenTSV/plamen --skill fungible-asset-security -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install PlamenTSV/plamen fungible-asset-security --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agents/skills/aptos/fungible-asset-security .gemini/skills/fungible-asset-security && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fungible-asset-security" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-security into .gemini/skills/fungible-asset-security/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fungible-asset-security", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install PlamenTSV/plamen fungible-asset-securityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add PlamenTSV/plamen --skill fungible-asset-security -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .github/skills && cp -r skills-src/agents/skills/aptos/fungible-asset-security .github/skills/fungible-asset-security && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fungible-asset-security" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-security into .github/skills/fungible-asset-security/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fungible-asset-security", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add PlamenTSV/plamen --skill fungible-asset-security -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install PlamenTSV/plamen fungible-asset-security --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlamenTSV/plamen.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agents/skills/aptos/fungible-asset-security .opencode/skills/fungible-asset-security && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fungible-asset-security" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/aptos/fungible-asset-security into .opencode/skills/fungible-asset-security/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fungible-asset-security", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fungible-asset-securityTrigger FASTANDARD flag detected (protocol uses FungibleAsset standard) - Used by Breadth agents, depth-token-flow
Fungible Asset Security is an agent skill from PlamenTSV/plamen. Trigger FASTANDARD flag detected (protocol uses FungibleAsset standard) - Used by Breadth agents, depth-token-flow
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.
It sits in Security. The repository describes itself as: Autonomous Web3 security audit agent for Claude Code. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 795962b. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are move and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fungible Asset Security loads about 3.3k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 1,322 words of instructions outside code blocks.
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.
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.
The full file from PlamenTSV/plamen at commit 795962b, republished under its MIT licence (© PlamenTSV). 1,322 words, ~3,310 tokens.
.claude/skills/fungible-asset-security/SKILL.md (or your agent's skills folder).Trigger: FA_STANDARD flag detected (protocol uses FungibleAsset standard) Used by: Breadth agents, depth-token-flow Covers: FungibleAsset metadata validation, zero-value exploitation, store ownership, dispatchable hooks, Ref safety, Coin-to-FA migration
Audit FungibleAsset standard usage for Aptos-specific vulnerabilities. The FA standard introduces object-based token management with capabilities (MintRef, BurnRef, TransferRef, FreezeRef) and optional dispatchable hooks. Incorrect usage creates counterfeit token acceptance, forced transfers, reentrancy, and accounting mismatches.
For EVERY function that accepts a FungibleAsset parameter or reads from a FungibleStore:
| # | Function | Accepts FA/Reads Store | Validates Metadata? | Expected Metadata | Bypass Possible? |
|---|---|---|---|---|---|
| 1 | {func} | FungibleAsset param | YES/NO | {expected_metadata_obj} | YES/NO |
How metadata validation works:
// CORRECT: validates the asset is the expected type
let metadata = fungible_asset::metadata(&fa);
assert!(metadata == expected_metadata, ERROR_WRONG_ASSET);
// VULNERABLE: no validation - accepts ANY FungibleAsset
public fun deposit(fa: FungibleAsset) {
// Attacker can pass a worthless FA created from their own metadata
fungible_asset::deposit(store, fa);
}MANDATORY SEARCH: Grep all .move files for:
FungibleAsset in function signatures (parameters)fungible_asset::metadata(&fa) is called and comparedfungible_asset::amount(&fa) without metadata check -> FLAGSeverity: Accepting unvalidated FungibleAsset = accepting counterfeit tokens. If the function credits the user or modifies protocol state based on the FA amount -> HIGH/CRITICAL.
Analyze zero-value FungibleAsset paths:
| # | Zero-Value Source | Code Path Triggered | State Modified? | Cleanup Correct? |
|---|---|---|---|---|
| 1 | fungible_asset::zero(metadata) | {trace what happens} | YES/NO | YES/NO |
| 2 | Withdrawal of 0 amount | {trace} | YES/NO | YES/NO |
Check for each:
fungible_asset::zero(metadata) be used to trigger code paths that modify state? (e.g., register a user, set a flag, emit an event)fungible_asset::destroy_zero(fa) clean up properly, or does it leave dangling state?amount == 0 get explicitly checked and rejected at entry points?Pattern: Zero-value operations often bypass amount > 0 checks that were assumed but never written, allowing state modifications without economic cost.
Audit FungibleStore creation, ownership chains, and access control:
| Store Type | Created By | Creation Permissionless? | Owner | Can Attacker Create? |
|---|---|---|---|---|
| Primary store | primary_fungible_store::ensure_primary_store_exists() | YES - anyone can create for any address | Address owner | YES (for any address) |
| Custom store | fungible_asset::create_store() on ConstructorRef | Only during object construction | Object owner | Depends on who can construct |
CRITICAL: primary_fungible_store::ensure_primary_store_exists(addr, metadata) is permissionless. An attacker can create a primary store for ANY address for ANY metadata. If the protocol assumes a store's existence means the user has interacted with the protocol -> FINDING.
| Object A | Owns Object B | B Has FungibleStore | A Can Withdraw from B? |
|---|---|---|---|
| {object} | {child_object} | YES/NO | YES - via object ownership chain |
Check: If Object A owns Object B which owns a FungibleStore, the owner of Object A can withdraw from B's store through the ownership chain. Trace all object ownership hierarchies for unintended fund access paths.
| Function | Expects Store At | Actually Reads From | Match? |
|---|---|---|---|
| {func} | Protocol-controlled store | User-supplied address | VERIFY |
Pattern: Protocol calculates expected store address but user can supply a different store address. If the function doesn't verify the store belongs to the expected object/address -> FINDING.
If the protocol uses dispatchable FungibleAsset (custom withdraw, deposit, or derived_balance hooks):
| Hook Type | Registered? | Implementation Module | Can Reenter? | Can Revert? | Can Manipulate? |
|---|---|---|---|---|---|
| withdraw | YES/NO | {module::func} | ANALYZE | ANALYZE | ANALYZE |
| deposit | YES/NO | {module::func} | ANALYZE | ANALYZE | ANALYZE |
| derived_balance | YES/NO | {module::func} | ANALYZE | N/A | ANALYZE |
For each registered hook:
#[module_lock] applied to the registering module? (prevents indirect reentrancy but NOT direct)Reentrancy sequence:
Module::transfer() {
1. Read balance (CHECK)
2. Deduct from source store → triggers withdraw hook (INTERACTION before EFFECT completion)
3. Withdraw hook reenters Module::another_function()
4. another_function() sees partially-updated state
// ...
}Can a deposit hook unconditionally revert to prevent deposits into a specific store?
If derived_balance hook is registered:
fungible_asset::balance(store) expecting the real balance?balance() calls derived_balance hook if registered - the returned value may differ from actual stored amountAudit the lifecycle and access control of FungibleAsset capability references:
| Ref Type | Stored Where | Who Has Access | Can Be Extracted? | Impact If Leaked |
|---|---|---|---|---|
| MintRef | {object/resource} | {module/address} | YES/NO | Infinite token minting |
| BurnRef | {object/resource} | {module/address} | YES/NO | Destroy any user's tokens |
| TransferRef | {object/resource} | {module/address} | YES/NO | Bypass freeze, forced transfers |
| FreezeRef | {object/resource} | {module/address} | YES/NO | Freeze any user's store |
MANDATORY CHECK for each Ref:
key only? (safe - not extractable)store ability? (dangerous - can be moved out)TransferRef allows transfers that bypass freeze status:
fungible_asset::transfer_with_ref(ref, from_store, to_store, amount))| Ref Type | Can Be Destroyed? | Destruction Function | Consequences of Destruction |
|---|---|---|---|
| MintRef | NO (no destroy function) | N/A | Permanent minting capability |
| BurnRef | YES (burn_ref::destroy) | {if exists} | Cannot burn tokens anymore |
| TransferRef | {check} | {if exists} | Cannot force-transfer anymore |
If the protocol handles both Coin<T> and FungibleAsset:
| # | Check | Status | Impact |
|---|---|---|---|
| 1 | Are Coin and FA treated equivalently in balance accounting? | YES/NO | {if NO: describe discrepancy} |
| 2 | Does total_supply track both representations? | YES/NO | {if NO: supply tracking broken} |
| 3 | Can user deposit as Coin, then withdraw as FA (or vice versa), exploiting accounting difference? | YES/NO | {describe path} |
| 4 | Are there functions that only accept Coin but credit FA internally (or vice versa)? | YES/NO | {conversion correct?} |
| 5 | If protocol converts Coin<T> to FA: does coin::coin_to_fungible_asset() preserve exact amount? | VERIFY | {check for fees or rounding} |
Pattern: When a protocol accepts both Coin<T> and FungibleAsset for the same underlying token, internal accounting that tracks only one representation can be exploited by depositing in one form and withdrawing in the other.
primary_fungible_store_address(owner, metadata)) - "unexpected address" may be intentionaldeposit) may already reject zero amounts internally - verify## Finding [FA-N]: Title
**Verdict**: CONFIRMED / PARTIAL / REFUTED / CONTESTED
**Step Execution**: ✓1,2,3,4,5,6 | ✗N(reason) | ?N(uncertain)
**Rules Applied**: [R1:✓/✗, R4:✓/✗, R10:✓/✗, R11:✓/✗]
**Severity**: Critical/High/Medium/Low/Info
**Location**: module_name.move:LineN
**FA Component**: {metadata/store/hook/ref/accounting}
**Attack Vector**: {counterfeit deposit / reentrancy via hook / forced transfer via TransferRef / ...}
**Description**: What's wrong
**Impact**: What can happen (fund theft, accounting mismatch, DoS)
**Evidence**: Code snippets showing the vulnerability
**Recommendation**: How to fix
### Precondition Analysis (if PARTIAL/REFUTED)
**Missing Precondition**: [What blocks exploitation]
**Precondition Type**: STATE / ACCESS / TIMING / EXTERNAL / BALANCE
### Postcondition Analysis (if CONFIRMED/PARTIAL)
**Postconditions Created**: [What conditions this creates]
**Postcondition Types**: [List applicable types]
**Who Benefits**: [Who can use these]| Step | Required | Completed? | Notes |
|---|---|---|---|
| 1. Metadata Validation Audit | YES | ✓/✗/? | Every FA-accepting function checked |
| 2. Zero-Value Exploitation | YES | ✓/✗/? | |
| 3. Store Creation and Ownership | YES | ✓/✗/? | Primary store permissionless creation checked |
| 3b. Transitive Ownership | YES | ✓/✗/? | Object ownership chains traced |
| 4. Dispatchable Hook Analysis | IF dispatchable FA used | ✓/✗(N/A)/? | |
| 4b. Reentrancy via Hooks | IF hooks registered | ✓/✗(N/A)/? | |
| 4c. Deposit Hook Blocking | IF deposit hook registered | ✓/✗(N/A)/? | |
| 4d. Derived Balance Manipulation | IF derived_balance hook | ✓/✗(N/A)/? | |
| 5. Ref Safety Analysis | YES | ✓/✗/? | All 4 Ref types located and access traced |
| 5b. TransferRef Bypass | IF TransferRef exists | ✓/✗(N/A)/? | |
| 6. Coin-to-FA Migration Accounting | IF both Coin and FA supported | ✓/✗(N/A)/? |
If any step skipped, document valid reason (N/A, no dispatchable hooks, no Coin support, no TransferRef).
© PlamenTSV, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in agents/skills/aptos/fungible-asset-security of PlamenTSV/plamen.
Open the folder on GitHubat commit 795962b
Fungible Asset Security 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fungible Asset Security this skillPlamenTSV/plamen | 303 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Deepsec Documentation Guidevercel-labs/deepsec | 8.1k | — | ~956 | Automated safety check: Pass | Apache-2.0 | |
| Skill Scannergetsentry/skills | 1k | 4 repos | ~2.5k | Automated safety check: Warn | Apache-2.0 | |
| Serenity Aleabitoreddityan-labs/serenity-aleabitoreddit | 481 | 1 repos | ~3.3k | Automated safety check: Pass | None | |
| Security Alert Triageelastic/agent-skills | 592 | 1 repos | ~3.5k | Automated safety check: Notes | Apache-2.0 | |
| Shiro Attack CLISummerSec/ShiroAttack2 | 2.6k | — | ~945 | Automated safety check: Pass | MIT |
vercel-labs/deepsec
Points the agent at deepsec's own docs to answer questions about initializing, configuring, resuming, scanning with and extending the vulnerability scanner.
getsentry/skills
Scan agent skills for security issues. An agent skill from getsentry/skills.
yan-labs/serenity-aleabitoreddit
Apply trader Serenity's (@aleabitoreddit) AI/semiconductor supply-chain analytical lens to US-stock ideas and market judgment.
elastic/agent-skills
Triage Elastic Security alerts — gather context, classify threats, create cases, and acknowledge.
SummerSec/ShiroAttack2
当用户要求利用、检测或测试 Apache Shiro rememberMe 反序列化漏洞 (Shiro-550, CVE-2016-4437) 时使用。触发词包括 "Shiro"、"rememberMe"、"shiro attack"、"CVE-2016-4437"、"Shiro-550"、"爆破 Shiro key"、"利用 Shiro"、"Shiro…
rundeck/rundeck
Verify if a CVE affects the project and remediate it. An agent skill from rundeck/rundeck.
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…
PlamenTSV/plamen
Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)
PlamenTSV/plamen
Trigger Pattern Always (Aptos Move) - foundational security check - Inject Into Breadth agents, depth agents
PlamenTSV/plamen
Trigger Pattern Always (Sui Move) -- foundational security check - Inject Into Breadth agents, depth agents
PlamenTSV/plamen
Trigger Pattern ACCOUNTCLOSING flag detected (close/CloseAccount usage) - Inject Into Breadth agents, depth agents
PlamenTSV/plamen
Trigger Pattern Always required for Solana audits - Inject Into Breadth agents, depth agents
Categories
Trigger FASTANDARD flag detected (protocol uses FungibleAsset standard) - Used by Breadth agents, depth-token-flow. Fungible Asset Security is an agent skill from PlamenTSV/plamen.
Fungible Asset Security fits situations like: FASTANDARD flag detected (protocol uses FungibleAsset standard) - Used by Breadth agents; depth-token-flow.
Run `npx skills add PlamenTSV/plamen --skill fungible-asset-security -a claude-code`. Or copy the skill folder (agents/skills/aptos/fungible-asset-security in PlamenTSV/plamen) into .claude/skills/fungible-asset-security in your project. Claude Code loads it when a task matches its description.
Run `npx skills add PlamenTSV/plamen --skill fungible-asset-security -a codex`. Or copy the skill folder (agents/skills/aptos/fungible-asset-security in PlamenTSV/plamen) into .agents/skills/fungible-asset-security in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PlamenTSV/plamen --skill fungible-asset-security -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fungible-asset-security, .gemini/skills/fungible-asset-security, .github/skills/fungible-asset-security and .opencode/skills/fungible-asset-security in your project.
SKILL.md names no scripts, command-line tools or credentials: Fungible Asset Security is instructions for the agent only.
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.
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.
Fungible Asset Security is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
Skills that share tags, products or a category with Fungible Asset Security: Deepsec Documentation Guide (vercel-labs/deepsec, 8.1k stars), Skill Scanner (getsentry/skills, 1k stars), Serenity Aleabitoreddit (yan-labs/serenity-aleabitoreddit, 481 stars) and Security Alert Triage (elastic/agent-skills, 592 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.