SuperAPI AI 工具集

Skill 广场

找到适合任务的 Agent Skill,阅读介绍并复制安装命令。

更新于 11-15 00:13

编程与开发

41,119 个结果

app-backup-to-zip-mediastore

这是一个面向 Android 平台的技能,讲解如何把应用数据打包成一个 zip 文件,直接写入用户自己的 Downloads 文件夹,且无需申请存储权限,同时只保留最新的 N 个归档。核心流程分三步:先对数据库的预写日志(WAL)执行 checkpoint,再复制数据库文件;在应用自己的缓存目录中组装 zip;最后把临时文件流式写入系统媒体库(MediaStore)中插入的一行记录,并执行清理。资料还详细说明了 checkpoint 与复制顺序、媒体库插入而非按路径写入、RELATIVE_PATH 的版本分支、保留策略的排序方式、缓存组装再复制、以及禁用功能应返回成功等要点,并给出验证方法。

编程与开发9 次安装

audio-fade-separate-gain-line

该技能介绍在音频播放中实现程序化淡出(如睡眠定时器、闹钟渐强、闪避)的正确做法:为淡出单独维护一条增益线,而不是直接改写用户音量。核心规则是淡出拥有自己的增益因子(0f..1f),在音频路径上再与用户音量相乘。资料列举了多种常见错误:直接渐变用户音量会导致滑块可见地爬向零、进程中断后持久化音量接近零且无法恢复;渐变到零后立即暂停会截断仍在缓冲中的音频;在 pause() 之后从调用方恢复增益会因异步挂起导致顺序错乱;恢复逻辑未放在 finally 中、遗漏 pause() 的提前返回分支、定时器 finally 重复恢复、在配置时捕获增益而非每缓冲区读取、在全增益时让处理器变为非活动、线性渐变与未限制的步数等。资料还给出 Android(Media3)AudioProcessor 与桌面引擎的实现要点,以及验证清单。

编程与开发9 次安装

audio-focus-multiplayer

该技能针对 Android 多播放器实例场景下的音频焦点管理问题。当应用同时存在多个播放器实例(如双播放器交叉淡入淡出、预缓存播放器)时,Android 默认的每播放器焦点处理会失效:释放旧实例会连带放弃整个应用的焦点,而新实例因关闭了焦点处理不会重新申请,导致应用在无焦点状态下播放,被系统或其它应用随时打断。解决方案是由负责切换的组件统一持有一次焦点请求,所有播放器实例均设置 handleAudioFocus = false,并通过幂等的 requestAudioFocusInternal 在每条启动播放的路径上申请焦点。技能还列出了若干陷阱:仅在播放按钮申请焦点、每次释放播放器都放弃焦点、在淡入淡出同一增益线上做 ducking、将 duck 恢复到硬编码 1.0f、混淆三种焦点丢失的处理方式、在程序化淡入淡出期间 ducking、假设焦点与媒体会话一致等,并给出了验证方法。

编程与开发9 次安装

bitmask-event-wrapper

bitmask-event-wrapper 是 Kotlin 中用于包装底层整数标志位集合的单字段 value class 模式。它通过 contains、containsAny、containsAll 等方法,让调用点以语义化方式判断事件位,避免手写位运算时遗漏 != 0 或误用相等比较。该模式强调保持 value class 而非 data class 以避免热回调中的对象分配,并提醒注意位掩码与序数枚举混用、移位取模、有符号整数最高位、vararg 分配等陷阱。

编程与开发9 次安装

borrowed-wire-protocol-discipline

该技能针对“实现他人定义的协议”这一场景,给出了一套纪律性规则:不得重命名、不得重排字段编号,schema 未声明的常量必须从对端实现源码中读取并注明出处。它强调把 schema 作为唯一事实来源,在代码中写明“此处任何内容不得改进”,因为重命名字段或重排编号会导致客户端连接成功却静默无法加入。技能还覆盖若干陷阱:未识别消息类型应解码为 null 而非抛异常、无对应功能的消息类型仍须正常解析、协商能力只能收窄不能放宽、区分“关于本条消息”与“关于本连接”的错误、不把用户无法处理的错误暴露给用户、用测试固定字段编号与类型字符串、从首次提交起把借用类型隔离在模块边界内。最后给出三条 grep 命令用于验证常量集中度、内联 wire 字符串和协商分支,并要求通读 schema 文件确认每个常量都有出处注释。

编程与开发9 次安装

bundled-native-soname-conflict

该技能记录了一类桌面应用打包原生库时的隐蔽故障:随应用捆绑的通用基础库(如工具/集合库、压缩库、加密库)会抢占进程内共享对象名(Linux 上即 soname),导致宿主系统后续加载同族系统库时因缺少符号而失败,进而使平台 API(如 java.awt.Desktop)被标记为不支持。技能给出两类修复:在打包脚本中排除系统基础库,以及在重建期间先预热探测平台 API 的临时规避方案;并强调日志记录原生库解析路径、按库族而非报错名称排查、为脆弱能力提供回退链与可见的最终兜底,以及区分“脚本已排除”与“实际发布物已排除”。

编程与开发9 次安装

cache-then-network

cache-then-network 是 maxrave-dev/kotlin-footguns 技能集合中的一个 Kotlin 协程 Flow 实现模式,用于在单一仓库数据流中先立即返回缓存副本、再返回网络新鲜数据,并且仅在两者都未能提供内容时才发出错误。该技能重点说明缓存值先于请求发出、新鲜值先于持久化发出、仅成功时写缓存这三项顺序决策,并列举了成功后再发错误、解码失败崩溃、双发射导致的重复副作用等陷阱,以及针对冷/热缓存与网络可达/不可达组合的验证方法。

编程与开发9 次安装

chrome-drawn-outside-the-theme-scope

该资料介绍 Kotlin/Compose 桌面应用中一个隐蔽的陷阱:应用自绘的窗口装饰(标题栏、启动画面、崩溃对话框等)作为主题的兄弟节点而非子节点被组合,导致 MaterialTheme.colorScheme 回退到框架内置的浅色方案,标题栏颜色与用户选择无关。资料给出修复思路:把主题模式到布尔值的判断抽成唯一的 @Composable 函数,由主题和装饰两处共同调用,装饰通过参数接收最终颜色而非读取 scheme;并强调该判断必须在组合期执行、不能缓存,否则系统主题切换后会滞后一次启动。还涉及固定约定颜色、窗口尺寸计算、可禁用装饰、第二窗口、非 Compose 装饰、偏好读取与冷启动白闪等问题,并附三条 grep 验证命令。

编程与开发9 次安装

clean-arch-kmp-readiness

该技能用于为 Kotlin Multiplatform 应用规划可长期维持的分层架构。它定义了六类模块(:common、:domain、:data、:<integration>、:<engine>-<platform>、:app)及其依赖方向,强调 :domain 持有接口与模型、:data 中的仓库实现声明为 internal、每个外部服务独立成模块、平台能力以端口接口形式定义在 :domain。技能还提供 grep 验证命令,用于检查仓库实现是否泄漏、服务模块是否横向依赖、以及 :app 的 api/implementation 拆分是否正确。

编程与开发9 次安装

combine-two-flags-to-gate

该技能介绍如何用 Kotlin 协程的 combine、distinctUntilChanged 与 collectLatest 将多个独立条件流合并为单一开关(gate),用于控制网络连接、后台发送器、轮询循环等昂贵子系统。内容涵盖派生布尔值的写法、无副作用的派生值示例,以及 combine 不发射、缺少去重、collectLatest 取消语义、幂等性、保留值清理、分支内重读源值等陷阱,并给出验证方法。

编程与开发9 次安装

combining-chars-break-char-literals

本技能揭示 Kotlin 中一个易被忽视的陷阱:编辑器里看起来是一个字形的字符,可能由基字母加组合标记两个 UTF-16 码元组成,因此无法作为 'x' 字符字面量编译,会报“Too many characters in a character literal”。技能以天城文、古木基文等带变音符号的文字为例,说明为何以 Char 为键的映射无法容纳组合序列,并给出把标记作为独立 Char 常量、在字符串上按索引前瞻的解决思路。

编程与开发9 次安装

compose-desktop-runtime-hardening

该技能是一份针对 Compose Desktop 应用启动入口的运行时加固指南,以有序步骤的形式规定:在创建第一个窗口之前,必须按顺序执行崩溃处理器安装、Java AWT Desktop 支持探测、渲染器系统属性设置、虚拟机环境检测与降级、以及 Linux 窗口类名反射设置等操作。内容强调启动顺序的承载性、失败静默性,并提供了验证方法,适用于 Kotlin Compose Desktop 桌面应用开发与调试。

编程与开发9 次安装

compose-multiplatform-viewmodel-base

这是 Compose Multiplatform 项目中共享 ViewModel 基类的技能页面。该基类提供容器感知能力,让子类无需通过构造函数传递即可获取额外依赖,并统一封装加载/错误状态、日志标签等少量必要成员。页面还详细列出了使用该基类时容易踩到的陷阱,包括构造函数路径上的阻塞资源查找、在组合(composition)中调用阻塞 getter、在 onCleared 中取消 viewModelScope 的冗余操作、基类 init 中调用方法、属性初始化顺序、容器感知导致的契约松动,以及基类中放置便捷方法的风险,并给出了对应的验证与排查方式。

编程与开发9 次安装

continuation-token-pagination-contract

该技能定义了一种基于 continuation token 的分页契约:接口以 Flow<Resource<Pair<List<T>, String?>>> 返回一页数据与下一页令牌,null 令牌表示结束,调用方只保存令牌而不保存页码。它强调失败必须由 Resource 信封表达,不能与列表结束混淆;错误分支应保留令牌以便重试,成功到达末页时才清空令牌;预取循环需同时设置页数预算与累计条目目标两个停止条件,并保证失败路径推进循环变量;同时要求统一终止操作符语义、在错误分支释放 in-flight 标志。验证方式包括强制第二页失败、记录并断言令牌变化、末页后断言令牌为 null 且不再发起请求。

编程与开发9 次安装

control-range-must-cover-stored-values

该技能针对 Kotlin 界面开发中滑块(Slider)控件 valueRange 设置过窄的问题,强调控件范围应依据实际输入值的真实分布来确定,而非参照相邻控件的范围。内容指出 valueRange 是对输入值的断言,导入、恢复、迁移及旧版本代码都可能传入超出范围的值;范围过窄不会抛异常,而是将滑块拇指钳制在边界,读数却仍显示真实值,用户按压拇指时会以边界值覆盖原值,造成无提示的数据丢失。技能建议先测量真实分布再设定边界,并将测量依据写入常量注释,允许非对称范围,必要时在导入阶段显式钳制并告知用户,同时提供用 grep 和 sort 验证范围与真实极值的命令,以及针对越界值的测试方法。

编程与开发9 次安装

crossfade-dual-player

crossfade-dual-player 是一个关于双播放器交叉淡入淡出(crossfade)实现的技术技能,来源于 maxrave-dev/kotlin-footguns。它说明交叉淡入淡出无法在单个播放器实例上完成,因为两个媒体项必须同时发声,因此需要为每个媒体项各建一个播放器实例:正在播放的为 currentPlayer,正在淡入的为 secondaryPlayer,即将播放的项可作为预缓存实例存在。该技能涵盖等功率(余弦/正弦)增益曲线、由单个可取消任务驱动、统一的提交(commit)流程、传输命令(暂停、跳转、跳过)在淡入淡出中途到达时的处理陷阱、播放设置需下发到所有活动句柄、取消作为第二条完成路径的清理、触发阈值应按墙钟时间而非媒体时间计算,以及验证方法。适用于 Android(Media3/ExoPlayer)和桌面引擎。

编程与开发9 次安装

crossfade-exclusion-heuristics

Crossfade 排除启发式是 Kotlin Footguns 项目中的一项技能说明,用于判断何时不应执行交叉淡化。它列出三个排除条件:当前或下一媒体项是视频、媒体项时长不足以进行淡化、连续两项属于同一专辑。每个条件都以小型判定函数的形式在触发点被调用,包括视频检查的对称性、基于淡化时长的动态最短长度阈值、专辑成员关系的集合判定,以及对应的验证方法。

编程与开发9 次安装

curl-logger-ktor-plugin

curl-logger-ktor-plugin 是一个 Ktor 客户端插件,用于把每个发出的请求记录成一条可直接粘贴运行的 curl 命令。它采用 POSIX 单引号转义,使包含引号、美元符号或换行的请求体在粘贴后仍保持原样。插件在请求发送时拦截并打印等价 curl,无需代理或抓包工具,可在用户设备日志中工作。配置支持自定义日志输出、按名称脱敏请求头(默认空集合)以及压缩处理(默认丢弃 Accept-Encoding 并追加 --compressed)。日志失败不会中断实际请求,但会先重新抛出取消异常。

编程与开发9 次安装

custom-shuffle-order

custom-shuffle-order 是面向媒体播放引擎的洗牌顺序定制方案,通过替换默认的 ShuffleOrder 实现,让播放中新增的曲目紧接当前曲目之后连续排列,而不是被随机打散到整个播放队列。它采用“正排映射 + 反查映射”的双数组结构:shuffled[playPosition] = timelineIndex 表示播放位置对应哪条时间线条目;indexInShuffled[timelineIndex] = playPosition 表示时间线条目落在哪个播放位置。核心能力围绕克隆时的插入、删除、清空与起始曲目保持来实现,要求克隆插入时同时平移时间线索引并把新条目放到枢轴附近,删除时重排幸存项,开始播放的曲目交换到队列首位,并用 inside-out Fisher–Yates 生成排列。本条目以代码模式解析为主,具体安装与集成方式暂未提供。

编程与开发9 次安装

datastore-driven-workmanager

该技能讲解如何让 Android WorkManager 的周期性后台任务直接由设置存储驱动:用一个长期收集器监听偏好设置流,在开关或间隔变化时立即重新入队或取消任务,无需重启。内容涵盖 combine 与 distinctUntilChanged 的正确摆放、enqueueUniquePeriodicWork 的 UPDATE 与 KEEP 策略差异、唯一任务名必须复用同一常量、Worker 内部需重新读取设置并在关闭时返回 success、平台最小周期限制、约束只影响调度时机,以及避免在 Activity 或 ViewModel 生命周期作用域内做调度等常见陷阱与验证方法。

编程与开发9 次安装

datastore-kmp-manager

datastore-kmp-manager 是一个面向 Kotlin Multiplatform 的偏好设置管理器构建技能,围绕三层文件结构组织:core/domain 只放接口,供功能代码依赖;core/data 放实现,是唯一导入存储库并定义键名的地方;core/data/<platform> 通过 expect/actual 函数按平台返回 DataStore 实例,各平台 actual 只提供文件路径,构造委托给共享的 createDataStore。每个设置项由一条观察用 Flow 和一个挂起写入函数组成,并强调默认值放在读取端、写入统一使用 Dispatchers.IO、存储实例全局单例创建。

编程与开发9 次安装