Phase 4 – Editing from the command line, and a skill (2026-09-30)#
seamm.edit (seamm 9cde481): set_parameters, insert (after, before, or into
a loop’s body or a step’s sub-steps), remove, move, tree and validate.
Steps are addressed by position (
3.2), by name (ORCA/Energy) or both. A name matches the extension name or description name first, and only then the default title, since finding titles makes a node of every kind of step (slow, and some plug-ins log their whole bibliography at DEBUG). A name also finds a uniquely named step nested deeper – but only when no step at the level has it: an ambiguous name is an error (a first version removed a nested Table when the top level had three).Every edit rebuilds the step from a fresh node through the builder’s checks, then re-reads the flowchart, so the digest, tables and layout are current; unconnected steps are kept.
validatereports the flowchart-level checks, loops with empty bodies, code steps with no sub-steps, and stored values of strict choices that today’s plug-ins no longer accept.
seamm-flowchart gains tree, set, insert, remove, move and
validate. name=value values are read as YAML. Edits write back unless -o.
The command now keeps plug-ins’ logging quiet unless --log-level asks for it.
Checked with the real plug-ins in ~/SEAMM_DEV: a built flowchart edited by name and
position (a Loop parameter, MOPAC/Energy found inside the loop, an Optimization
inserted before it, a Table inserted and moved), a rejected choice with suggestions,
the ambiguous-name error, and validate/show afterwards. Each command takes
about 10 s, nearly all of it loading the plug-ins. 18 new unit tests; 194 in all.
The build-seamm-flowchart skill (~/Work/SEAMM/.claude/skills/, the workspace’s
project skills): when to use the tools, the spec format, addresses, the Python API,
and the pitfalls found in this campaign (undescribed list/dict parameters, =
expressions with bare names, placeholder choices, loops hiding failures, stale values,
get_nodes() stopping at loops). Its example spec builds and validates.
Not done: pointing the editor’s clean_layout/place_unpositioned at
seamm.layout (D8’s last part); an MCP server (phase 6, optional).