opensource-pipeline

opensource-pipeline

热门

开源管道:分叉、清理并打包私有项目,以安全公开发布。串联3个智能体(分叉器、清理器、打包器)。触发词:'/opensource'、'open source this'、'make this public'、'prepare for open source'。

23万Star
3.5万Fork
更新于 2026/7/21
SKILL.md
readonly只读
name
opensource-pipeline
description

开源管道:分叉、清理并打包私有项目,以安全公开发布。串联3个智能体(分叉器、清理器、打包器)。触发词:'/opensource'、'open source this'、'make this public'、'prepare for open source'。

开源管道技能

通过3阶段管道安全地将任何项目开源:分叉(剥离机密)→ 清理(验证干净)→ 打包CLAUDE.md + setup.sh + README)。

何时激活

  • 用户说“open source this project”或“make this public”
  • 用户想准备一个私有仓库用于公开发布
  • 用户需要在推送到GitHub之前剥离机密
  • 用户调用 /opensource fork/opensource verify/opensource package

命令

命令 操作
/opensource fork PROJECT 完整管道:分叉 + 清理 + 打包
/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="<解析后的绝对路径>"
STAGING_PATH="$HOME/opensource-staging/${PROJECT_NAME}"

询问用户:

  1. "哪个项目?"(如果未找到)
  2. "许可证?(MIT / Apache-2.0 / GPL-3.0 / BSD-3-Clause)"
  3. "GitHub组织或用户名?"(默认:通过 gh api user -q .login 检测)
  4. "GitHub仓库名称?"(默认:项目名称)
  5. "README的描述?"(分析项目以提供建议)
步骤2:创建暂存目录
mkdir -p $HOME/opensource-staging/
步骤3:运行分叉器智能体

生成 opensource-forker 智能体:

Agent(
  description="为开源分叉 {PROJECT}",
  subagent_type="opensource-forker",
  prompt="""
为开源发布分叉项目。

源:{SOURCE_PATH}
目标:{STAGING_PATH}
许可证:{chosen_license}

遵循完整的分叉协议:
1. 复制文件(排除 .git、node_modules、__pycache__、.venv)
2. 剥离所有机密和凭证
3. 用占位符替换内部引用
4. 生成 .env.example
5. 清理 git 历史
6. 在 {STAGING_PATH}/FORK_REPORT.md 生成 FORK_REPORT.md
"""
)

等待完成。读取 {STAGING_PATH}/FORK_REPORT.md

步骤4:运行清理器智能体

生成 opensource-sanitizer 智能体:

Agent(
  description="验证 {PROJECT} 的清理",
  subagent_type="opensource-sanitizer",
  prompt="""
验证开源分叉的清理。

项目:{STAGING_PATH}
源(供参考):{SOURCE_PATH}

运行所有扫描类别:
1. 机密扫描(严重)
2. PII扫描(严重)
3. 内部引用扫描(严重)
4. 危险文件检查(严重)
5. 配置完整性(警告)
6. Git历史审计

在 {STAGING_PATH}/ 内生成 SANITIZATION_REPORT.md,包含 PASS/FAIL 判定。
"""
)

等待完成。读取 {STAGING_PATH}/SANITIZATION_REPORT.md

如果 FAIL: 向用户展示发现。询问:“修复这些问题并重新扫描,还是中止?”

  • 如果修复:应用修复,重新运行清理器(最多重试3次——3次FAIL后,展示所有发现并请用户手动修复)
  • 如果中止:清理暂存目录

如果 PASS 或 PASS WITH WARNINGS: 继续步骤5。

步骤5:运行打包器智能体

生成 opensource-packager 智能体:

Agent(
  description="为开源打包 {PROJECT}",
  subagent_type="opensource-packager",
  prompt="""
为项目生成开源打包。

项目:{STAGING_PATH}
许可证:{chosen_license}
项目名称:{PROJECT_NAME}
描述:{description}
GitHub仓库:{github_repo}

生成:
1. CLAUDE.md(命令、架构、关键文件)
2. setup.sh(一键引导,可执行)
3. README.md(或增强现有)
4. LICENSE
5. CONTRIBUTING.md
6. .github/ISSUE_TEMPLATE/(bug_report.md、feature_request.md)
"""
)
步骤6:最终审查

向用户展示:

开源分叉就绪:{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 包含 /,则视为路径。否则检查 $HOME/opensource-staging/PROJECT,然后 $HOME/PROJECT,再检查当前目录。

Agent(
  subagent_type="opensource-sanitizer",
  prompt="验证清理:{resolved_path}。运行所有6个扫描类别并生成 SANITIZATION_REPORT.md。"
)

/opensource package PROJECT

独立运行打包器。询问“许可证?”和“描述?”,然后:

Agent(
  subagent_type="opensource-packager",
  prompt="打包:{resolved_path} ..."
)

/opensource list

ls -d $HOME/opensource-staging/*/

显示每个项目及其管道进度(FORK_REPORT.md、SANITIZATION_REPORT.md、CLAUDE.md 是否存在)。


/opensource status PROJECT

cat $HOME/opensource-staging/${PROJECT}/SANITIZATION_REPORT.md
cat $HOME/opensource-staging/${PROJECT}/FORK_REPORT.md

暂存布局

$HOME/opensource-staging/
  my-project/
    FORK_REPORT.md           # 来自分叉器智能体
    SANITIZATION_REPORT.md   # 来自清理器智能体
    CLAUDE.md                # 来自打包器智能体
    setup.sh                 # 来自打包器智能体
    README.md                # 来自打包器智能体
    .env.example             # 来自分叉器智能体
    ...                      # 清理后的项目文件

反模式

  • 绝不在未经用户批准的情况下推送到GitHub
  • 绝不跳过清理器——它是安全门
  • 绝不在清理器FAIL且未修复所有严重发现的情况下继续
  • 绝不在暂存目录中保留 .env*.pemcredentials.json

最佳实践

  • 对于新版本,始终运行完整管道(分叉 → 清理 → 打包)
  • 暂存目录会保留直到显式清理——用于审查
  • 在手动修复后、发布前重新运行清理器
  • 参数化机密而不是删除它们——保留项目功能

相关技能

参见 security-review 了解清理器使用的机密检测模式。