By ArthurNagy
Scaffold and guide Kotlin Multiplatform + Compose Multiplatform projects. Drives kmp.jetbrains.com for base scaffold, overlays locked architecture, CI, git, product workflow, observability, and release plumbing.
Add a new :feature-<name> module (Compose screen + Orbit ViewModel + state + Koin module + Nav 3 destination + commonTest skeleton).
Search klibs.io for a KMP library, present matches, and add the chosen one to gradle/libs.versions.toml plus a target module.
Add a platform (desktop, web, or ios) to an existing kmp-forge project.
Add a new screen (Composable + Orbit ViewModel + state + Nav 3 destination) inside an existing :feature-<name> module.
Adopt the kmp-forge locked stack into an EXISTING Kotlin Multiplatform project — overlay docs/CI/conventions, then drive a reviewer-led refactor of code to the locked patterns.
Use this agent to generate a complete :feature-<name> module on the kmp-forge locked stack — Compose screen + Orbit ViewModel + state + Koin module + Nav 3 destination + commonTest skeleton. Trigger whenever a new feature module needs scaffolding in a kmp-forge project, whether invoked explicitly via /kmp-forge-add-feature or when the user asks for a new feature by name. <example> Context: User runs the add-feature command. user: "/kmp-forge-add-feature gallery" assistant: "I'll use the kmp-feature-builder agent to scaffold the :feature-gallery module." <commentary>Explicit command invocation — delegate module generation to kmp-feature-builder.</commentary> </example> <example> Context: User asks for a new feature in natural language. user: "Add a photo-detail screen as its own feature module" assistant: "I'll use the kmp-feature-builder agent to create the :feature-photo-detail module (Compose screen, Orbit ViewModel, Koin module, Nav 3 route)." <commentary>New feature module requested — kmp-feature-builder owns generation on the locked stack.</commentary> </example>
Use this agent to migrate an EXISTING Kotlin Multiplatform project's code onto the kmp-forge locked patterns, one layer at a time (DispatcherProvider, Result+DomainError, one-repo-per-type, Koin DI, Orbit state-only events, typed Nav 3, module deps, restrictive visibility, fakes-not-mocks, a11y/i18n). Write-capable; incremental; builds + re-greps to verify each layer. Trigger when refactoring an existing project onto the locked stack — invoked by /kmp-forge-adopt Phase B, or directly for a single layer. <example> Context: /kmp-forge-adopt Phase B drives the guided refactor layer by layer. user: "Phase B: migrate the dispatchers layer" assistant: "I'll use the kmp-migrator agent with layer=dispatchers to inject DispatcherProvider across :domain/:data/:feature-*." <commentary>Adopt Phase B — kmp-migrator executes exactly one layer, then builds + re-greps.</commentary> </example> <example> Context: User wants one layer migrated for a specific feature. user: "Convert feature-gallery to Orbit state-only events" assistant: "I'll use the kmp-migrator agent with layer=orbit target=feature-gallery to remove postSideEffect and switch to consumable state slots." <commentary>Scoped single-layer migration — kmp-migrator owns the detect/transform/verify recipe.</commentary> </example>
Use this agent to review a diff, branch, or file in a kmp-forge-scaffolded project for locked-stack violations. Enforces Orbit state-only events, Koin constructor injection, typed Nav 3, Result+DomainError, DispatcherProvider, one-repo-per-type, fakes-not-mocks, secrets, and a11y/RTL rules. One line per finding, severity-tagged, no praise, no scope creep. <example> Context: Developer finished changes and wants a convention check before committing. user: "review my changes" assistant: "I'll use the kmp-reviewer agent to audit your diff against the locked stack." <commentary>Review request on the working diff — delegate to kmp-reviewer.</commentary> </example> <example> Context: A feature branch is ready to merge. user: "is this branch good to merge?" assistant: "Let me run the kmp-reviewer agent on the branch diff (git diff origin/main...HEAD)." <commentary>Branch-readiness check — kmp-reviewer enforces the locked-stack gates.</commentary> </example>
Author Architecture Decision Records (ADRs) for kmp-forge projects following the Michael Nygard format. Use when documenting a stack or architecture decision, adopting an opt-in library, superseding a prior decision, or when /kmp-forge-init asks about adding a non-default lib.
Author Conventional Commits in a kmp-forge-scaffolded project, where git-cliff generates the changelog and GitHub Release notes from commit prefixes. Use when committing changes in such a repo and deciding the correct type/scope and semver impact so the release notes categorize correctly, or when reviewing commit-message style against the project's git-cliff config.
Configure and run git-cliff to generate CHANGELOG.md and GitHub Release bodies from Conventional Commits in kmp-forge-scaffolded projects. Use when setting up changelog automation, releasing a new version, or troubleshooting changelog output.
Configure and ship release artifacts (APK/AAB, .ipa, desktop installers, web bundle) via GitHub Releases on v* tag push for kmp-forge projects. Use when setting up release CI, debugging release uploads, or planning artifact naming.
Author docs/MVP_SPEC.md for a kmp-forge project — interactive interview structure, section templates, and what makes a spec good vs vague. Used by the /kmp-forge-spec command.
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin that scaffolds and guides Kotlin Multiplatform + Compose Multiplatform projects on a locked, opinionated stack.
kmp-forge drives kmp.jetbrains.com for the base project scaffold, then overlays consistent opinions across every new project: architecture, modules, CLAUDE.md, CI, git, product docs, observability, and release plumbing. JetBrains keeps the wizard current; kmp-forge keeps your opinions sharp.
/plugin marketplace add arthurnagy/kmp-forge
/plugin install kmp-forge@kmp-forge
/kmp-forge-init — scaffold a new project via kmp.new + apply overlay/kmp-forge-adopt — adopt the locked stack into an existing KMP project (non-destructive overlay + reviewer-led refactor plan)/kmp-forge-add-feature <name> — add a :feature-<name> module (UI + ViewModel + state + Koin + Nav 3 destination + tests)/kmp-forge-add-screen <feature> <screen> — add an Orbit screen inside an existing feature/kmp-forge-add-platform <desktop|web|ios> — add a platform to an existing project/kmp-forge-add-library <query> — find a KMP library via klibs.io and add it to the version catalog/kmp-forge-bump-stack — refresh libs.versions.toml against the latest stable versions/kmp-forge-spec — author MVP_SPEC.md interactively or from a free-form dump/kmp-forge-doctor — check JDK, Xcode, Android SDK, Gradle wrapper versions| Concern | Choice |
|---|---|
| MVI | Orbit MVI |
| DI | Koin |
| Navigation | Navigation 3 (Compose Multiplatform) |
| Image loading | Coil 3 |
| HTTP (opt-in) | Ktor Client |
| Persistence: prefs | DataStore (KMP) |
| Persistence: relational (opt-in) | SQLDelight |
| Serialization | KotlinX Serialization |
| Logging | Kermit |
| Date/time | kotlinx-datetime |
| Resources / i18n | Compose Multiplatform Resources |
| Crash reporting (default) | Platform out-of-box (Play Vitals, App Store Connect) |
| Crash reporting (opt-in) | Sentry across all platforms |
| Testing | kotlin.test + Orbit ContainerHost.test() + Turbine + Compose UI Test |
| Mocking | Fakes preferred; MockK only on JVM |
| CI | GitHub Actions |
| Distribution | GitHub Release artifacts default; Firebase App Distribution + gradle-play-publisher opt-in |
| Branching | Trunk-based, Conventional Commits |
| Changelog | git-cliff on tag |
| Architecture | Hybrid — features = presentation only; shared :domain, :data, :ui |
| Modules at scaffold | :composeApp + :ui + :domain + :data + build-logic/ |
The plugin's docs/ directory holds the source-of-truth conventions every scaffolded project links to:
MIT — see LICENSE.
npx claudepluginhub arthurnagy/kmp-forge --plugin kmp-forgeComprehensive feature development workflow with specialized agents for codebase exploration, architecture design, and quality review
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.
A growing collection of Claude-compatible academic workflow bundles. Covers scientific figures, manuscript writing and polishing, reviewer assessment, citation retrieval, data availability, paper reading, literature search, response letters, paper-to-PPTX conversion, and evidence-grounded Chinese invention patent drafting. Rules are organized as reusable skill folders with explicit workflows and quality checks.
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Tools to maintain and improve CLAUDE.md files - audit quality, capture session learnings, and keep project memory current.