Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Agent ¶ added in v0.0.17
type Agent string
Agent represents an AI coding agent
const ( AgentCursor Agent = "cursor" AgentOpenCode Agent = "opencode" AgentCopilot Agent = "copilot" AgentClaude Agent = "claude" AgentGemini Agent = "gemini" AgentAugment Agent = "augment" AgentWindsurf Agent = "windsurf" AgentCodex Agent = "codex" )
Supported agents
func ParseAgent ¶ added in v0.0.17
ParseAgent parses a string into an Agent type
func (Agent) MatchesPath ¶ added in v0.0.17
MatchesPath returns true if the given path matches any of the agent's patterns
func (Agent) PathPatterns ¶ added in v0.0.17
PathPatterns returns the path patterns associated with this agent
func (Agent) ShouldExcludePath ¶ added in v0.0.18
ShouldExcludePath returns true if the given path should be excluded based on this agent Empty agent means no exclusion
type BaseFrontMatter ¶ added in v0.0.18
BaseFrontMatter represents parsed YAML frontmatter from markdown files
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
Context holds the configuration and state for assembling coding context
type MCPServerConfig ¶ added in v0.0.18
type MCPServerConfig struct {
// Type specifies the connection protocol.
// Values: "stdio", "sse", "http".
Type TransportType `json:"type,omitempty"`
// Command is the executable to run (e.g. "npx", "docker").
// Required for "stdio" type.
Command string `json:"command,omitempty"`
// Args is an array of arguments for the command.
Args []string `json:"args,omitempty"`
// Env defines environment variables for the server process.
Env map[string]string `json:"env,omitempty"`
// URL is the endpoint for "http" or "sse" types.
// Required for remote connections.
URL string `json:"url,omitempty"`
// Headers contains custom HTTP headers (e.g. {"Authorization": "Bearer ..."}).
// Used for "http" and "sse" types.
Headers map[string]string `json:"headers,omitempty"`
}
MCPServerConfig defines the common configuration fields supported by both platforms.
type Markdown ¶
type Markdown[T any] struct { FrontMatter T // Parsed YAML frontmatter Content string // Expanded content of the markdown Tokens int // Estimated token count }
Markdown represents a markdown file with frontmatter and content
type Option ¶
type Option func(*Context)
Option is a functional option for configuring a Context
func WithAgent ¶ added in v0.0.17
WithAgent sets the target agent, which excludes that agent's own rules
func WithManifestURL ¶ added in v0.0.20
WithManifestURL sets the manifest URL
func WithResume ¶
WithResume enables resume mode, which skips rule discovery and bootstrap scripts
func WithSearchPaths ¶ added in v0.0.20
WithSearchPaths adds one or more search paths
func WithSelectors ¶
WithSelectors sets the selectors
type Params ¶
Params is a map of parameter key-value pairs for template substitution
func ParseParams ¶ added in v0.0.19
ParseParams parses a string containing key=value pairs separated by spaces. Values must be quoted with double quotes, and quotes can be escaped. Unquoted values are treated as an error. Examples:
- `key1="value1" key2="value2"`
- `key1="value with spaces" key2="value2"`
- `key1="value with \"escaped\" quotes"`
type Result ¶
type Result struct {
Rules []Markdown[RuleFrontMatter] // List of included rule files
Task Markdown[TaskFrontMatter] // Task file with frontmatter and content
}
Result holds the assembled context from running a task
func (*Result) MCPServers ¶ added in v0.0.18
func (r *Result) MCPServers() []MCPServerConfig
MCPServers returns all MCP servers from both rules and the task. Servers from the task are included first, followed by servers from rules. Duplicate servers may be present if the same server is specified in multiple places.
type RuleFrontMatter ¶ added in v0.0.18
type RuleFrontMatter struct {
BaseFrontMatter `yaml:",inline"`
// TaskNames specifies which task(s) this rule applies to
// Array of task names for OR logic
TaskNames []string `yaml:"task_names,omitempty" json:"task_names,omitempty"`
// Languages specifies which programming language(s) this rule applies to
// Array of languages for OR logic (e.g., ["go", "python"])
Languages []string `yaml:"languages,omitempty" json:"languages,omitempty"`
// Agent specifies which AI agent this rule is intended for
Agent string `yaml:"agent,omitempty" json:"agent,omitempty"`
// MCPServers lists the MCP servers that need to be running for this rule
// Metadata only, does not filter
MCPServers []MCPServerConfig `yaml:"mcp_servers,omitempty" json:"mcp_servers,omitempty"`
// RuleName is an optional identifier for the rule file
RuleName string `yaml:"rule_name,omitempty" json:"rule_name,omitempty"`
}
RuleFrontMatter represents the standard frontmatter fields for rule files
func (*RuleFrontMatter) UnmarshalJSON ¶ added in v0.0.18
func (r *RuleFrontMatter) UnmarshalJSON(data []byte) error
UnmarshalJSON custom unmarshaler that populates both typed fields and Content map
type RuleMarkdown ¶ added in v0.0.18
type RuleMarkdown = Markdown[RuleFrontMatter]
RuleMarkdown is a Markdown with RuleFrontMatter
type Selectors ¶
Selectors stores selector key-value pairs where values are stored in inner maps Multiple values for the same key use OR logic (match any value in the inner map) Each value can be represented exactly once per key
func (*Selectors) GetValue ¶
GetValue returns true if the given value exists in the inner map for the given key. Returns false if the key doesn't exist or the value is not present.
func (*Selectors) MatchesIncludes ¶
func (includes *Selectors) MatchesIncludes(frontmatter BaseFrontMatter) bool
MatchesIncludes returns true if the frontmatter matches all include selectors If a key doesn't exist in frontmatter, it's allowed Multiple values for the same key use OR logic (matches if frontmatter value is in the inner map)
type TaskFrontMatter ¶ added in v0.0.18
type TaskFrontMatter struct {
BaseFrontMatter `yaml:",inline"`
// Agent specifies the default agent if not specified via -a flag
// This is not used for selecting tasks or rules, only as a default
Agent string `yaml:"agent,omitempty" json:"agent,omitempty"`
// Languages specifies the programming language(s) for filtering rules
// Array of languages for OR logic (e.g., ["go", "python"])
Languages []string `yaml:"languages,omitempty" json:"languages,omitempty"`
// Model specifies the AI model identifier
// Does not filter rules, metadata only
Model string `yaml:"model,omitempty" json:"model,omitempty"`
// SingleShot indicates whether the task runs once or multiple times
// Does not filter rules, metadata only
SingleShot bool `yaml:"single_shot,omitempty" json:"single_shot,omitempty"`
// Timeout specifies the task timeout in time.Duration format (e.g., "10m", "1h")
// Does not filter rules, metadata only
Timeout string `yaml:"timeout,omitempty" json:"timeout,omitempty"`
// MCPServers lists the MCP servers required for this task
// Does not filter rules, metadata only
MCPServers []MCPServerConfig `yaml:"mcp_servers,omitempty" json:"mcp_servers,omitempty"`
// Resume indicates if this task should be resumed
Resume bool `yaml:"resume,omitempty" json:"resume,omitempty"`
// Selectors contains additional custom selectors for filtering rules
Selectors map[string]any `yaml:"selectors,omitempty" json:"selectors,omitempty"`
}
TaskFrontMatter represents the standard frontmatter fields for task files
func (*TaskFrontMatter) UnmarshalJSON ¶ added in v0.0.18
func (t *TaskFrontMatter) UnmarshalJSON(data []byte) error
UnmarshalJSON custom unmarshaler that populates both typed fields and Content map
type TaskMarkdown ¶ added in v0.0.18
type TaskMarkdown = Markdown[TaskFrontMatter]
TaskMarkdown is a Markdown with TaskFrontMatter
type TransportType ¶ added in v0.0.18
type TransportType string
TransportType defines the communication protocol used by the server. Supported by both Claude and Cursor.
const ( // TransportTypeStdio is for local processes (executables). TransportTypeStdio TransportType = "stdio" // TransportTypeSSE is for Server-Sent Events (Remote). // Note: Claude Code prefers HTTP over SSE, but supports it. TransportTypeSSE TransportType = "sse" // TransportTypeHTTP is for standard HTTP/POST interactions. TransportTypeHTTP TransportType = "http" )