Castep Dft — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Castep Dft (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
Aggregate score unchanged between these scans.
The primary manifest — the file an agent reads to learn what this artifact does.
A Claude Code skill that turns Claude into a practical CASTEP DFT assistant — geometry optimization, convergence testing, phonons, NEB diffusion barriers, and electronic structure.
Built from a real HPC battery-materials workflow, not textbook generalities. The troubleshooting guide documents mistakes that actually cost days of compute time — including the `fix_com` NEB trap that aborts every CASTEP NEB run with a misleading Fixed coordinate mismatch error, and whose obvious diagnosis is wrong.
In Claude Code:
/plugin marketplace add yiqingwen0828-dotcom/castep-dft
/plugin install castep-dft@castep-dftThat's it. Talk to Claude about your CASTEP work and the skill activates automatically, or invoke it directly with /castep-dft:castep-dft.
Update later with /plugin marketplace update castep-dft.
<details> <summary>Alternative: install without the marketplace</summary>
Clone the skill straight into your personal skills folder:
git clone https://github.com/yiqingwen0828-dotcom/castep-dft
cp -r castep-dft/plugins/castep-dft/skills/castep-dft ~/.claude/skills/The references also read fine as plain documentation if you don't use Claude Code at all.
</details>
Ask Claude things like:
"Set up a geometry optimization for my FeS₂ cell on SLURM" "My CASTEP SCF won't converge for the Mn-substituted cell — why?" "My NEB run died with 'Fixed coordinate mismatch'" "Walk me through converging cutoff and k-points before I trust this energy" "How do I get a readable band structure for a spin-polarized system?"
and Claude answers with working templates, the right CASTEP keywords, and the known pitfalls for that task.
| Area | What you get |
|---|---|
| Convergence testing | Cutoff + k-point procedure to 1 meV/atom — the step everyone skips and shouldn't |
| Geometry optimization | Standard & strict tolerance tiers; magnetic transition-metal handling (initial spins, spin polarization) |
| Phonons | DFPT vs finite displacement, phonopy integration, how to read soft modes / dynamic instability |
| NEB barriers | CI-NEB setup, the fix_com : F fix explained in depth, frozen-framework vs relaxed interpretation |
| Electronic structure | Clean band plots for spin-polarized systems, DOS/PDOS, d-band centre, band unfolding for disordered (SQS) supercells |
| Troubleshooting | SCF non-convergence in d-electron systems (PBE+U), overflow output, SLURM scheduling (backfill-friendly requests) |
fix_com trap (a taste of what's inside)Every CASTEP NEB run aborts with:
Error: Fixed coordinate mismatch
Fixed coordinates should match in both structures to within 0.0010 AThe tempting diagnosis — "NEB needs an IONIC_CONSTRAINTS block to identify the migrating atom" — is wrong, and self-consistent enough to send you down a dead end for days. The real cause: CASTEP constrains the centre of mass by default (Number of ionic constraints = 3 in your output), and a migrating ion makes the COM differ between endpoints. The fix is one line in the .cell:
fix_com : Freferences/neb.md explains why this is safe for NEB and why the default exists at all. The troubleshooting guide generalizes the lesson: read the error literally before theorizing.
plugins/castep-dft/skills/castep-dft/
├── SKILL.md # entry point: quick reference + 2 end-to-end workflows
├── references/
│ ├── convergence.md # cutoff + k-point testing (1 meV/atom)
│ ├── geometry-optimization.md
│ ├── phonons.md
│ ├── neb.md # NEB + the fix_com trap, explained
│ ├── electronic-structure.md
│ └── troubleshooting.md # SCF, PBE+U, scheduling, read-the-error-literally
├── templates/
│ ├── geomopt.param # standard accuracy
│ ├── geomopt-strict.param # tight tolerances for final/publication runs
│ ├── neb.param # CI-NEB
│ ├── example.cell # annotated structure file
│ └── submit.sh # SLURM batch script
└── scripts/
└── parse_energies.py # walk a tree of .castep files → CSV of energies + substitution energiesExisting DFT-adjacent skills wrap Python libraries (pymatgen, ASE). Nothing targeted CASTEP specifically, and nothing was written from the perspective of what actually goes wrong on a real cluster. This skill is the documentation I wished existed when my NEB run died at 6am.
Corrections and additional war stories welcome — especially CASTEP errors whose first plausible explanation turned out to be wrong. Open an issue or PR.
MIT © Qingwen Yi
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.