オープンソースパイプラインスキル
3段階のパイプラインを通じて、あらゆるプロジェクトを安全にオープンソース化します: Fork (シークレットを除去) → Sanitize (クリーンであることを確認) → Package (CLAUDE.md + setup.sh + README を生成)。
アクティブ化のタイミング
- ユーザーが「このプロジェクトをオープンソース化して」または「これを公開にして」と言った場合
- ユーザーがプライベートリポジトリを公開リリース用に準備したい場合
- ユーザーがGitHubにプッシュする前にシークレットを除去する必要がある場合
- ユーザーが
/opensource fork、/opensource verify、または/opensource packageを呼び出した場合
コマンド
| コマンド | アクション |
|---|---|
/opensource fork PROJECT | フルパイプライン: fork + sanitize + package |
/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}"
ユーザーに質問します:
- 「どのプロジェクトですか?」(見つからなかった場合)
- 「ライセンスは?(MIT / Apache-2.0 / GPL-3.0 / BSD-3-Clause)」
- 「GitHub org またはユーザー名は?」(デフォルト:
gh api user -q .loginで検出) - 「GitHub リポジトリ名は?」(デフォルト: プロジェクト名)
- 「README 用の説明は?」(プロジェクトを分析して提案)
ステップ2: ステージングディレクトリの作成
mkdir -p $HOME/opensource-staging/
ステップ3: Forker エージェントの実行
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 を生成
"""
)
```\n
完了を待ちます。`{STAGING_PATH}/FORK_REPORT.md` を読み取ります。
#### ステップ4: Sanitizer エージェントの実行
`opensource-sanitizer` エージェントを起動:
Agent( description="{PROJECT} のサニタイズを検証", subagent_type="opensource-sanitizer", prompt=""" オープンソースフォークのサニタイズを検証します。
プロジェクト: {STAGING_PATH} ソース(参照用): {SOURCE_PATH}
すべてのスキャンカテゴリを実行:
- シークレットスキャン(CRITICAL)
- PII スキャン(CRITICAL)
- 内部参照スキャン(CRITICAL)
- 危険なファイルチェック(CRITICAL)
- 設定の完全性チェック(WARNING)
- Git 履歴監査
{STAGING_PATH} 内に PASS/FAIL 判定付きの SANITIZATION_REPORT.md を生成。 """ )
完了を待ちます。`{STAGING_PATH}/SANITIZATION_REPORT.md` を読み取ります。
**FAIL の場合:** ユーザーに結果を表示。「これらを修正して再スキャンしますか、それとも中断しますか?」と質問。
- 修正する場合: 修正を適用し、サニタイザーを再実行(最大 3 回の再試行 — 3 回 FAIL した後は、すべての結果を提示し、ユーザーに手動修正を依頼)
- 中断する場合: ステージングディレクトリをクリーンアップ
**PASS または PASS WITH WARNINGS の場合:** ステップ5に進みます。
#### ステップ5: Packager エージェントの実行
`opensource-packager` エージェントを起動:
Agent( description="{PROJECT} をオープンソース用にパッケージ化", subagent_type="opensource-packager", prompt=""" プロジェクト用のオープンソースパッケージを生成します。
プロジェクト: {STAGING_PATH} ライセンス: {chosen_license} プロジェクト名: {PROJECT_NAME} 説明: {description} GitHub リポジトリ: {github_repo}
生成:
- CLAUDE.md(コマンド、アーキテクチャ、主要ファイル)
- setup.sh(ワンコマンドブートストラップ、実行可能にする)
- README.md(または既存のものを拡張)
- LICENSE
- CONTRIBUTING.md
- .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}
次のステップ:
- レビュー: cd {STAGING_PATH}
- リポジトリ作成: gh repo create {github_org}/{github_repo} --public
- プッシュ: git remote add origin ... && git push -u origin main
GitHub 作成を続行しますか?(yes/no/review first)
#### ステップ7: GitHub 公開(ユーザーの承認後)
```bash
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、*.pem、またはcredentials.jsonをステージングディレクトリに残さない
ベストプラクティス
- 新しいリリースでは常にフルパイプライン(fork → sanitize → package)を実行する
- ステージングディレクトリは明示的にクリーンアップされるまで保持される — レビューに使用する
- 公開前に手動修正後は必ずサニタイザーを再実行する
- シークレットは削除するのではなくパラメーター化する — プロジェクトの機能を維持する
関連スキル
サニタイザーで使用されるシークレット検出パターンについては、security-review を参照してください。