Kotlin Project Feature Implementation logo

Kotlin Project Feature Implementation

Community
mmiani
kotlin-project-feature-implementation

Use when implementing or extending a feature in a Kotlin Multiplatform project. Provides pre-coding inspection, KMP source-set discipline, state pipeline design, architectural defaults, security/performance guardrails, and implementation rules. Forward-looking only — not a review skill.

Overview

Publishermmiani
Repositorykotlin-kmp-claude-agent-skills
Skill namekotlin-project-feature-implementation
Stars
89
Forks
9
Bundled files
4
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 4 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by mmiani on GitHub. Read the source before you install it.

Installation

Install the Kotlin Project Feature Implementation AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/mmiani/kotlin-kmp-claude-agent-skills/tree/main/skills/kotlin-project-feature-implementation
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/mmiani/kotlin-kmp-claude-agent-skills.git /tmp/kotlin-kmp-claude-agent-skills
mkdir -p .claude/skills
cp -r /tmp/kotlin-kmp-claude-agent-skills/skills/kotlin-project-feature-implementation .claude/skills/kotlin-project-feature-implementation
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Kotlin Project Feature Implementation in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Kotlin Project Feature Implementation on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Kotlin Project Feature Implementation is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Kotlin Multiplatform Feature Implementation

Use this skill when implementing a new feature or extending an existing flow in a Kotlin Multiplatform project.

This skill is forward-looking only. It is not a review skill. It does not produce verdicts or issue severity ratings. For post-implementation or PR review, use kotlin-project-architecture-review instead.

Your job is to deliver production-grade code that fits the existing architecture, respects the shared UI system, preserves module boundaries, and remains easy to maintain over time.

Do not optimize for speed of output alone.
Optimize for correctness, scalability, maintainability, security, consistency, and clean evolution of the existing codebase.


What this skill does

  • Provides a pre-coding inspection checklist to read the codebase before writing anything
  • States the architectural defaults to implement against
  • Gives layer-by-layer implementation rules
  • Defines KMP source-set placement discipline
  • Defines state pipeline and data ownership expectations
  • Enforces shared UI system usage
  • Adds performance, coroutine, concurrency, and security guardrails
  • Defines the expected output format for an implementation plan

Primary goals

For every implementation, optimize for:

  1. Architectural consistency
  2. Small, coherent diffs
  3. Business logic in the right layer
  4. Strong separation of concerns
  5. Model and boundary integrity
  6. Predictable state management
  7. Shared UI system consistency
  8. Composable, reusable design
  9. Compose performance
  10. Coroutine and threading correctness
  11. Concurrency and race-condition safety
  12. Security and privacy safety
  13. Source-of-truth discipline
  14. Testability
  15. Migration and rollout safety
  16. Long-term maintainability

Default architecture assumptions

Unless the project clearly does otherwise, implement features using:

  • UI driven from immutable state
  • user events flowing into a state holder
  • repositories owning data access and coordination
  • domain layer only when business logic is complex, reused, or meaningfully reduces state-holder complexity
  • shared logic in commonMain only when valid for all declared targets
  • platform code at the edges
  • narrow module APIs and cohesive feature ownership
  • tests alongside new logic, not deferred

Do not invent new structure if the codebase already has a valid one. Match conventions unless there is a clear reason not to, and state that reason explicitly in the implementation plan.


Implementation philosophy

Before writing code, understand how the existing app already solves similar problems.

Do not introduce parallel patterns unless the current pattern is clearly broken and the task explicitly requires changing it.

Default behavior:

  • preserve existing architecture
  • extend existing modules rather than creating shadow flows
  • reuse existing components before creating new ones
  • make the smallest coherent implementation that solves the task correctly
  • keep business logic out of UI
  • avoid unrelated refactors
  • prefer explicit, readable code over clever abstractions

Step 0: Read before writing

Inspect the relevant existing feature before writing any code. Identify:

  1. Module boundaries — which modules own the feature area, and what their public APIs are
  2. Source-set placement — what is in commonMain vs platform source sets; where new code belongs
  3. Route and navigation ownership — where routes are defined, how new screens integrate
  4. State-holder pattern in use — ViewModel, presenter, state machine; what the existing contract looks like
  5. Repository and data-source abstractions — existing interfaces, implementations, source-of-truth rules, error model
  6. Domain layer presence and rationale — whether it exists, whether it adds value, whether new logic belongs there
  7. Error-model conventions — exceptions, result wrappers, sealed error types; what the project uses consistently
  8. Existing tests — test locations, test doubles, patterns already established
  9. Shared UI system usage — existing shared components, spacing tokens, typography patterns, strings/localization patterns
  10. Similar flows already implemented — find the closest existing feature and copy the pattern, not just the visual result

Do not start coding before grounding the implementation in the current codebase.


Required workflow

Follow this workflow for every feature unless explicitly told otherwise.

Step 1: Inspect first

Before implementing:

  • identify the feature/module involved
  • identify navigation entry points
  • identify existing presentation/state patterns
  • identify domain/use case patterns
  • identify repository/data/API boundaries
  • identify existing shared UI components
  • identify similar features/screens already implemented
  • identify whether the change belongs in shared code or platform-specific code
  • identify source-of-truth expectations
  • identify security/trust-boundary implications if the feature touches auth, session, deep links, payments, files, web content, roles, or PII

Step 2: Plan before editing

Before making changes, produce a short implementation plan that includes:

  1. files to inspect
  2. files likely to change
  3. new files likely to be added
  4. business logic placement
  5. data ownership and source-of-truth decisions
  6. state pipeline changes required
  7. API/data implications
  8. source-set placement decisions
  9. risks and edge cases
  10. tests that should be added

Step 3: Implement the smallest coherent slice

Implement only what is required for the requested slice.

Prefer vertical slices such as:

  • models + mapper + repository contract
  • ViewModel/state changes
  • UI rendering for known state
  • API integration for one path
  • loading/error handling
  • one interaction flow at a time

Avoid broad end-to-end rewrites unless explicitly requested.

Step 4: Self-check before finishing

Before considering the task done, check for:

  • architecture drift
  • large ViewModels
  • logic in the wrong layer
  • DTO leakage across boundaries
  • ambiguous or contradictory state
  • shared UI system misuse
  • hardcoded strings
  • Compose recomposition risks
  • coroutine/threading issues
  • cancellation and exception handling issues
  • race conditions or duplicate-submission risks
  • source-of-truth confusion
  • security/privacy issues
  • missing tests

Detailed implementation rules

The full rule sets live in this skill's reference/ folder. Read only the files the feature actually touches; do not load them all by default.

FileCovers
reference/layer-rules.mdUI layer; Shared UI system rules; Strings and localization; State holder; Domain layer; Data layer; Source sets; Module boundaries; Navigation; Model and boundary rules; Recommended feature structure
reference/state-and-data.mdState management rules; Data ownership decisions; State pipeline design; Dependency injection and construction
reference/compose-and-concurrency.mdCompose implementation rules; Coroutine and threading rules; Concurrency and race-condition rules
reference/quality-guardrails.mdSecurity and privacy; Tests; Observability; Backward compatibility and rollout; Accessibility and UX robustness; Reusability and file organization; Internal API design; Lint and static analysis; KMP-specific rules

reference/layer-rules.md and reference/state-and-data.md apply to nearly every feature. Read the other two as the work reaches them.

Anti-patterns to prevent

  • starting to write code before reading the existing structure
  • multiple writable sources of truth for the same data type
  • direct repository or data-source access from composables
  • pass-through use cases that add ceremony without isolation benefit
  • DTOs or persistence models flowing into UiState
  • platform-specific APIs in commonMain
  • feature logic embedded in bridge implementations
  • treating loading, error, empty, and partial-data states as afterthoughts
  • inconsistent error modeling relative to the rest of the codebase
  • new module APIs wider than the feature needs
  • massive ViewModels
  • business logic in composables
  • broad state observation causing extra recomposition
  • blocking work on main
  • swallowing cancellation
  • unstructured coroutine launches
  • race conditions in submit/refresh flows
  • duplicated UI patterns that should be components
  • giant files with mixed responsibilities
  • insecure token/session handling
  • sensitive data in logs
  • unclear source of truth
  • brittle schema assumptions
  • APIs that are easy to misuse
  • hardcoded user-facing strings
  • raw spacing/dimensions instead of design tokens where the system already provides them

Required output format

When using this skill to guide implementation, produce:

  1. Pre-coding inspection summary

    • modules and source sets affected
    • state-holder pattern in use
    • repository/data-source conventions observed
    • domain layer presence and rationale
    • error model in use
    • existing UI system patterns
    • existing test patterns
  2. Data ownership decisions

    • source of truth for each new data type
    • who owns writes, who owns reads
    • offline/cache considerations if relevant
  3. State pipeline design

    • UiState shape
    • user actions/events
    • one-time effects
    • loading → success
    • loading → error
    • retry
    • empty state
    • partial-data path if relevant
  4. Layer plan

    • which files to create or modify
    • in which module
    • in which source set
    • what stays in shared code vs platform code
    • domain layer: yes/no and why
  5. Implementation

    • code changes
  6. Tests to add

    • state-holder transition tests
    • domain use case tests if applicable
    • repository/mapper tests
    • concurrency/boundary tests if needed
    • which test source set each test lives in
  7. Risks and edge cases

    • source-set correctness risks
    • navigation edge cases
    • partial-data and error-path risks
    • concurrency/retry risks
    • security/trust-boundary risks
    • configuration/lifecycle edge cases
  8. Assumptions

    • any architectural assumption made that is not directly verified in the codebase

If the task is clearly an editing task and not just analysis, keep the plan concise and then proceed with implementation.


Default response structure

When asked to implement a feature, respond in this structure unless told otherwise:

  1. Pre-coding inspection summary
  2. Data ownership decisions
  3. State pipeline design
  4. Layer plan
  5. Risks and edge cases
  6. Implementation
  7. Tests added or recommended
  8. Assumptions

Final instruction

Implement like an architect who will have to maintain this code for years.

Be strict about:

  • correctness
  • architecture boundaries
  • scalability
  • maintainability
  • consistency
  • performance
  • security
  • privacy
  • testability
  • rollout safety

Do not optimize for cleverness.
Do not optimize for broad refactors.
Optimize for clean, production-grade evolution of the existing codebase.


References

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Kotlin Project Feature Implementation AI skill do?

Use when implementing or extending a feature in a Kotlin Multiplatform project. Provides pre-coding inspection, KMP source-set discipline, state pipeline design, architectural defaults, security/performance guardrails, and implementation rules. Forward-looking only — not a review skill.

Why use Kotlin Project Feature Implementation on TypingMind?

Because you install it once and use it with any model. Kotlin Project Feature Implementation is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Kotlin Project Feature Implementation in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/mmiani/kotlin-kmp-claude-agent-skills/tree/main/skills/kotlin-project-feature-implementation. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Kotlin Project Feature Implementation?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Kotlin Project Feature Implementation?

As many as you like. As long as a model supports skills, you can use Kotlin Project Feature Implementation with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Kotlin Project Feature Implementation AI skill free?

Yes. It is published on GitHub by mmiani under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇