답변 왼쪽에 테마색 세로 테두리와 여백을 그림 (/pretty)

Claude Code 모드 모음 (CLI · 데스크톱 앱 Code 탭 공용)
| 플러그인 | 설명 | |
|---|---|---|
usage-band | 입력창 위에 5시간 / 주간 / Fable 주간 사용량 게이지 표시 (claude.ai Pro·Max 로그인 필요) | |
git-graph | 접었다 펼 수 있는 깃 커밋 그래프 패널. 세션 시작 때 자동으로 열리지 않고 /git-graph로 열면 그래프가 펼쳐진 상태로 보임. ▾ (c)로 접기. 레인(브랜치)이 많으면 그래프 폭을 제한하고 ◀ ▶ (h l)로 좌우 이동. /git-graph [저장소 경로] | |
pretty-replies | 답변 왼쪽에 세로 테두리와 여백을 그림. 답변의 첫 블록은 주황(Claude 색), 도구 호출 뒤 이어지는 블록은 흐린 색. `/pretty [on\ | off]`로 켜고 끔(인자 없으면 토글, 설정은 유지) |
Claude Code에서:
/plugin marketplace add nemokoala/claude-mods
/plugin install usage-band@nemokoala-mods
/plugin install git-graph@nemokoala-mods
/plugin install pretty-replies@nemokoala-mods
또는 터미널에서:
claude plugin marketplace add nemokoala/claude-mods
claude plugin install usage-band@nemokoala-mods
claude plugin install git-graph@nemokoala-mods
claude plugin install pretty-replies@nemokoala-mods
설치 후 새 세션부터 적용됩니다.
hooks/register.tsx 44 lines1import { atom, read, update } from 'claude-code'
2import type { Register } from 'claude-code'
3
4const enabled = atom({ plugin: 'pretty-replies', key: 'enabled' } as const, true)
5
6export const register: Register = on => {
7 on('session.start', async ($, e, next) => {
8 await $.command.register({
9 name: 'pretty',
10 description: 'Toggle the pretty reply style (on | off)',
11 argumentHint: '[on|off]',
12 })
13 const saved = await $.store.get('enabled')
14 if (typeof saved === 'boolean') await update($, enabled, () => saved)
15
16 return next(e)
17 })
18
19 on('command.run', { command: 'pretty' }, async ($, e) => {
20 const arg = e.args.trim().toLowerCase()
21 const isOn = await update($, enabled, now =>
22 arg === 'on' ? true : arg === 'off' ? false : !now,
23 )
24 await $.store.set('enabled', isOn)
25
26 return { text: `Pretty replies ${isOn ? 'on' : 'off'}.` }
27 })
28
29 on('ui.render', { component: 'AssistantMessage' }, async ($, e, next) => {
30 if (e.props.isSummary || !(await read($, enabled))) return next(e)
31 const { Box, Markdown } = $.ui.resolve(e)
32
33 return (
34 <Box
35 borderStyle="quote"
36 borderColor={e.props.isFirstOfReply ? 'claude' : 'subtle'}
37 paddingLeft={1}
38 >
39 <Markdown text={e.props.text} />
40 </Box>
41 )
42 })
43}
44types/index.d.ts 8 lines1export type PrettyRepliesState = { enabled: boolean }
2
3declare module 'claude-code' {
4 interface PluginState {
5 'pretty-replies': { enabled: boolean }
6 }
7}
8