一键导入
eval-suite-maintainer
Maintain the evaluation suite by managing routing groups, response cases, and Markdown contract sync checks across evals/datasets/.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Maintain the evaluation suite by managing routing groups, response cases, and Markdown contract sync checks across evals/datasets/.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
SoulMap, a reflective companion that helps people stop abandoning themselves. Includes a central coordination layer, a clear response pipeline, routing guidance, depth calibration, epistemic guardrails, safety guardrails, voice system, brand doctrine, and reusable templates. Mirror, not guide.
Build and maintain Python detector modules that identify framework selection signals in conversation history.
SoulMap reflective response frameworks covering emotional de-escalation, grief, existential reflection, inner parts, life direction, shadow work, synthesis, and relational inquiry. Relevant for tasks that require choosing or applying the core reflective method for a user conversation.
SoulMap safety and boundary rules covering crisis handling, dependency prevention, trauma-informed language, prompt injection defense, and scope control. Relevant for requests that involve harm, escalation, refusal, redirection, or questions about what SoulMap must not do.
SoulMap symbolic spiritual materials covering brand-safe numerology, chakra policy, healing metaphors, and archetypal language. Relevant for tasks that involve spiritual framing within SoulMap's grounded, non-predictive, non-grandiose boundaries.
SoulMap brand doctrine, positioning, message hierarchy, surface-specific rules, and strategic direction. Relevant for tasks that concern what SoulMap is, what it is not, how it sounds in public, or how brand language stays aligned across product surfaces.
| name | eval-suite-maintainer |
| description | Maintain the evaluation suite by managing routing groups, response cases, and Markdown contract sync checks across evals/datasets/. |
Use this skill when working with the evaluation suite infrastructure: adding test cases, writing framework assertions, validating source markers, and running evals.
../rules/detector-development.mdframework-authordetector-engineerThe eval suite (evals/datasets/) is the executable source of truth for what behavior
SoulMap must exhibit. This skill maintains that source of truth by:
evals/datasets/groups.json is not configuration. It is executable specification.
Each group is a cluster of related test cases. Each item tests whether SoulMap:
The group structure guarantees that:
Always check these files first:
evals/README.md, how to run evals and interpret results../rules/evals-and-testing.md, group structure conventions and schemaskills/frameworks/, the authoritative framework definitionsevals/datasets/groups.json, the current eval stateevals/datasets/response_generation_cases.json, end-to-end response casesevals/datasets/markdown_contract_cases.json, cross-file sync casesAdd a new group to evals/datasets/groups.json when:
Do NOT add a group just to test code-use tests/ for that.
{
"g": "Human-readable group name describing what is tested",
"cat": "short category code (wl1, wl2, crisis, and so on)",
"sources": [
"templates/response-structure.md",
"templates/quick-reference.md"
],
"source_markers": {
"templates/quick-reference.md": "quoted text from that file"
},
"items": [
{
"t": "test input text",
"note": "what this tests and why",
"expect_primary_framework": "MIRROR",
"expect_mode": "MIRROR",
"expect_safety_status": "PASS",
"expect_safety_reason": "no_override"
}
]
}
Required fields:
g, group name (clear, human-readable)cat, category code (consistent across related groups)sources, list of documentation files that justify this groupitems, array of test casesOptional fields:
source_markers, object mapping file paths to specific quoted textThe expect_primary_framework field is the contract: SoulMap MUST select this framework for this input.
Valid framework names:
MIRROR, reflective mode (default)CRISIS, immediate crisis signalsDEPENDENCY, unhealthy AI dependencyGRIEF, acute grief signalsDE_ESCALATION, moderate emotional intensityEXISTENTIAL, existential confusionINNER_PARTS, inner conflictDIRECTION, life direction confusionSHADOW, shadow patternsMEANING_INTEGRATION, integration momentsSYNTHESIS, theme synthesis on requestRules:
skills/frameworks/CRISIS rather than CrisisMIRROR (the default)Example:
{
"t": "I just found out my mother died",
"note": "Acute loss, triggers Grief (higher priority than Mirror)",
"expect_primary_framework": "GRIEF",
"expect_mode": "SANCTUARY",
"expect_safety_status": "PASS",
"expect_safety_reason": "no_override"
}
Use source_markers to create an audit trail. Map file paths to direct quotes from those files.
"source_markers": {
"skills/frameworks/grief-companion.md": "acute loss, fresh grief",
"templates/quick-reference.md": "I just found out..."
}
Rules:
uv run soulmap eval-groups
This validates schema and runs all test cases, reporting:
| Result | Meaning |
|---|---|
| ✅ PASS | Framework selection and safety match expectations |
| ❌ FAIL | Actual result differs from expected, such as framework or safety output |
| ⚠️ SCHEMA ERROR | JSON structure or invalid framework name |
If a test case fails:
expect_primary_framework correct? Does it match the framework file name?sources actually there?When you add a new framework or template section, add multiple test cases covering different activation scenarios:
{
"g": "New Framework, Scenario A",
"cat": "new",
"sources": ["skills/frameworks/new-framework.md"],
"items": [
{"t": "input that triggers scenario A", "expect_primary_framework": "NEW_FRAMEWORK"},
{"t": "input that triggers scenario B", "expect_primary_framework": "NEW_FRAMEWORK"},
{"t": "edge case input", "expect_primary_framework": "NEW_FRAMEWORK"}
]
}
This ensures coverage and makes it easier to debug if the framework selection logic changes.
| Error | Fix |
|---|---|
| JSON parse error | Check for missing commas, unclosed braces, trailing commas after last item |
| Unknown framework | Verify framework name matches skills/frameworks/FRAMEWORK_NAME.md exactly |
| Missing required field | Ensure g, cat, sources, items are all present |
| File path doesn't exist | Verify all paths in sources and source_markers exist in the repo |
Duplicate cat | If consolidating groups, use the same category code for related tests |
After editing evals/datasets/groups.json:
# Quick JSON check
python -c "import json; json.load(open('evals/datasets/groups.json'))"
# Run full eval suite
uv run soulmap eval-groups
# Run wording sync checks
uv run soulmap eval-markdown-contracts
# Run unit tests
uv run python tests/eval_regression/test_safety_evals.py
note fieldg and catevals/README.md to understand the current eval suite structure.skills/ or templates/) that justify the test cases.source_markers for high-confidence slices that reference specific policy text.uv run soulmap eval-groups and verify no existing assertions broke.uv run soulmap test -n auto -q before committing.An eval group is done when:
note field describing what is being testedsourcessource_markers are present for any high-risk or safety-critical sliceuv run soulmap eval-groups passes for the new groupuv run soulmap test -n auto -q passes with no regressionssources and write test cases for them