kotlin

REVIEW · 61
Registry indexed

Design, implement, and review Kotlin and Android APIs. Use when working on .kt files, Kotlin nullability, sealed classes/interfaces, coroutines, Android threading, Java interop, or Kotlin-backed React Native Nitro Module implementations.

Verified installs0
Stars161
Version1.0.0
Quality64/100 · Promising
Trust61/100 · Sandbox only
Audit75/100 · Needs review

Supply asset profile

Coding and developer agents

Code review, repo analysis, testing, CI, GitHub, DevOps, and developer workflow skills.

Browse track

Scenario

GitHub automation

I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.

Agent fit

Claude Code + CLI + Codex

Codex, Claude Code, Cursor, CLI, or custom agents.

Install

Ready

npx skills add margelo/react-native-skills --skill kotlin

Maintenance

fresh

1d since push

Risk

Needs review

License is unclear

GitHub quality

161

64/100 Quality · 69/100 Trust

Coverage tags

CodingGitHub automationdesign-creativeagent-skill

Review notes

License is unclear · Financial research output is not financial advice; require human review before any live investment decision

Agent adoption scorecard

Trust, audit, and install readiness at a glance

These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.

Quality

Promising
64

Useful candidate, but compare it with alternatives before adopting.

Trust

Sandbox only
61

Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.

Audit

Needs review
75

A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.

OpenAgentSkill Trust Score v5

Human review before install

Run only in a sandbox and compare close alternatives before using it for real work.

CodexClaude CodeCursorOpenAgentSkill CLI

Stars

161 GitHub stars

Repo activity

161 stars, 7 forks

Maintenance

1d since push

License

Unknown

Install

npx skills add margelo/react-native-skills --skill kotlin

Install safety

standard package or runtime install path

Permission surface

filesystem or document access, network or browser access

Agent outcomes

No agent outcome data yet

Docs

Strong README/SKILL.md context

Risk summary

Review before production

  • The repository license is unknown, which may raise concerns about usage rights and redistribution.
  • Financial research output is not financial advice; require human review before any live investment decision.
  • License is unclear
  • Quality score needs review

Install readiness

Install path available

  • Install path is available
  • Repository evidence is available
  • License is unclear
  • No Agent Proven outcome evidence yet

Agent-readable metadata

Machine-readable decision data for this skill.

Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.

Open JSON

Suited tasks

  • Workflow automation workflows
  • Claude Code teams
  • builders willing to evaluate younger projects
  • Move data between tools

Suited agents

CodexClaude CodeCursorOpenAgentSkill CLICLI

Install decision

Command
npx skills add margelo/react-native-skills --skill kotlin
Policy
review
Human review
yes

Trust and risk

Trust
61/100
Audit
75/100
Risk level
Needs review

Outcome loop

Endpoint
/api/agent/outcome
Event ID
resolve
Outcomes
5

Install command

npx skills add margelo/react-native-skills --skill kotlin

Do not use when

  • teams that need a vendor-supported SLA
  • production agents without a repository review
  • The repository license is unknown, which may raise concerns about usage rights and redistribution.
  • License is unclear
  • Financial research output is not financial advice; require human review before any live investment decision

Agent safety v2

59/100 · Review before install

Reviewed with permission notesreview

Usable candidate, but the agent should surface permission and audit notes before installation.

Require human approval before installing into a real workspace.

Resolve via API

medium

Network access

Skill likely fetches remote pages, APIs, repositories, or external services.

medium

Filesystem access

Skill may read or write project files, documents, generated artifacts, or local workspace state.

  • License is unclear

Install targets

Install this skill in your agent workflow

Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.

skill install

OpenAgentSkill CLI

Resolve policy, run the source installer safely, and report a verified install receipt.

$ npx --yes https://github.com/Leon-Drq/openagentskill/releases/download/cli-v0.2.1/openagentskill-0.2.1.tgz install margelo-kotlin

Agent resolve plan

Let an agent verify fit before installing.

The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.

Open text plan

Agent should check

  • Task fit and alternatives from Resolve API.
  • Audit score, trust score, and safety policy warnings.
  • Install target compatibility for Codex, Claude Code, Cursor, or CLI.

Copy prompt

Task: Use kotlin in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20kotlin%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/margelo-kotlin/install
Install command: npx skills add margelo/react-native-skills --skill kotlin
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.

Agent handoff

Give an agent the install path, not another directory page.

Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.

Open install API

Agent prompt

Use kotlin for this task. Review https://www.openagentskill.com/api/skills/margelo-kotlin/install, then install with: npx skills add margelo/react-native-skills --skill kotlin

Registry metadata

Agent-readable profile for automatic skill selection.

This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.

Open manifest

Agent fit

65/100

Workflow automation

Platforms

Claude Code

Audit report

Needs review · 75/100

A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.

View audit reportView eval report

Agent decision cockpit

Fallback candidate for Workflow automation

Prototype with this skill first; keep a fallback candidate ready.

65
Readiness
Prototype
Stage

Role in stack

Fallback candidate

Primary fit

Workflow automation

Trust label

Prototype first

Install path

Command ready

Use when

  • Workflow automation workflows
  • Claude Code teams
  • builders willing to evaluate younger projects

Evidence

  • recent repository activity
  • install command or GitHub repo available
  • 64/100 quality profile
  • 6 OpenAgentSkill engagement events

review first

  • The repository license is unknown, which may raise concerns about usage rights and redistribution.

Implementation path

  1. 1Install it in a sandbox agent and run one Workflow automation task end to end.
  2. 2Compare output quality, latency, and failure behavior against at least one alternative.
  3. 3Promote it into production only after reviewing repository permissions, license, and maintenance signals.

Trust profile

Sandbox only

Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.

61
OpenAgentSkill Trust Score

GitHub adoption

INFO

161 GitHub stars

Stars/forks activity

CHECK

161 stars, 7 forks; issue activity unavailable in current metadata

Recent maintenance

PASS

1d since push

License clarity

CHECK

Unknown

Good signals

  • AI review approved
  • Install path is available
  • Repository evidence is available
  • Recently maintained repository
  • Install command has no obvious high-risk pattern
  • Outcome loop is ready but needs first real agent run

Review before install

  • The repository license is unknown, which may raise concerns about usage rights and redistribution.
  • Financial research output is not financial advice; require human review before any live investment decision.
  • License is unclear
  • Quality score needs review
  • Stars/forks activity: 161 stars, 7 forks; issue activity unavailable in current metadata
  • License clarity: Unknown
  • No real agent outcome reports yet
  • Human review required before unattended installation

Recommended action

Run only in a sandbox and compare close alternatives before using it for real work.

Quality profile

Promising candidate for agent workflows

Useful candidate, but compare it with alternatives before adopting.

64
GitHub stars
161
Freshness
1d ago
Install ready
Yes
License
Unknown
Review before install: The repository license is unknown, which may raise concerns about usage rights and redistribution.

Workflow fit

Use this skill in these scenarios

Workflow fit

Add it to a complete workflow

Alternative shortlist

Compare before you install

Similar skills that may fit this task.

Compare all

Overview

--- name: kotlin description: Design, implement, and review Kotlin and Android APIs. Use when working on .kt files, Kotlin nullability, sealed classes/interfaces, coroutines, Android threading, Java interop, or Kotlin-backed React Native Nitro Module implementations. ---

# Kotlin

Use this skill for Kotlin code that needs strong type modeling, explicit async boundaries, and idiomatic Android integration. When the code is part of a Nitro Module, pair this with `build-nitro-modules` for generated specs, Promise mapping, annotations, and HybridObject constraints.

## Workflow

1. Read the local Kotlin code, generated abstract classes, and public API shape before editing. 2. Model valid states with Kotlin types before implementing behavior. 3. Choose whether work is synchronous, coroutine-based, or explicitly dispatched. 4. Keep properties cheap and nonblocking. 5. Make thread hops, Android service access, I/O, and fallible work visible in the API.

## Type-Safe API Design

- Represent state variants with sealed interfaces/classes, normal interfaces, or concrete classes. Do not encode variants as one data class with many nullable fields. - Keep related values non-null on the variant where they are valid. If `barcode` and `barcodeType` must exist together, put them on `ScannedBarcode`. - Use nullable types for real absence inside one state, not for "maybe this object is a different kind of thing". - Prefer compile-time narrowing over caller-side null probing. Repeated null checks for related fields usually mean the model is too loose.

```kotlin // Avoid: related fields are nullable and the valid combinations are implicit. data class ScannedData( val position: Point, val text: String?, val barcode: String?, val barcodeType: BarcodeType?, val face: Rect?, )

// Prefer: each variant exposes only the fields that are valid for it. sealed interface ScannedData { val position: Point }

data class ScannedText( override val position: Point, val text: String, ) : ScannedData

data class ScannedBarcode( override val position: Point, val barcode: String, val barcodeType: BarcodeType, ) : ScannedData

data class ScannedFace( override val position: Point, val face: Rect, ) : ScannedData ```

## Async and Threading

- Use coroutines for naturally suspending APIs and Android I/O that already has coroutine support. - Keep quick, deterministic, local work synchronous. Do not introduce coroutines, dispatchers, or Promise plumbing for simple value construction, cached metadata, or pure transforms. - Use explicit owned dispatchers/scopes or Nitro `Promise.parallel` for CPU-bound synchronous work that should not run on the caller thread. - Avoid the main dispatcher unless the Android API requires it, such as view/UI mutation or lifecycle APIs. Keep main-thread blocks small and move parsing, conversion, I/O, session negotiation, and CPU work to an owned dispatcher or async API. - Do not use `runBlocking` in library code, property getters, setters, or JS-facing entry points. - Do not hide a thread hop, service lookup, blocking I/O, permission flow, or fallible native operation behind a property. - If a value is emitted by a specific Android callback/thread, prefer a listener, Flow, or event API. In Nitro specs, expose a listener or a `Promise<T>` method. - Treat repeated `launch`, `withContext`, dispatcher, handler, or executor hops as an architecture smell. A component should either own the coroutine scope/dispatcher/lifecycle it works on, or cross into that owner once at the public async boundary or native callback boundary. - If a workflow bounces between main, IO, default, native, and JS/Nitro contexts in multiple nested places, stop and redesign the object/lifecycle/API. Excessive hops hide latency, make ordering harder to reason about, and create future performance problems. - Do not fix races or readiness bugs with `delay`, `Thread.sleep`, `Handler.postDelayed`, timers, extra dispatcher hops, or calling the same method twice. Fix the owner dispatcher/lifecycle, state machine, callback/event, Flow, or async API boundary instead. Retry only for external nondeterminism such as hardware, OS services, remote services, or network, and keep retries bounded, cancellable, and idempotent. - Keep mutable shared state owned by one coroutine scope, dispatcher, lock, or Android component lifecycle. Avoid mixing ownership models without a clear boundary. - Treat `Mutex`, `synchronized`, and `ReentrantLock` as last-resort synchronization, not default listener or callback plumbing. Before adding one, identify the exact shared mutable values, concurrent callers, and why a single owner dispatcher/lifecycle, channel/Flow, or immutable snapshot is not enough. - Never hold a lock while invoking callbacks, calling into JS/Nitro, or calling unknown user code. Snapshot listeners under the lock if needed, unlock, then call them. A listener removed during an in-flight emission may receive that current event.

## Properties

- Use `val` and `var` for cheap in-memory state or derived values. - Use methods for side effects, I/O, Android service calls, permission checks, allocation, blocking work, or operations that can fail. - If a property would need to wait for another thread, redesign it as an async method or event.

```kotlin // Avoid: blocking work hidden in a getter. val status: SessionStatus get() = runBlocking { session.status() }

// Prefer: make the async boundary explicit. fun getStatus(): Promise<SessionStatus> { return Promise.async { session.status() } } ```

## Kotlin Style

- Make classes final by default. Kotlin classes already are final unless marked `open`; keep them that way unless inheritance is intentional. - Prefer `data class` for plain values and regular classes for owned resources or lifecycle. - Prefer `sealed interface` or `sealed class` for closed result families. - Use `require`, `check`, or specific exceptions for invalid inputs and invalid state. Do not silently no-op user-reachable failures. - Keep Java interop explicit. Convert platform types into Kotlin types before exposing them through the public API where practical. - Avoid `!!` except at narrow boundaries where a prior check makes the invariant obvious. Prefer early returns, `requireNotNull`, or typed state. - Prefer explicit `return` statements inside multi-line control flow. Do not lift the return outside a multi-line `try`/`catch`, `if`, `when`, or lambda just to make it expression-like; use `try { return value } catch (...) { return fallback }`. - In multi-line lambdas, use labeled returns such as `return@map value` for the result. Omit the label only for true single-expression lambdas like `items.map { it.toString() }`; do not write `items.map { return@map it.toString() }`. - Prefer inline shorthand for unambiguous single-expression lambdas: `formats.map { it.toMLKitFormat() }`, not a multi-line `map { format -> format.toMLKitFormat() }`. Do not use `it` when a surrounding or nested lambda already uses `it`; name parameters in nested lambdas or when clarity needs it. - Treat a filename as a scope contract. `HybridDataScanner.kt` should implement `HybridDataScanner`; it should not also contain Android helpers, geometry conversions, listeners, or extension utilities. - Keep one top-level implementation type per file. Do not put secondary classes, interfaces, enums, option adapters, coordinators, delegates, or helper types below the primary type. If a helper deserves a type, it deserves its own file. - Keep one focused extension/conversion per file. Do not create a catch-all extension file just because every helper is an extension. Split conversions into named files such as `Barcode+toScannedCode.kt`, `TargetBarcodeFormat+toMLKitFormat.kt`, and `BarcodeFormat+fromMLKitBarcodeFormat.kt` with `internal` visibility where appropriate. - Never put extension `fun`, `val`, or `var` declarations inside `Hybrid*` implementation files or other primary implementation files, even when they are private, tiny, or only used by that file. Put every extension in a separate named `Type+operation.kt` extension/converter file so code splitting, maintainability, and future diffs stay clean. - Do not place private top-level extension properties/functions below a primary class just because Kotlin allows it. Companion extensions, enum/platform mappings, barcode format conversions, and ML Kit/CameraX adapters belong in their own named files. - Use private top-level helpers in the same file only when they are tiny, non-extension functions/properties, and exist solely to support that file's primary type. - Extract Android preflight checks and platform boilerplate out of `Hybrid*` factories and implementation methods. Permission checks, manifest feature/permission validation, `PackageManager` capability checks, service availability checks, and similar setup guards belong in focused helper files; the HybridObject call site should stay one or two lines. - Do not create broad `Utils.kt` files for these helpers. Name the file after the platform type or domain check and keep each helper focused on one behavior. - Use line count as a review signal: files below roughly 300 lines are usually fine only after the one-type-per-file and no-helpers-in-factory rules are satisfied. Size caused by helpers, conversions, or Android glue is a design issue. - Put conversions on the element type, not on `List` or array types, when the conversion only reads one element. Prefer `TargetBarcodeFormat.toMLKitFormat()` plus `formats.map { it.toMLKitFormat() }` at the call site over `Array<TargetBarcodeFormat>.toMLKitFormats()`. - Do not put domain conversions on broad/common receivers such as `Int`, `String`, `Double`, or `Any`, even privately. Prefer the domain type's companion/factory direction, such as `BarcodeFormat.Companion.fromFormat(format: Int)`, over `Int.toBarcodeFormat()`. - Add collection extension functions only when the collection has real domain behavior, such as validation across elements, deduplication, ordering, batching, caching, nonempty checks, or error aggregation. If the receiver is a concrete `Array<SomeDomainType>` or `List<SomeDomainType>` and the body is mostly `map { ... }`, keep it in caller code. - When a Kotlin converter returns or accepts Android platform `Int` constants, apply the matching AndroidX/Java/Kotlin annotation where the API supports it, such as a CameraX `@ImageCapture.FlashMode`-style annotation on the function, return value, or parameter. Check the annotation target and retention before placing it; do not annotate blindly when the platform API exposes only a plain `Int`. - When converting from an annotated platform `Int`, put the annotation on the `format: Int` parameter if the annotation target supports parameters. For example, prefer `BarcodeFormat.Companion.fromFormat(@SomeBarcodeFormat format: Int)` over an untyped primitive input.

## Nitro Notes

- Kotlin HybridObject implementations must extend the generated `Hybrid*Spec` class and include `@Keep` plus `@DoNotStrip`. - Use `Promise.async` for suspending or I/O work and `Promise.parallel` for CPU-bound synchronous work. - Avoid manually creating or passing around `Promise<T>` instances. Prefer `Promise.async`, `Promise.parallel`, `Promise.resolved`, and `Promise.rejected`; use a manual Promise only for real native completion/listener/callback bridges that cannot be wrapped as suspend APIs. - For general callback APIs such as Google `Task<T>`, first write a generic suspend adapter in its own extension file, such as `Task+await.kt`, then call it from `Promise.async { task.await() }`. Do not hand-wire `addOnSuccessListener`/`addOnFailureListener`/`addOnCanceledListener` into public HybridObject methods. - Use `Promise<Unit>` for `Promise<void>`. - Access `NitroModules.applicationContext` lazily and fail explicitly if it is unavailable. - Generated properties are synchronous JS entry points. Redesign them as methods or listeners if they need Android

Technical details

Version
1.0.0
License
Unknown
Last updated
Aug 21, 2026
Published
Aug 21, 2026

Decision snapshot

Fallback candidate

65
Ready
Prototype
Stage

recent repository activity

Audit

Install review

Install and adoption review

75
Needs review
Security
73/100
Maintenance
100/100
Install
92/100
Open full auditView eval report

Agent-proven evidence

Agent-proven evidence

Outcome reports after resolve, review, install, and one narrow run.

0
Proven
Needs first agent runAuto-install: review firstLast: Unknown
Success rate
Recent failure
Outcomes
0
Output quality
Failed
0
Not relevant
0
Installs
0
Risk blocked
0
Setup needed
0
Production
0

No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.

Install

Add to agent workflow

Free and open source. Review the report before installing into production agents.

Growth loop

Share kit

X

Scenario-led draft for kotlin, ready for a manual X post.

Curator note
A practical pick for design or creative work:

kotlin: Design, implement, and review Kotlin and Android APIs. Use when working on .kt files, Kotlin nullability, sealed classes/in...

161 stars

https://www.openagentskill.com/skills/margelo-kotlin?ref=x
Open X draft
Optional reply with install command
Listing + install path for kotlin:
https://www.openagentskill.com/skills/margelo-kotlin?ref=x

Install: npx skills add margelo/react-native-skills --skill kotlin

Listing source

Registry indexed

Claimable

This listing was indexed from public sources and is not marked official until a maintainer claim is approved.

Creator
margelo
Indexed by
OpenAgentSkill community index

Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.

Claim this skill

Owner claim

Claim this skill listing

This Registry indexed listing is attributed to margelo but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.

Creator backlink kit

Add the evidence badges to your README

Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.

[![Listed on OpenAgentSkill](https://www.openagentskill.com/api/badge/margelo-kotlin?metric=listed&label=Listed)](https://www.openagentskill.com/skills/margelo-kotlin)
[![OpenAgentSkill Trust](https://www.openagentskill.com/api/badge/margelo-kotlin?metric=trust&label=Trust)](https://www.openagentskill.com/skills/margelo-kotlin)
[![OpenAgentSkill Audit](https://www.openagentskill.com/api/badge/margelo-kotlin?metric=audit&label=Audit)](https://www.openagentskill.com/skills/margelo-kotlin/audit)
[![Agent Proven](https://www.openagentskill.com/api/badge/margelo-kotlin?metric=proven&label=Agent%20Proven)](https://www.openagentskill.com/skills/margelo-kotlin)

Author

M

margelo

@margelo

Platform fit

Health signals

GitHub stars
161
Quality score
39/100
Last GitHub push
Aug 21, 2026
Framework hints
Unknown
OpenAgentSkill views
6
Install copies
0
Outbound clicks
0

Community signal

Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.

Trust & safety

Sandbox only

61
  • GitHub adoption161 GitHub starsINFO
  • Stars/forks activity161 stars, 7 forks; issue activity unavailable in current metadataCHECK
  • Recent maintenance1d since pushPASS
  • License clarityUnknownCHECK
  • README/SKILL.md completenessMetadata includes enough usage and workflow contextPASS
  • Dependency/runtime risknetwork or browser surfacePASS