github-safe-publishlisted
Install: claude install-skill zwyin/github-safe-publish
# GitHub Safe Publish
将本地 Git 项目安全地发布到 GitHub 公开仓库。
## 参数
```
/github-safe-publish # 核心流程(脱敏+发布)
/github-safe-publish --seo # 核心 + SEO 优化
/github-safe-publish --ci # 核心 + CI 生成
/github-safe-publish --seo --ci # 全部
/github-safe-publish --scan-only # 只做脱敏扫描,输出报告,不修复不发布
/github-safe-publish --dry-run # 模拟完整流程:扫描+模拟修复建议,但不做任何实际修改
```
**参数互斥与冲突处理**:
- `--scan-only` 和 `--dry-run` 不能与 `--seo` / `--ci` 组合(SEO 和 CI 只对已推送的仓库有意义,扫描模式不推送)
- `--seo` 和 `--ci` 可以同时使用(完整功能模式)
- 无效组合直接报错并退出
- `--dry-run` 与 `--scan-only` 的区别:`--scan-only` 只输出扫描报告;`--dry-run` 在报告基础上还会展示每个发现项的推荐修复方案(但不执行修复)
**流程控制矩阵**:
| 步骤 | 完整流程 | --scan-only | --dry-run |
|------|---------|-------------|-----------|
| Step 1: 前置检查+参数确认 | 执行 | 执行 | 执行 |
| Step 2: 创建备份分支 | 执行 | 跳过 | 跳过 |
| Step 3: 脱敏扫描 | 执行 | 执行 | 执行 |
| Step 4: 自动修复+用户确认 | 执行 | 跳过 | 输出修复建议但不执行 |
| Step 5: 仓库决策+推送 | (迭代 2) | 跳过 | 跳过 |
| Step 6: 验证+报告 | (迭代 2) | 仅扫描报告 | 仅扫描报告+修复建议 |
## 前提
- 当前目录是 Git 仓库,至少有一个 commit
- `gh` CLI 已安装并登录(可选,支持手动推送)
- 用户确认项目可以公开(已过脱敏)
## Step 1: 前置检查 + 参数确认(集中交互 #1)
所有前置检查和参数决策集中在一次交互中完成。任何一项阻断条件不满足则停在当前步骤。
### 1.1 自动检查(无交互)
按顺序执行以下检查,仅记录结果,不做交互:
```
检查项:
1. 当前目录是 git 仓库?
命令:git rev-parse --is-inside-work-tree
├── 成功 → is_git_repo = true,继续
└── 失败 → is_git_repo = false,标记"需要在 1.2 中询问初始化"
2. git 仓库至少有 1 个 commit?
命令:git rev-parse HEAD
├── 成功 → has_commit = true,继续
└── 失败 → 阻断:输出"仓库没有任何 commit,需要至少一次 commit 才能创建备份分支和回滚",停止流程
3. gh CL