Compose Multiplatform Patterns
affaan-m/ECC
KMP项目中的Compose Multiplatform和Jetpack Compose模式——状态管理、导航、主题化、性能优化和平台特定UI。
Trigger Pattern PTB flag (always for Sui -- Programmable Transaction Blocks are the Sui transaction model) - Inject Into Breadth agents, depth-external, depth-state-trace
$ npx skills add PlamenTSV/plamen --skill ptb-composability -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install PlamenTSV/plamen ptb-composability --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/sui/ptb-composability .claude/skills/ptb-composability && 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 "ptb-composability" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/sui/ptb-composability into .claude/skills/ptb-composability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ptb-composability", 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/sui/ptb-composabilityType 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 ptb-composability -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install PlamenTSV/plamen ptb-composability --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/sui/ptb-composability .agents/skills/ptb-composability && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ptb-composability" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/sui/ptb-composability into .agents/skills/ptb-composability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ptb-composability", 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 ptb-composability -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install PlamenTSV/plamen ptb-composability --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/sui/ptb-composability .cursor/skills/ptb-composability && 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 "ptb-composability" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/sui/ptb-composability into .cursor/skills/ptb-composability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ptb-composability", 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/sui/ptb-composability--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 ptb-composability -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install PlamenTSV/plamen ptb-composability --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/sui/ptb-composability .gemini/skills/ptb-composability && 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 "ptb-composability" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/sui/ptb-composability into .gemini/skills/ptb-composability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ptb-composability", 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 ptb-composabilityInstalls 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 ptb-composability -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/sui/ptb-composability .github/skills/ptb-composability && 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 "ptb-composability" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/sui/ptb-composability into .github/skills/ptb-composability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ptb-composability", 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 ptb-composability -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 ptb-composability --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/sui/ptb-composability .opencode/skills/ptb-composability && 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 "ptb-composability" agent skill from https://github.com/PlamenTSV/plamen/tree/main/agents/skills/sui/ptb-composability into .opencode/skills/ptb-composability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ptb-composability", 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.
ptb-composabilityTrigger Pattern PTB flag (always for Sui -- Programmable Transaction Blocks are the Sui transaction model) - Inject Into Breadth agents, depth-external, depth-state-trace
Ptb Composability is an agent skill from PlamenTSV/plamen. Trigger Pattern PTB flag (always for Sui -- Programmable Transaction Blocks are the Sui transaction model) - Inject Into Breadth agents, depth-external, depth-state-trace
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.
7 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 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.
Ptb Composability loads about 3.3k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,293 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,293 words, ~3,291 tokens.
.claude/skills/ptb-composability/SKILL.md (or your agent's skills folder).Trigger Pattern: PTB flag (always for Sui -- Programmable Transaction Blocks are the Sui transaction model) Inject Into: Breadth agents, depth-external, depth-state-trace Finding prefix:
[PTB-N]Rules referenced: R4, R5, R8, R10, R15
Programmable Transaction Blocks (PTBs) are Sui's transaction composition primitive. A single PTB can contain up to 1024 commands, each calling a different function, with return values routed between commands. This enables atomic multi-step sequences that are fundamentally different from EVM's single-entry-point model. Every public function is a potential PTB command -- there is no "internal only" visibility equivalent to Solidity's internal.
STEP PRIORITY: Steps 1 (Single-Call Assumption Audit) and 4 (Atomic Read-Modify-Write) are where HIGH/CRITICAL severity findings most commonly hide. Do NOT rush these steps. If constrained, skip conditional sections (6, 7) before skipping 1, 3, or 4.
For EVERY public and entry function in the protocol, classify composability:
| # | Function | Module | Visibility | Returns Value? | Takes Shared Obj? | Composable in PTB? | Notes |
|---|---|---|---|---|---|---|---|
| 1 | {func} | {mod} | public / entry / public(package) | YES / NO | YES / NO | YES / NO | {context} |
Sui visibility semantics:
entry functions: callable from PTB but return values CANNOT be used by subsequent commands (consumed or discarded within the command). Objects can only be transferred, not returned.public functions: fully composable -- return values pass between commands. This is the primary composability surface.public(package): callable only by other modules in the same package. NOT callable from PTB. Safe from external composition.fun (private): Not callable from outside the module. Safe.Key observation: Any function that is public (not entry, not public(package)) is fully composable. Its return values can be routed to ANY other function in the same PTB.
For EVERY public and entry function, check whether its security model implicitly assumes it is the ONLY function called in the transaction:
| # | Function | Assumes Single-Call? | What Assumption? | Breakable via PTB? | Impact |
|---|---|---|---|---|---|
| 1 | {func} | YES/NO | {describe assumption} | YES/NO | {impact} |
Common single-call assumptions that PTBs break:
Key question for each function: "If an attacker calls this function as command N in a PTB, and can execute arbitrary commands 1..N-1 before it and N+1..1024 after it, what can go wrong?"
For each public function that returns objects:
| # | Function | Input Objects | Output Objects | Can Output Be Routed To? | Can Be Called Multiple Times? |
|---|---|---|---|---|---|
| 1 | {func} | {owned/shared/immutable} | {Coin<T> / Object / HotPotato} | {any function accepting this type} | YES/NO |
Return value routing checks:
Coin<T>, can it be routed to function C (external) instead of intended function B?SplitCoins command. Returned Coin<T> can be split. Does protocol assume full amount passed?MergeCoins command. Can attacker merge extra coins to inflate amounts?&mut Object references are borrowed for a command and released after. Same object can be passed to multiple commands sequentially. Does command N assume the object wasn't modified by command N-1?TransferObjects command determines the recipient.Model this specific attack for each function returning value:
1. Attacker calls protocol_function_A() -> returns Coin<USDC> (intended for pool)
2. Attacker routes Coin<USDC> to their own address via TransferObjects
3. Protocol expects the Coin was consumed by the next step but it was interceptedCheck: Does the protocol rely on PTB command ordering to ensure returned values reach the right destination? If YES -> the user controls the ordering, not the protocol.
Without explicit flash loan protocols, PTBs enable flash-loan-like patterns:
1. [Command 1] Split large Coin<SUI> from attacker's balance
2. [Command 2] Deposit into protocol (inflates TVL/balance)
3. [Command 3] Trigger reward distribution (calculated on inflated balance)
4. [Command 4] Withdraw from protocol
5. [Command 5] Join coins back (net zero capital, captured rewards)Can protocol state be manipulated between PTB commands?
| Function Pair | Shared State | Deposit-Action-Withdraw Possible? | Defense? |
|---|---|---|---|
| {deposit, claim} | {pool balance} | YES/NO | {cooldown? same-epoch check? minimum lock?} |
Hot potato flash loan pattern:
1. borrow(pool, amount) -> (Coin<T>, FlashReceipt) // Creates hot potato
2. [attacker does arbitrary operations with Coin<T>]
3. repay(pool, coin, receipt) // Consumes hot potatoChecks for hot potato flash loans:
repay() verify returned amount >= borrowed amount + fee?FlashReceipt type-parameterized to prevent cross-pool receipt reuse?key, store, drop, copy)Within a PTB touching shared objects:
1. [Command 1] Call DEX swap to move on-chain price
2. [Command 2] Call protocol function that reads manipulated price
3. [Command 3] Reverse DEX swap to restore price
4. Net effect: Protocol acted on manipulated price, attacker profitedCheck: Does protocol read spot prices (manipulable) or TWAP/oracle prices (resistant)?
1. [Command 1] Deposit large amount (inflate balance/shares)
2. [Command 2] Trigger reward distribution (on inflated balance)
3. [Command 3] Withdraw deposited amount
4. Net effect: Captured rewards with zero time commitment1. [Command 1] Set state to value A (e.g., via AdminCap function)
2. [Command 2] Perform action requiring state A
3. [Command 3] Reset state back to original value B
4. Net effect: Privileged action performed, state appears unchangedCheck: Possible if attacker controls an AdminCap? (Rule 6: semi-trusted role analysis)
| Shared Object | Invariant | Commands That Mutate It | Sequence-Dependent? | Exploitable? |
|---|---|---|---|---|
| {obj} | {invariant description} | {cmd1, cmd2, cmd3} | YES/NO | {if YES, describe exploit} |
Check for each shared object: Write down the invariant. Can a sequence of 2-3 valid individual operations (each maintaining the invariant) produce a combined state that violates the invariant?
For each zero-ability struct (hot potato):
| # | Hot Potato Type | Created By | Consumed By | Abilities | Bypass Possible? |
|---|---|---|---|---|---|
| 1 | {Receipt} | {borrow()} | {repay()} | NONE (confirmed) | {analysis} |
Checks:
drop -> NOT a hot potato.store ability store the hot potato? (bypass via external module -- check for public generic wrappers)Can objects be wrapped, manipulated, and unwrapped within a single PTB to bypass checks?
| Wrap Operation | Unwrap Operation | What's Inside | Check Bypassed? |
|---|---|---|---|
| {wrap_func} | {unwrap_func} | {object with restrictions} | {describe bypass or NONE} |
Pattern: Object has transfer restrictions (key only, no store). Attacker wraps it inside a store-capable struct, transfers the wrapper, then unwraps on the other side. If wrap and unwrap are both public functions -> transfer restriction bypassed within a single PTB.
PTB gas budget is shared across all commands.
| Attack Vector | Description | Check |
|---|---|---|
| Many-small-operations | 1000+ tiny operations to circumvent aggregate limits | Do aggregate limits track across PTB commands? |
| Object creation spam | PTB creates many objects (up to 1024 per PTB) | Unbounded object creation paths? |
| Gas exhaustion griefing | Craft PTB that consumes max gas on revert | Gas charged on abort -- attacker pays |
Typically lower severity: Sui's gas model charges the sender, so resource attacks are self-penalizing. Focus on aggregate limit bypass.
## Finding [PTB-N]: Title
**Verdict**: CONFIRMED / PARTIAL / REFUTED / CONTESTED
**Step Execution**: check1,2,3,4,5,6,7 | skip(reason) | uncertain
**Rules Applied**: [R4:___, R5:___, R8:___, R10:___, R15:___]
**Severity**: Critical/High/Medium/Low/Info
**Location**: sources/{module}.move:LineN
**PTB Attack Type**: SINGLE_CALL_ASSUMPTION / RETURN_VALUE_ROUTING / FLASH_LOAN_VIA_PTB / ATOMIC_MANIPULATION / HOT_POTATO_BYPASS / WRAP_UNWRAP_BYPASS / AGGREGATE_LIMIT
**Attack Sequence**:
1. [Command 1]: {what attacker does}
2. [Command 2]: {what attacker does}
3. [Command N]: {what attacker does}
**Net Effect**: {what the attacker gained}
**Description**: What is wrong
**Impact**: What can happen (fund loss, unfair value capture, invariant violation)
**Evidence**: Code showing vulnerability + PTB command sequence| Step | Required | Completed? | Notes |
|---|---|---|---|
| 1. Entry Point Inventory | YES | All public/entry functions classified | |
| 1b. Single-Call Assumption Audit | YES | HIGH PRIORITY -- every public function checked | |
| 2. Multi-Step Composition Analysis | YES | All return values checked | |
| 2b. Value Interception Pattern | YES | Value-returning functions modeled | |
| 3. Flash Loan via PTB | YES | Deposit-action-withdraw patterns | |
| 4. Shared Object Mutation Ordering | YES | HIGH PRIORITY -- oracle, balance, state toggle | |
| 4d. Shared Object Reorder Sensitivity | YES | Invariant + multi-command sequences | |
| 5. Hot Potato Enforcement | IF hot potatoes exist | Zero-ability verified | |
| 6. Object Wrapping/Unwrapping | IF wrap/unwrap functions exist | Transfer restriction bypass | |
| 7. Gas Budget Manipulation | IF aggregate limits exist |
After Step 1b: If single-call assumption found on fund-critical function -> immediate HIGH finding.
After Step 3: Cross-reference with SHARE_ALLOCATION_FAIRNESS for deposit-action-withdraw reward capture.
After Step 4a: Cross-reference with ORACLE_ANALYSIS if on-chain DEX prices are used.
After Step 5: Cross-reference with ABILITY_ANALYSIS Section 5 (Hot Potato Enforcement).
If any step skipped, document valid reason (N/A, no hot potatoes, no external calls, no aggregate limits).
© 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/sui/ptb-composability of PlamenTSV/plamen.
Open the folder on GitHubat commit 795962b
Ptb Composability 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 |
|---|---|---|---|---|---|---|
| Ptb Composability this skillPlamenTSV/plamen | 303 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Compose Multiplatform Patternsaffaan-m/ECC | 274k | 2 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Compose Multiplatform Patternsaffaan-m/ECC | 274k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Docker Compose Development Patternsaffaan-m/ECC | 274k | 4 repos | ~2.1k | Automated safety check: Notes | MIT | |
| Kotlin Exposed Patternsaffaan-m/ECC | 274k | 4 repos | ~5.5k | Automated safety check: Pass | MIT | |
| Golang Patternsaffaan-m/ECC | 274k | — | ~1.1k | Automated safety check: Pass | MIT |
affaan-m/ECC
KMP项目中的Compose Multiplatform和Jetpack Compose模式——状态管理、导航、主题化、性能优化和平台特定UI。
affaan-m/ECC
KMPプロジェクト向けのCompose MultiplatformおよびJetpack Composeパターン — 状態管理、ナビゲーション、テーマ設定、パフォーマンス、プラットフォーム固有のUI。
affaan-m/ECC
Practical Docker and Docker Compose patterns for local development: stacks, override files, networking, volumes, container hardening and debugging.
affaan-m/ECC
JetBrains Exposed ORM patterns including DSL queries, DAO pattern, transactions, HikariCP connection pooling, Flyway migrations, and repository pattern.
affaan-m/ECC
Go-specific design patterns and best practices including functional options, small interfaces, dependency injection, concurrency patterns, error handling, and package organization.
affaan-m/ECC
Prisma ORM patterns for TypeScript backends — schema design, query optimization, transactions, pagination, and critical traps like updateMany returning count not records, $transaction timeouts…
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
Trigger Pattern PTB flag (always for Sui -- Programmable Transaction Blocks are the Sui transaction model) - Inject Into Breadth agents, depth-external, depth-state-trace. Ptb Composability is an agent skill from PlamenTSV/plamen.
Ptb Composability fits situations like: pattern PTB flag (always for Sui -- Programmable Transaction Blocks are the Sui transaction model) - Inject Into Breadth agents; depth-state-trace.
Run `npx skills add PlamenTSV/plamen --skill ptb-composability -a claude-code`. Or copy the skill folder (agents/skills/sui/ptb-composability in PlamenTSV/plamen) into .claude/skills/ptb-composability in your project. Claude Code loads it when a task matches its description.
Run `npx skills add PlamenTSV/plamen --skill ptb-composability -a codex`. Or copy the skill folder (agents/skills/sui/ptb-composability in PlamenTSV/plamen) into .agents/skills/ptb-composability 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 ptb-composability -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ptb-composability, .gemini/skills/ptb-composability, .github/skills/ptb-composability and .opencode/skills/ptb-composability in your project.
SKILL.md names no scripts, command-line tools or credentials: Ptb Composability 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.
Ptb Composability 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 Ptb Composability: Compose Multiplatform Patterns (affaan-m/ECC, 274k stars), Compose Multiplatform Patterns (affaan-m/ECC, 274k stars), Docker Compose Development 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.
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.