From fdaa13e4ec17771fec5cac0b9583dcb9d04c9ffb Mon Sep 17 00:00:00 2001 From: Jonathan Jackson Date: Fri, 22 May 2026 03:48:05 -0600 Subject: [PATCH] fix(solicitation-create): unwrap data: {...} envelope in Step 6 code example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The verification re-run of /ace:step solicitation-create (malaria-itn-app/20260521-1400 — solicitation 3141) flagged that the Step 6 code-block example still showed the wrapped data: {...} shape even though PR #411 corrected the surrounding prose to flat fields. A literal reader who copy-pasted the code block would have ended up with a payload labs rejects with additionalProperties:false. Fixed the code block to match the prose + live tools/list contract. Also tightened the criterion shape in the example to lead with `id` (canonical labs field order) and the question shape to lead with `id, text, type` (the three required fields per live schema). Co-Authored-By: Claude Opus 4.7 --- .claude-plugin/marketplace.json | 4 +-- .claude-plugin/plugin.json | 2 +- VERSION | 2 +- package.json | 2 +- skills/solicitation-create/SKILL.md | 47 +++++++++++++++-------------- 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index b3ac8cd..f516a80 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,13 +6,13 @@ "url": "https://github.com/jjackson" }, "metadata": { - "version": "0.13.335" + "version": "0.13.336" }, "plugins": [ { "name": "ace", "source": "./", - "version": "0.13.335", + "version": "0.13.336", "description": "AI Connect Engine — orchestrates the CRISPR-Connect lifecycle from idea through app building, Connect setup, LLO management, and closeout" } ] diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 2b35152..42b955b 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "ace", - "version": "0.13.335", + "version": "0.13.336", "description": "AI Connect Engine — orchestrates the CRISPR-Connect lifecycle from idea through app building, Connect setup, LLO management, and closeout", "author": { "name": "Jonathan Jackson", diff --git a/VERSION b/VERSION index aec6a7e..17da40d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.13.335 +0.13.336 diff --git a/package.json b/package.json index 69a620f..592dd27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ace", - "version": "0.13.335", + "version": "0.13.336", "description": "AI Connect Engine - orchestrator for building Connect Opps using AI", "type": "module", "scripts": { diff --git a/skills/solicitation-create/SKILL.md b/skills/solicitation-create/SKILL.md index 48102e3..5aa060c 100644 --- a/skills/solicitation-create/SKILL.md +++ b/skills/solicitation-create/SKILL.md @@ -544,31 +544,34 @@ contract. ``` mcp__connect-labs__create_solicitation( program_id: , - data: { - title: ..., - solicitation_type: 'eoi', # lowercase! - description: ..., # markdown string, 500-800 words - scope_of_work: ..., # markdown string, 600-1000+ words, NOT an array - application_deadline: 'YYYY-MM-DD', # date string, NOT response_window_days - expected_start_date: 'YYYY-MM-DD', - expected_end_date: 'YYYY-MM-DD', - estimated_scale: 'human-readable string', - contact_email: ..., # operator-monitored, not the bot - evaluation_criteria: [ - {name, description, weight, scoring_guide, linked_questions: [qid, ...]}, - ... - ], # weights sum to 100 - questions: [ - {id, framing, text, required, type}, - ... - ], # 7-9 items, each with framing - status: 'active', - is_public: true, - connect_opportunity_id: , - } + title: ..., + solicitation_type: 'eoi', # lowercase + description: ..., # markdown string, 500-800 words + scope_of_work: ..., # markdown string, 600-1000+ words, NOT an array + application_deadline: 'YYYY-MM-DD', # date string, NOT response_window_days + expected_start_date: 'YYYY-MM-DD', + expected_end_date: 'YYYY-MM-DD', + estimated_scale: 'human-readable string', + contact_email: ..., # operator-monitored, not the bot + evaluation_criteria: [ + {id, name, weight, description, scoring_guide, linked_questions: [qid, ...]}, + ... + ], # weights sum to 100; id is REQUIRED + questions: [ + {id, text, type, framing, required}, + ... + ], # 7-9 items; framing is structured, not inlined in text + status: 'active', + is_public: true, + connect_opportunity_id: , ) ``` + **All solicitation fields are flat at the top of the atom's argument + object.** There is no `data: {...}` envelope. Verified against the + live `tools/list`: top-level `additionalProperties: false`, no `data` + property declared. + **Do NOT include** `overview`, `response_window_days`, `anticipated_start`, `anticipated_end`, `sample_target`, `rubric`, `response_questions`, `pass_bar`, `eligibility_criteria`,