hello-qm/catgo-lrg/doping

Claude Code and agent skill by hello-qm/catgo-lrg

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when the user asks to dope a material, substitute one element for another, create alloy surfaces, or introduce heteroatoms into a structure.

Install

npx vskill@latest install hello-qm/catgo-lrg/doping

SKILL.md

Substitutional Doping

Overview

Substitutional doping replaces one or more host atoms with dopant atoms. Common applications:

  • Catalyst tuning: Fe-doped NiOOH for OER, N-doped graphene for ORR
  • Alloy surfaces: PtRu, PtNi, CuZn for selectivity control
  • Band engineering: Al-doped ZnO, Nb-doped TiO2
  • Single-atom catalysts: isolated Pt in CeO2, Fe in N-doped carbon

MCP Tool: catgo_structure(action: replace_atom)

Replace a single atom
json
{"tool": "catgo_structure", "arguments": {
"action": "replace_atom",
"atom_index": 5,
"new_element": "Co"
}}

This replaces atom #5 (0-based index) with Co, keeping the same position.

Identify which atom to replace

First, inspect the structure to find the target atom:

json
{"tool": "catgo_view", "arguments": {"action": "get_state"}}

The response lists all atoms with indices, elements, and positions. Select the atom index based on:

  • Element type (replace Ni with Co)
  • Position (surface vs bulk, specific layer)
Replace multiple atoms (alloy)

For a Pt3Ni(111) alloy slab, replace every 4th Pt with Ni:

json
{"tool": "catgo_structure", "arguments": {
"action": "replace_atom", "atom_index": 3, "new_element": "Ni"
}}
json
{"tool": "catgo_structure", "arguments": {
"action": "replace_atom", "atom_index": 7, "new_element": "Ni"
}}
json
{"tool": "catgo_structure", "arguments": {
"action": "replace_atom", "atom_index": 11, "new_element": "Ni"
}}
Verify after doping
json
{"tool": "catgo_view", "arguments": {"action": "get_state"}}

Check: correct composition, dopant in expected position, no structural distortion (will be resolved by geo_opt).

Complete Doping Workflow: Fe-doped NiOOH for OER

Step 1: Fetch and build host structure
json
{"tool": "catgo_fetch", "arguments": {
"action": "crystal", "formula": "NiOOH", "source": "mp"
}}
json
{"tool": "catgo_structure", "arguments": {
"action": "slab", "miller_index": [0, 0, 1],
"min_slab_size": 12.0, "min_vacuum_size": 15.0
}}
json
{"tool": "catgo_structure", "arguments": {
"action": "supercell", "scaling": [2, 2, 1]
}}
Step 2: Replace one Ni with Fe
json
{"tool": "catgo_view", "arguments": {"action": "get_state"}}

Identify a surface Ni atom (e.g., atom_index=8):

json
{"tool": "catgo_structure", "arguments": {
"action": "replace_atom", "atom_index": 8, "new_element": "Fe"
}}
Step 3: Relax doped structure
json
{"tool": "catgo_workflow_engine", "arguments": {
"action": "create", "name": "Fe-doped NiOOH OER"
}}
json
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_doped",
"task_type": "geo_opt",
"params": {"software": "vasp", "ENCUT": 520,
"system_name": "Fe-NiOOH relaxation"}
}}

Python API

python
from catgo.workflow import Workflow
import json
# Load and modify structure
with open("niooh_slab.json") as f:
structure = json.load(f)
# Replace atom in structure dict before workflow
# (Index 8 is a surface Ni atom)
structure["sites"][8]["species"][0]["element"] = "Fe"
wf = Workflow("Fe-doped NiOOH")
inp = wf.add_task("structure_input", structure=json.dumps(structure))
opt = wf.add_task("geo_opt",
structure=inp.output.structure,
software="vasp", ENCUT=520, ISPIN=2)
wf.submit()

Doping Strategies

Surface Doping

Replace atoms in the top 1-2 layers. These directly interact with adsorbates and affect catalytic properties.

json
{"tool": "catgo_view", "arguments": {"action": "get_state"}}

Surface atoms have the highest z-coordinates. Replace those.

Subsurface Doping

Replace atoms in the 2nd or 3rd layer. This modifies the electronic structure of surface atoms (ligand effect) without directly participating in bonding.

Random Alloy

For a random A_x B_(1-x) alloy, replace atoms randomly to match the desired composition. For a 2x2x1 slab with 16 metal atoms:

CompositionAtoms to Replace
Pt3Ni (25% Ni)4 of 16
PtNi (50% Ni)8 of 16
PtNi3 (75% Ni)12 of 16
Ordered Alloy

For L1_0 or L1_2 ordered alloys, replace atoms in a specific pattern. Use catgo_view to identify the sublattice positions.

Magnetic Considerations

Many dopants (Fe, Co, Ni, Mn, Cr) are magnetic. Enable spin polarization:

json
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_doped",
"task_type": "geo_opt",
"params": {
"software": "vasp", "ENCUT": 520,
"ISPIN": 2,
"MAGMOM": "16*0.6 1*5.0 24*0.6",
"system_name": "spin-polarized Fe-NiOOH"
}
}}

Set initial MAGMOM high for the dopant atom (e.g., 5.0 for Fe) and low for the host (e.g., 0.6 for Ni in NiOOH).

DFT+U for Transition Metal Dopants

Localized d-electrons in dopants often require Hubbard U correction:

DopantTypical U (eV)Host Systems
Fe (3d)4.0-5.3Oxides, oxyhydroxides
Co (3d)3.3-3.5Oxides
Ni (3d)6.0-6.4NiO, NiOOH
Mn (3d)3.9-4.0MnO2, perovskites
Ti (3d)3.0-4.0TiO2

Add U parameters via LDAU settings in VASP task params.

Common Pitfalls

  1. Always relax (geo_opt) after doping. The dopant has a different atomic

radius, so the local structure will distort.

  1. For charged dopants (e.g., Al3+ replacing Si4+), the system may need

charge compensation. Consider adding/removing atoms or using a charged cell (not recommended for slabs).

  1. Doping changes atom indices. If you plan to place adsorbates after

doping, re-check atom positions with catgo_view.

  1. For transition metal dopants in oxides, always use ISPIN=2 and

consider DFT+U. Non-magnetic calculations may converge to wrong electronic ground states.

  1. When comparing doped vs undoped systems, use the same supercell size,

k-points, and ENCUT. The doped cell should only differ by the substituted atom.

  1. For single-atom catalysts (SAC), use a large supercell (3x3 or 4x4)

to minimize dopant-dopant periodic interactions.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
176
Repository forks
19
7-day trend score
26

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 1 Aug 2026, 3 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/hello-qm/catgo-lrg/doping/badge)](https://verified-skill.com/skills/hello-qm/catgo-lrg/doping)

Something wrong with this skill or its page? Tell us.