protein-design-workflow — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited protein-design-workflow (Agent Skill) 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.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Target Preparation --> Backbone Generation --> Sequence Design
| | |
v v v
(pdb skill) (rfdiffusion) (proteinmpnn)
| |
v v
Structure Validation --> Filtering
| |
v v
(alphafold/chai) (protein-qc)# Download from PDB
curl -o target.pdb "https://files.rcsb.org/download/XXXX.pdb"# Extract target chain
# Remove waters, ligands if needed
# Trim to binding region + 10A bufferOutput: target_prepared.pdb, hotspot list
modal run modal_rfdiffusion.py \
--pdb target_prepared.pdb \
--contigs "A1-150/0 70-100" \
--hotspot "A45,A67,A89" \
--num-designs 500modal run modal_bindcraft.py \
--target-pdb target_prepared.pdb \
--hotspots "A45,A67,A89" \
--num-designs 100Output: 100-500 backbone PDBs
for backbone in backbones/*.pdb; do
modal run modal_proteinmpnn.py \
--pdb-path "$backbone" \
--num-seq-per-target 8 \
--sampling-temp 0.1
doneOutput: 8 sequences per backbone (800-4000 total)
# Prepare FASTA with binder + target
# binder:target format for multimer
modal run modal_colabfold.py \
--input-faa all_sequences.fasta \
--out-dir predictions/Output: AF2 predictions with pLDDT, ipTM, PAE
import pandas as pd
# Load metrics
designs = pd.read_csv('all_metrics.csv')
# Filter
filtered = designs[
(designs['pLDDT'] > 0.85) &
(designs['ipTM'] > 0.50) &
(designs['PAE_interface'] < 10) &
(designs['scRMSD'] < 2.0) &
(designs['esm2_pll'] > 0.0)
]
# Rank by composite score
filtered['score'] = (
0.3 * filtered['pLDDT'] +
0.3 * filtered['ipTM'] +
0.2 * (1 - filtered['PAE_interface'] / 20) +
0.2 * filtered['esm2_pll']
)
top_designs = filtered.nlargest(50, 'score')Output: 50-200 filtered candidates
| Stage | GPU | Time (100 designs) |
|---|---|---|
| RFdiffusion | A10G | 30 min |
| ProteinMPNN | T4 | 15 min |
| ColabFold | A100 | 4-8 hours |
| Filtering | CPU | 15 min |
| Problem | Solution |
|---|---|
| Low ipTM | Check hotspots, increase designs |
| Poor diversity | Higher temperature, more backbones |
| High scRMSD | Backbone may be unusual |
| Low pLDDT | Check design quality |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.