Geo Fetch
ClawBio/ClawBio
Query metadata and download data from the NCBI Gene Expression Omnibus (GEO).
Auto-annotate plasmids with features (promoters, terminators, resistance, origins, tags, fluorescent proteins) via BLAST against curated DBs (Addgene, fpbase, SnapGene).
$ npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills plannotate-plasmid-annotation --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/molecular-biology/plannotate-plasmid-annotation .claude/skills/plannotate-plasmid-annotation && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "plannotate-plasmid-annotation" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotation into .claude/skills/plannotate-plasmid-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plannotate-plasmid-annotation", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills plannotate-plasmid-annotation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/molecular-biology/plannotate-plasmid-annotation .agents/skills/plannotate-plasmid-annotation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "plannotate-plasmid-annotation" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotation into .agents/skills/plannotate-plasmid-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plannotate-plasmid-annotation", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills plannotate-plasmid-annotation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/molecular-biology/plannotate-plasmid-annotation .cursor/skills/plannotate-plasmid-annotation && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "plannotate-plasmid-annotation" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotation into .cursor/skills/plannotate-plasmid-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plannotate-plasmid-annotation", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jaechang-hits/SciAgent-Skills.git --path skills/molecular-biology/plannotate-plasmid-annotation--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills plannotate-plasmid-annotation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/molecular-biology/plannotate-plasmid-annotation .gemini/skills/plannotate-plasmid-annotation && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "plannotate-plasmid-annotation" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotation into .gemini/skills/plannotate-plasmid-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plannotate-plasmid-annotation", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jaechang-hits/SciAgent-Skills plannotate-plasmid-annotationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/molecular-biology/plannotate-plasmid-annotation .github/skills/plannotate-plasmid-annotation && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "plannotate-plasmid-annotation" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotation into .github/skills/plannotate-plasmid-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plannotate-plasmid-annotation", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills plannotate-plasmid-annotation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/molecular-biology/plannotate-plasmid-annotation .opencode/skills/plannotate-plasmid-annotation && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "plannotate-plasmid-annotation" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/molecular-biology/plannotate-plasmid-annotation into .opencode/skills/plannotate-plasmid-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plannotate-plasmid-annotation", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
plannotate-plasmid-annotationAuto-annotate plasmids with features (promoters, terminators, resistance, origins, tags, fluorescent proteins) via BLAST against curated DBs (Addgene, fpbase, SnapGene).
Plannotate Plasmid Annotation is an agent skill from jaechang-hits/SciAgent-Skills. Auto-annotate plasmids with features (promoters, terminators, resistance, origins, tags, fluorescent proteins) via BLAST against curated DBs (Addgene, fpbase, SnapGene). FASTA or raw sequence in; annotated GenBank, interactive HTML maps, CSV tables out. Handles circular topology. Use to verify synthetic constructs, prep Addgene submissions, share maps, or batch-annotate cloning libraries.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Research & Science, covering HTML artifacts, Bioinformatics and CSV and tabular files. It works with NCBI. The repository describes itself as: 197 bioinformatics & life science skills for Claude Code and AI agents — BixBench 92.0% accuracy. RNA-seq, single-cell, drug discovery, proteomics, and more. Powers OmicsHorizon. The licence is GPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 82c862c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pipcondapythonbrewaptFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comdoi.orgpypi.orgaddgene.orgbiopython.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Plannotate Plasmid Annotation loads about 4.7k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 1,061 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jaechang-hits/SciAgent-Skills at commit 82c862c, republished under its GPL-3.0 licence (© jaechang-hits). 1,061 words, ~4,666 tokens.
.claude/skills/plannotate-plasmid-annotation/SKILL.md (or your agent's skills folder).pLannotate annotates plasmid sequences by running BLAST searches against a curated library of over 5,000 features sourced from Addgene, NCBI, and fpbase. It identifies promoters, terminators, antibiotic resistance genes, origins of replication, tags, and fluorescent proteins while correctly handling circular plasmid topology — avoiding split-feature artifacts that arise from naive linear alignment. Results are written as annotated GenBank files for downstream use in SnapGene, Benchling, or BioPython, as interactive HTML plasmid maps for sharing and review, and as CSV tables for programmatic filtering. Both a Python API and a command-line interface are provided; a Streamlit web app is also bundled for exploratory use.
plannotate, biopython (optional, for GenBank parsing)# Install via pip (requires BLAST+ on PATH)
pip install plannotate
# Install via conda (recommended — handles BLAST+ automatically)
conda install -c conda-forge -c bioconda plannotate
# Verify installation
plannotate --help
python -c "import plannotate; print('plannotate OK')"from plannotate import annotate, write_genbank, create_bokeh_chart
from Bio import SeqIO
# Load plasmid from FASTA
record = next(SeqIO.parse("plasmid.fasta", "fasta"))
sequence = str(record.seq)
# Annotate (circular, against Addgene database)
results = annotate(sequence, linear=False, db="addgene")
print(f"Found {len(results)} features")
print(results[["Feature", "Feature_type", "pct_identity", "pct_query_cov"]].to_string())
# Export GenBank file
write_genbank(sequence, results, output_file="plasmid_annotated.gb")
# Generate interactive HTML map
create_bokeh_chart(sequence, results, output_file="plasmid_map.html")
print("Outputs: plasmid_annotated.gb, plasmid_map.html")Load the plasmid sequence from a FASTA file, a GenBank file (stripping existing annotations for re-annotation), or a raw sequence string. Validate length and base composition before annotation.
from Bio import SeqIO
import os
# Option A: Load from FASTA
def load_fasta(path):
record = next(SeqIO.parse(path, "fasta"))
seq = str(record.seq).upper()
return seq, record.id
# Option B: Load from GenBank (strip annotations, keep sequence)
def load_genbank(path):
record = next(SeqIO.parse(path, "genbank"))
seq = str(record.seq).upper()
return seq, record.id
# Option C: Raw sequence string
raw_seq = "ATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTT"
# Validate sequence
def validate_plasmid(seq, name="plasmid"):
valid_bases = set("ATGCNRYSWKMBDHV")
invalid = set(seq.upper()) - valid_bases
if invalid:
raise ValueError(f"Invalid bases in {name}: {invalid}")
if len(seq) < 100:
raise ValueError(f"Sequence too short ({len(seq)} bp); minimum 100 bp")
gc = (seq.count("G") + seq.count("C")) / len(seq) * 100
print(f"{name}: {len(seq):,} bp, GC={gc:.1f}%")
return seq
seq, plasmid_id = load_fasta("plasmid.fasta")
validate_plasmid(seq, plasmid_id)Run annotation using the selected database. The linear flag controls whether the sequence is treated as circular (default for plasmids) or linear (for gene blocks and linear fragments).
from plannotate import annotate
# Annotate circular plasmid against the Addgene database (most comprehensive for common vectors)
results = annotate(
seq,
linear=False, # False = circular plasmid (default)
db="addgene", # Database: "addgene", "fpbase", or "snapgene"
)
print(f"Total features detected: {len(results)}")
print(f"\nColumns: {list(results.columns)}")
# Preview feature table
cols = ["Feature", "Feature_type", "start", "end", "strand", "pct_identity", "pct_query_cov"]
print(results[cols].sort_values("start").to_string(index=False))Review annotation confidence using BLAST identity and query coverage scores. High-confidence annotations have >95% identity and >90% coverage; partial hits may indicate truncated or mutated features.
import pandas as pd
# Inspect hit quality distribution
print("Identity percentile summary:")
print(results["pct_identity"].describe().round(1))
print("\nCoverage percentile summary:")
print(results["pct_query_cov"].describe().round(1))
# Separate high- and low-confidence hits
high_conf = results[
(results["pct_identity"] >= 95) &
(results["pct_query_cov"] >= 90)
].copy()
low_conf = results[
(results["pct_identity"] < 95) |
(results["pct_query_cov"] < 90)
].copy()
print(f"\nHigh-confidence features (identity>=95%, coverage>=90%): {len(high_conf)}")
print(f"Low-confidence / partial features: {len(low_conf)}")
if not low_conf.empty:
print("\nLow-confidence features (review manually):")
print(low_conf[["Feature", "Feature_type", "pct_identity", "pct_query_cov"]].to_string(index=False))
# Save filtered table
results.to_csv("all_features.csv", index=False)
high_conf.to_csv("high_confidence_features.csv", index=False)
print("\nSaved: all_features.csv, high_confidence_features.csv")Write the annotated sequence to GenBank format for import into plasmid editors (SnapGene, Benchling, Geneious, ApE) and for BioPython-based downstream analysis.
from plannotate import write_genbank
# Write full annotation (all features)
write_genbank(seq, results, output_file="plasmid_annotated.gb")
print("Written: plasmid_annotated.gb")
# Write with high-confidence features only
write_genbank(seq, high_conf, output_file="plasmid_highconf.gb")
print("Written: plasmid_highconf.gb")
# Verify using BioPython
from Bio import SeqIO
record = next(SeqIO.parse("plasmid_annotated.gb", "genbank"))
print(f"\nGenBank verification:")
print(f" Sequence length: {len(record.seq):,} bp")
print(f" Features: {len(record.features)}")
for feat in record.features:
label = feat.qualifiers.get("label", ["(unlabeled)"])[0]
print(f" [{feat.type:20s}] {label} @ {feat.location}")Create a Bokeh-based interactive plasmid map. The HTML file is self-contained and can be shared without any server infrastructure.
from plannotate import create_bokeh_chart
# Generate interactive circular plasmid map
create_bokeh_chart(
seq,
results,
output_file="plasmid_map.html",
)
print("Interactive map saved: plasmid_map.html")
print("Open in any browser — no server required")
# Tip: open automatically in the default browser
import webbrowser, os
webbrowser.open(f"file://{os.path.abspath('plasmid_map.html')}")Extract annotated features programmatically for downstream analysis — restriction site mapping, primer design, or construct verification reports.
from Bio import SeqIO
from Bio.SeqFeature import FeatureLocation
import pandas as pd
record = next(SeqIO.parse("plasmid_annotated.gb", "genbank"))
# Build a feature DataFrame from the GenBank record
rows = []
for feat in record.features:
label = feat.qualifiers.get("label", [""])[0]
note = feat.qualifiers.get("note", [""])[0]
rows.append({
"type": feat.type,
"label": label,
"note": note,
"start": int(feat.location.start),
"end": int(feat.location.end),
"strand": feat.location.strand,
"length": len(feat.location),
})
feat_df = pd.DataFrame(rows)
print(feat_df.to_string(index=False))
# Example: find antibiotic resistance genes
resistance = feat_df[feat_df["label"].str.contains(
r"AmpR|KanR|CmR|TetR|SpecR|HygR|ZeoR|BlastR|GentR",
case=False, na=False, regex=True
)]
print(f"\nAntibiotic resistance markers found: {len(resistance)}")
print(resistance[["label", "start", "end", "length"]].to_string(index=False))Annotate an entire cloning library from a multi-FASTA file or a directory of individual FASTA files and aggregate results into a single summary table.
from plannotate import annotate, write_genbank, create_bokeh_chart
from Bio import SeqIO
import pandas as pd
import os
input_dir = "plasmids/" # directory of *.fasta files
output_dir = "annotated_results/"
os.makedirs(output_dir, exist_ok=True)
summary_rows = []
for fasta_file in sorted(f for f in os.listdir(input_dir) if f.endswith(".fasta")):
plasmid_name = fasta_file.replace(".fasta", "")
fasta_path = os.path.join(input_dir, fasta_file)
record = next(SeqIO.parse(fasta_path, "fasta"))
seq = str(record.seq).upper()
print(f"Annotating {plasmid_name} ({len(seq):,} bp)...", end=" ")
results = annotate(seq, linear=False, db="addgene")
print(f"{len(results)} features")
# Save per-plasmid outputs
write_genbank(
seq, results,
output_file=os.path.join(output_dir, f"{plasmid_name}.gb")
)
create_bokeh_chart(
seq, results,
output_file=os.path.join(output_dir, f"{plasmid_name}.html")
)
results.to_csv(os.path.join(output_dir, f"{plasmid_name}_features.csv"), index=False)
# Accumulate for summary
results["plasmid"] = plasmid_name
summary_rows.append(results)
# Consolidated summary table
summary = pd.concat(summary_rows, ignore_index=True)
summary.to_csv(os.path.join(output_dir, "all_plasmids_features.csv"), index=False)
print(f"\nBatch complete. {summary['plasmid'].nunique()} plasmids annotated.")
print(f"Summary table: {output_dir}all_plasmids_features.csv")| Parameter | Default | Range / Options | Effect |
|---|---|---|---|
linear | False | True, False | Treat sequence as linear (True) or circular (False); circular mode handles split features at the origin correctly |
db | "addgene" | "addgene", "fpbase", "snapgene" | Feature database to search; addgene is broadest (promoters, resistance genes, origins, tags); fpbase adds fluorescent protein variants; snapgene includes SnapGene-curated features |
min_len | 0 | 0–500 bp | Minimum feature length in bp; increase to suppress short spurious matches |
blast_identity_threshold | 95 | 70–100 % | Minimum BLAST % identity to report a hit; lower values detect diverged homologs but increase false positives |
--html (CLI) | off | flag | Generate interactive HTML plasmid map alongside GenBank output |
--csv (CLI) | off | flag | Write CSV feature table to the output directory |
--linear (CLI) | off | flag | Treat input as linear sequence (default is circular) |
--file / --input (CLI) | required | FASTA path | Input plasmid sequence in FASTA format |
When to use: exploring a single plasmid interactively without writing code, or sharing with wet-lab collaborators who prefer a browser interface.
# Launch the pLannotate Streamlit web app (opens in browser at localhost:5000)
plannotate streamlit
# Or specify a custom port
plannotate streamlit --port 8501When to use: annotating multiple plasmids in a scripted workflow or on a remote server without Python scripting.
# Single plasmid
plannotate batch \
--input plasmid.fasta \
--output results/ \
--html \
--csv
# Multiple plasmids via shell glob
for f in plasmids/*.fasta; do
name=$(basename "$f" .fasta)
plannotate batch \
--input "$f" \
--output "annotated/${name}/" \
--html --csv
done
echo "Done. Outputs in annotated/"When to use: verifying that a site-directed mutagenesis or insertion did not disrupt existing features or introduce unintended ones.
from plannotate import annotate
from Bio import SeqIO
import pandas as pd
def annotation_diff(seq_before, seq_after, db="addgene"):
res_before = annotate(seq_before, linear=False, db=db)
res_after = annotate(seq_after, linear=False, db=db)
features_before = set(res_before["Feature"])
features_after = set(res_after["Feature"])
gained = features_after - features_before
lost = features_before - features_after
shared = features_before & features_after
print(f"Shared features: {len(shared)}")
print(f"Gained features: {gained if gained else 'none'}")
print(f"Lost features: {lost if lost else 'none'}")
return res_before, res_after
seq_wt = str(next(SeqIO.parse("plasmid_wt.fasta", "fasta")).seq)
seq_mut = str(next(SeqIO.parse("plasmid_mut.fasta", "fasta")).seq)
res_before, res_after = annotation_diff(seq_wt, seq_mut)When to use: sharing annotation results with collaborators who prefer spreadsheets over GenBank files.
from plannotate import annotate
from Bio import SeqIO
import pandas as pd
seq = str(next(SeqIO.parse("plasmid.fasta", "fasta")).seq)
results = annotate(seq, linear=False, db="addgene")
# Tidy column selection and renaming
export = results[[
"Feature", "Feature_type", "start", "end", "strand",
"pct_identity", "pct_query_cov", "database"
]].copy()
export.columns = [
"Feature Name", "Type", "Start (bp)", "End (bp)", "Strand",
"Identity (%)", "Coverage (%)", "Database"
]
export["Length (bp)"] = export["End (bp)"] - export["Start (bp)"]
export = export.sort_values("Start (bp)")
# Write to Excel with conditional formatting
with pd.ExcelWriter("plasmid_features.xlsx", engine="openpyxl") as writer:
export.to_excel(writer, sheet_name="Features", index=False)
print(f"Exported {len(export)} features to plasmid_features.xlsx")| Output File | Format | Description |
|---|---|---|
plasmid_annotated.gb | GenBank | Sequence with annotated features; importable into SnapGene, Benchling, Geneious, ApE, BioPython |
plasmid_map.html | HTML | Self-contained interactive circular plasmid map (Bokeh); shareable without a server |
all_features.csv | CSV | Tabular feature list with columns: Feature, Feature_type, start, end, strand, pct_identity, pct_query_cov, database |
high_confidence_features.csv | CSV | Filtered subset with identity >= 95% and coverage >= 90% |
all_plasmids_features.csv | CSV | Batch mode: aggregated features across all plasmids with a plasmid column |
| Problem | Cause | Solution |
|---|---|---|
FileNotFoundError: blastn not found | BLAST+ not on PATH | Install via conda: conda install -c bioconda blast; or via package manager: brew install blast (macOS) / apt install ncbi-blast+ (Linux) |
No features detected | Sequence is too short, wrong database, or non-standard bases | Verify sequence length >= 500 bp; try a different db (e.g., "fpbase" for fluorescent protein vectors); check for ambiguous bases with validate_plasmid() |
| Annotations wrap incorrectly at position 0 | Sequence treated as linear when it is circular | Set linear=False (default); this enables circular BLAST to catch features that span the sequence origin |
| HTML map renders blank | bokeh version mismatch | Upgrade: pip install --upgrade bokeh; pLannotate requires Bokeh >=2.4 |
| Low identity hits for known features | Feature sequence has been mutated or codon-optimized | Lower blast_identity_threshold to 85–90%; add a note that these are diverged homologs |
MemoryError or very slow annotation | Sequence > 50 kb or BLAST database not indexed | Split large sequences into sub-regions; ensure the internal pLannotate database index exists (reinstall if needed) |
| GenBank file not parsed by SnapGene | Non-standard feature type labels | Open in Geneious or BioPython first; check for special characters in feature qualifiers |
© jaechang-hits, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/molecular-biology/plannotate-plasmid-annotation of jaechang-hits/SciAgent-Skills.
Open the folder on GitHubat commit 82c862c
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in jaechang-hits/SciAgent-Skills, which our catalogue first saw on October 7, 2026.
Plannotate Plasmid Annotation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Plannotate Plasmid Annotation this skilljaechang-hits/SciAgent-Skills | 374 | 1 repos | ~4.7k | Automated safety check: Pass | GPL-3.0 | |
| Geo FetchClawBio/ClawBio | 1.2k | — | ~4.7k | Automated safety check: Pass | MIT | |
| Bulkrna Cosinor RhythmTianGzlab/OmicsClaw | 161 | — | ~840 | Automated safety check: Pass | Apache-2.0 | |
| Spatial XeniumQING1105/ezST | 101 | — | ~535 | Automated safety check: Pass | MIT | |
| Cerna Analysisaipoch/medical-research-skills | 1.9k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Proteomics Data ImportTianGzlab/OmicsClaw | 161 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 |
ClawBio/ClawBio
Query metadata and download data from the NCBI Gene Expression Omnibus (GEO).
TianGzlab/OmicsClaw
Load when the user needs Deterministic fixed-period 24-hour single-component cosinor OLS rhythm analysis for a bulk RNA time-course CSV.
QING1105/ezST
Xenium platform branch of the spatial transcriptomics workflow — load and validate the platform's cell-level matrix for downstream analysis.
aipoch/medical-research-skills
A skill your agent uses when building a ceRNA regulatory network from a key gene list by combining bundled miRNA-mRNA and miRNA-lncRNA database files, with flat-file CSV exports and PDF…
TianGzlab/OmicsClaw
Load when ingesting a MaxQuant proteinGroups.txt, FragPipe combinedprotein.tsv, DIA-NN report, or generic CSV / TSV protein-quantification table — normalises columns to a standard schema, emits…
TianGzlab/OmicsClaw
Load when attaching cell-barcode → sgRNA assignments from a mapping TSV/CSV onto a Perturb-seq expression AnnData, producing standardised perturbation / sgRNA / target-gene obs columns.
jaechang-hits/SciAgent-Skills
NEB-IRC activation energy pipeline for reaction barriers using GFN2-xTB and pysisyphus.
jaechang-hits/SciAgent-Skills
3Dmol.js WebGL molecular visualization emitted as self-contained HTML.
jaechang-hits/SciAgent-Skills
Constraint-based (COBRA) analysis of genome-scale metabolic models: FBA, FVA, knockouts, flux sampling, production envelopes, gapfilling, media optimization.
jaechang-hits/SciAgent-Skills
Read, write, and edit ChemDraw CDX/CDXML files with RDKit's rdkit.Chem.rdChemDraw plus direct XML editing, always paired with a rendered PNG.
jaechang-hits/SciAgent-Skills
Programmatic PubMed access via NCBI E-utilities REST API. An agent skill from jaechang-hits/SciAgent-Skills.
jaechang-hits/SciAgent-Skills
Scaffold a new SciAgent-Skills entry. An agent skill from jaechang-hits/SciAgent-Skills.
Works with
Auto-annotate plasmids with features (promoters, terminators, resistance, origins, tags, fluorescent proteins) via BLAST against curated DBs (Addgene, fpbase, SnapGene). Plannotate Plasmid Annotation is an agent skill from jaechang-hits/SciAgent-Skills. Auto-annotate plasmids with features (promoters, terminators, resistance, origins, tags, fluorescent proteins) via BLAST against curated DBs (Addgene, fpbase, SnapGene).
Plannotate Plasmid Annotation fits situations like: verify synthetic constructs; prep Addgene submissions; batch-annotate cloning libraries.
Run `npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a claude-code`. Or copy the skill folder (skills/molecular-biology/plannotate-plasmid-annotation in jaechang-hits/SciAgent-Skills) into .claude/skills/plannotate-plasmid-annotation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a codex`. Or copy the skill folder (skills/molecular-biology/plannotate-plasmid-annotation in jaechang-hits/SciAgent-Skills) into .agents/skills/plannotate-plasmid-annotation in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jaechang-hits/SciAgent-Skills --skill plannotate-plasmid-annotation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/plannotate-plasmid-annotation, .gemini/skills/plannotate-plasmid-annotation, .github/skills/plannotate-plasmid-annotation and .opencode/skills/plannotate-plasmid-annotation in your project.
Going by SKILL.md and its folder, Plannotate Plasmid Annotation needs the command-line tools its instructions call (pip, conda, python, brew and apt). Our summary lists: Python 3.
SKILL.md names 5 domains. As links in the text: github.com, doi.org, pypi.org, addgene.org and biopython.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Plannotate Plasmid Annotation is published under the GPL-3.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Plannotate Plasmid Annotation: Geo Fetch (ClawBio/ClawBio, 1.2k stars), Bulkrna Cosinor Rhythm (TianGzlab/OmicsClaw, 161 stars), Spatial Xenium (QING1105/ezST, 101 stars) and Cerna Analysis (aipoch/medical-research-skills, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jaechang-hits (a GitHub user) maintains it in jaechang-hits/SciAgent-Skills, which has 374 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 29, 2026.
Source: jaechang-hits/SciAgent-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.