solmate-skills 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +19 -2
- package/README.md +37 -12
- package/docs-dev/SKILL.md +9 -2
- package/docs-dev/agents/openai.yaml +2 -2
- package/docs-plan/SKILL.md +20 -10
- package/docs-plan/agents/openai.yaml +2 -2
- package/ext-k-skill/scripts/check-setup.sh +29 -0
- package/ext-k-skill/scripts/run-k-skill-proxy.sh +15 -0
- package/ext-k-skill/scripts/validate-skills.sh +56 -0
- package/hooks/install.sh +157 -0
- package/hooks/suggest-skills.sh +109 -0
- package/hooks/verify-suggest.sh +42 -0
- package/hooks/watch-files.sh +96 -0
- package/package.json +1 -1
- package/rules-docs/SKILL.md +19 -4
- package/rules-docs/agents/openai.yaml +2 -2
- package/rules-product/SKILL.md +29 -4
- package/rules-product/agents/openai.yaml +2 -2
- package/rules-react/scripts/fetch-stitch.sh +30 -0
- package/rules-workflow/SKILL.md +8 -6
- package/tools-shadcn/scripts/verify-setup.sh +134 -0
- package/verify-docs/SKILL.md +31 -10
- package/verify-docs/agents/openai.yaml +2 -2
- package/verify-ui/SKILL.md +19 -3
- package/verify-ui/agents/openai.yaml +2 -2
package/AGENTS.md
CHANGED
|
@@ -56,6 +56,23 @@
|
|
|
56
56
|
- **파일 네이밍**: 모든 파일명 앞에는 `01_`과 같은 **순번(Numbering)**을 반드시 붙여 생성 순서와 계층을 명확히 한다. (예: `01_VISION.md`, `02_UI_DESIGN.md`)
|
|
57
57
|
- **Interactive Process**: 문서를 작성할 때 AI가 독단적으로 내용을 채우지 않는다. 초안 작성 전, **반드시 사용자에게 핵심 질문을 던지고 답변을 바탕으로 문서를 작성(Ask before Write)**한다.
|
|
58
58
|
|
|
59
|
+
### 2.7. SVG 다이어그램 산출물 표준 (User Journey & Data Flow)
|
|
60
|
+
- **사용자 동선 SVG 필수화**: 주요 기능·화면 흐름 문서에는 사용자 동선(User Journey / Screen Flow)을 설명하는 SVG 다이어그램을 포함한다.
|
|
61
|
+
- **저장 위치**: 사용자 동선 SVG는 `docs/02_UI_Screens/assets/`에 저장하고, 관련 UI 스크린 문서에서 상대 경로로 참조한다.
|
|
62
|
+
- **데이터 흐름 SVG 필수화**: 주요 기능의 기술 명세에는 데이터 흐름(Data Flow / API-DB-External Service Flow)을 설명하는 SVG 다이어그램을 포함한다.
|
|
63
|
+
- **저장 위치**: 데이터 흐름 SVG는 `docs/03_Technical_Specs/assets/`에 저장하고, 관련 기술 명세 문서에서 상대 경로로 참조한다.
|
|
64
|
+
- **작업 관리 위치**: SVG 작성·수정 작업은 `docs/04_Logic_Progress/00_BACKLOG.md` 또는 `docs/04_Logic_Progress/02_EXECUTION_PLAN.md`에 태스크로 관리한다.
|
|
65
|
+
- **검증 위치**: SVG가 최신 UI·API·DB 구조와 일치하는지 여부는 `docs/05_QA_Validation/`의 QA 체크리스트 또는 검증 문서에서 확인한다.
|
|
66
|
+
- **파일 네이밍**: SVG 파일명에도 순번과 목적을 포함한다. (예: `01_user_journey.svg`, `02_auth_data_flow.svg`)
|
|
67
|
+
|
|
68
|
+
### 2.8. HTML UI Preview Gate (필수)
|
|
69
|
+
- **HTML Preview 필수화**: `docs/02_UI_Screens/`의 UI 문서는 Markdown 설명만으로 완료할 수 없다. 주요 화면과 사용자 흐름은 반드시 브라우저에서 열어볼 수 있는 HTML Preview로 제작한다.
|
|
70
|
+
- **저장 위치**: HTML Preview는 `docs/02_UI_Screens/previews/`에 저장한다.
|
|
71
|
+
- **파일 네이밍**: HTML 파일명에도 순번과 목적을 포함한다. (예: `01_main_flow_preview.html`, `02_dashboard_preview.html`)
|
|
72
|
+
- **문서 링크 필수**: `00_SCREEN_FLOW.md`, `01_UI_DESIGN.md`, 관련 `XX_PROTOTYPE_REVIEW.md`는 해당 HTML Preview를 상대 경로로 링크해야 한다.
|
|
73
|
+
- **사용자 커뮤니케이션 필수**: 구현 전 HTML Preview를 사용자에게 보여주고 피드백을 받아야 하며, 확인 결과와 보완 사항을 UI 문서 또는 `docs/04_Logic_Progress/00_BACKLOG.md`에 기록한다.
|
|
74
|
+
- **구현 차단 조건**: HTML Preview가 없거나 문서에 링크되지 않았거나 사용자의 화면 확인 기록이 없으면 UI-First Gate를 통과할 수 없고, 구현을 시작할 수 없다.
|
|
75
|
+
|
|
59
76
|
## 3. 개발 표준 및 품질
|
|
60
77
|
- **UI 중심 개발 전략 (UI-First)**: Concept_Design -> UI_Screens -> Technical_Specs -> Logic_Progress 순서를 따른다.
|
|
61
78
|
- **git commit 필수**: 중요 작업 전 반드시 git commit을 수행한다.
|
|
@@ -87,7 +104,7 @@ AI 에이전트는 본 프로젝트에 설치된 다음 **26개 스킬**을 활
|
|
|
87
104
|
| | `docs-business` | 사업계획서 작성 (정부 지원, 투자 심사, 파트너십 목적별 구성) |
|
|
88
105
|
| **품질 검증 (QA)** | `verify-implementation` | 모든 `verify-*` 스킬의 통합 순차 실행 및 보고 |
|
|
89
106
|
| | `verify-docs` | 문서 레이어 정합성 및 네이밍/메타데이터, UI-First Gate 검증 |
|
|
90
|
-
| | `verify-ui` | 구현 UI와 화면
|
|
107
|
+
| | `verify-ui` | 구현 UI와 화면 문서·HTML Preview·사용자 동선·상태별 UI 정합성 검증 |
|
|
91
108
|
| | `verify-code` | PR 전 코드 품질 종합 리뷰 (로직, 타입, 중복, 사이드 이펙트) |
|
|
92
109
|
| | `verify-security` | OWASP Top 10 기준 보안 취약점 점검 (인증, 인젝션, 시크릿 노출 등) |
|
|
93
110
|
| | `verify-performance` | Lighthouse·Core Web Vitals 기준 성능 점검 (LCP, CLS, 번들, 이미지) |
|
|
@@ -112,7 +129,7 @@ AI 에이전트는 사용자가 스킬을 호출하지 않아도, 아래 상황
|
|
|
112
129
|
| 기술 선택, DB/API/아키텍처 설계 논의 시작 | `manage-decisions` | "결정이 필요한 상황입니다. `/manage-decisions`로 유형별 질문을 진행할까요?" |
|
|
113
130
|
| 보안·인증·인가·환경변수 관련 코드 작성 전후 | `verify-security` | "보안 관련 변경입니다. `/verify-security`로 OWASP 점검을 실행할까요?" |
|
|
114
131
|
| 성능·렌더링·이미지·번들 관련 작업 완료 후 | `verify-performance` | "성능 영향이 있을 수 있습니다. `/verify-performance`로 Lighthouse 점검을 실행할까요?" |
|
|
115
|
-
| UI·화면·컴포넌트 구현 완료 후 | `verify-ui` | "UI 구현 변경입니다. `/verify-ui`로
|
|
132
|
+
| UI·화면·컴포넌트 구현 완료 후 | `verify-ui` | "UI 구현 변경입니다. `/verify-ui`로 HTML Preview·화면 문서·사용자 동선 정합성을 검증할까요?" |
|
|
116
133
|
| PR 생성 전, 코드 변경 완료 후 | `verify-code`, `verify-implementation` | "PR 전 최종 점검입니다. `/verify-implementation`으로 전체 검증을 실행할까요?" |
|
|
117
134
|
| 기획·UI 문서 작성 요청 | `docs-plan` | "Layer 1-2 문서 작성은 `/docs-plan`을 사용하세요." |
|
|
118
135
|
| DB 스키마·API 명세·백로그 작성 요청 | `docs-dev` | "Layer 3-5 문서 작성은 `/docs-dev`를 사용하세요." |
|
package/README.md
CHANGED
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Curated skills for Solmate projects. Easily share and install AI tool skills across your team.
|
|
4
4
|
|
|
5
|
-
## What's New in 2.0.
|
|
5
|
+
## What's New in 2.0.6
|
|
6
6
|
|
|
7
|
-
`solmate-skills@2.0.
|
|
7
|
+
`solmate-skills@2.0.6` keeps **Backlog Context Lock** as the current documentation guardrail, adds **UI-First Gate** expectations, requires browser-viewable **HTML UI Previews**, formalizes SVG diagram outputs, and fixes package hygiene so installable skill scripts are included in the npm tarball.
|
|
8
8
|
|
|
9
9
|
Key changes:
|
|
10
10
|
|
|
11
11
|
- Every backlog task must link to related Concept, UI, Technical Spec, and QA documents.
|
|
12
12
|
- UI, user paths, data flow, loading states, empty states, and error states must be confirmed before coding.
|
|
13
|
+
- UI planning must include HTML preview files under `docs/02_UI_Screens/previews/` and link them from the related UI documents.
|
|
14
|
+
- User journey SVG files belong in `docs/02_UI_Screens/assets/`.
|
|
15
|
+
- Data flow SVG files belong in `docs/03_Technical_Specs/assets/`.
|
|
13
16
|
- `/rules-workflow` now treats linked backlog documents as implementation inputs before coding starts.
|
|
14
17
|
- `/verify-docs` fails backlog items that omit required related-document fields.
|
|
15
|
-
- Local Codex settings under `.codex/` are excluded from the npm package.
|
|
18
|
+
- Local Codex settings under `.codex/` are excluded from the npm package, while skill-owned shell scripts remain publishable.
|
|
16
19
|
|
|
17
20
|
## Installation
|
|
18
21
|
|
|
@@ -159,7 +162,7 @@ Skills are organized into five categories.
|
|
|
159
162
|
| `verify-security` | Check for security vulnerabilities based on OWASP Top 10. |
|
|
160
163
|
| `verify-performance` | Lighthouse & Core Web Vitals check. |
|
|
161
164
|
| `verify-code` | Comprehensive pre-PR code quality review. |
|
|
162
|
-
| `verify-ui` | Verify implemented UI against screen docs and user flows. |
|
|
165
|
+
| `verify-ui` | Verify implemented UI against screen docs, HTML previews, and user flows. |
|
|
163
166
|
| `verify-skills` | Verify skill package metadata, CLI output, and release readiness. |
|
|
164
167
|
|
|
165
168
|
---
|
|
@@ -193,13 +196,14 @@ docs/
|
|
|
193
196
|
|
|
194
197
|
```
|
|
195
198
|
1. /docs-plan → Write VISION_CORE.md, LEAN_CANVAS.md, PRODUCT_SPECS.md
|
|
196
|
-
2. /docs-plan → Write SCREEN_FLOW.md, UI_DESIGN.md
|
|
197
|
-
3. UI
|
|
198
|
-
4.
|
|
199
|
-
5.
|
|
200
|
-
6. /docs-dev → Write
|
|
201
|
-
7. /
|
|
202
|
-
8. /
|
|
199
|
+
2. /docs-plan → Write SCREEN_FLOW.md, UI_DESIGN.md, and HTML UI previews
|
|
200
|
+
3. HTML UI Preview Gate → Show browser-viewable HTML screens and capture user feedback
|
|
201
|
+
4. UI-First Gate → Confirm screens, user paths, data flow, and UI states before coding
|
|
202
|
+
5. Pre-Code Technical Brief → Confirm data sources, API shape, state strategy, and acceptance criteria
|
|
203
|
+
6. /docs-dev → Write DEVELOPMENT_PRINCIPLES.md, DB_SCHEMA.md, API_SPECS.md
|
|
204
|
+
7. /docs-dev → Write ROADMAP.md, BACKLOG.md with mandatory related document links
|
|
205
|
+
8. /rules-workflow → Implement each backlog item only after reading linked docs and passing UI-First Gate
|
|
206
|
+
9. /verify-implementation → Audit docs, UI, code, security, performance, DB, and skill package changes
|
|
203
207
|
```
|
|
204
208
|
|
|
205
209
|
Backlog items are intentionally document-linked. Each task in `docs/04_Logic_Progress/00_BACKLOG.md` must include related Concept, UI, Technical Spec, and QA documents, plus implementation preconditions, acceptance criteria, and a document sync check. If a related document does not exist, the item must say `N/A - 사유`; implementation should pause when the missing document is required for a safe decision.
|
|
@@ -210,12 +214,30 @@ Backlog Context Lock makes `docs/04_Logic_Progress/00_BACKLOG.md` act as a bridg
|
|
|
210
214
|
|
|
211
215
|
### UI-First Gate
|
|
212
216
|
|
|
213
|
-
UI-First Gate prevents implementation from starting before the team has reviewed the actual screens and the user's path through them. Before coding, confirm the core screen structure, user entry and exit paths, CTAs, screen-by-screen data flow, loading states, empty states, and error states. If these are missing, update `docs/02_UI_Screens
|
|
217
|
+
UI-First Gate prevents implementation from starting before the team has reviewed the actual screens and the user's path through them. Before coding, confirm the core screen structure, user entry and exit paths, CTAs, screen-by-screen data flow, loading states, empty states, and error states. If these are missing, update `docs/02_UI_Screens/`, its HTML previews, or the backlog first.
|
|
218
|
+
|
|
219
|
+
### HTML UI Preview Gate
|
|
220
|
+
|
|
221
|
+
UI planning documents are not complete with Markdown alone. For every major screen or user flow, create a browser-viewable HTML preview and store it under:
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
docs/02_UI_Screens/previews/
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Recommended naming:
|
|
228
|
+
|
|
229
|
+
```text
|
|
230
|
+
docs/02_UI_Screens/previews/01_main_flow_preview.html
|
|
231
|
+
docs/02_UI_Screens/previews/02_dashboard_preview.html
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Each related UI document must link to the HTML file with a relative path. The preview must be shown to the user before implementation, and feedback must be captured in `XX_PROTOTYPE_REVIEW.md`, `00_SCREEN_FLOW.md`, `01_UI_DESIGN.md`, or the related backlog item.
|
|
214
235
|
|
|
215
236
|
Required fields for every backlog item:
|
|
216
237
|
|
|
217
238
|
- `Related Concept Docs`
|
|
218
239
|
- `Related UI Docs`
|
|
240
|
+
- `Related HTML Preview`
|
|
219
241
|
- `Related Technical Docs`
|
|
220
242
|
- `Related QA Docs`
|
|
221
243
|
- `Implementation Preconditions`
|
|
@@ -234,6 +256,8 @@ If a related document does not exist, write `N/A - 사유`. Do not leave the fie
|
|
|
234
256
|
- [Product Specs](../01_Concept_Design/03_PRODUCT_SPECS.md) - feature purpose and user value
|
|
235
257
|
- Related UI Docs:
|
|
236
258
|
- [Screen Flow](../02_UI_Screens/00_SCREEN_FLOW.md) - target screen and interaction flow
|
|
259
|
+
- Related HTML Preview:
|
|
260
|
+
- [Main Flow Preview](../02_UI_Screens/previews/01_main_flow_preview.html) - browser-viewable UI for user review
|
|
237
261
|
- Related Technical Docs:
|
|
238
262
|
- [API Specs](../03_Technical_Specs/02_API_SPECS.md) - endpoint and data contract
|
|
239
263
|
- Related QA Docs:
|
|
@@ -241,6 +265,7 @@ If a related document does not exist, write `N/A - 사유`. Do not leave the fie
|
|
|
241
265
|
- Implementation Preconditions:
|
|
242
266
|
- [ ] Read all related documents before coding
|
|
243
267
|
- [ ] Confirm screen/UI before coding
|
|
268
|
+
- [ ] Show the HTML UI preview to the user and capture feedback
|
|
244
269
|
- [ ] Confirm user path and screen-by-screen data flow
|
|
245
270
|
- [ ] Confirm loading, empty, and error states
|
|
246
271
|
- [ ] Confirm implementation scope does not conflict with documented intent
|
package/docs-dev/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: docs-dev
|
|
3
|
-
description: Create and manage development documents for Layer 3 (Technical_Specs), Layer 4 (Logic_Progress), and Layer 5 (QA_Validation). Use when writing DB schema docs, API specs, development principles, roadmaps, backlogs, business logic designs, or test scenarios. Always read existing files before editing.
|
|
3
|
+
description: Create and manage development documents for Layer 3 (Technical_Specs), Layer 4 (Logic_Progress), and Layer 5 (QA_Validation). Use when writing DB schema docs, API specs, development principles, roadmaps, backlogs, business logic designs, or test scenarios. Enforces backlog links to Concept/UI/HTML Preview/Technical/QA docs before implementation. Always read existing files before editing.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Development Documentation Skill
|
|
@@ -60,19 +60,21 @@ This skill manages **Layer 3 (Technical_Specs)**, **Layer 4 (Logic_Progress)**,
|
|
|
60
60
|
|
|
61
61
|
**Backlog 문서 참조 강제 규칙**: `00_BACKLOG.md`의 모든 작업 항목은 관련 문서를 읽은 뒤 작성해야 하며, 구현자는 코드 작성 전에 해당 문서를 다시 확인해야 한다. 백로그는 단순 ToDo 목록이 아니라 Concept, UI, Technical Spec, QA 기준을 구현으로 연결하는 실행 티켓이어야 한다.
|
|
62
62
|
|
|
63
|
-
**UI-First Gate 강제 규칙**: 구현 코드는 화면 확인 이후에만 작성한다. 백로그 항목은 관련 UI
|
|
63
|
+
**UI-First Gate 강제 규칙**: 구현 코드는 화면 확인 이후에만 작성한다. 백로그 항목은 관련 UI 문서와 HTML Preview에서 화면 구조, 사용자 동선, 데이터 흐름, 로딩·빈 상태·오류 상태를 확인했음을 `Implementation Preconditions`에 포함해야 한다. 해당 정보가 없으면 `docs/02_UI_Screens/` 문서와 `docs/02_UI_Screens/previews/` HTML 파일부터 보완한다.
|
|
64
64
|
|
|
65
65
|
**Pre-Code Technical Brief 강제 규칙**: UI 확인 후에도 바로 구현하지 않는다. 데이터 소스, 최소 필드, mutation, 상태 관리 방식, acceptance criteria가 백로그나 기술 문서에 기록되어야 한다. 불명확하면 `docs/03_Technical_Specs/` 문서 또는 백로그 항목을 먼저 보완한다.
|
|
66
66
|
|
|
67
67
|
Backlog 항목 작성 전 필수 확인 대상:
|
|
68
68
|
- `docs/01_Concept_Design/`: 기능 목적, 사용자 가치, 제품 방향
|
|
69
69
|
- `docs/02_UI_Screens/`: 화면 흐름, UI 상태, 인터랙션
|
|
70
|
+
- `docs/02_UI_Screens/previews/`: 사용자에게 보여줄 HTML UI Preview
|
|
70
71
|
- `docs/03_Technical_Specs/`: API, DB, 데이터 구조, 기술 제약
|
|
71
72
|
- `docs/05_QA_Validation/`: 테스트 기준, 수용 조건, 검증 시나리오
|
|
72
73
|
|
|
73
74
|
각 Backlog 항목은 다음 필드를 반드시 포함한다:
|
|
74
75
|
- `Related Concept Docs`: 관련 기획/디자인 문서
|
|
75
76
|
- `Related UI Docs`: 관련 화면/플로우 문서
|
|
77
|
+
- `Related HTML Preview`: 관련 HTML 화면 프로토타입
|
|
76
78
|
- `Related Technical Docs`: 관련 기술 명세 문서
|
|
77
79
|
- `Related QA Docs`: 관련 검증 문서
|
|
78
80
|
- `Implementation Preconditions`: 구현 전 반드시 확인할 조건
|
|
@@ -85,6 +87,7 @@ Backlog 항목 작성 전 필수 확인 대상:
|
|
|
85
87
|
- 관련 문서를 실제로 읽었는가?
|
|
86
88
|
- 문서의 요구사항이 Backlog 항목에 반영되어 있는가?
|
|
87
89
|
- 화면 구조와 사용자 동선을 먼저 확인했는가?
|
|
90
|
+
- HTML UI Preview를 사용자에게 보여주고 피드백을 기록했는가?
|
|
88
91
|
- 화면별 입력·출력 데이터와 상태 변화를 확인했는가?
|
|
89
92
|
- 로딩·빈 상태·오류 상태가 UI 문서나 백로그에 반영되어 있는가?
|
|
90
93
|
- 데이터 소스, 최소 필드, mutation, 상태 관리 방식이 정리되었는가?
|
|
@@ -188,6 +191,8 @@ Backlog 항목 작성 전 필수 확인 대상:
|
|
|
188
191
|
- [문서명](../01_Concept_Design/XX_DOCUMENT.md) - 기능 목적/사용자 가치 근거
|
|
189
192
|
- Related UI Docs:
|
|
190
193
|
- [문서명](../02_UI_Screens/XX_DOCUMENT.md) - 화면 흐름/상태/인터랙션 근거
|
|
194
|
+
- Related HTML Preview:
|
|
195
|
+
- [HTML Preview](../02_UI_Screens/previews/XX_SCREEN_PREVIEW.html) - 사용자 확인용 브라우저 화면
|
|
191
196
|
- Related Technical Docs:
|
|
192
197
|
- [문서명](../03_Technical_Specs/XX_DOCUMENT.md) - API/DB/데이터 구조 근거
|
|
193
198
|
- Related QA Docs:
|
|
@@ -195,6 +200,7 @@ Backlog 항목 작성 전 필수 확인 대상:
|
|
|
195
200
|
- Implementation Preconditions:
|
|
196
201
|
- [ ] 관련 문서 전체 확인 완료
|
|
197
202
|
- [ ] 화면/UI 선확인 완료
|
|
203
|
+
- [ ] HTML UI Preview 사용자 확인 및 피드백 기록 완료
|
|
198
204
|
- [ ] 사용자 진입·전환·이탈 동선 확인 완료
|
|
199
205
|
- [ ] 화면별 입력·출력 데이터 및 상태 변화 확인 완료
|
|
200
206
|
- [ ] 로딩·빈 상태·오류 상태 확인 완료
|
|
@@ -203,6 +209,7 @@ Backlog 항목 작성 전 필수 확인 대상:
|
|
|
203
209
|
- [ ] 구현 범위와 문서 요구사항 충돌 없음
|
|
204
210
|
- Acceptance Criteria:
|
|
205
211
|
- [ ] 구현 결과가 확인된 화면 구조와 사용자 동선을 따른다
|
|
212
|
+
- [ ] 구현 결과가 HTML UI Preview와 의도 없이 불일치하지 않는다
|
|
206
213
|
- [ ] 데이터 흐름과 상태 변화가 Pre-Code Technical Brief와 일치한다
|
|
207
214
|
- [ ] QA 기준이 구현 완료 판단에 반영됨
|
|
208
215
|
- [ ] 핵심 사용자 흐름이 검증됨
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Development Docs"
|
|
3
|
-
short_description: "Write
|
|
4
|
-
default_prompt: "Use $docs-dev to create technical specs, implementation plans, and QA validation docs."
|
|
3
|
+
short_description: "Write specs, backlogs, QA, and preview links"
|
|
4
|
+
default_prompt: "Use $docs-dev to create technical specs, implementation plans, preview-linked backlogs, and QA validation docs."
|
package/docs-plan/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: docs-plan
|
|
3
|
-
description: Create and manage planning documents for Layer 1 (Concept_Design) and Layer 2 (UI_Screens)
|
|
3
|
+
description: Create and manage planning documents for Layer 1 (Concept_Design) and Layer 2 (UI_Screens), including required HTML UI previews under docs/02_UI_Screens/previews/. Use when documenting product vision, lean canvas, product specs, UI design systems, screen flows, HTML prototypes, or prototype reviews. Ask before writing. Always include Related Documents sections.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Planning Documentation Skill
|
|
@@ -39,6 +39,7 @@ This skill manages **Layer 1 (Concept_Design)** and **Layer 2 (UI_Screens)** —
|
|
|
39
39
|
**Layer 2 — UI_Screens**
|
|
40
40
|
- `00_SCREEN_FLOW.md` — 전체 사용자 여정, 진입·전환·이탈 흐름, 화면별 데이터 입출력
|
|
41
41
|
- `01_UI_DESIGN.md` — 디자인 시스템, 화면 구조, 상태별 UI, 핵심 CTA
|
|
42
|
+
- `previews/XX_SCREEN_PREVIEW.html` — 브라우저에서 열어볼 수 있는 화면/사용자 흐름 HTML Preview
|
|
42
43
|
- `XX_PROTOTYPE_REVIEW.md` — 페이지별 화면 확인 결과와 구현 전 피드백
|
|
43
44
|
|
|
44
45
|
## 3. Interactive Process (Ask Before Write)
|
|
@@ -77,7 +78,9 @@ This skill manages **Layer 1 (Concept_Design)** and **Layer 2 (UI_Screens)** —
|
|
|
77
78
|
18. **User Path**: 사용자는 어디서 진입하고, 어떤 CTA를 누르며, 어디로 이동하거나 이탈하는가?
|
|
78
79
|
19. **Data Flow**: 각 화면에서 필요한 입력 데이터, 표시 데이터, 저장/전송 데이터는 무엇인가?
|
|
79
80
|
20. **State Coverage**: 로딩, 빈 상태, 오류 상태, 권한 없음 상태는 화면에서 어떻게 보이는가?
|
|
80
|
-
21. **
|
|
81
|
+
21. **HTML UI Preview**: 주요 화면과 사용자 흐름을 `docs/02_UI_Screens/previews/`의 HTML 파일로 제작했는가?
|
|
82
|
+
22. **Preview Links**: `00_SCREEN_FLOW.md`, `01_UI_DESIGN.md`, 관련 `XX_PROTOTYPE_REVIEW.md`에서 HTML Preview를 상대 경로로 링크했는가?
|
|
83
|
+
23. **Prototype Review**: 사용자가 HTML Preview, 실제 화면, 스크린샷, 와이어프레임, 또는 프로토타입 리뷰를 먼저 확인했는가?
|
|
81
84
|
|
|
82
85
|
## 4. Templates
|
|
83
86
|
|
|
@@ -143,37 +146,44 @@ This skill manages **Layer 1 (Concept_Design)** and **Layer 2 (UI_Screens)** —
|
|
|
143
146
|
> Created: YYYY-MM-DD HH:mm
|
|
144
147
|
> Last Updated: YYYY-MM-DD HH:mm
|
|
145
148
|
|
|
146
|
-
## 1.
|
|
147
|
-
|
|
149
|
+
## 1. HTML UI Preview
|
|
150
|
+
- Preview: [HTML Preview](./previews/XX_SCREEN_PREVIEW.html)
|
|
151
|
+
- 확인 방식: 브라우저에서 HTML 파일 열람 / 로컬 서버 / 배포 URL
|
|
152
|
+
- 확인 목적: 화면 구조, 사용자 동선, 상태별 UI 커뮤니케이션
|
|
148
153
|
|
|
149
|
-
## 2.
|
|
154
|
+
## 2. Prototype Link/Screenshot
|
|
155
|
+
(스크린샷, 배포 URL, 또는 추가 작동 프로토타입 링크 첨부)
|
|
156
|
+
|
|
157
|
+
## 3. Key User Flows
|
|
150
158
|
(이 프로토타입에서 시연된 흐름 설명)
|
|
151
159
|
|
|
152
|
-
##
|
|
160
|
+
## 4. Screen States
|
|
153
161
|
- Default:
|
|
154
162
|
- Loading:
|
|
155
163
|
- Empty:
|
|
156
164
|
- Error:
|
|
157
165
|
- Permission denied / unavailable:
|
|
158
166
|
|
|
159
|
-
##
|
|
167
|
+
## 5. Data Flow
|
|
160
168
|
- Inputs:
|
|
161
169
|
- Displayed data:
|
|
162
170
|
- Mutations / saved data:
|
|
163
171
|
- External dependencies:
|
|
164
172
|
|
|
165
|
-
##
|
|
173
|
+
## 6. User Confirmation
|
|
166
174
|
- 화면/UI 선확인 여부:
|
|
175
|
+
- HTML Preview 확인 여부:
|
|
167
176
|
- 확인자:
|
|
168
177
|
- 확인 일시:
|
|
169
178
|
- 보완 필요 사항:
|
|
170
179
|
|
|
171
|
-
##
|
|
180
|
+
## 7. Feedback & Improvements
|
|
172
181
|
(구현 전 변경이 필요한 사항)
|
|
173
182
|
|
|
174
|
-
##
|
|
183
|
+
## 8. Related Documents
|
|
175
184
|
- **Concept_Design**: [Product Specs](../01_Concept_Design/03_PRODUCT_SPECS.md) - 사이트맵 및 사용자 플로우
|
|
176
185
|
- **UI_Screens**: [UI Design](./01_UI_DESIGN.md) - 디자인 시스템 및 컴포넌트 가이드라인
|
|
186
|
+
- **UI_Screens**: [HTML Preview](./previews/XX_SCREEN_PREVIEW.html) - 브라우저 확인용 화면 프로토타입
|
|
177
187
|
- **Technical_Specs**: [Related Spec](../03_Technical_Specs/XX_SPEC.md) - 구현 명세 요구사항
|
|
178
188
|
```
|
|
179
189
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Planning Docs"
|
|
3
|
-
short_description: "Write product
|
|
4
|
-
default_prompt: "Use $docs-plan to build
|
|
3
|
+
short_description: "Write product docs and HTML UI previews"
|
|
4
|
+
default_prompt: "Use $docs-plan to build product vision, screen flow, UI docs, and HTML UI previews."
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
secrets_file="${1:-$HOME/.config/k-skill/secrets.env}"
|
|
5
|
+
|
|
6
|
+
missing=0
|
|
7
|
+
|
|
8
|
+
if [[ ! -f "$secrets_file" ]]; then
|
|
9
|
+
echo "missing secrets file: $secrets_file"
|
|
10
|
+
missing=1
|
|
11
|
+
else
|
|
12
|
+
perms=$(stat -f '%Lp' "$secrets_file" 2>/dev/null || stat -c '%a' "$secrets_file" 2>/dev/null)
|
|
13
|
+
if [[ "$perms" != "600" ]]; then
|
|
14
|
+
echo "insecure permissions on $secrets_file: $perms (expected 600)"
|
|
15
|
+
missing=1
|
|
16
|
+
fi
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
if [[ "$missing" -ne 0 ]]; then
|
|
20
|
+
cat <<EOF
|
|
21
|
+
next steps:
|
|
22
|
+
1. create ~/.config/k-skill/secrets.env with your credentials
|
|
23
|
+
2. chmod 0600 ~/.config/k-skill/secrets.env
|
|
24
|
+
3. run this check again
|
|
25
|
+
EOF
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "k-skill setup looks usable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
SECRETS_FILE="${KSKILL_SECRETS_FILE:-$HOME/.config/k-skill/secrets.env}"
|
|
6
|
+
|
|
7
|
+
if [[ -f "$SECRETS_FILE" ]]; then
|
|
8
|
+
set -a
|
|
9
|
+
# shellcheck disable=SC1090
|
|
10
|
+
source "$SECRETS_FILE"
|
|
11
|
+
set +a
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
cd "$ROOT_DIR"
|
|
15
|
+
exec node packages/k-skill-proxy/src/server.js
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
status=0
|
|
6
|
+
|
|
7
|
+
while IFS= read -r -d '' skill_dir; do
|
|
8
|
+
skill_name="$(basename "$skill_dir")"
|
|
9
|
+
skill_file="$skill_dir/SKILL.md"
|
|
10
|
+
|
|
11
|
+
if [[ ! -f "$skill_file" ]]; then
|
|
12
|
+
echo "missing SKILL.md: $skill_name"
|
|
13
|
+
status=1
|
|
14
|
+
continue
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if ! head -n 1 "$skill_file" | grep -qx -- "---"; then
|
|
18
|
+
echo "missing frontmatter start: $skill_file"
|
|
19
|
+
status=1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if ! grep -q '^name: ' "$skill_file"; then
|
|
23
|
+
echo "missing name field: $skill_file"
|
|
24
|
+
status=1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
if ! grep -q '^description: ' "$skill_file"; then
|
|
28
|
+
echo "missing description field: $skill_file"
|
|
29
|
+
status=1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
declared_name="$(sed -n 's/^name: //p' "$skill_file" | head -n 1 | tr -d '"')"
|
|
33
|
+
if [[ "$declared_name" != "$skill_name" ]]; then
|
|
34
|
+
echo "name mismatch: $skill_file declares '$declared_name' but directory is '$skill_name'"
|
|
35
|
+
status=1
|
|
36
|
+
fi
|
|
37
|
+
done < <(
|
|
38
|
+
find "$root" -mindepth 1 -maxdepth 1 -type d \
|
|
39
|
+
! -name .git \
|
|
40
|
+
! -name .github \
|
|
41
|
+
! -name .omx \
|
|
42
|
+
! -name .changeset \
|
|
43
|
+
! -name docs \
|
|
44
|
+
! -name node_modules \
|
|
45
|
+
! -name packages \
|
|
46
|
+
! -name python-packages \
|
|
47
|
+
! -name scripts \
|
|
48
|
+
! -name examples \
|
|
49
|
+
-print0
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
if [[ "$status" -ne 0 ]]; then
|
|
53
|
+
exit "$status"
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
echo "skill layout looks valid"
|
package/hooks/install.sh
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# solmate-skills: install.sh
|
|
3
|
+
# Purpose: Install Solmate hook scripts into the current project's .claude/ directory
|
|
4
|
+
# and merge hook configuration into .claude/settings.json.
|
|
5
|
+
# Usage: bash .agent/skills/hooks/install.sh
|
|
6
|
+
# (or run from any location: bash <path-to-hooks>/install.sh)
|
|
7
|
+
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
+
PROJECT_ROOT="$(pwd)"
|
|
12
|
+
CLAUDE_DIR="$PROJECT_ROOT/.claude"
|
|
13
|
+
HOOKS_DIR="$CLAUDE_DIR/hooks"
|
|
14
|
+
SETTINGS_FILE="$CLAUDE_DIR/settings.json"
|
|
15
|
+
|
|
16
|
+
echo "Solmate Skills — Hook Installer"
|
|
17
|
+
echo "Project: $PROJECT_ROOT"
|
|
18
|
+
echo ""
|
|
19
|
+
|
|
20
|
+
# --- Step 1: Create .claude/hooks/ ---
|
|
21
|
+
mkdir -p "$HOOKS_DIR"
|
|
22
|
+
echo "[1/4] Created $HOOKS_DIR"
|
|
23
|
+
|
|
24
|
+
# --- Step 2: Copy hook scripts ---
|
|
25
|
+
cp "$SCRIPT_DIR/suggest-skills.sh" "$HOOKS_DIR/solmate-suggest.sh"
|
|
26
|
+
cp "$SCRIPT_DIR/watch-files.sh" "$HOOKS_DIR/solmate-watch.sh"
|
|
27
|
+
cp "$SCRIPT_DIR/verify-suggest.sh" "$HOOKS_DIR/solmate-verify-suggest.sh"
|
|
28
|
+
chmod +x "$HOOKS_DIR/solmate-suggest.sh"
|
|
29
|
+
chmod +x "$HOOKS_DIR/solmate-watch.sh"
|
|
30
|
+
chmod +x "$HOOKS_DIR/solmate-verify-suggest.sh"
|
|
31
|
+
echo "[2/4] Copied hook scripts:"
|
|
32
|
+
echo " .claude/hooks/solmate-suggest.sh (UserPromptSubmit)"
|
|
33
|
+
echo " .claude/hooks/solmate-watch.sh (PreToolUse)"
|
|
34
|
+
echo " .claude/hooks/solmate-verify-suggest.sh (Stop)"
|
|
35
|
+
|
|
36
|
+
# --- Step 3: Merge hook config into settings.json ---
|
|
37
|
+
echo "[3/4] Merging hook config into $SETTINGS_FILE"
|
|
38
|
+
|
|
39
|
+
python3 - "$SETTINGS_FILE" <<'PYEOF'
|
|
40
|
+
import sys, json, os
|
|
41
|
+
|
|
42
|
+
settings_path = sys.argv[1]
|
|
43
|
+
|
|
44
|
+
# Load existing settings or start fresh
|
|
45
|
+
if os.path.exists(settings_path):
|
|
46
|
+
with open(settings_path, 'r') as f:
|
|
47
|
+
try:
|
|
48
|
+
settings = json.load(f)
|
|
49
|
+
except json.JSONDecodeError:
|
|
50
|
+
print(f" WARNING: {settings_path} has invalid JSON. Backing up and starting fresh.")
|
|
51
|
+
os.rename(settings_path, settings_path + '.bak')
|
|
52
|
+
settings = {}
|
|
53
|
+
else:
|
|
54
|
+
settings = {}
|
|
55
|
+
|
|
56
|
+
hooks = settings.setdefault('hooks', {})
|
|
57
|
+
|
|
58
|
+
# --- UserPromptSubmit hook ---
|
|
59
|
+
suggest_cmd = "bash .claude/hooks/solmate-suggest.sh"
|
|
60
|
+
submit_hooks = hooks.setdefault('UserPromptSubmit', [])
|
|
61
|
+
|
|
62
|
+
# Check for duplicate
|
|
63
|
+
already_has_suggest = any(
|
|
64
|
+
h.get('command') == suggest_cmd
|
|
65
|
+
for entry in submit_hooks
|
|
66
|
+
for h in entry.get('hooks', [])
|
|
67
|
+
)
|
|
68
|
+
if not already_has_suggest:
|
|
69
|
+
submit_hooks.append({
|
|
70
|
+
"hooks": [{
|
|
71
|
+
"type": "command",
|
|
72
|
+
"command": suggest_cmd,
|
|
73
|
+
"timeout": 5
|
|
74
|
+
}]
|
|
75
|
+
})
|
|
76
|
+
print(" Added: UserPromptSubmit → solmate-suggest.sh")
|
|
77
|
+
else:
|
|
78
|
+
print(" Skipped (already exists): UserPromptSubmit → solmate-suggest.sh")
|
|
79
|
+
|
|
80
|
+
# --- PreToolUse hook ---
|
|
81
|
+
watch_cmd = "bash .claude/hooks/solmate-watch.sh"
|
|
82
|
+
pre_hooks = hooks.setdefault('PreToolUse', [])
|
|
83
|
+
|
|
84
|
+
already_has_watch = any(
|
|
85
|
+
h.get('command') == watch_cmd
|
|
86
|
+
for entry in pre_hooks
|
|
87
|
+
for h in entry.get('hooks', [])
|
|
88
|
+
)
|
|
89
|
+
if not already_has_watch:
|
|
90
|
+
pre_hooks.append({
|
|
91
|
+
"matcher": "Read|Write|Edit|Bash",
|
|
92
|
+
"hooks": [{
|
|
93
|
+
"type": "command",
|
|
94
|
+
"command": watch_cmd,
|
|
95
|
+
"timeout": 5
|
|
96
|
+
}]
|
|
97
|
+
})
|
|
98
|
+
print(" Added: PreToolUse (Read|Write|Edit|Bash) → solmate-watch.sh")
|
|
99
|
+
else:
|
|
100
|
+
print(" Skipped (already exists): PreToolUse → solmate-watch.sh")
|
|
101
|
+
|
|
102
|
+
# --- Stop hook ---
|
|
103
|
+
verify_cmd = "bash .claude/hooks/solmate-verify-suggest.sh"
|
|
104
|
+
stop_hooks = hooks.setdefault('Stop', [])
|
|
105
|
+
|
|
106
|
+
already_has_verify = any(
|
|
107
|
+
h.get('command') == verify_cmd
|
|
108
|
+
for entry in stop_hooks
|
|
109
|
+
for h in entry.get('hooks', [])
|
|
110
|
+
)
|
|
111
|
+
if not already_has_verify:
|
|
112
|
+
stop_hooks.append({
|
|
113
|
+
"hooks": [{
|
|
114
|
+
"type": "command",
|
|
115
|
+
"command": verify_cmd,
|
|
116
|
+
"timeout": 10,
|
|
117
|
+
"statusMessage": "변경 파일 분석 중..."
|
|
118
|
+
}]
|
|
119
|
+
})
|
|
120
|
+
print(" Added: Stop → solmate-verify-suggest.sh")
|
|
121
|
+
else:
|
|
122
|
+
print(" Skipped (already exists): Stop → solmate-verify-suggest.sh")
|
|
123
|
+
|
|
124
|
+
# Write back
|
|
125
|
+
os.makedirs(os.path.dirname(settings_path), exist_ok=True)
|
|
126
|
+
with open(settings_path, 'w') as f:
|
|
127
|
+
json.dump(settings, f, indent=2, ensure_ascii=False)
|
|
128
|
+
f.write('\n')
|
|
129
|
+
|
|
130
|
+
print(f" Saved: {settings_path}")
|
|
131
|
+
PYEOF
|
|
132
|
+
|
|
133
|
+
# --- Step 4: Add .claude/hooks/ to .gitignore if not already there ---
|
|
134
|
+
GITIGNORE="$PROJECT_ROOT/.gitignore"
|
|
135
|
+
if [ -f "$GITIGNORE" ]; then
|
|
136
|
+
if ! grep -q "\.claude/hooks/" "$GITIGNORE" 2>/dev/null; then
|
|
137
|
+
echo "" >> "$GITIGNORE"
|
|
138
|
+
echo "# Solmate hook scripts (project-local)" >> "$GITIGNORE"
|
|
139
|
+
echo ".claude/hooks/" >> "$GITIGNORE"
|
|
140
|
+
echo "[4/4] Added .claude/hooks/ to .gitignore"
|
|
141
|
+
else
|
|
142
|
+
echo "[4/4] .gitignore already excludes .claude/hooks/"
|
|
143
|
+
fi
|
|
144
|
+
else
|
|
145
|
+
echo "[4/4] No .gitignore found — skipping"
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
echo ""
|
|
149
|
+
echo "Done. Hooks are active in this project."
|
|
150
|
+
echo ""
|
|
151
|
+
echo "What was installed:"
|
|
152
|
+
echo " UserPromptSubmit → 프롬프트 키워드 감지 → 관련 스킬 제안"
|
|
153
|
+
echo " PreToolUse → 편집 중인 파일 패턴 감지 → 관련 스킬 제안"
|
|
154
|
+
echo " Stop → 작업 완료 후 변경 파일 분석 → verify-* 스킬 실행 시점 알림"
|
|
155
|
+
echo ""
|
|
156
|
+
echo "To review or disable hooks, open /hooks in Claude Code."
|
|
157
|
+
echo "To uninstall, remove .claude/hooks/ and the 'hooks' section from .claude/settings.json."
|