스킬 · 포트폴리오

디자인 포트폴리오 구성·첨삭

리서치·스케치·렌더·시제품 자료로 근거 있는 가로형 포트폴리오를 구성하고 첨삭하는 원작 스킬(산업디자인). 원작자 truman-t3, MIT.

0번 설치됨
스킬스크립트 포함승인됨원작 truman-t3 · MIT · 올림 feeeldstudy · 판 1Claude · ChatGPT · Codex · Cursor
industrial-design-portfolio/scripts/run_evals.py
#!/usr/bin/env python3"""Check structured evaluator observations against the bundled behavior rubrics."""from __future__ import annotationsimport argparseimport jsonimport sysfrom pathlib import Pathdef load_json(path: Path) -> object:    return json.loads(path.read_text(encoding="utf-8"))def main() -> int:    root = Path(__file__).resolve().parent.parent    parser = argparse.ArgumentParser(description=__doc__)    parser.add_argument("--case", dest="case_id", help="Evaluate one case id, for example ev-02")    parser.add_argument("--response", type=Path, help="JSON object with case_id and observed boolean criteria")    parser.add_argument("--all", action="store_true", help="Run all bundled fixture observations")    args = parser.parse_args()    if args.all == (args.response is not None):        parser.error("Use exactly one of --all or --response.")    rubric = load_json(root / "evals" / "evals.json")    cases = {case["id"]: case for case in rubric["cases"]}    responses = []    if args.all:        responses = [load_json(path) for path in sorted((root / "evals" / "fixtures").glob("*.json"))]    else:        responses = [load_json(args.response)]    failures = 0    for response in responses:        case_id = args.case_id or response.get("case_id")        case = cases.get(case_id)        if not case:            print(f"FAIL unknown case: {case_id}")            failures += 1            continue        observed = response.get("observed")        if not isinstance(observed, dict):            print(f"FAIL {case_id}: observed must be an object")            failures += 1            continue        missing = [key for key, expected in case["expect"].items() if expected and observed.get(key) is not True]        if missing:            print(f"FAIL {case_id}: missing {', '.join(missing)}")            failures += 1        else:            print(f"PASS {case_id}: {case['name']}")    print(f"Checked {len(responses)} response(s), {failures} failure(s).")    return 1 if failures else 0if __name__ == "__main__":    sys.exit(main())