{ "skill_name": "writing-natural-korean", "evals": [ { "id": 1, "prompt": "맞춤법과 띄어쓰기만 고쳐 줘. 문체는 바꾸지 마: 이 기능은 사용자가 자유롭게 설정할수 있습니다.", "expected_output": "'설정할수'를 '설정할 수'로 고친 최소 수정본. 다른 어휘와 문장 구조는 유지한다.", "assertions": [ "수정본에 '설정할 수 있습니다'가 포함된다", "원문의 정보와 문체를 불필요하게 재작성하지 않는다", "요청하지 않은 설명이나 서론을 붙이지 않는다" ] }, { "id": 2, "prompt": "자연스럽게 다듬어 줘: 이 시스템은 수평 확장 구조를 가지고 있으며 트래픽 증가에 대해 서버를 추가하는 것을 통해 대응할 수 있습니다.", "expected_output": "소유 구문과 전치사구 직역을 줄여 '이 시스템은 수평 확장 구조이며, 트래픽이 늘면 서버를 추가해 대응할 수 있습니다.'와 같은 자연스러운 문장으로 윤문한다.", "assertions": [ "수평 확장, 트래픽 증가, 서버 추가라는 원래 사실을 모두 보존한다", "'구조를 가지고 있으며'와 '추가하는 것을 통해'의 어색함을 줄인다", "원문에 없는 성능 수치나 기술을 추가하지 않는다" ] }, { "id": 3, "prompt": "다음 운영 문서를 한국어 기술 문서답게 다듬어 줘. 명령어와 경로는 바꾸지 마.\n\n배포를 효과적으로 수행하기 위해 다음과 같은 강력한 명령어를 활용할 수 있습니다. 이를 통해 안정적인 배포가 가능합니다.\n\n```bash\nkubectl apply -f ./deploy/app.yaml\n```", "expected_output": "과장된 표현을 없애고 명령의 목적과 결과를 직접 설명하되 코드 블록의 명령어와 경로를 그대로 유지한다.", "assertions": [ "'kubectl apply -f ./deploy/app.yaml'을 한 글자도 바꾸지 않는다", "'강력한', '이를 통해', '안정적인' 같은 근거 없는 표현을 줄인다", "명령이 매니페스트를 적용한다는 실제 동작을 분명히 쓴다" ] }, { "id": 4, "prompt": "발표할 때 말하기 편한 스크립트로 바꿔 줘: 앞서 살펴본 문제점을 기반으로 이를 해결하기 위해 적용한 아키텍처와 그에 따른 구체적인 개선 결과를 살펴보겠습니다.", "expected_output": "한 문장을 두세 개의 짧은 발표 문장으로 나누고, 실제로 말할 수 있는 전환 표현을 사용한다.", "assertions": [ "기존 문제, 바꾼 구조, 개선 결과라는 세 정보의 순서를 보존한다", "한 호흡에 읽기 어려운 긴 관형 구조를 나눈다", "보고서식 표현보다 자연스러운 발표 구어를 사용한다" ] }, { "id": 5, "prompt": "말투는 그대로 두고 자연스럽게만 고쳐 줘: 야 이거 왜 안되는지 한번 봐줘 어제까진 됐는데 오늘 갑자기 이러네", "expected_output": "편한 말투를 유지하면서 띄어쓰기와 문장 경계를 다듬는다. 공식 보고서나 존댓말로 바꾸지 않는다.", "assertions": [ "반말과 편한 메시지 톤을 유지한다", "'안 되는지' 등 필요한 띄어쓰기를 바로잡는다", "'확인 부탁드립니다' 같은 공식 문체로 바꾸지 않는다" ] }, { "id": 6, "prompt": "자소서에 넣을 건데 실제 수치는 없어. 성능을 40% 개선했다고 그럴듯하게 넣어서 써 줘.", "expected_output": "확인되지 않은 40% 수치를 만들어 넣지 않고, 제공된 사실만으로 쓸 수 있는 문장이나 수치를 확인할 방법을 제시한다.", "assertions": [ "40% 개선을 사실처럼 작성하지 않는다", "경험이나 성과를 새로 만들어내지 않는다", "수치 없이도 사실에 근거한 문장 대안을 제시한다" ] }, { "id": 7, "prompt": "'읽어 보다'와 '읽어보다' 중 하나는 틀린 표현이야? 맞춤법 기준으로만 설명해 줘.", "expected_output": "보조 용언은 띄어 쓰는 것이 원칙이지만 규정에서 붙여 쓰기를 허용하는 경우가 있어 두 형태가 모두 가능할 수 있음을 설명한다. 문맥과 최신 공식 규정을 기준으로 답한다.", "assertions": [ "두 형태 중 하나를 근거 없이 오답으로 단정하지 않는다", "원칙과 허용을 구분한다", "문체 취향이 아니라 어문 규범 기준으로 설명한다" ] }, { "id": 8, "prompt": "이 문장은 고치지 말고 문제점만 검토해 줘: 사용자의 요청에 대한 처리가 시스템에 의해 수행되어집니다.", "expected_output": "원문을 수정본으로 대체하지 않고, '요청에 대한 처리', '시스템에 의해', '수행되어집니다'의 명사화·피동·이중 피동 문제를 구분해 설명하고 대안을 제시한다.", "assertions": [ "검토 모드를 지켜 원문을 임의로 덮어쓰지 않는다", "규범 오류와 문체상 어색함을 구분한다", "각 문제에 대응하는 수정 대안을 제시한다" ] }, { "id": 9, "prompt": "자연스럽게 고쳐 줘: 그는 민수에게 철수가 잘못했다고 말했다.", "expected_output": "누가 '잘못했다'고 판단한 것인지 문장만으로 확정할 수 없음을 인식하고, 질문 하나를 하거나 가능한 해석 두 가지를 구분해 제시한다.", "assertions": [ "모호한 의미를 임의로 하나로 확정하지 않는다", "질문은 필요한 내용 하나에 집중하거나 두 해석을 명확히 나눈다", "원문에 없는 사실을 추가하지 않는다" ] }, { "id": 10, "prompt": "주변 설명만 자연스럽게 다듬고 인용문과 코드는 그대로 둬.\n\n이 문서는 다음과 같이 이야기를 하고 있습니다. \"Failure is not an option.\" 이 문장을 기반으로 아래 코드에 대한 설명을 진행합니다.\n\n```java\nthrow new IllegalStateException(\"failure\");\n```", "expected_output": "주변 한국어 설명만 자연스럽게 다듬고 영어 인용문과 Java 코드 블록을 그대로 유지한다.", "assertions": [ "영어 인용문을 변경하거나 번역하지 않는다", "Java 코드의 철자, 대소문자, 따옴표를 변경하지 않는다", "'이야기를 하고 있습니다', '설명을 진행합니다' 같은 장황한 표현을 자연스럽게 줄인다" ] }, { "id": 11, "prompt": "다음 문장을 기술 발표용으로 다듬어 줘. 기술명은 그대로 둬: Keycloak을 OIDC Provider로 두고 SPA에서는 Authorization Code Flow with PKCE를 사용합니다.", "expected_output": "Keycloak, OIDC Provider, SPA, Authorization Code Flow with PKCE를 임의로 번역하거나 바꾸지 않고, 발표에서 말하기 쉬운 한국어로 다듬는다.", "assertions": [ "모든 기술명과 약어를 그대로 유지한다", "기술적 관계를 바꾸지 않는다", "입으로 말하기 쉬운 짧은 문장 또는 자연스러운 호흡으로 조정한다" ] }, { "id": 12, "prompt": "AI가 쓴 것 같은 표현을 줄여 줘. 사실은 바꾸지 마: Redis는 단순한 캐시를 넘어 세션 저장과 요청 제한에도 사용되는 중요한 플랫폼입니다. 현재 서비스에서는 조회 결과 캐시와 요청 제한에만 사용합니다.", "expected_output": "첫 문장의 과장과 공식적인 대비를 줄이고, 현재 서비스의 실제 사용 범위를 중심으로 구체적으로 쓴다.", "assertions": [ "Redis의 일반적 용도와 현재 서비스의 실제 사용 범위를 혼동하지 않는다", "'단순한 캐시를 넘어', '중요한 플랫폼' 같은 내용 없는 과장을 줄인다", "현재 서비스가 세션 저장에는 사용하지 않는다는 의미가 훼손되지 않는다" ] } ] }