k-skill/scripts
Jeffrey (Dongkyu) Kim cc91e55682 korean-slang-writing (#133): harden extractor with numbered-h2 gate + category-nav strip
Implements the three non-blocking observations from PR #161 round-3 review:

1. Numbered-h2 gate (reviewer-flagged fragility):
   Refactored _extract_first_section_between_h2 to extract h2 inner text
   (stripping nested tags) and filter by '^\\s*\\d+(?:\\.\\d+)*\\.\\s+\\S'.
   Sidebar widgets like <h2>관련 문서</h2> or <h2>외부 링크</h2> can no longer
   anchor the extractor - only numbered section headers (1., 1.2., 2.3.4.) do.
   Handles live Namu Wiki structure where the number sits inside an <a> tag
   (<a>1.</a> <span>개요</span>), which the round-3 suggested regex-only gate
   missed. All 29 seed pages continue to produce valid summaries on live
   fetches.

2. Category-nav template strip (reviewer-flagged long-page noise):
   a. CATEGORY_NAV_RE strips the inline '[펼치기 · 접기]' marker plus its
      same-line aftermath (the category list items on the same line).
   b. DETAILS_PELCHIGI_RE strips the entire <details> block whose <summary>
      contains 펼치기. Namu Wiki today wraps category nav in exactly this
      structure, so the strip removes the full noise block (not just the
      marker line).
   꿀잼 summary drops from 3482 chars of category dump to 562 chars
   starting with the real definition '무언가가 매우 재미있다는 의미의 인터넷
   유행어'. Non-category <details> blocks (spoilers, footnotes) are
   preserved.

3. TDD + mutation coverage:
   6 new tests total: 2 numbered-h2 gate tests, 2 inline category-nav tests,
   1 <details>-block strip test, 1 <details>-keep test (negative case).
   All 6 were written first and confirmed RED against the round-2 baseline,
   then made GREEN after the implementation landed. Each fix path was also
   mutation-tested (revert regex, remove .sub line) to confirm the tests
   genuinely catch the target bug class.

Suite grows from 45 to 51 tests. All pass. npm run ci exits 0.
2026-04-22 14:18:42 +09:00
..
fixtures Merge pull request #122 from NomaDamas/feature/#120 2026-04-16 13:18:28 +09:00
build-region-codes.js Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
check-setup.sh Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
fine_dust.py Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
geeknews_search.py Add a repeatable GeekNews lookup path without unofficial APIs 2026-04-13 00:16:35 +09:00
kakaotalk_mac.py Feature/#121 (#127) 2026-04-18 01:08:06 +09:00
korean_character_count.js Standardize Korean text counts for form-limited writing 2026-04-08 22:55:31 +09:00
korean_spell_check.py Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
ktx_booking.py Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
mfds_drug_safety.py Ship interview-first MFDS safety skills for drugs and food 2026-04-08 22:23:14 +09:00
mfds_food_safety.py Ship interview-first MFDS safety skills for drugs and food 2026-04-08 22:23:14 +09:00
patent_search.py 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
run-k-skill-proxy.sh Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
sillok_search.py Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
skill-docs.test.js Drop non-allowlisted coupang-mcp-fallback recommendation from hosted fallback docs 2026-04-21 00:38:50 +09:00
subway_lost_property.py Add an official subway lost-property guidance path 2026-04-10 12:05:50 +09:00
test_coupang_partners_mcp_wrapper.py Drop non-allowlisted coupang-mcp-fallback recommendation from hosted fallback docs 2026-04-21 00:38:50 +09:00
test_fine_dust.py Make the fine-dust proxy easier to consume than the upstream APIs 2026-03-28 17:14:18 +09:00
test_geeknews_search.py Add a repeatable GeekNews lookup path without unofficial APIs 2026-04-13 00:16:35 +09:00
test_kakaotalk_mac.py Feature/#121 (#127) 2026-04-18 01:08:06 +09:00
test_korean_character_count.js Preserve documented Korean count semantics in edge-case inputs 2026-04-08 23:28:42 +09:00
test_korean_slang_writing.py korean-slang-writing (#133): harden extractor with numbered-h2 gate + category-nav strip 2026-04-22 14:18:42 +09:00
test_korean_spell_check.py Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
test_ktx_booking.py Keep waiting-list reservations aligned with the selected train 2026-03-27 11:26:38 +09:00
test_mfds_drug_safety.py Route MFDS drug-safety and food-safety lookups through k-skill-proxy 2026-04-14 00:07:18 +09:00
test_mfds_food_safety.py Route MFDS drug-safety and food-safety lookups through k-skill-proxy 2026-04-14 00:07:18 +09:00
test_naver_blog_search.py feat: 네이버 블로그 리서치 스킬 추가 (#107) 2026-04-13 00:06:18 +09:00
test_patent_search.py 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
test_sillok_search.py Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
test_subway_lost_property.py Keep LOST112 curl guidance usable under live latency 2026-04-10 13:01:01 +09:00
test_zipcode_search.py Keep the zipcode helper directly executable 2026-04-10 10:48:00 +09:00
validate-skills.sh Add Korean scholarship search skill and reporting workflow (#116) 2026-04-16 14:58:58 +09:00
zipcode_search.py Keep the zipcode helper directly executable 2026-04-10 10:48:00 +09:00