Files
yao-meta-skill/tests/verify_prompt_quality_profile.py
T
2026-05-03 21:54:44 +08:00

80 lines
2.6 KiB
Python

#!/usr/bin/env python3
import json
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
def main() -> None:
tmp_root = ROOT / "tests" / "tmp_prompt_quality_profile"
if tmp_root.exists():
subprocess.run(["rm", "-rf", str(tmp_root)], check=True)
tmp_root.mkdir(parents=True, exist_ok=True)
subprocess.run(
[
sys.executable,
str(ROOT / "scripts" / "init_skill.py"),
"prompt-quality-demo",
"--description",
"Create reusable RTF prompt templates that teach users how to analyze product feedback.",
"--output-dir",
str(tmp_root),
"--intent-job",
"Turn rough product-feedback goals into a reusable prompt and teaching workflow.",
"--intent-real-input",
"user goal",
"--intent-real-input",
"feedback examples",
"--intent-primary-output",
"A reusable RTF prompt contract with quality checks.",
"--intent-standard",
"clarity",
"--intent-standard",
"practicality",
],
cwd=ROOT,
check=True,
capture_output=True,
text=True,
)
skill_dir = tmp_root / "prompt-quality-demo"
proc = subprocess.run(
[sys.executable, str(ROOT / "scripts" / "render_prompt_quality_profile.py"), str(skill_dir)],
cwd=ROOT,
check=True,
capture_output=True,
text=True,
)
payload = json.loads(proc.stdout)
summary = payload["summary"]
markdown = Path(payload["artifacts"]["markdown"]).read_text(encoding="utf-8")
assert payload["ok"], payload
assert summary["relevance"] == "prompt-heavy", summary
assert summary["primary_task_family"]["key"] == "prompt_engineering", summary
assert summary["complexity"]["band"] in {"medium", "complex", "expert"}, summary
assert set(summary["rtf_to_skill"].keys()) == {"role", "task", "format"}, summary
assert {item["key"] for item in summary["quality_matrix"]} == {
"completeness",
"clarity",
"consistency",
"practicality",
"specificity",
}, summary
assert summary["overall_quality_score"] >= 80, summary
assert "Prompt Quality Profile" in markdown, markdown[:300]
assert "Need Model" in markdown, markdown[:800]
assert "RTF To Skill Mapping" in markdown, markdown[:1200]
assert "Quality Matrix" in markdown, markdown[:1600]
print(json.dumps({"ok": True}, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()