Awesome-omni-skill start
Execute a task autonomously with real-time Telegram progress updates, automatic deployment, commit, and push. No user interaction required - makes all decisions independently.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/devops/start" ~/.claude/skills/diegosouzapw-awesome-omni-skill-start-be1571 && rm -rf "$T"
manifest:
skills/devops/start/SKILL.mdsource content
Start Skill
自动执行任务,全程通过 Telegram 实时反馈进度,完成后自动部署、提交并推送代码。
核心原则
完全自主执行:
- ❌ 不使用
- 自己做决策AskUserQuestion - ✅ 遇到选择时,使用最佳实践方案
- ✅ 遇到不确定的情况,选择保守/安全的方案
- ✅ 多个关键节点发送 Telegram 通知保持用户知情
Arguments
$ARGUMENTS - 任务描述
示例:
/start 添加一个新的 outbound 配置管理模块/start 修复空状态下无法创建配置的 bug/start 优化前端性能,减少不必要的 re-render
完整工作流
1. 📨 发送"开始执行"通知 2. 🔍 分析任务需求 3. 📖 阅读相关代码 4. 💡 制定执行方案(不询问用户) 5. 🔧 执行任务 - 在关键节点发送进度通知 - 创建/修改文件 - 运行必要的命令 6. ✅ 代码质量检查(biome + TypeScript + Rust fmt) 7. 🚀 部署(deploy script) 8. ✅ 如果部署成功:commit + push 9. 📤 发送完成通知 10. ❌ 如果失败:发送错误通知
使用的工具和脚本
- Telegram 通知:
/home/alan/code/start/.claude/scripts/telegram-notify.sh - 部署脚本:
/home/alan/code/start/.claude/scripts/deploy.sh - Git 操作: 直接使用 git 命令
实施细节
1. 发送开始通知
/home/alan/code/start/.claude/scripts/telegram-notify.sh "🚀 开始执行任务 📋 任务: ${ARGUMENTS} ⏳ 正在分析需求..."
2. 分析和规划
- 使用 Glob/Grep 查找相关代码
- 使用 Read 阅读关键文件
- 不使用 AskUserQuestion - 自主决策
- 遵循项目 CLAUDE.md 中的最佳实践
决策原则:
- 参考现有代码模式
- 遵循项目架构约定
- 选择最简单可行的方案
- 保持代码一致性
3. 发送进度通知
在关键节点发送更新(每 2-3 个重要步骤):
/home/alan/code/start/.claude/scripts/telegram-notify.sh "⚙️ 进度更新 当前步骤: ${current_step} 已完成: - ${completed_item_1} - ${completed_item_2} 正在进行: ${current_action}"
建议的通知节点:
- ✅ 开始执行任务
- ✅ 完成代码分析/规划
- ✅ 完成后端代码(如适用)
- ✅ 完成前端代码(如适用)
- ✅ 代码质量检查通过/失败
- ✅ 开始部署
- ✅ 部署成功/失败
- ✅ 任务完成
4. 执行任务
根据任务类型执行相应操作:
新功能 (feat):
- 创建必要的文件
- 遵循现有模块模式
- 更新相关配置/路由
Bug 修复 (fix):
- 定位问题代码
- 实施修复
- 验证修复效果
重构 (refactor):
- 提取公共逻辑
- 改进代码结构
- 保持功能不变
优化 (perf):
- 识别性能瓶颈
- 实施优���方案
- 测量改进效果
5. 代码质量检查
在部署之前必须执行所有适用的检查:
# 发送检查开始通知 /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "🔍 开始代码质量检查 运行 Biome 和 TypeScript 检查..." # 1. Biome 检查 (必须) echo "Running Biome check..." if ! bun run check; then /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "❌ Biome 检查失败 请修复 lint 和格式问题后重试" exit 1 fi # 2. TypeScript 类型检查 (必须) echo "Running TypeScript type check..." if ! bun run type-check; then /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "❌ TypeScript 类型检查失败 请修复类型错误后重试" exit 1 fi # 3. Rust 格式检查 (如果修改了后端代码) # 检查是否有 Rust 文件被修改 if git diff --name-only HEAD | grep -q '\.rs$'; then echo "Rust files modified, running cargo fmt check..." if ! cargo fmt --check; then /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "❌ Rust 格式检查失败 运行 'cargo fmt' 修复格式问题" exit 1 fi fi # 所有检查通过 /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "✅ 代码质量检查通过 准备部署..."
6. 部署
# 发送部署开始通知 /home/alan/code/start/.claude/scripts/telegram-notify.sh "🚀 开始部署 构建前端和后端... 重启服务..." # 执行部署 DEPLOY_OUTPUT=$(/home/alan/code/start/.claude/scripts/deploy.sh 2>&1) DEPLOY_STATUS=$? if [ $DEPLOY_STATUS -eq 0 ]; then /home/alan/code/start/.claude/scripts/telegram-notify.sh "✅ 部署成功 服务已重启并通过健康检查 准备提交代码..." else /home/alan/code/start/.claude/scripts/telegram-notify.sh "❌ 部署失败 错误信息: ${DEPLOY_OUTPUT} 任务中止,未提交代码" exit 1 fi
7. Commit 和 Push
只在部署成功后执行:
# 检查是否有改动 if ! git diff --quiet || ! git diff --cached --quiet || [ -n "$(git ls-files --others --exclude-standard)" ]; then # 分析改动,确定 commit 类型和消息 git status git diff # 自主决定 commit message # 类型: feat, fix, refactor, perf, docs, style, test, build, chore # 格式: <type>(<scope>): <subject> git add . git commit -m "$(cat <<'EOF' <type>(<scope>): <中文描述> <详细说明> Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> EOF )" # Push 到远程 git push COMMIT_MSG=$(git log -1 --pretty=%B) else COMMIT_MSG="无文件改动" fi
8. 发送完成通知
# 获取 commit 信息和 GitHub URL COMMIT_HASH=$(git rev-parse HEAD 2>/dev/null || echo "N/A") REMOTE_URL=$(git remote get-url origin 2>/dev/null || echo "") # 从 git remote URL 提取 owner/repo # 支持格式: git@github.com:owner/repo.git 或 https://github.com/owner/repo.git if [ -n "$REMOTE_URL" ]; then # 先移除 .git 后缀,再提取 owner/repo REPO_PATH=$(echo "$REMOTE_URL" | sed -E 's/\.git$//' | sed -E 's/.*[:/]([^/]+\/[^/]+)$/\1/') COMMIT_URL="https://github.com/${REPO_PATH}/commit/${COMMIT_HASH}" else COMMIT_URL="" fi # 构建完成通知消息 FINAL_MESSAGE="✅ 任务完成 📋 任务: ${ARGUMENTS} 🔧 主要改动: - ${change_1} - ${change_2} - ${change_3} ✨ 结果: ${outcomes} 📝 Commit: ${COMMIT_MSG}" # 添加 GitHub 链接(如果可用) if [ -n "$COMMIT_URL" ]; then FINAL_MESSAGE="${FINAL_MESSAGE} 🔗 查看更改: ${COMMIT_URL}" fi # 添加状态信息 FINAL_MESSAGE="${FINAL_MESSAGE} 🚀 部署状态: 成功 📤 推送状态: 完成" # Telegram 消息长度限制:4096 字符 # 如果超过限制,截断详细信息部分 MAX_LENGTH=4000 # 留一些安全余地 if [ ${#FINAL_MESSAGE} -gt $MAX_LENGTH ]; then # 构建简化版消息 FINAL_MESSAGE="✅ 任务完成 📋 任务: ${ARGUMENTS} 🔧 主要改动: (内容较长,详见 GitHub) 📝 Commit: $(echo "$COMMIT_MSG" | head -n 1) 🔗 查看更改: ${COMMIT_URL} 🚀 部署状态: 成功 📤 推送状态: 完成" fi # 发送通知 /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "$FINAL_MESSAGE"
自主决策指南
架构决策
场景: 需要选择实现方式
- ✅ 参考项目中现有类似功能的实现
- ✅ 遵循 CLAUDE.md 中的架构约定
- ✅ 选择最符合项目模式的方案
示例:
- 添加新模块 → 参考 log/ruleset/inbound 模块的结构
- 添加 API 端点 → 遵循
约定/api/{module} - 前端状态管理 → 使用 TanStack Query
命名决策
场景: 需要命名文件/组件/变量
- ✅ 遵循项目现有命名规范
- ✅ 使用清晰描述性的名称
- ✅ 保持与周围代码一致
示例:
- 模块名 → 使用小写单数形式(log, ruleset, inbound)
- 组件名 → 使用 PascalCase(FocusEditor, ConfigCard)
- API 路由 → 使用复数形式 REST 约定
范围决策
场景: 不确定改动范围
- ✅ 优先最小化改动
- ✅ 只修改必要的文件
- ✅ 避免过度工程化
示例:
- Bug 修复 → 只修复问题本身,不重构周围代码
- 新功能 → 实现核心功能,不添加"可能有用"的额外功能
技术选择
场景: 需要选择技术方案
- ✅ 使用项目已有的技术栈
- ✅ 不引入新的依赖(除非必须)
- ✅ 遵循项目的技术决策
项目技术栈:
- Backend: Rust + Axum + Tokio
- Frontend: React + Rsbuild + TanStack Router + TanStack Query
- UI: Radix UI + Tailwind CSS
- Package Manager: Bun(不用 npm/pnpm)
错误处理
执行失败
任何步骤失败时:
/home/alan/code/start/.claude/scripts/telegram-notify.sh "❌ 任务失败 📋 任务: ${ARGUMENTS} ❌ 失败步骤: ${failed_step} 错误信息: ${error_message} ⚠️ 状态: - 代码改动: ${changes_made} - 部署状态: 未执行 - Commit 状态: 未执行"
部署失败
部署失败时不提交代码:
# 构建错误消息 ERROR_MESSAGE="⚠️ 部署失败,代码未提交 📋 任务: ${ARGUMENTS} ✅ 代码改动已完成: ${changes} ❌ 部署失败: ${deploy_error} 💡 建议: 检查日志: sudo journalctl -u sing-box-config-generator -n 50 代码改动已保留但未提交" # Telegram 消息长度限制检查 MAX_LENGTH=4000 if [ ${#ERROR_MESSAGE} -gt $MAX_LENGTH ]; then ERROR_MESSAGE="⚠️ 部署失败,代码未提交 📋 任务: ${ARGUMENTS} ✅ 代码改动已完成(详见本地文件) ❌ 部署失败: (错误信息过长,详见本地日志) 💡 建议: 检查日志: sudo journalctl -u sing-box-config-generator -n 50 代码改动已保留但未提交" fi /home/alan/code/sing-box-config-generator/.claude/scripts/telegram-notify.sh "$ERROR_MESSAGE"
最佳实践
1. 充分沟通
- 开始时说明执行计划
- 关键节点及时反馈
- 完成时总结改动
2. 遵循约定
- 严格遵循 CLAUDE.md 指南
- 参考现有代码模式
- 保持代码一致性
3. 保证质量
- 执行完整的代码质量检查
- Biome 检查(必须)
- TypeScript 类型检查(必须)
- Rust fmt 检查(修改后端时)
- 部署前验证代码
- 通过健康检查再提交
- 写清晰的 commit message
4. 错误恢复
- 失败时清晰报告
- 不隐藏错误信息
- 提供恢复建议
示例场景
场景 1: 添加新模块
用户: /start 添加 outbound 配置管理模块 流程: 1. 📨 通知: "开始执行任务:添加 outbound 配置管理模块" 2. 🔍 阅读现有模块代码(log, ruleset, inbound) 3. 📨 通知: "已分析现有模块结构,开始实现后端 API" 4. 🔧 创建 src/backend/api/outbound.rs 5. 🔧 更新 src/main.rs 添加路由 6. 📨 通知: "后端完成,开始实现前端" 7. 🔧 创建 src/frontend/routes/outbound/ 8. 🔧 创建 src/frontend/api/outbound.ts 9. 🔧 更新 Sidebar 添加导航 10. 📨 通知: "代码完成,开始质量检查" 11. ✅ 执行代码质量检查(biome + TypeScript + Rust fmt) 12. 📨 通知: "检查通过,开始部署" 13. 🚀 执行 deploy.sh 14. 📨 通知: "部署成功,提交代码" 15. ✅ Commit + Push 16. 📨 通知: "任务完成(包含 GitHub commit 链接)"
场景 2: Bug 修复
用户: /start 修复空状态下无法创建配置的问题 流程: 1. 📨 通知: "开始执行任务:修复空状态创建问题" 2. 🔍 分析问题原因 3. 📨 通知: "定位到问题:FocusEditor 在条件渲染内部,开始修复" 4. 🔧 修改 4 个配置模块的 index.tsx 5. 📨 通知: "修复完成,开始质量检查" 6. ✅ 执行代码质量检查(biome + TypeScript) 7. 📨 通知: "检查通过,开始部署" 8. 🚀 执行 deploy.sh 9. 📨 通知: "部署成功,提交代码" 10. ✅ Commit + Push 11. 📨 通知: "Bug 修复完成(包含 GitHub commit 链接)"
场景 3: 性能优化
用户: /start 优化前端性能,减少不必要的 re-render 流程: 1. 📨 通知: "开始执行任务:优化前端性能" 2. 🔍 分析性能瓶颈 3. �� 通知: "发现问题:组件过度渲染,使用 React.memo 优化" 4. 🔧 优化关键组件 5. 📨 通知: "优化完成,开始质量检查" 6. ✅ 执行代码质量检查(biome + TypeScript) 7. 📨 通知: "检查通过,开始部署" 8. 🚀 执行 deploy.sh 9. 📨 通知: "部署成功,提交代码" 10. ✅ Commit + Push 11. 📨 通知: "性能优化完成(包含 GitHub commit 链接)"
注意事项
- 不要使用 AskUserQuestion - 这是核心要求
- 频繁发送 Telegram 通知 - 让用户知道进度
- 必须执行代码质量检查 - 部署前运行所有适用的检查
- 检查失败立即停止 - 不要在检查失败时继续部署
- 部署失败不提交代码 - 保证代码质量
- 自主决策 - 遵循最佳实践和项目约定
- 保持简洁 - 只做必要的改动
配置要求
- Telegram 通知已配置(见
).claude/telegram-config.md - 部署脚本可用(
).claude/scripts/deploy.sh - Git 仓库已初始化并配置远程仓库
相关文档
- 项目指南:
/home/alan/code/start/CLAUDE.md - Telegram 配置:
/home/alan/code/start/.claude/telegram-config.md - 部署脚本:
/home/alan/code/start/.claude/scripts/deploy.sh - 通知脚本:
/home/alan/code/start/.claude/scripts/telegram-notify.sh