add-new-opc-skill について
OPC Skills プロジェクトにスキルを追加するコントリビューター向けの手順書です。必要なファイルやメタデータ、公開情報の更新に加え、検証と Git の手順を説明します。
主な機能
- 01スキルのディレクトリとファイル要件
- 02YAML フロントマターの指針
- 03ロゴとメタデータの設定
- 04README と変更履歴の更新
- 05検証と Git ワークフロー
活用シーン
- 01OPC スキルディレクトリの作成
- 02プロジェクトメタデータへの登録
- 03スキル公開の準備
- 04コミット前の変更確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ resciencelab/ opc-skills --skill add-new-opc-skillインストール後、Claude Code で/add-new-opc-skillを入力して読み込まれたか確認します。
詳細
新しい OPC スキルを追加する
OPC Skills プロジェクトに新しいスキルを追加する際は、このスキルを使用してください。スキルが公開要件をすべて満たすよう、以下の手順をすべて実行してください。
事前確認
作業を始める前に、以下を確認してください。
- フィーチャーブランチ
feature/skill/<skill-name>(developから分岐)にいること - スキル名がケバブケースであること(例:
my-new-skill)
チェックリスト
1. スキルのディレクトリー構成
必須ファイルを含むスキルディレクトリーを作成します。
skills/<skill-name>/
├── SKILL.md (required) Main skill documentation
├── scripts/ (if skill has scripts)
│ └── *.py / *.sh
├── examples/ (recommended) Usage examples
│ └── *.md
└── references/ (optional) API docs, templates
└── *.md
SKILL.md には YAML フロントマターを含める必要があります。
---
name: <skill-name>
description: Clear description. Include trigger keywords and "Use when..." contexts.
---
template/SKILL.md をひな形として使用してください。
cp -r template skills/<skill-name>
2. スキルのロゴ
既存のスキルロゴに合わせたピクセルアートスタイルの SVG ロゴを作成します。
# Use the logo-creator skill
python3 skills/nanobanana/scripts/batch_generate.py \
"Pixel art <subject> logo, 8-bit retro style, black pixels on white background, minimalist icon, clean crisp edges, no text, centered" \
-n 20 --ratio 1:1 \
-d .skill-archive/logo-creator/<date>-<skill-name> \
-p logo
# Open preview to pick a logo
cp skills/logo-creator/templates/preview.html .skill-archive/logo-creator/<date>-<skill-name>/
open .skill-archive/logo-creator/<date>-<skill-name>/preview.html
# After picking (e.g., #5):
python3 skills/logo-creator/scripts/crop_logo.py <input>.png <output>-cropped.png
python3 skills/logo-creator/scripts/vectorize.py <output>-cropped.png skill-logos/<skill-name>.svg
確認:skill-logos/<skill-name>.svg が存在し、他のロゴと同じピクセルアートスタイルになっていること。
3. skills.json のエントリー
skills.json の skills 配列に、必要な情報をすべて含むエントリーを追加します。特に記載がない限り、すべてのフィールドが必須です。
{
"name": "<skill-name>",
"version": "1.0.0",
"description": "Full description of the skill.",
"logo": "https://raw.githubusercontent.com/ReScienceLab/opc-skills/main/skill-logos/<skill-name>.svg",
"icon": "<simpleicons-name>",
"color": "<hex-without-hash>",
"triggers": ["trigger1", "trigger2"],
"dependencies": {},
"auth": {
"required": false,
"type": null,
"keys": []
},
"install": {
"user": {
"claude": "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a claude",
"droid": "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a droid",
"opencode": "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a opencode",
"codex": "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a codex"
},
"project": {
"claude": "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
"droid": "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
"cursor": "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
"opencode": "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
"codex": "npx skills add ReScienceLab/opc-skills --skill <skill-name>"
}
},
"commands": [
"python3 scripts/example.py \"{input}\""
],
"links": {
"github": "https://github.com/ReScienceLab/opc-skills/tree/main/skills/<skill-name>"
}
}
フィールドの注記:
icon:Simple Icons の名前(Simple Icons)、または"globe"、"archive"、"image"などの汎用アイコンを使用しますcolor:#を付けない6文字の16進数(例:"6B7280")dependencies:スキル名をキー、バージョン範囲を値とするオブジェクト(例:{"twitter": ">=1.0.0"})auth.keys:{"env": "VAR_NAME", "url": "https://...", "optional": true/false}の配列commands:スキルが提供する CLI コマンドのリスト(手順のみの場合は空の配列[])
編集後に検証します。
python3 -c "import json; json.load(open('skills.json')); print('valid')"
4. README.md
README.md の「Included Skills」テーブルにスキルを追加します。
| <img src="./skill-logos/<skill-name>.svg" width="24"> | [<skill-name>](./skills/<skill-name>) | Short description |
既存のテーブル内の適切な位置に挿入してください。
5. ウェブサイト(worker.js)
website/worker.js の fetchCompareData() 関数にあるハードコードされたスキル配列に、スキルを追加します。スキル配列の閉じ部分 ],\n };\n} を見つけ、その直前に追加してください。
{
name: "<skill-name>",
version: "1.0.0",
description: "<description>",
icon: "<icon>",
color: "<color>",
triggers: ["trigger1", "trigger2"],
dependencies: [],
auth: { required: false, note: "..." },
install: {
user: {
claude: "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a claude",
droid: "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a droid",
opencode: "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a opencode",
codex: "npx skills add ReScienceLab/opc-skills --skill <skill-name> -a codex",
},
project: {
claude: "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
droid: "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
cursor: "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
opencode: "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
codex: "npx skills add ReScienceLab/opc-skills --skill <skill-name>",
},
},
commands: [],
links: {
github: "https://github.com/ReScienceLab/opc-skills/tree/main/skills/<skill-name>",
},
},
6. CHANGELOG.md
Skill Compatibility & Dependency Matrix テーブルにスキルを追加します。
| **<skill-name>** | 1.0.0 | - | - |
## [Unreleased](またはリリースバージョンのセクション)にエントリーを追加します。
### <skill-name>
#### [1.0.0] - YYYY-MM-DD
- **Added**: Initial release - <description>
検証
コミットする前に、すべての項目を確認してください。
# 1. SKILL.md exists with valid frontmatter
head -5 skills/<skill-name>/SKILL.md
# 2. Logo SVG exists
ls -la skill-logos/<skill-name>.svg
# 3. skills.json is valid JSON with all fields
python3 -c "
import json
config = json.load(open('skills.json'))
skill = [s for s in config['skills'] if s['name'] == '<skill-name>'][0]
required = ['name','version','description','logo','icon','color','triggers','dependencies','auth','install','links']
missing = [f for f in required if f not in skill]
print('PASS' if not missing else f'MISSING: {missing}')
"
# 4. README.md lists the skill
grep '<skill-name>' README.md
# 5. worker.js has the skill
grep '<skill-name>' website/worker.js
# 6. CHANGELOG.md has the skill in matrix
grep '<skill-name>' CHANGELOG.md
Git ワークフロー
# Branch
git checkout develop && git pull
git checkout -b feature/skill/<skill-name>
# Commit
git add skills/<skill-name>/ skill-logos/<skill-name>.svg skills.json README.md website/worker.js CHANGELOG.md
git commit -m "feat(skill): add <skill-name> skill"
# PR to develop
git push -u origin feature/skill/<skill-name>
gh pr create --base develop