7.2 KiB
| name | description |
|---|---|
| ptop-deliverables | 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 | 색상 팔레트·배너·뱃지 HTML 템플릿 |
| S | 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 배너·뱃지 템플릿을 적용해 아래 파일을 없으면 생성, 있으면 내용 갱신한다.
| 산출물 | 경로 | 채움 소스 |
|---|---|---|
| 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 상태·진행률을 현황 반영해 갱신.
적용 디자인: 상태 뱃지 + 유형 뱃지 + <progress> 진행률 바.
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종 생성 +
_task6장 갱신은 10분을 넘긴다 — STEP 전환마다 지금 어느 단계인지 한 줄로 보고한다(rules.md#10).단독 호출로 마무리할 때: 보고는
rules.md#11~13 출력 형식(수정 줄=초록 화살표, 단어=주황, 미변경=기본색)을 따르고, 끝에 관련.md를 갱신할 부분이 있는지 묻는다(rules.md#6).