A note on reproducible GIS by economists: it's mostly absent. Here are some tips.
Reproducibility means that the inputs and methods can be repeated by a (somewhat) knowledgeable person. For GIS, that *might* (should) mean code, but it *definitely* means at least SOME instructions. Even if they are manual....
Maps are data. While your typical Stata/Matlab/R/Julia graph is data projected into Cartesian coordinates, maps are data projected into geographic coordinates. So at a minimum, we need to know what the inputs to the map are, same as we need to know inputs to graphs.
So "data + code" + "graph twoway scatter x y" -> 
, and "data + code" + "maptile x, geo(state)" ->
. Or "data + code" + "instructions(ArcGIS)" ->
. Note that for a map, "data" includes shapefiles (including provenance of the shapefile)




So: checklist for reproducible maps:
data (+ provenance)
code (manipulates data)
shapefile (provides coordinates)
code (preferred) or instructions (sufficient)




A few tentative resources (please improve!): https://social-science-data-editors.github.io/guidance/guidance-reproducible-gis-analysis.html with some other links below
@Stata : https://www.stata.com/support/faqs/graphics/spmap-and-maps/ spmap https://ideas.repec.org/c/boc/bocode/s456812.html + maptile @michaelstepner
#R sf https://staff.washington.edu/phurvitz/r_gis/ and interactions with GIS software (and integrated as a dependency into many great packages)
@SciPyTip GeoPandas https://geopandas.org/ and others
@ArcGISPro can also be scripted (python) and integrate notebooks https://pro.arcgis.com/en/pro-app/arcpy/get-started/pro-notebooks.htm
Staying #opensource: @qgis has "Graphical Modeler" https://docs.qgis.org/3.10/en/docs/user_manual/processing/modeler.html and look for tutorials on "Automating GIS Workflows" https://courses.spatialthoughts.com/
Summary: Please try to create scripted maps, but always describe what data you are mapping, and where you got the shapefiles from (note: copyrights might apply, permissions might need to be obtained!)
PS I summed it up at https://aeadataeditor.github.io/posts/2021-02-10-reproducible-gis