Pygraphistry connectors
Skill graphistry/graphistry-skills/.agents/skills/pygraphistry-connectors
PyGraphistry connector workflows for external data sources and graph databases. Use when asked to "connect graphistry to Neo4j", "load from Splunk into graphistry", "query Kusto/ADX and visualize", "Databricks graph", "TigerGraph with pygraphistry", "ingest SQL into a graph", or any "graphistry + [external platform]" request. Also triggers on Neptune, Postgres, BigQuery, Memgraph, or connector/plugin keywords. Proactively suggest when the user has data in an external system and wants graph visualization without first loading it into a DataFrame.From its SKILL.md
npx -y skills add graphistry/graphistry-skills --skill pygraphistry-connectorsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.2 KB, as published. Nobody here has run it
PyGraphistry Connectors
Doc routing (local + canonical)
- First route with
../pygraphistry/references/pygraphistry-readthedocs-toc.md. - Use
../pygraphistry/references/pygraphistry-readthedocs-top-level.tsvfor section-level shortcuts. - Only scan
../pygraphistry/references/pygraphistry-readthedocs-sitemap.xmlwhen a needed page is missing. - Use one batched discovery read before deep-page reads; avoid
cat *and serial micro-reads. - In user-facing answers, prefer canonical
https://pygraphistry.readthedocs.io/en/latest/...links.
Strategy
- Prefer dataframe-first ingestion when practical, then bind with
edges()/nodes(). - Use connector-specific notebook patterns when auth/query semantics are specialized.
- For very large datasets, push filtering/aggregation upstream before plotting.
- Keep connector and Graphistry credentials in env vars or secret stores; no hardcoded keys.
- Never use placeholder literals like
username='user'/password='pass'/username='...'; useos.environ[...]oros.environ.get(...). - For concise tasks, respond with a single compact code block and minimal prose.
- In concise snippets, prefer explicit privacy literals (
'private'or'organization') over placeholder variables.
Connector triage rubric
- Use native graph-db connectors (
cypher(), Neptune/TigerGraph flows) when traversal is best expressed upstream. - For local Cypher-style queries on in-memory PyGraphistry graphs (no external DB), use
g.gfql("MATCH ..."). Note:graphistry.cypher()is a distinct Neo4j/Memgraph/Neptune connector, not the same as local GFQL Cypher. - Use SQL/log source extraction when your source is tabular or SIEM-centric, then bind in PyGraphistry.
- If unsure, start with source-native query -> dataframe ->
edges()/nodes(), then optimize connector depth.
Connector families
- Graph DBs: Neo4j, Neptune, TigerGraph, Memgraph, Arango.
- Data/SQL: Databricks, PostgreSQL, Spanner, warehouse-style pipelines.
- Logs/SIEM: Splunk, Kusto, AlienVault.
- Compute/layout plugins: networkx, graphviz, cugraph, igraph, hypernetx.
Minimal examples
# Neo4j/Memgraph/Neptune connector (runs query on external DB server)
g = graphistry.cypher('MATCH (a)-[r]->(b) RETURN a,b,r')
g.plot()
# Local Cypher via GFQL (no external DB needed — preferred for local graphs)
g2 = g.gfql("MATCH (a)-[r]->(b) WHERE a.score > 10 RETURN a.id, b.id")
# Graphistry org/service-account auth before connector workflows
graphistry.register(
api=3,
org_name=os.environ.get('GRAPHISTRY_ORG_NAME'),
personal_key_id=os.environ.get('GRAPHISTRY_PERSONAL_KEY_ID'),
personal_key_secret=os.environ.get('GRAPHISTRY_PERSONAL_KEY_SECRET')
)
# Generic dataframe path after source-specific query/extract
# edges_df: src,dst,...
g = graphistry.edges(edges_df, 'src', 'dst')
graphistry.privacy(mode='private')
plot_url = g.plot(render=False)
# Connector-oriented flow with explicit nodes + focused GFQL slice
# Example source can be Neo4j/Splunk -> dataframe extraction
g = graphistry.edges(edges_df, 'src', 'dst').nodes(nodes_df, 'id')
g_focus = g.gfql([...]).name('connector-slice')
graphistry.privacy(mode='organization')
plot_url = g_focus.plot(render=False)
Canonical docs
- Plugins overview: https://pygraphistry.readthedocs.io/en/latest/plugins.html
- Connector notebooks: https://pygraphistry.readthedocs.io/en/latest/notebooks/plugins.connectors.html
- Compute/layout plugin notebooks: https://pygraphistry.readthedocs.io/en/latest/notebooks/plugins.compute.html
- Notebooks index: https://pygraphistry.readthedocs.io/en/latest/notebooks/index.html