Token导航 LogoToken导航

Agent Skill · 研究检索

compose-skill(作曲技巧)

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

compose-skill 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为调用外部服务;许可证信息还不明确,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 58,406。

总安装 416周安装 17GitHub Stars 175下载 133核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 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

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

compose-skill 覆盖 Compose 应用全生命周期开发,包括架构、状态管理、UI 和网络等。适用于 Jetpack Compose 和 Compose Multiplatform 项目开发场景。提供从构建配置到分发部署的完整技术指导。

注意并非所有 AndroidX 库都支持 multiplatform,需确认 artifact 可用性。建议结合具体平台需求选择合适的数据存储和网络库。

来源仓库内路径:skills/compose-skill

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/meet-miyani/compose-skill --skill compose-skil…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要调用外部服务,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

compose-skill 怎么安装?

在终端执行 npx skills add https://github.com/meet-miyani/compose-skill --skill compose-skill。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

compose-skill 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

compose-skill 需要什么权限?

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

compose-skill 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

compose-skill 用的人多吗?

公开数据是累计安装 416 次,近一周安装 17 次,下载 133 次,GitHub 175 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

compose-skill 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
compose-skill

作曲技巧 · 本页

416175调用外部服务未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

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 Metrics → performance.md
  • Channel vs SharedFlow, Flow operators, structured concurrency, or exception handling → coroutines-flow.md
  • Backpressure, callbackFlow, Mutex/Semaphore, or Turbine testing → coroutines-flow-advanced.md
  • Nav 3 routes, tabs, scenes, deep links, or back stack patterns → navigation-3.md
  • Nav 2 NavHost, tabs, deep links, nested graphs, or animations → navigation-2.md
  • Wiring Hilt or Koin with navigation → navigation-3-di.md or navigation-2-di.md based on version
  • Migrating from Nav 2 to Nav 3 → navigation-migration.md
  • Paging 3 setup, PagingSource, filters, LoadState, or transformations → paging.md
  • Offline-first paging with Room and RemoteMediator → paging-offline.md
  • Paging MVI integration, paging tests, or paging anti-patterns → paging-mvi-testing.md
  • Ktor client setup, plugins, DTOs, API service, or repository pattern → networking-ktor.md
  • Auth (bearer), WebSockets, or SSE → networking-ktor-auth.md
  • Network layer architecture, plugin composition, or error handling strategy → networking-ktor-architecture.md
  • Choosing Hilt vs Koin → dependency-injection.md first, then the chosen framework's file
  • Accessibility audit, semantics, touch targets, or WCAG contrast → accessibility.md
  • **Animation API selection (animate*AsState, Animatable, transitions, AnimatedVisibility)** → animations.md
  • Shared element transitions, gesture-driven animations, Canvas, or graphicsLayer → animations-advanced.md
  • Code review or anti-pattern detection → anti-patterns.md first, then domain-specific files as needed
  • Exposing Kotlin to Swift, SKIE, or Flow→AsyncSequence → ios-swift-interop.md
  • ViewModel pipeline, state modeling, domain layer, or inter-feature communication → architecture.md
  • MVI pipeline, Event/State/Effect, onEvent pattern, or effect delivery → mvi.md
  • MVVM pipeline, ViewModel named functions, or direct-callback UI wiring → mvvm.md
  • File organization, naming conventions, or disciplined screen architecture → clean-code.md
  • Three phases, state primitives, side effects, or modifiers → compose-essentials.md
  • M3 theme, dynamic color, M3 components, or adaptive layouts → material-design.md
  • AsyncImage, image cache, SVG, or Coil 3 → image-loading.md
  • LazyColumn, LazyRow, keys, grids, pager, or scroll state → lists-grids.md
  • Nav 2 vs Nav 3 decision or MVI navigation rules → navigation.md
  • Loading states, skeleton/shimmer, or inline validation UX → ui-ux.md
  • Turbine, ViewModel tests, Macrobenchmark, or lean test matrix → testing.md
  • DataStore Preferences, Typed DataStore, or KMP DataStore → datastore.md
  • Room entities, DAOs, migrations, relationships, or Room MVI integration → room-database.md
  • Ktor @Resource routes or type-safe API definitions → networking-ktor.md § Type-Safe Resources
  • MockEngine, network testing, or Koin/Hilt network DI → networking-ktor-testing.md
  • Koin CMP setup, Nav 3 Koin integration, or scoped modules → koin.md
  • Hilt Android setup, @HiltViewModel, scopes, or Hilt testing → hilt.md
  • commonMain sharing, expect/actual, or platform bridges → cross-platform.md
  • CMP Res class, qualifiers, localization, or Android resource interop → resources.md
  • AGP 9+, version catalog, convention plugins, or composite builds → gradle-build.md
  • GitHub Actions CI/CD, desktop packaging, signing, or notarization → ci-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.

平台分布

Codex

36.77%
按下载量换算49

Claude

30.7%
按下载量换算41

Cursor

17.13%
按下载量换算23

Gemini CLI

9.73%
按下载量换算13

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

通过

权限和风险

调用外部服务

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

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills