This document suggests a small set of commonly useful metadata keys and conventions.
These are not mandatory exchange-format rules. They are implementation-level recommendations intended to improve interoperability between tools that use gmeta.
Goals
Suggested standard keys should:
- cover common collaboration and automation use cases
- keep names predictable across tools
- make value types obvious from the key name
- avoid overloading one key with several unrelated meanings
- leave room for vendor-specific extensions
Naming recommendations
Keys should use a stable namespace-like structure with : separators.
Recommended conventions:
- use short, lowercase segments
- use a broad domain first, then more specific segments
- prefer singular nouns for scalar values
- reserve plural concepts for collection-typed keys
- keep the same key meaning across all target types when possible
Examples:
ownercodeownersrevieweragent:modelagent:provideragent:session-idagent:promptautomation:status
Type recommendations
A suggested key should also imply a default value type.
General guidance:
- use
stringfor one canonical value - use
listfor ordered history, logs, or preference-ranked values - use
setfor unordered unique membership
Examples:
ownerโstringcodeownersโsetreviewerโsetagent:modelโstringagent:message-idโlistwhen preserving ordered conversation/message references
Format recommendations
Where possible, string values should use simple portable text formats:
- email addresses as plain email strings
- timestamps as RFC 3339 / ISO 8601 UTC strings
- UUIDs in canonical lowercase hyphenated form
- commit IDs as full Git object IDs unless a host system has a stronger stable identifier
- booleans as the literal strings
trueandfalsewhen a dedicated boolean type does not exist - enums as short lowercase tokens like
open,closed,pending,success
If a value needs structured payloads, implementations should prefer:
- multiple related keys
- a collection type
- a stable serialized string format such as JSON only when necessary
Commonly useful standard keys
The following are recommended cross-tool conventions.
Ownership
owner
- suggested type:
string - intended meaning: one primary responsible person or team
- suggested formats:
- email address:
alice@example.com - team slug:
team:release
Useful targets:
projectbranchpathchange-id
codeowners
- suggested type:
set - intended meaning: all owners associated with a target
- suggested member formats:
- email address
- team slug like
team:platform - Git hosting handle only if the hosting product is the intended authority
Useful targets:
pathproject
This key is especially useful when materializing ownership data derived from or aligned with a CODEOWNERS file.
Tools should treat codeowners as advisory metadata, not as a replacement for repository-native enforcement rules.
Review and collaboration
reviewer
- suggested type:
set - intended meaning: requested, assigned, or associated reviewers
- suggested member formats:
- email address
- team slug
- provider-scoped identity like
github:user/octocat
Useful targets:
change-idcommitbranch
review:status
- suggested type:
string - intended meaning: high-level review state
- suggested values:
unreviewedin-reviewapprovedchanges-requested
Useful targets:
change-idcommitbranch
Agent metadata
Agent-generated metadata is likely to be common, so a stable namespace is useful.
agent:provider
- suggested type:
string - intended meaning: service or runtime provider
- examples:
openaianthropiclocalpi
agent:model
- suggested type:
string - intended meaning: model identifier used for generation or analysis
- examples:
gpt-5claude-sonnet-4llama-3.3-70b
agent:session-id
- suggested type:
string - intended meaning: provider or tool session identifier
- suggested format:
- opaque stable string from the originating system
agent:message-id
- suggested type:
list - intended meaning: ordered references to one or more related agent messages or turns
- suggested format:
- opaque provider-issued IDs
agent:prompt
- suggested type:
string - intended meaning: canonical prompt, summary prompt, or final instruction associated with the target
agent:summary
- suggested type:
string - intended meaning: human-readable summary of what the agent did or concluded
Useful targets for agent keys:
commitchange-idbranchpath
Implementations should avoid storing secrets in agent metadata keys.
Automation and CI
automation:status
- suggested type:
string - intended meaning: latest high-level automation state
- suggested values:
pendingrunningsuccessfailed
automation:system
- suggested type:
string - intended meaning: the system that produced the automation metadata
- examples:
github-actionsbuildkitejenkins
automation:run-id
- suggested type:
string - intended meaning: stable external run identifier
Useful targets:
commitchange-idbranch
Provenance and external references
source:url
- suggested type:
string - intended meaning: canonical URL for an external discussion, issue, task, or record
source:id
- suggested type:
string - intended meaning: external system identifier without requiring URL parsing
tag
- suggested type:
set - intended meaning: lightweight labels for filtering and discovery
- suggested member format:
- lowercase tokens such as
bug,docs,release-blocker
Useful targets:
- any target type
Target-specific guidance
Project targets
Good candidates for project metadata include:
ownercodeownerssource:url
Path targets
Good candidates for path metadata include:
ownercodeownerstagagent:summary
Commit and change targets
Good candidates for commit and change-id metadata include:
reviewerreview:statusautomation:statusautomation:run-idagent:provideragent:modelagent:session-id
Branch targets
Good candidates for branch metadata include:
ownerreviewerautomation:statusagent:summary
Extension guidance
Tools may define additional namespaced keys beyond these recommendations.
Suggested practice:
- use a product or organization prefix for private conventions
- avoid redefining the meaning of the standard keys above
- document any key whose format is not self-evident
Examples:
github:pr-numbergitbutler:change-owneracme:policy:tier
Non-goals
This document does not:
- require all implementations to support all keys
- define access control or privacy policy
- define a schema registry
- prevent future dedicated value types beyond
string,list, andset