--- name: trd-generator description: 요구와 기존 환경을 조사해 중요한 기술 선택·근거·검증 수단을 docs/TRD.md에 작성하거나 갱신한다. 상세 모듈·데이터·API 계약은 아키텍처로 연결한다. PRD는 있고 TRD가 없거나 기술 결정이 비어 있는 프로젝트를 '이 플러그인 흐름대로 만들어줘', '설계·계획·루프까지 진행해줘'처럼 구현 준비·완성까지 요청하면 작은 프로젝트도 직접 대신 쓰지 말고 이 스킬부터 사용한다. 기존 TRD의 기술 결정을 바꾸자는 요청('저장 방식을 바꾸자' 등)에도 사용한다. --- # 기술 결정 ## 목적과 입력 `docs/PRD.md`의 요구·제약·자율운영 합의와 기존 TRD·코드·설정을 읽는다. 기술만 요청됐고 PRD가 없다면 명확한 사용자 요구를 근거로 쓰며 입력 출처를 밝힌다. 실행까지 요청됐다면 빠진 요구는 근거와 함께 PRD에 보완하되 권한·예산 같은 사용자만 정할 합의는 스스로 채우지 않고 미결로 기록해 묻는다. 구현까지 이어 갈 화면 제품에 유효한 사용자 디자인 승인이 없으면 TRD보다 먼저 PRD의 실제 미리보기·사용자 결정 단계를 수행한다. 실행 요청이라도 이 단계를 마치면 결과를 보고하고 다음 단계 진행을 확인한다(아래 단계 전환 기준). 여러 스킬을 미리 읽었어도 단계 경계를 건너뛰지 않는다. 패키지·잠금 파일·CI·배포 설정·OS·사용 가능한 도구를 확인한다. 이미 정해진 여건·예산·선호·금지를 다시 묻지 않는다. 사실은 조사하고 사용자만 정할 미해소 경계만 묻는다. ## 최소 산출물 `docs/TRD.md`에 실제 필요한 `TD-xxx` 결정만 쓴다. 각 결정에는 다음을 남긴다. - 선택과 근거 FR/NFR 또는 사용자 제약·확인한 환경 - 중요한 대안과 선택 이유, 큰 되돌리기 비용 - 확정 / 잠정 / 실험 필요 여부와 영향을 받는 부분 - 선택이 요구를 만족하는지 확인할 실행·관찰 방법 스택·저장·통신·인증·보안·테스트·실행/배포 중 해당하는 것만 다룬다. 파생 선택은 관련 TD에 흡수하고 빈 영역·모든 라이브러리 목록을 만들지 않는다. 중요 NFR을 어떤 수단으로 지키고 확인할지 연결한다. 검증 도구와 로컬 실행 전제를 남기되 검사 구성·실행 스크립트와 활성 범위는 Harness에서 정한다. 제품 Loop는 `lint → unit → e2e → task_validation`과 비상속 별도 세션 검증의 기술적 실행 가능성을 연결한다. 기술 문서만 요청된 작업에는 제품 검사 실행이나 전체 파이프라인을 강제하지 않는다. 테이블·모듈·엔드포인트 상세 계약은 Architecture에서 정한다. 화면 제품은 디자인 정본의 선택 방향에 맞는 스타일 구현 수단·기존 자산·제약을 TD에 연결한다. 미확정 방향과 미리보기용 최소 기술 선택은 잠정으로 구분하며 기술 위임으로 사용자의 최종 디자인 결정을 대신하지 않는다. ## 사용자와 정하기 - Loop 전 TRD는 사용자와 소통하며 정한다. 사용자 여건에 맞는 구체적 기술 결정에 필요한 만큼 충분히 묻고 질문 수를 줄이는 것을 목표로 삼지 않는다. - 기술 선택이 위임되지 않았으면 되돌리기 비용이 큰 결정(스택·저장·인증·실행/배포 대상 등)은 조사한 사실로 차이가 있는 대안과 추천·근거·트레이드오프를 제시해 사용자 선택을 받은 뒤 확정한다. 파생·사소한 선택은 묻지 않는다. - 기술을 가르는 사용자 여건(실행·배포 환경, 유지보수 주체와 익숙한 언어, 비용 상한, 쓰거나 피할 기술)이 문서에 없고 조사로 알 수 없으면 한 번에 소수씩, 필요하면 여러 차례 선택지·이유와 함께 묻는다. 기술 선택을 위임받아도 이 여건은 묻는다. - 기술 선택이 위임됐으면 대안 선택은 묻지 않고 정하되 중요 TD와 근거를 보고한다. 미응답 결정은 잠정·OQ로 남기고 확정으로 쓰지 않는다. 사용자가 자기 말로 질문 없이 진행을 지시했거나 질문할 수 없는 세션이면 추천안을 잠정으로 기록하고 보고에서 먼저 확인할 항목으로 올린다. - Loop 시작 후 호출되면 이 절 대신 합의 안에서 정하거나 영향 작업만 차단한다. ## 결정과 제약 - 기존 자산과 합의 안에서 요구를 충족하는 단순한 구성을 고른다. 불필요한 서비스·큐·운영 요소를 늘리지 않는다. - 최신 지원·가격·호환성이 중요하면 실제 도구나 공식 자료로 확인하고 근거를 남긴다. 확인하지 않은 성능·비용·지원 여부를 사실로 쓰지 않는다. - 위임된 기술·환경 조정은 자율 수행한다. 사용자 금지·예산·데이터 경계는 넘지 않는다. - 요구 자체를 바꿔야 하면 PRD부터 영향 부분을 맞춘다. 승인된 새 요청을 형식 때문에 다시 승인받지 않는다. 위임되지 않은 범위 변경이나 필수 권한은 실행 전에 해소한다. - 실험은 대상·관찰값·판정 기준을 적는다. 허용된 최소 실험을 수행하거나 Plan의 위험 해소 태스크로 잇는다. 측정하지 않았다면 실험 필요로 남기며 확인된 성능처럼 쓰지 않는다. - 차단 OQ 위의 결정을 확정으로 쓰지 않는다. 독립 결정은 진행하고 남은 영향과 대안을 기록한다. ## 갱신과 호환 기존 TD/OQ·FR 참조·절 번호·사용자 수정·상태를 보존하고 영향 결정만 고친다. 새 번호는 끝에 붙이고 OQ는 프로젝트 전체와 충돌을 확인한다. 폐기·대체·해소의 근거를 연결한다. 기존 추적표·버전·후미 절은 유지하며 필요한 행과 변경 이력만 맞춘다. 합의 안의 변경은 IDEA → PRD → TRD → 설계 → 계획 순으로 영향 부분만 반영한다. 기술 결정이 바뀌어 앞 문서(IDEA 포함)의 가정·제약·표현과 어긋나면 해당 부분만 갱신하고 변경 근거와 현재 기준 포인터를 남긴다. 범위·수용 기준·사용자 제약을 바꾸는 변경은 스스로 정하지 않고 결정 전까지 기존 기준을 유지하며 영향과 선택지를 사용자 결정으로 묻는다. Loop 이후에는 묻지 않고 영향 작업만 차단한다. 앞 문서 반영은 단계 전환이 아니므로 현재 단계에서 수행한다. 진행 중 실행 주체와 공유 상태를 동시에 덮어쓰지 않고 안전한 경계에서 반영한다. 루트 지침에는 후속 실행에 필요한 문서 포인터만 보완한다. ## 완료 증거와 연결 작업 시작·중요 결정·종료 때 TRD나 기존 STATE/LOG에 현재 단계·확정/미결·다음 행동과 결정/실험 근거를 증분 저장한다. 원 대화 없이 재개하게 하되 작은 문서 요청에 전체 계획 체계를 만들지 않는다. 사용자 명시 기본값 변경·자식 실행 금지를 우선하고 달라진 검증 보장·미검증을 후속 Harness/Loop에 전달한다. 중요한 선택의 근거·제약·검증 수단을 확인하고 요구를 만족할 수단이 빠진 곳과 미검증 주장을 찾는다. 작성/변경 TD·실험 결과·잠정/차단 범위와 비용 한계를 보고한다. 기술 문서 생성은 구현 완료가 아니다. 기술 문서만 요청되면 그 범위로 끝내고 다음 스킬을 제안한다. 다음 단계는 `architecture-generator`다. 단계를 마치면 결과(요약·주요 결정·가정·남은 결정)를 보고하고 다음 스킬로 이어 진행할지 사용자에게 확인한다. 수정 요청은 반영해 다시 보고한다. Loop 실행 전까지 모든 단계에 적용하며, 사용자가 자기 말로 단계별 확인 생략을 지시했을 때만 확인 없이 이어 간다. '만들어줘'·'끝까지'나 사전 권한·예산 합의만으로는 생략하지 않고, 에이전트는 확인 생략이나 자동 진행을 먼저 권하거나 추천하거나 생략 방법을 안내하지 않으며, 그렇게 받은 선택도 근거가 아니다. 진행이 확인되면 실행을 사용자에게 떠넘기지 않는다. ## 환경 참고 도구 차이가 필요할 때만 [Claude Code](references/claude-code.md) 또는 [Codex](references/codex.md)를 읽는다.