Communitygithub.com

maskshell/solidforge-pi

AI 코딩 에이전트를 위한 루프 엔지니어링 시스템으로, Pi 패키지로 제공됩니다. 수렴 → 명세 → 구현: 이중 링 수렴 게이트, 적대적 교차 소스 리뷰, 출처 기반 인용 검증, 선행 기술 충돌 검색을 통한 병렬 TDD 개발 — 각 게이트에서 정직한 커버리지를 제공하며, 절대 묵시적 통과를 허용하지 않습니다.

solidforge-pi란 무엇인가요?

이 스킬은 문서(설계 논문, 연구 문서, 명세서)에 대해 검색 기반의, 읽기 전용, 주장별 충돌 감지기(prior-art-search)를 제공합니다. PROCESS 축의 `cross-source-review`나 인용된 출처를 확인하는 `primary-source-verification`과 달리, 이 스킬은 문서가 인용하지 않은 미인용 선행 기술을 적극적으로 검색하여 '참신함(novelty)' 주장과의 충돌 여부를 정직하게 보고합니다. 단일 파이프라인으로 작동하며, 참신함 주장을 추출하고, 선행 기술 코퍼스를 검색한 후, 주장별로 충돌(collision), 미인용 관련(uncited-relevant), 검색 범위 내 명확(clear-under-search), 또는 불확실(inconclusive)이라는 평결을 내립니다. 중요한 점은 이 스킬이 '참신함 확인(novel_confirmed)'이라는 평결을 절대 내리지 않는다는 것입니다. 대신, '검색된 범위 내 충돌(C/N/U/I)'이라는 정직한 커버리지 공개를 제공하며, 부족한 증거를 증거 부재로 오해하지 않도록 합니다. 이는 선행 기술 검색의 고유한 한계(2계층 약점, 맹점)를 인정하고, 최종적인 참신함 판단은 인간에게 남겨둡니다. 이 스킬은 `cross-source-review` 및 `primary-source-verification`과 상호 보완적이며, 함께 사용되어 더 강력한 문서 검증 파이프라인을 구성할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add maskshell/solidforge-pi

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

참신함 커버리지 (Novelty Coverage)

문서 형태의 인공물(설계 논문, 연구 문서, 명세서)에 대한 읽기 전용, 검색 기반, 주장별 충돌 감지기입니다. cross-source-review(csr), primary-source-verification(psv), 또는 청사진 제작의 researcher가 도달하지 못하는 OUTCOME 축의 참신함 표면을 엽니다. csr은 문서의 PROCESS 축을 수렴시키지만 선행 기술을 검색하지 않습니다. psv는 인용된 각 출처를 가져오지만(역방향, 인용됨), 인용되지 않은 선행 기술을 찾지는 않습니다. researcher는 저작을 위해 출처를 전방으로 수집합니다(반대 방향). 선행 기술 검색은 누락된 역방향, 미인용 선행 기술 충돌 검사로, 각 참신함 주장에 대해 선행 기술 코퍼스를 검색하고 충돌을 정직하게 보고합니다.

핵심 포지셔닝

검색 기반, 회상 기반 아님

collision / uncited-relevant 발견은 모델의 회상이 아닌, 발견된 선행 기술에서 가져온 인용문(QUOTE) 을 반드시 인용해야 합니다. 발견된 선행 기술 텍스트의 인용문을 근거로 제시할 수 없는 발견은 inconclusive로 강등되며, 절대 단언되지 않습니다. 이는 자체 게이트(NC-I5)에 의해 적용되는 핵심 불변 조건(워크스페이스 규칙 3 + L1)입니다. 발견된 텍스트 자체는 검색 결과에서 모델이 추출한 것으로, psv가 가져오는 권위 있는 출처(아래 2계층 주의사항 참조)보다 약한 오라클입니다.

주장별 충돌 커버리지, 참신함 평결이 아님

선행 기술 검색은 novel_confirmed 또는 "문서가 참신합니다"를 절대 출력하지 않습니다. 유일한 최상위 신호는 collisions_under_known_coverage입니다. 추출된 M개의 참신함 주장 중 C=검색 범위 내 명확, N=충돌, U=미인용 관련, I=불확실. I 주장(및 M=0인 경우, 즉 참신함 표면이 없는 경우)은 인간에게 에스컬레이션됩니다. 이는 참신함 평결이 아닌 정직한 커버리지 공개입니다. 증거 부재의 불가결한 한계: '선행 기술이 존재하지 않는다'는 것을 증명할 수 없으므로, 충돌이 전혀 발견되지 않은 문서는 "참신함"이 아니라 "검색된 코퍼스에서 충돌이 발견되지 않음"을 의미합니다. novel_confirmed 불리언으로 수렴하는 대칭적인 "참신함 수렴" 스킬은 범주 오류입니다. 이는 커버리지 공개("검색된 코퍼스에서 충돌이 발견되지 않음")를 평결("참신함")로 평탄화합니다. 즉, 증거 부재를 부재의 증거로 취급하는 것입니다. 선행 기술 검색은 명시적으로 그렇지 않습니다. (더 넓은 2축 프레임(프로세스 × 결과)은 스펙 게이밍 논문 §4.2에 있으며, 선행 기술 검색은 전적으로 결과 축에 존재하므로 그 오류는 결과 내부 오류일 뿐 프로세스/결과 혼동이 아닙니다.)

csr 및 psv에 추가적이며, 단일 파이프라인

선행 기술 검색은 csr(프로세스 축) 및 psv(인용된 출처 검증)에 추가적(ADDITIVE) 이며, 둘 중 하나와 병합되지 않습니다. csr의 동일 계열 + 다른 계열 다중 라운드 토론과 달리, 선행 기술 검색은 단일 파이프라인입니다. 즉, 참신함 주장 추출 → 선행 기술 검색 → 주장별 충돌 평결 → 커버리지 공개. 오라클은 검색 가능한 선행 기술 코퍼스이지 다른 계열 모델이 아니므로, csr의 이질적 기반을 이식하지 않습니다. psv와 선행 기술 검색은 구성됩니다. 중요도가 높은 문서는 psv(인용된 출처가 정확한가?)와 선행 기술 검색(참신함 주장이 찾을 수 있는 선행 기술과 충돌하지 않는가?)을 모두 실행할 수 있습니다. 이들은 병합되지 않습니다.

2계층 오라클 약점, 정직하게 명시됨 (워크스페이스 규칙 3)

선행 기술 검색의 오라클은 검색 가능한 선행 기술 코퍼스로, psv가 가져오는 주요 출처보다 두 계층에서 약합니다(핵심 정직성 주의사항, 제안서 §3 / ADR §8 Q4):

  1. 비교 측면 약점 (psv와 공유). 주장과 선행 기술의 비교는 모델이 판단합니다. clear-under-search는 모델이 충돌을 찾지 못했음을 의미할 뿐, 충돌이 존재하지 않는다는 의미는 아닙니다. 이는 psv의 계층 2 부분적 비교 약점입니다.
  2. 선택 측면 약점 (선행 기술 검색 고유). 검색 결과는 비교 약점 위에 선택 약점을 추가합니다. 순위 편향, 검색 한계(전체 코퍼스를 검색할 수 없음), 그리고 발견된 선행 기술 텍스트 자체는 가져온 권위 있는 바이트 범위가 아니라 검색 결과에서 모델이 추출한 것입니다.

따라서 선행 기술 검색은 "약한 오라클 대 강한 오라클"이 아니라 두 계층에서 더 약합니다. 이것이 바로 novel_confirmed를 절대 출력하지 않고 최상위 라인이 평결이 아닌 커버리지 진술인 이유입니다. clear-under-search는 "검색된 항목에서 충돌 없음"을 의미할 뿐 "참신함"을 의미하지 않습니다. 더 약한 오라클은 인간의 검토 없이 참신함을 확인하는 데 있어 불가결한 한계입니다.

두 가지 맹점, 정직하게 명시됨 (워크스페이스 규칙 3)

선행 기술 검색 자체의 모델 수행 단계는 숨겨지지 않고 공개된 맹점을 수반합니다. (1) 참신함 주장 추출은 추출기의 맹점을 상속받습니다. 작성자나 추출기가 "참신함"으로 식별하지 않은 주장은 M에서 누락됩니다. (2) 주장과 선행 기술 비교는 모델이 판단합니다. clear-under-search는 모델이 충돌을 찾지 못했음을 의미할 뿐, 충돌이 존재하지 않는다는 의미는 아닙니다. C/N/U/I/M 수는 추출, 검색, 비교된 것에 조건부이며 완전성 보장이 아닙니다. 다른 계열 추출 레그는 연기된 완화 조치(부분적)입니다.

범위

  • 포함: 문서에서 원자적 참신함 주장 추출 (각각: 위치 + 검색 대상); 주장별로 선행 기술 코퍼스 검색; 발견된 선행 기술의 인용문에 근거한 주장별 충돌 평결(충돌/미인용 관련/검색 범위 내 명확/불확실) 출력; 충돌 기록(collisions_under_known_coverage) + 충돌 발견 패킷 출력.
  • 제외: 코드 리뷰(parallel-development); 명세/아키텍처 설계 작성(blueprint-crafting); 문서 프로세스 수렴(cross-source-review); 인용된 출처 검증(primary-source-verification); 연구 자료 수집(blueprint-crafting researcher); 문서의 참신함이 실제로 유의미한지에 대한 평결(인간 전용).

범위 가드 (진입 시 감지)

  • 결과물이 소스/테스트 코드 → parallel-development로 라우팅.
  • 결과물이 명세, 아키텍처 설계, 반복 계획 또는 연구의 작성/재작성 → blueprint-crafting으로 라우팅.
  • 요청이 "이 문서에 대해 적대적 다중 라운드 리뷰를 수렴하도록 진행" → cross-source-review로 라우팅 (프로세스 축).
  • 요청이 "이 문서의 인용된 주장이 출처에 근거하는가?" → primary-source-verification으로 라우팅 (psv = 역방향 인용; 선행 기술 검색 = 역방향 미인용).
  • 요청이 "이 문서가 참신함을 과대 주장하는가? 즉, 인용하지 않은 선행 기술과 충돌하는가?" → 선행 기술 검색 (본 스킬).
  • 요청이 "이것이 참신한가 / 중요한가 / 올바른 기여인가?" → 결과 축, 인간 전용.

가드는 소프트(거부가 아닌 안내 및 라우팅)입니다. Phase A는 명시적 호출(/skill:prior-art-search)에 의존합니다.

빠른 시작

당신은 오케스트레이터입니다. 레그는 읽기 전용이며, 드라이버는 단일 파이프라인(다중 라운드 토론 아님)을 실행합니다. 순서대로 실행하세요.

  1. 프레이밍(Frame) — 인공물과 그 참신함 표면을 식별합니다. 충돌 검사할 핵심 참신함 주장 ("X는 새롭다 / 최초이다 / 선행 기술이 없다"와 같은 핵심 주장)을 열거합니다. 범위를 선언합니다.

  2. 참신함 주장 추출(NC-I2) — subagent 도구를 agent="solidforge:novelty-claim-extractor"(새 컨텍스트)와 함께 호출합니다. 인공물을 읽고 각각 위치 및 검색 대상에 연결된 원자적 참신함 주장을 열거합니다. 원자적 = 주장당 하나의 참신함 명제 (복합은 분할). 참신함 주장은 새로움에 대한 주장입니다(예: "X는 새로운 프레이밍이다," "Y가 최초로 ...한다," "Z에는 선행 기술이 없다"). 사실/인용 주장(psv 영역 — 검증, 충돌 검사 아님) 및 해석적 주장(예: "이것은 중요하다" — 검색으로 판단 불가, 인간에게 에스컬레이션, inadmissible 태그)과 구별하십시오. (추출기 맹점 주의사항: 어느 쪽도 "참신함"으로 식별하지 않은 주장은 M에서 누락됩니다.)

  3. 다중 소스 검색 + 충돌 평결(NC-I3) — 각 참신함 주장에 대해 선행 기술 코퍼스(arXiv, 웹, 공개 저장소)를 검색하여 이미 해당 주장을 한 작업을 찾은 다음, 주장을 발견된 선행 기술과 비교하고 다음 중 하나를 할당합니다:

    • collision — 발견된 선행 기술이 이미 이 주장을 하고 있음(문서의 참신함이 과장됨); 충돌 출처를 인용하고 발견된 선행 기술 텍스트를 인용문(QUOTE) 으로 제시 (심각도 blocker; evidence는 발견된 선행 기술을 반드시 인용해야 함).
    • uncited-relevant — 문서가 인용하지 않은 관련 작업 발견(직접적인 충돌은 아니지만 커버리지 갭); 발견된 선행 기술을 인용문(QUOTE) 으로 제시 (심각도 warning).
    • clear-under-search — 검색된 코퍼스 내에서 충돌이 발견되지 않음(novel이 아님; 충돌이 표면화되지 않았을 뿐). 개수만 계산되며, 발견 사항이 아님.
    • inconclusive — 검색이 주장을 다룰 수 없음(유료 코퍼스, 모호한 쿼리, 찾을 수 없는 항목); 인간에게 에스컬레이션 (심각도 coverage). 공개 출처(arXiv 초록, 공개 저장소)는 자격 증명 없이 검색됩니다. 웹 검색 API는 별도로 명명된 HTTP 표면을 사용합니다(csr의 _ANTHROPIC_AUTH_TOKEN LLM-토큰 네임스페이스가 아님 — install.md 참조). (비교 맹점 주의사항 + 선택 측면 약점.)
  4. 커버리지 공개(NC-I4) — collision-record를 출력합니다: collisions_under_known_coverage = 추출된 M = C+N+U+I개의 참신함 주장 중 C 검색 범위 내 명확 / N 충돌 / U 미인용 관련 / I 불확실; 그리고 충돌 발견 패킷(충돌 / 미인용 관련 / 불확실 발견; clear-under-search 주장은 개수만 계산, 나열되지 않음). M=0(추출 가능한 참신함 주장 없음 — 참신함 주장을 하지 않는 문서, 또는 모든 참신함 주장이 해석적인 경우) 및 I>0은 둘 다 인간에게 에스컬레이션됩니다. 절대 novel_confirmed를 출력하지 않습니다. 가져온 인용문 없이 충돌/미인용 관련 발견은 inconclusive로 강등됩니다.

정직한 신호는 커버리지 공개, 즉 정확히 무엇이 검색되었고 무엇이 충돌했으며, 무엇이 다루어질 수 없었는지입니다. 문서가 진정으로 참신한지 여부는 인간의 판단에 맡깁니다.

권한 체인

  • docs/proposal.md = 권위 있는 설계 (마스터; CSR 프로세스 축 SUBSTANTIVE-CONVERGED + psv N=9/K=0 검증됨, 2026-07-31).
  • docs/iteration-plan.md = 실행 청사진 (Phase A 작업 항목 NC-I0–NC-I6; 충돌 시 proposal.md가 우선).
  • docs/design-decisions.md = ADR 로그 (명확하지 않은 결정: 절대-novel_confirmed, 단일 파이프라인-비토론, 거짓 양성 구조적 프록시, 2계층 검색 오라클 약점, psv/researcher와의 관계, 자격 증명 표면).
  • docs/proposal.convergence.md = 제안서의 교차 리뷰 추적.

cross-source-review / primary-source-verification / blueprint-crafting / parallel-development와의 조정

  • cross-source-review는 PROCESS 축 수렴 엔진으로 유지됩니다. 선행 기술 검색은 추가적(ADDITIVE) 이며 병합되지 않습니다. csr의 substantive_converged가 선행 기술 검색의 커버리지를 암시하지 않으며, 그 반대도 마찬가지입니다.
  • primary-source-verification은 보완적인 결과 축 레그입니다. psv = 역방향 인용(각 인용된 출처를 가져옴); 선행 기술 검색 = 역방향 미인용(문서가 인용하지 않은 선행 기술을 검색). 이들은 구성되며(문서는 둘 다 실행할 수 있음), 병합되지 않습니다. 선행 기술 검색은 psv의 스키마-필드 패턴(충돌 발견은 psv의 문서 발견 확장 — 엄격한 상위 집합)과 install.md 자격 증명 추론을 재사용합니다(코드가 아닌 패턴 복사, 워크스페이스 규칙 7).
  • blueprint-crafting은 순수하게 유지됩니다(프로세스 축). researcher는 전방 수집("X에 대한 출처를 저작을 위해 찾기")으로, 선행 기술 검색의 역방향 충돌과 반대 방향입니다. 이들은 병합되지 않습니다.
  • parallel-development는 코드 리뷰를 소유합니다. 선행 기술 검색은 문서 형태이며, 코드 형태가 아닙니다.
  • files_touched 경계: 이 스킬은 prior-art-search/와 저장소 루트의 agents/novelty-claim-extractor.agent.md(psv의 solidforge:claim-extractor 미러링)를 소유합니다. csr, psv, bc 또는 pd 핵심 로직을 수정하지 않습니다(선행 기술 검색은 추가적). 용어(워크스페이스 규칙 10): collisions_under_known_coverage가 유일한 최상위 용어입니다. novel_confirmed는 금지된 용어이며 출력 필드로 절대 나타나지 않습니다.

자체 점검 (완료 정의)

성숙도 참고 (Phase A 빌드): 아래 모든 자체 게이트가 출하되어 초록색 통과합니다(NC-I0–NC-I6 수렴; docs/iteration-plan.run-record.json이 평결을 담음). 라이브 N≥3 도그푸드는 2026-08-01에 긴 스펙 게이밍 논문을 포함한 3개의 실제 인공물에 대해 실행되었습니다 — dogfood-run-2026-08-01.md의 커버리지 프로필: 가져온 선행 기술을 통해 2개의 미인용 관련 발견이 표면화되었으며(스펙 게이밍 NC34 ↔ SWE-ABS; psv NC2 ↔ AI-Powered Citation Auditing), 알려진 자체 인증 역설 충돌은 arXiv 전용 오라클 하에서 검색 범위 내 명확으로 반환되어, 프로덕션에서 2계층 약점을 입증했습니다(충돌 제로 결과는 "검색된 항목에서 충돌 없음"을 의미할 뿐 "참신함"이 아님). 오프라인 dogfood.py 게이트는 표준 픽스처만 다룹니다(네트워크가 없을 때 규칙 1 건너뛰기 경로). 나머지 연기: 다른 계열 추출 레그(추출기 맹점의 부분적 완화). 이름 prior-art-search는 제안됨(PROPOSED), 인간 잠금(LOCK) 보류 중(제안서 §8 Q1).

어느 자체 점검이라도 실패하는 동안 스킬 변경이 완료되지 않습니다(워크스페이스 규칙 1). 커밋 전에 실행:

python3 skills/prior-art-search/infra/test/disconnect_check.py        # 구조 + 로딩 체인
python3 skills/prior-art-search/infra/test/plugin_layout.py           # plugin.json + agents 형식 적합
python3 skills/prior-art-search/infra/test/findings_shape_check.py    # 모든 출력 경로 → collision-findings + collision-record 유효
python3 skills/prior-art-search/infra/test/coverage_policy_check.py   # 합계 M=C+N+U+I; M=0/I>0 에스컬레이션; novel_confirmed 없음; 가져온 인용문 불변 조건
python3 skills/prior-art-search/infra/test/fetched_quote_gate.py      # 모든 충돌/미인용 관련 발견은 가져온 선행 기술 텍스트를 인용; 인용문 없음 → inconclusive (L1/규칙 3 불변 조건)
python3 skills/prior-art-search/infra/test/lint_self.py               # 도그푸드: 이 스킬 자체 인프라 린트 (ruff)
python3 skills/prior-art-search/infra/test/dogfood.py                 # 심어진 충돌이 있는 픽스처 문서에서 파이프라인 실행 (네트워크 없이 정상적으로 건너뜀; 기록된 로그로 대체)

참조 파일

  • proposal.md — 권위 있는 설계 (문제, 비목표, 소유 계약, 계층화, §8 결정사항).
  • iteration-plan.md — Phase-A 실행

…

[번역을 위해 잘림]

관련 스킬