Token导航 LogoToken导航

Agent Skill · 研究检索

app-packager(应用程序打包程序)

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

app-packager 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 20,779。

总安装 5,092周安装 208GitHub Stars 公开资料未说明下载 1,631核验 2026-05-01

安装说明

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

安装方式

通过对话安装

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

请帮我安装这个 Agent Skill:app-packager(应用程序打包程序)
来源仓库:https://github.com/heigher/app-packager
安装命令:
openclaw skills install app-packager
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

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

ClawHubOpenClaw
openclaw skills install app-packager

这个 Skill 是做什么的

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

自动切换 Git 分支并执行 APP 打包脚本。支持指定分支、平台、构建类型、版本号、上传选项、API_KEY和更新说明。打包完成后会自动通知用户结果。Use when: 用户需要打包 APP、切换分支打包、构建应用、生成安装包。NOT for: 代码合并、代码提交、单元测试、代码检查。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

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

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install app-packager;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

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

  4. 4

    按最小权限试用

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

常见问题

6 条

app-packager 怎么安装?

在终端执行 openclaw skills install app-packager。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

app-packager 支持哪些 AI 工具?

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

app-packager 需要什么权限?

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

app-packager 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

app-packager 用的人多吗?

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

app-packager 安全吗?

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

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

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 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调用外部服务未明确有提醒
app-packager

应用程序打包程序 · 本页

5,092—需要联网MIT-0通过

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

SKILL.md 原文

name
app-packager
description
>

APP 打包助手(带完成通知)

执行方式

方式一:命令行调用(推荐)

~/.openclaw/workspace/skills/app-packager/scripts/app-packager --branch develop --platform android --upload --api-key 你的API_KEY --desc "更新说明"

重要:所有打包都必须使用此脚本,不要手动执行 pgyer_all.sh!

参数选项:

参数简写说明默认值
--branch-bGit 分支develop
--platform-p平台 (android/ios/all)all (双端打包)
--type-构建类型 (debug/adhoc/release)debug
--upload-u上传到蒲公英否
--api-key--key蒲公英 API_KEY-
--desc-d更新说明-

方式二:自然语言触发

直接对我说:"在 develop 分支打包 Android" 或 "打包 iOS release 版"

When to Run

  • 用户说“打包 APP”“生成安装包”“构建应用”
  • 用户说“在 xx 分支上打包”“切到 xx 分支打包”
  • 用户指定平台如“打包 iOS”“打安卓包”
  • 用户指定类型如“打 debug 包”“打 release 包”
  • 用户指定版本如“版本 1.2.3 打包”
  • 用户指定 API_KEY 如“api_key: xxxxx”
  • 用户说“打渠道包”

Pre-flight Check(执行前检查)

  1. 确认项目路径:/Users/nuoyun/Desktop/package/NYLiveUser 是否存在
  2. 确认打包脚本:./pgyer_all.sh 是否有执行权限
  3. 确认 Git 命令可用

Workflow

第一步:解析用户意图

从用户输入中提取所有参数,使用以下规则:

参数提取规则
  • 分支 (branch): 匹配 在\s*([\w\-_\./]+)\s*分支 或 切到\s*([\w\-_\./]+)\s*分支 或 分支[::]\s*([\w\-_\./]+)
  • 版本号 (version): 匹配 版本[::]?\s*([\d\.]+) 或 version[::]?\s*([\d\.]+)
  • 构建类型 (build_type): 匹配 debug|测试包|测试版本 → debug; adhoc|验收包|验收版本 → adhoc; release|发布包|发布版本|商店包 → release
  • 平台 (platform): 匹配 iOS|苹果|iphone → ios; 安卓|android → android; 渠道包|多渠道 → channel; 未指定时 → ``(双端打包)
  • 是否上传 (upload): 匹配 上传|需要上传|要上传 → yes; 不上传|不需要上传|不用上传 → no
  • API_KEY (api_key): 匹配 api_key[::]\s*([a-zA-Z0-9_\-]+) 或 API密钥[::]\s*([a-zA-Z0-9_\-]+) 或 蒲公英密钥[::]\s*([a-zA-Z0-9_\-]+)
  • 更新说明 (desc): 匹配 说明[::]\s*(.+?)(?=\.|$|,|。) 或 描述[::]\s*(.+?)(?=\.|$|,|。) 或 更新内容[::]\s*(.+?)(?=\.|$|,|。)
特殊判断
  • 渠道包:如果 platform 为 channel,设置 is_channel_package=true

第二步:参数处理规则

基本原则:每个参数独立判断,用户指定就用指定的值,否则用脚本默认值。

脚本提示参数变量用户指定时的映射默认行为
版本号version直接填入用户输入的版本号直接回车(脚本读取 pubspec.yaml)
构建类型build_typedebug→1, adhoc→2, release→3直接回车(脚本默认)
平台选择platformios→1, android→2, 渠道包→3直接回车(脚本默认:双端打包)
是否上传uploadyes→1, no→2直接回车(默认:不上传)
API_KEYapi_key直接填入用户输入的 API_KEY直接回车(用脚本默认值)
更新说明desc直接填入用户输入的说明直接回车(空字符串)

第三步:执行打包流程

# 进入项目目录
cd /Users/nuoyun/Desktop/package/NYLiveUser/ || { 
    reply "❌ 错误:项目路径 /Users/nuoyun/Desktop/package/NYLiveUser/ 不存在"
    exit 1
}

# 检查脚本权限
if [ ! -x "./pgyer_all.sh" ]; then
    reply "❌ 错误:打包脚本 pgyer_all.sh 无执行权限,请执行:chmod +x pgyer_all.sh"
    exit 1
fi

# 切换分支(如果指定了分支)
branch_status=""
if [ -n "$branch" ]; then
    reply "🔄 正在切换到分支: $branch ..."
    
    # 先拉取最新代码
    git fetch --all
    
    # 检查分支是否存在
    if git show-ref --verify --quiet refs/heads/"$branch"; then
        # 本地分支存在
        git checkout "$branch"
        git pull origin "$branch"
        branch_status="✅ 已切换到本地分支: $branch"
    elif git ls-remote --exit-code --heads origin "$branch"; then
        # 远程分支存在,创建本地分支并跟踪
        git checkout -b "$branch" origin/"$branch"
        branch_status="✅ 已切换到远程分支: $branch"
    else
        # 分支不存在
        reply "❌ 错误:分支 '$branch' 不存在"
        exit 1
    fi
else
    current_branch=$(git branch --show-current)
    branch_status="📌 保持当前分支: $current_branch"
fi

# 显示当前分支状态
git status -sb

# 记录开始时间
start_time=$(date +%s)

# 告知用户开始打包
reply "🚀 开始打包,预计需要3-5分钟,完成后我会通知您~"

# 构建输入序列
inputs=()

# 1. 版本号
if [ -n "$version" ]; then
    inputs+=("$version")
else
    inputs+=("")
fi

# 2. 构建类型
if [ "$build_type" = "debug" ]; then
    inputs+=("1")
elif [ "$build_type" = "adhoc" ]; then
    inputs+=("2")
elif [ "$build_type" = "release" ]; then
    inputs+=("3")
else
    inputs+=("")
fi

# 3. 平台选择
if [ "$is_channel_package" = "true" ]; then
    inputs+=("3")
else
    if [ "$platform" = "ios" ]; then
        inputs+=("1")
    elif [ "$platform" = "android" ]; then
        inputs+=("2")
    else
        inputs+=("")
    fi
fi

# 4. 如果不是渠道包,才需要后续三个参数
if [ "$is_channel_package" != "true" ]; then
    # 4.1 是否上传
    if [ "$upload" = "yes" ]; then
        inputs+=("1")
    elif [ "$upload" = "no" ]; then
        inputs+=("2")
    else
        inputs+=("2")  # 默认不上传(对应脚本中的选项2)
    fi
    
    # 4.2 API_KEY - 接收用户输入,没有指定时用默认
    if [ -n "$api_key" ]; then
        inputs+=("$api_key")
    else
        inputs+=("")  # 回车,使用脚本默认值
    fi
    
    # 4.3 更新说明
    if [ -n "$desc" ]; then
        inputs+=("$desc")
    else
        inputs+=("")
    fi
fi

# 执行打包并捕获输出
temp_output=$(mktemp)
temp_error=$(mktemp)

# 构建输入字符串
input_string=""
for item in "${inputs[@]}"; do
    input_string+="$item\
"
done

# 执行打包命令
echo -e "$input_string" | ./pgyer_all.sh > "$temp_output" 2> "$temp_error"
exit_code=$?

# 计算耗时
end_time=$(date +%s)
duration=$((end_time - start_time))
minutes=$((duration / 60))
seconds=$((duration % 60))
time_str="${minutes}分${seconds}秒"

# 读取输出内容
output_content=$(cat "$temp_output")
error_content=$(cat "$temp_error")

# 清理临时文件
rm -f "$temp_output" "$temp_error"

# 分析打包结果并生成反馈
if [ $exit_code -eq 0 ]; then
    # 打包成功,提取生成的文件信息
    apk_files=$(find /Users/nuoyun/Desktop/package/NYLiveUser/build -name "*.apk" -type f -mmin -5 2>/dev/null | head -3)
    ipa_files=$(find /Users/nuoyun/Desktop/package/NYLiveUser/build -name "*.ipa" -type f -mmin -5 2>/dev/null | head -3)
    
    # 提取蒲公英链接
    pgyer_links=$(echo "$output_content" | grep -E "https?://[a-zA-Z0-9./-]+(pgyer|蒲公英)" | head -3)
    
    # 构建成功消息
    feedback="✅ 打包完成!\
\
"
    feedback+="📂 分支信息:$branch_status\
"
    feedback+="⏱️ 打包耗时:$time_str\
\
"
    feedback+="📦 打包参数:\
"
    
    # 版本号
    if [ -n "$version" ]; then
        feedback+="• 版本号:$version\
"
    else
        feedback+="• 版本号:默认(取自pubspec.yaml)\
"
    fi
    
    # 构建类型
    if [ -n "$build_type" ]; then
        feedback+="• 构建类型:$build_type\
"
    else
        feedback+="• 构建类型:默认(iOS debug/Android release)\
"
    fi
    
    # 平台
    if [ "$is_channel_package" = "true" ]; then
        feedback+="• 平台:渠道包(Android多渠道)\
"
    elif [ -n "$platform" ]; then
        feedback+="• 平台:$platform\
"
    else
        feedback+="• 平台:双端(iOS+Android)\
"
    fi
    
    # 上传
    if [ "$is_channel_package" = "true" ]; then
        feedback+="• 上传蒲公英:不适用(渠道包自动跳过)\
"
    elif [ -n "$upload" ]; then
        if [ "$upload" = "yes" ]; then
            feedback+="• 上传蒲公英:是\
"
        else
            feedback+="• 上传蒲公英:否\
"
        fi
    else
        feedback+="• 上传蒲公英:否(默认)\
"
    fi
    
    # API_KEY(只在用户指定或上传为是时显示)
    if [ "$is_channel_package" != "true" ] && [ "$upload" = "yes" ]; then
        if [ -n "$api_key" ]; then
            feedback+="• API_KEY:$api_key\
"
        else
            feedback+="• API_KEY:使用默认值\
"
        fi
    fi
    
    # 更新说明
    if [ "$is_channel_package" = "true" ]; then
        feedback+="• 更新说明:不适用\
"
    elif [ -n "$desc" ]; then
        feedback+="• 更新说明:$desc\
"
    else
        feedback+="• 更新说明:无\
"
    fi
    
    feedback+="\
📁 生成文件:\
"
    
    # 添加APK文件
    if [ -n "$apk_files" ]; then
        while IFS= read -r apk; do
            feedback+="📱 Android: \`$apk\`\
"
        done <<< "$apk_files"
    fi
    
    # 添加IPA文件
    if [ -n "$ipa_files" ]; then
        while IFS= read -r ipa; do
            feedback+="🍎 iOS: \`$ipa\`\
"
        done <<< "$ipa_files"
    fi
    
    # 添加蒲公英链接
    if [ -n "$pgyer_links" ] && [ "$upload" = "yes" ]; then
        feedback+="\
📎 下载链接:\
"
        while IFS= read -r link; do
            feedback+="$link\
"
        done <<< "$pgyer_links"
    fi
    
    feedback+="\
💡 提示:文件保存在 build 目录下,可通过 Finder 访问。"
else
    # 构建失败消息
    error_summary=$(echo "$error_content" | tail -20)
    
    feedback="❌ 打包失败\
\
"
    feedback+="📂 分支信息:$branch_status\
"
    feedback+="⏱️ 耗时:$time_str\
\
"
    feedback+="❌ 错误信息:\
\`\`\`\
"
    feedback+="$error_summary\
"
    feedback+="\`\`\`\
\
"
    feedback+="🔍 可能的原因:\
"
    feedback+="1. 代码编译错误 - 检查 Flutter 环境\
"
    feedback+="2. 依赖问题 - 尝试执行 \`flutter pub get\`\
"
    feedback+="3. iOS 证书问题 - 检查证书配置\
"
    feedback+="4. Android 签名问题 - 检查 keystore 配置\
\
"
    feedback+="📋 完整日志:请查看项目目录下的 build.log 文件"
fi

# 发送反馈消息
reply "$feedback"

平台分布

OpenClaw

82.81%
按下载量换算1,351

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

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

安装前确认

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

继续浏览同类 Skills