<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Skill - 标签 - 许你一世凡尘的Blog</title><link>https://xuniyishifanchen.eu.org/tags/skill/</link><description>Skill - 标签 - 许你一世凡尘的Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>xuniyishifanchen@gmail.com (许你一世凡尘)</managingEditor><webMaster>xuniyishifanchen@gmail.com (许你一世凡尘)</webMaster><lastBuildDate>Wed, 15 Apr 2026 23:01:24 +0800</lastBuildDate><atom:link href="https://xuniyishifanchen.eu.org/tags/skill/" rel="self" type="application/rss+xml"/><item><title>Android / KMP Architecture Skills for Claude Code[android-error-handling]</title><link>https://xuniyishifanchen.eu.org/android-error-handling/</link><pubDate>Wed, 15 Apr 2026 23:01:24 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-error-handling/</guid><description><![CDATA[name: android-error-handling
description: | Generic Result wrapper, error types, and extension helpers for Android/KMP - Result&lt;T, E&gt;, DataError, EmptyResult, map, onSuccess, onFailure. Use this skill whenever defining error types, creating a Result wrapper, handling success/failure flows, mapping errors, or working with typed errors anywhere in the app (not just data layer — also validation, auth, domain logic). Trigger on phrases like &ldquo;Result wrapper&rdquo;, &ldquo;error handling&rdquo;, &ldquo;DataError&rdquo;, &ldquo;onSuccess&rdquo;, &ldquo;onFailure&rdquo;, &ldquo;EmptyResult&rdquo;, &ldquo;map result&rdquo;, &ldquo;error type&rdquo;, &ldquo;validation error&rdquo;, or &ldquo;typed errors&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code [android-testing]</title><link>https://xuniyishifanchen.eu.org/android-testing/</link><pubDate>Wed, 15 Apr 2026 23:01:23 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-testing/</guid><description><![CDATA[name: android-testing
description: | Testing patterns for Android/KMP - ViewModel unit tests with JUnit5, Turbine, AssertK, UnconfinedTestDispatcher, fake repositories, SavedStateHandle, and Compose UI tests. Use this skill whenever writing or reviewing tests for ViewModels, repositories, use cases, or Compose screens. Trigger on phrases like &ldquo;write a test&rdquo;, &ldquo;unit test the ViewModel&rdquo;, &ldquo;test a repository&rdquo;, &ldquo;Turbine&rdquo;, &ldquo;fake repository&rdquo;, &ldquo;UnconfinedTestDispatcher&rdquo;, &ldquo;runTest&rdquo;, &ldquo;ComposeTestRule&rdquo;, or &ldquo;JUnit5&rdquo;.
Android / KMP Testing Stack Concern Library Test framework JUnit5 Assertions AssertK Flow / StateFlow testing Turbine Coroutine testing kotlinx-coroutines-test + UnconfinedTestDispatcher UI testing ComposeTestRule ViewModel Unit Tests Setup 1 2 3 4 5 6 7 8 9 10 11 12 13 class NoteListViewModelTest { private val testDispatcher = UnconfinedTestDispatcher() @BeforeEach fun setUp() { Dispatchers.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code[android-di-koin]</title><link>https://xuniyishifanchen.eu.org/android-di-koin/</link><pubDate>Wed, 15 Apr 2026 23:01:22 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-di-koin/</guid><description><![CDATA[name: android-di-koin
description: | Koin dependency injection setup for Android/KMP - module definitions per layer, ViewModel injection, assembling modules in :app, and koinViewModel() in composables. Use this skill whenever setting up Koin, defining a DI module, providing a repository or ViewModel, injecting a dependency, or wiring modules in the Application class. Trigger on phrases like &ldquo;set up Koin&rdquo;, &ldquo;add a Koin module&rdquo;, &ldquo;inject a dependency&rdquo;, &ldquo;DI module&rdquo;, &ldquo;koinViewModel&rdquo;, &ldquo;provide a ViewModel&rdquo;, &ldquo;startKoin&rdquo;, or &ldquo;single/viewModel/factory&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code[android-navigation]</title><link>https://xuniyishifanchen.eu.org/android-navigation/</link><pubDate>Wed, 15 Apr 2026 23:01:21 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-navigation/</guid><description><![CDATA[name: android-navigation
description: | Type-safe Compose Navigation for Android/KMP - route objects, feature nav graphs, cross-feature callbacks, and wiring in :app. Use this skill whenever setting up navigation, defining routes, adding a new screen to a nav graph, navigating between features, or wiring nav graphs in the app module. Trigger on phrases like &ldquo;set up navigation&rdquo;, &ldquo;add a route&rdquo;, &ldquo;navigate between screens&rdquo;, &ldquo;nav graph&rdquo;, &ldquo;NavController&rdquo;, &ldquo;type-safe nav&rdquo;, &ldquo;cross-feature navigation&rdquo;, or &ldquo;NavGraphBuilder&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code[android-presentation-mvi]</title><link>https://xuniyishifanchen.eu.org/android-presentation-mvi/</link><pubDate>Wed, 15 Apr 2026 23:01:20 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-presentation-mvi/</guid><description><![CDATA[name: android-presentation-mvi
description: | MVI presentation layer for Android/KMP - State, Action, Event, ViewModel, Root/Screen composable split, UI models, UiText error mapping, and process death with SavedStateHandle. Use this skill whenever creating or reviewing a ViewModel, defining screen state, actions, or events, structuring composables, mapping errors to UI strings, or handling process death. Trigger on phrases like &ldquo;add a ViewModel&rdquo;, &ldquo;create a screen&rdquo;, &ldquo;MVI&rdquo;, &ldquo;state&rdquo;, &ldquo;action&rdquo;, &ldquo;event&rdquo;, &ldquo;screen composable&rdquo;, &ldquo;UiText&rdquo;, &ldquo;SavedStateHandle&rdquo;, &ldquo;ObserveAsEvents&rdquo;, or &ldquo;UI model&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code[android-data-layer]</title><link>https://xuniyishifanchen.eu.org/android-data-layer/</link><pubDate>Wed, 15 Apr 2026 23:01:19 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-data-layer/</guid><description><![CDATA[name: android-data-layer
description: | Data layer patterns for Android/KMP - data sources, repositories, DTOs, mappers, Room entities, Ktor HttpClient, safe call helpers, token storage, and offline-first. Use this skill whenever writing or reviewing a data source or repository, creating DTOs or Room entities, writing mappers, setting up the Ktor HttpClient, handling network errors, or implementing token refresh. Trigger on phrases like &ldquo;create a repository&rdquo;, &ldquo;create a data source&rdquo;, &ldquo;add a DAO&rdquo;, &ldquo;Ktor client&rdquo;, &ldquo;write a mapper&rdquo;, &ldquo;DTO&rdquo;, &ldquo;Room entity&rdquo;, &ldquo;network call&rdquo;, &ldquo;token storage&rdquo;, or &ldquo;offline-first&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code[android-compose-ui]</title><link>https://xuniyishifanchen.eu.org/android-compose-ui/</link><pubDate>Wed, 15 Apr 2026 23:01:18 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-compose-ui/</guid><description><![CDATA[name: android-compose-ui
description: | Compose UI patterns for Android/KMP - stability, recomposition, side effects, lazy lists, animations, previews, accessibility, modifier extensions, and design system composables. Use this skill whenever writing or reviewing composables, optimizing recomposition, adding animations, creating previews, writing custom modifiers, structuring a design system, or making any Compose UI decision beyond the MVI/ViewModel layer. Trigger on phrases like &ldquo;composable&rdquo;, &ldquo;recomposition&rdquo;, &ldquo;LaunchedEffect&rdquo;, &ldquo;Modifier&rdquo;, &ldquo;LazyColumn&rdquo;, &ldquo;preview&rdquo;, &ldquo;animation&rdquo;, &ldquo;design system&rdquo;, &ldquo;stability&rdquo;, &ldquo;contentDescription&rdquo;, &ldquo;graphicsLayer&rdquo;, &ldquo;slot API&rdquo;, or &ldquo;Compose performance&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code[android-module-structure]</title><link>https://xuniyishifanchen.eu.org/android-module-structure/</link><pubDate>Wed, 15 Apr 2026 23:01:17 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/android-module-structure/</guid><description><![CDATA[name: android-module-structure
description: Module layout, dependency rules, and Gradle convention plugins for Android and Kotlin Multiplatform (KMP) projects. Use this skill whenever setting up a new Android/KMP project, deciding where a new module should live, asking &ldquo;how should I structure this&rdquo;, creating a new feature module, adding a core submodule, configuring Gradle convention plugins, working with version catalogs, or making any decision about project-level architecture. Trigger on phrases like &ldquo;set up the project&rdquo;, &ldquo;add a module&rdquo;, &ldquo;create a feature&rdquo;, &ldquo;how should I structure&rdquo;, &ldquo;project structure&rdquo;, &ldquo;convention plugin&rdquo;, &ldquo;build-logic&rdquo;, or &ldquo;where does X live&rdquo;.]]></description></item><item><title>Android / KMP Architecture Skills for Claude Code</title><link>https://xuniyishifanchen.eu.org/readme/</link><pubDate>Wed, 15 Apr 2026 23:01:16 +0800</pubDate><author>许你一世凡尘</author><guid>https://xuniyishifanchen.eu.org/readme/</guid><description>A collection of eight opinionated architecture skills that teach Claude Code how to write Android and Kotlin Multiplatform code the way you&amp;rsquo;d write it yourself. Once installed, Claude will automatically follow these patterns whenever you ask it to scaffold features, write tests, set up navigation, and more.
Prerequisites: Installing Claude Code If you don&amp;rsquo;t have Claude Code yet, install it first.
macOS / Linux Open a terminal and run:
1 curl -fsSL https://claude.</description></item></channel></rss>