OpenSpec 변경의 작업을 구현합니다.
저장소 선택: 사용자가 저장소(이 컴퓨터에 등록된 독립형 OpenSpec 저장소)를 언급하거나 작업이 특정 저장소에 속하는 경우, openspec store list --json을 실행하여 등록된 저장소 ID를 확인한 후, 스펙 및 변경을 읽거나 쓰는 명령(new change, status, instructions, list, show, validate, archive, doctor, context)에 --store <id> 플래그를 전달하세요. 다른 명령에는 이 플래그를 사용하지 않습니다. 명령에서 출력하는 힌트에는 이미 플래그가 포함되어 있으므로 후속 작업에서도 유지하세요. 저장소가 없으면 명령은 가장 가까운 로컬 openspec/ 루트를 기준으로 동작합니다.
입력: 변경 이름을 선택적으로 지정할 수 있습니다. 생략하면 대화 컨텍스트에서 유추할 수 있는지 확인합니다. 모호하거나 불확실한 경우 사용 가능한 변경 목록을 요청해야 합니다.
단계
-
변경 선택
이름이 제공되면 해당 이름을 사용합니다. 그렇지 않은 경우:
- 사용자가 변경에 대해 언급했다면 대화 컨텍스트에서 유추
- 활성 변경이 하나만 있으면 자동 선택
- 모호한 경우
openspec list --json을 실행하여 사용 가능한 변경 목록을 가져오고 AskUserQuestion 도구를 사용하여 사용자가 선택하도록 함
항상 다음과 같이 알립니다: "변경 사용: " 및 재정의 방법(예:
/opsx:apply <other>). -
상태를 확인하여 스키마 이해하기
openspec status --change "<name>" --jsonJSON을 분석하여 다음을 이해합니다:
schemaName: 사용 중인 워크플로우(예: "spec-driven")planningHome,changeRoot,actionContext: 계획 범위 및 편집 제약 조건- 어떤 아티팩트에 작업이 포함되어 있는지(일반적으로 spec-driven의 경우 "tasks", 다른 경우 상태 확인)
-
적용 지침 가져오기
openspec instructions apply --change "<name>" --json결과는 다음과 같습니다:
contextFiles: 아티팩트 ID -> 구체적인 파일 경로 배열(스키마에 따라 다름 - proposal/specs/design/tasks 또는 spec/tests/implementation/docs일 수 있음)- 진행 상황(전체, 완료, 남음)
- 상태별 작업 목록
- 현재 상태에 따른 동적 지침
상태 처리:
state: "blocked"(아티팩트 누락): 메시지를 표시하고 openspec-continue-change 사용을 제안state: "all_done": 축하하고 아카이브 제안- 그 외: 구현 진행
-
컨텍스트 파일 읽기
적용 지침 출력의
contextFiles아래에 나열된 모든 파일 경로를 읽습니다. 파일은 사용 중인 스키마에 따라 달라집니다:- spec-driven: proposal, specs, design, tasks
- 다른 스키마: CLI 출력의 contextFiles를 따름
-
현재 진행 상황 표시
다음을 표시:
- 사용 중인 스키마
- 진행 상황: "N/M 작업 완료"
- 남은 작업 개요
- CLI의 동적 지침
-
작업 구현 (완료되거나 차단될 때까지 반복)
각 대기 중인 작업에 대해:
- 현재 작업 중인 작업 표시
- 필요한 코드 변경 수행
- 변경 사항을 최소화하고 집중 유지
- 작업 파일에서 작업 완료 표시:
- [ ]→- [x] - 다음 작업으로 계속
다음 경우 일시 중지:
- 작업이 불명확함 → 명확화 요청
- 구현 중 설계 문제 발견 → 아티팩트 업데이트 제안
- 오류 또는 차단기 발생 → 보고하고 안내 대기
- 사용자가 중단
-
완료 또는 일시 중지 시 상태 표시
다음을 표시:
- 이 세션에서 완료된 작업
- 전체 진행 상황: "N/M 작업 완료"
- 모두 완료된 경우: 아카이브 제안
- 일시 중지된 경우: 이유 설명 및 안내 대기
구현 중 출력
## 구현 중: <변경-이름> (스키마: <스키마-이름>)
작업 3/7 진행 중: <작업 설명>
[...구현 중...]
✓ 작업 완료
작업 4/7 진행 중: <작업 설명>
[...구현 중...]
✓ 작업 완료
완료 시 출력
## 구현 완료
**변경:** <변경-이름>
**스키마:** <스키마-이름>
**진행 상황:** 7/7 작업 완료 ✓
### 이 세션에서 완료
- [x] 작업 1
- [x] 작업 2
...
모든 작업 완료! 이 변경을 아카이브할 준비가 되었습니다.
일시 중지 시 출력 (문제 발생)
## 구현 일시 중지됨
**변경:** <변경-이름>
**스키마:** <스키마-이름>
**진행 상황:** 4/7 작업 완료
### 발생한 문제
<문제 설명>
**옵션:**
1. <옵션 1>
2. <옵션 2>
3. 다른 접근 방식
어떻게 하시겠습니까?
가드레일
- 완료되거나 차단될 때까지 작업 계속 진행
- 시작하기 전에 항상 컨텍스트 파일 읽기(적용 지침 출력에서)
- 작업이 모호하면 일시 중지하고 구현 전에 질문
- 구현 중 문제가 발견되면 일시 중지하고 아티팩트 업데이트 제안
- 코드 변경은 각 작업에 대해 최소화하고 범위를 좁혀 유지
- 각 작업 완료 직후 작업 체크박스 업데이트
- 오류, 차단기 또는 불명확한 요구 사항에서 일시 중지 - 추측하지 않음
- CLI 출력의 contextFiles 사용, 특정 파일 이름을 가정하지 않음
유연한 워크플로우 통합
이 스킬은 "변경에 대한 작업" 모델을 지원합니다:
- 언제든지 호출 가능: 모든 아티팩트가 완료되기 전(작업이 존재하는 경우), 부분 구현 후, 다른 작업과 혼합하여 사용
- 아티팩트 업데이트 허용: 구현 중 설계 문제가 발견되면 아티팩트 업데이트 제안 - 단계에 고정되지 않고 유연하게 작업