@nomadamas/k-skill 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/bin/k-skill.js +35 -5
  2. package/package.json +2 -2
  3. package/skills/assembly-bill-vote-search/skill.json +0 -1
  4. package/skills/biz-health-check/instruction.md +2 -2
  5. package/skills/biz-health-check/skill.json +0 -1
  6. package/skills/bok-ecos-stats/instruction.md +8 -8
  7. package/skills/bok-ecos-stats/skill.json +0 -1
  8. package/skills/building-register-search/instruction.md +6 -6
  9. package/skills/building-register-search/scripts/building_register.py +0 -0
  10. package/skills/cheap-gas-nearby/skill.json +0 -1
  11. package/skills/corporate-registration-consulting/scripts/fill_official_hwp.py +0 -0
  12. package/skills/corporate-registration-consulting/skill.json +3 -1
  13. package/skills/coupang-product-search/instruction.md +10 -10
  14. package/skills/coupang-product-search/scripts/coupang_partners_mcp.py +0 -0
  15. package/skills/court-auction-notice-search/skill.json +2 -1
  16. package/skills/court-payment-order-assistant/skill.json +1 -1
  17. package/skills/d2b-notice-search/skill.json +2 -1
  18. package/skills/daangn-cars-search/instruction.md +3 -3
  19. package/skills/daangn-cars-search/scripts/daangn_cars.py +0 -0
  20. package/skills/daangn-jobs-search/instruction.md +2 -2
  21. package/skills/daangn-jobs-search/scripts/daangn_jobs.py +0 -0
  22. package/skills/daangn-jobs-search/skill.json +3 -1
  23. package/skills/daangn-realty-search/instruction.md +1 -1
  24. package/skills/daangn-realty-search/scripts/daangn_realty.py +0 -0
  25. package/skills/daangn-used-goods-search/instruction.md +2 -2
  26. package/skills/daangn-used-goods-search/scripts/daangn_used_goods.py +0 -0
  27. package/skills/daishin-report-search/skill.json +0 -1
  28. package/skills/danawa-price-search/instruction.md +4 -4
  29. package/skills/danawa-price-search/scripts/danawa_search.py +0 -0
  30. package/skills/ev-charger-nearby/instruction.md +5 -5
  31. package/skills/ev-charger-nearby/skill.json +1 -2
  32. package/skills/express-bus-booking/instruction.md +2 -2
  33. package/skills/express-bus-booking/scripts/kobus_express_booking.py +0 -0
  34. package/skills/express-bus-booking/skill.json +2 -0
  35. package/skills/flight-ticket-search/instruction.md +7 -7
  36. package/skills/foresttrip-vacancy/instruction.md +7 -7
  37. package/skills/foresttrip-vacancy/scripts/run_foresttrip_vacancy.py +0 -0
  38. package/skills/fsc-corporate-info/instruction.md +1 -1
  39. package/skills/fsc-corporate-info/skill.json +0 -1
  40. package/skills/g2b-order-plan-search/instruction.md +2 -2
  41. package/skills/g2b-order-plan-search/skill.json +2 -1
  42. package/skills/g2b-sanctioned-supplier/instruction.md +1 -1
  43. package/skills/g2b-sanctioned-supplier/skill.json +0 -1
  44. package/skills/geeknews-search/instruction.md +3 -3
  45. package/skills/geeknews-search/scripts/geeknews_search.py +0 -0
  46. package/skills/gov-overseas-trip-report/instruction.md +12 -12
  47. package/skills/gov-overseas-trip-report/scripts/gov_overseas_trip_report.py +0 -0
  48. package/skills/han-river-water-level/skill.json +0 -1
  49. package/skills/highway-traffic-status/instruction.md +2 -2
  50. package/skills/highway-traffic-status/skill.json +0 -1
  51. package/skills/household-waste-info/skill.json +0 -1
  52. package/skills/intercity-bus-booking/instruction.md +3 -3
  53. package/skills/intercity-bus-booking/scripts/intercity_bus_search.py +0 -0
  54. package/skills/intercity-bus-booking/skill.json +2 -0
  55. package/skills/iros-registry-automation/instruction.md +2 -2
  56. package/skills/iros-registry-automation/skill.json +2 -1
  57. package/skills/job-posting-match/instruction.md +2 -2
  58. package/skills/job-posting-match/skill.json +1 -1
  59. package/skills/jobkorea-talent-search/instruction.md +1 -1
  60. package/skills/jobkorea-talent-search/scripts/jobkorea_talent_search.py +0 -0
  61. package/skills/jobkorea-talent-search/skill.json +2 -1
  62. package/skills/joseon-sillok-search/instruction.md +6 -6
  63. package/skills/k-skill-cleaner/instruction.md +2 -2
  64. package/skills/k-skill-cleaner/scripts/k_skill_cleaner.py +0 -0
  65. package/skills/k-skill-setup/skill.json +1 -1
  66. package/skills/kakaotalk-mac/skill.json +1 -1
  67. package/skills/keris-academic-search/instruction.md +4 -4
  68. package/skills/korea-weather/skill.json +0 -1
  69. package/skills/korean-character-count/instruction.md +8 -8
  70. package/skills/korean-heritage-search/instruction.md +5 -5
  71. package/skills/korean-humanizer/instruction.md +1 -1
  72. package/skills/korean-jangbu-for/instruction.md +3 -3
  73. package/skills/korean-jangbu-for/scripts/install.sh +0 -0
  74. package/skills/korean-middle-korean/instruction.md +6 -6
  75. package/skills/korean-middle-korean/scripts/korean_middle_korean.js +0 -0
  76. package/skills/korean-patent-search/instruction.md +4 -4
  77. package/skills/korean-privacy-terms/instruction.md +4 -4
  78. package/skills/korean-privacy-terms/scripts/install.sh +0 -0
  79. package/skills/korean-scholarship-search/instruction.md +10 -10
  80. package/skills/korean-slang-writing/instruction.md +8 -8
  81. package/skills/korean-spell-check/instruction.md +3 -3
  82. package/skills/korean-spell-check/skill.json +0 -1
  83. package/skills/korean-stock-search/skill.json +0 -1
  84. package/skills/korean-transit-route/skill.json +0 -1
  85. package/skills/kosis-stats/instruction.md +13 -26
  86. package/skills/kr-whois-lookup/skill.json +1 -2
  87. package/skills/kstartup-search/instruction.md +8 -8
  88. package/skills/lck-analytics/instruction.md +4 -4
  89. package/skills/lck-analytics/scripts/_lib.js +0 -0
  90. package/skills/lck-analytics/scripts/analyze-live-game.js +0 -0
  91. package/skills/lck-analytics/scripts/build-match-report.js +0 -0
  92. package/skills/lck-analytics/scripts/sync-oracle.js +0 -0
  93. package/skills/localdata-business-status/instruction.md +2 -2
  94. package/skills/mfds-drug-safety/instruction.md +3 -3
  95. package/skills/mfds-drug-safety/skill.json +0 -1
  96. package/skills/mfds-food-safety/instruction.md +6 -6
  97. package/skills/mfds-food-safety/skill.json +0 -1
  98. package/skills/myrealtrip-search/instruction.md +11 -11
  99. package/skills/myrealtrip-search/scripts/myrealtrip_mcp.py +0 -0
  100. package/skills/national-pension-workplace/instruction.md +1 -1
  101. package/skills/national-pension-workplace/skill.json +0 -1
  102. package/skills/naver-ad-performance/instruction.md +7 -7
  103. package/skills/naver-blog-research/instruction.md +4 -4
  104. package/skills/naver-news-search/skill.json +0 -1
  105. package/skills/nhis-care-checkup-search/skill.json +1 -2
  106. package/skills/nts-business-registration/instruction.md +3 -3
  107. package/skills/nts-tax-delinquency/instruction.md +1 -1
  108. package/skills/ohou-today-deal/instruction.md +4 -4
  109. package/skills/ohou-today-deal/scripts/ohou_today_deal.py +0 -0
  110. package/skills/popbill/instruction.md +9 -9
  111. package/skills/real-estate-search/skill.json +0 -1
  112. package/skills/s2b-notice-search/skill.json +2 -1
  113. package/skills/saramin-talent-search/skill.json +2 -1
  114. package/skills/seoul-bike/instruction.md +3 -3
  115. package/skills/seoul-bike/scripts/seoul_bike.py +0 -0
  116. package/skills/seoul-bike/skill.json +0 -1
  117. package/skills/seoul-density/instruction.md +4 -4
  118. package/skills/seoul-density/skill.json +0 -1
  119. package/skills/srt-booking/instruction.md +4 -4
  120. package/skills/subway-lost-property/instruction.md +2 -2
  121. package/skills/subway-lost-property/scripts/subway_lost_property.py +0 -0
  122. package/skills/subway-lost-property/skill.json +1 -1
  123. package/skills/ticket-availability/instruction.md +3 -3
  124. package/skills/ticket-availability/skill.json +2 -1
  125. package/skills/yebigun-training/skill.json +2 -1
  126. package/skills/zipcode-search/instruction.md +2 -2
  127. package/skills/zipcode-search/scripts/zipcode_search.py +0 -0
  128. package/src/assemble.js +147 -4
  129. package/src/execute.js +81 -0
  130. package/templates/action-recruiting.md +5 -0
  131. package/templates/legal.md +6 -0
  132. package/templates/operations.md +3 -0
  133. package/templates/action-communication.md +0 -5
  134. package/templates/hard-boundary.md +0 -3
@@ -36,7 +36,7 @@
36
36
  ### 1. 진단
37
37
 
38
38
  ```bash
39
- python3 naver-ad-performance/scripts/naver_ad_performance.py doctor
39
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- doctor
40
40
  ```
41
41
 
42
42
  키 3개 존재 여부와 `api.searchad.naver.com` 도달 가능 여부를 보여준다. `reachable: false`면 로컬(클로드 코드/코덱스 CLI) 환경에서 다시 실행하도록 안내한다.
@@ -44,16 +44,16 @@ python3 naver-ad-performance/scripts/naver_ad_performance.py doctor
44
44
  ### 2. 구조 조회 (id가 필요할 때)
45
45
 
46
46
  ```bash
47
- python3 naver-ad-performance/scripts/naver_ad_performance.py campaigns
48
- python3 naver-ad-performance/scripts/naver_ad_performance.py adgroups --campaign <nccCampaignId>
49
- python3 naver-ad-performance/scripts/naver_ad_performance.py keywords --adgroup <nccAdgroupId>
47
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- campaigns
48
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- adgroups --campaign <nccCampaignId>
49
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- keywords --adgroup <nccAdgroupId>
50
50
  ```
51
51
 
52
52
  ### 3. 성과 조회 (핵심)
53
53
 
54
54
  ```bash
55
- python3 naver-ad-performance/scripts/naver_ad_performance.py stats --ids <id1,id2> --since 2026-06-01 --until 2026-06-30
56
- python3 naver-ad-performance/scripts/naver_ad_performance.py stats --ids <id> --since 2026-06-01 --until 2026-06-30 --by day
55
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- stats --ids <id1,id2> --since 2026-06-01 --until 2026-06-30
56
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- stats --ids <id> --since 2026-06-01 --until 2026-06-30 --by day
57
57
  ```
58
58
 
59
59
  `ids`는 캠페인/광고그룹/키워드 id를 콤마로 구분해 섞어 넣을 수 있다. `--since`/`--until`을 생략하면 네이버 기본 기간(최근)으로 조회된다.
@@ -61,7 +61,7 @@ python3 naver-ad-performance/scripts/naver_ad_performance.py stats --ids <id> --
61
61
  ### 4. 키워드 도구
62
62
 
63
63
  ```bash
64
- python3 naver-ad-performance/scripts/naver_ad_performance.py keywordtool --keywords "제주여행,게스트하우스"
64
+ npx -y @nomadamas/k-skill@0 exec naver-ad-performance scripts/naver_ad_performance.py -- keywordtool --keywords "제주여행,게스트하우스"
65
65
  ```
66
66
 
67
67
  ## Signing (참고)
@@ -35,7 +35,7 @@
35
35
  ### 1. 네이버 블로그 검색
36
36
 
37
37
  ```bash
38
- python3 scripts/naver_search.py "검색어" --count 10 --sort sim
38
+ npx -y @nomadamas/k-skill@0 exec naver-blog-research scripts/naver_search.py -- "검색어" --count 10 --sort sim
39
39
  ```
40
40
 
41
41
  | 인자 | 필수 | 설명 | 기본값 |
@@ -68,7 +68,7 @@ python3 scripts/naver_search.py "검색어" --count 10 --sort sim
68
68
  검색 결과에서 관심 있는 포스트의 URL을 선택하여 원문을 읽는다.
69
69
 
70
70
  ```bash
71
- python3 scripts/naver_read.py "https://blog.naver.com/user123/224212849946"
71
+ npx -y @nomadamas/k-skill@0 exec naver-blog-research scripts/naver_read.py -- "https://blog.naver.com/user123/224212849946"
72
72
  ```
73
73
 
74
74
  | 인자 | 필수 | 설명 | 기본값 |
@@ -83,13 +83,13 @@ PC URL을 넣어도 자동으로 모바일 URL로 변환하여 요청한다.
83
83
  ### 3. 이미지 다운로드 (필요 시)
84
84
 
85
85
  ```bash
86
- python3 scripts/naver_download_images.py --urls "url1,url2,url3" --output ./images/
86
+ npx -y @nomadamas/k-skill@0 exec naver-blog-research scripts/naver_download_images.py -- --urls "url1,url2,url3" --output ./images/
87
87
  ```
88
88
 
89
89
  또는 `naver_read.py` 결과를 파이프로 전달:
90
90
 
91
91
  ```bash
92
- python3 scripts/naver_read.py "https://..." | python3 scripts/naver_download_images.py --output ./images/
92
+ npx -y @nomadamas/k-skill@0 exec naver-blog-research scripts/naver_read.py -- "https://..." | npx -y @nomadamas/k-skill@0 exec naver-blog-research scripts/naver_download_images.py -- --output ./images/
93
93
  ```
94
94
 
95
95
  | 인자 | 필수 | 설명 | 기본값 |
@@ -3,7 +3,6 @@
3
3
  "description": "네이버 검색 Open API 뉴스 검색(news.json)을 k-skill-proxy 경유로 조회해 최신 뉴스 기사 제목·발행시각·링크·요약을 보수적으로 정리한다. 사용자는 별도 API 키 발급 없이 호출한다.",
4
4
  "profiles": [
5
5
  "proxy",
6
- "vault",
7
6
  "lookup"
8
7
  ],
9
8
  "frontmatter": "name: naver-news-search\ndescription: 네이버 검색 Open API 뉴스 검색(news.json)을 k-skill-proxy 경유로 조회해 최신 뉴스 기사 제목·발행시각·링크·요약을 보수적으로 정리한다. 사용자는 별도 API 키 발급 없이 호출한다.\nlicense: MIT\nmetadata:\n category: information\n locale: ko-KR\n phase: v1"
@@ -3,8 +3,7 @@
3
3
  "description": "국민건강보험공단 장기요양기관·건강검진기관을 조회하고, 돌쇠에서는 공식 연락·예약 가능 표면까지 이어간다.",
4
4
  "profiles": [
5
5
  "proxy",
6
- "vault",
7
- "action:booking"
6
+ "lookup"
8
7
  ],
9
8
  "frontmatter": "name: nhis-care-checkup-search\ndescription: 국민건강보험공단 장기요양기관·건강검진기관을 조회하고, 돌쇠에서는 공식 연락·예약 가능 표면까지 이어간다.\nlicense: MIT\nmetadata:\n category: healthcare\n locale: ko-KR\n phase: v1"
10
9
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  - 인터넷 연결
20
20
  - `python3`
21
- - 설치된 skill payload 안에 `scripts/nts_business_registration.py` helper 포함
21
+ - `@nomadamas/k-skill` CLI에 번들된 `scripts/nts_business_registration.py` helper
22
22
  - hosted/self-host `k-skill-proxy`의 `/v1/nts-business/status`, `/v1/nts-business/validate` route 접근 가능
23
23
 
24
24
  ## Credential requirements
@@ -78,12 +78,12 @@
78
78
  ## CLI examples
79
79
 
80
80
  ```bash
81
- python3 scripts/nts_business_registration.py status \
81
+ npx -y @nomadamas/k-skill@0 exec nts-business-registration scripts/nts_business_registration.py -- status \
82
82
  --b-no 123-45-67890
83
83
  ```
84
84
 
85
85
  ```bash
86
- python3 scripts/nts_business_registration.py validate \
86
+ npx -y @nomadamas/k-skill@0 exec nts-business-registration scripts/nts_business_registration.py -- validate \
87
87
  --business-json '{"b_no":"123-45-67890","start_dt":"2020-01-31","p_nm":"홍길동","b_nm":"테스트상사"}'
88
88
  ```
89
89
 
@@ -41,7 +41,7 @@
41
41
  ## CLI examples
42
42
 
43
43
  ```bash
44
- python3 nts-tax-delinquency/scripts/nts_tax_delinquency.py --name "○○건설"
44
+ npx -y @nomadamas/k-skill@0 exec nts-tax-delinquency scripts/nts_tax_delinquency.py -- --name "○○건설"
45
45
  ```
46
46
 
47
47
  ## Failure modes
@@ -53,7 +53,7 @@
53
53
  오늘의집 오늘의딜 공개 페이지에서 상품 목록을 가져온다. 기본 정렬은 할인율 높은 순이다.
54
54
 
55
55
  ```bash
56
- python3 ohou-today-deal/scripts/ohou_today_deal.py list --limit 10
56
+ npx -y @nomadamas/k-skill@0 exec ohou-today-deal scripts/ohou_today_deal.py -- list --limit 10
57
57
  ```
58
58
 
59
59
  응답 예시:
@@ -95,7 +95,7 @@ python3 ohou-today-deal/scripts/ohou_today_deal.py list --limit 10
95
95
  `bestDiscountPrice.discountRate`(쿠폰/결제혜택 반영 할인율)가 있으면 우선 사용하고, 없으면 상품 기본 `discountRate`를 사용한다.
96
96
 
97
97
  ```bash
98
- python3 ohou-today-deal/scripts/ohou_today_deal.py list \
98
+ npx -y @nomadamas/k-skill@0 exec ohou-today-deal scripts/ohou_today_deal.py -- list \
99
99
  --sort discount \
100
100
  --limit 5
101
101
  ```
@@ -107,7 +107,7 @@ python3 ohou-today-deal/scripts/ohou_today_deal.py list \
107
107
  상품명 또는 브랜드에 키워드가 포함된 상품만 걸러내고, 최소 할인율과 무료배송 조건을 조합할 수 있다.
108
108
 
109
109
  ```bash
110
- python3 ohou-today-deal/scripts/ohou_today_deal.py list \
110
+ npx -y @nomadamas/k-skill@0 exec ohou-today-deal scripts/ohou_today_deal.py -- list \
111
111
  --query 러그 \
112
112
  --min-discount 30 \
113
113
  --free-delivery \
@@ -119,7 +119,7 @@ python3 ohou-today-deal/scripts/ohou_today_deal.py list \
119
119
  실제 네트워크 없이 저장된 HTML/JSON 파일로 동일한 파싱을 테스트한다.
120
120
 
121
121
  ```bash
122
- python3 ohou-today-deal/scripts/ohou_today_deal.py list \
122
+ npx -y @nomadamas/k-skill@0 exec ohou-today-deal scripts/ohou_today_deal.py -- list \
123
123
  --html-file ./today-deals.html \
124
124
  --limit 3
125
125
  ```
File without changes
@@ -57,21 +57,21 @@ KSKILL_POPBILL_USER_ID=
57
57
 
58
58
  ```bash
59
59
  # 시크릿 파일 권한과 필수 env 존재 확인. 실제 secret 값은 출력하지 않는다.
60
- uv run popbill/scripts/popbill_cli.py config-check
60
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- config-check
61
61
 
62
62
  # 특정 SDK service method 목록과 approval 필요 여부 확인
63
- uv run popbill/scripts/popbill_cli.py methods taxinvoice
64
- uv run popbill/scripts/popbill_cli.py methods kakao
63
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- methods taxinvoice
64
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- methods kakao
65
65
 
66
66
  # 안전한 SDK 객체 템플릿 출력
67
- uv run popbill/scripts/popbill_cli.py object-template taxinvoice
68
- uv run popbill/scripts/popbill_cli.py object-template cashbill
67
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- object-template taxinvoice
68
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- object-template cashbill
69
69
 
70
70
  # 테스트 환경에서 안전한 회원/파트너 잔액 smoke test
71
- uv run popbill/scripts/popbill_cli.py health taxinvoice
71
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- health taxinvoice
72
72
 
73
73
  # 휴폐업 단건 조회
74
- uv run popbill/scripts/popbill_cli.py closedown-check --target-corp-num 123-45-67890
74
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- closedown-check --target-corp-num 123-45-67890
75
75
  ```
76
76
 
77
77
  ## Generic SDK call
@@ -79,7 +79,7 @@ uv run popbill/scripts/popbill_cli.py closedown-check --target-corp-num 123-45-6
79
79
  전체 Popbill SDK 기능은 아래 형태로 호출한다.
80
80
 
81
81
  ```bash
82
- uv run popbill/scripts/popbill_cli.py call <service> <method> \
82
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- call <service> <method> \
83
83
  --args-json '["@corp", "arg2"]' \
84
84
  --kwargs-json '{"UserID":"optional-user"}'
85
85
  ```
@@ -116,7 +116,7 @@ uv run popbill/scripts/popbill_cli.py call <service> <method> \
116
116
  발행·전송·삭제·취소처럼 되돌리기 어려운 동작은 사용자의 현재 턴 승인을 받은 뒤에만 실행한다.
117
117
 
118
118
  ```bash
119
- uv run popbill/scripts/popbill_cli.py call taxinvoice registIssue \
119
+ npx -y @nomadamas/k-skill@0 exec popbill scripts/popbill_cli.py -- call taxinvoice registIssue \
120
120
  --args-json '["@corp", {"__kind__":"taxinvoice", "...":"..."}]' \
121
121
  --yes-i-understand
122
122
  ```
@@ -3,7 +3,6 @@
3
3
  "description": "Korean apartment/officetel/villa/single-house real transaction price and rent lookups via k-skill-proxy. Based on tae0y's real-estate-mcp and MOLIT public data APIs.",
4
4
  "profiles": [
5
5
  "proxy",
6
- "vault",
7
6
  "lookup"
8
7
  ],
9
8
  "frontmatter": "name: real-estate-search\ndescription: Korean apartment/officetel/villa/single-house real transaction price and rent lookups via k-skill-proxy. Based on tae0y's real-estate-mcp and MOLIT public data APIs.\nlicense: MIT\nmetadata:\n category: real-estate\n locale: ko-KR\n phase: v1"
@@ -2,8 +2,9 @@
2
2
  "name": "s2b-notice-search",
3
3
  "description": "S2B 학교장터 공개 고객 공고/견적요청 목록을 브라우저 우선으로 조회하고 fixture HTML을 파싱해 공고 메타데이터를 정리한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.",
4
4
  "profiles": [
5
+ "vault",
5
6
  "browser",
6
- "hard-boundary"
7
+ "legal"
7
8
  ],
8
9
  "frontmatter": "name: s2b-notice-search\ndescription: S2B 학교장터 공개 고객 공고/견적요청 목록을 브라우저 우선으로 조회하고 fixture HTML을 파싱해 공고 메타데이터를 정리한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: procurement\n locale: ko-KR\n phase: v1"
9
10
  }
@@ -2,8 +2,9 @@
2
2
  "name": "saramin-talent-search",
3
3
  "description": "사람인 기업회원 인재풀 로그인 세션에서 마스킹된 후보 정보를 검색·비교해 유료 열람 전 shortlist를 만듭니다. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.",
4
4
  "profiles": [
5
+ "vault",
5
6
  "browser",
6
- "action:communication"
7
+ "action:recruiting"
7
8
  ],
8
9
  "frontmatter": "name: saramin-talent-search\ndescription: 사람인 기업회원 인재풀 로그인 세션에서 마스킹된 후보 정보를 검색·비교해 유료 열람 전 shortlist를 만듭니다. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.\nlicense: MIT\nmetadata:\n category: recruiting\n locale: ko-KR\n phase: v1"
9
10
  }
@@ -22,7 +22,7 @@
22
22
  ## Single entrypoint
23
23
 
24
24
  ```bash
25
- python3 "$SKILL_DIR/scripts/seoul_bike.py" <subcommand> [args]
25
+ npx -y @nomadamas/k-skill@0 exec seoul-bike scripts/seoul_bike.py -- <subcommand> [args]
26
26
  ```
27
27
 
28
28
  첫 사용 시 `Bash(python3 *seoul_bike.py:*)` 패턴 한 번만 승인하면 이후 호출은 모두 자동 허용된다.
@@ -40,7 +40,7 @@ python3 "$SKILL_DIR/scripts/seoul_bike.py" <subcommand> [args]
40
40
  ### 1. 현재 위치 주변 대여소 조회
41
41
 
42
42
  ```bash
43
- python3 "$SKILL_DIR/scripts/seoul_bike.py" nearby --lat 37.5717 --lon 126.9763 --radius-m 500
43
+ npx -y @nomadamas/k-skill@0 exec seoul-bike scripts/seoul_bike.py -- nearby --lat 37.5717 --lon 126.9763 --radius-m 500
44
44
  ```
45
45
 
46
46
  요약 항목:
@@ -54,7 +54,7 @@ python3 "$SKILL_DIR/scripts/seoul_bike.py" nearby --lat 37.5717 --lon 126.9763 -
54
54
  ### 2. 대여소 이름 검색
55
55
 
56
56
  ```bash
57
- python3 "$SKILL_DIR/scripts/seoul_bike.py" search "광화문" --limit 5
57
+ npx -y @nomadamas/k-skill@0 exec seoul-bike scripts/seoul_bike.py -- search "광화문" --limit 5
58
58
  ```
59
59
 
60
60
  ### 3. Proxy endpoints
File without changes
@@ -3,7 +3,6 @@
3
3
  "description": "서울 따릉이 실시간 대여소의 대여 가능 자전거와 빈 거치대를 좌표 주변 또는 대여소 이름으로 조회한다.",
4
4
  "profiles": [
5
5
  "proxy",
6
- "vault",
7
6
  "lookup"
8
7
  ],
9
8
  "frontmatter": "name: seoul-bike\ndescription: 서울 따릉이 실시간 대여소의 대여 가능 자전거와 빈 거치대를 좌표 주변 또는 대여소 이름으로 조회한다.\nlicense: MIT\nmetadata:\n category: transit\n locale: ko-KR\n phase: v1"
@@ -26,7 +26,7 @@
26
26
 
27
27
  ```bash
28
28
  # macOS / Linux / Git-bash
29
- python3 "$SKILL_DIR/scripts/seoul_density.py" <subcommand> [args]
29
+ npx -y @nomadamas/k-skill@0 exec seoul-density scripts/seoul_density.py -- <subcommand> [args]
30
30
 
31
31
  # Windows (PowerShell): py 런처 또는 python
32
32
  py -3 "$env:SKILL_DIR\scripts\seoul_density.py" <subcommand> [args]
@@ -51,7 +51,7 @@ py -3 "$env:SKILL_DIR\scripts\seoul_density.py" <subcommand> [args]
51
51
  사용자가 "홍대 인파"처럼 모호하게 말하면 먼저 후보를 확인한다.
52
52
 
53
53
  ```bash
54
- python3 "$SKILL_DIR/scripts/seoul_density.py" match "홍대" --json
54
+ npx -y @nomadamas/k-skill@0 exec seoul-density scripts/seoul_density.py -- match "홍대" --json
55
55
  # → ["홍대 관광특구", "홍대입구역(2호선)"]
56
56
  ```
57
57
 
@@ -63,7 +63,7 @@ python3 "$SKILL_DIR/scripts/seoul_density.py" match "홍대" --json
63
63
 
64
64
  ```bash
65
65
  # macOS / Linux / Git-bash
66
- python3 "$SKILL_DIR/scripts/seoul_density.py" query "강남역"
66
+ npx -y @nomadamas/k-skill@0 exec seoul-density scripts/seoul_density.py -- query "강남역"
67
67
 
68
68
  # Windows PowerShell
69
69
  py -3 "$env:SKILL_DIR\scripts\seoul_density.py" query "강남역"
@@ -82,7 +82,7 @@ py -3 "$env:SKILL_DIR\scripts\seoul_density.py" query "강남역"
82
82
  기계적 후처리가 필요하면 `--json` 플래그를 쓴다:
83
83
 
84
84
  ```bash
85
- python3 "$SKILL_DIR/scripts/seoul_density.py" query "강남역" --json
85
+ npx -y @nomadamas/k-skill@0 exec seoul-density scripts/seoul_density.py -- query "강남역" --json
86
86
  ```
87
87
 
88
88
  자동 매칭을 끄고 싶으면 `--no-auto`를 쓴다.
@@ -3,7 +3,6 @@
3
3
  "description": "서울 주요 121개 핫스팟 장소의 실시간 혼잡도와 인구 현황을 조회한다. 지금 강남역이 얼마나 붐비는지, 홍대 인파가 얼마나 되는지 물어볼 때 사용한다.",
4
4
  "profiles": [
5
5
  "proxy",
6
- "vault",
7
6
  "lookup"
8
7
  ],
9
8
  "frontmatter": "name: seoul-density\ndescription: 서울 주요 121개 핫스팟 장소의 실시간 혼잡도와 인구 현황을 조회한다. 지금 강남역이 얼마나 붐비는지, 홍대 인파가 얼마나 되는지 물어볼 때 사용한다.\nlicense: MIT\nmetadata:\n category: utility\n locale: ko-KR\n phase: v1"
@@ -66,7 +66,7 @@ python3 -m pip install SRTrain
66
66
  먼저 helper 로 조회해서 후보를 요약한다.
67
67
 
68
68
  ```bash
69
- python3 scripts/srt_booking.py search 수서 부산 20260328 080000 --time-limit 120000 --limit 5
69
+ npx -y @nomadamas/k-skill@0 exec srt-booking scripts/srt_booking.py -- search 수서 부산 20260328 080000 --time-limit 120000 --limit 5
70
70
  ```
71
71
 
72
72
  ### 3. Summarize options before side effects
@@ -82,19 +82,19 @@ python3 scripts/srt_booking.py search 수서 부산 20260328 080000 --time-limit
82
82
  `search` 의 좌석 가능 여부는 열차 단위 플래그다. 사용자가 "남은 좌석 번호", "호차별 좌석", "특정 좌석", "창측/순방향 자리", "예약 전에 자리 확인"처럼 구체적인 좌석을 물으면 예약 전에 `seats` 를 호출한다.
83
83
 
84
84
  ```bash
85
- python3 scripts/srt_booking.py seats 수서 부산 20260328 080000 --train-id <train_id>
85
+ npx -y @nomadamas/k-skill@0 exec srt-booking scripts/srt_booking.py -- seats 수서 부산 20260328 080000 --train-id <train_id>
86
86
  ```
87
87
 
88
88
  특정 호차의 빈 좌석만 확인하려면 `--car-no` 와 `--available-only` 를 쓴다.
89
89
 
90
90
  ```bash
91
- python3 scripts/srt_booking.py seats 수서 부산 20260328 080000 --train-id <train_id> --car-no 5 --available-only
91
+ npx -y @nomadamas/k-skill@0 exec srt-booking scripts/srt_booking.py -- seats 수서 부산 20260328 080000 --train-id <train_id> --car-no 5 --available-only
92
92
  ```
93
93
 
94
94
  특정 좌석이 비었는지 확인하려면 `--seat` 를 붙인다.
95
95
 
96
96
  ```bash
97
- python3 scripts/srt_booking.py seats 수서 부산 20260328 080000 --train-id <train_id> --car-no 5 --seat 11A
97
+ npx -y @nomadamas/k-skill@0 exec srt-booking scripts/srt_booking.py -- seats 수서 부산 20260328 080000 --train-id <train_id> --car-no 5 --seat 11A
98
98
  ```
99
99
 
100
100
  특정 호차를 지정하지 않으면 가운데 호차부터 탐색한다. `--car-priority center|low|high` 로 호차 탐색 순서를 바꾸고, `--seat-priority forward-window|window-forward|row-low` 로 좌석 정렬 우선순위를 바꾼다.
@@ -47,7 +47,7 @@ LOST112 검색 폼에서 확인되는 핵심 필드는 아래와 같다.
47
47
  repo helper를 그대로 써도 된다.
48
48
 
49
49
  ```bash
50
- python3 scripts/subway_lost_property.py \
50
+ npx -y @nomadamas/k-skill@0 exec subway-lost-property scripts/subway_lost_property.py -- \
51
51
  --station 강남역 \
52
52
  --item 지갑 \
53
53
  --days 14
@@ -58,7 +58,7 @@ helper는 기본적으로 `SITE=V` 를 사용하고, 역명/물품명/기간을
58
58
  ### 3) Optionally verify live reachability
59
59
 
60
60
  ```bash
61
- python3 scripts/subway_lost_property.py \
61
+ npx -y @nomadamas/k-skill@0 exec subway-lost-property scripts/subway_lost_property.py -- \
62
62
  --station 강남역 \
63
63
  --item 지갑 \
64
64
  --days 14 \
@@ -2,7 +2,7 @@
2
2
  "name": "subway-lost-property",
3
3
  "description": "Use when the user asks how to look up 지하철 분실물 or 유실물 by 역명/물품명. v1 is an 안내형/하이브리드 skill that structures the official LOST112 + 서울교통공사 flow conservatively. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.",
4
4
  "profiles": [
5
- "action:communication"
5
+ "lookup"
6
6
  ],
7
7
  "frontmatter": "name: subway-lost-property\ndescription: Use when the user asks how to look up 지하철 분실물 or 유실물 by 역명/물품명. v1 is an 안내형/하이브리드 skill that structures the official LOST112 + 서울교통공사 flow conservatively. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.\nlicense: MIT\nmetadata:\n category: transit\n locale: ko-KR\n phase: v1"
8
8
  }
@@ -59,7 +59,7 @@ pip install httpx
59
59
  ### 2. 일정 조회 (`schedule`)
60
60
 
61
61
  ```bash
62
- python3 scripts/ticket_availability.py schedule "https://tickets.interpark.com/goods/26000541"
62
+ npx -y @nomadamas/k-skill@0 exec ticket-availability scripts/ticket_availability.py -- schedule "https://tickets.interpark.com/goods/26000541"
63
63
  ```
64
64
 
65
65
  응답 — Interpark:
@@ -90,7 +90,7 @@ YES24 는 기본 3주 윈도우. 6개월 전체는 `--all-dates` 추가.
90
90
  ### 3. 잔여석 조회 (`seats`)
91
91
 
92
92
  ```bash
93
- python3 scripts/ticket_availability.py seats "interpark:26000541"
93
+ npx -y @nomadamas/k-skill@0 exec ticket-availability scripts/ticket_availability.py -- seats "interpark:26000541"
94
94
  ```
95
95
 
96
96
  응답:
@@ -120,7 +120,7 @@ YES24 응답은 등급별 `price` (노출가) 도 포함:
120
120
  ### 4. 헬스체크 (`health`)
121
121
 
122
122
  ```bash
123
- python3 scripts/ticket_availability.py health
123
+ npx -y @nomadamas/k-skill@0 exec ticket-availability scripts/ticket_availability.py -- health
124
124
  ```
125
125
 
126
126
  응답:
@@ -2,8 +2,9 @@
2
2
  "name": "ticket-availability",
3
3
  "description": "YES24 / 인터파크 공연의 공개 일정 + 등급별 잔여석을 단일 HTTP 호출로 조회 (조회 전용, 예매·결제 없음). 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.",
4
4
  "profiles": [
5
+ "vault",
5
6
  "browser",
6
- "hard-boundary"
7
+ "action:booking"
7
8
  ],
8
9
  "frontmatter": "name: ticket-availability\ndescription: YES24 / 인터파크 공연의 공개 일정 + 등급별 잔여석을 단일 HTTP 호출로 조회 (조회 전용, 예매·결제 없음). 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: lifestyle\n subcategory: ticket\n locale: ko-KR\n phase: v1"
9
10
  }
@@ -2,8 +2,9 @@
2
2
  "name": "yebigun-training",
3
3
  "description": "사용자가 직접 로그인한 예비군 홈페이지(yebigun1.mil.kr) Chrome 세션을 재사용해 이번 훈련 일정/장소를 조회하고, 작년 이전 기록과 비교해 무엇이 달라졌는지 알려준다. 조회 전용이며 로그인이나 연기·보류 신청은 절대 자동화하지 않는다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.",
4
4
  "profiles": [
5
+ "vault",
5
6
  "browser",
6
- "hard-boundary"
7
+ "legal"
7
8
  ],
8
9
  "frontmatter": "name: yebigun-training\ndescription: 사용자가 직접 로그인한 예비군 홈페이지(yebigun1.mil.kr) Chrome 세션을 재사용해 이번 훈련 일정/장소를 조회하고, 작년 이전 기록과 비교해 무엇이 달라졌는지 알려준다. 조회 전용이며 로그인이나 연기·보류 신청은 절대 자동화하지 않는다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: legal\n locale: ko-KR\n phase: v1"
9
10
  }
@@ -98,8 +98,8 @@ PY
98
98
  저장소에는 같은 흐름을 감싼 실행 가능한 helper가 포함되어 있다.
99
99
 
100
100
  ```bash
101
- python3 scripts/zipcode_search.py "서울특별시 강남구 테헤란로 123"
102
- ./scripts/zipcode_search.py "서울특별시 강남구 테헤란로 123"
101
+ npx -y @nomadamas/k-skill@0 exec zipcode-search scripts/zipcode_search.py -- "서울특별시 강남구 테헤란로 123"
102
+ npx -y @nomadamas/k-skill@0 exec zipcode-search scripts/zipcode_search.py -- "서울특별시 강남구 테헤란로 123"
103
103
  ```
104
104
 
105
105
  예시 출력:
File without changes