Skip to main content

setup

This skill should be used when the user wants gptaku-core to also route requests to skills that are not gptaku plugins โ€” their personal skills in ~/.claude/skills and skills from other plugin marketplaces โ€” so those are picked automatically without being named. It scans installed skills, drafts routing keywords from each skill's trigger phrases, asks for approval, writes ~/.claude/gptaku-core/routes.json, and self-checks the result. Korean triggers: "gptaku-core ์…‹์—…", "๋‚ด ์Šคํ‚ฌ๋„ ๋ผ์šฐํŒ…", "๋‚ด ์Šคํ‚ฌ ์ž๋™์œผ๋กœ ์“ฐ๊ฒŒ", "๊ฐœ์ธ ์Šคํ‚ฌ ๋ผ์šฐํŒ… ์„ค์ •", "๋ผ์šฐํ„ฐ์— ์Šคํ‚ฌ ์ถ”๊ฐ€", "๋ผ์šฐํŠธ ๋‹ค์‹œ ์žก์•„์ค˜". English triggers: "gptaku-core setup", "route my own skills", "add my skills to the router".

Source facts

Repository
fivetaku/gptaku_plugins
Last source activity
October 21, 2026 at 15:03
Detected SKILL.md language
Korean
Stars
1,256
Forks
90

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
setup
description
This skill should be used when the user wants gptaku-core to also route requests to skills that are not gptaku plugins โ€” their personal skills in ~/.claude/skills and skills from other plugin marketplaces โ€” so those are picked automatically without being named. It scans installed skills, drafts routing keywords from each skill's trigger phrases, asks for approval, writes ~/.claude/gptaku-core/routes.json, and self-checks the result. Korean triggers: "gptaku-core ์…‹์—…", "๋‚ด ์Šคํ‚ฌ๋„ ๋ผ์šฐํŒ…", "๋‚ด ์Šคํ‚ฌ ์ž๋™์œผ๋กœ ์“ฐ๊ฒŒ", "๊ฐœ์ธ ์Šคํ‚ฌ ๋ผ์šฐํŒ… ์„ค์ •", "๋ผ์šฐํ„ฐ์— ์Šคํ‚ฌ ์ถ”๊ฐ€", "๋ผ์šฐํŠธ ๋‹ค์‹œ ์žก์•„์ค˜". English triggers: "gptaku-core setup", "route my own skills", "add my skills to the router".
# gptaku-core setup โ€” ๋‚ด ์Šคํ‚ฌ๋„ ์ž๋™์œผ๋กœ ์“ฐ๊ฒŒ gptaku-core ๋ผ์šฐํ„ฐ๋Š” ์ผœ์ง„ gptaku ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ `routing.json`๊ณผ ํ•จ๊ป˜ **์‚ฌ์šฉ์ž ๋ผ์šฐํŠธ ํŒŒ์ผ** `~/.claude/gptaku-core/routes.json`์„ ์ฝ๋Š”๋‹ค. ์ด ์…‹์—…์€ ๊ทธ ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ์Šคํ‚ฌ๋กœ ์ฑ„์šด๋‹ค. ํŒŒ์ผ ํ˜•์‹์€ ํ”Œ๋Ÿฌ๊ทธ์ธ `routing.json`๊ณผ ๊ฐ™๊ณ , ๊ฐœ์ธ ์Šคํ‚ฌ(`~/.claude/skills/<name>`)์€ ์ฝœ๋ก  ์—†๋Š” ์ด๋ฆ„(`"skill": "my-skill"`), ๋‹ค๋ฅธ ๋งˆ์ผ“ ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šคํ‚ฌ์€ `"plugin:skill"`๋กœ ์ ๋Š”๋‹ค. ๋„๊ตฌ: `python3 "${CLAUDE_PLUGIN_ROOT}/hooks/user_routes.py" <scan|write|remove|check|list>` ## Step 1 โ€” ์Šค์บ” ```bash python3 "${CLAUDE_PLUGIN_ROOT}/hooks/user_routes.py" scan ``` ๊ฒฐ๊ณผ์˜ `skills[]` ์ค‘ `routed: false`์ธ ๊ฒƒ์ด ๋Œ€์ƒ์ด๋‹ค. `explicit_only: true`(๋ชจ๋ธ ์ž๋™ ํ˜ธ์ถœ์„ ๋ˆ ์Šคํ‚ฌ)๋Š” ๋ผ์šฐํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ๊ฐ ํ•ญ๋ชฉ์˜ `triggers`(์„ค๋ช… ์† ์ธ์šฉ ๋ฌธ๊ตฌ)์™€ `draft_keywords`(์š”์ฒญ ์–ด๋ฏธ๋ฅผ ๋—€ ์ดˆ์•ˆ)๋ฅผ ์ถœ๋ฐœ์ ์œผ๋กœ ์“ด๋‹ค. ## Step 2 โ€” ์ดˆ์•ˆ ์ž‘์„ฑ ๋Œ€์ƒ๋งˆ๋‹ค ๋ผ์šฐํŠธ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ ๋‹ค. ์›์น™: - `keywords`์—๋Š” **๊ทธ ์Šคํ‚ฌ๋งŒ์˜ ํ‘œํ˜„**๋งŒ ๋„ฃ๋Š”๋‹ค. `"๋ฃจํ”„"`, `"์ธํ„ฐ๋ทฐ"`, `"wrap"`, `"watch"`, `"design review"`์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๋งฅ๋ฝ์—์„œ๋„ ํ”ํ•œ ๋ง์€ ๋นผ๊ฑฐ๋‚˜ `weak`(1์ , ๊ฐ™์€ ์ ˆ์— ๊ฐ•ํ•œ ๊ทผ๊ฑฐยท`context`๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ)๋กœ ๋‚ด๋ฆฐ๋‹ค. - ํ‚ค์›Œ๋“œ๋Š” ์š”์ฒญ ์–ด๋ฏธ๋ฅผ ๋—€ ์ค„๊ธฐ๋กœ ์“ด๋‹ค(`"์œค๋ฌธํ•ด์ค˜"` โ†’ `"์œค๋ฌธ"`). ์˜๋ฌธยท์ˆซ์ž๋Š” ๋‹จ์–ด ๊ฒฝ๊ณ„๋กœ, ํ•œ๊ธ€์€ ์•ž์ชฝ ๊ฒฝ๊ณ„๋กœ ๋Œ€์กฐ๋œ๋‹ค. - ์ฝ”๋“œ ์ž‘์—…๊ณผ ๊ฒน์น˜๋Š” ์Šคํ‚ฌ์ด ์•„๋‹ˆ๋ฉด `exclude`์— `["์ฝ”๋“œ", "ํ•จ์ˆ˜", "ํ…Œ์ŠคํŠธ", "๋ฆฌํŒฉํ„ฐ", "๋ฒ„๊ทธ", "์—๋Ÿฌ"]`๋ฅผ ๋„ฃ๋Š”๋‹ค. - `when`์€ ์„ธ์…˜ ๊ทœ์น™์— ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€๋Š” ํ•œ ์ค„ ์„ค๋ช…์ด๋‹ค(ํ•œ๊ตญ์–ด, "~ํ•  ๋•Œ"). - `priority`๋Š” ๊ธฐ๋ณธ 20. ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ์Šคํ‚ฌ์ด ๋‘˜์ด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ๋กœ ์“ฐ๋Š” ์ชฝ์„ ๋†’์ธ๋‹ค(๊ทธ ๋ฐ˜๋Œ€๋Š” ์ด๋ฆ„์„ ์ง์ ‘ ๋ถ€๋ฅผ ๋•Œ๋งŒ ๊ฑธ๋ฆฌ๋„๋ก ๊ทธ ์ด๋ฆ„๋งŒ `keywords`์— ๋‘”๋‹ค). - `"์ฒดํฌ์ธ"`์ฒ˜๋Ÿผ ํ•œ ๋‹จ์–ด๋กœ ๋ถ€๋ฅด๋Š” ์Šคํ‚ฌ์€ ๊ทธ ๋‹จ์–ด๋ฅผ `keywords`์— ๋„ฃ์œผ๋ฉด ์–ด๋ฏธ ์—†์ด๋„ ๊ฑธ๋ฆฐ๋‹ค. - ๊ฐ™์€ ์Šคํ‚ฌ์ด `~/.claude/skills`์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์–‘์ชฝ์— ์žˆ์œผ๋ฉด(์˜ˆ: `cloudflare`์™€ `cloudflare:cloudflare`) ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ๋ถ€๋ฅด๋Š” ์ชฝ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ ๋‹ค. - ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์“ฐ์ž„์„ ์•Œ ์ˆ˜ ์—†๋Š” ์Šคํ‚ฌ์€ ์–ต์ง€๋กœ ๋งŒ๋“ค์ง€ ๋ง๊ณ  ํ‘œ์— "๋ณด๋ฅ˜"๋กœ ๋‚จ๊ธด๋‹ค. ## Step 3 โ€” ์Šน์ธ ํ‘œ(์Šคํ‚ฌ ยท when ยท ๋Œ€ํ‘œ keywords ยท ๋ณด๋ฅ˜ ์—ฌ๋ถ€)๋กœ ๋ณด์—ฌ ์ฃผ๊ณ  AskUserQuestion์œผ๋กœ "์ „๋ถ€ ์ ์šฉ / ๊ณ ๋ฅผ๊ฒŒ / ์ทจ์†Œ"๋ฅผ ๋ฌป๋Š”๋‹ค. ์Šน์ธ ์ „์—๋Š” ํŒŒ์ผ์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๋ฌด์‘๋‹ต์€ ์Šน์ธ์ด ์•„๋‹ˆ๋‹ค. ## Step 4 โ€” ์“ฐ๊ธฐ ์Šน์ธ๋œ ๋ผ์šฐํŠธ๋งŒ ์ž„์‹œ ํŒŒ์ผ(`{"routes": [...]}`)์— ๋‹ด์•„ ํ•ฉ์นœ๋‹ค. ๊ฐ™์€ ์Šคํ‚ฌ์€ ๊ต์ฒด๋˜๊ณ  ๋‚˜๋จธ์ง€ ๊ธฐ์กด ์‚ฌ์šฉ์ž ๋ผ์šฐํŠธ๋Š” ์œ ์ง€๋œ๋‹ค. ```bash python3 "${CLAUDE_PLUGIN_ROOT}/hooks/user_routes.py" write /tmp/gptaku-user-routes.json ``` `invalid`๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ ๋ผ์šฐํŠธ๋ฅผ ๊ณ ์ณ ๋‹ค์‹œ ์“ด๋‹ค. ## Step 5 โ€” ์ž์ฒด ์ ๊ฒ€ ์Šคํ‚ฌ๋งˆ๋‹ค **๊ฑธ๋ ค์•ผ ํ•  ๋ฌธ์žฅ 2๊ฐœ**์™€ **๊ฑธ๋ฆฌ๋ฉด ์•ˆ ๋˜๋Š” ๋ฌธ์žฅ 1๊ฐœ**(๊ทธ ์Šคํ‚ฌ ๋‹จ์–ด๊ฐ€ ๋“ค์–ด๊ฐ€์ง€๋งŒ ๋‹ค๋ฅธ ์ผ์ธ ๋ฌธ์žฅ)๋ฅผ ๋งŒ๋“ค์–ด ํ•œ ๋ฒˆ์— ํ™•์ธํ•œ๋‹ค. ```bash python3 "${CLAUDE_PLUGIN_ROOT}/hooks/user_routes.py" check "๋ฌธ์žฅ1" "๋ฌธ์žฅ2" ... ``` ๊ฐ ์ค„์€ `์ง€๋ชฉ๋œ ์Šคํ‚ฌ<TAB>๋ฌธ์žฅ`(์—†์œผ๋ฉด `-`)์ด๋‹ค. ๊ธฐ๋Œ€์™€ ๋‹ค๋ฅด๋ฉด ํ‚ค์›Œ๋“œ๋ฅผ ๊ณ ์ณ Step 4๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•œ๋‹ค. gptaku ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šคํ‚ฌ๋กœ ๊ฐ€์•ผ ํ•  ๋ฌธ์žฅ(์˜ˆ: "๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” ์ผ์ • ํ™•์ธํ•ด์ค˜")์ด ์‚ฌ์šฉ์ž ๋ผ์šฐํŠธ๋กœ ๋นผ์•—๊ธฐ์ง€ ์•Š๋Š”์ง€๋„ ํ•œ ์ค„ ๋„ฃ์–ด ํ™•์ธํ•œ๋‹ค. ## Step 6 โ€” ๋ณด๊ณ  ์ ์šฉํ•œ ์Šคํ‚ฌ ์ˆ˜, ๋ณด๋ฅ˜ํ•œ ์Šคํ‚ฌ๊ณผ ์ด์œ , ์ ๊ฒ€ ๊ฒฐ๊ณผ(๊ธฐ๋Œ€์™€ ๋‹ค๋ฅธ ์ค„์ด ์žˆ์—ˆ๋‹ค๋ฉด ๊ณ ์นœ ๋‚ด์šฉ)๋ฅผ ์งง๊ฒŒ ๋ณด๊ณ ํ•œ๋‹ค. ์ƒˆ ๋ผ์šฐํŠธ๋Š” **๋‹ค์Œ ์š”์ฒญ๋ถ€ํ„ฐ** ๋ฐ”๋กœ ์ ์šฉ๋˜๊ณ , ์„ธ์…˜ ๊ทœ์น™ ๋ชฉ๋ก์€ ๋‹ค์Œ ์„ธ์…˜ ์‹œ์ž‘(๋˜๋Š” `/clear`)๋ถ€ํ„ฐ ๋ฐ˜์˜๋œ๋‹ค. ## ๊ด€๋ฆฌ - ์Šคํ‚ฌ์„ ์ƒˆ๋กœ ์„ค์น˜ํ–ˆ์œผ๋ฉด ์ด ์…‹์—…์„ ๋‹ค์‹œ ๋Œ๋ฆฐ๋‹ค(์ด๋ฏธ ๋ผ์šฐํŠธ๊ฐ€ ์žˆ๋Š” ์Šคํ‚ฌ์€ `routed: true`๋กœ ๋‚˜์™€ ๊ฑด๋„ˆ๋›ด๋‹ค). - ์ง€์šฐ๊ธฐ: `user_routes.py remove <skill>` ยท ํ˜„์žฌ ๋ชฉ๋ก: `user_routes.py list` - ๋ผ์šฐํ„ฐ๋ฅผ ์ž ์‹œ ๋„๊ธฐ: ํ™˜๊ฒฝ๋ณ€์ˆ˜ `GPTAKU_ROUTER=off`
View on GitHub