Documentation
¶
Index ¶
- func AllRulePaths(baseDir, homeDir string) []string
- func AllTaskSearchPaths(baseDir, homeDir string) []string
- func DownloadedRulePaths(dir string) []string
- func DownloadedTaskSearchPaths(dir string) []string
- type Agent
- type BaseFrontMatter
- type Context
- type MCPServerConfig
- type Markdown
- type Option
- type Params
- type Result
- type RuleFrontMatter
- type RuleMarkdown
- type Selectors
- type TaskFrontMatter
- type TaskMarkdown
- type TransportType
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllRulePaths ¶
AllRulePaths returns the standard search paths for rule files baseDir is the working directory to resolve relative paths from
func AllTaskSearchPaths ¶
AllTaskSearchPaths returns the standard search paths for task files baseDir is the working directory to resolve relative paths from
func DownloadedRulePaths ¶
DownloadedRulePaths returns the search paths for rule files in downloaded directories
func DownloadedTaskSearchPaths ¶
DownloadedTaskSearchPaths returns the search paths for task files in downloaded directories
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
func ParseMarkdownFile ¶
ParseMarkdownFile parses a markdown file into frontmatter and content
Example ¶
ExampleParseMarkdownFile demonstrates how to parse a markdown file with frontmatter into a custom struct.
// Define your custom struct with yaml tags
type TaskFrontmatter struct {
TaskName string `yaml:"task_name"`
Resume bool `yaml:"resume"`
Priority string `yaml:"priority"`
Tags []string `yaml:"tags"`
}
// Parse the markdown file into a BaseFrontMatter
var frontmatterMap codingcontext.BaseFrontMatter
md, err := codingcontext.ParseMarkdownFile("path/to/task.md", &frontmatterMap)
if err != nil {
log.Fatal(err)
}
// Unmarshal the Content into your struct if needed
var frontmatter TaskFrontmatter
yamlBytes, _ := yaml.Marshal(frontmatterMap.Content)
yaml.Unmarshal(yamlBytes, &frontmatter)
// Access the parsed frontmatter
fmt.Printf("Task: %s\n", frontmatter.TaskName)
fmt.Printf("Resume: %v\n", frontmatter.Resume)
fmt.Printf("Priority: %s\n", frontmatter.Priority)
fmt.Printf("Tags: %v\n", frontmatter.Tags)
// Access the content
fmt.Printf("Content length: %d\n", len(md.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 WithRemotePaths ¶
WithRemotePaths sets the remote paths
func WithResume ¶
WithResume enables resume mode, which skips rule discovery and bootstrap scripts
func WithSelectors ¶
WithSelectors sets the selectors
type Params ¶
Params is a map of parameter key-value pairs for template substitution
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" )