.agents/skills의 technical-document-author, revising-korean-technical-prose, writing-natural-korean을 korean-technical-blog-skills-bundle-v1의 세 스킬로 교체한다. - writing-korean-technical-blogs: 문제·제약·선택·구현·결과·한계 구조화 - reducing-ai-like-korean-writing: 상투성·추상화·반복 제거 - editing-korean-grammar-and-expression: 맞춤법·띄어쓰기·호응 검수 상류를 수정하지 않고 복사했다. diff -r 0건, MANIFEST.sha256 검증 통과, 번들 validate_skill.py 3/3 PASS. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
967 lines
29 KiB
JSON
967 lines
29 KiB
JSON
[
|
|
{
|
|
"id": "general-01",
|
|
"category": "general",
|
|
"mode": "article",
|
|
"profile": "default-formal",
|
|
"request": "자료만으로 기술 블로그 도입을 작성하라.",
|
|
"source_material": "기존 배포 평균 18분. 실패 단계 추적 불가. 재설계 후 단계별 로그 확인 가능.",
|
|
"expected_status": "pass",
|
|
"reference_output": "기존 배포는 평균 18분이 걸렸고, 실패가 발생해도 어느 단계에서 멈췄는지 확인하기 어려웠다. 이 글에서는 배포 파이프라인을 재설계해 실패 단계를 추적할 수 있게 만든 과정을 설명한다.",
|
|
"must_include": [
|
|
"평균 18분",
|
|
"실패 단계",
|
|
"재설계"
|
|
],
|
|
"must_not_include": [
|
|
"오늘날 빠르게 변화하는",
|
|
"여정을 살펴보겠습니다"
|
|
],
|
|
"preserve_exact": [
|
|
"18분"
|
|
],
|
|
"rule_ids": [
|
|
"AUD-01",
|
|
"STR-01",
|
|
"AI-01"
|
|
],
|
|
"manual_criteria": [
|
|
"실제 문제와 독자가 얻을 정보를 도입에 제시"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-02",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "추상적 성능 표현을 근거 기반으로 고쳐라.",
|
|
"source_material": "반복 조회 결과를 캐시했다. API p95는 420ms에서 180ms로 감소했다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "반복 조회 결과를 캐시해 데이터베이스 호출을 줄였다. 그 결과 API p95 응답 시간은 420ms에서 180ms로 감소했다.",
|
|
"must_include": [
|
|
"API p95",
|
|
"420ms",
|
|
"180ms"
|
|
],
|
|
"must_not_include": [
|
|
"사용자 경험을 향상",
|
|
"혁신적"
|
|
],
|
|
"preserve_exact": [
|
|
"420ms",
|
|
"180ms"
|
|
],
|
|
"rule_ids": [
|
|
"INV-01",
|
|
"SRC-01",
|
|
"AI-02",
|
|
"CLR-01",
|
|
"STR-02"
|
|
],
|
|
"manual_criteria": [
|
|
"수치와 지표의 대응 관계 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-03",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "자연스럽게 고쳐라.",
|
|
"source_material": "버전 2.14.3에서 오류율 1.8%, 2.14.4에서 0.6%.",
|
|
"expected_status": "pass",
|
|
"reference_output": "오류율은 버전 2.14.3의 1.8%에서 2.14.4의 0.6%로 감소했다.",
|
|
"must_include": [
|
|
"2.14.3",
|
|
"1.8%",
|
|
"2.14.4",
|
|
"0.6%",
|
|
"감소"
|
|
],
|
|
"must_not_include": [
|
|
"증가"
|
|
],
|
|
"preserve_exact": [
|
|
"2.14.3",
|
|
"1.8%",
|
|
"2.14.4",
|
|
"0.6%"
|
|
],
|
|
"rule_ids": [
|
|
"INV-01",
|
|
"KOR-02"
|
|
],
|
|
"manual_criteria": [
|
|
"버전과 수치의 짝, 변화 방향 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-04",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "모호한 지시어를 고쳐라.",
|
|
"source_material": "문제는 DB 커넥션 고갈. 최대 대기 시간을 3초로 제한. 변경 후 타임아웃 요청 비율 감소.",
|
|
"expected_status": "pass",
|
|
"reference_output": "DB 커넥션 고갈을 막기 위해 커넥션 풀의 최대 대기 시간을 3초로 제한했다. 변경 후 타임아웃 요청 비율이 감소했다.",
|
|
"must_include": [
|
|
"DB 커넥션 고갈",
|
|
"커넥션 풀",
|
|
"3초",
|
|
"타임아웃 요청 비율"
|
|
],
|
|
"must_not_include": [
|
|
"이러한 문제",
|
|
"이를 적용",
|
|
"이것이 개선"
|
|
],
|
|
"preserve_exact": [
|
|
"3초"
|
|
],
|
|
"rule_ids": [
|
|
"CLR-03",
|
|
"CLR-01",
|
|
"INV-01"
|
|
],
|
|
"manual_criteria": [
|
|
"자료에 있는 명사만 복원"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-05",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "용어를 통일하라.",
|
|
"source_material": "Kafka, 카프카, Apache kafka가 혼용됨. 공식 표기는 Apache Kafka.",
|
|
"expected_status": "pass",
|
|
"reference_output": "첫 등장에는 Apache Kafka(이하 Kafka)로 쓰고, 이후에는 Kafka로 통일한다.",
|
|
"must_include": [
|
|
"Apache Kafka(이하 Kafka)",
|
|
"Kafka"
|
|
],
|
|
"must_not_include": [
|
|
"Apache kafka",
|
|
"카프카"
|
|
],
|
|
"preserve_exact": [
|
|
"Apache Kafka"
|
|
],
|
|
"rule_ids": [
|
|
"INV-03",
|
|
"KOR-03"
|
|
],
|
|
"manual_criteria": [
|
|
"공식 대소문자와 이후 표기 일관성"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-06",
|
|
"category": "general",
|
|
"mode": "article",
|
|
"profile": "default-formal",
|
|
"request": "절차를 기술 블로그 본문으로 정리하라.",
|
|
"source_material": "데이터 수집. 결측값과 중복 레코드 제거. 검증 기준 충족 모델만 운영 배포.",
|
|
"expected_status": "pass",
|
|
"reference_output": "데이터를 수집한 뒤 결측값과 중복 레코드를 제거했다. 정제된 데이터로 모델을 학습하고, 검증 기준을 충족한 모델만 운영 환경에 배포했다.",
|
|
"must_include": [
|
|
"결측값",
|
|
"중복 레코드",
|
|
"검증 기준"
|
|
],
|
|
"must_not_include": [
|
|
"먼저",
|
|
"다음으로",
|
|
"마지막으로 모델을 학습",
|
|
"마지막으로 모델을 배포"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"AI-03",
|
|
"STR-01"
|
|
],
|
|
"manual_criteria": [
|
|
"실제 순서와 배포 조건 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-07",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "평가어를 구체화하라.",
|
|
"source_material": "같은 요청을 묶어 처리해 워커의 중복 연산을 줄이는 방식. 별도 성능 수치는 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "이 방식은 동일 요청을 묶어 처리해 워커의 중복 연산을 줄인다. 성능 개선 폭은 아직 측정하지 않았다.",
|
|
"must_include": [
|
|
"동일 요청",
|
|
"중복 연산",
|
|
"아직 측정하지 않았다"
|
|
],
|
|
"must_not_include": [
|
|
"매우 중요",
|
|
"혁신적",
|
|
"효율적"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"AI-02",
|
|
"SRC-02",
|
|
"CLR-01"
|
|
],
|
|
"manual_criteria": [
|
|
"작동 방식은 구체화하되 성능 수치 생성 금지"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-08",
|
|
"category": "general",
|
|
"mode": "article",
|
|
"profile": "tooling-adoption",
|
|
"request": "도입 문장을 작성하라.",
|
|
"source_material": "Kubernetes를 사용해 배포 승인, 롤백, 상태 확인을 자동화했다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "이 글에서는 Kubernetes로 배포 승인, 롤백, 상태 확인을 자동화한 방법을 설명한다.",
|
|
"must_include": [
|
|
"Kubernetes",
|
|
"배포 승인",
|
|
"롤백",
|
|
"상태 확인"
|
|
],
|
|
"must_not_include": [
|
|
"소개해 보도록 하겠습니다",
|
|
"쿠버네티스만"
|
|
],
|
|
"preserve_exact": [
|
|
"Kubernetes"
|
|
],
|
|
"rule_ids": [
|
|
"STR-03",
|
|
"KOR-03",
|
|
"AI-01"
|
|
],
|
|
"manual_criteria": [
|
|
"독자가 얻을 정보를 구체적으로 명시"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-09",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "결론을 다시 써라.",
|
|
"source_material": "배포 실패율 3.2%에서 0.9%로 감소. 수동 승인 남음. 다음 분기 승인 대기 시간 측정 예정.",
|
|
"expected_status": "pass",
|
|
"reference_output": "변경 후 배포 실패율은 3.2%에서 0.9%로 줄었다. 다만 수동 승인 단계는 남아 있으며, 다음 분기에는 승인 대기 시간을 별도로 측정한다.",
|
|
"must_include": [
|
|
"3.2%",
|
|
"0.9%",
|
|
"수동 승인",
|
|
"승인 대기 시간"
|
|
],
|
|
"must_not_include": [
|
|
"성공적이었으며",
|
|
"많은 것을 배울 수 있었고",
|
|
"지속적으로 발전"
|
|
],
|
|
"preserve_exact": [
|
|
"3.2%",
|
|
"0.9%"
|
|
],
|
|
"rule_ids": [
|
|
"AI-04",
|
|
"INV-01",
|
|
"STR-01"
|
|
],
|
|
"manual_criteria": [
|
|
"결과·한계·다음 검증으로 마무리"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-10",
|
|
"category": "general",
|
|
"mode": "article",
|
|
"profile": "performance-case-study",
|
|
"request": "Redis 도입을 설명하라.",
|
|
"source_material": "반복 조회 결과를 Redis에 저장해 DB 접근을 줄임. 성능 평가는 API p95 응답 시간과 DB 읽기 요청 수로 수행 예정.",
|
|
"expected_status": "pass",
|
|
"reference_output": "반복 조회 결과를 Redis에 저장해 데이터베이스 접근을 줄였다. 이 글에서 성능은 API p95 응답 시간과 DB 읽기 요청 수로 평가한다.",
|
|
"must_include": [
|
|
"Redis",
|
|
"API p95 응답 시간",
|
|
"DB 읽기 요청 수"
|
|
],
|
|
"must_not_include": [
|
|
"Redis는 빠르다",
|
|
"성능이 좋아진다"
|
|
],
|
|
"preserve_exact": [
|
|
"Redis"
|
|
],
|
|
"rule_ids": [
|
|
"INV-03",
|
|
"AI-02",
|
|
"SRC-02"
|
|
],
|
|
"manual_criteria": [
|
|
"핵심 용어 반복은 허용하고 일반화는 제거"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-11",
|
|
"category": "general",
|
|
"mode": "outline",
|
|
"profile": "architecture-decision",
|
|
"request": "자료로 목차를 만들라.",
|
|
"source_material": "Kafka와 RDB Task Queue 비교. 긴 작업의 consumer timeout 문제. 재시도와 상태 조회 필요. RDB 선택.",
|
|
"expected_status": "pass",
|
|
"reference_output": "문제와 제약 → Kafka에서 겪은 타임아웃과 상태 관리 문제 → RDB Task Queue를 포함한 대안 비교 → 선택 이유 → 구현 → 운영 비용과 적용 한계 순으로 구성한다.",
|
|
"must_include": [
|
|
"문제와 제약",
|
|
"대안 비교",
|
|
"선택 이유",
|
|
"운영 비용",
|
|
"적용 한계"
|
|
],
|
|
"must_not_include": [
|
|
"RDB가 무조건 더 좋다"
|
|
],
|
|
"preserve_exact": [
|
|
"Kafka",
|
|
"RDB Task Queue"
|
|
],
|
|
"rule_ids": [
|
|
"AUD-01",
|
|
"STR-01"
|
|
],
|
|
"manual_criteria": [
|
|
"장점만이 아닌 대안과 비용 포함"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-12",
|
|
"category": "general",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "제목을 구체화하라.",
|
|
"source_material": "Kubernetes 배포에서 승인, 롤백, 상태 확인을 자동화한 글.",
|
|
"expected_status": "pass",
|
|
"reference_output": "Kubernetes 배포에서 승인·롤백·상태 확인을 자동화한 방법",
|
|
"must_include": [
|
|
"Kubernetes",
|
|
"승인",
|
|
"롤백",
|
|
"상태 확인"
|
|
],
|
|
"must_not_include": [
|
|
"소개",
|
|
"살펴보기",
|
|
"여정"
|
|
],
|
|
"preserve_exact": [
|
|
"Kubernetes"
|
|
],
|
|
"rule_ids": [
|
|
"STR-03"
|
|
],
|
|
"manual_criteria": [
|
|
"대상과 행동이 제목에 드러남"
|
|
]
|
|
},
|
|
{
|
|
"id": "general-13",
|
|
"category": "general",
|
|
"mode": "publication-package",
|
|
"profile": "default-formal",
|
|
"request": "게시 패키지를 만들어라.",
|
|
"source_material": "원고와 출처는 제공됐고 SEO 요구는 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "제목, 요약, 본문, 태그 후보, 근거 목록, 공개 전 확인 항목을 제공하되 키워드 반복이나 클릭 유도 문구는 추가하지 않는다.",
|
|
"must_include": [
|
|
"제목",
|
|
"요약",
|
|
"본문",
|
|
"근거",
|
|
"공개 전 확인"
|
|
],
|
|
"must_not_include": [
|
|
"무조건 클릭",
|
|
"충격적인"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"BRD-01",
|
|
"REV-01"
|
|
],
|
|
"manual_criteria": [
|
|
"요청한 패키지 범위만 제공"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-01",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "친근하게 고쳐라.",
|
|
"source_material": "법적 고지: 본 자료는 투자 권유를 목적으로 하지 않습니다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "법적 고지: 본 자료는 투자 권유를 목적으로 하지 않습니다.",
|
|
"must_include": [
|
|
"법적 고지: 본 자료는 투자 권유를 목적으로 하지 않습니다."
|
|
],
|
|
"must_not_include": [
|
|
"투자 판단에 참고해 주세요"
|
|
],
|
|
"preserve_exact": [
|
|
"법적 고지: 본 자료는 투자 권유를 목적으로 하지 않습니다."
|
|
],
|
|
"rule_ids": [
|
|
"INV-02",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"법적 고지를 문체 편집 대상에서 제외"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-02",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "인용문을 전문적으로 고쳐라.",
|
|
"source_material": "고객은 “진짜 너무 빨라졌어요ㅋㅋ”라고 말했다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "고객은 “진짜 너무 빨라졌어요ㅋㅋ”라고 말했다.",
|
|
"must_include": [
|
|
"“진짜 너무 빨라졌어요ㅋㅋ”"
|
|
],
|
|
"must_not_include": [
|
|
"응답 성능이 크게 개선됐다고 평가했다"
|
|
],
|
|
"preserve_exact": [
|
|
"“진짜 너무 빨라졌어요ㅋㅋ”"
|
|
],
|
|
"rule_ids": [
|
|
"INV-02",
|
|
"SRC-01"
|
|
],
|
|
"manual_criteria": [
|
|
"직접 인용은 그대로 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-03",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "자연스럽게 고쳐라.",
|
|
"source_material": "`max.poll.interval.ms`를 300000으로 설정하고 Consumer 재시작을 줄였습니다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "`max.poll.interval.ms`를 300000으로 설정해 Consumer 재시작 횟수를 줄였다.",
|
|
"must_include": [
|
|
"`max.poll.interval.ms`",
|
|
"300000",
|
|
"Consumer"
|
|
],
|
|
"must_not_include": [
|
|
"최대 폴 간격"
|
|
],
|
|
"preserve_exact": [
|
|
"`max.poll.interval.ms`",
|
|
"300000",
|
|
"Consumer"
|
|
],
|
|
"rule_ids": [
|
|
"INV-02",
|
|
"KOR-03",
|
|
"KOR-02"
|
|
],
|
|
"manual_criteria": [
|
|
"설정 키와 식별자 번역 금지"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-04",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "더 설득력 있게 작성하라.",
|
|
"source_material": "개발 환경에서 새 구조가 더 빠른 경향. 운영 환경 전후 측정값 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "개발 환경에서는 새 구조의 응답이 더 빨라지는 경향을 관찰했다. 운영 환경의 전후 측정값은 아직 없어 성능 개선으로 단정하지 않는다.",
|
|
"must_include": [
|
|
"경향을 관찰",
|
|
"운영 환경",
|
|
"아직 없어",
|
|
"단정하지 않는다"
|
|
],
|
|
"must_not_include": [
|
|
"성능이 크게 향상됐다",
|
|
"50%"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"SRC-01",
|
|
"SRC-02",
|
|
"AI-02"
|
|
],
|
|
"manual_criteria": [
|
|
"근거 수준과 환경 차이 명시"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-05",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "브랜드팀이 강한 문장을 원한다.",
|
|
"source_material": "최근 90일 핵심 API 가용성 99.98%. 측정 범위와 제외 조건은 별도 표에 있음. 업계 비교 자료는 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "최근 90일 동안 핵심 API 가용성은 99.98%였다. 측정 범위와 제외 조건은 아래에서 설명한다.",
|
|
"must_include": [
|
|
"최근 90일",
|
|
"99.98%",
|
|
"측정 범위",
|
|
"제외 조건"
|
|
],
|
|
"must_not_include": [
|
|
"업계 최고의"
|
|
],
|
|
"preserve_exact": [
|
|
"90일",
|
|
"99.98%"
|
|
],
|
|
"rule_ids": [
|
|
"INV-01",
|
|
"SRC-01",
|
|
"BRD-01",
|
|
"AI-02"
|
|
],
|
|
"manual_criteria": [
|
|
"비교 자료 없는 최상급 제거"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-06",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "incident-postmortem",
|
|
"request": "능동태로 바꿔라.",
|
|
"source_material": "배포 과정에서 잘못된 설정이 적용됨. 로그만으로 변경 주체를 특정할 수 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "배포 과정에서 잘못된 설정이 적용됐다. 현재 로그만으로는 설정 변경 주체를 특정할 수 없다.",
|
|
"must_include": [
|
|
"잘못된 설정이 적용됐다",
|
|
"변경 주체를 특정할 수 없다"
|
|
],
|
|
"must_not_include": [
|
|
"운영자가 잘못된 설정을 적용했다"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"SRC-01",
|
|
"SRC-02",
|
|
"BRD-01"
|
|
],
|
|
"manual_criteria": [
|
|
"행위자가 불명확할 때 능동태 강제 금지"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-07",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "incident-postmortem",
|
|
"request": "장애 회고 문체로 고쳐라.",
|
|
"source_material": "김 개발자가 설정 파일을 잘못 수정. 검증 없이 운영 반영. 전체 요청 실패. 자동 검증과 단계적 배포 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "설정 파일 변경이 검증 단계를 거치지 않고 운영 환경에 반영되면서 전체 요청이 실패했다. 변경 전 자동 검증과 단계적 배포가 없었던 점을 재발 방지 항목으로 등록했다.",
|
|
"must_include": [
|
|
"검증 단계를 거치지 않고",
|
|
"전체 요청이 실패",
|
|
"자동 검증",
|
|
"단계적 배포"
|
|
],
|
|
"must_not_include": [
|
|
"김 개발자가",
|
|
"개인의 실수 때문에"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"BRD-01",
|
|
"STR-01",
|
|
"SRC-01"
|
|
],
|
|
"manual_criteria": [
|
|
"사실은 유지하고 개인 비난보다 시스템 방어 실패를 분석"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-08",
|
|
"category": "hard",
|
|
"mode": "article",
|
|
"profile": "migration-case-study",
|
|
"request": "자료가 부족해도 완성된 글을 써라.",
|
|
"source_material": "데이터 이관 필요. 대상 DB와 롤백 방식, 검증 결과는 제공되지 않음.",
|
|
"expected_status": "needs_clarification",
|
|
"reference_output": "데이터 이관이 필요한 이유는 설명할 수 있지만, 대상 DB·롤백 방식·검증 결과는 자료에 없다. [확인 필요: 대상 저장소, 롤백 절차, 검증 기준과 결과]",
|
|
"must_include": [
|
|
"[확인 필요:",
|
|
"롤백",
|
|
"검증"
|
|
],
|
|
"must_not_include": [
|
|
"무중단으로 성공했다",
|
|
"데이터 손실 없이 완료"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"SRC-02",
|
|
"STR-01"
|
|
],
|
|
"manual_criteria": [
|
|
"필수 항목을 창작하지 않고 최소 확인 목록 제시"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-09",
|
|
"category": "hard",
|
|
"mode": "article",
|
|
"profile": "incident-postmortem",
|
|
"request": "공개 기술 블로그로 작성하라.",
|
|
"source_material": "내부 주소 10.0.0.12, 고객 이메일 user@example.com, 토큰 sk-secret-123, 장애 타임라인 포함. 마스킹 정책 미지정.",
|
|
"expected_status": "blocked",
|
|
"reference_output": "민감 정보가 포함되어 공개 글 작성을 중단한다. 내부 주소, 고객 식별 정보와 비밀 토큰의 마스킹·삭제 정책을 먼저 확인해야 한다.",
|
|
"must_include": [
|
|
"민감 정보",
|
|
"중단",
|
|
"마스킹"
|
|
],
|
|
"must_not_include": [
|
|
"10.0.0.12",
|
|
"user@example.com",
|
|
"sk-secret-123"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"INV-02",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"민감 정보 원문을 재출력하지 않음"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-10",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "사람이 쓴 것처럼 실패담과 감정을 추가하라.",
|
|
"source_material": "기술적 결정과 결과만 제공됨. 작성자의 감정·경험은 없음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "자료에 없는 실패담이나 감정은 추가하지 않는다. 제공된 기술적 결정과 결과만으로 글을 구성한다.",
|
|
"must_include": [
|
|
"추가하지 않는다",
|
|
"기술적 결정과 결과"
|
|
],
|
|
"must_not_include": [
|
|
"밤새 고민했다",
|
|
"솔직히 막막했다"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"AI-05",
|
|
"SRC-01"
|
|
],
|
|
"manual_criteria": [
|
|
"인간 흉내를 위한 서사 창작 금지"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-11",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "문장을 짧게 나눠라.",
|
|
"source_material": "보안 정책: 토큰이 만료됐고 갱신 요청이 실패했으며 재인증도 실패한 경우에만 세션을 종료한다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "토큰 만료, 갱신 요청 실패, 재인증 실패가 모두 발생한 경우에만 세션을 종료한다.",
|
|
"must_include": [
|
|
"모두 발생한 경우에만",
|
|
"세션을 종료"
|
|
],
|
|
"must_not_include": [
|
|
"하나라도 발생하면 세션을 종료"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"CLR-02",
|
|
"KOR-02",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"조건의 AND 관계 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "hard-12",
|
|
"category": "hard",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "다른 유명 기술 블로그처럼 재치 있게 써라.",
|
|
"source_material": "프로젝트 고유 문체 가이드 없음. 기술 선택 근거와 결과만 있음.",
|
|
"expected_status": "pass",
|
|
"reference_output": "다른 기업의 말투나 유머를 모방하지 않고, 제공된 근거를 정확·명료·절제된 문체로 정리한다.",
|
|
"must_include": [
|
|
"모방하지 않고",
|
|
"정확",
|
|
"명료",
|
|
"절제"
|
|
],
|
|
"must_not_include": [
|
|
"토스처럼",
|
|
"배민스럽게"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"BRD-01"
|
|
],
|
|
"manual_criteria": [
|
|
"기업 문체 모방 금지"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-01",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "문장을 다듬어라.",
|
|
"source_material": "문제 발생 시 다음 명령으로 API 배포를 7번 리비전으로 롤백한다.\n```bash\nkubectl rollout undo deployment/api --to-revision=7\n```",
|
|
"expected_status": "pass",
|
|
"reference_output": "문제 발생 시 다음 명령으로 API 배포를 7번 리비전으로 롤백한다.\n```bash\nkubectl rollout undo deployment/api --to-revision=7\n```",
|
|
"must_include": [
|
|
"7번 리비전"
|
|
],
|
|
"must_not_include": [
|
|
"--to-revision = 7"
|
|
],
|
|
"preserve_exact": [
|
|
"kubectl rollout undo deployment/api --to-revision=7"
|
|
],
|
|
"rule_ids": [
|
|
"INV-02",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"코드 블록 내용 정확 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-02",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "자연스럽게 고쳐라.",
|
|
"source_material": "지연 시간은 0.8ms에서 8ms로 증가했다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "지연 시간은 0.8ms에서 8ms로 증가했다.",
|
|
"must_include": [
|
|
"0.8ms",
|
|
"8ms",
|
|
"증가"
|
|
],
|
|
"must_not_include": [
|
|
"감소",
|
|
"0.8초"
|
|
],
|
|
"preserve_exact": [
|
|
"0.8ms",
|
|
"8ms"
|
|
],
|
|
"rule_ids": [
|
|
"INV-01",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"소수점·단위·변화 방향 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-03",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "긍정적으로 정리하라.",
|
|
"source_material": "캐시 적용 후 평균 응답 시간 감소. 콜드 스타트 최대 지연 시간 증가.",
|
|
"expected_status": "pass",
|
|
"reference_output": "캐시 적용 후 평균 응답 시간은 줄었다. 다만 콜드 스타트 구간의 최대 지연 시간은 증가했다.",
|
|
"must_include": [
|
|
"평균 응답 시간은 줄었다",
|
|
"다만",
|
|
"최대 지연 시간은 증가"
|
|
],
|
|
"must_not_include": [
|
|
"전반적인 성능이 개선됐다"
|
|
],
|
|
"preserve_exact": [
|
|
"콜드 스타트"
|
|
],
|
|
"rule_ids": [
|
|
"STR-01",
|
|
"TST-01",
|
|
"AI-04"
|
|
],
|
|
"manual_criteria": [
|
|
"불리한 결과와 단서 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-04",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "문체를 정리하라.",
|
|
"source_material": "원문은 해요체. 문제를 확인했어요. 원인을 찾았어요. 설정을 바꿨어요.",
|
|
"expected_status": "pass",
|
|
"reference_output": "문제를 확인했고 원인을 찾았어요. 이후 설정을 바꿨어요.",
|
|
"must_include": [
|
|
"찾았어요",
|
|
"바꿨어요"
|
|
],
|
|
"must_not_include": [
|
|
"찾았습니다",
|
|
"변경했습니다"
|
|
],
|
|
"preserve_exact": [],
|
|
"rule_ids": [
|
|
"BRD-01",
|
|
"KOR-01"
|
|
],
|
|
"manual_criteria": [
|
|
"일관된 해요체 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-05",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "performance-case-study",
|
|
"request": "자연스럽고 전문적으로 써라.",
|
|
"source_material": "성능 테스트는 아직 하지 않음. 다음 주 동일 부하 조건으로 전후 지표 측정 예정.",
|
|
"expected_status": "pass",
|
|
"reference_output": "성능 테스트는 아직 진행하지 않았다. 다음 주에 동일한 부하 조건으로 전후 지표를 측정할 예정이다.",
|
|
"must_include": [
|
|
"아직 진행하지 않았다",
|
|
"다음 주",
|
|
"동일한 부하 조건"
|
|
],
|
|
"must_not_include": [
|
|
"성능이 개선됐다",
|
|
"유의미한 결과",
|
|
"약 30%"
|
|
],
|
|
"preserve_exact": [
|
|
"다음 주"
|
|
],
|
|
"rule_ids": [
|
|
"SRC-02",
|
|
"AI-05",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"전문성을 위해 결과를 창작하지 않음"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-06",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "default-formal",
|
|
"request": "반복을 줄여라.",
|
|
"source_material": "핵심 기술 용어는 Keycloak. Keycloak이 토큰을 발급하고 Keycloak 세션을 관리한다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "Keycloak은 토큰을 발급하고 사용자 세션을 관리한다.",
|
|
"must_include": [
|
|
"Keycloak",
|
|
"토큰",
|
|
"세션"
|
|
],
|
|
"must_not_include": [
|
|
"인증 서버 솔루션은 토큰을 발급하고 IAM 도구는 세션을 관리"
|
|
],
|
|
"preserve_exact": [
|
|
"Keycloak"
|
|
],
|
|
"rule_ids": [
|
|
"INV-03",
|
|
"AI-03"
|
|
],
|
|
"manual_criteria": [
|
|
"기술 용어를 동의어로 흔들지 않음"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-07",
|
|
"category": "regression",
|
|
"mode": "revision",
|
|
"profile": "architecture-decision",
|
|
"request": "간결하게 줄여라.",
|
|
"source_material": "Kafka는 확장성 기대가 있었지만 장시간 작업에서 timeout과 상태 조회 비용이 컸다. 이 비용 때문에 RDB Task Queue를 선택했다.",
|
|
"expected_status": "pass",
|
|
"reference_output": "Kafka는 확장성 측면의 기대가 있었지만, 장시간 작업에서는 타임아웃과 상태 조회 비용이 컸다. 이 제약을 기준으로 RDB Task Queue를 선택했다.",
|
|
"must_include": [
|
|
"Kafka",
|
|
"타임아웃",
|
|
"상태 조회 비용",
|
|
"RDB Task Queue"
|
|
],
|
|
"must_not_include": [
|
|
"Kafka는 부적합하다",
|
|
"RDB가 더 우수하다"
|
|
],
|
|
"preserve_exact": [
|
|
"Kafka",
|
|
"RDB Task Queue"
|
|
],
|
|
"rule_ids": [
|
|
"STR-01",
|
|
"CLR-01",
|
|
"TST-01"
|
|
],
|
|
"manual_criteria": [
|
|
"대안의 기대 효과와 실제 제약 모두 보존"
|
|
]
|
|
},
|
|
{
|
|
"id": "regression-08",
|
|
"category": "regression",
|
|
"mode": "compare",
|
|
"profile": "default-formal",
|
|
"request": "변경 이유까지 보여라.",
|
|
"source_material": "기존 문장: 이를 통해 성능을 개선했습니다. 근거: DB 읽기 요청 수 42% 감소.",
|
|
"expected_status": "pass",
|
|
"reference_output": "수정: DB 읽기 요청 수가 42% 감소했다. 변경 기록: 모호한 지시어와 근거 없는 평가를 측정값으로 교체했으며 42% 수치를 보존했다.",
|
|
"must_include": [
|
|
"42%",
|
|
"변경 기록",
|
|
"모호한 지시어",
|
|
"보존"
|
|
],
|
|
"must_not_include": [
|
|
"성능이 획기적으로 개선"
|
|
],
|
|
"preserve_exact": [
|
|
"42%"
|
|
],
|
|
"rule_ids": [
|
|
"REV-01",
|
|
"CLR-03",
|
|
"AI-02",
|
|
"INV-01"
|
|
],
|
|
"manual_criteria": [
|
|
"문제·수정·규칙·보존 확인 제공"
|
|
]
|
|
}
|
|
]
|