@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.
- package/bin/k-skill.js +35 -5
- package/package.json +2 -2
- package/skills/assembly-bill-vote-search/skill.json +0 -1
- package/skills/biz-health-check/instruction.md +2 -2
- package/skills/biz-health-check/skill.json +0 -1
- package/skills/bok-ecos-stats/instruction.md +8 -8
- package/skills/bok-ecos-stats/skill.json +0 -1
- package/skills/building-register-search/instruction.md +6 -6
- package/skills/building-register-search/scripts/building_register.py +0 -0
- package/skills/cheap-gas-nearby/skill.json +0 -1
- package/skills/corporate-registration-consulting/scripts/fill_official_hwp.py +0 -0
- package/skills/corporate-registration-consulting/skill.json +3 -1
- package/skills/coupang-product-search/instruction.md +10 -10
- package/skills/coupang-product-search/scripts/coupang_partners_mcp.py +0 -0
- package/skills/court-auction-notice-search/skill.json +2 -1
- package/skills/court-payment-order-assistant/skill.json +1 -1
- package/skills/d2b-notice-search/skill.json +2 -1
- package/skills/daangn-cars-search/instruction.md +3 -3
- package/skills/daangn-cars-search/scripts/daangn_cars.py +0 -0
- package/skills/daangn-jobs-search/instruction.md +2 -2
- package/skills/daangn-jobs-search/scripts/daangn_jobs.py +0 -0
- package/skills/daangn-jobs-search/skill.json +3 -1
- package/skills/daangn-realty-search/instruction.md +1 -1
- package/skills/daangn-realty-search/scripts/daangn_realty.py +0 -0
- package/skills/daangn-used-goods-search/instruction.md +2 -2
- package/skills/daangn-used-goods-search/scripts/daangn_used_goods.py +0 -0
- package/skills/daishin-report-search/skill.json +0 -1
- package/skills/danawa-price-search/instruction.md +4 -4
- package/skills/danawa-price-search/scripts/danawa_search.py +0 -0
- package/skills/ev-charger-nearby/instruction.md +5 -5
- package/skills/ev-charger-nearby/skill.json +1 -2
- package/skills/express-bus-booking/instruction.md +2 -2
- package/skills/express-bus-booking/scripts/kobus_express_booking.py +0 -0
- package/skills/express-bus-booking/skill.json +2 -0
- package/skills/flight-ticket-search/instruction.md +7 -7
- package/skills/foresttrip-vacancy/instruction.md +7 -7
- package/skills/foresttrip-vacancy/scripts/run_foresttrip_vacancy.py +0 -0
- package/skills/fsc-corporate-info/instruction.md +1 -1
- package/skills/fsc-corporate-info/skill.json +0 -1
- package/skills/g2b-order-plan-search/instruction.md +2 -2
- package/skills/g2b-order-plan-search/skill.json +2 -1
- package/skills/g2b-sanctioned-supplier/instruction.md +1 -1
- package/skills/g2b-sanctioned-supplier/skill.json +0 -1
- package/skills/geeknews-search/instruction.md +3 -3
- package/skills/geeknews-search/scripts/geeknews_search.py +0 -0
- package/skills/gov-overseas-trip-report/instruction.md +12 -12
- package/skills/gov-overseas-trip-report/scripts/gov_overseas_trip_report.py +0 -0
- package/skills/han-river-water-level/skill.json +0 -1
- package/skills/highway-traffic-status/instruction.md +2 -2
- package/skills/highway-traffic-status/skill.json +0 -1
- package/skills/household-waste-info/skill.json +0 -1
- package/skills/intercity-bus-booking/instruction.md +3 -3
- package/skills/intercity-bus-booking/scripts/intercity_bus_search.py +0 -0
- package/skills/intercity-bus-booking/skill.json +2 -0
- package/skills/iros-registry-automation/instruction.md +2 -2
- package/skills/iros-registry-automation/skill.json +2 -1
- package/skills/job-posting-match/instruction.md +2 -2
- package/skills/job-posting-match/skill.json +1 -1
- package/skills/jobkorea-talent-search/instruction.md +1 -1
- package/skills/jobkorea-talent-search/scripts/jobkorea_talent_search.py +0 -0
- package/skills/jobkorea-talent-search/skill.json +2 -1
- package/skills/joseon-sillok-search/instruction.md +6 -6
- package/skills/k-skill-cleaner/instruction.md +2 -2
- package/skills/k-skill-cleaner/scripts/k_skill_cleaner.py +0 -0
- package/skills/k-skill-setup/skill.json +1 -1
- package/skills/kakaotalk-mac/skill.json +1 -1
- package/skills/keris-academic-search/instruction.md +4 -4
- package/skills/korea-weather/skill.json +0 -1
- package/skills/korean-character-count/instruction.md +8 -8
- package/skills/korean-heritage-search/instruction.md +5 -5
- package/skills/korean-humanizer/instruction.md +1 -1
- package/skills/korean-jangbu-for/instruction.md +3 -3
- package/skills/korean-jangbu-for/scripts/install.sh +0 -0
- package/skills/korean-middle-korean/instruction.md +6 -6
- package/skills/korean-middle-korean/scripts/korean_middle_korean.js +0 -0
- package/skills/korean-patent-search/instruction.md +4 -4
- package/skills/korean-privacy-terms/instruction.md +4 -4
- package/skills/korean-privacy-terms/scripts/install.sh +0 -0
- package/skills/korean-scholarship-search/instruction.md +10 -10
- package/skills/korean-slang-writing/instruction.md +8 -8
- package/skills/korean-spell-check/instruction.md +3 -3
- package/skills/korean-spell-check/skill.json +0 -1
- package/skills/korean-stock-search/skill.json +0 -1
- package/skills/korean-transit-route/skill.json +0 -1
- package/skills/kosis-stats/instruction.md +13 -26
- package/skills/kr-whois-lookup/skill.json +1 -2
- package/skills/kstartup-search/instruction.md +8 -8
- package/skills/lck-analytics/instruction.md +4 -4
- package/skills/lck-analytics/scripts/_lib.js +0 -0
- package/skills/lck-analytics/scripts/analyze-live-game.js +0 -0
- package/skills/lck-analytics/scripts/build-match-report.js +0 -0
- package/skills/lck-analytics/scripts/sync-oracle.js +0 -0
- package/skills/localdata-business-status/instruction.md +2 -2
- package/skills/mfds-drug-safety/instruction.md +3 -3
- package/skills/mfds-drug-safety/skill.json +0 -1
- package/skills/mfds-food-safety/instruction.md +6 -6
- package/skills/mfds-food-safety/skill.json +0 -1
- package/skills/myrealtrip-search/instruction.md +11 -11
- package/skills/myrealtrip-search/scripts/myrealtrip_mcp.py +0 -0
- package/skills/national-pension-workplace/instruction.md +1 -1
- package/skills/national-pension-workplace/skill.json +0 -1
- package/skills/naver-ad-performance/instruction.md +7 -7
- package/skills/naver-blog-research/instruction.md +4 -4
- package/skills/naver-news-search/skill.json +0 -1
- package/skills/nhis-care-checkup-search/skill.json +1 -2
- package/skills/nts-business-registration/instruction.md +3 -3
- package/skills/nts-tax-delinquency/instruction.md +1 -1
- package/skills/ohou-today-deal/instruction.md +4 -4
- package/skills/ohou-today-deal/scripts/ohou_today_deal.py +0 -0
- package/skills/popbill/instruction.md +9 -9
- package/skills/real-estate-search/skill.json +0 -1
- package/skills/s2b-notice-search/skill.json +2 -1
- package/skills/saramin-talent-search/skill.json +2 -1
- package/skills/seoul-bike/instruction.md +3 -3
- package/skills/seoul-bike/scripts/seoul_bike.py +0 -0
- package/skills/seoul-bike/skill.json +0 -1
- package/skills/seoul-density/instruction.md +4 -4
- package/skills/seoul-density/skill.json +0 -1
- package/skills/srt-booking/instruction.md +4 -4
- package/skills/subway-lost-property/instruction.md +2 -2
- package/skills/subway-lost-property/scripts/subway_lost_property.py +0 -0
- package/skills/subway-lost-property/skill.json +1 -1
- package/skills/ticket-availability/instruction.md +3 -3
- package/skills/ticket-availability/skill.json +2 -1
- package/skills/yebigun-training/skill.json +2 -1
- package/skills/zipcode-search/instruction.md +2 -2
- package/skills/zipcode-search/scripts/zipcode_search.py +0 -0
- package/src/assemble.js +147 -4
- package/src/execute.js +81 -0
- package/templates/action-recruiting.md +5 -0
- package/templates/legal.md +6 -0
- package/templates/operations.md +3 -0
- package/templates/action-communication.md +0 -5
- package/templates/hard-boundary.md +0 -3
package/bin/k-skill.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
-
const {
|
|
4
|
+
const {
|
|
5
|
+
assemble,
|
|
6
|
+
bundledFiles,
|
|
7
|
+
listSkills,
|
|
8
|
+
readBundledAsset,
|
|
9
|
+
resolveBundledAsset,
|
|
10
|
+
} = require("../src/assemble");
|
|
11
|
+
const { runBundledScript } = require("../src/execute");
|
|
5
12
|
const { detectRuntime } = require("../src/detect");
|
|
6
13
|
|
|
7
14
|
function usage() {
|
|
@@ -10,6 +17,10 @@ function usage() {
|
|
|
10
17
|
"",
|
|
11
18
|
"Commands:",
|
|
12
19
|
" instruct <skill> Print runtime-aware assembled instructions for a skill",
|
|
20
|
+
" exec <skill> <script> -- [args...]",
|
|
21
|
+
" Execute a bundled scripts/ helper with its declared shebang",
|
|
22
|
+
" read <skill> <file> Read a bundled references/ or text scripts/ asset",
|
|
23
|
+
" path <skill> <file> Print the absolute path of a bundled asset",
|
|
13
24
|
" files <skill> Print local paths of the skill's bundled helper files",
|
|
14
25
|
" list List bundled skills",
|
|
15
26
|
"",
|
|
@@ -19,7 +30,7 @@ function usage() {
|
|
|
19
30
|
}
|
|
20
31
|
|
|
21
32
|
function main() {
|
|
22
|
-
const [command, skillName] = process.argv.slice(2);
|
|
33
|
+
const [command, skillName, assetPath, ...rawArgs] = process.argv.slice(2);
|
|
23
34
|
|
|
24
35
|
if (!command || command === "--help" || command === "-h") {
|
|
25
36
|
console.log(usage());
|
|
@@ -31,7 +42,7 @@ function main() {
|
|
|
31
42
|
return 0;
|
|
32
43
|
}
|
|
33
44
|
|
|
34
|
-
if (
|
|
45
|
+
if (["instruct", "files", "exec", "read", "path"].includes(command)) {
|
|
35
46
|
if (!skillName) {
|
|
36
47
|
console.error(`error: "${command}" requires a skill name\n\n${usage()}`);
|
|
37
48
|
return 1;
|
|
@@ -40,12 +51,31 @@ function main() {
|
|
|
40
51
|
try {
|
|
41
52
|
if (command === "instruct") {
|
|
42
53
|
process.stdout.write(assemble(skillName, detectRuntime()));
|
|
43
|
-
} else {
|
|
54
|
+
} else if (command === "files") {
|
|
44
55
|
for (const filePath of bundledFiles(skillName)) console.log(filePath);
|
|
56
|
+
} else {
|
|
57
|
+
if (!assetPath) {
|
|
58
|
+
console.error(`error: "${command}" requires an asset path\n\n${usage()}`);
|
|
59
|
+
return 1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (command === "exec") {
|
|
63
|
+
const args = rawArgs[0] === "--" ? rawArgs.slice(1) : rawArgs;
|
|
64
|
+
return runBundledScript(skillName, assetPath, args).status;
|
|
65
|
+
}
|
|
66
|
+
if (command === "read") {
|
|
67
|
+
process.stdout.write(readBundledAsset(skillName, assetPath));
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
console.log(resolveBundledAsset(skillName, assetPath));
|
|
45
71
|
}
|
|
46
72
|
return 0;
|
|
47
73
|
} catch (error) {
|
|
48
|
-
if (
|
|
74
|
+
if (
|
|
75
|
+
["EUNKNOWNSKILL", "EASSETPATH", "EASSETNOTFOUND", "EUNSUPPORTEDSCRIPT"].includes(
|
|
76
|
+
error.code,
|
|
77
|
+
)
|
|
78
|
+
) {
|
|
49
79
|
console.error(`error: ${error.message}`);
|
|
50
80
|
return 1;
|
|
51
81
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nomadamas/k-skill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "k-skill unified CLI: assembles runtime-aware skill instructions and ships bundled helper files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"cli"
|
|
32
32
|
],
|
|
33
33
|
"scripts": {
|
|
34
|
-
"lint": "node --check bin/k-skill.js && node --check src/assemble.js && node --check src/detect.js && node --check test/cli.test.js",
|
|
34
|
+
"lint": "node --check bin/k-skill.js && node --check src/assemble.js && node --check src/detect.js && node --check src/execute.js && node --check test/cli.test.js",
|
|
35
35
|
"test": "node --test"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"description": "열린국회정보 Open API를 k-skill-proxy 경유로 호출해 의안 검색·상세와 국회의원 본회의 표결정보를 조회한다. 조회 전용.",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"vault",
|
|
7
6
|
"lookup"
|
|
8
7
|
],
|
|
9
8
|
"frontmatter": "name: assembly-bill-vote-search\ndescription: 열린국회정보 Open API를 k-skill-proxy 경유로 호출해 의안 검색·상세와 국회의원 본회의 표결정보를 조회한다. 조회 전용.\nlicense: MIT\nmetadata:\n category: civic\n locale: ko-KR\n phase: v1"
|
|
@@ -48,10 +48,10 @@
|
|
|
48
48
|
## CLI examples
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
|
|
51
|
+
npx -y @nomadamas/k-skill@0 exec biz-health-check scripts/biz_health_check.py -- 124-81-00998 --name "삼성전자"
|
|
52
52
|
|
|
53
53
|
# 동네 사업장까지 포함
|
|
54
|
-
|
|
54
|
+
npx -y @nomadamas/k-skill@0 exec biz-health-check scripts/biz_health_check.py -- --name "호텔샬롬" --region 제주제주시 --industry 숙박업
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
## Output
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"description": "사업자등록번호 하나로 \"이 사업자, 실제 문제 없나\"를 확인한다 — 국세청 사업자등록 상태·국민연금 가입 사업장·국세 체납 명단·금융위 법인개요·조달청 부정당제재·지방행정 인허가 영업상태를 무료 공공 데이터로 교차 조회해 사실만 병렬하는 실사 리포트(점수·등급·위험 판정 없음).",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"vault",
|
|
7
6
|
"lookup"
|
|
8
7
|
],
|
|
9
8
|
"frontmatter": "name: biz-health-check\ndescription: 사업자등록번호 하나로 \"이 사업자, 실제 문제 없나\"를 확인한다 — 국세청 사업자등록 상태·국민연금 가입 사업장·국세 체납 명단·금융위 법인개요·조달청 부정당제재·지방행정 인허가 영업상태를 무료 공공 데이터로 교차 조회해 사실만 병렬하는 실사 리포트(점수·등급·위험 판정 없음).\nlicense: MIT\nmetadata:\n category: business\n locale: ko-KR\n phase: v1"
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
### 1. 자주 쓰는 지표는 alias로 바로 조회
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- search --alias 기준금리 --start 20260101 --end 20260721 --text
|
|
44
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- search --alias 원달러환율 --start 20260701 --end 20260721 --text
|
|
45
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- search --alias 소비자물가지수 --start 202501 --end 202606 --text
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
지원 alias: `기준금리`, `원달러환율`, `소비자물가지수`(=`cpi`), `M2`(=`통화량`), `국고채3년`.
|
|
@@ -52,22 +52,22 @@ python3 bok-ecos-stats/scripts/bok_ecos.py search --alias 소비자물가지수
|
|
|
52
52
|
### 2. 최신 핵심지표 한 번에 보기
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
|
|
55
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- key --limit 10 --text
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
### 3. 임의 통계표 탐색 → 항목 확인 → 시계열 조회
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- tables --text
|
|
62
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- items --stat-code 722Y001 --text
|
|
63
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- search --stat-code 722Y001 --cycle D \
|
|
64
64
|
--start 20260101 --end 20260721 --item-code 0101000 --text
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
### 4. 용어가 낯설면 사전 검색
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
npx -y @nomadamas/k-skill@0 exec bok-ecos-stats scripts/bok_ecos.py -- word --query 소비자물가지수 --text
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
`--text` 없이 실행하면 구조화 JSON(`result`, `rows`, `source`)을 출력한다.
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"description": "한국은행 ECOS Open API로 기준금리, 환율, 소비자물가지수, 통화량 등 중앙은행 경제통계 시계열과 100대 핵심지표를 조회한다. Use when the user asks 기준금리, 환율 추이, 물가지수, M2, 국고채 금리, 거시경제 통계. Not for 주식 시세(korean-stock-search) or KOSIS 일반 통계(kosis-stats).",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"vault",
|
|
7
6
|
"lookup"
|
|
8
7
|
],
|
|
9
8
|
"frontmatter": "name: bok-ecos-stats\ndescription: 한국은행 ECOS Open API로 기준금리, 환율, 소비자물가지수, 통화량 등 중앙은행 경제통계 시계열과 100대 핵심지표를 조회한다. Use when the user asks 기준금리, 환율 추이, 물가지수, M2, 국고채 금리, 거시경제 통계. Not for 주식 시세(korean-stock-search) or KOSIS 일반 통계(kosis-stats).\nlicense: MIT\nmetadata:\n category: data\n locale: ko-KR\n phase: v1"
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
## Commands
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
npx -y @nomadamas/k-skill@0 exec building-register-search scripts/building_register.py -- title --address '서울 강남구 역삼동 123-4'
|
|
22
|
+
npx -y @nomadamas/k-skill@0 exec building-register-search scripts/building_register.py -- title --pnu 1168010100101230004
|
|
23
|
+
npx -y @nomadamas/k-skill@0 exec building-register-search scripts/building_register.py -- title --sigungu-cd 11680 --bjdong-cd 10100 --plat-gb-cd 0 --bun 123 --ji 4
|
|
24
|
+
npx -y @nomadamas/k-skill@0 exec building-register-search scripts/building_register.py -- title --pnu 1168010100101230004 --json
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
PNU는 `sigunguCd(5) + bjdongCd(5) + 토지구분(1) + bun(4) + ji(4)`의 19자리다. PNU 토지구분 `1`(일반 토지)은 건축물대장 API `platGbCd=0`, `2`(산)는 `platGbCd=1`로 변환한다. 개별 필드나 주소 결과로 PNU를 구성할 때도 API 값 `0`은 PNU `1`, API 값 `1`은 PNU `2`로 역변환한다. `--plat-gb-cd`를 직접 입력할 때는 PNU 값이 아니라 건축물대장 API 값이며 공식 값 `0`, `1`, `2`를 허용한다. API 값 `2`는 그대로 조회에 전달하되 대응하는 표준 PNU 토지구분이 없으므로 PNU를 구성하지 않는다. 개별 입력의 `bun`, `ji`는 4자리로 왼쪽 zero-padding되며 `ji` 생략 시 `0000`이다. `pageNo` 기본값은 1, `numOfRows` 기본값은 10이고 최대 100이다.
|
|
@@ -31,8 +31,8 @@ PNU는 `sigunguCd(5) + bjdongCd(5) + 토지구분(1) + bun(4) + ji(4)`의 19자
|
|
|
31
31
|
## Direct mode
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
npx -y @nomadamas/k-skill@0 exec building-register-search scripts/building_register.py -- title --pnu 1168010100101230004 --direct
|
|
35
|
+
npx -y @nomadamas/k-skill@0 exec building-register-search scripts/building_register.py -- title --pnu 1168010100101230004 --direct --dry-run
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
`--direct`는 주소를 받지 않는다. `KSKILL_BUILDING_REGISTER_API_KEY`, 그다음 `DATA_GO_KR_API_KEY`, 마지막으로 `~/.config/k-skill/secrets.env`의 같은 키 순서로 찾는다. Kakao direct credential은 사용하지 않는다. `--dry-run`은 실제 키를 `REDACTED`로 가린다.
|
|
File without changes
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"description": "Use when the user asks for nearby cheapest gas stations or 근처 가장 싼 주유소. Always ask the user's current location first, then use Kakao Map anchor resolution plus official Opinet fuel-price APIs.",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"vault",
|
|
7
6
|
"lookup"
|
|
8
7
|
],
|
|
9
8
|
"frontmatter": "name: cheap-gas-nearby\ndescription: Use when the user asks for nearby cheapest gas stations or 근처 가장 싼 주유소. Always ask the user's current location first, then use Kakao Map anchor resolution plus official Opinet fuel-price APIs.\nlicense: MIT\nmetadata:\n category: transport\n locale: ko-KR\n phase: v1"
|
|
File without changes
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
"name": "corporate-registration-consulting",
|
|
3
3
|
"description": "법인등기소/인터넷등기소 상업등기 신청을 처음 하는 사용자를 위해 일반 영리 주식회사 발기설립 절차, 정관·첨부서류 실제 HWP 양식 작성, 등록면허세·과밀억제권역 중과 체크, rhwp 기반 순차 검토 흐름을 참고용으로 안내한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.",
|
|
4
4
|
"profiles": [
|
|
5
|
-
"
|
|
5
|
+
"vault",
|
|
6
|
+
"browser",
|
|
7
|
+
"legal"
|
|
6
8
|
],
|
|
7
9
|
"frontmatter": "name: corporate-registration-consulting\ndescription: 법인등기소/인터넷등기소 상업등기 신청을 처음 하는 사용자를 위해 일반 영리 주식회사 발기설립 절차, 정관·첨부서류 실제 HWP 양식 작성, 등록면허세·과밀억제권역 중과 체크, rhwp 기반 순차 검토 흐름을 참고용으로 안내한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: legal-documents\n locale: ko-KR"
|
|
8
10
|
}
|
|
@@ -85,18 +85,18 @@ local://coupang-mcp
|
|
|
85
85
|
래퍼는 기본적으로 `~/.cache/k-skill/coupang_partners`에 upstream 저장소를 clone한다. 이미 clone되어 있으면 그대로 사용하고, 최신화가 필요할 때만 `--update`를 붙인다.
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- tools
|
|
89
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- init
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
기존 checkout을 명시하거나 CI/검증에서 네트워크 clone을 막으려면:
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
|
-
|
|
95
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- \
|
|
96
96
|
--repo-dir /path/to/coupang_partners \
|
|
97
97
|
--no-clone \
|
|
98
98
|
tools
|
|
99
|
-
|
|
99
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- \
|
|
100
100
|
--repo-dir /path/to/coupang_partners \
|
|
101
101
|
--no-clone \
|
|
102
102
|
init
|
|
@@ -108,19 +108,19 @@ python3 coupang-product-search/scripts/coupang_partners_mcp.py \
|
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
110
|
# 일반 검색 (키 없이도 hosted fallback으로 작동)
|
|
111
|
-
|
|
111
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- search "32인치 4K 모니터"
|
|
112
112
|
|
|
113
113
|
# 로켓배송 필터
|
|
114
|
-
|
|
114
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- rocket "에어팟"
|
|
115
115
|
|
|
116
116
|
# 가격대 검색
|
|
117
|
-
|
|
117
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- budget "키보드" --max-price 100000
|
|
118
118
|
|
|
119
119
|
# 비교
|
|
120
|
-
|
|
120
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- compare "아이패드 vs 갤럭시탭"
|
|
121
121
|
|
|
122
122
|
# 골드박스 (운영자 키가 필요한 upstream 경로)
|
|
123
|
-
|
|
123
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- goldbox
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
### 4. (optional) hosted fallback 강제
|
|
@@ -129,7 +129,7 @@ python3 coupang-product-search/scripts/coupang_partners_mcp.py goldbox
|
|
|
129
129
|
|
|
130
130
|
```bash
|
|
131
131
|
export OPENCLAW_SHOPPING_FORCE_HOSTED=1
|
|
132
|
-
|
|
132
|
+
npx -y @nomadamas/k-skill@0 exec coupang-product-search scripts/coupang_partners_mcp.py -- search "에어팟"
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
### 5. Continue from discovery to cart and checkout in Dolshoi
|
|
File without changes
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
"name": "court-auction-notice-search",
|
|
3
3
|
"description": "Browse 대법원경매정보(courtauction.go.kr) 부동산 매각공고 by 매각기일·법원·기일/기간 입찰, expand each notice into 사건번호·용도·주소·감정평가액·최저매각가, search property items by free conditions(지역·용도·가격·면적·유찰횟수), and look up a case directly by 법원+사건번호. Read-only, slow-by-design (~2s/call) to avoid IP blocks. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.",
|
|
4
4
|
"profiles": [
|
|
5
|
+
"vault",
|
|
5
6
|
"browser",
|
|
6
|
-
"
|
|
7
|
+
"legal"
|
|
7
8
|
],
|
|
8
9
|
"frontmatter": "name: court-auction-notice-search\ndescription: Browse 대법원경매정보(courtauction.go.kr) 부동산 매각공고 by 매각기일·법원·기일/기간 입찰, expand each notice into 사건번호·용도·주소·감정평가액·최저매각가, search property items by free conditions(지역·용도·가격·면적·유찰횟수), and look up a case directly by 법원+사건번호. Read-only, slow-by-design (~2s/call) to avoid IP blocks. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: real-estate\n locale: ko-KR\n phase: v1"
|
|
9
10
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"profiles": [
|
|
5
5
|
"vault",
|
|
6
6
|
"browser",
|
|
7
|
-
"
|
|
7
|
+
"legal"
|
|
8
8
|
],
|
|
9
9
|
"frontmatter": "name: court-payment-order-assistant\ndescription: 법원 전자소송 지급명령 신청을 위해 채권자·채무자·청구금액·청구원인·증빙 정보를 인터뷰하고, 신청서 초안과 공식 전자소송 브라우저 입력 handoff를 준비한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: legal\n locale: ko-KR\n phase: v1"
|
|
10
10
|
}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
"description": "국방전자조달시스템(D2B) 공개 입찰공고 검색 화면에서 공고건명·공고구분·공고/개찰일·G2B공고번호·발주기관 조건으로 공고를 조회한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
+
"vault",
|
|
6
7
|
"browser",
|
|
7
|
-
"
|
|
8
|
+
"legal"
|
|
8
9
|
],
|
|
9
10
|
"frontmatter": "name: d2b-notice-search\ndescription: 국방전자조달시스템(D2B) 공개 입찰공고 검색 화면에서 공고건명·공고구분·공고/개찰일·G2B공고번호·발주기관 조건으로 공고를 조회한다. 돌쇠에서는 가능한 가장 가까운 합법적 공식 단계까지 준비한다.\nlicense: MIT\nmetadata:\n category: procurement\n locale: ko-KR\n phase: v1"
|
|
10
11
|
}
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
## Commands
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
npx -y @nomadamas/k-skill@0 exec daangn-cars-search scripts/daangn_cars.py -- search "레이" --region "합정동" --limit 5
|
|
45
|
+
npx -y @nomadamas/k-skill@0 exec daangn-cars-search scripts/daangn_cars.py -- search --region "합정동" --price-max 10000000 --limit 5
|
|
46
|
+
npx -y @nomadamas/k-skill@0 exec daangn-cars-search scripts/daangn_cars.py -- detail "https://www.daangn.com/kr/cars/.../"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
## Output fields
|
|
File without changes
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
## Commands
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
npx -y @nomadamas/k-skill@0 exec daangn-jobs-search scripts/daangn_jobs.py -- search "카페" --region "합정동" --limit 5
|
|
45
|
+
npx -y @nomadamas/k-skill@0 exec daangn-jobs-search scripts/daangn_jobs.py -- detail "https://www.daangn.com/kr/jobs/.../"
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
## Output fields
|
|
File without changes
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
"description": "당근알바 공개 웹 데이터로 공고를 검색하고, 돌쇠에서는 공식 계정 표면에서 지원서 작성·채팅·승인 기반 전송까지 진행한다.",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"
|
|
6
|
+
"vault",
|
|
7
|
+
"browser",
|
|
8
|
+
"action:submission"
|
|
7
9
|
],
|
|
8
10
|
"frontmatter": "name: daangn-jobs-search\ndescription: 당근알바 공개 웹 데이터로 공고를 검색하고, 돌쇠에서는 공식 계정 표면에서 지원서 작성·채팅·승인 기반 전송까지 진행한다.\nlicense: MIT\nmetadata:\n category: jobs\n locale: ko-KR\n phase: v1"
|
|
9
11
|
}
|
|
@@ -63,7 +63,7 @@ ArticleFeedConnection.edges → ArticleFeedEdge.node → ArticleFeedCard.article
|
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
65
|
# 기본 검색 (상위 5개 제목·층수 보강)
|
|
66
|
-
|
|
66
|
+
npx -y @nomadamas/k-skill@0 exec daangn-realty-search scripts/daangn_realty.py -- search --region "매교동" --limit 20
|
|
67
67
|
|
|
68
68
|
# 거래/용도 필터
|
|
69
69
|
python3 ... search --region "매교동" --trade-type BUY # 매매만
|
|
File without changes
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
## Commands
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
npx -y @nomadamas/k-skill@0 exec daangn-used-goods-search scripts/daangn_used_goods.py -- search "맥북" --region "합정동" --limit 5
|
|
45
|
+
npx -y @nomadamas/k-skill@0 exec daangn-used-goods-search scripts/daangn_used_goods.py -- detail "https://www.daangn.com/kr/buy-sell/.../"
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
## Output fields
|
|
File without changes
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"description": "대신증권 리포트 GitHub Pages 미러에서 최신 HTML 리포트 목록과 원문/설명 페이지를 조회한다.",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"vault",
|
|
7
6
|
"lookup"
|
|
8
7
|
],
|
|
9
8
|
"frontmatter": "name: daishin-report-search\ndescription: 대신증권 리포트 GitHub Pages 미러에서 최신 HTML 리포트 목록과 원문/설명 페이지를 조회한다.\nlicense: MIT\nmetadata:\n category: finance\n locale: ko-KR\n phase: v1"
|
|
@@ -46,9 +46,9 @@ AJAX endpoint는 HTML fragment를 반환한다. helper는 `.diff_item`, 쇼핑
|
|
|
46
46
|
스킬 디렉터리에서 실행한다.
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
npx -y @nomadamas/k-skill@0 exec danawa-price-search scripts/danawa_search.py -- search "에어팟 프로 2세대" --limit 8
|
|
50
|
+
npx -y @nomadamas/k-skill@0 exec danawa-price-search scripts/danawa_search.py -- offers 28208783 --limit 10
|
|
51
|
+
npx -y @nomadamas/k-skill@0 exec danawa-price-search scripts/danawa_search.py -- compare "에어팟 프로 2세대" --limit 5 --offers 5
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
helper는 JSON만 출력한다. 결과를 확인한 뒤 사용자에게는 한국어 표와 짧은 결론으로 정리한다.
|
|
@@ -157,7 +157,7 @@ Discord/Telegram/chat 응답에서는 표 형식을 우선한다.
|
|
|
157
157
|
## Workflow
|
|
158
158
|
|
|
159
159
|
1. 검색어를 확인한다.
|
|
160
|
-
2. `
|
|
160
|
+
2. `npx -y @nomadamas/k-skill@0 exec danawa-price-search scripts/danawa_search.py -- search "<검색어>" --limit 5`로 후보를 확인한다.
|
|
161
161
|
3. 후보가 명확하면 해당 `pcode`로 `offers`를 실행한다.
|
|
162
162
|
4. 후보가 애매하면 상위 3~5개 상품명/가격/`pcode`를 보여주고 선택을 요청한다.
|
|
163
163
|
5. 오퍼는 **`total_price` 오름차순 단일 기준으로 정렬한다 (결제조건 분리 그룹화하지 않음).** 결제조건은 표의 "결제조건" 컬럼과 row 단위 플래그로만 표기하고, 1위가 현금/쿠폰가여도 그대로 1위로 노출한다.
|
|
File without changes
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
설치된 skill 디렉터리에서 실행한다.
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
npx -y @nomadamas/k-skill@0 exec ev-charger-nearby scripts/ev_charger.py -- info --location '서울 강남구' --num-of-rows 10
|
|
23
|
+
npx -y @nomadamas/k-skill@0 exec ev-charger-nearby scripts/ev_charger.py -- status --stat-id ME000001 --num-of-rows 10
|
|
24
|
+
npx -y @nomadamas/k-skill@0 exec ev-charger-nearby scripts/ev_charger.py -- status --zcode 11 --limit-yn Y --period 10 --json
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
공통 필터는 `zcode`, `zscode`, `statId`, `chgerId`다. hosted proxy의 `info`는 고유하게 식별되는 `location`을 행정구역 코드로 변환하며, 모호하거나 찾을 수 없는 위치와 충돌하는 명시적 코드는 거부한다. `status`는 `limitYn`과 `period`를 추가로 허용한다. 페이지 기본값은 `pageNo=1`, `numOfRows=10`이며 `numOfRows` 범위는 10~9999다.
|
|
@@ -29,8 +29,8 @@ python3 scripts/ev_charger.py status --zcode 11 --limit-yn Y --period 10 --json
|
|
|
29
29
|
직접 호출:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
npx -y @nomadamas/k-skill@0 exec ev-charger-nearby scripts/ev_charger.py -- info --zcode 11 --zscode 11680 --direct
|
|
33
|
+
npx -y @nomadamas/k-skill@0 exec ev-charger-nearby scripts/ev_charger.py -- status --stat-id ME000001 --direct --dry-run
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
직접 호출은 위치 텍스트를 행정구역 코드로 변환하지 않으므로 `--location` 대신 `--zcode`/`--zscode`를 사용한다. `--dry-run`은 URL을 보여주되 키를 `REDACTED`로 가린다.
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
"description": "Use when the user asks for Korean EV charging-station locations, charger types, or current charger status by region, station, or location text. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.",
|
|
4
4
|
"profiles": [
|
|
5
5
|
"proxy",
|
|
6
|
-
"
|
|
7
|
-
"action:booking"
|
|
6
|
+
"lookup"
|
|
8
7
|
],
|
|
9
8
|
"frontmatter": "name: ev-charger-nearby\ndescription: Use when the user asks for Korean EV charging-station locations, charger types, or current charger status by region, station, or location text. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.\nlicense: MIT\nmetadata:\n category: transit\n locale: ko-KR\n phase: v1"
|
|
10
9
|
}
|
|
@@ -28,7 +28,7 @@ Do **not** use this for:
|
|
|
28
28
|
|
|
29
29
|
## Known HTTP Flow
|
|
30
30
|
|
|
31
|
-
See `references/kobus-http-flow.md` for session-proven endpoint details and parameter examples.
|
|
31
|
+
See `npx -y @nomadamas/k-skill@0 read express-bus-booking references/kobus-http-flow.md` for session-proven endpoint details and parameter examples.
|
|
32
32
|
|
|
33
33
|
### 1. Start a Session
|
|
34
34
|
|
|
@@ -126,7 +126,7 @@ Use the same relevant form fields plus the returned `pcpyNoAll` and `satsNoAll`.
|
|
|
126
126
|
Use the bundled helper for KOBUS lookup and optional temporary holds:
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
|
-
|
|
129
|
+
npx -y @nomadamas/k-skill@0 exec express-bus-booking scripts/kobus_express_booking.py -- \
|
|
130
130
|
--depart-code 021 \
|
|
131
131
|
--arrive-code 500 \
|
|
132
132
|
--date 20260520 \
|
|
File without changes
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
"name": "express-bus-booking",
|
|
3
3
|
"description": "Search and assist Korean 고속버스/KOBUS bookings using official HTTP/API-first flows; use for 고속버스 예매, 시간표, 좌석 조회, 임시 선점, and official checkout-entry handoff. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.",
|
|
4
4
|
"profiles": [
|
|
5
|
+
"vault",
|
|
6
|
+
"browser",
|
|
5
7
|
"action:booking"
|
|
6
8
|
],
|
|
7
9
|
"frontmatter": "name: express-bus-booking\ndescription: Search and assist Korean 고속버스/KOBUS bookings using official HTTP/API-first flows; use for 고속버스 예매, 시간표, 좌석 조회, 임시 선점, and official checkout-entry handoff. 돌쇠에서는 공식 표면을 통한 후속 액션까지 진행한다.\nlicense: MIT\nmetadata:\n category: travel\n locale: ko-KR\n phase: v1"
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
이 skill은 저장소 내 helper를 직접 실행한다.
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
|
|
60
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- --help
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
최초 실행 시 `~/.cache/k-skill/flight-ticket-search/venv`에 `fast-flights==2.2`를 설치하고 그 venv로 재실행한다. 저장소에는 의존성 vendoring이나 API key를 넣지 않는다.
|
|
@@ -67,7 +67,7 @@ python3 flight-ticket-search/scripts/flight_ticket_search.py --help
|
|
|
67
67
|
편도:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- search \
|
|
71
71
|
--from ICN \
|
|
72
72
|
--to NRT \
|
|
73
73
|
--date 2026-06-01 \
|
|
@@ -80,7 +80,7 @@ python3 flight-ticket-search/scripts/flight_ticket_search.py search \
|
|
|
80
80
|
왕복:
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
|
-
|
|
83
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- search \
|
|
84
84
|
--from ICN \
|
|
85
85
|
--to NRT \
|
|
86
86
|
--date 2026-06-01 \
|
|
@@ -105,7 +105,7 @@ python3 flight-ticket-search/scripts/flight_ticket_search.py search \
|
|
|
105
105
|
빠른 기본값은 주 1회 샘플링이다.
|
|
106
106
|
|
|
107
107
|
```bash
|
|
108
|
-
|
|
108
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- compare-month \
|
|
109
109
|
--from ICN \
|
|
110
110
|
--to NRT \
|
|
111
111
|
--month 2026-06 \
|
|
@@ -116,7 +116,7 @@ python3 flight-ticket-search/scripts/flight_ticket_search.py compare-month \
|
|
|
116
116
|
일별 전체 조회가 필요하면 `--sample daily`를 쓴다. 다만 28~31회 요청이 발생하므로 rate limit을 위해 `--sleep`을 1.5초 이상 유지한다.
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
|
-
|
|
119
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- compare-month \
|
|
120
120
|
--from ICN \
|
|
121
121
|
--to NRT \
|
|
122
122
|
--month 2026-06 \
|
|
@@ -138,7 +138,7 @@ python3 flight-ticket-search/scripts/flight_ticket_search.py compare-month \
|
|
|
138
138
|
사용자가 "다음주부터 2주간", "6월 1일부터 20일까지"처럼 범위를 주면 날짜 범위 비교를 사용한다.
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
|
|
141
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- compare-range \
|
|
142
142
|
--from ICN \
|
|
143
143
|
--to BKK \
|
|
144
144
|
--start-date 2026-06-01 \
|
|
@@ -154,7 +154,7 @@ python3 flight-ticket-search/scripts/flight_ticket_search.py compare-range \
|
|
|
154
154
|
연도 비교는 같은 월일을 여러 연도에 대해 조회한다.
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
|
|
157
|
+
npx -y @nomadamas/k-skill@0 exec flight-ticket-search scripts/flight_ticket_search.py -- compare-years \
|
|
158
158
|
--from ICN \
|
|
159
159
|
--to NRT \
|
|
160
160
|
--years 2026,2027 \
|
|
@@ -28,7 +28,7 @@ generic runtime에서 helper는 조회 전용이다. 돌쇠에서는 조회 결
|
|
|
28
28
|
```bash
|
|
29
29
|
python3 -m pip install playwright
|
|
30
30
|
python3 -m playwright install chromium
|
|
31
|
-
|
|
31
|
+
npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --check-deps
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Required environment variables
|
|
@@ -91,25 +91,25 @@ API는 `srchDate` 단일 일자만 요청해도 응답에 5일 윈도우를 포
|
|
|
91
91
|
전체 자연휴양림에서 특정 날짜 조회:
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
|
-
|
|
94
|
+
npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --all --text --dates 20260504
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
JSON 출력:
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
|
|
100
|
+
npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --all --json --dates 20260504
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
캠핑/야영만 조회:
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
|
-
|
|
106
|
+
npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --all --text --dates 20260504 --categories 02
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
특정 휴양림명으로 조회:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
|
-
|
|
112
|
+
npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --forest-name 유명산 --text --dates 20260504
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
### 4. Summarize results conservatively
|
|
@@ -154,8 +154,8 @@ python3 scripts/run_foresttrip_vacancy.py --forest-name 유명산 --text --dates
|
|
|
154
154
|
|
|
155
155
|
- `./scripts/validate-skills.sh`
|
|
156
156
|
- `python3 -m py_compile foresttrip-vacancy/scripts/run_foresttrip_vacancy.py`
|
|
157
|
-
- `
|
|
158
|
-
- `
|
|
157
|
+
- `npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --help`
|
|
158
|
+
- `npx -y @nomadamas/k-skill@0 exec foresttrip-vacancy scripts/run_foresttrip_vacancy.py -- --check-deps`
|
|
159
159
|
- `npm run ci`
|
|
160
160
|
|
|
161
161
|
실제 live smoke는 기여자 또는 이미 숲나들e 계정을 가진 사용자가 선택적으로 수행한다. PR에는 `forests_scanned`, `fetch_failures`, `filter_hits` 같은 비민감 요약만 남기고 계정 정보, 세션 쿠키, 개인 조회 세부 내역은 공유하지 않는다.
|
|
File without changes
|