mcpField
A
add-new-opc-skill

add-new-opc-skill

github.com/resciencelabエージェントワークフロー1.9k51 回インストール1 日前に更新
リポジトリ

add-new-opc-skill について

OPC Skills プロジェクトにスキルを追加するコントリビューター向けの手順書です。必要なファイルやメタデータ、公開情報の更新に加え、検証と Git の手順を説明します。

主な機能

  1. 01スキルのディレクトリとファイル要件
  2. 02YAML フロントマターの指針
  3. 03ロゴとメタデータの設定
  4. 04README と変更履歴の更新
  5. 05検証と Git ワークフロー

活用シーン

  1. 01OPC スキルディレクトリの作成
  2. 02プロジェクトメタデータへの登録
  3. 03スキル公開の準備
  4. 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

コメント