gossipcat 0.6.10 → 0.6.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -194,10 +194,10 @@ Add to `~/.claude/mcp_settings.json` (Claude Code) or project-local `.mcp.json`:
|
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
196
|
# Pin to a version
|
|
197
|
-
npm install -g gossipcat@0.6.
|
|
197
|
+
npm install -g gossipcat@0.6.11
|
|
198
198
|
|
|
199
199
|
# Pin to a GitHub release tarball (bypasses the npm registry)
|
|
200
|
-
npm install -g https://github.com/gossipcat-ai/gossipcat-ai/releases/download/v0.6.
|
|
200
|
+
npm install -g https://github.com/gossipcat-ai/gossipcat-ai/releases/download/v0.6.11/gossipcat-0.6.11.tgz
|
|
201
201
|
|
|
202
202
|
# Project-local (postinstall writes .mcp.json — open the IDE there, no `mcp add` needed)
|
|
203
203
|
cd your-project && npm install --save-dev gossipcat
|
package/dist-mcp/mcp-server.js
CHANGED
|
@@ -21462,7 +21462,7 @@ Peer scores: ${peerScores.length > 0 ? peerScores.join(", ") : "no peer data"}
|
|
|
21462
21462
|
|
|
21463
21463
|
Output a skill markdown file with this exact structure:
|
|
21464
21464
|
|
|
21465
|
-
1. YAML frontmatter with fields: name, category (${category}), agent (${agentId}), generated, effectiveness (0.0), baseline_rate (${baselineRate.toFixed(3)}), baseline_dispatches (${totalDispatches}), version (1), mode (contextual), keywords ([${(CATEGORY_KEYWORDS[category] || [category]).join(", ")}])
|
|
21465
|
+
1. YAML frontmatter with fields: name, description (one concise line describing what the skill improves), category (${category}), agent (${agentId}), generated, effectiveness (0.0), baseline_rate (${baselineRate.toFixed(3)}), baseline_dispatches (${totalDispatches}), version (1), mode (contextual), keywords ([${(CATEGORY_KEYWORDS[category] || [category]).join(", ")}])
|
|
21466
21466
|
2. ## Iron Law \u2014 one absolute rule (MUST/NEVER language)
|
|
21467
21467
|
3. ## When This Skill Activates \u2014 task patterns that trigger it
|
|
21468
21468
|
4. ## Methodology \u2014 5-8 step checklist, actionable not vague
|
|
@@ -21526,6 +21526,12 @@ Requirements:
|
|
|
21526
21526
|
if (!fm.match(/^effectiveness:/m)) {
|
|
21527
21527
|
fm = fm.trimEnd() + "\neffectiveness: 0.0";
|
|
21528
21528
|
}
|
|
21529
|
+
if (!fm.match(/^description:/m)) {
|
|
21530
|
+
const nameMatch = fm.match(/^name:\s*(.+)$/m);
|
|
21531
|
+
const derived = (nameMatch?.[1]?.trim() ?? "").replace(/^['"]|['"]$/g, "").replace(/[-_]/g, " ").trim() || "generated skill";
|
|
21532
|
+
fm = fm.trimEnd() + `
|
|
21533
|
+
description: ${JSON.stringify(derived)}`;
|
|
21534
|
+
}
|
|
21529
21535
|
fm = fm.trimEnd() + `
|
|
21530
21536
|
baseline_accuracy_correct: ${snapshot.baseline_accuracy_correct}
|
|
21531
21537
|
baseline_accuracy_hallucinated: ${snapshot.baseline_accuracy_hallucinated}
|
|
@@ -24404,18 +24410,29 @@ function parseSkillFrontmatter(content, sourceLabel) {
|
|
|
24404
24410
|
const key = line.slice(0, colonIdx).trim();
|
|
24405
24411
|
let value = line.slice(colonIdx + 1).trim();
|
|
24406
24412
|
if (value.length >= 2 && (value.startsWith('"') && value.endsWith('"') || value.startsWith("'") && value.endsWith("'"))) {
|
|
24407
|
-
value = value.slice(1, -1);
|
|
24413
|
+
value = value.slice(1, -1).trim();
|
|
24408
24414
|
}
|
|
24409
24415
|
fields[key] = value;
|
|
24410
24416
|
if (value === "" && BLOCK_SEQUENCE_KEYS.has(key)) {
|
|
24411
24417
|
activeBlockKey = key;
|
|
24412
24418
|
}
|
|
24413
24419
|
}
|
|
24414
|
-
if (!fields.name
|
|
24415
|
-
|
|
24416
|
-
warnParseFailure(`missing required field(s): ${missing.join(", ")}`, sourceLabel);
|
|
24420
|
+
if (!fields.name) {
|
|
24421
|
+
warnParseFailure("missing required field(s): name", sourceLabel);
|
|
24417
24422
|
return null;
|
|
24418
24423
|
}
|
|
24424
|
+
const backfilled = [];
|
|
24425
|
+
if (!fields.description) {
|
|
24426
|
+
fields.description = fields.name.replace(/[-_]/g, " ").trim() || fields.name;
|
|
24427
|
+
backfilled.push("description");
|
|
24428
|
+
}
|
|
24429
|
+
if (!fields.status) {
|
|
24430
|
+
fields.status = "active";
|
|
24431
|
+
backfilled.push("status");
|
|
24432
|
+
}
|
|
24433
|
+
if (backfilled.length > 0) {
|
|
24434
|
+
warnParseFailure(`backfilled missing field(s): ${backfilled.join(", ")}`, sourceLabel);
|
|
24435
|
+
}
|
|
24419
24436
|
let keywords = [];
|
|
24420
24437
|
if (blockSequences.keywords && blockSequences.keywords.length > 0) {
|
|
24421
24438
|
keywords = blockSequences.keywords.map((k) => k.trim().replace(/^['"]|['"]$/g, "").slice(0, 100)).filter(Boolean);
|
package/package.json
CHANGED