Writes, reviews, fixes, validates, and prepares portable Relatr Elo plugins across the full lifecycle from source design to kind 765 publication. Use when the task involves Relatr plugins, Elo plugin authoring, capability-based scoring logic, plugin manifests, `relo` checks/builds/publishing, or explaining how Relatr plugin programs use `plan`, `then`, and `do`.
This skill helps an agent produce correct, portable Elo plugins for relatr and guide users through the full plugin lifecycle. The core principle is to treat Relatr plugins as bounded, capability-driven scoring programs: collect data safely, then score it clearly.
When to use
When a user wants to write a new portable Relatr plugin in Elo.
When a user needs help fixing or reviewing an existing Elo plugin.
When a user asks how Relatr-specific plugin programs use plan, then, and do.
When a user needs capability-aware plugin guidance for nostr.query, graph capabilities, or http.nip05_resolve.
When a user wants to validate, build, or publish a plugin using relo or package it as a Nostr kind 765 event.
When an LLM needs project-specific reference material for Elo operators, common functions, nullable handling, and Relatr plugin packaging.
Do NOT use when:
The task is about general Nostr application development unrelated to Relatr plugin authoring.
The task is about changing Relatr runtime internals rather than authoring or reviewing plugin artifacts.
The user only needs generic Elo language education with no Relatr plugin context.
Workflow
1. Classify the request
Identify which of these workflows is needed before producing output:
Author — create a new plugin from a desired scoring signal.
Review — inspect a plugin for correctness, safety, and compatibility.
Debug — fix broken syntax, misuse of do, bad fallbacks, or wrong capability args.
Explain — teach the plugin model, Elo operators, or lifecycle steps.
If the request mixes concerns, handle them in lifecycle order: source correctness first, packaging second, publishing last.
2. Load only the references needed
Use progressive disclosure instead of repeating all documentation inline.
Read references/elo-core.md when the task depends on Elo syntax, values, let, if, lists, tuples, or field access.
Read references/elo-operators-and-functions.md when the task depends on operators, Data(), fetch, fallback |, or pipe |>.
Read references/authoring-model.md when designing or fixing Relatr plugin structure.
Read references/capabilities.md before writing any do call.
Read references/patterns.md when the user wants a concrete example or a starting point.
Read references/lifecycle.md when the task involves relo, manifests, publishing, or installation.
3. Build or assess the plugin with Relatr rules, not generic assumptions
Always enforce these non-negotiable constraints:
A plugin returns a numeric score intended for [0.0, 1.0].
External requests happen only through do.
do may appear only as the full right-hand side of a binding in plan or then rounds.
Capability args must evaluate to strict JSON-shaped values.
Capability results must be treated as nullable and given safe fallbacks.
Relay queries should be narrow and include explicit limit values.
Graph capability argument shapes must match the documented object fields exactly.
If a plugin needs one capability result to compute the next request, split it into another then round instead of nesting requests.
4. Produce lifecycle-aware outputs
Match the output to the user’s likely next step.
For authoring, provide the plugin source plus a brief explanation of the scoring logic.
For review, report concrete issues, why they matter, and a corrected version when possible.
For debugging, explain the failing pattern first, then show the fixed plugin.
For packaging, provide the required tags, event structure, and the relevant relo check, build, or publish commands.
For teaching, explain the minimum relevant Elo and Relatr concepts, then ground them in one plugin example.
5. Finish with verification guidance
Unless the user only asked for a conceptual explanation, end with the minimum concrete verification steps:
structure / logic checks
capability-shape checks
manifest / compatibility checks
relo command sequence when applicable
Prefer concise checklists over long prose.
Checklist
Classified the request as author, review, debug, package/publish, or explain.
Consulted the smallest relevant reference files before writing advice.
Enforced Relatr plugin constraints around rounds, do, JSON args, and nullable results.
Verified capability names and argument shapes against the documented Relatr catalog.
Included packaging and validation steps when the task extends beyond raw .elo source.
Delivered output in a form the user can immediately use: plugin source, review notes, manifest, commands, or explanation.
Examples
Example:
Input: user asks for a plugin that scores recent note activity for a target pubkey and wants something publishable later.
Write a Relatr Elo plugin that scores users based on recent notes from the last 7 days. Keep it simple and safe, and tell me how I would publish it later.
Output: a bounded activity plugin plus minimal lifecycle guidance.
plan
notes = do 'nostr.query' {
kinds: [1],
authors: [_.targetPubkey],
since: _.now - 604800,
limit: 50
}
in
let
events = notes | [],
n = length(events)
in
if n >= 30 then 1.0
else if n >= 12 then 0.75
else if n >= 2 then 0.3
else 0.0
Using do inside if, let, arrays, or nested expressions
Move the request to a full binding RHS inside plan or then.
Forgetting nullable fallbacks for capability results
Use `
Writing graph capability args with the wrong field names
Check the exact object shape in references/capabilities.md before emitting the call.
Mixing up fallback `
and pipe
Writing a plugin that tries to do too much
Keep one focused signal per plugin and let Relatr combine weighted plugin outputs.
Quick reference
Operation
How
Learn core Elo syntax
Read references/elo-core.md.
Check operators and common helpers
Read references/elo-operators-and-functions.md.
Design or fix plugin rounds
Read references/authoring-model.md.
Verify capability calls
Read references/capabilities.md.
Start from a known-safe example
Read references/patterns.md.
Package and publish a plugin
Read references/lifecycle.md.
Key principles
Collect first, score second — treat plugin authoring as a bounded data-collection phase followed by a pure scoring phase.
Capabilities are host-provided — a plugin may request only what Relatr exposes, and must never assume arbitrary runtime powers.
Null is normal — capability failures, missing fields, and absent context are expected; robust plugins always define fallbacks.
Keep plugins focused — one understandable signal is better than a monolithic trust algorithm hidden inside one plugin.
Lifecycle completeness matters — a good answer covers not only the source program, but also validation, packaging, compatibility, and publication when the user needs them.
1---2name: relatr-elo-plugin-author3description: Writes, reviews, fixes, validates, and prepares portable Relatr Elo plugins across the full lifecycle from source design to kind 765 publication. Use when the task involves Relatr plugins, Elo plugin authoring, capability-based scoring logic, plugin manifests, `relo` checks/builds/publishing, or explaining how Relatr plugin programs use `plan`, `then`, and `do`.4---56# Relatr Elo Plugin Author78## Overview910This skill helps an agent produce correct, portable Elo plugins for relatr and guide users through the full plugin lifecycle. The core principle is to treat Relatr plugins as bounded, capability-driven scoring programs: collect data safely, then score it clearly.1112## When to use1314- When a user wants to write a new portable Relatr plugin in Elo.15- When a user needs help fixing or reviewing an existing Elo plugin.16- When a user asks how Relatr-specific plugin programs use `plan`, `then`, and `do`.17- When a user needs capability-aware plugin guidance for `nostr.query`, graph capabilities, or `http.nip05_resolve`.18- When a user wants to validate, build, or publish a plugin using `relo` or package it as a Nostr kind `765` event.19- When an LLM needs project-specific reference material for Elo operators, common functions, nullable handling, and Relatr plugin packaging.2021**Do NOT use when:**2223- The task is about general Nostr application development unrelated to Relatr plugin authoring.24- The task is about changing Relatr runtime internals rather than authoring or reviewing plugin artifacts.25- The user only needs generic Elo language education with no Relatr plugin context.2627## Workflow2829### 1. Classify the request3031Identify which of these workflows is needed before producing output:3233- **Author** — create a new plugin from a desired scoring signal.34- **Review** — inspect a plugin for correctness, safety, and compatibility.35- **Debug** — fix broken syntax, misuse of `do`, bad fallbacks, or wrong capability args.36- **Package / publish** — prepare manifest tags, artifact JSON, and `relo` commands.37- **Explain** — teach the plugin model, Elo operators, or lifecycle steps.3839If the request mixes concerns, handle them in lifecycle order: source correctness first, packaging second, publishing last.4041### 2. Load only the references needed4243Use progressive disclosure instead of repeating all documentation inline.4445- Read [`references/elo-core.md`](references/elo-core.md) when the task depends on Elo syntax, values, `let`, `if`, lists, tuples, or field access.46- Read [`references/elo-operators-and-functions.md`](references/elo-operators-and-functions.md) when the task depends on operators, `Data()`, `fetch`, fallback `|`, or pipe `|>`.47- Read [`references/authoring-model.md`](references/authoring-model.md) when designing or fixing Relatr plugin structure.48- Read [`references/capabilities.md`](references/capabilities.md) before writing any `do` call.49- Read [`references/patterns.md`](references/patterns.md) when the user wants a concrete example or a starting point.50- Read [`references/lifecycle.md`](references/lifecycle.md) when the task involves [`relo`](../../relo/README.md), manifests, publishing, or installation.5152### 3. Build or assess the plugin with Relatr rules, not generic assumptions5354Always enforce these non-negotiable constraints:5556- A plugin returns a numeric score intended for `[0.0, 1.0]`.57- External requests happen only through `do`.58- `do` may appear only as the full right-hand side of a binding in `plan` or `then` rounds.59- Capability args must evaluate to strict JSON-shaped values.60- Capability results must be treated as nullable and given safe fallbacks.61- Relay queries should be narrow and include explicit `limit` values.62- Graph capability argument shapes must match the documented object fields exactly.6364If a plugin needs one capability result to compute the next request, split it into another `then` round instead of nesting requests.6566### 4. Produce lifecycle-aware outputs6768Match the output to the user’s likely next step.6970- For **authoring**, provide the plugin source plus a brief explanation of the scoring logic.71- For **review**, report concrete issues, why they matter, and a corrected version when possible.72- For **debugging**, explain the failing pattern first, then show the fixed plugin.73- For **packaging**, provide the required tags, event structure, and the relevant `relo check`, `build`, or `publish` commands.74- For **teaching**, explain the minimum relevant Elo and Relatr concepts, then ground them in one plugin example.7576### 5. Finish with verification guidance7778Unless the user only asked for a conceptual explanation, end with the minimum concrete verification steps:7980- structure / logic checks81- capability-shape checks82- manifest / compatibility checks83- `relo` command sequence when applicable8485Prefer concise checklists over long prose.8687## Checklist8889- [ ] Classified the request as author, review, debug, package/publish, or explain.90- [ ] Consulted the smallest relevant reference files before writing advice.91- [ ] Enforced Relatr plugin constraints around rounds, `do`, JSON args, and nullable results.92- [ ] Verified capability names and argument shapes against the documented Relatr catalog.93- [ ] Included packaging and validation steps when the task extends beyond raw `.elo` source.94- [ ] Delivered output in a form the user can immediately use: plugin source, review notes, manifest, commands, or explanation.9596## Examples9798**Example:**99100Input: user asks for a plugin that scores recent note activity for a target pubkey and wants something publishable later.101102```text103Write a Relatr Elo plugin that scores users based on recent notes from the last 7 days. Keep it simple and safe, and tell me how I would publish it later.104```105106Output: a bounded activity plugin plus minimal lifecycle guidance.107108```elo109plan110 notes = do 'nostr.query' {111 kinds: [1],112 authors: [_.targetPubkey],113 since: _.now - 604800,114 limit: 50115 }116in117let118 events = notes | [],119 n = length(events)120in121if n >= 30 then 1.0122else if n >= 12 then 0.75123else if n >= 2 then 0.3124else 0.0125```126127```text128Suggested manifest tags:129- ["n", "activity_notes"]130- ["relatr-version", "^0.2.0"]131- ["title", "Recent note activity"]132- ["description", "Scores higher for recent note activity over the last 7 days."]133134Suggested checks:135- `relo check plugin.elo`136- `relo build plugin.elo --name activity_notes --relatr-version '^0.2.0'`137```138139## Common mistakes140141| Mistake | Fix |142| --- | --- |143| Using `do` inside `if`, `let`, arrays, or nested expressions | Move the request to a full binding RHS inside `plan` or `then`. |144| Forgetting nullable fallbacks for capability results | Use `| []`, `| {}`, `| null`, and `fetch(... )` with fallbacks. |145| Writing graph capability args with the wrong field names | Check the exact object shape in [`references/capabilities.md`](references/capabilities.md) before emitting the call. |146| Mixing up fallback `|` and pipe `|>` | Use `|` for defaults and `|>` for chaining a value into a function. |147| Writing a plugin that tries to do too much | Keep one focused signal per plugin and let Relatr combine weighted plugin outputs. |148149## Quick reference150151| Operation | How |152| --- | --- |153| Learn core Elo syntax | Read [`references/elo-core.md`](references/elo-core.md). |154| Check operators and common helpers | Read [`references/elo-operators-and-functions.md`](references/elo-operators-and-functions.md). |155| Design or fix plugin rounds | Read [`references/authoring-model.md`](references/authoring-model.md). |156| Verify capability calls | Read [`references/capabilities.md`](references/capabilities.md). |157| Start from a known-safe example | Read [`references/patterns.md`](references/patterns.md). |158| Package and publish a plugin | Read [`references/lifecycle.md`](references/lifecycle.md). |159160## Key principles1611621. **Collect first, score second** — treat plugin authoring as a bounded data-collection phase followed by a pure scoring phase.1632. **Capabilities are host-provided** — a plugin may request only what Relatr exposes, and must never assume arbitrary runtime powers.1643. **Null is normal** — capability failures, missing fields, and absent context are expected; robust plugins always define fallbacks.1654. **Keep plugins focused** — one understandable signal is better than a monolithic trust algorithm hidden inside one plugin.1665. **Lifecycle completeness matters** — a good answer covers not only the source program, but also validation, packaging, compatibility, and publication when the user needs them.
Run npx skillmds@latest add contextvm/relatr-elo-plugin-author in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Writes, reviews, fixes, validates, and prepares portable Relatr Elo plugins across the full lifecycle from source design to kind 765 publication. Use when the task involves Relatr plugins, Elo plugin authoring, capability-based scoring logic, plugin manifests, `relo` checks/builds/publishing, or explaining how Relatr plugin programs use `plan`, `then`, and `do`. It is listed under Productivity on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
contextvm (@contextvm) published this skill. Their other Agent Skills are listed on their SkillMD profile.