Skip to content

Explore graphify-style project graph export on top of ArcGIS Pro snapshots #51

Description

@danmaps

Summary

Explore borrowing the best ideas from safishamsi/graphify so arcgispro-cli can produce a relationship-aware project graph on top of the existing flat snapshot export.

This is not a proposal to embed graphify as a hard dependency. It is a proposal to study the UX and artifact pattern and decide what should be native in arcgispro-cli.

Why

The current .arcgispro/context/*.json export is already useful, but it is still mostly a set of flat files. For larger ArcGIS Pro projects, AI agents and humans would benefit from a derived graph that makes relationships first-class:

  • map -> layer -> datasource
  • layout -> map frame -> map
  • notebook -> referenced layers/tables/scripts
  • geodatabase/connection -> dependent layers/tables
  • broken source / unsupported capability / risk edges

graphify is interesting here because it turns raw project material into three durable artifacts:

  • a machine-readable graph
  • a human-readable report
  • an explorable HTML view

That feels close to what we want for agent-driven GIS reasoning.

What To Borrow

Potentially borrow these ideas:

  1. Generate a derived graph.json from the ArcGIS Pro snapshot so agents can query relationships instead of re-parsing every export file.
  2. Generate a concise GRAPH_REPORT.md-style summary that calls out high-value structure:
    • key maps
    • heavily reused layers
    • broken data sources
    • surprising dependencies
    • likely automation entry points
  3. Optionally generate a simple local graph.html explorer for human inspection.
  4. Keep the current flat JSON export as the source of truth, and treat the graph artifacts as a derived layer.

Non-Goals

  • Do not turn arcgispro-cli into a generic codebase knowledge graph tool.
  • Do not require a remote service or hosted UI.
  • Do not break the current snapshot format or existing CLI consumers.

Possible Shape

Maybe this lands as one or both of:

  • arcgis graph export
  • arcgis graph report

Or it could be an export toggle that writes something like:

.arcgispro/
  context/
  graph/
    graph.json
    GRAPH_REPORT.md
    graph.html

Acceptance Criteria

  • A snapshot can produce a derived relationship graph from existing exported context.
  • The graph captures at least maps, layers, tables, layouts, notebooks, and connections.
  • We can surface useful relationship queries that are currently awkward with flat files alone.
  • The feature is optional and does not materially slow the default snapshot path.
  • The implementation can start narrow without committing to full graphify-style scope.

Notes

  • Adjacent to Export: add optional context bundle for advisor tools #26 rather than a replacement for it: context bundle fields and graph-derived relationships likely complement each other.
  • If this is too much for core, a first step could be a separate prototype script/command that consumes the existing export and proves the value before deeper add-in work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions