← 에이전트

SmartThink - 일을 맡기기 전에 세션을 무장시키는 스킬

작업 전에 멘탈 모델 원문을 골라 세션에 싣고 턴을 끝내는 Claude Code 스킬. 답을 내던 명령을 답할 세션을 만드는 쪽으로 바꿨고, 결함 셋은 직접 쓰는 과정에서 드러났다.

목차
  1. 무엇인가
  2. 왜 만들었나
  3. 어떻게 동작하나
  4. 써 보니
  5. 실패와 고친 것
  6. 지금 상태

무엇인가

SmartThink는 일을 맡기기 전에 부르는 Claude Code 스킬이다.
전략이나 의사결정처럼 머리를 써야 하는 일이 오면,
그 일에 맞는 멘탈 모델 레퍼런스를 고르고
원문 그대로 세션에 실은 뒤 턴을 끝낸다.
일은 그렇게 무장한 세션에 내가 직접 시킨다.

처음부터 이렇게 생긴 스킬은 아니었다.
2월에 만들 때는 레퍼런스를 읽고 답까지 내는 분석 명령이었고
9월의 v3에서 답 대신 답할 세션을 만드는 쪽으로 바꿨다.
그 뒤에 결함 셋을 직접 쓰다가 발견했고 지금은 보관 상태다.

리포 README는 목적을 한 줄로 적었다.
"이 세션을 그 작업에 특화된 전문가로 만든다"
재료는 멘탈 모델 81개, 사고 엔진 12개,
TRIZ(발명 문제 해결 이론) 프레임워크다.
README의 사용 예는 이런 식이다.
"/st 사내 문서 검색 도구를 새로 만들지 기존 것을 개선할지 결정"

왜 만들었나

2월에 윈도우 PC(WSL2)의 Claude Code에서 처음 만들었다.
첫 호출은 다음 날 새벽이었고
1인 기업으로 SaaS를 만들어 가려던 방향을 물었다.
"내 1인 기업의 운명을 다시한번 깊게 생각해줘"
레퍼런스 9종은 에이전트가 커밋 하나로 넣었다.
3월에 단독 패키지로 떼어 낼 때 남긴 커밋 메시지에는 그 분량이
"7,400+ lines of thinking frameworks"로 적혀 있다.

첫 의심은 만든 지 이틀째에 생겼다.
메타인지로 스스로 진화한다고 알고 있었는데,
"근데 실상을 파헤쳐보니 그렇지 않더라고?"
7월에 맥으로 옮길 때는 PC에서 직접 만든 스킬 중 이것만 골랐다.
"일단 smartthink만 가져오자. 나머진 레거시다."

9월 초에 v3를 다시 설계하면서 두 가지를 정했다.
첫째, 레퍼런스를 고르는 게이트는 남긴다.
"레퍼런스 하나하나가 꽤 무거워서 전부 로딩하는건 바보같은 짓이고."
둘째, 고른 레퍼런스는 줄이지 않고 그대로 싣는다.
"단, 요약하기보단 원문강화판으로."
대상은 도메인 지식이 없는 사용자로 잡았고
진화 기능도 이번에는 그냥 넘어가지 않겠다고 했다.
"이제는 확실히 짚고가야해."

어떻게 동작하나

/st에 할 일을 붙여 부르면 먼저 게이트가 한 번 뜬다.
게이트는 Cynefin(문제의 성격을 가르는 진단 틀)으로 일을 진단하고
쓸 모듈과 예상 비용을 보여 준다.
내가 모듈을 고르면 무장 담당 서브에이전트가 자기 컨텍스트 창에서 팩 파일을 쓴다.
팩에는 고른 모듈 원문, 이 일에 맞춘 적용 레이어,
리서치 합성이 6개 절에 나뉘어 들어간다.
메인 세션은 그 팩을 읽고 첫 절의 무장 브리핑을
다시 합성하지 않고 그대로 출력한 뒤 턴을 끝낸다.
스킬 지침에는 "본 작업에 착수하지 마라"라고 적었다.

팩에 실은 레퍼런스는 원문이다.
모듈마다 시작과 끝에 표지를 두르고 원본의 SHA-256을 함께 실었다.
구조 검사 스크립트는 그 값을 근거로 요약·줄 바꿈·절단이
없었다는 것을 증명한다.
그래서 요약하지 말라는 주문이 지켜졌는지 사람이 매번 확인하지 않아도 된다.

코드는 에이전트가 썼다.
10월 18일 기준으로 기본 브랜치 커밋 116개 가운데
머지가 아닌 97개 전부에 Claude 공동 작성자 줄이 붙어 있다
(커밋 메시지에서 Co-Authored-By:로 시작하는 줄을 센 값).
설계 문서 머리말에 따르면 v3 구현은 Orca 런 두 개에서
팀장 에이전트 하나와 워커 열하나가 나눠 맡았다.
내 몫은 방향과 설계 결정이었다.
게이트를 남기고 원문을 싣기로 한 것,
원래 조직 리포는 두고 개인 공개 리포로 다시 올린 것이 그 결정이다.

써 보니

호출 수만 보면 PC 시절에 많이 썼다.
이전 PC의 Claude Code 입력 기록 9,696행에서
/smartthink나 /st로 시작하는 행은 145개다.
이 행들은 2월 20일부터 4월 25일 사이 39일에 나뉘어 있고
월별로는 2월 55개, 3월 73개, 4월 17개다.

반면 맥으로 옮겨 온 v3는 실제 일에 쓴 횟수가 적다.
맥 Claude Code 세션 기록에서 이 스킬을 부른 도구 호출은
9월 8일부터 10월 1일까지 31건이다(호출 번호로 중복을 걷어 낸 값이며
슬래시 명령이 본문으로 펼쳐진 헤드리스 테스트 세션 13개는 제외했다).
그중 19건은 테스트 주제였고 6건은 init과 status였다.
내 실제 작업을 위해 무장한 것은 6건이고 세션으로는 3개다.

결함 세 개는 그 몇 번 안 되는 사용 중에 드러났다.
9월 말에 /st init을 직접 돌리다가 인터뷰 질문 '현재 목표'에서 멈췄다.
"현재목표는 그냥 st 스킬을 썼을때 물어봐야할 문장아닌가싶은거지."
같은 날 이슈를 열었고 PR #32·#33으로 목표 질문을
init에서 무장 게이트로 옮겼다.

다음 날에는 심링크로 설치한 환경에서 /st를 부를 때마다
이름을 잘못 짚어 실패 호출이 한 번씩 발생했다.
"아니 실패비용을 없애려고해. 제일 싸게먹히는방법을 생각해봐"
에이전트는 README가 안내하는 설치 스크립트를 쓰는 사용자도
전원 같은 실패를 겪는다고 답했다.
그래서 내 설치를 손보는 대신 리포 규칙을 고쳐서
세션에 등록된 이름을 먼저 고르게 했다(PR #34).

10월 1일에는 부업 시장조사를 하던 중에 무장을 걸었다.
"이쯤에서 멘탈무장해보자. /st"
게이트에서는 "모듈은 추천+유니콘플레이북"으로 골랐다.
그런데 무장 에이전트는 웹 조사를 fetch로 하고 있었다.
"엥 웹조사하는 양반이 어사이드를못쓰면 크게 잘못된거지 고쳐"
PR #35는 브라우저를 직접 조작하는 에이전트인 aside를 쓰는 경로를 추가했다.
변경 기록에는, 그전까지 막힌 소스가 "차단"으로만 표시되는 바람에
팩이 가장 직접적인 시장 근거를 잃었다고 적혀 있다.

실패와 고친 것

4월에는 PC 쪽 스킬이 같은 답을 두 번 냈다.
직전 세션의 에이전트가 이를 막으려고 스킬을 고쳤는데도 증상은 그대로였다.
"아직도 두번 답변을 생성하는것같아. 벌써 고치라는것만 3번째야."
에이전트가 남긴 메모는 같은 문제를 4회 지적받은 것으로 기록했고
본문에 "텍스트 경고만으로 행동 변화 실패"라고 남겼다.

9월 v3 구현의 첫 이틀에는 설치와 기본값에서 사고가 났다.
설치 스크립트가 v3에서 지운 옛 검색 에이전트를 링크하고,
새 무장 에이전트는 빠뜨렸다.
그래서 플러그인이 아닌 경로로 설치한 사용자는
무장 경로 대신 범용 폴백으로 조용히 떨어지게 돼 있었다.
이 결함을 다룬 커밋의 시험하지 않음 칸에는
"실제 사용자 홈에 설치하지 않음. 샌드박스 HOME 드라이런으로만 확인"이 적혀 있다.
다음 날에는 진화 상태 변환 스크립트가 문제였다.
이 스크립트는 인자 없이 돌리면 기본 vault(진화 상태와 팩을 쌓는 내 저장소)를 곧바로 바꿨고
팀장 에이전트가 무인자 테스트로 내 실제 vault를 변환했다가 되돌렸다.
그래서 기본 동작을 미리보기로 바꾸고 쓰기 옵션을 줄 때만 실제로 쓰게 했다.

9월 17일에는 빈 임시 디렉터리를 vault로 지정한 헤드리스 실행에서
스킬이 그 디렉터리를 테스트 잔재로 판단하고 기본 vault로 폴백했다.
그 결과 실제 vault에 팩이 생겼다(이슈 #10).
이를 고친 커밋은 vault 경로 해석을 결정적 스크립트 하나로 옮겼고
기각한 안에는 이유를 남겼다.
"LLM 산문 해석 유지 | 같은 문구로 T1과 9/17 결과가 갈림"
4월 메모에 남은 것과 같은 교훈을 다섯 달 남짓 지나서 다시 배운 셈이다.

시기걸린 것고친 뒤
9월 8일실행 게이트 T1~T13 첫 실측 PASS 10 / FAIL 2 / BLOCKED 1. T2는 예산 절삭이 리서치를 끄고 되돌리지 않아 팩 3절 누락, T4는 digest 팩에 표지 0개, T13은 Codex에 명령 미등록9월 18일 재실행에서 T2·T4 PASS
9월 27일무장 한 번에 권한 프롬프트 10회(스킬 디렉터리 Read 9, 경로 해석 Bash 1)새 세션 무장 2회 합계 0회. Claude Code 2.1.283 default 권한 모드, 격리 설정 폴더와 가짜 HOME, 작업 디렉터리는 플러그인·vault 밖
10월 2일무장 에이전트가 WebFetch 요약을 인용 근거로 쓸 수 있었음원문을 curl로 읽게 바꿈(PR #36). 시험하지 않음 칸은 "실제 /st 무장 런에서 curl 호출"

같은 날에는 Codex 자동 리뷰 봇이 PR 네 개에 남긴 지적 4건을 이슈로 받아
PR #41로 처리했다.
그 자동 리뷰를 끈 사정은 따로 쓴 글에 있다.

지금 상태

[!맥락] 상태는 2026-10-19 확인 기준이다. 그 뒤로 리포 커밋과 열린 이슈는 없다.

SmartThink는 보관했다.
개발일지 목록에는 기간 2026-02-19~2026-10-02로 올라 있다.
마지막 커밋은 10월 2일의 PR #44 머지이고 최신 릴리스는 v3.0.2다.
이슈 26개는 전부 닫혔고 이슈를 연 계정은 모두 내 것이다.
스타와 포크는 0이다.
이 맥에는 리포 체크아웃을 가리키는 심링크로 설치돼 있다.

남은 일은 셋이다.
첫째, README가 안내하는 마켓플레이스 설치 경로가 낡았다.
마켓플레이스 리포는 SmartThink를 3.0.0 정식 릴리스 전인 9월 8일 커밋에 고정해 두었고
그 뒤로 커밋이 81개 더 쌓였다.
둘째, 10월 2일에 고친 curl 경로는 실제 무장 런에서 실행된 기록이 없다.
맥 Claude Code 세션의 마지막 호출이 10월 1일이기 때문이다(Codex 세션은 보지 않았다).

셋째, 진화도 그대로다.
vault의 진화 상태 파일은 v3 형식으로 바뀌지 않았고
마지막 수정 시각은 9월 7일 밤이다.
맥 세션 호출 31건 가운데 /st retain을 부른 것은 0건이다.
진화를 처음 의심한 것은 만든 지 이틀째였다.