jinzhezenggroup/gjf-flux
> Assemble and extract Gaussian .gjf input file sections (directives, route, title, molecule blocks, appendices) and build single- or multi-step Link1 jobs from modular component files. USE WHEN needed for generating, refactoring, templating, or scripting Gaussian job files.
npx skills add https://github.com/jinzhezenggroup/computational-chemistry-agent-skills --skill gjf-flux
gjf-flux is a command-line workflow for modular Gaussian .gjf files:
.gjf (including Link1 multi-step jobs)..gjf, or merge multiple tasks into a Link1 job.Use this skill when you need to:
.gjf jobs from smaller files (fragments, templates, parameterized directives)..gjf files by extracting specific sections.gjf-flux assumes a standard Gaussian input layout:
--Link1--, then a newline.# and continues through subsequent lines.(e.g., 0 1 or 0 1 0 1 0 1), representing charge/multiplicity pairs.
If a .gjf deviates from these conventions, extraction may fail or misclassify blocks.
When helping a user, clarify:
.gjf to read, or component files to assemble.job_index, 0-based), or how many steps to assemble..gjfuvx gjf-flux extract <section_name> <FILE.gjf> [--job_index N]
Where <section_name> is one of:
directivesroutetitlemolecule or molecule-<idx>appendix or appendix-<idx>Notes:
<idx> is 0-based.--job_index selects the Link1 step (0-based, default 0).Examples:
# Extract the route line from the first Link1 step
uvx gjf-flux extract route input.gjf
# Extract the second molecule block from step 0
uvx gjf-flux extract molecule-1 input.gjf
# Extract the first appendix block from Link1 step 2
uvx gjf-flux extract appendix-0 input.gjf --job_index 2
uvx gjf-flux assemble directives --chk FILE --mem SIZE --nprocshared N
This command accepts key/value pairs in the form --key value.
Examples:
uvx gjf-flux assemble directives --chk job.chk --mem 16GB --nprocshared 16
Tip: redirect to a file for later composition:
uvx gjf-flux assemble directives --chk job.chk --mem 16GB --nprocshared 16 > directives.txt
# line)uvx gjf-flux assemble route [-l p|n|t|""] <keywords...>
Examples:
#p Opt B3LYP/6-31G(d)
uvx gjf-flux assemble route -l p Opt B3LYP/6-31G(d)
# Use quotes for keywords with parentheses
uvx gjf-flux assemble route -l p "Opt(MaxCycle=100)" "Freq"
Tip:
uvx gjf-flux assemble route -l p "Opt(MaxCycle=100)" "Freq" > route.txt
uvx gjf-flux assemble molecules <frag1.txt> <frag2.txt> ... [--as-fragment] [--charge INT] [--multi INT]
Each fragment file must follow this format:
charge multiplicity (e.g., 0 1)Modes:
--as-fragment: assigns Fragment=1,2,... tags and expands the charge/multiplicity header.Examples:
# Merge two fragments into a single molecule block
uvx gjf-flux assemble molecules fragA.txt fragB.txt > molecule.txt
# Merge as fragments, overriding total charge/multiplicity
uvx gjf-flux assemble molecules fragA.txt fragB.txt --as-fragment --charge 0 --multi 1 > molecule.txt
uvx gjf-flux assemble appendices <app1.txt> <app2.txt> ...
Examples:
uvx gjf-flux assemble appendices basis.txt modredundant.txt > appendix.txt
.gjfuvx gjf-flux assemble job \
--directives directives.txt \
--route route.txt \
--title "Your title" \
--molecule molecule.txt [molecule2.txt ...] \
[--appendices appendix.txt ...]
uvx gjf-flux assemble tasks step1.gjf step2.gjf [step3.gjf ...] > link1.gjf
This example shows a single-step job assembled from:
assemble route.gjf, then re-merged (optionally overriding multiplicity).gjf files and concatenated> Note: This uses bash/zsh process substitution (<(...)). If you are on a shell that does not support it, redirect each block into a file first.
# 1) Build directives to a file (recommended; easier to audit)
uvx gjf-flux assemble directives --chk job.chk --mem 16GB --nprocshared 16 > directives.txt
# 2) Assemble a full .gjf using inline-generated route/molecule/appendix blocks
uvx gjf-flux assemble job \
--directives directives.txt \
--route <(uvx gjf-flux assemble route -l p "Opt(MaxCycle=100)" "Freq" B3LYP/6-31G(d)) \
--title "Opt+Freq from extracted building blocks" \
--molecule <( \
gjf-flux assemble molecules \
<(uvx gjf-flux extract molecule-0 reactant.gjf) \
fragment_extra.xyz \
--multi 1 \
) \
--appendices \
<(uvx gjf-flux extract appendix-1 reactant.gjf) \
<(uvx gjf-flux extract appendix-0 reference.gjf) \
app_manual.txt \
> job.gjf
Variants:
--molecule <(uvx gjf-flux extract molecule-0 input.gjf).gjf and then:uvx gjf-flux assemble tasks step1.gjf step2.gjf > link1.gjfdirectives.txt (from assemble directives or manual)route.txt (from assemble route)molecule.txt (from assemble molecules or extracted from a prior .gjf)appendix.txt (optional)assemble job..gjf and then merge using assemble tasks.job_index, molecule-<idx>, and appendix-<idx> are all 0-based..gjf formatting: unusual blank-line structure can break parsing.charge multiplicity: otherwise molecule merge will fail..gjf if parsing fails.Take jinzhezenggroup/gjf-flux from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference uvx.
Without those the skill loads but fails at the first command.