Add New Opc Skill
Checklist and automation guide for adding a new skill to the OPC Skills project. Ensures all required files, metadata, logos, and listings are created before release. Use when adding a new skill, publishing a skill, or preparing a skill for release.
MCP get_skill({ skillId: "add-new-opc-skill-600e2a1d" })Use this skill with your agent
Create a free account and connect via MCP
# Add New OPC Skill
Use this skill when adding a new skill to the OPC Skills project. Follow every step below to ensure the skill meets all publishing requirements.
## Pre-flight
Before starting, confirm:
- You are on a feature branch: `feature/skill/<skill-name>` (branched from `develop`)
- The skill name is kebab-case (e.g., `my-new-skill`)
## Checklist
### 1. Skill Directory Structure
Create the skill directory with required files:
```
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** must include YAML frontmatter:
```yaml
---
name: <skill-name>
description: Clear description. Include trigger keywords and "Use when..." contexts.
---
```
Use `template/SKILL.md` as a starting point:
```bash
cp -r template skills/<skill-name>
```
### 2. Skill Logo
Generate a pixel-art style SVG logo matching existing skill logos:
```bash
# 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
```
Verify: `skill-logos/<skill-name>.svg` exists and matches the pixel-art style of other logos.
### 3. skills.json Entry
Add a complete entry to the `skills` array in `skills.json`. All fields are required unless noted:
```json
{
"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>"
}
}
```
**Field notes:**
- `icon`: Use a [Simple Icons](https://simpleicons.org/) name, or generic like `"globe"`, `"archive"`, `"image"`
- `color`: 6-char hex without `#` (e.g., `"6B7280"`)
- `dependencies`: Object with skill names as keys and version ranges as values (e.g., `{"twitter": ">=1.0.0"}`)
- `auth.keys`: Array of `{"env": "VAR_NAME", "url": "https://...", "optional": true/false}`
- `commands`: List of CLI commands the skill exposes (empty array `[]` if instructions-only)
Validate after editing:
```bash
python3 -c "import json; json.load(open('skills.json')); print('valid')"
```
### 4. README.md
Add the skill to the "Included Skills" table in `README.md`:
```markdown
| <img src="./skill-logos/<skill-name>.svg" width="24"> | [<skill-name>](./skills/<skill-name>) | Short description |
```
Insert in the appropriate position within the existing table.
### 5. Website (worker.js)
Add the skill to the hardcoded skills array in `website/worker.js` inside the `fetchCompareData()` function. Find the `],\n };\n}` closing of the skills array and add before it:
```javascript
{
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
Add the skill to the **Skill Compatibility & Dependency Matrix** table:
```markdown
| **<skill-name>** | 1.0.0 | - | - |
```
Add an entry under `## [Unreleased]` (or the release version section):
```markdown
### <skill-name>
#### [1.0.0] - YYYY-MM-DD
- **Added**: Initial release - <description>
```
## Verification
Before committing, verify all items:
```bash
# 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 Workflow
```bash
# 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
```Related Skills
More skills in Software Engineering
Accessibility Standards
Comprehensive web accessibility standards based on WCAG 2.2 AA, with 38+ anti-patterns, legal enforcement context (EAA, ADA Title II), WAI-ARIA patterns, and framework-specific fixes for modern web frameworks and libraries.
Accord
Authoring unified specification packages across Business/Development/Design teams via staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria). No code. Use when authoring cross-team specs, building L0-L3 packages, or aligning Biz/Dev/Design on a single source of truth.
Acquire Codebase Knowledge
Use this skill when the user explicitly asks to map, document, or onboard into an existing codebase. Trigger for prompts like "map this codebase", "document this architecture", "onboard me to this repo", or "create codebase docs". Do not trigger for routine feature implementation, bug fixes, or narrow code edits unless the user asks for repository-level discovery.
Acreadiness Assess
Run the AgentRC readiness assessment on the current repository and produce a static HTML dashboard at reports/index.html. Wraps `npx github:microsoft/agentrc readiness` and hands off rendering to the @ai-readiness-reporter custom agent. Supports policies (--policy) for org-specific scoring. Use when asked to assess, audit, or score the AI readiness of a repo.
Acreadiness Generate Instructions
Generate tailored AI agent instruction files via AgentRC instructions command. Produces .github/copilot-instructions.md (default, recommended for Copilot in VS Code) plus optional per-area .instructions.md files with applyTo globs for monorepos. Use after running /acreadiness-assess to close gaps in the AI Tooling pillar.
Acreadiness Policy
Help the user pick, write, or apply an AgentRC policy. Policies customise readiness scoring by disabling irrelevant checks, overriding impact/level, setting pass-rate thresholds, or chaining org baselines with team overrides. Use when the user asks about strict mode, AI-only scoring, custom weights, CI gating, or wants org-wide standardisation.
Explore Other Categories
Skills from other categories with shared topics
Archive
Archive session learnings, debugging solutions, and deployment logs to .archive/yyyy-mm-dd/ as indexed markdown with searchable tags. Use when completing a significant task, resolving a tricky bug, deploying, or when the user says "archive this". Maintains .archive/MEMORY.md index for cross-session knowledge reuse.
Banner Creator Skill
Create banners using AI image generation. Discuss format/style, generate variations, iterate with user feedback, crop to target ratio. Use when user wants to create a banner, header, hero image, cover image, GitHub banner, Twitter header, or readme banner.
Domain Hunter
Search domains, compare prices, find promo codes, get purchase recommendations. Use when user wants to buy a domain, check domain prices, find domain deals, compare registrars, or search for .ai/.com domains.