Agent skill

Optimize Contract

by scalus3 in scalus3/scalus

Optimize Scalus/Cardano smart contracts for execution budget (CPU steps and memory).

Apache-2.0Auto-check passedBackend & APIs

Install Optimize Contract

skills CLI
$ npx skills add scalus3/scalus --skill optimize-contract -a claude-code

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

GitHub CLI
$ gh skill install scalus3/scalus optimize-contract --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/scalus3/scalus.git skills-src && mkdir -p .claude/skills && cp -r skills-src/scalus-skills/skills/optimize-contract .claude/skills/optimize-contract && 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
optimize-contract
GitHub stars
105
Token cost
~3.6k tokens
SKILL.md length
1,287 words
Files
2 (incl. references)
Skills in repo
6
Repo updated
First seen
Licence
Apache-2.0

At a glance

Optimize Scalus/Cardano smart contracts for execution budget (CPU steps and memory).

  • Works in 8 steps: Don't Compute, Verify → Fail Fast → Traverse Once → …
  • Reviewing on-chain code performance
  • SKILL.md covers Prerequisites — Before You…, Target Code Identification, Workflow and Optimization Checklist, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Optimize Contract is an agent skill from scalus3/scalus. Optimize Scalus/Cardano smart contracts for execution budget (CPU steps and memory). Analyzes @Compile annotated validators for performance issues — expensive patterns, unnecessary allocations, redundant traversals, missed short-circuits. Provides concrete Scalus rewrites with budget impact estimates. Use when reviewing on-chain code performance or when /optimize-contract is invoked. Requires explicit path argument.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/patterns.md`).

It sits in Backend & APIs, covering Smart contracts. The repository describes itself as: Scalus - Smart contracts & dApps Development Platform for Cardano. The licence is Apache-2.0.

When your agent uses it

  • Reviewing on-chain code performance
  • /optimize-contract is invoked

Example prompts

  • “/optimize-contract”

Workflow steps

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

  1. Don't Compute, Verify
  2. Fail Fast
  3. Traverse Once
  4. Use PairList for Map Operations
  5. Write ===, and Keep Key Types Concrete
  6. Leverage Ledger Invariants
  7. Build Caches for Repeated Lookups
  8. Use Cheap Builtins for Math

What it can do on your machine

Read from SKILL.md and the folder at commit 073969c. 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 scala).

    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

Optimize Contract loads about 3.6k tokens when it runs, and up to ~8.7k if it reads all its reference files. Until then it costs about 109 tokens; SKILL.md has 1,287 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.7k

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 scalus3/scalus at commit 073969c, republished under its Apache-2.0 licence (© scalus3). 1,287 words, ~3,623 tokens.

Download SKILL.mdSave it as .claude/skills/optimize-contract/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
optimize-contract
description
Optimize Scalus/Cardano smart contracts for execution budget (CPU steps and memory). Analyzes @Compile annotated validators for performance issues — expensive patterns, unnecessary allocations, redundant traversals, missed short-circuits. Provides concrete Scalus rewrites with budget impact estimates. Use when reviewing on-chain code performance or when /optimize-contract is invoked. Requires explicit path argument.

Smart Contract Optimization Review

Analyze Scalus/Cardano smart contracts for execution budget optimization opportunities.

Prerequisites — Before You Optimize

  1. Establish a baseline. Run the validator's tests with budget assertions (assertBudgetEquals or assertBudgetWithin) on representative inputs — simple case, worst case, and typical case.
  2. Identify actual hot paths. Don't guess — measure. Use EvalTestDsl budget assertions to find which code paths dominate the budget.
  3. Optimize surgically. Change one thing at a time and re-measure. Small, targeted changes are safer than sweeping rewrites.
  4. Re-benchmark after every significant change. Budget is the only ground truth.

Target Code Identification

Find on-chain code by searching for:

  1. Objects/classes with @Compile annotation
  2. Objects extending Validator, DataParameterizedValidator, or ParameterizedValidator
  3. Objects compiled with PlutusV3.compile(), PlutusV2.compile(), or PlutusV1.compile()

Search patterns:

grep -rn "@Compile" --include="*.scala" <path>
grep -rn "extends Validator" --include="*.scala" <path>
grep -rn "extends DataParameterizedValidator" --include="*.scala" <path>

Workflow

  1. Discovery: Find all @Compile annotated code in specified path
  2. Profile: Identify existing budget tests; note current memory/steps
  3. Analysis: Check each validator against the optimization checklist below
  4. Prioritize: Rank findings by estimated budget impact (high/medium/low)
  5. Rewrite: Propose concrete code changes with before/after
  6. Verify: Run sbtn quick or specific test to confirm budget improvement
  7. Report: Generate structured report with budget deltas

Optimization Checklist

For detailed patterns with Scalus code examples, see references/patterns.md.

High Impact — Data Structures & Traversals
IDPatternProblemFix
O001Multiple list traversalsSeparate filter then map then lengthCombine into single foldLeft
O002foldRight on listsNot tail-recursive, builds thunksUse foldLeft with reverse if order matters
O003list.flattenO(n*m) via nested foldRight + ++Accumulate with foldLeft and prepend
O004list.distinctO(n^2) — foldLeft with existsUse SortedMap or deduplicate at source
O005list :+ elem (append)O(n) per appendUse elem +: list (prepend) and reverse once
O006Reconstructing ValueFull Value maintains invariants expensivelyUse SortedMap or PairList directly when possible
O007AssocMap anywhereget scans to hit-or-end; union is O(n*m) (get per left key, exists per right key)Use SortedMap: get stops early via Ord, union is one linear merge
O008list.map(f).filter(p)Two traversals, intermediate listSingle foldLeft combining map + filter
O009list.length == 0 / map.size == 0O(n) traversal; SortedMap.size is O(n) although inlineUse isEmpty on List, SortedMap, AssocMap: one nullList, O(1)
O010AssocMap.fromList on large inputO(n^2) dedupPre-sort and use SortedMap.fromStrictlyAscendingList
High Impact — Short-Circuiting & Ordering
IDPatternProblemFix
O011Expensive checks before cheap onesWasted budget on failing txsPut cheapest/most-likely-to-fail checks first
O012Late require for invalid inputWork done before validationFail fast — validate inputs at the top
O013Linear condition chainsAverage n/2 evaluations for n conditionsStructure as binary decision tree
O014No short-circuit in &&/``
O015list.exists after constructionBuilding list just to search itInline the search into the fold that builds the data
Medium Impact — Data Representation
IDPatternProblemFix
O016=== on a BigInt/ByteString behind a type variableLowers to equalsData, not equalsInteger/equalsByteString: 1 761 779 vs 832 313 cpu, 2.1x (measured)Make the key type concrete at the comparison site (a BigInt-keyed or ByteString-keyed helper, not a generic K)
O017Constructing tuples/records to returnAllocation + destructuring overheadUse continuation-passing or accumulator parameters
O018List[(A, B)] map operations~12 builtins per elementUse PairList — ~4 builtins per element via fstPair/sndPair
O019Pattern matching for Data accessConstructs intermediate Scala objectsUse Data builtins directly when structure is known
O020Hand-written equalsData(a.toData, b.toData) or a.toData == b.toDataBuys nothing: for every Data-backed type === already lowers to equalsData; both spellings pin to 901 mem / 1 653 665 cpu on a Value (measured)Derive Eq and write a === b; never compare TxInfo-scale structures whole
Medium Impact — Computation
IDPatternProblemFix
O021pow(2, n)Generic exponentiation loopUse exp2(n) — single builtin via byte shift
O022Manual log2 via division loopO(log n) divisionsUse log2(n) — single builtin via integerToByteString
O023Recomputing same expressionDuplicated subexpressionsUse let bindings; V3 optimizer has CSE but don't rely on it
O024generateErrorTraces = true in prodTrace strings bloat script and budgetSet generateErrorTraces = false for production builds
O025Complex pure computations on-chainExpensive on-chain workMove computation off-chain, pass result as redeemer, verify on-chain
Medium Impact – Stdlib idioms (measured where a number is given)
IDPatternProblemFix
O031out.datum.inlineOrFail[T](msg) === expectedDecodes, then compares field-wise: 461 lovelaceout.hasInlineDatum(expected): one equalsData on the wrapped datum, 286 lovelace. Use inlineOrFail only to read fields
O032xs.exists(_ === x)exists is find(p).isDefined: allocates an Option for a Boolean; a fixed per-call tax of 326 483 cpu (miss) / 564 996 cpu (hit) on V3xs.contains(x): an intrinsic, no Option, no Eq closure. For a non-equality predicate use forall or a hand fold, not exists
O033xs.filter(p).length2 traversals plus k mkCons; filter is a non-tail foldRight; no pass fuses themxs.count(p): one tail-recursive foldLeft, no allocation
O034filter(p).length === BigInt(1) then .head, or count(p) === BigInt(1)2 passes (or 1 pass plus a second scan for the element); the guard and the lookup are separatexs.findUniqueOrFail(p, msg): one pass, returns the element, fails on 0 or 2+. Against count(p) === BigInt(1) on inputs: fee 3 175 vs 3 307 (3 inputs), 6 289 vs 6 804 (10 inputs)
Show full SKILL.md (441 more words)Show less
Low Impact — Micro-Optimizations
IDPatternProblemFix
O026Small recursive helpersCall overhead per recursionUnroll first 1-2 iterations for common small cases
O027Non-tail-recursive numeric loopsStack growthRewrite with accumulator parameter
O028Redundant FromData/ToData conversionsSerialization round-tripsKeep data in Data form between operations
O029list.reverse.foldLeftExtra O(n) reverse passUse foldRight if list is small, or build in correct order
O030Building closures in inner loopsAllocation per iterationLift closure outside loop if captures don't change

Key Scalus Optimization Principles

1. Don't Compute, Verify

The most impactful optimization: move work off-chain.

Instead of computing a result on-chain, have the off-chain code compute it and pass it as a redeemer field. The validator only checks correctness.

scala
// Expensive: compute on-chain
val sqrtResult = radicand.sqRoot

// Cheap: verify pre-computed result
val sqrtResult = redeemer.sqrtValue
require(sqrtResult * sqrtResult <= radicand)
require((sqrtResult + 1) * (sqrtResult + 1) > radicand)
2. Fail Fast

Put cheapest and most-likely-to-fail validations first. Every require that fails early saves the budget of all subsequent code.

scala
// Good: cheap check first
require(isSignedBy(txInfo, admin), "not admin")
require(expensiveValueCheck(txInfo), "value mismatch")

// Bad: expensive check first
require(expensiveValueCheck(txInfo), "value mismatch")
require(isSignedBy(txInfo, admin), "not admin")
3. Traverse Once

Never traverse a list twice when once will do. Combine filter + map + count into a single fold.

scala
// Bad: three traversals
val filtered = items.filter(_.isValid)
val mapped = filtered.map(_.amount)
val total = mapped.foldLeft(BigInt(0))(_ + _)

// Good: single traversal
val total = items.foldLeft(BigInt(0)) { (acc, item) =>
    if item.isValid then acc + item.amount else acc
}
4. Use PairList for Map Operations

PairList uses raw UPLC pair builtins (~4 ops/element) vs List[(A, B)] (~12 ops/element).

scala
// Expensive
map.toList.map { case (k, v) => (k, f(v)) }

// Cheap — 3x fewer builtins
map.toPairList.mapValues(f)
5. Write ===, and Keep Key Types Concrete

For every Data-backed type a === b already lowers to one equalsData builtin. Hand-written equalsData(a.toData, b.toData) or a.toData == b.toData produces identical UPLC (measured: both pin to 901 mem / 1 653 665 cpu on a Value). The cost that is real: === on a BigInt or ByteString behind a type variable emits equalsData instead of equalsInteger / equalsByteString, 1 761 779 vs 832 313 cpu (2.1x, measured).

scala
// Same UPLC, worse to read: do not write this
require(equalsData(toData(outputDatum), toData(inputDatum)))

// Write this (derive Eq on the datum type)
require(outputDatum === inputDatum)

// Generic key: equalsData on every step, 2.1x slower
def lookup[K: Eq](key: K, entries: List[(K, BigInt)]): Option[BigInt] =
    entries.find(_._1 === key).map(_._2)

// Concrete key: equalsInteger
def lookup(key: BigInt, entries: List[(BigInt, BigInt)]): Option[BigInt] =
    entries.find(_._1 === key).map(_._2)

For a continuing datum, compare without decoding: out.hasInlineDatum(expected) costs 286 lovelace against 461 for out.datum.inlineOrFail[T](msg) === expected (measured, O031).

6. Leverage Ledger Invariants

The ledger guarantees: inputs are sorted by TxOutRef, values are ordered by policy ID, outputs never contain negative quantities, minted values exclude ADA. Align your algorithms with these invariants instead of re-validating them.

7. Build Caches for Repeated Lookups

If you check membership in the same set multiple times, build a decision closure once.

scala
// Bad: O(n) per check
require(signatories.exists(_ === admin1))
require(signatories.exists(_ === admin2))

// Better: single traversal, check both
val (hasAdmin1, hasAdmin2) = signatories.foldLeft((false, false)) { case ((a1, a2), sig) =>
    (a1 || sig === admin1, a2 || sig === admin2)
}
require(hasAdmin1 && hasAdmin2)
8. Use Cheap Builtins for Math

log2 and exp2 use integerToByteString/shiftByteString — much cheaper than iterative computation.

scala
// Cheap
val bits = x.log2
val powerOf2 = n.exp2

// Expensive
val bits = manualLog2Loop(x)
val powerOf2 = pow(BigInt(2), n)

Compiler Options That Affect Budget

scala
// V3 lowering, no error traces, UPLC optimizer on
private given Options = Options.release

Measuring Budget

Use EvalTestDsl for precise budget measurement:

scala
import scalus.testing.dsl.EvalTestDsl.*

// Exact budget match — catches regressions AND improvements
eval(compiled)
  .onVM(PlutusV3.makePlutusV3VM())
  .expectSuccess()
  .assertBudgetEquals(memory = 129528, steps = 37_067868)

// Upper bound — for tests where budget fluctuates slightly between builds
eval(compiled)
  .onVM(PlutusV3.makePlutusV3VM())
  .expectSuccess()
  .assertBudgetWithin(memory = 140000, steps = 40_000000)

Format convention: Always use named parameters and _ at million boundary: ExUnits(memory = 129528, steps = 37_067868)

Output Format

Use clickable file_path:line_number format for all code locations.

Finding Format
### [IMPACT] ID: Optimization Name

**Location:** `full/path/to/File.scala:LINE`
**Estimated savings:** ~X% memory, ~Y% steps (or: high/medium/low)

**Current code** (`full/path/to/File.scala:LINE-LINE`):
```scala
// actual code from file

Optimized code:

scala
// proposed optimization

Rationale: Why this is faster and what budget cost it avoids.



### Summary Table

Summary

IDImpactLocationPatternEst. Savings
O-01Highpath/File.scala:123Multiple traversals → single fold~30% steps
O-02Mediumpath/File.scala:87inlineOrFail === x → hasInlineDatum(x)286 vs 461 lovelace
O-03Lowpath/File.scala:200Unroll small recursion~2% steps

Current budget: ExUnits(memory = X, steps = Y) Estimated budget after optimization: ExUnits(memory = X', steps = Y')


## Interactive Workflow

For each finding:
1. Display issue with location and proposed optimization
2. Prompt: "Apply optimization? [y/n/s/d]"
   - y: Apply change, re-run budget test
   - n: Skip, log as "declined"
   - s: Skip without logging
   - d: Show detailed budget breakdown
3. After all findings: run `sbtn quick` to verify correctness
4. Generate summary report with actual budget deltas (before/after)

## Reference

For detailed optimization patterns with Scalus code examples, see:
- `references/patterns.md` — Full pattern catalog with before/after code and budget estimates

© scalus3, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in scalus-skills/skills/optimize-contract of scalus3/scalus.

  • SKILL.md
  • references/patterns.md

Open the folder on GitHubat commit 073969c

Compare with similar skills

Optimize Contract 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.

Optimize Contract compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Optimize Contract this skillscalus3/scalus105—~3.6kAutomated safety check: PassApache-2.0
Fizz Convertpashov/skills1.2k2 repos~3.7kAutomated safety check: PassMIT
Solana Devsolana-foundation/solana-dev-skill571—~3.8kAutomated safety check: PassMIT
Feynman Auditor0xiehnnkta/nemesis-auditor2441 repos~11kAutomated safety check: PassMIT
Smart Contract Auditgreatpie/smart-contract-audit-skill101—~1.1kAutomated safety check: PassNone
RadarAuditware/radar154—~2.1kAutomated safety check: PassGPL-3.0

Similar skills

  • Fizz Convert

    pashov/skills

    Convert English-language properties in PROPERTIES.md (produced by the Fizz skill) into Solidity assertions inside the existing fuzz harness, then flip their checkboxes.

    1.2k GitHub starsUsed in 2 repos~3.7k tokens
    Backend & APIsAuto-check passed
  • Solana Dev

    solana-foundation/solana-dev-skill

    A skill your agent uses when user asks to "build a Solana dapp", "write an Anchor program", "create a token", "debug Solana errors", "set up wallet connection", "test my Solana program", "fuzz my…

    571 GitHub stars~3.8k tokensUpdated 5 days ago
    Backend & APIsAuto-check passed
  • Feynman Auditor

    0xiehnnkta/nemesis-auditor

    Deep business logic bug finder using the Feynman technique. An agent skill from 0xiehnnkta/nemesis-auditor.

    244 GitHub starsUsed in 1 repo~11k tokens
    Backend & APIsAuto-check passed
  • Smart Contract Audit

    greatpie/smart-contract-audit-skill

    Script-backed, out-of-box auditing workflow for Solidity/EVM repositories based on EVMbench detect/patch/exploit methodology.

    101 GitHub stars~1.1k tokensUpdated 7 mo ago
    Backend & APIsAuto-check passed
  • Radar

    Auditware/radar

    Use radar for smart contract security analysis, AST generation, and detection template development.

    154 GitHub stars~2.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Solidity Auditor

    Gabson0x/bountyforge

    Security audit of Solidity code while you develop. An agent skill from Gabson0x/bountyforge.

    443 GitHub stars~3.7k tokensUpdated 20 days ago
    Backend & APIsAuto-check passed

More from scalus3/scalus

  • Security review for Scalus/Cardano smart contracts. An agent skill from scalus3/scalus.

    105 GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • Contract

    scalus3/scalus

    Guide for developing Scalus smart contracts. An agent skill from scalus3/scalus.

    105 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Contract Test

    scalus3/scalus

    Guide for testing Scalus smart contracts. An agent skill from scalus3/scalus.

    105 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Local Development

    scalus3/scalus

    A skill your agent uses when developing or testing Scalus smart contracts with the local Emulator and TxBuilder.

    105 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Pretty

    scalus3/scalus

    A skill your agent uses when writing or changing a Pretty typeclass instance (paiges Doc DSL) in scalus-core, for example in scalus/utils/Pretty.scala or the cardano/ledger types.

    105 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Optimize Contract

What does Optimize Contract do?

Optimize Scalus/Cardano smart contracts for execution budget (CPU steps and memory). Optimize Contract is an agent skill from scalus3/scalus. Optimize Scalus/Cardano smart contracts for execution budget (CPU steps and memory).

When should I use Optimize Contract?

Optimize Contract fits situations like: reviewing on-chain code performance; /optimize-contract is invoked.

How do I install Optimize Contract in Claude Code?

Run `npx skills add scalus3/scalus --skill optimize-contract -a claude-code`. Or copy the skill folder (scalus-skills/skills/optimize-contract in scalus3/scalus) into .claude/skills/optimize-contract in your project. Claude Code loads it when a task matches its description.

How do I install Optimize Contract in Codex?

Run `npx skills add scalus3/scalus --skill optimize-contract -a codex`. Or copy the skill folder (scalus-skills/skills/optimize-contract in scalus3/scalus) into .agents/skills/optimize-contract in your project. Codex loads it when a task matches its description.

Can I use Optimize Contract 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 scalus3/scalus --skill optimize-contract -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/optimize-contract, .gemini/skills/optimize-contract, .github/skills/optimize-contract and .opencode/skills/optimize-contract in your project.

What does Optimize Contract need to run?

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

Does Optimize Contract 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 Optimize Contract 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 Optimize Contract use?

Optimize Contract is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Optimize Contract use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.1k tokens, read only when the agent opens those files.

What are the alternatives to Optimize Contract?

Skills that share tags, products or a category with Optimize Contract: Fizz Convert (pashov/skills, 1.2k stars), Solana Dev (solana-foundation/solana-dev-skill, 571 stars), Feynman Auditor (0xiehnnkta/nemesis-auditor, 244 stars) and Smart Contract Audit (greatpie/smart-contract-audit-skill, 101 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Optimize Contract?

scalus3 (a GitHub organization) maintains it in scalus3/scalus, which has 105 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 6, 2026.

Source: scalus3/scalus on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.