跳转至

开源管道技能

通过三阶段管道安全地将任意项目开源:fork(移除机密)→ sanitize(确认干净状态)→ package(CLAUDE.md + setup.sh + README)。

激活时机

  • 当用户说“开源这个项目”或“公开这个”时
  • 当用户想要为公开发布准备私有仓库时
  • 当用户需要在推送到 GitHub 之前移除机密时
  • 当用户调用 /opensource fork、/opensource verify 或 /opensource package 时

命令

命令 操作
/opensource fork PROJECT 完整管道:fork + sanitize + package
/opensource verify PROJECT 对现有仓库运行 sanitizer
/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:运行 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:运行 sanitizer 代理

启动 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。

如果 FAIL: 向用户显示结果。询问:“要修复这些并重新扫描,还是中止?” - 如果修复:应用修复并重新运行 sanitizer(最多重试 3 次 — 3 次 FAIL 后,展示所有结果并要求用户手动修复) - 如果中止:清理暂存目录

如果 PASS 或带 WARNINGS 的 PASS: 进入步骤 5。

步骤 5:运行 packager 代理

启动 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:最终审查

向用户展示:

Open-Source Fork Ready: {PROJECT_NAME}

Location: {STAGING_PATH}
License: {license}
Files generated:
  - CLAUDE.md
  - setup.sh (executable)
  - README.md
  - LICENSE
  - CONTRIBUTING.md
  - .env.example ({N} variables)

Sanitization: {sanitization_verdict}

Next steps:
  1. Review: cd {STAGING_PATH}
  2. Create repo: gh repo create {github_org}/{github_repo} --public
  3. Push: git remote add origin ... && git push -u origin main

Proceed with GitHub creation? (yes/no/review first)

步骤 7:发布到 GitHub(用户批准后)

cd "{STAGING_PATH}"
gh repo create "{github_org}/{github_repo}" --public --source=. --push --description "{description}"

/opensource verify PROJECT

独立运行 sanitizer。解析路径:如果 PROJECT 包含 /,将其作为路径处理。否则检查 $HOME/opensource-staging/PROJECT、$HOME/PROJECT、当前目录。

Agent(
  subagent_type="opensource-sanitizer",
  prompt="Verify sanitization of: {resolved_path}. Run all 6 scan categories and generate SANITIZATION_REPORT.md."
)

/opensource package PROJECT

独立运行 packager。询问“许可证?”和“描述?”之后:

Agent(
  subagent_type="opensource-packager",
  prompt="Package: {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
  • 绝不跳过 sanitizer — 这是安全门
  • 绝不在 sanitizer FAIL 后未修复所有严重结果就继续
  • 绝不在暂存目录中留下 .env、*.pem 或 credentials.json

最佳实践

  • 对于新发布,始终运行完整管道(fork → sanitize → package)
  • 暂存目录会一直保留,直到显式清理 — 用于审查
  • 在公开前,手动修复后重新运行 sanitizer
  • 将机密参数化而不是删除 — 保持项目功能

有关 sanitizer 使用的机密检测模式,请参见 security-review。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC