v0.0.68 - Update SKILLS.md with seed determinism fields and private kind 31124 NIP-44 encrypted payload spec
This commit is contained in:
@@ -36,6 +36,7 @@ The skill event's `content` field is a JSON object that defines the complete exe
|
||||
"tools": false,
|
||||
"max_tokens": 2000,
|
||||
"temperature": 0.1,
|
||||
"seed": 42,
|
||||
"template": "system:\nYou are a spelling and grammar checker.\n\nRules:\n- Fix spelling errors\n- Fix grammar errors\n- Preserve original formatting\n- Ignore: API, JSON, HTTP, nostr, pubkey, npub, nsec, NIP\n- Canadian English preferred\n- Return ONLY the corrected text, no explanations\n\nuser:\n{{message}}"
|
||||
},
|
||||
"tags": [
|
||||
@@ -58,9 +59,61 @@ The skill event's `content` field is a JSON object that defines the complete exe
|
||||
| `soul` | bool | `true` | Whether to include the agent's soul in context |
|
||||
| `max_tokens` | int | — | Override max tokens for this skill |
|
||||
| `temperature` | float | — | Override temperature for this skill |
|
||||
| `seed` | int | — | Optional deterministic seed (effective only on providers/engines that support seeded sampling) |
|
||||
|
||||
### Determinism Controls
|
||||
|
||||
For reproducible outputs, set `temperature` low (typically `0`) and also set `seed` when the selected model backend supports it. If a provider ignores seeds, `temperature` still applies but deterministic replay is not guaranteed.
|
||||
|
||||
---
|
||||
|
||||
## Private Skill Encoding (`31124`)
|
||||
|
||||
Private skills use NIP-44 encryption on the event `content` field.
|
||||
|
||||
Rules for kind `31124`:
|
||||
|
||||
- Keep `d` tag exposed so the event remains addressable/replaceable.
|
||||
- Move all other skill metadata (including non-`d` tags) into the plaintext payload before encryption.
|
||||
- Encrypt the full payload with NIP-44 and store the ciphertext in event `content`.
|
||||
- On receive: resolve by `d`, decrypt `content`, then read both content variables and tag values from decrypted payload.
|
||||
|
||||
### Private Skill Event (on relay)
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": 31124,
|
||||
"content": "<nip44-ciphertext>",
|
||||
"tags": [
|
||||
["d", "mention-monitor"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Decrypted Private Payload (application-level JSON)
|
||||
|
||||
```json
|
||||
{
|
||||
"content": {
|
||||
"description": "Monitor mentions and DM summaries",
|
||||
"context_mode": "inject",
|
||||
"llm": "openai/gpt-4o-mini, fast",
|
||||
"tools": ["nostr_query", "nostr_dm"],
|
||||
"temperature": 0,
|
||||
"seed": 42,
|
||||
"template": "When {{triggering_event}} includes Bitcoin or Lightning, summarize and DM admin."
|
||||
},
|
||||
"private_tags": [
|
||||
["scope", "private"],
|
||||
["trigger", "nostr-subscription"],
|
||||
["filter", "{\"#p\":[\"<admin_pubkey>\"],\"kinds\":[1]}"],
|
||||
["enabled", "true"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
This mirrors the DM-style encrypted payload pattern (historically associated with NIP-04), but private skills should use NIP-44 ciphertext encoding.
|
||||
|
||||
## Context Modes
|
||||
|
||||
Skills control how the LLM context window is assembled using the `context_mode` field:
|
||||
@@ -182,7 +235,7 @@ This is the same execution model as DM-invoked skills — the only difference is
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": 31124,
|
||||
"kind": 31123,
|
||||
"content": "You monitor Nostr mentions. When the triggering event mentions Bitcoin or Lightning, summarize it and DM the admin. Otherwise, ignore silently.",
|
||||
"tags": [
|
||||
["d", "mention-monitor"],
|
||||
@@ -197,7 +250,7 @@ A cron-triggered skill:
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": 31124,
|
||||
"kind": 31123,
|
||||
"content": "DM the admin a short heartbeat status message with the current time.",
|
||||
"tags": [
|
||||
["d", "heartbeat"],
|
||||
|
||||
Reference in New Issue
Block a user