tinkerpop
AGENTS.md2.2k starsChanged 12 days agoApache-2.0View on GitHub
You are a TinkerPop developer working across the entire monorepo—code, tests, docs, and website to implement, maintain, and validate Apache TinkerPop's graph computing framework and its multi-language Gremlin ecosystem. This repository provides development guidance as Agent Skills: tinker-dev for building, testing and coding conventions, tinker-doc for authoring and revising documentation, tinker-review for graph-based review of a pull request, and tinker-merge for merging work forward through the release branches. If your tool supports Agent Skills, activate them for detailed, task-specific instructions…
Trending
More talk lately.about the whole repository
Who's talking about apache/tinkerpop
- Azure/azure-cosmos-dotnet-v2“[Graph] String filters”GitHub · Apr 10, 2018 · 8 reactions
- Stack Overflow“Tinkerpop common version for multiple databases”Stack Overflow · Apr 19, 2018 · 5 votes
- Stack Overflow“Gremlin Python - Script based method not returning all - JanusGraph”Stack Overflow · Mar 15, 2019 · 4 votes
- Stack Overflow“AWS Neptune: Query Timeout Value”Stack Overflow · Jul 3, 2018 · 4 votes
- Stack Overflow“Programmatically add global variables to gremlin server”Stack Overflow · Feb 12, 2018 · 4 votes
The biggest 5 of 78 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 78
Talked about on GitHub and Stack Overflow (78 times).
On GitHub · 50
- Apr 10, 2018[Graph] String filters — Azure/azure-cosmos-dotnet-v28 reactions · 15 comments
- Jan 6, 2019Update TinkerPop to 3.4.0 — JanusGraph/janusgraph3 reactions · 12 comments
- May 14, 2024Add batch query support for drop step [tp-tests] — JanusGraph/janusgraph1 reaction · 12 comments
- Jun 1, 2021Add support for tinkerpop 3.5.0 — opencypher/cypher-for-gremlin1 reaction
- Oct 1, 2026Bump org.apache.tinkerpop:gremlin-driver from 3.8.1 to 3.8.2 in /modules/orientdb — dhruv9b/testcontainers-java0 reactions
45 more on GitHub
- Sep 25, 2026Bump org.apache.tinkerpop:gremlin-core from 3.7.3 to 3.7.7 — OrienteerBAP/Transponder0 reactions
- Apr 7, 2026Bump tinkerpop.version from 3.7.4 to 3.8.1 — rayokota/hgraphdb0 reactions
- Apr 2, 2026Bump gremlin.version from 3.7.3 to 3.8.0 — modeseven-onap/aai-aai-common0 reactions
- Jan 13, 2026Migrate node database to full open source solutions — neurobagel/planning0 reactions
- Oct 16, 2025https://github.com/apache/tinkerpop,8bfdf50778e29d98c6554a01688fc5cc34524522,tinkergraph-gremlin,org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphGraphSONSerializerV2Test.deserializersTestsTinkerGraph — TestingResearchIllinois/idoft0 reactions
- Jun 15, 2025Replace handshakeInterceptor with requestInterceptor — aws/neptune-gremlin-client0 reactions · 1 comment
- Apr 22, 2024Bump org.apache.tinkerpop:gremlin-driver from 3.7.1 to 3.7.2 in /modules/orientdb — gesellix/testcontainers-java0 reactions
- Apr 15, 2024Bump org.apache.tinkerpop:gremlin-driver from 3.7.1 to 3.7.2 in /modules/orientdb — findepi/testcontainers-java0 reactions
- Jan 1, 2024Bump gremlinVersion from 3.5.6 to 3.7.1 — odttlnt/egeria0 reactions · 1 comment
- Nov 24, 2023Bump gremlinVersion from 3.5.2 to 3.7.0 — odttlnt/egeria0 reactions · 1 comment
- May 27, 2023Feat:支持从浏览器端连接 TinkerPop gremlin-javascript — antvis/G6VP0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.4.11 to 3.6.2 — aproeve/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — lcpopa/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — pmarius22/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.1 to 3.6.2 — cmgrote/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.1 to 3.6.2 — alexandra-bucur/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — bogdan-sava/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.5.2 to 3.6.2 — mandy-chessell/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — wbittles/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.5.1 to 3.6.2 — cmgrote/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — mandy-chessell/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — odttlnt/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.5.2 to 3.6.2 — davidradl/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlin.version from 3.5.2 to 3.6.2 — davidradl/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.5.1 to 3.6.2 — alexandra-bucur/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.5.2 to 3.6.2 — pmarius22/egeria0 reactions · 1 comment
- Feb 1, 2023Bump gremlinVersion from 3.5.2 to 3.6.2 — wbittles/egeria0 reactions · 1 comment
- Nov 21, 2022【Question】What is the difference between tinkerpop/gremlin-go and gremtune — schwartzmx/gremtune0 reactions · 2 comments
- Oct 5, 2022Upgrade to TinkerPop 3.6.1 — clojurewerkz/ogre0 reactions · 4 comments
- Sep 29, 2022Bump tinkerpop.version from 3.5.4 to 3.6.1 — rngcntr/janusgraph0 reactions
- Aug 1, 2022Bump gremlin.version from 3.4.11 to 3.6.1 — aproeve/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.5.1 to 3.6.1 — odttlnt/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlinVersion from 3.5.1 to 3.6.1 — odttlnt/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.5.1 to 3.6.1 — cmgrote/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.5.2 to 3.6.1 — CDaRip2U/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlinVersion from 3.5.2 to 3.6.1 — wbittles/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlinVersion from 3.5.2 to 3.6.1 — CDaRip2U/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.5.2 to 3.6.1 — wbittles/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlinVersion from 3.5.1 to 3.6.1 — cmgrote/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.5.1 to 3.6.1 — alexandra-bucur/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlinVersion from 3.5.2 to 3.6.1 — pmarius22/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.5.2 to 3.6.1 — pmarius22/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlinVersion from 3.4.12 to 3.6.1 — yevgenmar/egeria0 reactions · 1 comment
- Aug 1, 2022Bump gremlin.version from 3.4.12 to 3.6.1 — yevgenmar/egeria0 reactions · 1 comment
- May 12, 2022Bump tinkerpop.version from 3.5.3 to 3.6.0 — Sqooba/janusgraph0 reactions
On Stack Overflow · 28
- Apr 19, 2018Tinkerpop common version for multiple databases5 votes
- Mar 15, 2019Gremlin Python - Script based method not returning all - JanusGraph4 votes
- Jul 3, 2018AWS Neptune: Query Timeout Value4 votes · 1 answer
- Feb 12, 2018Programmatically add global variables to gremlin server4 votes
- Jul 6, 2017How many databases per instance in JanusGraph? How is security configured between databases?4 votes
23 more on Stack Overflow
- Jun 28, 2020Upgrading to AnonymousTraversalSource ( Gremlin 3.3.5+ Node.js)3 votes · 1 answer
- Dec 14, 2023Fetch substring of a field from the edge of a graph2 votes
- Jun 30, 2023Hashmap as Property Value in Janusgraph2 votes
- May 27, 2023Neptune throws Bad handshake error while connecting to a IAM Enabled Neptune Instance2 votes
- Mar 30, 2023Gremlin.net.dll not found2 votes
- May 12, 2020gremlinpython - get IDs from edges as simple list instead of dictionary2 votes
- Mar 26, 2020exclude transitive shaded dependency in maven2 votes · 1 answer
- Aug 17, 2017What version data store does Gremlin create when creating a Neo4j database from the console?2 votes
- Aug 28, 2023How do I create AWS Neptune nodes with nested proprieties using gremlin queries1 vote · 1 answer
- Jul 9, 2020gremlin python clone traversal1 vote
- Sep 24, 2019Issues getting correct data from gremlin server1 vote
- Aug 17, 2018how to specify the breadth-first strategy or the depth-first strategy in gremlin1 vote
- Aug 7, 2018TinkerPop3 > Gremlin Server > Check whether Graph lib is installed1 vote
- Jul 3, 2018Traversal Serialization error in JanusGraph1 vote
- May 5, 2025GremlinServerError 499: “The traversal source [g] for alias [g] is not configured on the server”0 votes
- Oct 4, 2022gremlinpython client.submitAsync() fails when deployed to Azure as App Service0 votes
- Jul 7, 2022how to run Gremlin queries on Neo4j-3.50 votes
- Jun 21, 2021Gremlin Translator returning error: "Cannot read property 'length' of undefined"0 votes · 1 answer
- Sep 10, 2020How time is measured in gremlin consolesays it tested it0 votes
- Nov 29, 2019Use custom lib in gremlin server script file0 votes · 1 answer
- Jan 14, 2019Can Neo4j 3.5.1 (latest version) be accessed using the Neo4j Tinkerpop API?0 votes
- Aug 21, 2018How can I get a plugin for neo4j 3.4.5 with gremlin console or server?0 votes
- Jan 16, 2017Import graphML created via gremlin in Orientdb to include in DSE graph by Graphloader0 votes
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
20 rules. About 0 are common, 14 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 16
If your tool does not discover the skill automatically, run bin/agent-setup.sh --list to see how to configure it, or bin/agent-setup.sh …
- Very specific: line 34
If bd is not installed, skip it — nothing else in this repository depends on beads.
- Very specific: line 79
Run verify on the modules you changed, enabling integration tests where the change warrants them: mvn verify -pl <changed-modules> …
- Distinctive: line 100
Before presenting any change as complete, satisfy the Definition of Done above — a full Maven validation matched to your changeset, not …
- Distinctive: line 102
Update or add tests when behavior changes.
- Very specific: line 103
Update documentation when you change public behavior or APIs, and add a changelog entry for the net user-facing change — one entry per …
- Distinctive: line 105
Keep commit messages short and usage-focused — what changed from a reader's perspective, not an implementation play-by-play.
- Distinctive: line 107
Follow existing patterns for code structure, documentation layout, and naming.
- Distinctive: line 108
If code is ready, stop and ask to commit, push or merge manually.
- Distinctive: line 112
Don't perform large, sweeping refactors unless explicitly requested.
- Distinctive: line 113
Don't change public APIs, configuration formats, or network protocols without explicit human approval.
- Distinctive: line 114
Don't switch documentation formats (e.g., AsciiDoc to Markdown) in the main docs tree.
- Distinctive: line 115
Don't introduce new external dependencies, modules, or build plugins without discussion.
- Distinctive: line 116
Don't invent project policies, version numbers, or release names.
- Distinctive: line 117
Don't remove or weaken tests to "fix" failures.
- Distinctive: line 118
Don't push to any branch.
- Very specific: line 119
Don't merge any PR or branch without explicit instruction.
- Distinctive: line 121
Don't create tags or releases.
- Very specific: line 122
Don't add @author javadoc (or similar) tags for new files, but do not remove existing ones either.
- Distinctive: line 126
Prefer no change over an unsafe or speculative change.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
You are a TinkerPop developer working across the entire monorepo—code, tests, docs, and website to implement, maintain, and validate Apache TinkerPop's graph computing framework and its multi-language Gremlin ecosystem.
Primary Guidance: Agent Skills
This repository provides development guidance as Agent Skills:
tinker-dev for building, testing and coding conventions, tinker-doc for authoring and
revising documentation, tinker-review for graph-based review of a pull request, and
tinker-merge for merging work forward through the release branches. If your tool supports
Agent Skills, activate them for detailed, task-specific instructions covering build
recipes, test evaluation, coding conventions, and reference material for each Gremlin Language
Variant.
If your tool does not discover the skill automatically, run bin/agent-setup.sh --list to
see how to configure it, or bin/agent-setup.sh <agent> to set up the integration.
Planning and Memory: Beads
TinkerPop maintainers use beads (bd) for planning and as the project's long-term
memory — it records not just what changed, but why: decisions made, alternatives rejected,
directions abandoned.
If bd is installed, run bd prime at the start of a session and again after any context
compaction. It emits .beads/PRIME.md, the canonical workflow — root binding, planning
work as a dependency graph, decision capture, labels, and pin-at-merge. Follow it in
preference to tracking work in TodoWrite, TaskCreate, or a markdown plan file.
command -v bd >/dev/null && bd primeIf bd is not installed, skip it — nothing else in this repository depends on beads. Committers
can wire the workflow into their agent automatically with bin/agent-setup.sh --contributor.
Canonical Documentation
These local documents are authoritative. If this file appears to contradict them, treat them as canonical.
README.mdCONTRIBUTING.md- Developer documentation at
docs/src/dev/**
Licensing and Provenance
Apache TinkerPop is licensed under Apache License 2.0. Contributions must meet the ASF's Generative Tooling guidance. In particular:
- Do not copy verbatim from incompatibly licensed sources. This includes GPL / AGPL / LGPL code, proprietary code, unlicensed snippets, and Stack Overflow / blog / forum excerpts whose licensing is unclear. Reimplement from specifications, standards, or Apache-compatible sources (see the ASF 3rd Party Licensing Policy).
- Every new source file needs the ASF license header. See
bin/asf-license-header.txtfor the canonical form. - Attribute generated work in commits. When AI tooling authored a non-trivial portion of a change, add a trailer
of the form
Assisted-by: <agent>:<model>to the commit message, where<agent>is the agent or IDE used (e.g.Claude Code,Cursor,Kiro,GitHub Copilot) and<model>is the model identifier (e.g.claude-opus-4-7,gpt-5). Append a bracketed entry per additional auxiliary tool (e.g.[tinkerpop-mcp]) only when something other than the primary agent contributed. For example,Assisted-by: Claude Code:claude-opus-4-7,Assisted-by: Cursor:gpt-5, orAssisted-by: Claude Code:claude-opus-4-7 [tinkerpop-mcp]. This aligns with the ASF's recommendation on AI provenance tracking.Assisted-by:is the only AI-provenance trailer this project uses — do not add any other trailer (for exampleClaude-Session,Co-Authored-By,Generated-by, or any self-improvised variant). If you think a change needs provenance beyondAssisted-by:, stop and ask rather than inventing a trailer. - The contributor remains responsible for what they submit. Review generated output for licensing, correctness, and style before committing.
Definition of Done
A change is not done until a full Maven validation has passed locally. Run it before presenting work for review — even when your targeted or unit tests already pass, and even if you judge a full run unnecessary. Incremental testing during development is encouraged, but it does not satisfy this gate.
Match the validation to your changeset using a two-step pattern:
- Rebuild and install the whole reactor without tests, so every module picks up your changes:
mvn clean install -DskipTests - Run
verifyon the modules you changed, enabling integration tests where the change warrants them:mvn verify -pl <changed-modules> [-DskipIntegrationTests=false]
Examples:
- Python GLV →
mvn clean install -DskipTeststhenmvn verify -pl gremlin-python gremlin-server+gremlin-driver→mvn clean install -DskipTeststhenmvn verify -pl gremlin-driver,gremlin-server -DskipIntegrationTests=false- Broad or core changes, or when unsure →
mvn clean install -DskipIntegrationTests=false
See the Definition of Done section of the tinker-dev skill for the full
changeset-to-command mapping and per-GLV details. If you cannot run the validation (for example,
Docker is unavailable), say so explicitly and report the change as not validated.
Essential Rules
These rules apply to any AI/IDE assistant operating on this repository.
Do
- Make small, focused changes that are easy to review.
- Before presenting any change as complete, satisfy the Definition of Done above — a full Maven validation matched to your changeset, not just targeted or unit tests.
- Update or add tests when behavior changes.
- Update documentation when you change public behavior or APIs, and add a changelog entry for the net user-facing
change — one entry per user-facing change, not one per commit (see the
tinker-docskill for changelog discipline). - Keep commit messages short and usage-focused — what changed from a reader's perspective, not an implementation play-by-play. Deep rationale belongs in the PR or code comments.
- Follow existing patterns for code structure, documentation layout, and naming.
- If code is ready, stop and ask to commit, push or merge manually.
Don't
- Don't perform large, sweeping refactors unless explicitly requested.
- Don't change public APIs, configuration formats, or network protocols without explicit human approval.
- Don't switch documentation formats (e.g., AsciiDoc to Markdown) in the main docs tree.
- Don't introduce new external dependencies, modules, or build plugins without discussion.
- Don't invent project policies, version numbers, or release names.
- Don't remove or weaken tests to "fix" failures; adjust the implementation or test data instead.
- Don't push to any branch.
- Don't merge any PR or branch without explicit instruction. When asked, follow the
tinker-mergeskill, which merges locally and leaves the push to the operator. - Don't create tags or releases.
- Don't add
@authorjavadoc (or similar) tags for new files, but do not remove existing ones either.
When In Doubt
- Prefer no change over an unsafe or speculative change.
- Ask for clarification.
Security
For Apache TinkerPop's threat model — trust boundaries, in-scope / out-of-scope, the security properties the project does and does not provide, and known non-findings — see SECURITY.md, which points to THREAT_MODEL.md. Consult it before triaging or reporting security issues.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

