Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
163d35c
fix(#4817): 렌더러 vertical_pos+line_height i32 오버플로 패닉 2건(퍼징 실측) satura…
kevin9327 Aug 15, 2026
c6a7ea4
fix(#4817): 렌더러 layout i32 오버플로 체계적 하드닝 — 퍼징 7479건 재확인
kevin9327 Aug 15, 2026
619fe2c
fix: 렌더러 오버플로 보정 형식화
jangster77 Aug 15, 2026
116e46c
fix: 파서 normalize_variant_paragraph_vpos i32 오버플로 패닉 saturating (퍼징 실측)
kevin9327 Aug 15, 2026
d3f56cb
fix: 파서 오버플로 보정 형식화
jangster77 Aug 15, 2026
3c16eb8
feat(#4825): HWP3 보안 트레일러 — 권한자 복원 리댁션(REDACTED 전용, AEAD)
kevin9327 Aug 15, 2026
93f4c29
fix(deps): 보안 트레일러 암호 크레이트의 기본 피처 차단 — wasm 빌드 복구
kevin9327 Aug 15, 2026
e37b46c
test(security-trailer): 테스트 비밀번호를 상수에서 실행시 난수로
kevin9327 Aug 15, 2026
43402cd
feat(#4828): gym 코퍼스 퍼징 발견 엔진 — DoS 근본원인 클러스터링
kevin9327 Aug 15, 2026
317449e
fix(parser/hwp5): 문단↔표↔셀 상호재귀 깊이 상한 — export-structure 스택 오버플로 DoS (#…
kevin9327 Aug 15, 2026
648826b
fix(gym): writer/convert 경로 손상 입력 DoS 패닉 2건 하드닝 (#4831)
kevin9327 Aug 15, 2026
1b79fb2
fix(inspect): 주입 스캐너 O(n^2) DoS 2건 수정 — 서술어 앞 한정·발췌 1회 수집 (#4835)
kevin9327 Aug 15, 2026
046d7a0
feat: HWP3 보안 트레일러 포스트양자 공개키 봉인(ML-KEM-768, FIPS 203)
kevin9327 Aug 15, 2026
6ae86b9
fix(deps,test): PQ 봉인 브랜치의 wasm getrandom 사고 + 테스트 상수 정리
kevin9327 Aug 15, 2026
b2d0bfa
fix(parser/hwpx): HwpUnitChar 값 2× 스케일 정수 오버플로 패닉 하드닝 (#4839)
kevin9327 Aug 15, 2026
00fb647
fix(document): 과다 line_seg 손상 입력의 O(n²) 무한정지 DoS 방어 (#4813)
kevin9327 Aug 15, 2026
0cec930
fix(test): manual_str_repeat — clippy workspace 검사 복구
kevin9327 Aug 15, 2026
5c4258d
feat(pq): 양자내성 서명(ML-DSA/FIPS 204) 모듈 추가 (#4841)
kevin9327 Aug 15, 2026
d301277
test(pq-sign): 테스트의 하드코딩 키 재료를 실행시 값으로
kevin9327 Aug 15, 2026
33cf952
feat: 에이전트 전용 봉인 모듈 agent_seal 추가 (#4843)
kevin9327 Aug 15, 2026
f0d308e
fix(gym): WMF/EMF 메타파일 DIB 치수·좌표 산술 오버플로 + 무한 할당 DoS 하드닝 (#4846)
kevin9327 Aug 15, 2026
db65484
feat(gym): SVG→PNG GPU 래스터화 경로(vello/wgpu)와 정직한 벤치마크
kevin9327 Aug 15, 2026
5a1462f
docs(codex): GPU 래스터 명령 2개를 대전에 반영
kevin9327 Aug 15, 2026
b24cea3
feat(armor): 프롬프트 주입 방패 — nonce 격벽 + 주입 신호 표지 + 출처 표지 (#4850)
kevin9327 Aug 15, 2026
3169593
feat(onboarding): 에이전트 제로프릭션 온보딩 닥터·문서·스킬 추가 (#4852)
kevin9327 Aug 15, 2026
1806074
feat(mcp): 세션 조회 파리티 — hwp_doc_structure·hwp_doc_extract_data 노출 (#4856)
kevin9327 Aug 15, 2026
3acd233
fix(armor): 프로필 등록 + 테스트 nonce 를 실제 생성기로
kevin9327 Aug 15, 2026
815a698
docs(skill): rhwp-onboarding 에 실행 가능한 명령 절 추가
kevin9327 Aug 15, 2026
da9a433
feat(gym): 경쟁 벤치마크 하네스 — rhwp vs 대안 도구 실측 + 능력 매트릭스
kevin9327 Aug 15, 2026
96c8f21
보안: inspect watermark — 숨은 마크(제로폭·호모글리프·공백 스테가노) 탐지 + 정화 코어
kevin9327 Aug 15, 2026
7d76f59
feat(mcp): 세션 도구 결과에 이어보기 커서를 넣는다 — 절단이 손실로 끝나지 않게 (#4854)
kevin9327 Aug 15, 2026
c39304d
fix(수식): eqedit·renderer/equation 파서 DoS 하드닝 — 깊은 중첩 스택 오버플로 + 괄호 O(n…
kevin9327 Aug 15, 2026
6906e8b
feat(agent): context-cost — 문서를 '그대로 싣는 경로'의 비용·복원율을 실측한다 (#4864)
kevin9327 Aug 15, 2026
45eefc3
docs(knowledge-map): armor 필드 2개를 §2-2 전수 사전에 등재
kevin9327 Aug 15, 2026
5ef30ef
feat(rag): export-llm — HWP/HWPX를 LLM-ready RAG 청크로 내보낸다 (#4869)
kevin9327 Aug 15, 2026
d22cd0b
test(batch): --threads 축 결정론·실패격리 회귀 테스트 추가 (#4872)
kevin9327 Aug 15, 2026
97bc7c4
feat(harness): 성질 러너에 '못 하는 일' 축 2종(P7·P8)을 더하고 상시 red 를 푼다 (#4868, #…
kevin9327 Aug 15, 2026
f94ba2e
test(하네스): 명령 표면 하한 계약에 맞춘 회귀 검증
jangster77 Aug 15, 2026
ad0a336
feat: threat-scan — 무기화 문서 구조 위협 탐지(읽기 전용 안전 에어락)
kevin9327 Aug 15, 2026
47006bf
feat(agent): 문서 선택자 언어(DSEL) — 에이전트 조작 커널 1층 (#4875)
kevin9327 Aug 15, 2026
c28debd
fix(review): DSEL 분할과 threat-scan 검증 보정
jangster77 Aug 15, 2026
48f4246
fix(review): threat-scan 프로필과 지식지도 동기화
jangster77 Aug 15, 2026
2f61f41
fix(gym): fuzz 계약의 파일 핸들 정리
jangster77 Aug 15, 2026
7aa57b4
docs(review): kevin9327 원 PR별 통합 검토 기록
jangster77 Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions .claude/skills/rhwp-onboarding/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
name: rhwp-onboarding
description: rhwp 를 처음 만나는 에이전트를 한 명령으로 온보딩합니다. tools/agent_onboarding/rhwp_doctor.py 하나로 바이너리 위치·버전 확인 → 번들 샘플 자가검증(info/export-text) → 붙여넣기용 .mcp.json 방출 → 첫 5분 레시피 지도(트리아지·표 추출·서식 채우기·보안 스윕·작업 영수증)까지 끝내고, 종료 코드로 정상/빌드필요를 신호합니다. 트리거 — 사용자가 "rhwp 처음/설치/시작/온보딩", "rhwp 어떻게 붙여/시작해", "rhwp 돌아가는지 확인", "rhwp 셋업/부트스트랩", "rhwp 뭐부터", ".mcp.json 만들어줘" 등을 요청할 때. 5분 경로 정본은 mydocs/manual/agent_onboarding.md.
---

# rhwp-onboarding — 제로프릭션 온보딩 Skill

## 목적

rhwp 를 **처음 보는** 에이전트(또는 그 사람)를 "설치 → 검증 → MCP 배선 → 첫 레시피"까지
한 번에 데려간다. 이 스킬은 얇다 — 실제 일은 닥터 스크립트와 5분 경로 문서가 한다.

- 닥터: [`tools/agent_onboarding/rhwp_doctor.py`](../../../tools/agent_onboarding/rhwp_doctor.py) (순수 Python 3, 의존성 0)
- 5분 경로 정본: [`mydocs/manual/agent_onboarding.md`](../../../mydocs/manual/agent_onboarding.md)

이미 MCP 로 붙어 있고 **세션/무상태 도구 선택**이 논점이면 이 스킬이 아니라
`rhwp-mcp-session` 을 쓴다. 이 스킬은 그 앞단(0→1 부트스트랩) 전용이다.

## 한 명령

저장소 루트에서:

```bash
python tools/agent_onboarding/rhwp_doctor.py # 사람용 리포트
python tools/agent_onboarding/rhwp_doctor.py --json # 기계 판독(stdout=JSON 하나)
```

닥터가 하는 일:

1. **바이너리 위치·버전** — `PATH` → `target/release/rhwp` 순으로 찾고 `--version` 확인.
없으면 `cargo build --release --bin rhwp` 를 찍고 **종료 코드 3** 으로 신호(긴 빌드를
대신 돌리지 않는다).
2. **자가검증** — `samples/` 의 작은 문서로 `info` / `export-text --json` 을 돌려 구조 출력을
확인한다. 통과를 위조하지 않는다 — 못 돌린 검사는 `SKIP`/`FAIL` 로 정직하게 보고.
3. **`.mcp.json` 방출** — `{ "mcpServers": { "rhwp": { "command": "rhwp", "args": ["mcp-serve"] } } }`.
`PATH` 에 없으면 절대 경로를 채워준다. `--write <경로>` 로 파일로 쓰되 기존 파일은
`--force` 없이 덮어쓰지 않는다.
4. **첫 5분 레시피 지도** — 실존하는 스킬·레시피만 인용해 5대 고가치 과제를 명령과 함께 제시.

## 닥터가 실제로 돌리는 명령 (손으로 확인할 때)

닥터가 `FAIL` 을 내면 같은 명령을 직접 쳐서 원인을 본다 — 닥터는 아래를 감싼 것뿐이다.

```bash
rhwp --version
rhwp info samples/basic/english.hwp --json
rhwp export-text samples/basic/english.hwp --json --max-chars 2000
```

`.mcp.json` 이 띄우는 상주 서버도 같은 바이너리다 — 배선 전에 한 번 손으로 띄워 본다.

```bash
rhwp mcp-serve
```

붙였으면 첫 과제로 넘어간다. 어느 스킬로 갈지는 아래 지도를 따르되, 한 문서를 빠르게
파악하는 최단 경로는 이 두 명령이다.

```bash
rhwp explain samples/basic/english.hwp --json
rhwp digest samples/basic/english.hwp --json
```

## 종료 코드로 판정

| 코드 | 뜻 | 다음 |
|---:|---|---|
| 0 | 정상 | `.mcp.json` 붙이고 첫 레시피로 |
| 1 | 임계 실패 | `FAIL` 상세 진단 |
| 2 | 사용법 오류 | 인자 교정 |
| 3 | 바이너리 미발견 | `cargo build --release --bin rhwp` |

## 다음

- MCP 통합 전체 절차: [`mydocs/manual/mcp_integration_guide.md`](../../../mydocs/manual/mcp_integration_guide.md)
- CLI 전체 명령: [`mydocs/manual/cli_commands.md`](../../../mydocs/manual/cli_commands.md)
- 과제별 스킬: `rhwp-doc-triage` · `rhwp-table-exchange` · `rhwp-form-fill` ·
`rhwp-security-sweep` · `rhwp-work-receipt`
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -992,9 +992,15 @@ jobs:
python3 -m unittest scripts/tests/test_gym_trajectory.py
python3 -m unittest scripts/tests/test_gym_leaderboard.py
python3 -m unittest scripts/tests/test_gym_robustness.py
python3 -m unittest scripts/tests/test_gym_fuzz_corpus.py
python3 -m unittest scripts/tests/test_gym_release_diff.py
python3 -m unittest scripts/tests/test_gym_discriminate.py

# [#4855] 경쟁 벤치 하네스 순수 로직 가드 — 집계·능력 매트릭스·리포트 렌더·정직한
# 저하(못 돌린 도구는 'n/a: 이유', 숫자 날조 금지)를 바이너리·외부도구 없이 검증한다.
- name: Validate competitive benchmark harness contract
run: python3 -m unittest scripts/tests/test_gym_competitive_bench.py

# [#4715] 채택 척추 — 에이전트 작업 표준(AWS)이 전 표면에서 정합한지.
# 바이너리 불요(커밋 문서만) — 표면이 늘어도 표준 링크가 끊기지 않게 한다.
- name: Validate adoption spine contract
Expand Down
Loading