페르소나

세션이 받는 것은 티켓만이 아닙니다. 프롬프트 맨 앞에 누가 이 일을 하는가가 먼저 붙고 그 자리에 들어가는 것이 페르소나입니다. 역할 하나를 적어 둔 마크다운 문서고, 앱에 전용 화면이 있어서 본문만 고치면 됩니다.

프롬프트의 첫 부분은 큐 전체가 같이 받는 코어 프로토콜이고 페르소나는 그 바로 뒤에 붙습니다. 어디에 무엇이 들어가는지는 아래 §프롬프트 조립 순서에서 다시 다룹니다.

persona: - 티켓이 정하는 역할

티켓의 persona: 값이 곧 프로필 이름입니다. 그 이름의 프로필 본문이 세션 프롬프트에 그대로 실립니다. 이 값을 정하는 주체는 티켓 하나하나입니다. 같은 프로젝트에서 같은 워커가 가져가도 티켓마다 다른 페르소나로 실행됩니다.

프로젝트를 만들면 pm, developer, qa, designer, archive-manager 다섯이 같이 뜹니다(첫 프로젝트 만들기). 앞의 넷은 티켓에 이름을 적어 호출합니다. archive-manager는 티켓을 끝낸 세션이 아카이브 티켓을 스스로 내면서 호출하고, 끝난 일에서 남길 사실만 골라 온톨로지에 옮깁니다(아카이빙과 온톨로지). 출발점일 뿐 고정 목록은 아닙니다. 복사된 순간부터 이 프로젝트의 것이니 화면에서 고치고 지우고 새로 만드시면 됩니다.

페르소나 하나 대신 여럿을 묶어 티켓에 달 수도 있습니다. 그러면 그 묶음의 리더가 티켓을 받아 누구 몫인지 정합니다(스쿼드). 만드는 자리는 이 화면입니다.

붙이는 기준은 하나입니다. 역할에 따라 판단이 달라지는 티켓인가를 봅니다. 같은 "버튼이 안 눌린다"도 qa가 받으면 재현 절차와 증거가 남고 developer가 받으면 원인을 찾아 고칩니다. 그렇게 결과가 달라지는 티켓에만 이름을 적으세요.

비워도 됩니다. 그게 정상 경로입니다. 페르소나 없이 실행되는 세션은 프로토콜과 티켓 지시만 받습니다. 경고도 남지 않습니다.

이름은 적혀 있는데 그 프로필이 없으면 경고만 뜹니다. 스쿼드 화면 맨 위에 프로필 파일이 없는 페르소나가 있습니다가 붙고 목록의 그 줄에는 프로필 없음 배지가 붙습니다. 엔진은 막지 않습니다. 로그에 WARN 한 줄을 남기고 페르소나 없이 그대로 실행합니다. 티켓이 멈추지는 않되 그 세션은 역할도 권한도 모르는 채로 시작합니다.

스쿼드 화면 - 왼쪽에서 고르고 오른쪽에서 고칩니다

헤더의 스쿼드입니다. 페르소나를 고치는 자리가 여기입니다. 주소는 /p/<프로젝트>/personas 그대로라 걸어 둔 링크도 열립니다. 왼쪽 칸이 목록이고 오른쪽 칸이 지금 고른 하나입니다. 창이 좁으면 목록이 위로 가고 편집기가 그 아래로 내려옵니다.

목록 맨 위에 모아보기가 있습니다. 체크 하나가 왼쪽 목록의 축을 바꿉니다. 켜면 스쿼드가 최상위고 페르소나는 그 안에 듭니다. 끄면 스쿼드와 페르소나 두 묶음이 나란히 뜹니다. 스쿼드를 짜는 동안은 켜 둡니다. 페르소나를 하나씩 수정할 때 끄시면 됩니다.

기본은 켜짐입니다. 끈 것은 어디에도 저장하지 않습니다. 새로 고치면 다시 켜져 있습니다. 아래 접힘과 같은 규칙입니다. 이 화면의 주소가 담는 것은 지금 고른 이름 하나입니다. 그래서 어느 상태에서 링크를 걸어 두어도 받는 사람 화면은 켜진 채로 열립니다.

켜 두면 최상위 줄이 스쿼드입니다. 페르소나는 자기가 든 스쿼드 안에 접혀 있습니다. 줄 왼쪽 끝의 >를 누르면 펴지고 멤버가 members 순서 그대로 자식 줄이 됩니다 (스쿼드). 접힌 줄은 그 멤버들의 색 점을 같은 순서로 겹쳐 쌓고 이름과 멤버 n을 표시합니다. 여섯 명부터는 앞의 다섯만 그립니다. 수는 멤버 n이 이미 알려 줍니다. 점 위에 마우스를 올리면 전원 이름이 뜹니다. 스쿼드 자체 색은 없습니다. 멤버 중에 프로필이 없는 이름이 하나라도 있으면 멤버 프로필 없음이 붙습니다.

처음 열면 목록이 다 접혀 있습니다. 첫 스쿼드가 골라져 있고 오른쪽 칸도 그 스쿼드입니다. 페르소나를 고른 뒤에는 그 페르소나가 든 스쿼드만 펴져 있습니다. /personas/writer 같은 주소로 바로 들어가도 마찬가지입니다. 손으로 폈다가 새로 고치면 다시 접힙니다. 접힘은 어디에도 저장하지 않습니다.

한 페르소나가 두 스쿼드에 들어 있으면 양쪽에 다 뜹니다. 그 이름을 고르면 두 줄에 선택 표시가 같이 붙고 두 스쿼드가 같이 펴집니다. 어느 줄을 눌러도 가는 주소가 하나라서 그렇습니다.

어느 스쿼드에도 안 든 페르소나는 맨 아래 스쿼드 없음에 뜹니다. 이 묶음은 접히지 않습니다. 접으면 어디에도 안 든 페르소나가 화면에서 사라지니까요. 새 프로젝트에서 여기 떠 있는 것은 archive-manager 하나입니다. default가 나머지를 포함합니다. 반대로 스쿼드를 전부 지우면 묶음 제목이 없어지고 페르소나가 평평하게 한 줄씩 뜹니다. 스쿼드 없음도 같이 사라집니다. 나눌 것이 없으면 이름 붙일 것도 없습니다. 모아보기도 그때는 안 나옵니다. 켜고 끌 축이 없으니 같은 화면입니다.

끄면 묶음 둘이 나란히 뜹니다. 스쿼드가 위, 페르소나가 아래입니다. 스쿼드 줄은 겹친 색 점과 이름과 멤버 n을 그대로 표시합니다. 사라지는 것은 >와 그 아래 자식 줄뿐입니다. 멤버가 누구인지 보려면 줄을 골라 오른쪽 칸을 여세요.

페르소나 묶음에는 전원이 한 번씩 뜹니다. 스쿼드에 든 이름도 여기 있고 두 스쿼드에 걸친 이름도 한 줄뿐입니다. 축이 이름이니까요. 스쿼드 없음은 안 나옵니다. 전원이 이미 떠 있는 목록에서 일부를 다시 모아 둘 자리가 없습니다.

켜고 끄는 사이에 잃는 것은 없습니다. 고른 줄이 그대로고 오른쪽 칸도 안 닫힙니다. 펴 뒀던 스쿼드도 그대로 남습니다. 끈 채로 페르소나를 하나 고르고 다시 켜면 그 이름이 든 스쿼드가 펴진 채로 돌아옵니다.

멤버를 넣고 빼는 조작은 왼쪽에 없습니다. 켜도 꺼도 그렇습니다. 줄을 끌어다 옮길 수 없고 넣고 빼는 버튼도 없습니다. 배정은 스쿼드 줄을 골라 오른쪽 칸 멤버 절에서 합니다 (스쿼드).

페르소나 줄 하나가 그 페르소나의 전부를 알려 줍니다. 윗줄에 색 점과 이름이 오고, 아랫줄에 참조하는 티켓, 스킬 n, 메모리 n, 상한 n, 예산이 붙습니다. 값이 없는 종류는 아예 안 나옵니다.

고른 페르소나는 주소에 남습니다 - /p/<프로젝트>/personas/<이름>. 링크로 옮겨 두면 다음에 그 줄이 고른 채로 열리고 뒤로가기를 누르면 목록 선택과 오른쪽 칸이 같이 돌아갑니다.

오른쪽 칸 상단은 두 줄입니다. 탭을 열기 전에 이 페르소나가 지금 어떤 상태인지 알려 주는 자리고 탭을 바꿔도 여기는 안 바뀝니다.

윗줄에 넷이 뜹니다. 색 점, 이름, 프로필 첫 줄, 삭제. 프로필 첫 줄은 문서 맨 위 한 줄을 글자 그대로 가져옵니다. 기본으로 깔리는 프로필은 첫 줄이 제목이라 # PM이 그대로 옵니다. 그 줄을 역할 한 문장으로 바꿔 두면 그 문장이 여기 보입니다. 칸보다 길면 뒤가 잘리니 마우스를 올려 전문을 읽으세요. 프로필 파일이 아직 없는 페르소나는 그 자리에 프로필 없음 배지가 대신 뜹니다.

아랫줄은 작은 글씨 셋입니다. 도는 세션 3 / 상한 5, 12분 전 9f2c1a04 닫음, 스쿼드 default. 값이 없는 자리는 비어 있습니다. 한 번도 실행되지 않은 페르소나는 가운데가 통째로 없고 어느 스쿼드에도 안 든 페르소나는 오른쪽이 없습니다. 상한을 안 걸어 뒀으면 도는 세션 3만 남습니다.

가운데 해시는 링크입니다. 누르면 그 티켓 상세가 열립니다. 이 페르소나가 방금 무엇을 닫았는지는 거기서 읽으세요.

도는 세션 3이 알려 주는 것은 수입니다. 이 이름을 달고 지금 진행중인 티켓이 셋이라는 뜻입니다. 0이어도 경고는 아닙니다. 그동안 호출할 티켓이 없었다는 뜻이라 색도 쓰지 않습니다.

상한 5는 읽기 표시입니다. 여기서는 못 고칩니다. 고치는 자리는 프로필 탭 맨 위 디스패치 정책 절입니다(아래 §디스패치 정책).

상단 아래는 탭 둘입니다(다음 절). 디스패치 정책 두 값, 프로필 편집기와 저장, 스킬 절, 메모리 절은 프로필 탭 안에 이 순서로 뜹니다. 편집기는 프로토콜 화면과 같은 두 모드입니다. 기본은 위지윅입니다. 오른쪽 위 원문으로를 누르면 PROFILE.md의 마크다운이 그대로 나옵니다. 어느 쪽에서 고치든 파일에서 바뀌는 것은 고친 자리뿐입니다. 건드리지 않은 줄은 그대로 남습니다.

  • 목록 줄의 예산이 측정하는 것. 프로필 본문과 켜 둔 스킬 목록을 더한 크기입니다. 뒤에 예산 5,000 B가 같이 뜹니다. 매 디스패치 프롬프트에 전문으로 실리는 몫이 이 둘뿐이라 그렇습니다. 넘으면 5,387 / 5,000 B 초과처럼 낱말 하나가 붙습니다. 단위는 프로토콜 화면의 배지와 같은 바이트라 터미널의 wc -c와 나란히 놓고 읽으시면 됩니다.
  • 메모리는 이 합에 안 듭니다. 프롬프트에 안 실리니까요. 대신 프로필 탭 메모리 절 제목에 자기 수가 따로 뜨고 거기 붙는 것은 회고 예산 150,000 B입니다(AGENTS.md, 페르소나 memory/ 합). 사람이 안 건드려도 자라는 자리가 여기뿐입니다. 손대지 않은 페르소나의 수가 다음 주에 커져 있으면 그사이 세션이 회고를 남긴 겁니다. 그 절을 펴 보세요.
  • 다른 줄을 골라도 앞에서 고치던 내용은 그대로 남습니다. 저장은 고른 페르소나에만 보이므로, 저장 안 한 페르소나는 목록 줄에 저장 안 됨이 붙습니다.
  • 프로필이 없는 페르소나는 빈 편집기로 열립니다. 저장이 곧 생성입니다. 티켓이 호출하는 이름을 그 자리에서 채우시면 됩니다.

색 점을 누르면 팔레트가 열립니다. 고르는 자리는 오른쪽 칸 상단 하나뿐이고 목록 줄의 점은 읽기 전용입니다. 프로젝트 만들기로 새로 만든 프로젝트는 이 화면을 처음 열어도 다섯 점이 이미 차 있습니다. 프로젝트를 만드는 순간에 앱이 페르소나마다 팔레트 색을 하나씩, 서로 겹치지 않게 뽑아서 넣어 두기 때문입니다. 뽑힌 색이 마음에 안 들면 종전과 똑같이 오른쪽 칸 상단에서 다시 고르시면 됩니다. 프로젝트 등록으로 이미 있는 큐를 얹었다면 종전대로 중립 점으로 열리고, 색은 사람이 골라야 붙습니다. 고른 색은 보드 카드와 테이블, persona 필터, 발행 폼에 그대로 적용됩니다. 색은 이 컴퓨터에만 저장되고 프로젝트에는 안 들어갑니다. 다른 머신에서 열면 중립 점입니다. 색만으로 뜻을 전하지 않으므로 이름 텍스트는 어디서나 점과 같이 옵니다.

활동 탭 - 지금 하는 일과 요즘 한 일

탭 이름은 활동과 프로필입니다. 처음 열면 활동이 떠 있습니다. 이 페르소나가 지금 무엇을 맡고 있고 요즘 무엇을 닫았는지 읽는 자리입니다. 여기서 고칠 것은 하나도 없습니다. 고칠 수 있는 항목은 옆 프로필 탭에 다 모여 있고 순서도 종전 그대로입니다.

프로필을 고치러 온 사람은 목적을 갖고 와서 탭 한 번을 누릅니다. 활동은 몰라서 보는 값이고 다른 화면에서는 확인할 방법이 없습니다. 그래서 활동이 먼저 열립니다.

탭은 주소에 안 담깁니다. 목록에서 다른 줄을 고르면 다시 활동으로 열립니다. 프로필을 고치던 중에 활동을 보러 와도 고친 내용은 사라지지 않습니다. 그동안 프로필 탭 라벨에 저장 안 됨이 붙어 있으니 어디에 저장하지 않은 수정이 남았는지도 보입니다.

절은 넷입니다.

  • 지금은 이 페르소나가 지금 맡고 있는 진행중 티켓입니다. 줄마다 해시와 제목, 티켓 종류 (작업 요구사항 피드백 답변), 어느 워커가 맡았는지, 가져간 뒤로 지난 시간, 그리고 ## 진행 계획의 진행률 5/8이 뜹니다. 계획을 안 적은 티켓은 그 자리를 비웁니다. 세션이 ## 블록을 남기고 멈춘 티켓에는 막힘이 붙습니다. 맡은 티켓이 없으면 지금 도는 티켓 없음 한 줄입니다.
  • 기다리는 것은 사람 답을 기다리다 잠긴 티켓입니다. 며칠째인지가 같이 뜹니다. 어쩌다 잠기는지는 요구사항 접수하기의 되묻기 절에 있습니다. 이 절은 비어 있으면 화면에 아예 안 나옵니다. 안 보이는 것이 정상입니다. 사라졌다고 찾지 마세요. 이 페르소나가 지금 사람한테 물어 놓은 것이 없다는 뜻입니다.
  • 최근은 이 페르소나가 닫은 티켓 최신 스물입니다. 줄마다 해시와 제목, 종류, 얼마 전에 닫혔는지, 걸린 시간, 어느 워커였는지가 뜹니다. 스물이 넘어가면 절 제목 오른쪽 보드에서 보기를 누르세요. 이 페르소나로 걸러 둔 보드가 열립니다.
  • 30일은 숫자 넷과 막대 하나입니다. 닫은 티켓, 소요 중앙값, 되돌아옴, 낸 티켓. 막대는 하루에 몇 장을 닫았는지고 위에 마우스를 올리면 날짜와 수가 뜹니다. 낸 티켓은 이 페르소나가 닫은 티켓에서 새로 나온 티켓 수입니다. pm이나 designer가 남기는 것이 대개 다음 티켓이라 이 수가 큽니다. developer가 0에 가까운 것도 정상입니다.

되돌아옴은 실패한 횟수가 아닙니다. 세는 것은 그 티켓이 몇 번 다시 디스패치됐는가입니다. 세션이 일을 끝내지 못한 채 끊기면 티켓은 대기로 돌아가고 다음 tick이 그것을 다시 가져가 새 세션에 넘깁니다. 그 왕복이 한 번 있었으면 되돌아옴 1회입니다.

끊기는 경위는 대개 셋입니다. 계정 한도에 걸려 세션이 그 자리에 멈추는 것, 세션이 오류로 죽는 것, 오래 진행되다가 회수되는 것. 셋 다 페르소나의 판단과는 상관없는 사건입니다. 어디서 끊겼는지는 워커 화면과 로그 읽는 법이 이유까지 알려 줍니다.

이 숫자에 든 티켓은 결국 다 닫혔습니다. 같은 티켓이 바로 위 최근 목록에도 닫은 티켓 수에도 떠 있습니다. 되돌아옴이 알려 주는 것은 그 티켓 하나를 끝내는 데 세션을 몇 번 더 소모했느냐입니다. 이 값이 나타내는 것은 비용입니다.

성공률은 없습니다. 일부러 안 만들었습니다. 끊긴 세션을 실패로 세어 비율을 내면 이 큐의 pm이 33%로 계산됩니다. 그러는 동안 그 pm이 닫은 티켓은 590장이 넘습니다. 그러니 그 비율은 실제와 어긋납니다. 성공률 자리를 비워 두고 닫은 티켓 수를 보여 줍니다. 그것이 실제로 남은 결과입니다.

소요 중앙값은 평균이 아닙니다. 이 페르소나의 세션을 걸린 시간순으로 줄 세운 다음 가운데 하나를 집은 값이고 소요 중앙값 9.2m처럼 분 단위로 뜹니다. dira에서는 한 실행이 곧 한 세션입니다. 한도에 걸려 몇 시간 동안 진행되다 끝난 회차가 하나 섞이면 평균이 그쪽으로 치우칩니다. 그러면 대부분의 세션이 실제로 얼마나 걸리는지를 못 보여 줍니다. 중앙값은 그 하나에 영향을 받지 않습니다.

소요와 되돌아옴은 로그가 남아 있는 만큼만 참입니다. 집계 범위는 30일인데 이 큐의 runner.log가 그보다 짧으면 짧은 쪽이 실제 범위입니다. 측정하지 못한 자리는 0으로 채우지 않고 비웁니다.

디스패치 정책 - 상한과 엔진

프로필 탭 맨 위 디스패치 정책 절에 값이 둘 있습니다. 프로필, 스킬, 메모리와 달리 이 둘은 프롬프트에 한 자도 안 실립니다. 엔진이 티켓을 고를 때 읽는 값입니다.

상한은 이 페르소나가 동시에 맡을 수 있는 진행중 티켓 수입니다. 기본은 없음입니다. 그때는 워커가 큐 앞에서부터 훑어 나오는 대로 가져가므로 페르소나 하나가 워커 여럿을 한꺼번에 차지하는 상황이 생깁니다 - 아카이빙이 여섯을 맡으면 그동안 나머지 일이 대기 상태로 남습니다. 2를 넣으면 진행중이 둘일 때 워커가 그 페르소나의 티켓을 건너뛰고 다음 후보로 넘어갑니다. 0은 디스패치 정지입니다. 잠시 멈춰 두고 싶은 페르소나에 쓰세요.

엔진은 이 페르소나의 세션을 무엇으로 실행할지 정합니다. 기본은 지정 없음이고 그때는 그 티켓을 가져간 워커 자신의 엔진이 실행합니다(워커 늘리기). 값 아래 회색 한 줄이 지금 워커들이 무엇을 쓰는지 알려 줍니다. 여기서 고르면 어느 워커가 집든 이 페르소나는 그 엔진과 모델로 실행됩니다. 지정 해제를 누르면 다시 워커 쪽으로 돌아갑니다.

엔진이 claude일 때만 모델 아래에 effort 칸이 있습니다. 세션이 얼마나 공들여 생각하고 답할지 정하는 값이고, 지정 안 함이 기본입니다. 그때는 claude가 정한 기본값으로 돕니다. low부터 max까지 다섯 단계 가운데 하나를 고르면 엔진 값이 claude · sonnet · effort medium처럼 바뀝니다. 모델을 안 골랐으면 claude · effort medium, effort를 안 골랐으면 claude · sonnet입니다. codex, grok, agy에는 이 칸이 없고, 그쪽으로 엔진을 바꾸면 고른 effort도 함께 비워집니다.

둘 다 저장하는 순간 파일이 바뀌지만, 걸리는 것은 다음 티켓 선정부터입니다.

프로필에 적는 것 - 역할, 권한, 판단 기준

무엇을 쓸지는 프로필 바로 앞줄에 이미 적혀 있습니다. 엔진은 세션에게 프로필을 넘기면서 아래 프로필이 당신의 역할·권한·판단 기준이라고 알려 주고, 티켓을 수행하는 동안 그 페르소나로 일관되게 행동하라고 지시합니다. 세션은 그 셋을 찾으면서 읽습니다. 그러니 그 셋을 적으면 됩니다.

  • 역할은 한 줄입니다. 기본 다섯은 전부 첫 문장이 역할입니다. qa는 "됐다"는 주장을 깨는 것, developer는 티켓 하나를 돌아가는 코드로 바꾸고 그게 돌아간다는 증거를 남기는 것, archive-manager는 온톨로지화 전담. 이 줄이 나머지를 다 정합니다. 이 줄이 모호하면 아래를 길게 적어도 방향이 정해지지 않습니다.
  • 권한은 어디까지 수정해도 되는지를 규정합니다. qa 프로필은 버그를 찾아도 직접 고치지 말고 티켓을 만들어 넘기라고 적어 뒀습니다. 넘기는 방법까지 같이 적혀 있어야 세션이 경계 앞에서 멈추지 않습니다.
  • 판단 기준은 갈림길에서 어느 쪽인지를 미리 정해 둡니다. developer의 첫 번째로 통하는 방법이 정답이다, designer의 라이트/다크 둘 다 정의하지 않은 색은 정의된 게 아니다. 취향을 적은 줄이 아니고 판정 문장이므로 다음 세션도 같은 자리에서 같은 쪽을 고릅니다.
  • 하지 않는 것도 적습니다. qa 프로필의 마지막 절이 그것입니다. 못생긴 건 designer 소관이고 자기는 스펙과 다른 것만 본다고 고정해 뒀습니다. 페르소나가 여럿인 프로젝트에서 이 줄이 서로의 영역을 지킵니다.

다섯 다 1인칭입니다. 넷은 내 일은으로 시작하고 archive-manager 하나만 온톨로지화 전담이다로 시작합니다. 읽는 쪽이 세션이라, 그 문장이 그 자리에서 세션 자신의 말이 됩니다.

막히면 기본 다섯을 여세요. 제일 짧은 designer가 20줄, 제일 긴 pm이 91줄이고 나머지 셋은 그 사이입니다. 줄을 고르면 원문이 그대로 보이니, 새 페르소나는 그중 가까운 하나를 베껴 시작하는 편이 빠릅니다.

프로필에 적지 않는 것 - 프로토콜과 티켓의 몫

프로필은 그 페르소나의 모든 디스패치에 실리므로 목록 줄의 n자가 매 세션 소모하는 크기입니다(위 §스쿼드 화면). 다 넣고 싶어지더라도 다른 자리가 있는 문장은 그 자리로 보내세요.

  • 전원에게 참인 규약은 프로토콜입니다. 커밋과 보고 형식, 일을 넘기는 방법, 막혔을 때 무엇을 남기는가를 적는 자리입니다. 티켓이 고르지 않고 전원이 같은 것을 받는 자리라, 프로필에 또 적으면 한 프롬프트에 같은 말이 두 번 실립니다. 다음 장 프로토콜이 그 파일을 다룹니다.
  • 이번 한 번만 참인 지시는 티켓입니다. "이 파일의 이 절을 이렇게 고쳐 주세요"는 ## Goal과 ## Done when의 자리입니다(티켓 직접 발행하기). 프로필에 넣으면 그 일이 끝난 뒤에도 모든 세션이 지난 티켓의 지시를 계속 받습니다.
  • 이 프로젝트에서 해 보고 알아낸 것은 메모리입니다. 아래 §메모리에서 다룹니다. 사람이 앉아서 채우는 자리가 아니라는 것만 여기서 말해 둡니다.

프로필과 티켓 지시가 어긋나면 티켓이 우선합니다. 엔진이 프로필 앞에 그렇게 적어 보냅니다 - 티켓을 따르고 충돌한 사실을 티켓 본문에 남기라고. 프로필에 예외를 미리 다 적어 두지 않아도 되는 이유입니다.

스킬 - 이 페르소나가 먼저 쓰는 도구

프로필 탭의 스킬 절입니다. 스킬 추가를 누르면 이 컴퓨터에 설치된 스킬을 검색해 여러 개를 고를 수 있습니다. 고른 목록은 personas/<이름>/skills.md에 저장되고 그 페르소나의 프롬프트에서 프로필 블록 바로 뒤에 실립니다. 새로 만든 프로젝트에서는 고른 적이 없는데도 이 절이 이미 차 있습니다. 프로젝트 만들기를 누른 그 시각에 앱이 스킬을 GitHub에서 받아 이 컴퓨터에 깔고 페르소나별로 나눠 적기 때문입니다. 몇 개를 받는지는 만들기 폼의 한국어로 일하는 프로젝트 체크 표시가 정합니다. 끄고 만들면 여섯이고, 켜고 만들면 아홉입니다.

조건 없이 붙는 여섯이 먼저입니다. stop-slop과 find-skills는 다섯 페르소나가 전부 받습니다. 그 위에 pm이 brainstorming, developer가 ponytail, qa가 systematic-debugging, designer가 frontend-design을 하나씩 더 받고, archive-manager는 그 두 줄로 끝납니다.

체크 표시를 켜고 만들면 여기에 셋이 더 붙습니다. noslop-write noslop-review noslop-fix, 한국어 글에서 기계가 쓴 문체를 제거하는 스킬이고 이것도 다섯 페르소나가 전부 받습니다. 그래서 pm과 developer, qa, designer는 여섯 줄이 되고 archive-manager는 다섯 줄이 됩니다.

그 셋에는 조건이 하나 더 붙습니다. 세 스킬 다 절차 안에서 python3 -m noslop 명령을 호출하기 때문에, 앱은 만들기 직전에 이 컴퓨터에 그 명령이 있는지 한 번 확인합니다. 없으면 셋을 받지도 않고 줄도 안 씁니다. 체크 표시를 켜고 만들었는데 noslop으로 시작하는 줄이 한 개도 안 보인다면 이유가 이것입니다. 나중에 그 명령을 깔았다면 아래 스킬 추가의 주소 칸에 https://github.com/hsol/noslop/tree/HEAD/skills/noslop-write처럼 세 주소를 하나씩 붙여 넣으세요. 같은 상태가 됩니다. 앱이 만들어 둔 큐를 나중에 다시 확인하지는 않습니다.

같은 이름이 이 컴퓨터에 이미 깔려 있었으면 쓰던 것을 그대로 둡니다. 덮지 않고, 이름을 바꿔 하나 더 깔지도 않습니다. 그래도 그 페르소나의 줄은 붙습니다. 인터넷이 끊긴 채로 만들면 만들기 자체는 성공하고 스킬만 0개입니다. 연결이 돌아온 뒤에 그 이름들을 GitHub에서 찾아 주소를 아래 스킬 추가의 주소 칸에 붙여 넣으면 같은 상태가 됩니다. 이미 있는 큐를 프로젝트 등록으로 얹은 프로젝트는 이 목록을 하나도 안 받습니다. 쓰던 큐의 스킬 취향까지 앱이 정할 자리가 아니라서, 그 프로젝트는 사람이 고를 때까지 0개입니다.

세션은 설치된 스킬 목록을 이미 알고 있습니다. 여기서 넣는 것은 지목입니다. "너는 이 일에 이걸 먼저 쓴다"는 뜻입니다.

잠깐 비활성으로 둘 때는 끄기입니다. 줄 오른쪽의 끄기를 누르면 그 줄이 목록에서 빠져 아래 비활성 밑으로 내려갑니다. 다시 쓸 때는 그 줄의 켜기를 누르시면 됩니다. 확인 창은 없고 저장을 기다리지도 않습니다. 누른 순간 그 이름이 personas/<이름>/skills-off.md로 옮겨 적힙니다. 스킬 추가 다이얼로그의 후보 목록에는 꺼 둔 스킬도 그대로 있습니다. 거기서 다시 체크해도 켜진 쪽으로 옵니다.

제거와 어디서 다른지 봐 두세요. 둘 다 이 컴퓨터의 설치본은 한 바이트도 안 건드립니다. 지워도 스킬은 그 자리에 있고 후보 목록에 그대로 뜹니다. 다른 점은 하나입니다. 제거는 "이 페르소나에 이걸 붙여 뒀다"는 기록까지 같이 지웁니다. 되돌리려면 무엇을 붙여 뒀는지 사람이 기억해야 합니다. 끄기는 그 기록을 남긴 채 프롬프트에서만 뺍니다. 붙여 둔 스킬이 열 줄인데 그중 비싼 하나만 잠깐 끄고 싶을 때 쓰는 기능입니다.

꺼 둔 스킬은 프롬프트에 한 자도 안 갑니다. 이름도 설명도 안 가고 파일 경로조차 안 갑니다. 세션은 꺼 둔 스킬이 있다는 사실을 모릅니다. 예산도 켜 둔 것만 셉니다. 그래서 스킬을 전부 끄면 왼쪽 목록 줄에 스킬 n이 사라지는데 절을 펼치면 비활성 밑에 목록이 그대로 있습니다. 고장이 아닙니다. 그 메타가 측정하는 것은 이 페르소나가 프롬프트에서 차지하는 크기이고, 꺼 둔 스킬의 몫은 0입니다. 켜 둔 것이 하나도 없으면 절 제목 아래 한 줄이 켜 둔 스킬이 없습니다로 시작하는 문장으로 바뀝니다.

  • 예산에 스킬 몫이 들어가는 것은 목록도 프로필과 같이 실리기 때문입니다. 절 제목에 그 몫만 따로 뜨는데 예산이 없습니다. 예산이 붙는 것은 프로필과 합친 수 하나뿐입니다.
  • 같은 스킬을 여러 페르소나가 같이 골라도 됩니다. 막는 규칙이 없습니다. 파일이 페르소나별로 따로 있어서 서로를 들여다보지 않습니다. pm과 qa가 같은 스킬을 붙여 둬도 두 파일에 각자 한 줄로 뜹니다. 한쪽에서 끄거나 지워도 다른 쪽은 바뀌지 않습니다. 대신 "이 스킬을 쓰는 페르소나 전부"를 세어 주는 자리는 없습니다. 그건 페르소나를 하나씩 펴 보는 수밖에 없습니다.
  • 0개가 되면 파일을 지웁니다. 빈 파일을 남기지 않습니다. 꺼 둔 목록도 같은 규약입니다. 전부 다시 켜면 skills-off.md가 사라집니다.
  • claude 엔진에서만 실립니다. 다른 엔진에는 스킬이라는 개념이 없어서, 그대로 실으면 없는 도구를 쓰라는 문장이 갑니다. 절 안에 그 사실이 한 줄로 적혀 있습니다.
  • 프로필이 없으면 스킬도 안 실립니다. 스킬 블록은 페르소나 프롬프트 안에만 붙는 것이라, 역할을 모르는 세션에 선택만 얹을 자리가 없습니다.
  • 다이얼로그의 후보 목록은 이 컴퓨터 기준입니다. 다른 머신에서 고른 스킬은 이 머신에 없음으로 남고 지워지지 않습니다. 고른 결과는 프로젝트에 있어서 프로젝트를 옮기면 따라갑니다.
  • 목록에 없으면 그 자리에서 설치할 수 있습니다. SKILL.md가 든 폴더를 다이얼로그에 끌어다 놓거나, 찾아보기로 .md나 .skill 파일 하나를 고르면 됩니다.

GitHub에서 본 스킬은 주소만으로 깔 수 있습니다. 찾아보기 줄 바로 밑에 주소 칸과 설치 버튼이 있습니다. 브라우저 주소창을 복사해 붙이고 설치를 누르세요. Enter도 같습니다. 내려받고 압축을 풀고 폴더를 찾아 끌어다 놓던 절차가 한 줄로 줄어듭니다.

붙일 수 있는 주소는 이 여섯입니다.

붙인 주소깔리는 것
https://github.com/owner/repo그 레포 통째
.../tree/<브랜치>그 브랜치의 레포 통째
.../tree/<브랜치>/<경로>그 폴더만
.../blob/<브랜치>/<경로>/SKILL.md그 파일이 든 폴더 통째
https://raw.githubusercontent.com/의 파일 주소위와 같습니다
skills.sh의 .skill 주소그 파일을 끌어다 놓은 것과 같습니다

파일을 가리켜도 그 한 장만 오지는 않습니다. 스킬은 SKILL.md와 그 옆의 references/가 같이 있어야 동작하므로, 파일 주소를 붙이면 그 파일이 든 폴더를 통째로 받습니다.

받는 동안 찾아보기 줄의 안내 문장이 바뀌어 최대 30초라고 알려 줍니다. 레포를 통째로 받으니 파일보다 오래 걸립니다. 성공하면 후보 목록에 그 스킬이 뜨고 체크까지 켜집니다. 검색칸이 방금 깐 이름으로 채워져 목록이 그 한 줄로 좁혀지고 주소 칸은 비워집니다. 실패하면 주소가 그대로 남습니다. 고칠 주소가 거기 있어야 하니까요.

받는 호스트는 넷입니다 - github.com, codeload.github.com, raw.githubusercontent.com, skills.sh. https가 아니거나 이 넷 밖이면 요청조차 내지 않습니다. 사내 GitLab이나 개인 서버에 둔 스킬은 이 칸으로 못 들여옵니다. 내려받아 폴더째로 창에 놓으세요. 릴리스 페이지에 달린 첨부 파일 주소도 위 표 밖이라 거절됩니다. .tar.gz든 .zip이든 같습니다.

거절당하면 다이얼로그는 열린 채로 남고 사유 한 줄이 붙습니다. 주소로 설치할 때만 나는 사유는 넷입니다.

  • 이 주소로는 받을 수 없습니다. 모양이 위 표 밖이거나 호스트가 넷 밖입니다. 고칠 것은 붙인 주소입니다.
  • 주소에서 받지 못했습니다. 주소가 맞는지, 공개된 레포인지 보세요. 비공개 레포에는 로그인도 토큰도 붙이지 않습니다. 자격증명을 다루는 화면을 하나 더 여는 대신 그 경로를 만들지 않았고, 그래서 비공개 레포의 404가 이 문장으로 옵니다. git clone으로 받아 그 폴더를 창에 놓으세요.
  • 받는 크기가 상한을 넘어 끊었습니다. 20MB에서 끊습니다. 폴더 주소를 붙여도 레포 전체를 받은 다음 그 폴더만 남기는 순서라, 스킬 하나가 작아도 레포가 크면 여기 걸립니다. 이때도 내려받아 그 폴더만 놓으세요.
  • 주소가 가리키는 폴더가 그 레포에 없습니다. 모양은 맞았고 브랜치나 경로가 틀렸습니다. main인지 master인지, 경로 마지막 성분이 맞는지 보세요.

그 밖의 거절은 파일로 들여올 때와 같은 문장입니다. 통로가 하나라서 판정도 하나입니다. 같은 스킬을 두 번 깔면 이름이 겹쳐 거절되고 먼저 깔린 쪽은 한 바이트도 바뀌지 않습니다.

깔린 자리는 ~/.claude/skills/<이름>/입니다(CLAUDE_CONFIG_DIR을 쓰면 그 아래입니다). 손으로 깐 스킬과 구별이 없습니다. 어느 주소에서 왔는지는 어디에도 안 적습니다.

깐 스킬을 지우거나 갱신하는 화면이 이 제품에 없습니다. 위에서 본 제거도 끄기도 디스크는 안 건드립니다. 지우는 자리는 Finder이고 rm입니다.

open ~/.claude/skills             # Finder로 그 폴더를 연다
rm -rf ~/.claude/skills/<이름>    # 지운다
text

갱신도 같은 방법입니다. 지우고 주소를 다시 붙이세요. 순서를 바꾸면 이름이 겹쳐 거절됩니다.

주소로 깔아 놓고 취소를 눌러도 스킬은 머신에 남습니다. 깔린 것은 이 컴퓨터의 사실이고 붙여 둔 것은 페르소나의 사실이라, 취소가 되돌리는 것은 뒤쪽 하나입니다.

메모리 - 세션이 쓰고 사람은 지우는 파일

스킬 절 아래가 메모리 절입니다. 한 줄이 개념 하나입니다. 줄에는 파일명과 본문 첫 줄이 뜨고 누르면 그 자리에서 전문이 펼쳐집니다. 있는 것은 이게 전부입니다. 추가도 편집도 없고 삭제만 있습니다.

쓰는 쪽이 세션이라서 그렇습니다. 티켓을 끝낸 세션은 결과를 적기 직전에 자기 페르소나의 메모리를 들여다봅니다. 이번 일에서 알아낸 것 중 다음 세션이 미리 알았으면 시간을 아꼈을 것이 있으면 한 장 남기고 없으면 아무것도 하지 않습니다. 프로필이 "너는 누구다"라면 메모리는 "여기서 해 보니 이렇더라"입니다. 사람이 앉아서 쓰는 글이 아니므로 채울 칸도 없습니다.

파일 하나에 개념 하나고 파일명이 곧 개념 이름입니다. 같은 것을 또 배우면 그 파일을 고쳐 씁니다. 메모리가 개념 수만큼만 자라는 이유입니다.

  • 목록 줄에 메모리 n이 붙습니다. 0장이면 그 메타는 안 나오고 절은 빈 채로 남아 누가 채우는 자리인지만 한 줄로 알려 줍니다.
  • 프롬프트에는 본문 없이 그 위치만 실립니다. 디렉터리 경로와 찾는 방법 몇 줄이 전부고, 세션은 티켓의 낱말로 그 디렉터리를 grep해 필요한 파일만 엽니다. 파일이 쌓여도 프롬프트는 그 자리에 그대로 있습니다.
  • 절 제목의 수는 이 디렉터리 전문의 크기이고 뒤에 회고 예산 150,000 B가 뜹니다(AGENTS.md). 목록 줄의 예산과는 별개입니다. 프롬프트에 실리는 몫이 아니니까요.
  • 페르소나 단위이고 프로젝트 안에 있습니다. 워커가 바뀌어도 같은 페르소나면 같은 메모리를 받고 프로젝트를 옮기면 따라갑니다. 이 컴퓨터에만 남는 값이 아닙니다.
  • 엔진을 가리지 않습니다. 스킬과 다른 점입니다. 스킬은 claude에만 있는 개념이지만 메모리는 이 프로젝트에서 알아낸 사실이라 어느 엔진에나 참입니다.
  • 프로필이 없으면 메모리도 안 실립니다. 스킬과 같은 이유입니다.

틀린 것은 지우시면 됩니다. 세션이 남긴 것을 아무도 검사하지 않습니다. 잘못 배운 한 줄도 그 디렉터리에 그대로 남아, 지울 때까지 다음 세션들이 계속 그걸 읽습니다. 줄 오른쪽 삭제를 누르면 지울 파일의 경로를 보여 주고 확인을 받습니다. 되돌릴 수는 없습니다. 이 화면에 추가가 없으니 지운 것을 다시 만들 자리도 없습니다. 지울지 말지 판단이 서지 않으면 본문 끝을 보세요. 세션은 그 개념을 배운 티켓 해시를 출처: 줄에 적게 되어 있습니다. 그 해시를 누르면 티켓이 열려서, 어떤 일을 하다 나온 문장인지 되짚을 수 있습니다 (글에 적힌 해시와 P번호).

손으로 고치고 싶으면 큐의 personas/<이름>/memory/에서 파일을 직접 여시면 됩니다. 화면이 그 경로를 막지는 않습니다. 다만 이 절은 세션이 채우는 자리입니다. 직접 쓰는 문장은 프로필에 두세요.

페르소나 삭제 - 휴지통으로 갑니다

오른쪽 칸 윗줄의 삭제를 누르면 확인 창이 뜹니다. 본문은 휴지통으로 옮깁니다. 휴지통에서 되살릴 수 있습니다.입니다. 이 페르소나를 단 티켓이 있으면 그 수가 같이 뜹니다. 확인 창의 삭제를 누르면 그 페르소나는 왼쪽 목록에서 빠집니다.

지운 페르소나는 디렉터리째 옮겨질 뿐입니다. 큐의 personas/<이름>/이 personas/.trash/ 아래 <이름>@<지운 시각>/으로 옮겨집니다. 시각은 20261005-194812처럼 초까지 적힙니다. PROFILE.md, skills.md, 회고로 쌓인 memory/, 상한과 엔진 설정이 전부 그 안에 그대로 있습니다. 같은 이름을 여러 번 지워도 시각이 달라서 항목끼리 겹치지 않습니다. 휴지통은 저절로 비워지지 않습니다. 영구 삭제를 누를 때까지 남습니다.

지워도 바뀌지 않는 것이 둘 있습니다. 티켓의 persona: 값은 그대로 남습니다. 그 티켓은 맨 위 절에서 본 대로 프로필 없는 이름으로 취급되어, 엔진이 WARN 한 줄을 남기고 페르소나 없이 실행합니다. 색 점의 색도 기록에서 지워지지 않습니다. 되살리면 같은 색으로 돌아옵니다.

되살리기

휴지통에 항목이 하나라도 있으면 왼쪽 목록 맨 아래에 휴지통 2처럼 수가 붙은 줄이 생깁니다. 비어 있으면 이 줄은 뜨지 않습니다. 줄을 누르면 오른쪽 칸이 휴지통 목록으로 바뀝니다. 최근에 지운 것이 위에 옵니다. 한 줄에 종류(페르소나 또는 스쿼드), 이름, 지운 시각, 버튼 둘이 있습니다. 종류가 숨긴 이름인 줄은 버튼이 하나입니다. 아래 §프로필 없는 줄에서 설명합니다.

되살리기를 누르면 디렉터리가 원래 자리로 돌아오고, 그 페르소나가 다시 왼쪽 목록에 뜹니다. 안의 파일은 지우기 전과 같습니다. 메모리도 다시 실립니다.

같은 이름이 이미 있으면 되살리기가 거절됩니다. 지운 뒤 같은 이름으로 새 페르소나를 만들었다면 같은 이름의 페르소나가 이미 있습니다가 뜨고 아무것도 바뀌지 않습니다. 있는 쪽을 덮어쓰지 않으니 두 쪽 모두 그대로입니다. 옛것을 살리려면 지금 있는 쪽을 먼저 지워서 휴지통으로 보내고, 옛 항목에서 되살리기를 다시 누르세요.

영구 삭제

영구 삭제를 누르면 확인 창이 한 번 더 뜹니다. 확인하면 그 항목 디렉터리가 디스크에서 지워집니다. 이 삭제는 되돌릴 수 없습니다. 메모리도 같이 사라지니, 남길 문장이 있으면 그 전에 personas/.trash/<항목>/memory/에서 파일을 꺼내 두세요.

프로필 없는 줄 - 지우는 대신 숨깁니다

왼쪽 목록에는 personas/ 아래에 디렉터리가 없는 이름도 뜹니다. 어떤 티켓이 persona:에 그 이름을 적었기 때문입니다. 그 티켓이 이미 .done이어도 줄은 남습니다. 오타로 적은 이름, 한 번 쓰고 만 이름, 위 절에서 지운 페르소나의 이름이 이렇게 프로필 없음 배지를 단 채 남습니다.

이 줄을 골라도 오른쪽 칸 윗줄에 삭제가 있습니다. 다만 지울 파일이 없어서 하는 일이 다릅니다. 누르면 페르소나 숨기기 - <이름> 확인 창이 뜹니다. 본문은 프로필이 없는 이름이라 지울 파일이 없습니다. 목록에서 숨기고, 휴지통에서 다시 보이게 할 수 있습니다.입니다. 이 이름을 단 티켓 수는 삭제 확인 창과 같은 문장으로 뜹니다. 숨기기를 누르면 그 줄이 왼쪽 목록에서 빠집니다.

숨겨도 바뀌는 파일은 하나뿐입니다. 큐의 personas/.hidden에 <이름> <숨긴 시각> 한 줄이 더해집니다. 시각은 휴지통 항목처럼 20261005-194812 꼴입니다. 티켓 파일은 건드리지 않으니 persona: 값도 그대로입니다. personas/ 아래에 새 디렉터리도 생기지 않습니다.

다시 보이게 하기

숨긴 이름도 휴지통 n의 수에 들어갑니다. 휴지통 칸에서 그 줄은 종류가 숨긴 이름이고 시각 칸에는 숨긴 시각이 적힙니다. 버튼은 다시 보이기 하나뿐입니다. 지울 디렉터리가 없으니 영구 삭제도 없습니다. 다시 보이기를 누르면 .hidden에서 그 줄이 지워지고 왼쪽 목록에 프로필 없음 배지를 단 줄이 돌아옵니다.

숨긴 줄이 저절로 다시 뜨는 경우

같은 이름을 단 열린 티켓이 생기면 숨긴 줄이 다시 뜹니다. 열린 티켓은 아직 .done이 아닌 티켓, 곧 대기 중이거나 진행 중인 티켓입니다. 그 티켓을 받는 세션은 맨 위 절에서 본 대로 프로필 없이 시작합니다. 그 경고가 숨김에 가려지지 않도록 줄을 다시 띄우는 것입니다. .hidden의 기록은 그대로 있어서 그 티켓이 .done이 되면 줄이 다시 숨습니다. 그동안 휴지통 칸의 숨긴 이름 줄도 남아 있습니다. 기록까지 지우려면 거기서 다시 보이기를 누르세요.

같은 이름으로 프로필을 만들어도 줄이 다시 뜹니다. 이제 프로필 없는 이름이 아니므로 숨김과 상관없이 일반 줄로 뜹니다. .hidden의 기록은 이때도 휴지통 칸에 남으니, 정리하려면 다시 보이기를 누르세요.

페르소나가 있는 곳 - 큐 안의 team/ 패키지

큐 폴더에 .dira/team/apm.yml이 있으면 페르소나 하나는 패키지 하나입니다. 패키지는 APM(apm-cli) 형식의 폴더이고, 그 안의 PROFILE.md와 skills.md를 dira가 직접 읽어 프롬프트에 싣습니다. 어느 페르소나를 쓰는지는 .dira/team/apm.yml의 의존성 목록과 그 옆의 apm.lock.yaml이 정합니다. .dira/team/은 큐 안에 있어서 프로젝트 저장소에 커밋되지 않습니다. 화면에서 페르소나를 저장해도 저장소의 git status는 바뀌지 않습니다. 옛 자리에서 옮겨 오는 과정은 설치에 있습니다.

페르소나 패키지는 두 종류입니다.

종류자리화면에서 고치기
로컬.dira/team/personas/<이름>/ (apm.yml, PROFILE.md, skills.md)됩니다. 저장하면 이 파일이 바뀝니다
공용.dira/team/apm_modules/ 안. 정본은 dira 저장소의 packages/persona-<이름>/이고 태그로 고정해 받습니다안 됩니다

같은 이름이 둘 다 있으면 로컬이 이깁니다. 새 프로젝트의 기본 페르소나는 공용 패키지로 들어옵니다.

공용 페르소나를 고치려면 로컬로 복사합니다. 공용 패키지를 고르면 편집기 위에 공용 패키지입니다. 고치려면 로컬로 복사가 뜨고 저장이 막혀 있습니다. 그 옆의 로컬로 복사를 누르면 앱이 세 가지를 합니다.

  1. 그 패키지를 .dira/team/personas/<이름>/로 복사합니다.
  2. .dira/team/apm.yml의 의존성 줄을 ./personas/<이름>으로 바꿉니다.
  3. 패키지를 다시 설치합니다.

끝나면 화면을 다시 읽고 안내가 사라집니다. 그때부터 그 페르소나는 이 프로젝트의 파일이라 고치고 저장할 수 있습니다. 공용 쪽에 새 버전이 나와도 로컬 사본은 따라가지 않습니다. 같은 이름의 로컬 패키지가 이미 있으면 복사는 거절됩니다. 있는 파일을 덮지 않습니다.

패키지에 들어가지 않는 것도 있습니다. memory/, limit, engine, mcp.json은 이 기계에서만 의미가 있는 상태라서 지금처럼 큐의 .dira/personas/<이름>/에 남습니다. 마켓으로 주고받을 때도 이 넷은 건너가지 않습니다.

스킬의 실체도 패키지에서 옵니다. skills.md에 적은 이름은 그 페르소나 패키지의 .apm/skills/<이름>/이나 그 패키지가 의존하는 패키지에 있어야 세션에 붙습니다. 설치 결과는 .dira/team/.claude/skills/에 깔리고, 이 프로젝트에서는 ~/.claude/skills를 읽지 않습니다. 어느 패키지에도 없는 이름은 지금처럼 프롬프트의 글자로만 남습니다. 다른 패키지에는 깔려 있는데 이 페르소나 패키지와 그 의존성에는 없는 이름은 python3 dira_apm.py check <프로젝트 루트>가 한 줄씩 알려 줍니다. 두 패키지가 같은 이름의 스킬을 내면 나중에 깔린 쪽이 앞의 것을 덮어씁니다. 그래서 check가 그 경우를 실패로 판정하고 두 패키지 이름을 적어 줍니다.

.dira/team/apm.yml이 없는 프로젝트는 지금까지처럼 큐의 personas/<이름>/을 읽습니다. 업데이트가 프로젝트를 새 배치로 옮기는 과정은 설치에 있습니다.

프롬프트 조립 순서 - 프로필이 실리는 자리

티켓 하나가 디스패치될 때 프롬프트가 한 번 조립됩니다. 순서가 이렇습니다.

  1. 코어 프로토콜. 티켓의 생애와 큐의 불변식을 적어 둔 문서입니다. 페르소나도 프로젝트도 못 고르고, 프로젝트 문서와 어긋나면 이쪽이 우선합니다.
  2. 페르소나. 프로필 본문, 그 뒤에 스킬 목록, 그 뒤에 메모리가 붙는 자리입니다. persona:가 비어 있으면 이 부분이 통째로 빠집니다.
  3. 온톨로지. 이 큐가 쌓아 둔 사실이 어디 있고 어떻게 찾는지 몇 줄. 메모리와 같은 방식이고, 페르소나와 달리 모든 세션이 받습니다(아카이빙과 온톨로지).
  4. 협업 프로토콜. AGENTS.md 전문이 그대로 들어갑니다. 티켓이 고르지 않고 전원이 같은 것을 받습니다.
  5. 티켓 지시. <해시> 티켓을 확인해 주세요로 시작하는 한 줄입니다. 티켓 본문은 프롬프트에 없습니다. 세션이 그 해시로 파일을 직접 엽니다. 그래서 티켓이 아무리 길어져도 프롬프트는 커지지 않고, 프로필이 길어지면 커집니다.
  6. 참조 컨텍스트. 워커가 정해 둔 문서 경로 목록이 끝에 붙습니다. 파일 내용이 아니라 경로와 한 줄 설명이고 없는 경로는 건너뜁니다(워커 환경변수의 TICKET_CONTEXT). 그 뒤에 어느 말로 답할지를 정하는 한 문단이 마지막으로 붙습니다.

전문이 통째로 실리는 것은 코어 프로토콜, 프로필, 스킬 목록, AGENTS.md 넷뿐입니다. 나머지는 자리만 알려 주고 세션이 필요할 때 직접 엽니다. 프로필과 스킬 목록은 그 비싼 넷에 들어 있고 메모리는 빠집니다. 목록 줄의 예산이 더하는 것도 앞의 둘뿐입니다. 그 수는 프롬프트 크기로 그대로 읽으시면 됩니다.

고친 내용이 실리는 시점

프로필도 스킬도 저장을 누르면 파일이 바로 바뀝니다. 메모리를 지워도 그 파일은 그 자리에서 사라집니다. 그런데 지금 진행중인 세션은 이미 프롬프트를 받은 뒤입니다. 프롬프트는 디스패치 순간에 한 번 조립되고 그 뒤에 파일이 바뀌어도 진행중인 세션은 모릅니다. 바꾼 내용이 실리는 것은 다음에 디스패치되는 티켓부터입니다.

도는 세션에 지금 무언가를 말해야 한다면 그건 다른 자리입니다. 도는 세션에 말 걸기를 보세요.

다음은 스쿼드입니다.