| name | setup-claudia-statusline-with-notion-link |
| description | This skill should be used when the user wants their Claude Code statusline to show the most recently referenced Notion page from the current session โ "์คํ
์ดํฐ์ค๋ผ์ธ์ ๋
ธ์
๋งํฌ", "์ธ์
์์ ๋ณธ ๋
ธ์
๋ฌธ์ ํ์", "claudia-statusline notion ์ฐ๋" โ while running claudia-statusline (the Rust `statusline` binary, `statusLine.command` in `~/.claude/settings.json`). Installs a shared orchestrator (if not already present) plus a togglable "notion-link" segment that scans the session transcript for the last Notion MCP fetch/search result and appends its title as a clickable OSC 8 hyperlink, computed asynchronously with caching so the statusline never blocks. |
| version | 0.2.0 |
claudia-statusline์ Notion ๋งํฌ ์ถ๊ฐ
์ด ์ธ์
์์ ๋ง์ง๋ง์ผ๋ก ์กฐํํ Notion ํ์ด์ง๋ฅผ ํด๋ฆญ ๊ฐ๋ฅํ ๋งํฌ๋ก statusline์ ๋ณด์ฌ์ค๋ค. setup-claudia-statusline-with-pr-link์ ์ค์ผ์คํธ๋ ์ดํฐ+segment ๊ตฌ์กฐ๋ฅผ ๊ณต์ ํ๋ค โ ์ค์ผ์คํธ๋ ์ดํฐ๋ ์๋ณธ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ ๋ค <command>-segments/ ์์ ์คํ ๊ฐ๋ฅํ *.sh๋ฅผ ์ ๋ถ ๋๋ ค์ ์ถ๋ ฅ์ ๋ง๋ถ์ธ๋ค. ์์ค๋ง git/GitHub๊ฐ ์๋๋ผ ์ธ์
transcript๋ผ๋ ์ ์ด ๋ค๋ฅด๋ค.
์ธ์ ์ฐ๋ฉด ์ ๋๋์ง
~/.claude/settings.json์ statusLine.command๊ฐ claudia-statusline์ด ์๋ ๊ฒฝ์ฐ
- Notion MCP(
mcp__..._notion__notion-fetch / notion-search)๋ฅผ ์ธ์
์์ ์ฐ์ง ์๋ ๊ฒฝ์ฐ โ ์กฐํํ ๊ธฐ๋ก ์์ฒด๊ฐ ์๋ค
- macOS๊ฐ ์๋ ํ๊ฒฝ (
stat -f, shasum ๋ฑ BSD ์ ์ฉ ๋ช
๋ น ์ฌ์ฉ)
์ฌ์ ํ์ธ
cat ~/.claude/settings.json์์ statusLine.command ๊ฒฝ๋ก ํ์ธ
python3๊ฐ PATH์ ์๋์ง ํ์ธ
<command>-bin์ด ์ด๋ฏธ ์๋์ง ํ์ธํ๋ค โ ์์ผ๋ฉด ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์ด๋ฏธ ์ค์น๋ผ ์๋ค๋ ๋ป์ด๋ ์ค์น ์ ์ฐจ 1๋ฒ์ ๊ฑด๋๋ด๋ค (๋ค์ ์คํํ๋ฉด ์ค์ผ์คํธ๋ ์ดํฐ ์ฝ๋๊ฐ -bin์ ๋ฎ์ด์จ์ ธ ์๋ณธ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ฌ๋ผ์ง๋ค)
์ฃผ์: ํ์ธ ๊ณผ์ ์์ ์๋ณธ(๋๋ -bin)์ ๋๊ณ generate-config๋ฅผ ์คํํ์ง ์๋๋ค. ๊ธฐ์กด config.toml์ ๋ฎ์ด์ด๋ค.
์ค์น ์ ์ฐจ
<command>-bin์ด ์์ ๋๋ง: ์๋ณธ ๋ฐ์ด๋๋ฆฌ๋ฅผ <command>-bin์ผ๋ก cpํ๋ค.
scripts/statusline-orchestrator.sh๋ฅผ <command> ๊ฒฝ๋ก์ ๋ณต์ฌํ๊ณ ์คํ ๊ถํ์ ์ค๋ค. ์ด๋ฏธ ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์ค์น๋ผ ์์ด๋(์: PR ๋งํฌ skill๋ก) ๋ด์ฉ์ด ๊ฐ์ผ๋ฏ๋ก ๋ฎ์ด์จ๋ ์์ ํ๋ค.
mkdir -p <command>-segments
scripts/statusline-segment-notion-link.sh๋ฅผ <command>-segments/notion-link.sh๋ก ๋ณต์ฌํ๊ณ ์คํ ๊ถํ์ ์ค๋ค.
์ผ๊ณ ๋๊ธฐ
- ๋๊ธฐ:
chmod -x <command>-segments/notion-link.sh
- ์ผ๊ธฐ:
chmod +x <command>-segments/notion-link.sh
- ์ ๊ฑฐ:
rm <command>-segments/notion-link.sh
- PR ๋งํฌ segment์๋ ์๋ก ๋ค๋ฅธ ํ์ผ์ด๋ผ ๋
๋ฆฝ์ ์ผ๋ก ์ผ๊ณ ๋ ์ ์๋ค. ๋ ๋ค ์ค์นํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ค ์ผ์ง ์ํ๋ก ๊ฐ์ ์๊ธฐ ์ค์ ์ถ๋ ฅํ๋ค.
๋์ ๋ฐฉ์
- ์ค์ผ์คํธ๋ ์ดํฐ๋ ์ธ์๊ฐ ์๋ ํธ์ถ์ ์๋ณธ ๋ฐ์ด๋๋ฆฌ๋ก ๊ทธ๋๋ก ํจ์ค์ค๋ฃจํ๋ค. segment๋ ์ธ์ ์์ด stdin์ผ๋ก JSON์ ๋ฐ๋ ๊ธฐ๋ณธ ๋ ๋๋ง ํธ์ถ์์๋ง ์คํ๋๋ค.
- Claude Code๊ฐ statusline์ ๋๊ธฐ๋ JSON์๋ ํ์ฌ ์ธ์
transcript ๊ฒฝ๋ก(
transcript_path)๊ฐ ๋ค์ด์๋ค. segment๋ ๊ทธ ํ์ผ์ ๋ง์ง๋ง 3000์ค(tail -n 3000)๋ง ์ฝ์ด, notion-fetch/notion-search ๊ณ์ด tool_use ํธ์ถ๊ณผ ๊ทธ ๊ฒฐ๊ณผ(tool_result)๋ฅผ ์ญ์์ผ๋ก ์ฐพ์ ๊ฐ์ฅ ์ต๊ทผ ๊ฒฐ๊ณผ์ title/url์ ๋ฝ๋๋ค. 3000์ค ์ฐฝ ๊ฒฝ๊ณ์์ tool_use๋ ์ฐฝ ๋ฐ, ๊ทธ tool_result๋ง ์ฐฝ ์์ ๊ฑธ์น๋ฉด ๊ทธ ์์ ์กฐ์ฉํ ๊ฑด๋๋ด๋ค โ ํฌ๋์๋ ์ ๋์ง๋ง ์์ฃผ ๊ธด ์ธ์
์์๋ ์ต์ ์ฐธ์กฐ๋ฅผ ๋์น๊ณ ๊ทธ๋ณด๋ค ์ค๋๋(๋๋ ์์ ์๋) ์ฐธ์กฐ๊ฐ ํ์๋ ์ ์๋ค.
- ๋งค ๋ ๋๋ง๋ง๋ค transcript๋ฅผ ๋ค์ ํ์ฑํ์ง ์๋๋ค. ์บ์๊ฐ 30์ด ์ด์ ์ค๋๋์ ๋๋ง ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ค์ ํ์ฑํ๊ณ , ์ด๋ฒ ๋ ๋๋ง์๋ ์บ์๊ฐ์ ์ฐ๊ฑฐ๋ ์๋ฌด ์ค๋ ์ถ๋ ฅํ์ง ์๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ํ์ฑ์ 10์ด ํ์์์์ผ๋ก ๊ฐ์ ์ข
๋ฃํ๋ค(PR ๋งํฌ segment์ ๋์ผํ lock+timeout ํจํด โ macOS์
timeout์ด ์์ด์ ์๋ sleep+kill๋ก ๊ตฌํ).
- ์บ์๋
$TMPDIR/claudia-statusline-notion-cache/์ transcript ๊ฒฝ๋ก ํด์๋ก ์ ์ฅํ๊ณ , title/url์ ์ค๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถํด ์ ์ฅํ๋ค(์ ๋ชฉ์ |๊ฐ ์ฌ ์ ์์ด ํ์ดํ ๊ตฌ๋ถ ๋์ ์ด ๋ฐฉ์์ ์ผ๋ค). ์ ๋ชฉ ์์ฒด์ ๊ฐํ์ด ์์ฌ ๋ค์ด์ ์ด 2์ค ํฌ๋งท์ ๊นจ๋ ๊ฑธ ๋ง๊ธฐ ์ํด, ์บ์์ ์ฐ๊ธฐ ์ ์ ๋ชฉ์ \n/\r์ ๊ณต๋ฐฑ์ผ๋ก ์นํํ๋ค.
- Notion ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด ์ ๋ชฉ(์ต๋ 24์, ์ด๊ณผ ์
โฆ)์ OSC 8 ํ์ดํผ๋งํฌ๋ก ํ ์ค ์ถ๋ ฅํ๋ค.
๊ฒ์ฆ
rm -rf "${TMPDIR:-/tmp}/claudia-statusline-notion-cache"๋ก ์บ์ ์ด๊ธฐํ
- Notion MCP๋ฅผ ์ค์ ๋ก ํธ์ถํ ์ธ์
์
transcript_path๋ฅผ ๋ฃ์ JSON์ผ๋ก ๋ ๋ฒ ์ฐ์ ํธ์ถ โ ๋ ๋ฒ์งธ ํธ์ถ(์บ์๊ฐ ์ฑ์์ง ๋ค)์ ์ ๋ชฉ์ด ํด๋ฆญ ๊ฐ๋ฅํ ๋งํฌ๋ก ์ ์ค์ ๋ถ๋์ง ํ์ธ
transcript_path๊ฐ ์๊ฑฐ๋ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ์กด๊ณผ ๋์ผํ ์ถ๋ ฅ์ธ์ง ํ์ธ
chmod -x <command>-segments/notion-link.sh ํ ํธ์ถํ๋ฉด Notion ์ค์ด ์ฌ๋ผ์ง๋์ง, PR ๋งํฌ segment(์ค์น๋ผ ์๋ค๋ฉด)๋ ์ํฅ๋ฐ์ง ์๋์ง ํ์ธ
- ์ธ์๊ฐ ์๋ ํธ์ถ(
--version ๋ฑ)์ด ์๋ณธ๊ณผ ๋์ผํ๊ฒ ๋์ํ๋์ง ํ์ธ
- ์ ๋ชฉ์ ํ๊ธ ๋ฑ ๋น-ASCII ๋ฌธ์๊ฐ ํฌํจ๋ ๋ ๊นจ์ง์ง ์๋์ง ํ์ธ (
od/python3 -c "open(...).read()"๋ก ๊ฒ์ฆ โ cat -v๋ strings๋ UTF-8์ ๋ฐ์ดํธ ๋จ์๋ก ์ชผ๊ฐ ๋ณด์ฌ์ค ์คํ์ ์ผ์ผํจ๋ค)