--- name: ptop-deliverables description: >- LGES OC5 PtoP Welder 전용 산출물 자동 생성·갱신 스킬. 프로젝트 소스를 분석해 docs/[Ubisam산출물]/ 하위 MD 산출물(색상 디자인 포함)을 생성하거나 최신화한다. 다른 PC에서는 `ubisam-deliverables` 스캐폴딩을 먼저 돌린 뒤 이 스킬로 전체 산출물을 재생산한다 (`docs/[Ubisam산출물]/`는 `.gitignore` 제외라 clone 직후 없다). "ptop 산출물", "PLC 신호정의서/기능명세서/시퀀스 인터락 정의서 갱신", "소스 기준으로 설계 산출물 최신화", "코드 보고 설계문서 다시 뽑아줘", "/ptop-deliverables", 그리고 **소스 기준 재생산 후속 표현** ("설계 MD 다시 뽑아줘", "소스 갱신분 반영", "이전 산출물 기반으로") 시 사용. **입력이 PTOP 소스코드일 때만** 쓴다. 맨손 "업데이트"·"다시 실행"만으로는 이 스킬을 고르지 않는다 — 대상을 먼저 확인한다. 구분 — 트리를 새로 까는 스캐폴딩은 `ubisam-deliverables`, 이미 있는 타사 문서를 Ubisam 양식으로 재생산하는 것은 `ubisam-deliverable-rebuild`, enum 조회만이면 `ubisam-format-map`, **PTOP 아키텍처·구현·빌드 분석**은 `orchestrate-ptop-harness`. --- # PTOP 산출물 자동 생성 SKILL LGES OC5 PtoP Welder(`ILSOS_PrismaticRD_PTOP`) 전용. 소스를 분석해 6단계 산출물 MD를 **Ubisam 디자인 시스템**(배너·뱃지·진행률 포함) 기준으로 생성한다. ## 참조 맵 | # | 파일 | 용도 | |---|---|---| | D | [references/design-system.md](references/design-system.md) | 색상 팔레트·배너·뱃지 HTML 템플릿 | | S | [references/source-map.md](references/source-map.md) | 소스 파일 → 산출물 필드 매핑 | ## 소스 진실원 — 읽는 순서 다른 PC에서 실행 시 아래 파일을 순서대로 읽어 산출물을 채운다. | 순서 | 파일 경로 | 추출 정보 | |---|---|---| | 1 | `Machines/ILSOS_PrismaticRD_PTOP/Device/PLC/PLCController.Address.cs` | BIT/WORD 신호 enum 전수 | | 2 | `Machines/ILSOS_PrismaticRD_PTOP/EquipmentSetup.cs` | 디바이스 등록·메뉴·뷰 목록 | | 3 | `Machines/ILSOS_PrismaticRD_PTOP/Sequences/SeqAutoRunPTOP.cs` | 시퀀스 노드·인터락·TactTime | | 4 | `Machines/ILSOS_PrismaticRD_PTOP/Device/IO/PAIX_PTOP.cs` | DI/DO 채널 맵 | | 5 | `docs/architecture.md` | 플랫폼·모션·디바이스 개요 | | 6 | `docs/[Ubisam산출물]/_meta/project.yaml` | 프로젝트 코드·팀 정보 | ## 진입 가드 (먼저 확인) 사용자 발화에 **대상이 무엇인지**(소스코드 / 특정 문서 파일 / 미지정) 드러나지 않으면 **어떤 파일도 만들거나 고치지 말고 되묻는다.** "산출물 업데이트해줘"·"다시 실행해줘"·"보완해줘" 같은 발화는 이 스킬·`ubisam-deliverable-rebuild`·`ubisam-deliverables` 중 무엇이든 될 수 있고, 잘못 고르면 사용자가 원하지 않은 파일이 대량으로 덮어써진다. 되물을 것: "① 소스코드 기준으로 설계 MD를 다시 뽑을까요, ② 기존 xlsx/pptx 문서를 Ubisam 양식으로 재생산할까요, ③ 산출물 폴더 트리를 새로 깔까요?" 생성·덮어쓸 파일 목록을 먼저 제시하고 승인을 받은 뒤 쓴다 (`rules.md` #2). ## 실행 절차 ### STEP 0 — 진입 체크 `docs/[Ubisam산출물]/` 폴더 존재 여부 확인. 없으면 `/ubisam-deliverables` 스캐폴딩을 먼저 실행 후 재진입. ### STEP 1 — 소스 분석 소스 진실원 6개를 순서대로 읽어 추출한다: - PLC BIT/WORD 신호 목록 (eBitInput/Output, eWordInput/Output) - 등록 디바이스 (PLC·IO·Laser·Scanner·Motion·Vision) - 메뉴·뷰 트리 (`RegisterViews` — `AddSubMenu(CommonViewIds.*, UC)` 는 2인자라 권한이 없지만, **`MainMenu` 생성자 3번째 인자가 `PermissionLevel` 이다**. 메인메뉴 8건이 값을 가진다 — `EquipmentSetup.cs:261,266,289,302,310,318,323,330`. 기능명세서 §메뉴구조의 `권한` 열은 여기서 채운다) - 시퀀스 노드 흐름 + 인터락 조건 + 정지/에러 처리 - TactTime 상수 (지연 ms, 타임아웃 s, 루프 슬립) - DI/DO 채널 번호·신호명·설명 (PAIX_PTOP.cs) ### STEP 2 — 산출물 MD 생성/갱신 [design-system.md](references/design-system.md) 배너·뱃지 템플릿을 적용해 아래 파일을 **없으면 생성, 있으면 내용 갱신**한다. | 산출물 | 경로 | 채움 소스 | |---|---|---| | PLC-PC 신호정의서 | `02.설계/IO_DB설계/PLC_PC_인터페이스_신호정의서.md` | PLCController.Address.cs | | 모션축·IO 맵 정의서 | `02.설계/IO_DB설계/모션축_IO맵_정의서.md` | EquipmentSetup + PAIX_PTOP | | 기능명세서 | `02.설계/UIUX_기능설계/기능명세서.md` | EquipmentSetup.RegisterViews | | 시퀀스·인터락 정의서 | `02.설계/시퀀스_인터록/제어시퀀스_인터락_정의서.md` | SeqAutoRunPTOP.Builder | | TactTime 산정서 | `02.설계/시퀀스_인터록/TactTime_산정서.md` | SeqAutoRunPTOP 지연 상수 | 각 파일 구조: **배너(진네이비) → 부제(파랑) → 내용 테이블/mermaid → enum 요약** ### STEP 3 — _task 카드 갱신 `01~06` 각 `_task.md` 상태·진행률을 현황 반영해 갱신. 적용 디자인: 상태 뱃지 + 유형 뱃지 + `` 진행률 바. ### STEP 4 — 분석 로그 기록 `[분석]/YYYY_MM_DD_PTOP설계산출물-분석.md` 작성. 내용: 소스→필드 매핑 표 + 미확정 항목 목록 + 진실원 인덱스. ## 불변 규칙 - **비침습**: `docs/[Ubisam산출물]/` 밖은 읽기만. 소스·CLAUDE.md 수정 금지. - **MD 200줄 상한** (`rules.md` #4): 초과 시 분할 + 상대경로 링크. - **출처 명시**: 채운 값마다 `— 출처: 파일명:심볼` 주석. - **미확정 표기**: 주소·행정·속도 등 미확정값 → `(제안)`. - **추론 표기**: 소스에서 확인하지 않고 채운 값·해석은 `[추론]` 접두 (`rules.md` #15·#16). `(제안)`(진실원 자체가 없음)과 축이 다르다 — 확인 후에는 표기를 떼고 `— 출처: 파일:심볼`로 바꾼다. - **멱등**: 재실행 시 배너·뱃지는 교체, 테이블 데이터는 행 추가/갱신. - **md ↔ xlsx 공존 규칙**: 같은 슬롯에 `기능명세서.md`(이 스킬)와 `기능명세서.xlsx` (`ubisam-deliverables/references/build_02설계_xlsx.py`)가 공존할 수 있다. **소스 기준 최신값의 진실원은 `.md`**이고, `.xlsx`는 배포용 스냅샷이다. ⚠ **md→xlsx 자동 동기화 수단은 없다.** `build_02설계_xlsx.py`는 데이터가 코드에 하드코딩된 무인자 스크립트라 md를 입력으로 받지 못한다. 어긋나면 그 스크립트의 데이터 블록을 md 기준으로 **함께 고친 뒤** 재실행한다. - **Aurora 고정 문구**: "운영 SW는 LG PRI의 Aurora 플랫폼으로 개발한다." > 소스 진실원 6종 읽기 + MD 5종 생성 + `_task` 6장 갱신은 10분을 넘긴다 — > **STEP 전환마다 지금 어느 단계인지 한 줄로 보고한다**(`rules.md` #10). > > 단독 호출로 마무리할 때: 보고는 `rules.md` #11~13 출력 형식(수정 줄=초록 화살표, 단어=주황, 미변경=기본색)을 > 따르고, 끝에 관련 `.md`를 갱신할 부분이 있는지 묻는다(`rules.md` #6).