案例库
实际使用场景和完整实现方案。
案例分类
🚀 开发者场景
📝 内容创作者场景
🎓 学习者场景
👔 知识工作者场景
案例1: 全栈开发者的一天
背景
张三是一名全栈开发者,主要工作:
- 前端开发 (React)
- 后端API (Node.js)
- 数据库维护 (PostgreSQL)
- 代码审查
- 技术文档
痛点
- 每天打开相同的工具和项目
- 频繁切换上下文
- 代码提交message质量不一致
- 忘记定期推送代码
- 会议后忘记整理笔记
解决方案
1. 晨间启动工作流
#!/bin/bash
# morning-routine.sh
echo "☀️ 早上好!"
# 检查网络
if ! ping -c 1 google.com &> /dev/null; then
echo "❌ 网络未连接"
exit 1
fi
# 拉取所有项目最新代码
echo "📥 更新项目..."
for dir in ~/Developer/*/; do
if [ -d "$dir/.git" ]; then
echo " $(basename $dir)"
(cd "$dir" && git pull --quiet)
fi
done
# 启动开发服务
echo "🚀 启动服务..."
cd ~/Developer/main-project
# Docker服务
docker-compose up -d
sleep 3
# 后端
npm run backend &
# 前端
npm run frontend &
# 打开工作环境
echo "💻 打开工作环境..."
code .
open "http://localhost:3000"
open "http://localhost:3001/api/docs"
# 打开今日笔记
open ~/Documents/Notes/Daily/$(date +%Y-%m-%d).md
# 检查日程
echo ""
echo "📅 今日日程:"
icalBuddy -n eventsToday
echo "✅ 准备就绪!"
触发方式: Raycast命令 "morning"
2. 智能提交工作流
#!/bin/bash
# smart-commit.sh
# 检查是否有改动
if [ -z "$(git status --porcelain)" ]; then
echo "✅ Nothing to commit"
exit 0
fi
# 显示改动
echo "📊 Changes:"
git status -sb
echo ""
# 运行检查
echo "🔍 Running checks..."
# Lint
if npm run lint --silent; then
echo "✅ Lint passed"
else
echo "❌ Lint failed"
read -p "Continue anyway? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# 类型检查
if npm run type-check --silent 2>/dev/null; then
echo "✅ Type check passed"
fi
# 测试相关文件
CHANGED=$(git diff --name-only --cached | grep -E '\.(js|ts|jsx|tsx)$')
if [ -n "$CHANGED" ]; then
echo "🧪 Running tests..."
if npm test -- --findRelatedTests $CHANGED --silent; then
echo "✅ Tests passed"
else
echo "⚠️ Tests failed"
read -p "Continue anyway? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
fi
# AI生成commit message
echo "🤖 Generating commit message..."
DIFF=$(git diff --cached)
COMMIT_MSG=$(echo "$DIFF" | claude-cli "
Generate a conventional commit message following these rules:
- Format: <type>(<scope>): <subject>
- Types: feat, fix, docs, style, refactor, test, chore
- Subject: imperative mood, lowercase, no period
- Keep under 72 characters
Only output the commit message, nothing else.
")
if [ -z "$COMMIT_MSG" ]; then
# AI失败,手动输入
read -p "Commit message: " COMMIT_MSG
fi
echo ""
echo "📝 Commit message:"
echo " $COMMIT_MSG"
echo ""
read -p "OK? (Y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Nn]$ ]]; then
read -p "Enter message: " COMMIT_MSG
fi
# 提交
git add .
git commit -m "$COMMIT_MSG"
echo "✅ Committed"
# 询问是否推送
read -p "Push? (Y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
BRANCH=$(git branch --show-current)
git push origin $BRANCH
echo "🚀 Pushed to $BRANCH"
fi
触发方式:
- Raycast命令 "commit"
- Git别名:
git smartcommit
3. 自动化会议笔记
#!/bin/bash
# meeting-note.sh
TITLE=$1
DATE=$(date +"%Y-%m-%d")
TIME=$(date +"%H:%M")
FILE=~/Documents/Notes/Meetings/${DATE}-${TITLE}.md
# 创建笔记
cat > "$FILE" << EOF
# $TITLE
**日期**: $DATE $TIME
**参与者**:
## 会前准备
-
## 讨论要点
## 决策事项
## 行动项
- [ ]
## 下次会议
EOF
# 打开笔记
code "$FILE"
# 设置提醒: 会后1小时整理
osascript -e "
tell application \"Reminders\"
tell list \"Work\"
make new reminder with properties {name:\"整理会议笔记: $TITLE\", due date:((current date) + 1 * hours)}
end tell
end tell
"
echo "✅ Meeting note created"
4. 定时推送提醒
#!/bin/bash
# push-reminder.sh (crontab: 0 17 * * 1-5)
# 工作日下午5点运行
for dir in ~/Developer/*/; do
if [ -d "$dir/.git" ]; then
cd "$dir"
# 检查是否有未推送的提交
UNPUSHED=$(git log @{u}.. --oneline 2>/dev/null)
if [ -n "$UNPUSHED" ]; then
PROJECT=$(basename "$dir")
osascript -e "display notification \"You have unpushed commits in $PROJECT\" with title \"🚨 Git Reminder\""
fi
fi
done
效果
- ⏱️ 每天节省30分钟启动时间
- 📈 提交message质量提升
- ✅ 不再忘记推送代码
- 📝 会议记录100%完成
案例2: 开源项目维护
背景
李四维护几个开源项目,需要:
- 审查PR
- 回复Issue
- 发布版本
- 更新文档
- 监控CI/CD
痛点
- Issue和PR太多,难以优先级排序
- 回复消息耗时
- 版本发布流程繁琐
- 容易忘记更新CHANGELOG
解决方案
1. Issue分类助手
#!/bin/bash
# triage-issues.sh
REPO=$1 # 例如: owner/repo
# 获取新Issue
NEW_ISSUES=$(gh issue list -R $REPO --state open --json number,title,body,author --limit 50)
# AI分类
echo "$NEW_ISSUES" | jq -c '.[]' | while read issue; do
NUMBER=$(echo $issue | jq -r '.number')
TITLE=$(echo $issue | jq -r '.title')
BODY=$(echo $issue | jq -r '.body')
AUTHOR=$(echo $issue | jq -r '.author.login')
# AI分析
ANALYSIS=$(echo "Title: $TITLE\nBody: $BODY" | claude-cli "
Analyze this GitHub issue:
1. Type: [bug, feature, question, documentation]
2. Priority: [critical, high, medium, low]
3. Complexity: [easy, medium, hard]
4. Suggested labels
JSON format only
")
TYPE=$(echo $ANALYSIS | jq -r '.type')
PRIORITY=$(echo $ANALYSIS | jq -r '.priority')
LABELS=$(echo $ANALYSIS | jq -r '.labels | join(",")')
# 添加标签
gh issue edit $NUMBER -R $REPO --add-label "$TYPE,$PRIORITY,$LABELS"
echo "✅ Triaged #$NUMBER: $TITLE"
done
echo "Done!"
2. PR审查助手
#!/bin/bash
# review-pr.sh
PR_NUMBER=$1
REPO=$2
# 获取PR信息
PR_INFO=$(gh pr view $PR_NUMBER -R $REPO --json title,body,files,additions,deletions)
# 获取diff
DIFF=$(gh pr diff $PR_NUMBER -R $REPO)
# AI审查
REVIEW=$(echo "$DIFF" | claude-cli "
Review this pull request:
PR Title: $(echo $PR_INFO | jq -r '.title')
PR Body: $(echo $PR_INFO | jq -r '.body')
Changes: +$(echo $PR_INFO | jq -r '.additions') -$(echo $PR_INFO | jq -r '.deletions')
Provide:
1. Overall assessment
2. Potential issues (bugs, security, performance)
3. Code quality feedback
4. Suggestions for improvement
5. Approval recommendation: [APPROVE, REQUEST_CHANGES, COMMENT]
Format in markdown for GitHub comment
")
# 输出审查意见
echo "$REVIEW"
echo ""
read -p "Post this review? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
gh pr review $PR_NUMBER -R $REPO --comment --body "$REVIEW"
echo "✅ Review posted"
fi
3. 自动化发布
#!/bin/bash
# release.sh
VERSION=$1
if [ -z "$VERSION" ]; then
echo "Usage: release.sh <version>"
exit 1
fi
echo "🚀 Releasing version $VERSION"
# 1. 运行测试
echo "1️⃣ Running tests..."
npm test || { echo "❌ Tests failed"; exit 1; }
# 2. 更新版本
echo "2️⃣ Updating version..."
npm version $VERSION --no-git-tag-version
# 3. 生成CHANGELOG
echo "3️⃣ Generating changelog..."
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$LAST_TAG" ]; then
COMMITS=$(git log --pretty=format:"- %s" --reverse)
else
COMMITS=$(git log $LAST_TAG..HEAD --pretty=format:"- %s" --reverse)
fi
# AI美化CHANGELOG
CHANGELOG=$(echo "$COMMITS" | claude-cli "
Format these commits into a nice changelog:
- Group by type (Features, Bug Fixes, etc.)
- Improve wording
- Remove noise
Output in markdown
")
# 追加到CHANGELOG.md
echo -e "\n## [$VERSION] - $(date +%Y-%m-%d)\n\n$CHANGELOG" | cat - CHANGELOG.md > temp && mv temp CHANGELOG.md
# 4. 提交
echo "4️⃣ Committing..."
git add .
git commit -m "chore: release v$VERSION"
git tag -a "v$VERSION" -m "Release v$VERSION"
# 5. 推送
echo "5️⃣ Pushing..."
git push && git push --tags
# 6. 发布到npm (如果是npm包)
if [ -f "package.json" ]; then
read -p "Publish to npm? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
npm publish
echo "✅ Published to npm"
fi
fi
# 7. 创建GitHub Release
echo "7️⃣ Creating GitHub release..."
gh release create "v$VERSION" \
--title "Release v$VERSION" \
--notes "$CHANGELOG"
echo "✅ Release v$VERSION complete!"
效果
- 🏷️ Issue自动分类标签
- ⏱️ PR审查速度提升3倍
- 📦 发布流程从30分钟降到5分钟
- 📝 CHANGELOG自动生成
案例3: 多项目并行开发
背景
王五同时负责3个项目:
- 项目A (React前端)
- 项目B (Node.js后端)
- 项目C (React Native移动端)
痛点
- 切换项目需要记住各种命令
- 每个项目环境不同
- 容易混淆分支
- 提交到错误的仓库
解决方案
项目统一管理
#!/bin/bash
# project-manager.sh
PROJECT_ROOT="$HOME/Developer"
# 项目配置
declare -A PROJECTS=(
["project-a"]="3000:npm run dev:frontend"
["project-b"]="3001:npm run dev:backend"
["project-c"]="8081:npx react-native start"
)
function list_projects() {
echo "📂 Projects:"
for project in "${!PROJECTS[@]}"; do
echo " - $project"
done
}
function switch_to() {
local project=$1
if [ -z "${PROJECTS[$project]}" ]; then
echo "❌ Unknown project: $project"
list_projects
exit 1
fi
local dir="$PROJECT_ROOT/$project"
if [ ! -d "$dir" ]; then
echo "❌ Directory not found: $dir"
exit 1
fi
# 切换目录
cd "$dir"
# 显示项目信息
echo "📁 $project"
echo "🌿 Branch: $(git branch --show-current)"
echo "📝 Status: $(git status -sb | head -1)"
echo ""
# 检查是否有未提交的改动
if [ -n "$(git status --porcelain)" ]; then
echo "⚠️ Uncommitted changes!"
git status -s
echo ""
fi
# 打开编辑器
code .
# 启动开发服务器
local config=${PROJECTS[$project]}
local port=$(echo $config | cut -d: -f1)
local cmd=$(echo $config | cut -d: -f2-)
read -p "Start dev server on port $port? (Y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
eval "$cmd" &
sleep 2
open "http://localhost:$port"
fi
}
function status_all() {
echo "📊 All Projects Status"
echo "━━━━━━━━━━━━━━━━━━━━"
for project in "${!PROJECTS[@]}"; do
dir="$PROJECT_ROOT/$project"
if [ -d "$dir" ]; then
cd "$dir"
echo ""
echo "📁 $project"
echo " Branch: $(git branch --show-current)"
# 未推送的提交
unpushed=$(git log @{u}.. --oneline 2>/dev/null | wc -l)
if [ $unpushed -gt 0 ]; then
echo " ⚠️ Unpushed commits: $unpushed"
fi
# 未提交的改动
if [ -n "$(git status --porcelain)" ]; then
echo " ⚠️ Uncommitted changes"
fi
fi
done
}
# 命令路由
case $1 in
list)
list_projects
;;
status)
status_all
;;
*)
switch_to "$1"
;;
esac
使用方式:
# Raycast命令
project project-a # 切换到项目A
project status # 查看所有项目状态
project list # 列出所有项目
效果
- 🚀 项目切换时间从5分钟降到30秒
- ✅ 不再提交到错误的仓库
- 📊 随时掌握所有项目状态
案例4: 技术博客作者
背景
赵六是技术博客作者,工作流程:
- 收集灵感
- 写作
- 代码示例
- 截图
- 发布
痛点
- 灵感转瞬即逝
- 写作时查资料打断思路
- 代码示例需要测试
- 截图整理麻烦
解决方案
1. 灵感快速捕获
#!/bin/bash
# quick-idea.sh
IDEA=$1
IDEAS_FILE="$HOME/Documents/Blog/ideas.md"
if [ -z "$IDEA" ]; then
# 从剪贴板获取
IDEA=$(pbpaste)
fi
# 添加到想法列表
echo "- [ ] $IDEA [$(date +%Y-%m-%d)]" >> "$IDEAS_FILE"
# AI扩展想法
EXPANSION=$(echo "$IDEA" | claude-cli "
这是一个博客主题想法: $IDEA
提供:
1. 3个可能的文章角度
2. 目标受众
3. 参考资料关键词
4. 预估难度和时长
")
# 保存详细想法
echo -e "\n### $IDEA\n$EXPANSION\n" >> "$HOME/Documents/Blog/ideas-detailed.md"
echo "✅ Idea saved: $IDEA"
触发: 全局快捷键 ⌘+⌥+I
2. 写作环境
#!/bin/bash
# writing-mode.sh
TITLE=$1
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
FILE="$HOME/Documents/Blog/drafts/${SLUG}.md"
# 创建草稿
if [ ! -f "$FILE" ]; then
# AI生成大纲
OUTLINE=$(echo "$TITLE" | claude-cli "
为博客文章'$TITLE'生成大纲:
- 引言
- 3-5个主要部分
- 总结
Markdown格式
")
cat > "$FILE" << EOF
---
title: "$TITLE"
date: $(date +%Y-%m-%d)
draft: true
tags: []
---
$OUTLINE
EOF
fi
# 设置写作环境
echo "✍️ Writing mode activated"
# 关闭干扰
osascript -e 'tell application "Slack" to quit'
osascript -e 'tell application "Mail" to quit'
# 开启勿扰模式
osascript -e 'tell application "System Events" to keystroke "D" using {command down, shift down, option down, control down}'
# 打开编辑器
code "$FILE"
# 播放专注音乐
open -a "Music" && osascript -e 'tell application "Music" to play playlist "Focus"'
# 设置番茄钟
(
sleep 1500 # 25分钟
osascript -e 'display notification "休息一下!" with title "⏰ Writing Break"'
) &
echo "Happy writing!"
3. 代码示例管理
#!/bin/bash
# code-example.sh
ARTICLE=$1
EXAMPLE_NAME=$2
EXAMPLES_DIR="$HOME/Documents/Blog/code-examples/$ARTICLE"
mkdir -p "$EXAMPLES_DIR"
cd "$EXAMPLES_DIR"
# 创建示例项目
if [ ! -d "$EXAMPLE_NAME" ]; then
mkdir "$EXAMPLE_NAME"
cd "$EXAMPLE_NAME"
# 初始化
npm init -y
git init
# AI生成starter代码
claude-cli "
为博客示例'$ARTICLE - $EXAMPLE_NAME'生成初始代码:
- package.json配置
- 基础文件结构
- README说明
" > setup-instructions.md
echo "✅ Example project created"
fi
code "$EXAMPLES_DIR/$EXAMPLE_NAME"
效果
- 💡 再也不丢失灵感
- ⏱️ 写作专注时间提升50%
- 🔧 代码示例管理有序
- 📈 文章产出提升2倍
案例5: 自学编程
背景
小明是自学编程的学生,目标:
- 系统学习前端开发
- 做练习项目
- 记录学习笔记
- 准备面试
解决方案
学习系统
#!/bin/bash
# learn.sh
TOPIC=$1
LEARNING_DIR="$HOME/Learning"
TOPIC_DIR="$LEARNING_DIR/$TOPIC"
# 创建学习项目结构
mkdir -p "$TOPIC_DIR"/{notes,projects,resources,practice}
# AI生成学习计划
PLAN=$(claude-cli "
为学习'$TOPIC'创建30天学习计划:
格式:
## Week 1: 基础
- Day 1: ...
- Day 2: ...
每天包括:
- 学习内容
- 练习任务
- 参考资料
## Week 2-4: ...
")
echo "$PLAN" > "$TOPIC_DIR/PLAN.md"
# 创建第一天笔记
cat > "$TOPIC_DIR/notes/day-01.md" << EOF
# Day 1: Getting Started with $TOPIC
## 今日目标
- [ ]
## 学习笔记
## 代码练习
## 疑问
## 明日预习
EOF
# 设置每日提醒
osascript -e "
tell application \"Reminders\"
tell list \"Learning\"
make new reminder with properties {name:\"学习 $TOPIC\", due date:(current date)}
end tell
end tell
"
echo "✅ Learning project for $TOPIC created!"
echo "📚 Plan: $TOPIC_DIR/PLAN.md"
open "$TOPIC_DIR/PLAN.md"
效果
- 📚 学习更系统化
- ✅ 完成度提升
- 📝 知识积累可视化
更多案例
完整案例库持续更新中...
每个案例都包含:
- ✅ 真实场景
- ✅ 可运行的代码
- ✅ 实际效果数据
贡献案例
如果你有好的自动化案例,欢迎分享!
格式:
- 背景和痛点
- 解决方案 (附代码)
- 实际效果
- 经验教训
提示: 这些案例都是真实可用的,你可以直接复制使用或根据自己情况修改。