oss-ready について
oss-readyは、オープンソースでの共同開発に向けてリポジトリを整えるスキルです。既存の内容を保ちながら、コミュニティ向けファイルやテンプレート、文書、メタデータの追加を段階的に案内します。
主な機能
- 01リポジトリ同期とブランチ作成
- 02プロジェクト分析とコミュニティ文書の追加
- 03GitHubの課題・PRテンプレート作成
- 04文書構成とメタデータの整備
- 05検証と最終ステータスの報告
活用シーン
- 01公開共同開発に向けたリポジトリの準備
- 02貢献・セキュリティ案内の追加
- 03プロジェクト文書とメタデータの標準化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ luongnv89/ skills --skill oss-readyインストール後、Claude Code で/oss-readyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/CODE_OF_CONDUCT.mdLICENSE-MITSECURITY.mdassets/.github/PULL_REQUEST_TEMPLATE.mdassets/.github/ISSUE_TEMPLATE/bug_report.mdfeature_request.mddocs/README.mdevals/evals.jsonreferences/edge-cases.mdfile-specs.mdfinal-report.mdrepo-sync.md詳細
OSS Ready
標準的なコミュニティ向けファイルと GitHub テンプレートを追加して、プロジェクトをプロフェッショナルなオープンソースリポジトリに変えます。
全体を通して、次の2つの用語を使用します。
- 追加編集:既存のファイルには、不足しているセクションまたは行だけを追加します。ユーザーのコンテンツを置き換えたり、言い換えたり、翻訳したり、削除したりしてはいけません。
- プレースホルダー:作成したファイル内、または既存のファイルに実行時に追加した行内にある
PH='\[(YEAR|COPYRIGHT HOLDER|INSERT [A-Z ]+)\]|TODO|TBD|FIXME'の一致箇所です。
編集前のリポジトリ同期(必須)
前提条件:名前付きブランチと origin リモートが設定された git リポジトリであること。Step 0 の前に、references/repo-sync.md のブロックを1回実行してください。最初の失敗時点で停止します。
git rev-parse --git-dirが失敗した場合(git リポジトリではない場合)、停止します。git symbolic-ref --quiet --short HEADが失敗した場合(detached HEAD の場合)、stash または同期を行う前に停止します。git remote get-url originが失敗した場合、停止してユーザーに確認します。git status --porcelainが1行でも出力した場合、git stash push -uで stash します。git fetch origin && git pull --rebase origin "$branch"を実行します。git stash pop --indexで stash を復元します。
ゼロ以外の終了コードが返された場合は、BLOCKED と、ブロックが出力した復旧コマンドを含む最終レポートを表示します。変更を破棄してはいけません。失敗の原因が origin の欠落のみで、ユーザーが続行を承認した場合は、Step 0 に進み、Uncertainty: の下に Repo Sync skipped (no origin) を記載します。
ワークフロー
Step 0 の前に、
references/edge-cases.mdを確認してください。リポジトリに該当するケースがある場合は、まずそこに記載されたとおりに対応します。
Step 0:フィーチャーブランチの作成
- 現在のブランチを確認します:
git branch --show-current。 - デフォルトブランチを確認します:
origin/の接頭辞を付けずにgit symbolic-ref --short refs/remotes/origin/HEADを実行します。失敗した場合はmainを使用します。ただし、masterのみが存在する場合はmasterを使用します。 - 現在のブランチがデフォルトブランチではなく、名前に
ossが含まれている場合は、そのブランチを維持して Step 1 に進みます。 git branch -a --format='%(refname:short)'の出力でfeature/ブランチの数がfeat/ブランチの数を上回る場合は、接頭辞にfeature/を選びます。それ以外の場合はfeat/を選びます。<prefix>oss-readyが存在する場合は、再利用するか別の名前を指定するか、ユーザーに確認します。既存のブランチをリセットしてはいけません。git switch -c <prefix>oss-readyを実行します。再利用する場合はgit switch <name>を実行します。失敗した場合はBLOCKEDで停止します。
Step 1:プロジェクトの分析
references/file-specs.md の Analysis values に従い、技術スタック、目的、既存ファイル、ライセンス、リポジトリ URL、README の言語、公開範囲、入力値を記録します。セキュリティ連絡先と行動規範の連絡先を1つの質問で確認します。技術スタックを特定できない場合は、どの技術スタックを想定するかユーザーに確認します。
Step 2:コアファイルの作成/更新
Step 1 の値を使って README.md と CONTRIBUTING.md を作成します。LICENSE が存在しない場合、またはユーザーが別のライセンスを指定していない場合は、assets/LICENSE-MIT をコピーします。Contributor Covenant 2.0 の CODE_OF_CONDUCT.md と SECURITY.md を assets/ からコピーします。各プレースホルダーを Step 1 の値に置き換えます。セクション一覧とファイルごとのルールについては、references/file-specs.md を参照してください。
使用例はすべて、リポジトリ内のコード、スクリプト、または --help の出力から取得します。コマンドや連絡先を決して作り出してはいけません。コードに根拠がないセクションは省略し、Manual review の下に記載します。
Step 3:GitHub テンプレートの作成
assets/.github/ から、存在しないファイルをそれぞれコピーします:ISSUE_TEMPLATE/bug_report.md、ISSUE_TEMPLATE/feature_request.md、PULL_REQUEST_TEMPLATE.md。.github/ 内の既存ファイルとワークフローはすべて変更せず、そのまま維持します。
Step 4:ドキュメント構造の作成
存在しないファイルをそれぞれ作成します。省略ルールと内容については、references/file-specs.md の docs/ を参照してください。
docs/
├── ARCHITECTURE.md # System design, components
├── DEVELOPMENT.md # Dev setup, debugging
├── DEPLOYMENT.md # Production deployment
└── CHANGELOG.md # Version history (skip when a root CHANGELOG.md exists)
Step 5:プロジェクトメタデータの更新
ルートマニフェストに license、description、repository のうち不足しているフィールドをそれぞれ追加します。値が設定済みのフィールドは上書きしてはいけません。編集後にファイルを解析します。技術スタックごとのフィールドと解析コマンドについては、references/file-specs.md の Project metadata を参照してください。
Step 6: .gitignore を確認する
references/file-specs.md の .gitignore に記載されているスタック用のパターンのうち、不足しているものをそれぞれ追記します。grep -qxF '<pattern>' .gitignore で各パターンを確認します。行は削除しないでください。
Step 7: 検証して報告する
- すべての受け入れ基準を確認します。それぞれについて、理由とともに
pass、fail、not applicableのいずれかを記録します。 - 上記の Placeholder で定義されているとおりに
PHを設定します。作成した各ファイルに対して、プレースホルダーのgrepを実行します:grep -nE "$PH" <file>。 - 更新した各ファイルに追加した行に対して実行します:
git diff -U0 -- <file> | grep -E '^\+' | grep -E "$PH"。 git status --porcelainを実行します。DまたはDで始まる行がないことを確認します。- 最終レポートを出力します。
コミットやプッシュはしないでください。ユーザーがブランチを確認してコミットします。
ステップ完了レポート
ステップ 1~7 の各ステップの後に、次の形式でレポートを出力します(例:references/final-report.md)。
◆ [Step Name] ([step N of 7] — [context])
··································································
[Check 1]: √ pass
[Check 2]: × fail — [reason]
[Criteria]: √ N/M met
____________________________
Result: PASS | FAIL | PARTIAL
各チェックには、そのステップで検証する内容に基づいた名前を付けます。ステップ 0 ではレポートを出力しません。ステップ 0 または 1 が失敗した場合は、BLOCKED を出力して停止します。ステップ 2~6 のいずれかで FAIL または PARTIAL が報告された場合も処理を続けますが、実行結果は PARTIAL となります。ステップ 7 は、ステップ 2 が開始された場合に実行します。
最終レポート
最後のステップレポートの後、チャットに最終レポートを 1 件出力します。依頼がない限り、ファイルには書き込みません。次の 4 部構成とし、順番を守ってください。
Result:ステータス語、リポジトリとブランチ、PARTIALまたはBLOCKEDとなった理由。Evidence:作成・更新したファイルと、実行した各ステップ 7 のチェック結果。Uncertainty:残っているプレースホルダー、未実行のチェックとその理由、未テストの動作。Decision:必要な承認、またはNo approval needed.に続けて、ユーザーが行う必要のある残りの作業。
最初に一致したステータス規則を適用してください。
BLOCKED:ステップ 7 より前に実行が停止し、対象リポジトリ内のファイルが一切作成・変更されていない。PARTIAL:該当するチェックに失敗または未実行のものがある、プレースホルダーが残っている、ステップでFAILまたはPARTIALが報告された、あるいはステップ 7 の完了前に実行が停止した。COMPLETE:該当するすべてのチェックに合格し、プレースホルダーのgrepで一致がなく、ステップ 1~7 のすべてでPASSが報告された。
not applicable は、references/final-report.md に記載された理由と、結果表、例、読者向けチェックがある場合に限り使用できます。それ以外のチェックの省略は、未実行として扱います。
受け入れ基準
ステップ 7 では、各チェックに test -f、grep、git、または目視確認を使用します。
-
LICENSEが存在する。新規作成した MIT ライセンスファイルはgrep -c "MIT License" LICENSE(または指定されたライセンスのタイトル)に合格する。既存ファイルは変更されていない:git diff --quiet -- LICENSE。 -
README.mdが 40 行以上で、Installation、Usage、License の各セクションがある。英語の場合、grep -ciE "^#+ .*(install|usage|license)" README.mdの結果が 3 以上であること。別の言語の場合は、見出しを目視で確認する。 -
CONTRIBUTING.mdが課題トラッカーとブランチ作成/PR のワークフローに言及している:grep -iE "issue|pull request|branch" CONTRIBUTING.md。 -
CODE_OF_CONDUCT.mdが Contributor Covenant に言及している:grep -i "contributor covenant" CODE_OF_CONDUCT.md。 -
SECURITY.mdに脆弱性報告用の連絡先が記載されている:grep -E "@|https?://" SECURITY.md。 -
.github/ISSUE_TEMPLATE/bug_report.mdとfeature_request.mdが存在し、YAML フロントマター(name:、about:)を含んでいる。 -
.github/PULL_REQUEST_TEMPLATE.mdにチェックリスト(- [ ])が含まれている。 - 実行中に作成した
docs/内の各ファイルが#見出しで始まっている:head -1 <file>。 -
.gitignoreにスタック用のステップ 6 の各パターンが含まれている。 - マニフェスト(
package.json、pyproject.toml、Cargo.toml)にlicense、description、repositoryが宣言されており、引き続き解析可能である。 - プレースホルダーの
grepで一致が見つからない。 - 以前にコミットされたファイルが削除されていない(ステップ 7 の項目 4)。
- 最終レポートが
Result:とステータス語で始まり、残りの 3 部を含み、references/final-report.mdの読者向けチェックに合格している。
期待される出力
README.md が一部作成されている TypeScript CLI で一連の作業を完了した場合、最後は次のようになります。
Result: COMPLETE — acme/tsgrep on feat/oss-ready
Evidence:
Created: LICENSE (MIT, 2026 Jane Doe), CONTRIBUTING.md,
CODE_OF_CONDUCT.md ([email protected]), SECURITY.md ([email protected]),
.github/ISSUE_TEMPLATE/bug_report.md, feature_request.md,
.github/PULL_REQUEST_TEMPLATE.md, docs/ (4 files)
Updated: README.md (+ Quick Start, Usage, License badge),
package.json (+ license, repository), .gitignore (+ dist/, .env)
Acceptance criteria: 13/13 pass. Placeholder grep: no matches. No deleted files.
Uncertainty: README commands copied from package.json scripts, not executed.
Decision: No approval needed.
Remaining action: confirm both contact addresses are monitored.
Remaining action: review and commit feat/oss-ready.
出力する前に、記載された各ファイルの存在を確認してください(test -f)。
エッジケース
検出方法とステータスへの影響を含む完全な一覧は、references/edge-cases.md を参照してください。要点は次のとおりです。
- 既存の MIT 以外の LICENSE、
.github/内のファイル、またはCODE_OF_CONDUCT.mdやSECURITY.md内のユーザーコンテンツは上書きしないでください。 - リポジトリがプライベートまたは内部向けの場合、
originがない場合、またはスタックを検出できない場合は、先に確認してください。 - ユーザーがサブパッケージを指定しない限り、モノレポではルートのマニフェストのみを更新してください。
- HEAD が切り離されている場合、Git リポジトリの外にいる場合、または stash、同期、復元に失敗した場合は、停止してください。変更を破棄してはいけません。
- README の言語とルートの
CHANGELOG.mdを維持してください。
アセットと参考資料
assets/:LICENSE-MIT、CODE_OF_CONDUCT.md(Contributor Covenant 2.0)、SECURITY.md、および.github/の issue と PR のテンプレートreferences/repo-sync.md:Repo Sync ブロックreferences/file-specs.md:分析値、ファイルごとの内容、入力値、メタデータ、.gitignorereferences/final-report.md:ステータスのルール、結果の表、例、読者による確認事項references/edge-cases.md:各エッジケースの検出、対応、ステータス