CommunityWriting & Editinggithub.com

yelixir-dev/no-more-dasi-eng

Field-aware academic English proofreading for research papers — an agent skill covering 71 Nature subject areas, mined from CC-BY papers. Every edit preserved and auditable.

What is no-more-dasi-eng?

no-more-dasi-eng is a Claude Code agent skill that field-aware academic English proofreading for research papers — an agent skill covering 71 Nature subject areas, mined from CC-BY papers. Every edit preserved and auditable.

Works with~Claude Code~Codex CLI~Cursor
npx skills add yelixir-dev/no-more-dasi-eng

Installed? Explore more Writing & Editing skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

nomoredasi — 분야 맞춤 학술 영어 교정 스킬 (v0.1)

"다시해와"가 나오기 전에 미리 다듬는 스킬. 논문 원고를 Nature 계열 학술지 투고 수준의 영어로 교정한다. 분야별 관행(단어선택·밀도·호흡·전개방식)은 references/overlays/<분야>.md가, 분야 공통 규칙은 references/core/가 담당한다.

4대 원칙 (모든 경로 공통, 위반 시 납품 금지)

  1. 의미 불변 — 내용·주장·논리 순서를 바꾸지 않는다. 문체와 표현만 고친다.
  2. 근거 기반 — 모든 교정은 references/core/ 규칙 또는 해당 분야 오버레이의 코퍼스 실측에 근거한다. 직감으로 "AI 같은" 표현을 지우지 않는다.
  3. 장르 유지 — 학술 논문 레지스터를 유지한다. 구어체화·에세이화 금지. ASD-STE100식 규칙(능동태 강제·문장 20단어 상한·-ing 금지) 적용 금지 — 게재지 실측(수동태 111-137/10K, 평균 문장 16.5-18.3단어)과 충돌한다 (references/core/academic-en.md 참조).
  4. 과윤문 금지 — 변경률 30% 초과 시 경고, 50% 초과 시 중단하고 사용자 확인. scripts/verify_integrity.py가 결정적으로 판정한다.

Phase 0: 입력 유형 판별

작업 시작 시 한 줄 출력한다. 레이블은 사용자 요청 언어를 따른다:

  • 한국어 요청: nomoredasi v0.1 — 유형 {A|B} / 분야: {확정된 분야}

  • 영어 요청: nomoredasi v0.1 — type {A|B} / field: {resolved field}

  • 그 외 언어: type/field 레이블을 해당 언어로 번역한다.

  • 유형 A (한국어 원고) — 번역+교정 복합 경로. references/core/korean-author-pitfalls.md의 번역투 유발 구조("~를 통해", "~에 의해" 등)를 먼저 탐지해 직역을 차단한 뒤 번역하고, 이후 유형 B와 동일한 3층 규칙을 적용한다.

  • 유형 B (영어 원고, AI 초안 포함) — 교정 경로. AI 초안 징후가 있으면 references/core/ai-tell-en.md 계층을 추가 적용한다.

Phase 1: 분야 라우팅 (3단 우선순위)

  1. 사용자 명시 — 사용자가 분야를 말하면 그대로 사용.
  2. 폴터명 — 원고 파일이 papers/<분야>/ 등 분야명 폴터에 있으면 사용.
  3. 자동감지scripts/route_field.py <원고> 실행, 상위 결과 사용. 상위 2개 점수가 근접하면 두 오버레이를 병합 적용.
  4. 불명확 시 1회 확인 — 열린 질문 금지. "Optics and photonics로 보입니다. 맞으면 진행합니다" 형태로 추정값을 제시하고 한 번만 묻는다.

분야가 틀려도 코어 규칙은 분야 무관하게 동작하므로 안전하다. 오버레이 파일이 없는 분야면 코어 규칙만으로 진행하고 그 사실을 고지한다. 오버레이 헤더의 Maturity:immature면(파일 <10편 또는 <100K 단어) 그 수치는 하드 타겟이 아니라 방향 참고치로만 쓴다.

Phase 1.5: 원고 상태 파일 (manuscript.json)

원고 폴터에 manuscript.json이 있으면 읽고 반영한다 — 약어 정의 목록, 확정된 용어 표기(예: bandgap), 도표 목록. 부분 윤문이나 반복 요청에서 문서 전체 일관성을 유지하는 장치다. 없으면 새로 만들지 않고 진행하되, 교정 납품 후 scripts/manuscript_state.py learn <폴터> <교정본>으로 그날의 결정(정의한 약어, 다수 표기)을 기록한다. 기존 값과 충돌하는 새 관측은 덮어쓰지 않고 사용자에게 보고한다.

Phase 2: route_hint — 교정 강도 3경로

초안을 훑어 light / standard / heavy 중 하나로 결정하고 출력한다. 교정 중 아래 Phase 3 규칙에 따라 <교정본>.edits.json 저널을 섹션 단위로 항상 누적 작성한다.

  • light (1패스) — 이미 잘 쓴 원고(게재 수준 문체, 산발적 문법 오류만). 코어 규칙 위반만 고치고 끝. 변경률 하한.
  • standard (2패스) — 일반적 케이스. 1패스: 코어 3층 규칙(① 일반 학술 영어 — 시제·관사·수 일치 ② 분야 용어 표기 통일 — 오버레이 Notation watch ③ 저널 레지스터). 2패스: 자체 검토 + 검증 스크립트.
  • heavy (3패스+) — 번역투/AI-tell 다수, 구조적 어색함. 패스1: 유형별 전처리(pitfalls 또는 ai-tell). 패스2: 코어 3층 규칙. 패스3: 문단 흐름·전개 다듬기. 그 후 검증.

교정 강도 예산 축 (level): route_hint는 원고 상태라는 진단(변경 금지, 에이전트 판단)이고, level은 사용자가 선택하는 변경 예산(기본 하/low) 이다. verify_integrity.py --level {low,mid,high}(log_edit.py --level으로 기록)로 입력하며 low=하/10-30%, mid=중/20-50%, high=상/30-50% 임계를 적용한다(내장 게이트보다 강할 수 없다). 유효 작업량 = min(진단, 예산) — 예산은 진단이 요구하는 강도를 낮출 수 있어도 결코 그보다 높게 끌어올리지 않는다. 요청 예산과 진단이 어긋나면 사용자에게 명시적으로 고지한다(예: “원고는 heavy 진단이나 하 요청으로 코어 위반만 교정했습니다”), 같은 원고를 light 목표로 도약하려면 재문의한다.

복수 강도 동시 요청: 사용자가 "하·중 둘 다", "중·상", "세 개 모두"처럼 여러 강도를 요청하면 강도별로 독립 교정·검증·납품한다. 출력은 <원고명>.low.md / .mid.md / .high.md로 구분하고, 저널(edits.json)·리포트(HTML)·로그(log_edit --level)도 강도별로 각각 생성한다.

Phase 3: 섹션 인식 교정

원고를 scripts/section_split.py로 나눠 인식한다 (IMRaD + Results and Discussion 병합, Experimental Section 등 변형 대응).

저널 (edits.json) 작성 의무: 교정하는 동안 <교정본>.edits.json섹션 단위로 조금씩 누적 작성한다 — 각 편집은 지운 뒤에 채우지 않고, 오히려 kept 항목(평가했지만 바꾸지 않은 스팬)과 함께 기록해둔다. 형식은 scripts/check_journal.py의 스키마 v1을 따른다:

  • changed — 원문 스팬(original, 교정본의 corrected, <40 토큰)을 바꾼 편집. rule: {source, id}로 근거 규칙을 지목하고 reason으로 이유를 짧게 기록한다.
  • kept — 평가했으나 건드리지 않은 스팬. original(양쪽 파일에 그대로 존재)과 reason을 기록한다. rule은 선택.

original·corrected는 각각 원문·교정본의 정확한 부분 문자열이어야 한다. 구두점 편집도 빼놓지 말고 기록한다 — 저널 커버리지 게이트가 diff의 모든 changed/insert/delete 영역이 저널로 덮였는지를 기계 검증한다. 학회·논문집마다 구조는 다르지만 거시 구조는 요약/서론/본론/결과/결론의 선택이며, 병합형(Results+Discussion, 본론+결과)은 오류가 아니니 교정으로 "정규화"하지 않는다. 섹션별 시제·수동태 규칙과 전개·호흡 규칙은 references/core/academic-en.md §3·§8을 따른다.

  • Methods = 과거·수동 우세 유지 (억지 능동화 금지)
  • Results = 과거 중심, 도표 지시 현재. 해석 문장을 Results에 넣지 않는다
  • Discussion/Conclusion = 해석은 현재 시제
  • Abstract = 섹션 축약형, 시제 혼용 규칙 적용
  • Introduction에는 결론 구조를 만들지 않는다 (§8 교차 오염 검사) — 서론에 "in conclusion" 류를 추가하는 것은 의미 불변 위반

부분 윤문 요청 ("서론만", "본론만")

사용자가 특정 섹션만 요청하면 범위 잠금: 요청한 구간만 고치고 다른 섹션은 건드리지 않는다. 그 섹션의 역할(§8)을 유지하고, 없는 섹션의 규칙은 적용하지 않으며, 교차 참조(“Section 3”, “Figure 4”)는 편집하지 않고 끊긴 참조만 노트로 보고한다. 검증 게이트도 그 구간 기준으로 실행한다 (academic-en.md §9).

Phase 4: 검증 (코드 게이트 — LLM 자기판정 금지)

테스트 실행: 비 UTF-8 콘솔(예: Korean Windows cp949)에서도 테스트 스위트는 인코딩을 명시하므로 환경 변수 없이 실행한다.

납품 전에 반드시 아래를 실행하고 결과를 보고한다 (게이트 0부터 순서대로 — 이전 게이트가 exit 1이면 이후 납품 금지):

  1. scripts/check_journal.py <원고> <교정본> --journal <교정본>.edits.json — 저널 커버리지 게이트(모든 diff 변경 영역이 저널로 덮였는지, 스팬 ≤40토큰, rule.id가 rule.source에 존재). exit 1이면 납품 차단 — 빠진 편집/kept 항목을 저널에 보강하거나 스팬을 쪼개고 재실행한다.

  2. scripts/verify_integrity.py <원고> <교정본> --repeat 2 --report <교정본>.integrity-report.html — 수치·단위·화학식·인용·수식·DOI(+--overlay 시 전문용어) 보존 + 변경률 게이트. exit 1이면 납품 금지, 해당 위반을 수정하고 재실행. 리포트 파일(<교정본>.integrity-report.html)을 교정본과 함께 납품해 사용자가 무엇이 바뀌었는지 diff로 검토할 수 있게 한다.

  3. scripts/check_terms.py <교정본> — 용어 표기 일관성 (bandgap/band gap 등). exit 1이면 다수형으로 통일 후 재실행.

  4. scripts/check_abbrev.py <교정본> [--state <폴터>] — 미정의 약어 탐지. exit 1이면 최초 사용 시 정의를 추가하거나 manuscript.json과 대조. 미검증 약어(전개형을 모르는 약어)는 scripts/abbrev_registry.py references/abbrev-registry.json record <ABBR> --field <분야> --context <문장>으로 레지스트리에 기록한다. 이후 같은 분야 텍스트에서 같은 약어의 전개형이 관측되면(scan) 맥락 문장과 함께 verified로 갱신되고, 다른 전개형이 관측되면 conflict로 표시된다 — conflict는 사용자에게 확인을 요청한다. 사람용 뷰는 references/abbrev-registry.html(자동 재생성, 편집 금지; SSOT는 json).

  5. 부분 윤문이면 위 검사들을 해당 구간 기준으로 실행한다.

납품 시 scripts/log_edit.py <분야> <route_hint> <A|B> <원고> <교정본> [--journal <교정본>.edits.json]으로 교정 쌍과(삽입 시) 저널을 logs/edits/에 기록한다(품질 벤치 실측·pitfalls 파이프라인·왜 바꿨나 저널 입력).

품질 측정 (스킬 자체 개선용)

scripts/bench_edit.py <원고> <교정본> — 교정 전후 위반/100단어(AI-tell·중첩 헤징·과장 수식·도표 시제·장문·전이부사 과밀·표기 불일치)를 비교한다. 납품 게이트가 아니라 스킬 성능 측정 장치: 월/목 델타 사이클에서 golden 케이스와 실제 교정 로그에 적용해 위반율이 회귀(exit 1)하면 오버레이/규칙 변경을 되돌아본다.

참조 파일

  • references/core/academic-en.md — 시제·관사·수동태 균형·전이부사·헤징 (분야 공통)
  • references/core/ai-tell-en.md — 영어 AI 초안 탐지 패턴 (게재지 비출현 근거 포함)
  • references/core/korean-author-pitfalls.md — 한국어 화자 오류 사전 (초판, diff 축적으로 성장)
  • references/overlays/<분야>.md — 분야별 실측: 문체 지표·상위 용어·phrase bank·표기 감시 목록. scripts/mine_corpus.py~/Documents/papers/<분야>/에서 자동 생성, 주 2회 갱신.

하지 않는 것

  • 내용 추가·삭제·재구성 (의미 불변 위반)
  • ASD-STE100·Plain English 등 비학술 간소화 규칙 적용
  • 분야를 모른 채 열린 질문으로 사용자에게 떠넘기기
  • 검증 스크립트 없이 "확인했습니다"라고만 보고하기

Related Skills