Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/nylas/cli/domain-patternsgit clone --depth 1 https://github.com/nylas/cliWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.00713 |
| Opus 5 | $0.00000 | $0.00357 |
| Sonnet 5 | $0.00000 | $0.00143 |
| Haiku 4.5 | $0.00000 | $0.00071 |
Grade A, and why
domain-patterns scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 138 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Domain Type Patterns
Reference patterns for creating domain types in internal/domain/.
Basic Resource Type
package domain
// Resource represents a resource from Nylas API.
type Resource struct {
ID string `json:"id"`
GrantID string `json:"grant_id"`
Object string `json:"object,omitempty"`
Name string `json:"name,omitempty"`
CreatedAt int64 `json:"created_at,omitempty"`
UpdatedAt int64 `json:"updated_at,omitempty"`
}
Resource with Nested Types
// Contact with nested email/phone types
type Contact struct {
ID string `json:"id"`
GrantID string `json:"grant_id"`
GivenName string `json:"given_name,omitempty"`
Surname string `json:"surname,omitempty"`
Emails []ContactEmail `json:"emails,omitempty"`
PhoneNumbers []ContactPhone `json:"phone_numbers,omitempty"`
}
type ContactEmail struct {
Email string `json:"email"`
Type string `json:"type,omitempty"` // home, work, school, other
}
type ContactPhone struct {
Number string `json:"number"`
Type string `json:"type,omitempty"`
}
Query Parameters Type
// ResourceQueryParams defines query parameters for listing resources.
type ResourceQueryParams struct {
Limit int `json:"limit,omitempty"`
PageToken string `json:"page_token,omitempty"`
// Add resource-specific filters
Status string `json:"status,omitempty"`
Search string `json:"search,omitempty"`
}
List Response Type
// ResourceListResponse represents paginated list response.
type ResourceListResponse struct {
Data []Resource `json:"data"`
NextCursor string `json:"next_cursor,omitempty"`
RequestID string `json:"request_id,omitempty"`
}
Helper Methods
// DisplayName returns a formatted display name.
func (r Resource) DisplayName() string {
if r.Name != "" {
return r.Name
}
return r.ID
}
// PrimaryEmail returns the primary email address.
func (c Contact) PrimaryEmail() string {
for _, e := range c.Emails {
if e.Type == "primary" || e.Type == "work" {
return e.Email
}
}
if len(c.Emails) > 0 {
return c.Emails[0].Email
}
return ""
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 138 lines · 0 tokens per session scan A 0d9d75f4a46d
domain-patterns is a command published in the GitHub repository nylas/cli (68 stars, last pushed 13d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 713 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
create-pr
Create a pull request following the official template.
/release
Release a new version — updates CHANGELOG, pyproject.toml, creates git tag, and pushes.
numbers-to-excel
Convert a Numbers document to Excel.
briefing
Get a daily briefing of today's calendar events, reminders, and optional inbox context.
symfony-api-errors
Design API Platform 4.3 error handling — RFC 7807.
execute-plan
Execute an implementation plan methodically with TDD and continuous validation.