3段階のパイプラインを通じて任意のプロジェクトを安全にオープンソース化する: フォーク(シークレット除去)→ サニタイズ(クリーンな状態を確認)→ パッケージ(CLAUDE.md + setup.sh + README)。
/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 |
ステージングされたプロジェクトのレポートを表示 |
完全なパイプライン — メインワークフロー。
プロジェクトパスを解決する。PROJECTに/が含まれる場合、パス(絶対または相対)として扱う。それ以外の場合: 現在の作業ディレクトリ、$HOME/PROJECTをチェックし、見つからない場合はユーザーに尋ねる。
SOURCE_PATH="<解決された絶対パス>"
STAGING_PATH="$HOME/opensource-staging/${PROJECT_NAME}"
ユーザーに尋ねる:
gh api user -q .loginで検出)mkdir -p $HOME/opensource-staging/
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を読む。
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の場合: 結果をユーザーに表示する。「これらを修正して再スキャンしますか、それとも中止しますか?」と尋ねる。
PASSまたはWARNINGS付きPASSの場合: ステップ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)
"""
)
ユーザーに提示する:
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)
cd "{STAGING_PATH}"
gh repo create "{github_org}/{github_repo}" --public --source=. --push --description "{description}"
サニタイザーを独立して実行する。パスを解決: 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."
)
パッケージャーを独立して実行する。「ライセンス?」と「説明?」を尋ねてから:
Agent(
subagent_type="opensource-packager",
prompt="Package: {resolved_path} ..."
)
ls -d $HOME/opensource-staging/*/
FORK_REPORT.md、SANITIZATION_REPORT.md、CLAUDE.mdの存在でパイプラインの進捗を各プロジェクトと共に表示する。
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 # フォーカーエージェントから
... # サニタイズされたプロジェクトファイル
.env、*.pem、またはcredentials.jsonを残すことは絶対にしない
サニタイザーが使用するシークレット検出パターンについてはsecurity-reviewを参照。