v0.2.23 - Improve skill authoring guidance and context viewing workflow: enrich skill_create/skill_edit schema descriptions for markdown content, role markers, template variables, and trigger/filter pairing; add external Anvil context.logs viewer assets (index.html + watch_context.sh) for Live Server markdown-to-HTML monitoring without Didactyl runtime changes

This commit is contained in:
Didactyl User
2026-04-04 17:21:31 -04:00
parent 84d4eb7db6
commit 49db641876
3 changed files with 20 additions and 8 deletions
+2 -2
View File
@@ -54,11 +54,11 @@ Skills compose by adoption-list order (`10123`) and trigger tags carry runtime e
Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers.
## Current Status — v0.2.22
## Current Status — v0.2.23
**Active build — this project is barely working. Experiment at your own risk.**
> Last release update: v0.2.22 — Improve markdown context documentation and skill authoring guidance: document context debug snapshot formats, clarify role-marker defaults, enrich skill_create/skill_edit tool schema guidance for markdown skills, and update tool docs examples
> Last release update: v0.2.23 — Improve skill authoring guidance and context viewing workflow: enrich skill_create/skill_edit schema descriptions for markdown content, role markers, template variables, and trigger/filter pairing; add external Anvil context.logs viewer assets (index.html + watch_context.sh) for Live Server markdown-to-HTML monitoring without Didactyl runtime changes
- Connects to configured relays with auto-reconnect and relay state transition logging
- Publishes configured startup events per relay as each relay becomes connected
+2 -2
View File
@@ -12,8 +12,8 @@
// Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros
#define DIDACTYL_VERSION_MAJOR 0
#define DIDACTYL_VERSION_MINOR 2
#define DIDACTYL_VERSION_PATCH 22
#define DIDACTYL_VERSION "v0.2.22"
#define DIDACTYL_VERSION_PATCH 23
#define DIDACTYL_VERSION "v0.2.23"
// Agent metadata
#define DIDACTYL_NAME "Didactyl"
+16 -4
View File
@@ -754,7 +754,7 @@ char* tools_build_openai_schema_json_legacy(const tools_context_t* ctx) {
cJSON_AddStringToObject(t22, "type", "function");
cJSON_AddStringToObject(t22_fn, "name", "skill_create");
cJSON_AddStringToObject(t22_fn, "description", "Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it. Write content as markdown context instructions: use role markers (system:/user:/assistant:) at line start when needed; unmarked content defaults to system. The runtime owns document H1 and will bump skill headings down one level, so prefer ## for top-level sections in skill content.");
cJSON_AddStringToObject(t22_fn, "description", "Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it. Write content as markdown context instructions: use role markers (system:/user:/assistant:) at line start when needed; unmarked content defaults to system. The runtime owns document H1 and will bump skill headings down one level, so prefer ## for top-level sections in skill content. For auto-run behavior, set trigger + filter together.");
cJSON_AddStringToObject(t22_params, "type", "object");
cJSON_AddItemToObject(t22_params, "properties", t22_props);
cJSON_AddItemToObject(t22_params, "required", t22_required);
@@ -766,7 +766,7 @@ char* tools_build_openai_schema_json_legacy(const tools_context_t* ctx) {
cJSON_AddStringToObject(p_skill_create_content, "type", "string");
cJSON_AddStringToObject(p_skill_create_content,
"description",
"Markdown template for the skill body. May include role markers at line start (system:/user:/assistant:), markdown headings/lists/code fences, and template variables like {{message}} or {{skill_d_tag}}. Unmarked content defaults to system. Runtime will prepend document title and bump headings one level.");
"Markdown template for the skill body. May include role markers at line start (system:/user:/assistant:), markdown headings/lists/code fences, and template variables like {{message}}, {{dm_history}}, {{agent_identity}}, {{admin_profile}}, or {{skill_d_tag}} references. Unmarked content defaults to system. Runtime prepends document title and bumps headings one level.");
cJSON_AddItemToObject(t22_props, "content", p_skill_create_content);
cJSON* p_skill_create_scope = cJSON_CreateObject();
cJSON_AddStringToObject(p_skill_create_scope, "type", "string");
@@ -780,10 +780,16 @@ char* tools_build_openai_schema_json_legacy(const tools_context_t* ctx) {
cJSON* p_skill_create_trigger = cJSON_CreateObject();
cJSON_AddStringToObject(p_skill_create_trigger, "type", "string");
cJSON_AddStringToObject(p_skill_create_trigger,
"description",
"Optional auto-run trigger. Must be one of: dm, cron, nostr-subscription, webhook, chain. If provided, filter is also required.");
cJSON_AddItemToObject(t22_props, "trigger", p_skill_create_trigger);
cJSON* p_skill_create_filter = cJSON_CreateObject();
cJSON_AddStringToObject(p_skill_create_filter, "type", "string");
cJSON_AddStringToObject(p_skill_create_filter,
"description",
"Trigger-specific filter string. Required when trigger is provided. Examples: dm=>{\"from\":\"admin\"}, cron=>\"0 12 * * *\", chain=>\"source_d_tag\", webhook=>\"{}\", nostr-subscription=>JSON filter.");
cJSON_AddItemToObject(t22_props, "filter", p_skill_create_filter);
cJSON* p_skill_create_action = cJSON_CreateObject();
@@ -996,7 +1002,7 @@ char* tools_build_openai_schema_json_legacy(const tools_context_t* ctx) {
cJSON_AddStringToObject(t25b, "type", "function");
cJSON_AddStringToObject(t25b_fn, "name", "skill_edit");
cJSON_AddStringToObject(t25b_fn, "description", "Edit an existing self skill by d tag and republish it as kind 31123/31124. Keep skill content markdown-first with optional role markers (system:/user:/assistant:) at line start; unmarked content defaults to system. Runtime owns H1 and bumps skill headings down one level.");
cJSON_AddStringToObject(t25b_fn, "description", "Edit an existing self skill by d tag and republish it as kind 31123/31124. Keep skill content markdown-first with optional role markers (system:/user:/assistant:) at line start; unmarked content defaults to system. Runtime owns H1 and bumps skill headings down one level. For triggered skills, update trigger and filter together.");
cJSON_AddStringToObject(t25b_params, "type", "object");
cJSON_AddItemToObject(t25b_params, "properties", t25b_props);
cJSON_AddItemToObject(t25b_params, "required", t25b_required);
@@ -1009,7 +1015,7 @@ char* tools_build_openai_schema_json_legacy(const tools_context_t* ctx) {
cJSON_AddStringToObject(p_skill_edit_content, "type", "string");
cJSON_AddStringToObject(p_skill_edit_content,
"description",
"Replacement markdown template for this skill. Supports role markers (system:/user:/assistant:) at line start, markdown structure, and template variables ({{...}}). If omitted, existing content is retained.");
"Replacement markdown template for this skill. Supports role markers (system:/user:/assistant:) at line start, markdown structure, and template variables such as {{message}}, {{dm_history}}, {{agent_identity}}, {{admin_profile}}, and {{skill_d_tag}} references. If omitted, existing content is retained.");
cJSON_AddItemToObject(t25b_props, "content", p_skill_edit_content);
cJSON* p_skill_edit_scope = cJSON_CreateObject();
@@ -1022,10 +1028,16 @@ char* tools_build_openai_schema_json_legacy(const tools_context_t* ctx) {
cJSON* p_skill_edit_trigger = cJSON_CreateObject();
cJSON_AddStringToObject(p_skill_edit_trigger, "type", "string");
cJSON_AddStringToObject(p_skill_edit_trigger,
"description",
"Optional trigger update. Valid values: dm, cron, nostr-subscription, webhook, chain. Must be paired with filter update when changing trigger config.");
cJSON_AddItemToObject(t25b_props, "trigger", p_skill_edit_trigger);
cJSON* p_skill_edit_filter = cJSON_CreateObject();
cJSON_AddStringToObject(p_skill_edit_filter, "type", "string");
cJSON_AddStringToObject(p_skill_edit_filter,
"description",
"Trigger-specific filter update. Use with trigger. Examples: dm=>{\"from\":\"admin\"}, cron=>\"0 12 * * *\", chain=>\"source_d_tag\", webhook=>\"{}\", nostr-subscription=>JSON filter.");
cJSON_AddItemToObject(t25b_props, "filter", p_skill_edit_filter);
cJSON* p_skill_edit_action = cJSON_CreateObject();