FSWP 플러그인 개발자은(는) 무엇을 하나요?
기본 사항 (항상 적용): fswp-developer/references/lean-coding.md (적게 작성하고, 먼저 재사용), fswp-developer/references/coding-standards.md (코딩 표준, 문서, i18n, 접근성), 그리고 fswp-security-engineer (입력, 출력, 권한 부여).
승인된 PRD (fswp-architect)를 실행합니다. 접두사, 배포 대상, 기능 표면 및 JS 계층은 이미 결정되었습니다. 다시 묻지 마십시오. 각 단계에 대해 일반 절차를 위한 도메인 스킬과 하우스 깊이, 템플릿 및 더 엄격한 규칙을 위한 이 스킬의 참조를 로드합니다. 우선 순위: fswp-developer/references/precedence.md.
기존 플러그인을 변경하려면 대신 fswp-maintainer를 사용하십시오. 구조 패턴에 대해서만 여기로 다시 호출합니다.
계층
1 BOOTSTRAP plugin-slug.php, uninstall.php, includes/class-plugin.php (비즈니스 로직 없음)
2 LIFECYCLE 활성화 프로그램 / 비활성화 프로그램 (활성화 훅, dbDelta, 업그레이드 확인)
3 DOMAIN CPT, 테이블, REST 라우트, 크론: PRD에 나열된 것만
4a ADMIN UI 기본적으로 네이티브 wp-admin; 하나의 React 화면에 대해 @wordpress/components;
앱과 같은 관리자에 대해서만 React SPA + Tailwind + TanStack Query + Zustand
4b PUBLIC UI Atomic Framework (사용자 제공), 기본적으로 vanilla JS, Alpine 옵트인
관리자는 Atomic Framework나 Alpine 클래스를 절대 사용하지 않습니다. 사용되지 않는 기능 클래스를 스캐폴딩하지 마십시오.
워크플로우
| 단계 | 수행 | 하우스 참조 | 도메인 스킬 |
|---|---|---|---|
| 1 스캐폴드 | 슬러그, 접두사, 클래스 이름, 텍스트 도메인을 파생; scripts/scaffold_plugin.py --help를 먼저 실행. --plugin-uri와 --author-uri는 실제 URI인 경우에만 전달 (그렇지 않으면 해당 줄은 삭제되며, 절대 플레이스홀더 도메인을 사용하지 않음). 스캐폴딩 직후 fswp-qa-engineer/scripts/run_gate.sh <dir> <min-php> --fix를 한 번 실행: 템플릿은 {{...}} 플레이스홀더를 포함하며, 포매터는 대체 전에 안전하게 다시 정리할 수 없습니다. | architecture.md | 없음 |
| 2 부트스트랩 + 라이프사이클 | 부트스트랩은 헤더, 자동 로드를 선언하고 메인 클래스에 핸드오프 | architecture.md | 없음 |
| 3 보안 | 모든 파일, 모든 플러그인 크기에 대한 전체 기준선 | fswp-security-engineer | fswp-security-engineer |
| 4 도메인 | CPT, 테이블 (dbDelta, 스키마 버전), REST, 크론 | data-cpt.md, rest-cron.md | fswp-api-developer; PRD에서 필요할 때 fswp-performance-engineer |
| 5 블록 (PRD에 있는 경우) | 사용자 정의 블록, 패턴, 상호 작용 | 없음 | fswp-block-developer |
| 6 관리자 UI | 설정 API, WP_List_Table, Dashicons; 체크리스트에 따라 에스컬레이션만 | admin-ui.md, modern-app-stack.md | 없음 |
| 7 공개 출력 | 먼저 사용자에게 현재 Atomic Framework 파일을 요청; 콜백 내에서 조건부 인큐 | frontend-output.md | 없음 |
| 8 i18n + 배포 | 모든 PHP 및 JS 문자열; readme; 라이선스; 버전 관리 | i18n-distribution.md | fswp-release-manager (WordPress.org의 경우) |
8단계 끝에서 멈추고 fswp-qa-engineer에 전달합니다.
애드온 구조
fswp-maintainer가 애드온 모드에서 실행될 때 여기서 1-3단계와 8단계를 재사용합니다. 추가 애드온 규칙(호스트 감지, Requires Plugins, 로드 순서, 정상적인 부재)은 fswp-maintainer에 있습니다.
표준 (모든 빌드, 모든 반복)
references/standards.md는 버전 관리/변경 로그 규율, 기술 스택 결정, 필수 프로젝트 메타데이터 (누락된 값을 절대 발명하지 않음), docs/의 기능별 문서, 코드 품질 기준, 최소 코드 규율 (결정 후 작성 순서, 근본 원인 수정, shortcut: 마커)을 규율합니다. 첫 번째 빌드 전과 기존 플러그인의 모든 반복 전에 읽으십시오. 이는 일회성 설정 단계가 아닙니다.
보안 태세
작은 플러그인에 대해 절대 축소되지 않음: 모든 권한 있는 작업에 대한 기능 검사, 모든 상태 변경에 대한 논스, 입력 정리 및 출력 이스케이프, 모든 쿼리에 $wpdb->prepare(), 모든 REST 라우트에 실제 permission_callback, 안전한 라이프사이클, 일반 텍스트 비밀 없음. 전체 규칙: fswp-security-engineer.
Alpine 계층
절대 추론되지 않음. references/frontend-output.md의 5점 체크리스트에 의해서만 선택되며, 사용자가 어떤 검사가 이를 촉발했는지와 vanilla 대안이 무엇인지 명시적으로 확인한 후에만 선택됩니다.
Atomic Framework (사용자 제공, 번들되지 않음)
별도로 유지 관리되는 제품입니다. 번들된 복사본은 표류할 것입니다. 빌드에 frontend가 포함될 때마다 현재 afw-tokens.css, afw-components.css, afw-foundation-logics.js를 요청하십시오 (Alpine 계층이 확인된 경우에만 alpine.min.js, alpine-loader.js, alpine-components.js 포함). 스캐폴드는 --foundation-dir을 통해 이를 복사하고 누락된 경우 알림과 함께 중지됩니다.
종속성
Atomic Framework(Tier 2 @wordpress/*, Tier 3 스택)를 제외한 모든 것은 스캐폴드 시점에 공식 레지스트리에서 latest로 확인된 다음 고정됩니다. 잠금 파일을 커밋하고 README에 확인된 버전을 기록하십시오. 최신-스캐폴드-시점에 커밋된 잠금 파일은 WordPress.org의 재현 가능한 소스 규칙을 충족합니다. 예외: 사용자가 명시한 호환성 상한선. 자세한 내용: references/modern-app-stack.md.
제공
설치 가능한 {plugin-slug}.zip (zip 루트에 플러그인 폴더) 및 readme.txt 및/또는 실제 설치 단계가 포함된 비공개 README.md, 그리고 짧은 요약: 접두사 및 기능 결정, 아직 완료해야 할 수동 단계 (API 키, 크론 간격, 초기 설정). 컴파일된 출력물은 소스와 함께 제공됩니다 (references/modern-app-stack.md).
번들
scripts/scaffold_plugin.py:--features cpt,db,rest,cron,admin,frontend(모든 하위 집합),--js-tier vanilla|alpine,--admin-tier native|react|app,--distribution wporg|private|both,--plugin-uri,--author-uri,--foundation-dir,--zip.assets/templates/:{{PREFIX}},{{Prefix}},{{prefix}},{{PLUGIN_NAME}},{{plugin-slug}}플레이스홀더가 포함된 플러그인 스켈레톤.