Token导航 LogoToken导航TokenDH.com
研究检索external-servicegithub未标认证来源可访问许可证需确认审计提醒

compose-skill作曲技巧

Agent Skill

compose-skill 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

416

周安装

17

GitHub Stars

175

下载量

133
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:compose-skill(作曲技巧)
来源仓库:https://github.com/meet-miyani/compose-skill
仓库路径:skills/compose-skill
安装命令:
npx skills add https://github.com/meet-miyani/compose-skill --skill compose-skill
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/meet-miyani/compose-skill --skill compose-skill

简介

compose-skill 覆盖 Compose 应用全生命周期开发,包括架构、状态管理、UI 和网络等。

  • 适用于 Jetpack Compose 和 Compose Multiplatform 项目开发场景。
  • 提供从构建配置到分发部署的完整技术指导。
  • 注意并非所有 AndroidX 库都支持 multiplatform,需确认 artifact 可用性。
  • 建议结合具体平台需求选择合适的数据存储和网络库。

SKILL.md

Jetpack Compose & Compose Multiplatform

This skill covers the full Compose app development lifecycle — from architecture and state management through UI, networking, persistence, performance, accessibility, cross-platform sharing, build configuration, and distribution. Jetpack Compose and Compose Multiplatform share the same core APIs and mental model. Not all Jetpack libraries work in commonMain — many remain Android-only. A subset of AndroidX libraries now publish multiplatform artifacts (e.g., lifecycle-viewmodel, lifecycle-runtime-compose, datastore-preferences), but availability and API surface vary by version. Before adding any Jetpack/AndroidX dependency to commonMain, verify the artifact is published for all required targets by checking Maven Central or the library's official documentation. CMP uses expect/actual or interfaces for platform-specific code. MVI (Model-View-Intent) is the recommended architecture, but the skill adapts to existing project conventions.

Existing Project Policy

Do not force migration. If a project already follows MVI with its own conventions (different base class, different naming, different file layout), respect that. Adapt to the project's existing patterns. The architecture pattern — unidirectional data flow with Event, State, and Effect — is what matters, not a specific base class or framework. Only suggest structural changes when the user asks for them or when the existing code has clear architectural violations (business logic in composables, scattered state mutations, etc.).

Workflow

When helping with Jetpack Compose or Compose Multiplatform code, follow this process:

  1. Read the existing code first for context — check conventions, base classes, and layout. For small UI or logic asks, restrict your reading to the immediately relevant files to save time. Do not map out the entire project architecture unless a structural refactor is requested.
  2. Identify the concern — is this architecture, state modeling, performance, navigation, DI, animation, cross-platform, or testing?
  3. Apply the core rules below — the decision heuristics and defaults in this file cover most cases.
  4. Consult the right reference — load the relevant file from references/ only when deeper guidance is needed. Use the Quick Routing in the Detailed References section to pick the right file.
  5. Verify dependencies before recommending — before adding or upgrading any dependency, verify coordinates, target support, and API shape via a documentation MCP tool or official docs (see Dependency Verification Rule).
  6. Flag anti-patterns contextually — if the user's code violates best practices, call it out for production code. For quick prototypes or minor UI tweaks, prioritize answering their specific question over lecturing them on strict rules.
  7. Write the minimal correct solution — do not over-engineer. Prefer feature-specific code over generic frameworks.

Dependency Verification Rule

Before recommending any new dependency or version upgrade, verify:

  1. Coordinates — Confirm the exact Maven coordinates (group:artifact:version) exist and are current.
  2. Target support — Confirm the artifact supports the project's targets (Android, iOS, Desktop, commonMain). Do not assume a Jetpack library works in commonMain unless verified.
  3. API shape — Confirm the API you plan to use actually exists in that version. Function signatures, parameter names, and return types change between major versions.

How to verify:

  • Documentation MCP tool (preferred) — If a documentation MCP server is available (e.g., Context7), verify exact tool names and schemas first, then use it to fetch current official documentation for the library.
  • Official docs — Search the library's official documentation or release notes.
  • Maven Central / Google Maven — Check artifact availability and supported platforms.

If verification is not possible (no documentation tool, no network access, docs unavailable), provide the standard or latest known dependency snippet anyway. Add a brief comment (e.g., // Verify latest version) so the user isn't blocked.

Fetching Up-to-Date Documentation

When adding a new dependency, upgrading major versions, or verifying latest API patterns, use a documentation MCP tool (e.g., Context7) if available. Before invoking, verify the tool's exact name and parameter schema — tool names vary across environments.

  1. Resolve library ID — if the tool requires a resolution step, call it first.
  2. Query docs — call with the resolved ID and a specific question.

Alternative: Users can add use context7 (or equivalent) to their prompt. Bundled references remain the primary source for architectural patterns and MVI guidance; use documentation tools for API-specific and version-specific queries.

Core Architecture: MVI or MVVM

Both MVI and MVVM use unidirectional data flow: UI renders state → user acts → ViewModel updates state → UI re-renders. The difference is how UI actions reach the ViewModel.

  • MVI: sealed interface Event + single onEvent() entry point
  • MVVM: Named public functions (onTitleChanged(), save())

Both patterns use:

  • State — immutable data class that fully describes the screen, owned via StateFlow
  • Effect — one-shot commands (navigate, snackbar, share) delivered via Channel

Default recommendation: Preserve the project's existing pattern when it is coherent. For new projects, choose based on team preference and screen complexity. See Architecture & State Management for the decision guide, then mvi.md or mvvm.md for implementation details.

UI Rendering Boundary

These boundaries apply to both MVI and MVVM:

  • Route composable: obtains ViewModel, collects state via collectAsStateWithLifecycle(), collects effects via CollectEffect (see compose-essentials.md), binds navigation/snackbar/platform APIs
  • Screen composable: stateless renderer — receives state and callbacks (MVI: onEvent, MVVM: individual callbacks), renders the screen, adapts callbacks for leaf composables
  • Leaf composables: render sub-state, emit specific callbacks, keep only tiny visual-local state (focus, scroll, animation)

Decision Heuristics

  • Composable functions render state and emit events, never decide business rules
  • If a value can be derived from state, do not store it redundantly unless async/persistence/performance justifies it
  • Event handling in the ViewModel owns state transitions; composables do not mutate state
  • UI-local state is acceptable only for ephemeral visual concerns: focus, scroll, animation progress, expansion toggles
  • Do not push animation-only flags into global screen state unless business logic depends on them
  • Pass the narrowest possible state to leaf composables
  • MVI: implement onEvent() as the single entry point; MVVM: implement named functions for user actions
  • Do not introduce a use case for every repository call
  • Cross-platform sharing prioritizes business logic and presentation state before platform behavior
  • Least recomposition is achieved by state shape and read boundaries first, Compose APIs second
  • When a project has an existing MVI base class or pattern, use it — don't introduce a competing abstraction

State Modeling

For calculator/form screens, split state into four buckets:

  1. Editable input — raw text and choice values as the user edits them
  2. Derived display/business — parsed, validated, calculated values
  3. Persisted domain snapshot — saved entity for dirty tracking or reset
  4. Transient UI-only — purely visual, not business-significant
ConcernWhereExample
Raw field textstate fields"12", "12.", ""
Parsed/derivedstate computed props or fieldsval hasRequiredFields: Boolean
Validationstate.validationErrors or similarmapOf("name" to "Required")
Loading/refreshstate flagsisSaving = true
One-off UI commandsEffect via Channelsnackbar, navigate, share
Scroll/focus/animationlocal Compose stateLazyListState, focus requester

Recommended Defaults

Apply these unless the project already follows a different coherent pattern.

ConcernDefault
ViewModelOne ViewModel per screen (commonMain for CMP, feature package for Android-only). MVI: onEvent(Event) entry point; MVVM: named functions
State source of truthStateFlow<FeatureState> owned by the ViewModel
Event handlingMVI: onEvent(event) with when expression; MVVM: named functions. Both map user actions to state updates, effect emissions, and async launches
Side effectsEffect sent via Channel<Effect>(Channel.BUFFERED) for UI-consumed one-shots (navigate, snackbar). Async work (network, persistence) launched in viewModelScope
Async loadingKeep previous content, flip loading flag, cancel outdated jobs, update state on completion
Dumb UI contractRender props, emit explicit callbacks, keep only ephemeral visual state local
Resource accessSemantic keys/enums in state; resolve strings/icons close to UI. CMP uses Res.string / Res.drawable (not Android R). See Resources
Platform separationCMP: share in commonMain, expect/actual (verify Kotlin 1.9 vs 2.0+ via build.gradle.kts or ask user) or interfaces, Koin DI by default. Android-only: standard package, Hilt or Koin DI
NavigationViewModel emits semantic navigation effect; route/navigation layer executes it
Persistence (settings)DataStore Preferences in commonMain for key-value settings; Typed DataStore (JSON) for structured settings objects; Room for relational/queried data. See DataStore
TestingViewModel event→state→effect tests via Turbine in commonTest; validators/calculators tested as pure functions; platform bindings tested per target

Do / Don't Quick Reference

Do

  • Model raw editable text separately from parsed values
  • Keep state immutable and equality-friendly
  • Reuse unchanged nested objects when possible
  • Emit semantic effects instead of making platform calls from event handling
  • Preserve old content during refresh
  • Map domain data to UI state close to the presentation boundary
  • Use feature-specific ViewModel names
  • Key list items by stable domain ID
  • Import all types and functions at the top of the file; use import... as... aliases to resolve name clashes
  • Guard no-op state emissions (don't update state if nothing changed)
  • Respect the project's existing MVI conventions

Don't

  • Parse numbers in composable bodies
  • Run network requests from composables
  • Store MutableState, controllers, lambdas, or platform objects in screen state
  • Encode snackbar/navigation as "consume once" booleans in state — use effects
  • Keep every minor visual toggle in the ViewModel state
  • Pass entire state to every child composable
  • Wrap every repository call in a use case class
  • Wipe the screen with a full-screen spinner during refresh
  • Force-migrate a working codebase to a different architecture or base class
  • Use fully qualified package paths inline (e.g., com.example.pkg.SomeClass.method()) — always import at file top

Detailed References

Do not load reference files for basic Compose usage. If you already know how to build the required UI or logic, write the code immediately. Load exactly one reference file only when the task involves advanced concepts (e.g., Paging 3, Nav 3 setup). Pick the right file below — do not load files speculatively.

Quick Routing

  • Recomposition too frequent, stability, or Compose Compiler Metricsperformance.md
  • Channel vs SharedFlow, Flow operators, structured concurrency, or exception handlingcoroutines-flow.md
  • Backpressure, callbackFlow, Mutex/Semaphore, or Turbine testingcoroutines-flow-advanced.md
  • Nav 3 routes, tabs, scenes, deep links, or back stack patternsnavigation-3.md
  • Nav 2 NavHost, tabs, deep links, nested graphs, or animationsnavigation-2.md
  • Wiring Hilt or Koin with navigationnavigation-3-di.md or navigation-2-di.md based on version
  • Migrating from Nav 2 to Nav 3navigation-migration.md
  • Paging 3 setup, PagingSource, filters, LoadState, or transformationspaging.md
  • Offline-first paging with Room and RemoteMediatorpaging-offline.md
  • Paging MVI integration, paging tests, or paging anti-patternspaging-mvi-testing.md
  • Ktor client setup, plugins, DTOs, API service, or repository patternnetworking-ktor.md
  • Auth (bearer), WebSockets, or SSEnetworking-ktor-auth.md
  • Network layer architecture, plugin composition, or error handling strategynetworking-ktor-architecture.md
  • Choosing Hilt vs Koindependency-injection.md first, then the chosen framework's file
  • Accessibility audit, semantics, touch targets, or WCAG contrastaccessibility.md
  • **Animation API selection (animate*AsState, Animatable, transitions, AnimatedVisibility)** → animations.md
  • Shared element transitions, gesture-driven animations, Canvas, or graphicsLayeranimations-advanced.md
  • Code review or anti-pattern detectionanti-patterns.md first, then domain-specific files as needed
  • Exposing Kotlin to Swift, SKIE, or Flow→AsyncSequenceios-swift-interop.md
  • ViewModel pipeline, state modeling, domain layer, or inter-feature communicationarchitecture.md
  • MVI pipeline, Event/State/Effect, onEvent pattern, or effect deliverymvi.md
  • MVVM pipeline, ViewModel named functions, or direct-callback UI wiringmvvm.md
  • File organization, naming conventions, or disciplined screen architectureclean-code.md
  • Three phases, state primitives, side effects, or modifierscompose-essentials.md
  • M3 theme, dynamic color, M3 components, or adaptive layoutsmaterial-design.md
  • AsyncImage, image cache, SVG, or Coil 3image-loading.md
  • LazyColumn, LazyRow, keys, grids, pager, or scroll statelists-grids.md
  • Nav 2 vs Nav 3 decision or MVI navigation rulesnavigation.md
  • Loading states, skeleton/shimmer, or inline validation UXui-ux.md
  • Turbine, ViewModel tests, Macrobenchmark, or lean test matrixtesting.md
  • DataStore Preferences, Typed DataStore, or KMP DataStoredatastore.md
  • Room entities, DAOs, migrations, relationships, or Room MVI integrationroom-database.md
  • Ktor @Resource routes or type-safe API definitionsnetworking-ktor.md § Type-Safe Resources
  • MockEngine, network testing, or Koin/Hilt network DInetworking-ktor-testing.md
  • Koin CMP setup, Nav 3 Koin integration, or scoped moduleskoin.md
  • Hilt Android setup, @HiltViewModel, scopes, or Hilt testinghilt.md
  • commonMain sharing, expect/actual, or platform bridgescross-platform.md
  • CMP Res class, qualifiers, localization, or Android resource interopresources.md
  • AGP 9+, version catalog, convention plugins, or composite buildsgradle-build.md
  • GitHub Actions CI/CD, desktop packaging, signing, or notarizationci-cd-distribution.md

Validation

Run ./scripts/validate.sh to scan the skill package against the agentskills.io spec. It checks token budgets, broken links, file structure, and content quality. Fix any errors before committing.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.77%
按下载量换算49

Claude

30.7%
按下载量换算41

Cursor

17.13%
按下载量换算23

Gemini CLI

9.73%
按下载量换算13

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

通过

权限和风险

external-service

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills