release-code
論文発表に合わせて研究コードを一般公開するために、GitHubリポジトリを作成したり、コードをパッケージ化したり、再現性を確保したりするなど、オープンソース化に必要な準備作業を支援するSkill。
📜 元の英語説明(参考)
Prepare and publish a research code repository for public release alongside a paper (arXiv, conference, GitHub). Use when the user wants to open-source code, create a GitHub release, package a code submission, make code public, or prepare a reproducibility release.
🇯🇵 日本人クリエイター向け解説
論文発表に合わせて研究コードを一般公開するために、GitHubリポジトリを作成したり、コードをパッケージ化したり、再現性を確保したりするなど、オープンソース化に必要な準備作業を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o release-code.zip https://jpskill.com/download/8055.zip && unzip -o release-code.zip && rm release-code.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/8055.zip -OutFile "$d\release-code.zip"; Expand-Archive "$d\release-code.zip" -DestinationPath $d -Force; ri "$d\release-code.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
release-code.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
release-codeフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
リリースコード
研究用コードリポジトリを一般公開するために準備します。セキュリティ上の問題を監査し、不足しているアセット(README、引用、ライセンス)を生成し、バージョンにタグを付け、GitHubリリースを作成します。
Skillディレクトリのレイアウト
<installed-skill-dir>/
├── SKILL.md
├── checklist.md # 詳細な項目別チェックリストのリファレンス
└── templates/
├── README_ml_paper.md # ML論文リポジトリ用のREADMEテンプレート
└── CITATION.cff # 引用ファイルテンプレート
従うべき手順
1. リリースのコンテキストを理解する
単一のメッセージでユーザーに尋ねます。
- 論文情報: タイトル、著者、発表場所/年(例: "CVPR 2025")、arXiv IDまたはURL(利用可能な場合)
- リリースの種類: フルコードリリース / 最小限の再現性パッケージ / 匿名会議投稿?
- ライセンス: MIT / Apache-2.0 / CC-BY-4.0 / その他?(デフォルト: コードはMIT、モデル/データはCC-BY-4.0)
- 含まれるもの: 学習コード?評価?事前学習済みウェイト?データセット?デモ?
- バージョンタグ: 例:
v1.0.0(デフォルト: 初回リリースはv1.0.0) - GitHubリリース?: リリースノート付きでGitHubリリースを作成しますか?(はい/いいえ)
- モデルウェイト: 事前学習済みウェイトは利用可能ですか?もしそうなら、どこでホストされますか?(HuggingFace Hub / Google Drive / プロジェクトページ)
2. リポジトリを監査する
次のチェックを実行します(出力を黙って読み、ユーザーに概要を報告します)。
2a. セキュリティスキャン — シークレットと認証情報
# 一般的なシークレットパターンをチェック
git -C "$(git rev-parse --show-toplevel)" log --all --oneline | head -5
grep -rI --include="*.py" --include="*.yaml" --include="*.json" --include="*.env" \
-E "(password|secret|api_key|token|credential|private_key)\s*=\s*['\"][^'\"]{6}" \
"$(git rev-parse --show-toplevel)" 2>/dev/null | head -20
2b. 大きなファイルのチェック
# リポジトリにあるべきではない大きなファイルを見つける
find "$(git rev-parse --show-toplevel)" -type f -size +50M \
! -path "*/.git/*" ! -path "*/outputs/*" ! -path "*/wandb/*" 2>/dev/null
2c. センシティブなファイルパターン
# 公開すべきでないファイルをチェック
find "$(git rev-parse --show-toplevel)" -type f \( \
-name ".env" -o -name "*.pem" -o -name "*.key" -o \
-name "secrets.yaml" -o -name "credentials.json" \
\) ! -path "*/.git/*" 2>/dev/null
2d. 既存のものをチェック
ROOT="$(git rev-parse --show-toplevel)"
for f in README.md LICENSE CITATION.cff .gitignore requirements.txt pyproject.toml setup.py; do
[ -f "$ROOT/$f" ] && echo "EXISTS: $f" || echo "MISSING: $f"
done
2e. Gitステータス
git -C "$(git rev-parse --show-toplevel)" status --short
git -C "$(git rev-parse --show-toplevel)" log --oneline -5
監査結果をチェックリストとしてユーザーに報告します。
- 🔴 BLOCKER — リリース前に修正する必要がある(シークレットが見つかった、認証情報、大きなバイナリ)
- 🟡 WARNING — 対処することを推奨する(READMEがない、ライセンスがない、.gitignoreがない)
- 🟢 OK — すでに良好な状態
続行する前に、ユーザーにブロッカーを修正するように依頼します。
3. 不足しているファイルを生成する
2dの監査に基づいて、不足しているファイルを生成します。既存のファイルを上書きする前に、ユーザーの希望を確認してください。
LICENSE
不足している場合は、適切なライセンスファイルを生成します。
- MIT (MLコードで最も一般的):
MIT License Copyright (c) {YEAR} {AUTHORS} [標準的なMITテキスト] - Apache-2.0: 標準のApache 2.0テキストを使用
- CC-BY-4.0: ユーザーが指定した場合、データ/モデル用
{PROJECT_ROOT}/LICENSEに書き込みます。
CITATION.cff
<installed-skill-dir>/templates/CITATION.cffからテンプレートを読み込みます。
プレースホルダーを埋めます。
| プレースホルダー | 値 |
|---|---|
| {TITLE} | 論文タイトル |
| {AUTHORS_LIST} | YAMLリストとしての著者(テンプレート形式を参照) |
| {YEAR} | 出版年 |
| {VENUE} | 会議/ジャーナル名 |
| {ARXIV_ID} | arXiv ID(利用可能な場合) |
| {GITHUB_REPO} | github.com/username/repo |
| {DATE_RELEASED} | 今日の日付 (YYYY-MM-DD) |
{PROJECT_ROOT}/CITATION.cffに書き込みます。
README.md
READMEがない場合、または骨格だけの場合(< 50行):
<installed-skill-dir>/templates/README_ml_paper.mdからテンプレートを読み込みます。
すべてのプレースホルダーを埋めます。ユーザーがコンテンツを提供する必要がある場所に[TODO: ...]マーカーを残します(例:正確なパフォーマンス数値、データセットのダウンロードリンク)。
既存の実質的なREADMEを上書きしないでください — 代わりに、どのセクションが欠落しているかを特定し、それらを追加することを提案します。
.gitignore
不足している場合は、Python/MLの.gitignoreを生成します。
# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
dist/
build/
.venv/
venv/
# ML outputs (keep jobs/ but ignore outputs/)
outputs/
wandb/
*.ckpt
*.pt
*.pth
*.pkl
runs/
lightning_logs/
# Data (large files)
data/
datasets/
# Secrets
.env
*.pem
*.key
secrets.yaml
credentials.json
# IDE
.vscode/settings.json
.idea/
*.DS_Store
4. リリース前チェックリストのレビュー
完全な項目リストについては、<installed-skill-dir>/checklist.mdをお読みください。
カテゴリ別にグループ化された凝縮されたチェックリストをユーザーに提示します。各項目について、ステータスを報告します(✅ 完了 / ⚠️ 要注意 / ❌ 欠落):
📁 リポジトリの衛生状態
✅ .gitignore が outputs/, wandb/, *.ckpt をカバーしている
⚠️ outputs/ ディレクトリが存在する — コミットされていないことを確認
📄 ドキュメント
✅ README.md が存在する (142 行)
❌ CITATION.cff がない — 生成する
⚠️ README に "Pre-trained Models" セクションがない
🔐 セキュリティ
✅ シークレットは検出されなかった
✅ git履歴に大きなファイルはない
📦 再現性
✅ requirements.txt / pyproject.toml が存在する
⚠️ condaユーザー向けの environment.yml がない
⚠️ Dockerfile がない
⚖️ 法的
✅ LICENSE (MIT) が存在する
尋ねます:「タグ付けと公開に進む準備ができていますか、それとも最初に上記を修正しますか?」
5. コミットとタグ
ユーザーが確認したら:
ROOT="$(git rev-parse --show-toplevel)"
# 新規/変更された追跡対象ファイルのみをステージングする(追跡対象外の出力は除く)
git -C "$ROOT" add LICENSE CITATION.cff README.md .gitignore 2>/dev/null || true
git -C "$ROOT" diff --staged --stat
ユーザーにステージングされた変更を確認するように依頼し、コミットします。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Release Code
Prepare a research code repository for public release: audit for security issues, generate missing assets (README, citation, license), tag the version, and create a GitHub release.
Skill Directory Layout
<installed-skill-dir>/
├── SKILL.md
├── checklist.md # Detailed item-by-item checklist reference
└── templates/
├── README_ml_paper.md # README template for ML paper repos
└── CITATION.cff # Citation file template
Steps to Follow
1. Understand the release context
Ask the user in a single message:
- Paper info: Title, authors, venue/year (e.g. "CVPR 2025"), arXiv ID or URL (if available)
- Release type: Full code release / minimal reproducibility package / anonymous conference submission?
- License: MIT / Apache-2.0 / CC-BY-4.0 / other? (default: MIT for code, CC-BY-4.0 for models/data)
- What's included: Training code? Evaluation? Pre-trained weights? Datasets? Demo?
- Version tag: e.g.
v1.0.0(default:v1.0.0for first release) - GitHub release?: Create a GitHub release with release notes? (yes/no)
- Model weights: Are pre-trained weights available? If so, where will they be hosted? (HuggingFace Hub / Google Drive / project page)
2. Audit the repository
Run the following checks (read output silently, report summary to user):
2a. Security scan — secrets and credentials
# Check for common secret patterns
git -C "$(git rev-parse --show-toplevel)" log --all --oneline | head -5
grep -rI --include="*.py" --include="*.yaml" --include="*.json" --include="*.env" \
-E "(password|secret|api_key|token|credential|private_key)\s*=\s*['\"][^'\"]{6}" \
"$(git rev-parse --show-toplevel)" 2>/dev/null | head -20
2b. Large files check
# Find large files that shouldn't be in the repo
find "$(git rev-parse --show-toplevel)" -type f -size +50M \
! -path "*/.git/*" ! -path "*/outputs/*" ! -path "*/wandb/*" 2>/dev/null
2c. Sensitive file patterns
# Check for files that should not be public
find "$(git rev-parse --show-toplevel)" -type f \( \
-name ".env" -o -name "*.pem" -o -name "*.key" -o \
-name "secrets.yaml" -o -name "credentials.json" \
\) ! -path "*/.git/*" 2>/dev/null
2d. Check what already exists
ROOT="$(git rev-parse --show-toplevel)"
for f in README.md LICENSE CITATION.cff .gitignore requirements.txt pyproject.toml setup.py; do
[ -f "$ROOT/$f" ] && echo "EXISTS: $f" || echo "MISSING: $f"
done
2e. Git status
git -C "$(git rev-parse --show-toplevel)" status --short
git -C "$(git rev-parse --show-toplevel)" log --oneline -5
Report audit findings to the user as a checklist:
- 🔴 BLOCKER — must fix before release (secrets found, credentials, large binaries)
- 🟡 WARNING — recommended to address (missing README, no license, no .gitignore)
- 🟢 OK — already in good shape
Ask the user to fix any blockers before continuing.
3. Generate missing files
Based on the 2d audit, generate any missing files. Ask the user's preference before overwriting existing files.
LICENSE
If missing, generate the appropriate license file:
- MIT (most common for ML code):
MIT License Copyright (c) {YEAR} {AUTHORS} [standard MIT text] - Apache-2.0: Use standard Apache 2.0 text
- CC-BY-4.0: For data/models if user specified
Write to {PROJECT_ROOT}/LICENSE.
CITATION.cff
Read the template from <installed-skill-dir>/templates/CITATION.cff.
Fill in placeholders:
| Placeholder | Value |
|---|---|
| {TITLE} | paper title |
| {AUTHORS_LIST} | authors as YAML list (see template format) |
| {YEAR} | publication year |
| {VENUE} | conference/journal name |
| {ARXIV_ID} | arXiv ID (if available) |
| {GITHUB_REPO} | github.com/username/repo |
| {DATE_RELEASED} | today's date (YYYY-MM-DD) |
Write to {PROJECT_ROOT}/CITATION.cff.
README.md
If README is missing or skeletal (< 50 lines):
Read the template from <installed-skill-dir>/templates/README_ml_paper.md.
Fill in all placeholders. Leave [TODO: ...] markers where the user must provide content (e.g., exact performance numbers, dataset download links).
Do NOT overwrite a substantial existing README — instead, identify what sections are missing and offer to append them.
.gitignore
If missing, generate a Python/ML .gitignore:
# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
dist/
build/
.venv/
venv/
# ML outputs (keep jobs/ but ignore outputs/)
outputs/
wandb/
*.ckpt
*.pt
*.pth
*.pkl
runs/
lightning_logs/
# Data (large files)
data/
datasets/
# Secrets
.env
*.pem
*.key
secrets.yaml
credentials.json
# IDE
.vscode/settings.json
.idea/
*.DS_Store
4. Pre-release checklist review
Read <installed-skill-dir>/checklist.md for the full item list.
Present the user with a condensed checklist grouped by category. For each item, report status (✅ done / ⚠️ needs attention / ❌ missing):
📁 Repository hygiene
✅ .gitignore covers outputs/, wandb/, *.ckpt
⚠️ outputs/ directory exists — confirm not committed
📄 Documentation
✅ README.md present (142 lines)
❌ No CITATION.cff — will generate
⚠️ README missing "Pre-trained Models" section
🔐 Security
✅ No secrets detected
✅ No large files in git history
📦 Reproducibility
✅ requirements.txt / pyproject.toml present
⚠️ No environment.yml for conda users
⚠️ No Dockerfile
⚖️ Legal
✅ LICENSE (MIT) present
Ask: "Are you ready to proceed with tagging and publishing, or do you want to fix any of the above first?"
5. Commit and tag
Once the user confirms:
ROOT="$(git rev-parse --show-toplevel)"
# Stage only new/modified tracked files (not untracked outputs)
git -C "$ROOT" add LICENSE CITATION.cff README.md .gitignore 2>/dev/null || true
git -C "$ROOT" diff --staged --stat
Ask the user to confirm the staged changes, then commit:
git -C "$ROOT" commit -m "chore: prepare code for public release ({VERSION})"
Create annotated tag:
git -C "$ROOT" tag -a "{VERSION}" -m "$(cat <<'EOF'
Release {VERSION} — {PAPER_TITLE}
Published at {VENUE}
Paper: {PAPER_URL}
Includes: {WHAT_INCLUDED}
EOF
)"
Ask: "Push commit and tag to origin?"
CURRENT_BRANCH="$(git -C "$ROOT" branch --show-current)"
git -C "$ROOT" push origin "$CURRENT_BRANCH"
git -C "$ROOT" push origin "{VERSION}"
6. GitHub Release (optional)
If the user requested a GitHub release:
Check if gh is available:
gh --version 2>/dev/null && echo "gh available" || echo "gh not found"
If available, draft the release notes and create the release:
gh release create "{VERSION}" \
--title "{PAPER_TITLE} ({VERSION})" \
--notes "$(cat <<'EOF'
## {PAPER_TITLE}
**{VENUE}** | [Paper]({PAPER_URL}) | [Project Page]({PROJECT_PAGE_URL})
### What's included
{INCLUDED_ITEMS}
### Installation
\`\`\`bash
pip install -r requirements.txt
\`\`\`
### Citation
\`\`\`bibtex
{BIBTEX}
\`\`\`
EOF
)"
If gh is not available, print the release notes as text for the user to paste into GitHub.
7. Summary and next steps
Print a final summary:
✅ Release {VERSION} complete!
Files generated/updated:
• LICENSE
• CITATION.cff
• README.md
• .gitignore
Git:
• Commit: {COMMIT_HASH}
• Tag: {VERSION} → pushed to origin
GitHub:
• Release: https://github.com/{REPO}/releases/tag/{VERSION}
Recommended next steps:
□ Upload pre-trained weights to HuggingFace Hub / project page
□ Add repo link to the paper's arXiv abstract page
□ Tweet / post about the release
□ Email the mailing list / post to r/MachineLearning
□ Add a "Code" badge to the paper PDF (camera-ready only)
Handling Anonymous Submissions
When the user says this is for an anonymous conference submission:
- Do NOT create a public GitHub release.
- Do NOT include author names in any committed files.
- Generate an anonymous zip package instead:
ROOT="$(git rev-parse --show-toplevel)" PROJ=$(basename "$ROOT") git -C "$ROOT" archive --format=zip HEAD -o "/tmp/${PROJ}-anonymous.zip" echo "Anonymous zip: /tmp/${PROJ}-anonymous.zip" - Check the zip contents for any author-identifying information before submission.
- Remind the user to anonymize: commit messages visible via git log, personal paths in configs, email addresses in code comments.
Common Patterns
HuggingFace Hub model upload
When the user wants to push weights to HuggingFace:
# Requires: pip install huggingface_hub
python -c "
from huggingface_hub import HfApi
api = HfApi()
api.upload_folder(
folder_path='checkpoints/',
repo_id='username/model-name',
repo_type='model',
)
"
Adding a "Code" badge to README
[](https://github.com/username/repo)
[](https://arxiv.org/abs/2401.00000)
[](LICENSE)
Paper with Code link
After release, submit to paperswithcode.com to link the repository to the paper automatically.