kotlin-types-value-class

kotlin-types-value-class is a skill for Claude Code, Codex from costular/Minitask. It costs 32 tokens per session (1,628 once invoked), scanned A, a copy of kotlin-types-value-class, Apache-2.0.

Use when writing or reviewing Kotlin type declarations to choose @JvmInline value class over data class where appropriate, including Compose stability implications.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/costular/minitask/kotlin-types-value-class
Any agent
npx skills add costular/Minitask --skill kotlin-types-value-class
Clone the repo
git clone --depth 1 https://github.com/costular/Minitask

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for kotlin-types-value-class

README.md
[![agentmods](https://agentmods.dev/badge/skills/costular/minitask/kotlin-types-value-class.svg)](https://agentmods.dev/skills/costular/minitask/kotlin-types-value-class)
Your own site
<a href="https://agentmods.dev/skills/costular/minitask/kotlin-types-value-class"><img src="https://agentmods.dev/badge/skills/costular/minitask/kotlin-types-value-class.svg" alt="Measured on agentmods" height="20"></a>
Per session 32 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,628 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 97% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00032 $0.01628
Opus 5 $0.00016 $0.00814
Sonnet 5 $0.00006 $0.00326
Haiku 4.5 $0.00003 $0.00163

Measured today against content hash 34fad91768a9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

kotlin-types-value-class scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

This is a copy

97% identical to kotlin-types-value-class — 2 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.agents/skills/kotlin-types-value-class/SKILL.md · 120 lines

How it starts

The opening of the file, as written. The whole thing — 120 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Kotlin value class vs data class

Core principle

Prefer @JvmInline value class for single-field types that carry domain meaning. Data classes are for aggregating multiple fields. A value class gives you type safety (you can't mix up UserId and String) without the allocation overhead of a data class.

When to use this skill

  • Writing a new Kotlin type that wraps a single value
  • Reviewing a data class that has only one property
  • Seeing primitive types (String, Long, Int, etc.) used where a domain type would prevent misuse
  • Compose compiler reports showing unstable parameters that could be value classes

Decision flow

Situation Prefer
Single field + domain-meaningful (UserId, EmailAddress, Percentage) @JvmInline value class
Single field + no domain meaning (just grouping) Type alias or keep the primitive
Multiple fields Data class
Needs custom equals/hashCode/toString beyond the wrapped value Data class (value classes delegate to the underlying type)
Used as a generic type argument or nullable in hot paths Data class or primitive (autoboxing cost)
// GOOD: domain-meaningful single field
@JvmInline value class UserId(val value: String)
@JvmInline value class EmailAddress(val value: String)
@JvmInline value class Percentage(val value: Float)

// BAD: data class wrapping a single field
data class UserId(val value: String) // unnecessary allocation
data class EmailAddress(val value: String) // type safety without the overhead is available

// BAD: value class with no domain meaning
@JvmInline value class Wrapper(val value: String) // just use the String, or a type alias

// BAD: value class needing custom equality
@JvmInline value class CaseInsensitiveString(val value: String)
// value class equals delegates to String equals, which IS case-sensitive
// Use a data class if you need different equality semantics

Compose stability

@JvmInline value class is treated as Stable by the Compose compiler when its underlying type is stable (primitives, String, and other stable types). This means:

Read the full file on GitHub · 120 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today First seen · 120 lines · 32 tokens per session scan A 34fad91768a9

Subscribe to this mod's changes

kotlin-types-value-class is a skill published in the GitHub repository costular/Minitask (12 stars, last pushed 7d ago), licensed Apache-2.0. It adds 32 tokens to every session and 1,628 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 97% identical to kotlin-types-value-class, differing in 2 lines, and is treated as a copy.

Related

Other skills, from other repositories

kotlin-multiplatform

Platform abstraction decision-making for Amethyst KMP project. Guides when to abstract vs keep platform-specific, source set placement (commonMain, jvmAndroid, platform-specific), expect/actual patterns. Covers primary targets (Android, JVM/Desktop, iOS) with web/wasm future considerations. Integrates with…

maxrave-dev/SimpMusic · 114 tokens

compose-navigation

Implement navigation in Jetpack Compose using Navigation Compose. Use when asked to set up navigation, pass arguments between screens, handle deep links, or structure multi-screen apps.

maxrave-dev/SimpMusic · 36 tokens

mobile-android-design

Master Material Design 3 and Jetpack Compose patterns for building native Android apps. Use when designing Android interfaces, implementing Compose UI, or following Google's Material Design guidelines.

maxrave-dev/SimpMusic · 38 tokens

android-jetpack-compose

Use when building Android UIs with Jetpack Compose, managing state with remember/mutableStateOf, or implementing declarative UI patterns.

maxrave-dev/SimpMusic · 33 tokens

xml-to-compose-migration

Convert Android XML layouts to Jetpack Compose. Use when asked to migrate Views to Compose, convert XML to Composables, or modernize UI from View system to Compose.

maxrave-dev/SimpMusic · 41 tokens

android-coroutines

Authoritative rules and patterns for production-quality Kotlin Coroutines onto Android. Covers structured concurrency, lifecycle integration, and reactive streams.

maxrave-dev/SimpMusic · 29 tokens