
关于
开源流水线:Fork、清理和打包私有项目以安全公开发布。链接 3 个代理(Fork 器、清理器、打包器)。触发词:"/opensource"、"开源这个"、"公开发布"。
name: opensource-pipeline description: "开源流水线:fork、清理和打包私有项目以安全公开发布。链接 3 个代理(forker、sanitizer、packager)。触发词:'/opensource'、'open source this'、'make this public'、'prepare for open source'。" origin: ECC
开源流水线技能
通过 3 阶段流水线安全地开源任何项目:Fork(剥离密钥)→ 清理(验证干净)→ 打包(CLAUDE.md + setup.sh + README)。
何时激活
- 用户说"开源这个项目"或"将其公开"
- 用户想要准备私有仓库进行公开发布
- 用户需要在推送到 GitHub 之前剥离密钥
- 用户调用
/opensource fork、/opensource verify或/opensource package
命令
| 命令 | 操作 |
|---------|--------|
| /opensource fork PROJECT | 完整流水线:fork + 清理 + 打包 |
| /opensource verify PROJECT | 对现有仓库运行清理器 |
| /opensource package PROJECT | 生成 CLAUDE.md + setup.sh + README |
| /opensource list | 显示所有暂存项目 |
| /opensource status PROJECT | 显示暂存项目的报告 |
协议
/opensource fork PROJECT
完整流水线——主工作流。
步骤 1:收集参数
解析项目路径。如果 PROJECT 包含 /,视为路径(绝对或相对)。否则检查:当前工作目录、$HOME/PROJECT,然后询问用户。
SOURCE_PATH="<resolved absolute path>"
STAGING_PATH="$HOME/opensource-staging/${PROJECT_NAME}"
询问用户:
- "哪个项目?"(如果未找到)
- "许可证?(MIT / Apache-2.0 / GPL-3.0 / BSD-3-Clause)"
- "GitHub 组织或用户名?"(默认:通过
gh api user -q .login检测) - "GitHub 仓库名?"(默认:项目名称)
- "README 描述?"(分析项目以提供建议)
步骤 2:创建暂存目录
mkdir -p $HOME/opensource-staging/
步骤 3:运行 Forker 代理
生成 opensource-forker 代理:
Agent(
description="Fork {PROJECT} for open-source",
subagent_type="opensource-forker",
prompt="""
Fork project for open-source release.
Source: {SOURCE_PATH}
Target: {STAGING_PATH}
License: {chosen_license}
Follow the full forking protocol:
1. Copy files (exclude .git, node_modules, __pycache__, .venv)
2. Strip all secrets and credentials
3. Replace internal references with placeholders
4. Generate .env.example
5. Clean git history
6. Generate FORK_REPORT.md in {STAGING_PATH}/FORK_REPORT.md
"""
)
等待完成。读取 {STAGING_PATH}/FORK_REPORT.md。
步骤 4:运行清理代理
生成 opensource-sanitizer 代理:
Agent(
description="Verify {PROJECT} sanitization",
subagent_type="opensource-sanitizer",
prompt="""
Verify sanitization of open-source fork.
Project: {STAGING_PATH}
Source (for reference): {SOURCE_PATH}
Run ALL scan categories:
1. Secrets scan (CRITICAL)
2. PII scan (CRITICAL)
3. Internal references scan (CRITICAL)
4. Dangerous files check (CRITICAL)
5. Configuration completeness (WARNING)
6. Git history audit
Generate SANITIZATION_REPORT.md inside {STAGING_PATH}/ with PASS/FAIL verdict.
"""
)
等待完成。读取 {STAGING_PATH}/SANITIZATION_REPORT.md。
如果失败: 向用户展示发现。询问:"修复这些并重新扫描,还是中止?"
- 如果修复:应用修复,重新运行清理器(最多 3 次重试——3 次失败后,展示所有发现并要求用户手动修复)
- 如果中止:清理暂存目录
如果通过或带警告通过: 继续步骤 5。
步骤 5:运行打包代理
生成 opensource-packager 代理:
Agent(
description="Package {PROJECT} for open-source",
subagent_type="opensource-packager",
prompt="""
Generate open-source packaging for project.
Project: {STAGING_PATH}
License: {chosen_license}
Project name: {PROJECT_NAME}
Description: {description}
GitHub repo: {github_repo}
Generate:
1. CLAUDE.md (commands, architecture, key files)
2. setup.sh (one-command bootstrap, make executable)
3. README.md (or enhance existing)
4. LICENSE
5. CONTRIBUTING.md
6. .github/ISSUE_TEMPLATE/ (bug_report.md, feature_request.md)
"""
)
步骤 6:最终审查
向用户展示:
开源 Fork 就绪:{PROJECT_NAME}
位置:{STAGING_PATH}
许可证:{license}
生成的文件:
- CLAUDE.md
- setup.sh(可执行)
- README.md
- LICENSE
- CONTRIBUTING.md
- .env.example({N} 个变量)
清理状态:{sanitization_verdict}
后续步骤:
1. 审查:cd {STAGING_PATH}
2. 创建仓库:gh repo create {github_org}/{github_repo} --public
3. 推送:git remote add origin ... && git push -u origin main
继续创建 GitHub 仓库?(yes/no/review first)
步骤 7:GitHub 发布(用户批准后)
cd "{STAGING_PATH}"
gh repo create "{github_org}/{github_repo}" --public --source=. --push --description "{description}"
/opensource verify PROJECT
独立运行清理器。解析路径:如果 PROJECT 包含 /,视为路径。
