k-skill/docs/features
Jeffrey (Dongkyu) Kim 66f12cb43d
dev → main: srt-booking 좌석 탐색, korean-humanizer 신규 스킬, toss-securities 공식 OpenAPI 클라이언트, korean-law k-skill-proxy 편입 (#314)
* feat(srt-booking): SRT 좌석 확인과 탐색 우선순위 개선 (#305)

* feat(srt): 좌석 조회와 탐색 우선순위 추가

SRT search 결과의 stable train_id로 객차별 좌석을 조회하고, 특정 호차/좌석 확인과 탐색 우선순위 옵션을 제공한다.

Constraint: SRT와 KTX는 별도 upstream 표면이므로 SRT HTML 파서와 테스트를 분리함
Rejected: KTX 좌석 helper 공유 | Korail API와 SRT 웹 좌석선택 HTML 계약이 달라 혼용하면 파서 안정성이 낮아짐
Confidence: medium
Scope-risk: moderate
Directive: SRT 좌석선택 HTML에서 노출되지 않는 속성은 추정하지 말고 명시적으로 처리할 것
Tested: PYTHONPATH=.:scripts python3 -m unittest scripts.test_srt_booking scripts.test_ktx_booking; python3 -m py_compile scripts/srt_booking.py scripts/srt_seats.py scripts/test_srt_booking.py
Not-tested: 실제 예약 API에 우선순위 좌석 선택을 연결하는 흐름

* fix(srt): 좌석 조회 JSON 출력 안정화

SRT 대기열 메시지가 stdout에 섞여 seats JSON을 깨는 실제 표면 문제를 막고, 누락된 좌석 방향/위치 속성을 unknown으로 정규화한다.

Constraint: issue #303 범위는 예약 부작용이 없는 좌석 조회 보조 흐름으로 제한됨
Rejected: 실제 예약 subcommand 추가 | 좌석 선점/예약은 외부 부작용이라 이번 acceptance criteria에 포함되지 않음
Confidence: high
Scope-risk: narrow
Directive: SRTrain upstream 출력이 추가되더라도 helper stdout은 JSON 전용으로 유지할 것
Tested: RED→GREEN in .omo/ulw-loop/evidence/srt-c002-red-green-tests.txt; live SRT tmux QA in .omo/ulw-loop/evidence/srt-c001-live-search-seats.txt; npm run ci in .omo/ulw-loop/evidence/srt-c003-regression-ci.txt
Not-tested: 실제 예약/결제/취소 부작용 흐름

* test(srt): split seat helper regression coverage

---------

Co-authored-by: Jeffrey (Dongkyu) Kim <vkehfdl1@gmail.com>

* feat: add korean-humanizer skill

AI가 쓴 티가 나는 한국어 글을 자연스러운 사람 글로 고치는 프롬프트 기반 스킬.
blader/humanizer의 구조·방법론(패턴 카탈로그 + draft→audit→final 루프 +
false positive 가이드)을 한국어에 맞게 재구성했다.

- 한국어 특화 33개 패턴: 번역체(직역 조사·무생물 주어·"~들"·"가지다"·이중피동·
  명사화), AI 상투어, 3의 법칙, 과장된 의의 부여, 마무리 상투구, 챗봇 잔재,
  줄표·가운뎃점·곡선따옴표 등
- Triage(최소 개입) 원칙: 서식만 문제면 산문은 그대로 두어 과교정 방지
- Length control: 목표 글자수 지정 시 ±5% 내로 맞추고 공백 포함/제외 수치 보고,
  korean-character-count 스킬과 연동

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat(korean-humanizer): rebuild v2 on im-not-ai framework

Build on happy-nut's PR #311 korean-humanizer skill (cherry-picked,
authorship preserved) by re-centering it on the epoko77-ai/im-not-ai
(Humanize KR, MIT) methodology:

- 4대 철칙 (의미 불변 · 근거 기반 · 장르 유지 · 과윤문 금지 30%/50% 가드)
- S1/S2/S3 severity tiers and A~D quality grades
- A~J taxonomy with Korean-specific patterns (A-16 그/그녀 강박,
  A-18 관계절 좌향 수식, A-19 이중 조사, C-11 연결어미 뒤 쉼표, E-7 경어법)
- detect -> rewrite -> audit -> grade loop with self-check checklist
- references/ai-tell-taxonomy.md full A~J table
- docs/features/korean-humanizer.md crediting im-not-ai and happy-nut
- README row + link, regenerated plugin.json, docs regression test

Co-authored-by: happy-nut <happynut.dev@gmail.com>

* docs(korean-law-search): document official precedent API evidence (#313)

Enhance the existing korean-law-search skill and feature doc with the
official 법제처 Open API precedent endpoints and detail retrieval, without
adding a new skill, package, workspace, or changeset.

- Document 판례 목록 조회 (lawSearch.do?target=prec) and 판례 본문 조회
  (lawService.do?target=prec&ID=...) as official evidence behind the
  korean-law-mcp search_precedents/get_precedent_text path.
- Add supported precedent filters (query, court, case number, source
  name, date, sort) and precedent-specific failure modes (missing LAW_OC,
  upstream unavailable/rate-limit/timeout, empty results, body
  unavailable for some sources) plus the legal-advice boundary.
- Keep korean-law-mcp first and Beopmang as the only post-failure
  fallback; lawService.do?target=prec is official detail retrieval, not a
  Beopmang-style fallback.
- Extend the skill-docs regression test with stable endpoint/tool
  literals and concept-level filter/failure-mode/legal-boundary checks.

Closes #308

* feat(toss-securities): add official read-only OpenAPI client (#312)

Add an official Toss Securities Open API client alongside the existing
unofficial tossctl wrapper. The package ships read-only helpers backed by
the official REST API (https://openapi.tossinvest.com): OAuth2
client_credentials token issuance with an in-memory token cache, bearer +
X-Tossinvest-Account header handling, TossApiError/TossCredentialsError
with secret/token redaction, and 429 Retry-After/backoff retry.

Credentials are read from TOSSINVEST_CLIENT_ID/TOSSINVEST_CLIENT_SECRET
(optional TOSSINVEST_ACCOUNT/TOSSINVEST_API_BASE_URL) and sent directly to
Toss, never through a shared proxy. Order mutation remains out of scope;
the tossctl path is retained as a documented fallback.

Closes #306

* Revert "docs(korean-law-search): document official precedent API evidence (#313)"

This reverts commit 5faec8bb2a.

* feat(k-skill-proxy): fold Korean law lookups into k-skill-proxy, drop Beopmang (#315)

Add hosted korean-law proxy routes and make the korean-law-search skill
proxy-first, removing the unstable Beopmang fallback from the support list.

- proxy: new src/korean-law.js wrapping official 법제처 DRF lawSearch.do /
  lawService.do, injecting LAW_OC + browser User-Agent/Referer (the real
  cause of "사용자 정보 검증 실패") and retrying empty/HTML responses.
- proxy: /v1/korean-law/search and /v1/korean-law/detail routes + lawOc
  config + koreanLawConfigured health flag; 17 module + 6 route tests.
- skill/docs: korean-law-search becomes proxy-first (no per-user LAW_OC,
  no local CLI). Drop Beopmang everywhere; credit chrisryugj/korean-law-mcp
  as design reference and 법제처 open.law.go.kr as official source.
- ops: LAW_OC added to deploy doc KEYS, secret accessor loop, and the
  Cloud Run deploy workflow set-secrets.
- changeset: k-skill-proxy minor.

---------

Co-authored-by: iamiks <rmstjr1030@naver.com>
Co-authored-by: happy-nut <happynut.dev@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 19:06:18 +09:00
..
bunjang-search.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
catchtable-sniper.md feat: add catchtable-sniper skill (#146) 2026-04-22 16:20:38 +09:00
cheap-gas-nearby.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
corporate-registration-consulting.md Merge dev into main (#197) 2026-05-02 23:51:59 +09:00
coupang-product-search.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
court-auction-notice-search.md Enable property search by free auction conditions (#213) 2026-05-08 10:14:33 +09:00
daangn-cars-search.md docs: document Daangn search skills 2026-05-13 16:01:42 +09:00
daangn-jobs-search.md Keep Daangn jobs detail resilient 2026-05-14 00:40:00 +09:00
daangn-realty-search.md docs: document Daangn search skills 2026-05-13 16:01:42 +09:00
daangn-used-goods-search.md docs: document Daangn search skills 2026-05-13 16:01:42 +09:00
daishin-report-search.md Constrain report fetch credentials 2026-05-14 09:57:45 +09:00
daiso-product-search.md Preserve Daiso caller headers through Bearer stock lookup 2026-05-15 16:35:16 +09:00
danawa-price-search.md Keep icon-only Danawa payment badges visible 2026-05-15 17:50:58 +09:00
delivery-tracking.md Document the verified public tracking outputs explicitly 2026-03-27 02:44:48 +09:00
donation-place-search.md Feature/#212 (#214) 2026-05-08 15:41:21 +09:00
emergency-room-beds.md Support nearby ER status checks 2026-05-17 18:37:07 +09:00
express-bus-booking.md Add Korean bus booking skills 2026-05-10 02:36:57 +09:00
fine-dust-location.md Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
flight-ticket-search.md docs(flight-ticket-search): register skill in README table and add feature guide 2026-05-15 01:35:43 +09:00
foresttrip-vacancy.md fix(foresttrip-vacancy): exclude 예비 rooms, gate useDt strictly, dedup duplicate rooms 2026-05-29 20:57:25 +09:00
gangnamunni-clinic-search.md Enable public Gangnam Unni clinic lookup 2026-05-13 01:49:16 +09:00
geeknews-search.md Add a repeatable GeekNews lookup path without unofficial APIs 2026-04-13 00:16:35 +09:00
gongsijiga-search.md feat: 개별공시지가(gongsijiga-search) 스킬 추가 (#200) 2026-05-05 00:27:31 +09:00
han-river-water-level.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
hipass-receipt.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
hola-poke-yeoksam.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
household-waste-info.md feat(k-skill-proxy): 생활쓰레기 페이지네이션 검증 및 문서 보강 2026-04-11 03:02:09 +09:00
hwp.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
intercity-bus-booking.md Let intercity booking helper create temporary seat holds 2026-05-13 15:43:26 +09:00
iros-registry-automation.md Prevent IROS download path failures after payment 2026-04-28 14:47:30 +09:00
joseon-sillok-search.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
k-dart.md feat: add k-dart skill for DART OpenAPI financial disclosures (#147) 2026-04-22 12:46:42 +09:00
k-schoollunch-menu.md NEIS 급식·학교검색 프록시, k-schoollunch-menu 스킬 및 문서 2026-04-10 13:14:15 +09:00
k-skill-cleaner.md Archive unsupported map skills 2026-06-05 22:24:15 +09:00
k-skill-proxy.md Feature/#274 (#277) 2026-05-22 13:54:36 +09:00
kakao-bar-nearby.md Keep Kakao smoke docs aligned with verified live output 2026-03-29 17:05:17 +09:00
kakao-map.md Keep Kakao route contracts local and explicit 2026-05-23 19:25:10 +09:00
kakaotalk-mac.md Merge pull request #249 from NomaDamas/feature/#248 2026-05-15 18:02:04 +09:00
kbl-results.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
kbo-results.md Prepare k-skill for packaged releases and broader skill discovery 2026-03-25 23:57:53 +09:00
kleague-results.md Add an official K League results client and skill 2026-03-29 15:57:15 +09:00
korea-weather.md Feature/#205 (#210) 2026-05-06 16:56:40 +09:00
korean-character-count.md Keep published Korean count examples aligned with the shipped helper 2026-04-08 23:57:31 +09:00
korean-cinema-search.md 영화관 검색 스킬 추가 (#260) 2026-05-18 11:42:40 +09:00
korean-humanizer.md dev → main: srt-booking 좌석 탐색, korean-humanizer 신규 스킬, toss-securities 공식 OpenAPI 클라이언트, korean-law k-skill-proxy 편입 (#314) 2026-06-12 19:06:18 +09:00
korean-jangbu-for.md Protect jangbu wrapper installs from incomplete payloads 2026-04-29 00:50:37 +09:00
korean-law-search.md dev → main: srt-booking 좌석 탐색, korean-humanizer 신규 스킬, toss-securities 공식 OpenAPI 클라이언트, korean-law k-skill-proxy 편입 (#314) 2026-06-12 19:06:18 +09:00
korean-marathon-schedule.md Feature/#211 (#222) 2026-05-12 18:49:06 +09:00
korean-middle-korean.md Feature/#270 (#281) 2026-05-23 17:54:56 +09:00
korean-patent-search.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
korean-privacy-terms.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
korean-scholarship-search.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
korean-slang-writing.md korean-slang-writing (#133): add feature doc 2026-04-22 12:48:21 +09:00
korean-spell-check.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
korean-stock-search.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
korean-transit-route.md Route shared key APIs through the proxy 2026-05-13 16:31:29 +09:00
kosis-stats.md Route shared key APIs through the proxy 2026-05-13 16:31:29 +09:00
kstartup-search.md feat(kstartup-search): 창업진흥원 K-Startup 조회 스킬 + 프록시 라우트 4종 (#259) 2026-05-18 11:43:33 +09:00
ktx-booking.md feat(ktx-booking): 좌석 탐색 우선순위 개선 2026-05-28 22:49:31 +09:00
lck-analytics.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
lh-notice-search.md Add lh-notice-search skill and /v1/lh-notice/{search,detail} proxy routes 2026-04-22 10:58:03 +09:00
library-book-search.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
local-election-candidate-search.md Feature/#256 (#266) 2026-05-18 23:11:23 +09:00
lotto-results.md Prepare k-skill for packaged releases and broader skill discovery 2026-03-25 23:57:53 +09:00
market-kurly-search.md Add a supported Market Kurly price-lookup skill 2026-04-09 14:51:30 +09:00
mfds-drug-safety.md Route MFDS drug-safety and food-safety lookups through k-skill-proxy 2026-04-14 00:07:18 +09:00
mfds-food-safety.md Route MFDS drug-safety and food-safety lookups through k-skill-proxy 2026-04-14 00:07:18 +09:00
myrealtrip-search.md Add MyRealTrip MCP search skill 2026-05-11 14:43:55 +09:00
naver-blog-research.md feat: 네이버 블로그 리서치 스킬 추가 (#107) 2026-04-13 00:06:18 +09:00
naver-news-search.md Document preflight 400 and full canonical dedup contract in naver-news feature doc 2026-04-22 16:03:18 +09:00
naver-shopping-search.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
nts-business-registration.md Harden NTS validate privacy boundary 2026-05-14 22:20:33 +09:00
ohou-today-deal.md fix(ohou-today-deal): address PR #264 review (live UA, explicit feed selection, argv validators) 2026-05-18 16:36:56 +09:00
olive-young-search.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
parking-lot-search.md Fix parking lot lookups: force HTTPS, cache full dataset, normalize provider fields (#156) 2026-04-22 10:52:57 +09:00
public-restroom-nearby.md Improve restroom coverage with Kakao source merging 2026-04-28 23:28:12 +09:00
real-estate-search.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
rhwp-advanced.md Add rhwp-edit and rhwp-advanced skills with k-skill-rhwp CLI 2026-04-22 12:45:13 +09:00
rhwp-edit.md rhwp-edit (#155): guard replace-all case-insensitive path against UTF-16 length-drift 2026-04-22 15:23:23 +09:00
seoul-bike.md Feature/#274 (#277) 2026-05-22 13:54:36 +09:00
seoul-density.md Add seoul-density skill and proxy route for Seoul realtime hotspot crowd levels 2026-05-14 15:37:54 +09:00
seoul-subway-arrival.md Feature/#205 (#210) 2026-05-06 16:56:40 +09:00
sh-notice-search.md Restore SH notice lookup without proxy policy drift 2026-05-15 19:22:55 +09:00
srt-booking.md dev → main: srt-booking 좌석 탐색, korean-humanizer 신규 스킬, toss-securities 공식 OpenAPI 클라이언트, korean-law k-skill-proxy 편입 (#314) 2026-06-12 19:06:18 +09:00
subway-lost-property.md Keep LOST112 curl guidance usable under live latency 2026-04-10 13:01:01 +09:00
ticket-availability.md feat(ticket-availability): YES24·인터파크 공연 일정·잔여석 조회 (조회 전용) 2026-05-13 02:50:26 +09:00
toss-securities.md dev → main: srt-booking 좌석 탐색, korean-humanizer 신규 스킬, toss-securities 공식 OpenAPI 클라이언트, korean-law k-skill-proxy 편입 (#314) 2026-06-12 19:06:18 +09:00
used-car-price-search.md Release: coupang, korean-law, subway proxy improvements (#43) 2026-04-02 23:59:38 +09:00
zipcode-search.md Document direct zipcode helper execution so the executable follow-up stays discoverable 2026-04-10 10:59:22 +09:00