mirror of
https://github.com/iflytek/skillhub.git
synced 2026-09-07 08:26:00 +00:00
feat(bootstrap): add agentguard builtin skill
Signed-off-by: dongmucat <1127093059@qq.com>
This commit is contained in:
parent
4776550391
commit
abdad25df3
3 changed files with 57 additions and 0 deletions
|
|
@ -4,6 +4,11 @@
|
|||
"slug": "skillhub-hello",
|
||||
"version": "1.0.0",
|
||||
"url": "https://bjcdn.openstorage.cn/aicontest/2026-06-11/f8a59af3-30d4-4031-80f6-ebff74b05195.zip"
|
||||
},
|
||||
{
|
||||
"slug": "agentguard",
|
||||
"version": "1.1",
|
||||
"url": "https://bjcdn.openstorage.cn/aicontest/2026-06-12/9d063bc7-223a-4762-adeb-305c268aa29e.zip"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,6 +50,9 @@ public class SkillMetadataParser {
|
|||
String name = extractRequiredField(frontmatter, "name");
|
||||
String description = extractRequiredField(frontmatter, "description");
|
||||
String version = extractOptionalField(frontmatter, "version");
|
||||
if (version == null) {
|
||||
version = extractNestedOptionalField(frontmatter, "metadata", "version");
|
||||
}
|
||||
|
||||
return new SkillMetadata(name, description, version, body, frontmatter);
|
||||
}
|
||||
|
|
@ -122,4 +125,13 @@ public class SkillMetadataParser {
|
|||
Object value = frontmatter.get(fieldName);
|
||||
return value == null ? null : value.toString();
|
||||
}
|
||||
|
||||
private String extractNestedOptionalField(Map<String, Object> frontmatter, String objectFieldName, String fieldName) {
|
||||
Object nestedValue = frontmatter.get(objectFieldName);
|
||||
if (!(nestedValue instanceof Map<?, ?> nestedMap)) {
|
||||
return null;
|
||||
}
|
||||
Object value = nestedMap.get(fieldName);
|
||||
return value == null ? null : value.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,6 +123,46 @@ class SkillMetadataParserTest {
|
|||
assertNull(metadata.version());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUsesMetadataVersionWhenTopLevelVersionIsMissing() {
|
||||
String content = """
|
||||
---
|
||||
name: agentguard
|
||||
description: Agent security guard
|
||||
metadata:
|
||||
author: GoPlusSecurity
|
||||
version: "1.1"
|
||||
---
|
||||
Body
|
||||
""";
|
||||
|
||||
SkillMetadata metadata = parser.parse(content);
|
||||
|
||||
assertEquals("agentguard", metadata.name());
|
||||
assertEquals("Agent security guard", metadata.description());
|
||||
assertEquals("1.1", metadata.version());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testTopLevelVersionTakesPrecedenceOverMetadataVersion() {
|
||||
String content = """
|
||||
---
|
||||
name: versioned-skill
|
||||
description: Prefer top-level version
|
||||
version: 2.0.0
|
||||
metadata:
|
||||
version: "1.1"
|
||||
---
|
||||
Body
|
||||
""";
|
||||
|
||||
SkillMetadata metadata = parser.parse(content);
|
||||
|
||||
assertEquals("versioned-skill", metadata.name());
|
||||
assertEquals("Prefer top-level version", metadata.description());
|
||||
assertEquals("2.0.0", metadata.version());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFallsBackToLooseFrontmatterParsingWhenYamlSyntaxIsNotStrict() {
|
||||
String content = """
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue