Documentation
¶
Overview ¶
Package skills holds the Agent Skills (agentskills.io) that teach an agent to run lfr: setting up the server, researching and conceiving a newsletter, launching it, writing and sending each issue, learning from the numbers, and handling mailboxes. Skills are embedded in the binary and rendered with its facts, so a printed skill always matches the lfr that printed it.
Index ¶
Constants ¶
const ( AgentsDir = ".agents/skills" ClaudeDir = ".claude/skills" )
Skill folders, relative to a project or home directory. Codex, Cursor, OpenCode, Gemini CLI and GitHub Copilot read .agents/skills; Claude Code reads .claude/skills.
Variables ¶
var Newsletter = []string{"mailbox", "research", "concept", "launch", "issue", "learn"}
Newsletter are the skills a newsletter project needs: its own steps, and the mailbox skill for reading readers' replies. Server setup belongs to the operator's own skills (lfr skills install).
var Readers = map[string]string{ AgentsDir: "Codex, Cursor, OpenCode, Gemini CLI and GitHub Copilot", ClaudeDir: "Claude Code", }
Readers names the agents that read a folder.
Functions ¶
Types ¶
type Change ¶
type Change struct {
Name string `json:"name"`
Path string `json:"path"`
Action string `json:"action"` // created, updated, unchanged, kept, replaced, removed
Reason string `json:"reason,omitempty"`
}
Change is what Install did with one skill.
type Copy ¶
type Copy struct {
Name string `json:"name"`
Path string `json:"path"`
Version string `json:"version,omitempty"`
State State `json:"state"`
}
Copy is one lfr skill found on disk.
type Data ¶
type Data struct {
Version string
// Newsletter project layout and minimums, filled by the project package.
Project map[string]any
}
Data is what a skill template refers to, with [[ ]] delimiters.
type Skill ¶
type Skill struct {
Topic string `json:"topic"`
Name string `json:"name"`
Description string `json:"description"`
Text string `json:"-"`
}
Skill is one rendered skill.