Token导航 LogoToken导航

Agent Skill · 研究检索

jetpack-compose-audit(jetpack 撰写审核)

用于辅助安全审计、权限检查、凭据风险、认证流程和常见漏洞排查。它适合让 Agent 梳理敏感配置、检查依赖风险、分析鉴权逻辑或生成安全复核清单。使用时不能把工具输出直接当最终结论,涉及密钥、令牌、用户数据或生产系统时,应先确认最小权限、脱敏方式和操作边界。

jetpack-compose-audit 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 56,238。

总安装 461周安装 19GitHub Stars 235下载 150核验 2026-05-01

安装说明

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

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/hamen/compose_skill --skill jetpack-compose-audit

这个 Skill 是做什么的

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

用于辅助安全审计、权限检查和常见漏洞排查。适合梳理敏感配置、检查依赖风险或生成安全复核清单。不能把工具输出直接当最终结论,涉及密钥时应先确认最小权限。操作生产系统前需确认脱敏方式和操作边界。jetpack-compose-audit 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

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

上手步骤

4 步
  1. 1

    确认自己的宿主工具

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

  2. 2

    拿到安装命令

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

  3. 3

    安装后重启宿主

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

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

jetpack-compose-audit 怎么安装?

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

jetpack-compose-audit 支持哪些 AI 工具?

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

jetpack-compose-audit 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

jetpack-compose-audit 是免费的吗?

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

jetpack-compose-audit 用的人多吗?

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

jetpack-compose-audit 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

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

值得选的地方

  • 同时适配 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调用外部服务未明确有提醒
jetpack-compose-audit

jetpack 撰写审核 · 本页

461235需要联网未明确通过

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

SKILL.md 原文

Jetpack Compose Audit

This skill audits Android Jetpack Compose repositories with a strict, evidence-based report.

Skill version: 2.0.1 — released 2026-04-29. Compose track: Kotlin 2.0.20+ / Compose Compiler 1.5.4+ (Strong Skipping Mode default). See the README changelog for what changed.

It is intentionally focused on four categories:

  • Performance
  • State management
  • Side effects
  • Composable API quality

This skill does not score design or Material 3 compliance in v1. If the audit surfaces likely design-system problems, recommend a follow-up audit with the material-3 skill (reference implementation: https://github.com/hamen/material-3-skill).

Out Of Scope In v1

Owned and deliberate scope choices — call out the limitation in the report rather than silently producing thin coverage:

  • Material 3 compliance, theming, color/typography tokens — defer to the material-3 skill.
  • Accessibility scoring (semantics, content descriptions, touch-target sizing) — flag obvious gaps as a note, do not score.
  • UI test coverage and Compose test rule patterns — note presence/absence, do not score.
  • Compose Multiplatform-specific rules (expect/actual, target-specific code paths).
  • Wear OS / TV / Auto / Glance surfaces.
  • Build performance (incremental compilation, KSP/KAPT choice).

If the user explicitly asks for any of these, narrow the scope and state it in the report.

When To Use

Use this skill when the user asks to:

  • audit a Jetpack Compose repository
  • review Compose architecture or quality
  • rate a codebase with scores
  • inspect recomposition, state, or effects issues
  • identify Compose best-practice violations in an existing repo

Typical trigger phrases:

  • "audit this Compose repo"
  • "score this Jetpack Compose codebase"
  • "review state hoisting and side effects"
  • "check Compose performance"
  • "rate this repository"

Expected Output

Produce both:

  • a repository report file named COMPOSE-AUDIT-REPORT.md
  • a short chat summary with the overall score, category scores, worst issues, and the top fixes

Audit Principles

  • Be strict, but evidence-based.
  • Do not score from search hits alone. Read representative files before judging a category.
  • Cite concrete file paths in the report for every important deduction.
  • Cite an official documentation URL for every deduction. No "trust me" findings — the rubric maps every rule to a canonical source in references/canonical-sources.md. The report template requires a References: line per finding.
  • Prefer canonical Android guidance over folklore.
  • Treat performance as important, but not as the only lens.
  • Do not punish app code for failing public-library purity tests. Apply API-quality checks mainly to reusable internal components, design-system pieces, and shared UI building blocks.
  • Reserve 0-3 scores for repeated or systemic problems, not isolated mistakes.
  • Do not award 9-10 unless the repo is consistently strong across the category.

Process

1. Confirm Scope

Identify the target path:

  • If the user passed an explicit path ([repo path or module path]), use it.
  • If no path was passed, default to the current working directory.
  • If the path does not exist, ask the user to clarify.

Before mapping modules, confirm Compose is actually present (fast-fail):

  • grep for androidx.compose in any build.gradle* or libs.versions.toml
  • grep for setContent { or @Composable under src/

If neither shows up, stop and report that the target is out of scope. Do not run a full module map first.

If Compose is present *only* in samples/, demos/, or test sources (no production usage), narrow the scope to those directories, set confidence to Low, and state in the report that the audit is over sample code rather than production paths. Do not score production-quality categories against demo code.

2. Map The Repository

Before scoring, identify:

  • Gradle modules
  • Android app and feature modules
  • likely Compose source roots
  • shared UI/component packages
  • theme or design-system packages
  • state holder or ViewModel areas
  • test and preview locations
  • baseline-profile related modules or config if present

3. Build A Compose Surface Map

Look for:

  • @Composable functions
  • reusable UI components
  • screens and routes
  • ViewModel usage
  • remember, rememberSaveable, mutableStateOf
  • collectAsStateWithLifecycle, collectAsState
  • LaunchedEffect, DisposableEffect, SideEffect, rememberUpdatedState, produceState
  • LazyColumn, LazyRow, items, itemsIndexed
  • animation APIs: animate*AsState, Animatable, updateTransition, rememberInfiniteTransition, AnimatedVisibility, AnimatedContent, Crossfade

If the repo is large, audit by category or by module. If subagents are available, parallelize category scans by spawning Explore-type subagents (no write tools) and merge the findings.

4. Generate Compose Compiler Reports (Automatic)

Do not ask the user to edit build.gradle or run commands themselves. The skill runs the build with a bundled Gradle init script that injects reportsDestination / metricsDestination into every Compose module without modifying any file in the target repo. Before scoring, attempt this:

  1. Locate the init script shipped with the skill: scripts/compose-reports.init.gradle. The absolute path is the skill's install location — in most installs that's ~/.claude/skills/jetpack-compose-audit/scripts/compose-reports.init.gradle. If you cannot resolve the path, fall back to writing the script to <target>/.compose-audit-reports.init.gradle and delete it after the run.
  2. Check for a Gradle wrapper in the target: test -x <target>/gradlew. If missing, skip to the fallback in step 6.
  3. Pick a compile target. Prefer the cheapest task that still triggers Kotlin compilation for a Compose module:

- find the first application module via rg -l 'com\.android\.application' -g '*.gradle*' - try in order: :<app-module>:compileReleaseKotlinAndroid, :<app-module>:compileReleaseKotlin, assembleRelease, assembleDebug - If the project is Compose-only on a library (com.android.library), use that module instead.

  1. Run the build. Inform the user the build is starting (it may take several minutes). cd <target> &&./gradlew <task> \ --init-script <path-to>/compose-reports.init.gradle \ --no-daemon --quiet Use a 600-second timeout. If the task fails, try the next fallback task in step 3 once. Do not loop indefinitely.
  2. Collect the reports. find <target> -path '*/build/compose_audit/*' \ \(-name '*-classes.txt' -o -name '*-composables.txt' -o -name '*-composables.csv' -o -name '*-module.json' \) From these files, extract:

- unstable classes (lines starting with unstable class in *-classes.txt) used as composable parameters - non-skippable but restartable named composables (ignore zero-argument lambdas; focus on actual named functions in *-composables.txt or *-composables.csv where isLambda == "0") - module-wide skippability counts from *-module.json, AND compute the named-only skippability from *-composables.csv (by filtering out rows where isLambda == "1" and calculating sum(skippable) / sum(restartable)). Cite both in the Performance section, noting that zero-argument lambdas can artificially anchor the module-wide metric.

  1. Fallback if the build fails or Gradle is unavailable. Proceed with source-inferred stability findings, but:

- set Compiler diagnostics used: no in the report's Notes And Limits and explain the failure reason briefly (wrapper missing, compile error, timeout) - reduce overall confidence by one level - state each stability-related deduction as "inferred from source — not verified against compiler reports"

Stability deductions from step 5 are measured evidence and should be weighted normally. Fallback deductions from step 6 are inferred and must be flagged as such in the report.

5. Audit The Four Categories

Use the scoring rubric in references/scoring.md and the heuristics in references/search-playbook.md.

Performance

Focus on:

  • expensive work in composition
  • avoidable recomposition
  • lazy list keys
  • bad state-read timing
  • unstable or overly broad reads
  • backwards writes
  • animation phase correctness (per-frame values deferred to layout/draw via lambda modifiers, Animatable held in remember, rememberInfiniteTransition scoped so it stops offscreen)
  • obvious release-performance hygiene where visible
State Management

Focus on:

  • hoisting correctness
  • single source of truth
  • reusable stateless seams
  • correct use of remember vs rememberSaveable
  • lifecycle-aware observable collection
  • observable vs non-observable mutable state
Side Effects

Focus on:

  • side effects incorrectly done in composition
  • correct effect API choice
  • effect keys
  • stale lambda capture
  • cleanup correctness
  • lifecycle-aware effect behavior
  • animations driven from LaunchedEffect(target) for target-driven state changes (not from the composition body; rememberCoroutineScope().launch {animateTo(...)} is usually for event- or gesture-driven animation)
Composable API Quality

Focus on reusable internal components, not every leaf screen.

Check:

  • modifier presence and placement
  • parameter order
  • explicit over implicit configuration
  • meaningful defaults
  • avoiding MutableState<T> or State<T> parameters in reusable APIs where a better shape exists
  • reusable animated components exposing animationSpec: AnimationSpec<T> where callers may reasonably need timing control, and using meaningful label values on shared/tooling-visible animations
  • component purpose and layering

6. Verify Findings

Before deducting points:

  • read the file where the smell appears
  • make sure the pattern is real, not a false positive
  • check whether the repo already has a compensating pattern elsewhere
  • distinguish one-off mistakes from systemic patterns
  • for stability findings (skippable / restartable / unstable params), use the compiler reports generated in Step 4. Cite the specific report line (e.g. app/build/compose_audit/app_release-classes.txt:42) as evidence. Only fall back to source-inferred stability claims if Step 4 failed, and label them as such.

7. Score

Assign each category a 0-10 score and a status:

  • 0-3: fail
  • 4-6: needs work
  • 7-8: solid
  • 9-10: excellent

Use the weights in references/scoring.md to compute the overall score.

Measured ceilings are mandatory, not suggestive. When Step 4 produced compiler reports, the Performance rubric in references/scoring.md defines a ceiling. First determine whether Strong Skipping is active (Kotlin 2.0.20+ / Compose Compiler 1.5.4+, or an explicit opt-in flag) and pick the matching table — the SSM-off table is driven by skippable% + unstable-class count, the SSM-on table by skippable% + instance-recreation churn + equals() quality on unstable params. After arriving at a qualitative Performance score, you MUST apply the ceiling and lower the score if it exceeds the cap. Show the math in the report, and name which table was applied:

Performance ceiling check:
  Strong Skipping: OFF (Kotlin 1.9.x, no opt-in) → applying SSM-off table
  skippable% = 186/273 = 68.1% → falls in 50-70% band → cap at 4
  qualitative score: 7
  applied score: 4 (ceiling lowered from 7)

Under Strong Skipping, skippable% will typically sit near 100% and stop being the binding constraint; the cap is usually driven by observed churn (listOf(...) / mapOf(...) / fresh literals passed into composables) or by expensive / broken equals() on unstable params. Name those findings explicitly in the ceiling-check block so the reader can audit the pick.

Do not round skippable% up into a higher band. 68.1% is not ≥70%. If a qualitative score lands at or below the ceiling, no adjustment is needed — but the check itself must appear in the report so the reader can audit it.

If a category genuinely has too little auditable surface area, mark it N/A, explain why, and renormalize the remaining weights.

8. Write The Report

Use references/report-template.md.

The report must include:

  • overall score
  • category score table
  • top critical findings
  • category-by-category reasoning
  • evidence file paths
  • prioritized remediation list
  • optional follow-up note to run material-3 if design issues are suspected

Write the report to:

  • COMPOSE-AUDIT-REPORT.md inside the audited target (the path the user passed), not the current working directory.

If COMPOSE-AUDIT-REPORT.md already exists at that path, do not overwrite it silently. Either confirm overwrite with the user, or write to COMPOSE-AUDIT-REPORT-<YYYY-MM-DD>.md alongside it.

9. Return A Short Summary

In chat, produce a summary that mirrors the report's Prioritized Fixes section — not a generic recap. The developer should be able to act on the summary alone without opening the report file.

Include:

  • overall score (and the delta vs. any prior COMPOSE-AUDIT-REPORT*.md at the same path, if present)
  • one-line judgment for each category, with the applied ceiling if any (e.g. "Performance 8/10 — capped by the SSM-on table: recreated FeedItemUiModel params")
  • compiler-report highlights when Step 4 succeeded: Strong Skipping on/off (or mixed across modules), which ceiling table was applied, module-wide skippable%, named-only skippable%, which metric actually bound the cap, count of unstable shared types, and any module that failed to build
  • top three actionable fixes, each with:

- the concrete change ("add key = {it.id} to items(...) in feed/FeedList.kt:42") - file path(s) and line numbers — the same ones listed in the report's Prioritized Fixes - one official doc URL from references/canonical-sources.md - expected impact that matches the active ceiling table: on SSM-off, frame it in terms of named-only skippable% / unstable-param reductions; on SSM-on, frame it in terms of removing instance-recreation churn, fixing expensive / broken equals(), or clearing the binding cap

  • whether a material-3 audit is worth running next

The top-three fixes in the chat summary MUST be the same items as the report's Prioritized Fixes list (same file paths, same doc links). Do not add generic advice in chat that isn't in the written report.

Evidence Rules

  • Prefer multiple examples over one dramatic example.
  • Use positive evidence too, not just failures.
  • Do not infer runtime problems you cannot justify from the code.
  • When a rule is based on official guidance but app-level tradeoffs may justify deviation, call it out as a tradeoff instead of pretending it is always wrong.

Large Repo Strategy

For medium or large repositories:

  1. Map modules first.
  2. Pick representative files per module.
  3. Parallelize category scans when possible.
  4. Merge repeated findings into systemic issues instead of listing the same smell twenty times.

What To Avoid

  • Do not produce a generic checklist with no repository evidence.
  • Do not turn the report into a public-library API lecture if the repo is an app.
  • Do not inflate the performance score just because the app uses Compose.
  • Do not over-penalize isolated experiments or sample files unless they are part of production paths.
  • Do not score design in v1.
  • Do not flag LaunchedEffect(Unit) or LaunchedEffect(true) on its own — the "run once" pattern is idiomatic. Only flag it when the body captures a value that may change without rememberUpdatedState.
  • Do not deduct on Compose Multiplatform code paths for Android-only APIs (collectAsStateWithLifecycle, lifecycle-runtime-compose). Note the platform constraint as a tradeoff instead.
  • Do not double-count the same root cause across categories. A stability problem typically surfaces in both Performance and State — pick the dominant category and cross-reference.

References

  • references/scoring.md — per-rule rubric with inline citations
  • references/search-playbook.md — search patterns and red-flag heuristics
  • references/report-template.md — required structure for COMPOSE-AUDIT-REPORT.md
  • references/canonical-sources.md — the official URLs every deduction must cite
  • references/diagnostics.md — copy-pasteable Gradle/code snippets for Compose Compiler reports, stability config, baseline profiles, and R8 checks
  • scripts/compose-reports.init.gradle — Gradle init script the skill injects via --init-script in Step 4 to generate compiler reports automatically

平台分布

Codex

36.72%
按下载量换算55

Claude

31.68%
按下载量换算48

Cursor

16.86%
按下载量换算25

Gemini CLI

8.12%
按下载量换算12

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

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

继续浏览同类 Skills