ai-prompt-regression-testing – skill Agent & Tự động hóa cho agent AI
Dùng khi so sánh thay đổi prompt với bộ đánh giá cố định: ghi lại cài đặt model thực tế, các kiểm tra bắt buộc, kết quả còn thiếu, hạn chế của judge và bằng chứng hồi quy theo từng case.
Cài skill ai-prompt-regression-testing bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/ai-prompt-regression-testing-ad1c8.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /ai-prompt-regression-testing – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/ai-prompt-regression-testing-ad1c8.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $ai-prompt-regression-testing – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/ai-prompt-regression-testing-ad1c8.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /ai-prompt-regression-testing – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/ai-prompt-regression-testing-ad1c8.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /ai-prompt-regression-testing – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
AI Prompt Regression Testing
When to Use
- Compare a prompt change with an observed baseline on a fixed evaluation set.
- Detect schema, factuality, refusal, tool-selection or task-completion regressions.
- Record a reviewable decision when results are noisy, missing or contradictory.
Workflow
1. Define the task, representative cases and forbidden outcomes. Use synthetic
or approved/redacted data; freeze case IDs and the dataset revision before runs.
2. Record baseline/candidate prompt digests, exact available model/version,
inference settings, tool versions and evaluation environment. Do not hardcode
old model-family options or silently change models between comparisons.
3. Predeclare checks and acceptance rules. Use deterministic schema/field checks
for structured output, behavioral checks for tools and a clear human/rubric
standard for open text. Similarity does not prove factual or code correctness.
4. Run matched baseline/candidate cases under the same permissions and budget.
Record latency/cost and repeated runs when variability matters. A timeout,
missing output or judge error is incomplete, not a pass or a zero-cost result.
5. Treat judge outputs as evidence with limitations. Blind/randomize presentation
where feasible, calibrate against human-labeled examples, and record judge
identity/rubric. Do not ask a model to verify private reasoning or accept a
judge's confidence as an objective correctness measurement.
6. Review differences case by case and report the denominators, failures and
uncertainty. Keep mandatory safety/schema failures visible even if aggregate
similarity improves. Use the predeclared rule, not a threshold selected after results.
7. Store a redacted report and exact artifacts at an authorized destination.
Decide retain/revise/reject for the stated dataset; deployment is separate.
Regression register
| Field | Type | Example / meaning |
|---|---|---|
| case_id | string | PTEST-001; a textual ID, not SERIAL |
| dataset_revision | immutable reference | exact case inventory, expected checks and labels |
| prompt_revision | string | baseline/candidate digest |
| model_runtime | string | exact available ID/version plus settings |
| check | string | required JSON fields or approved rubric criterion |
| result | enum | pass / fail / incomplete |
| evidence | reference | redacted actual output, tool trace or observed check |
| judge_configuration | optional object | exact judge ID/rubric/version and calibration limits |
| latency_ms | nonnegative number or null | null if not observed; never invented |
| cost | amount/currency or null | actual billing basis; unknown remains unknown |
| run_revision | immutable reference | binds the report to the actual run |
IDs and statuses must have consistent SQL/JSON/CSV representations. Do not store
private prompts, user messages or tokens in a public spreadsheet or Notion register.
Worked example
Two cases test a support-answer prompt. PTEST-001 requires an answer grounded in
the supplied policy; PTEST-002 requires a structured escalation when the policy
is absent. The candidate sounds more helpful but PTEST-002 has no observed result.
The report is incomplete, not a win. The following Python 3 helper aggregates
already reviewed case statuses; it does not call models or decide correctness.
def summarize_regression(results, expected_case_ids):
if not isinstance(expected_case_ids, list) or not expected_case_ids:
return {"status": "incomplete", "reason": "missing case inventory"}
if any(not isinstance(case, str) or not case for case in expected_case_ids):
return {"status": "incomplete", "reason": "invalid case IDs"}
if len(set(expected_case_ids)) != len(expected_case_ids):
return {"status": "incomplete", "reason": "duplicate expected case IDs"}
if not isinstance(results, list) or any(not isinstance(row, dict) for row in results):
return {"status": "incomplete", "reason": "invalid results"}
by_id = {}
for row in results:
case = row.get("case_id")
if not isinstance(case, str) or case not in expected_case_ids or case in by_id:
return {"status": "incomplete", "reason": "unexpected or duplicate result"}
if row.get("result") not in ("pass", "fail", "incomplete"):
return {"status": "incomplete", "reason": "unknown result"}
by_id[case] = row["result"]
failed_cases = [case for case, result in by_id.items() if result == "fail"]
if set(by_id) != set(expected_case_ids) or "incomplete" in by_id.values():
return {"status": "incomplete", "reason": "missing or incomplete case",
"failed_cases": failed_cases, "evaluated": len(by_id)}
return {"status": "regression" if failed_cases else "checks-passed",
"failed_cases": failed_cases, "evaluated": len(by_id)}
print(summarize_regression(
[{"case_id": "PTEST-001", "result": "pass"}],
["PTEST-001", "PTEST-002"],
))Expected output: incomplete with reason missing or incomplete case. For all
observed pass statuses the output is checks-passed, meaning only those recorded
checks passed; it is not a release or general quality certificate.
Limitations
- No RPC, relayer, signing key or blockchain deployment is required for this
generic prompt workflow. Real integrations may have their own dependencies.
- Exact text match is unsuitable for many valid open-ended outputs; embeddings
and judges have blind spots and cannot replace mandatory behavioral checks.
- A golden set must be reviewed/versioned; it is not created merely by naming it.
- This entry does not include a provider adapter, judge, dataset or runnable suite.
Use the project's supplied materials and state what was actually executed.
- A finite test set cannot prove future prompt behavior or absence of injection.
Skill liên quan
- context-driven-development – Tạo và duy trì các tài liệu ngữ cảnh dự án (product.md, tech-stack.md, workflow.md…
- board-meeting – Quy trình họp hội đồng nhiều agent cho các quyết định chiến lược. Chạy thảo luận có cấu…
- airtable-automation – Tự động hóa tác vụ Airtable qua Rube MCP (Composio): records, bases, tables, fields…
- alex – Biến yêu cầu thành kế hoạch triển khai chính xác, có xét đến các phụ thuộc.
- boardroom – /c-level-agents:boardroom [brief]: thảo luận nhiều vai trò qua 6 giai đoạn trong ban…
- amplitude-automation – Tự động hóa tác vụ Amplitude qua Rube MCP (Composio): sự kiện, hoạt động người dùng…
- analyze-project – Trình phân tích nguyên nhân gốc (forensic) cho các phiên Antigravity. Phân loại thay đổi…
- brief – /c-level-agents:brief [topic] — Tạo bản tóm tắt chiến lược một trang từ biểu mẫu…