sppurt 0.0.0-stage → 0.6.0

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.
Files changed (92) hide show
  1. package/README.md +109 -2
  2. package/dist/cli.js +2 -0
  3. package/dist/dashboard-ui/assets/SupplyChainCanvas-7QWuKZkc.js +1 -0
  4. package/dist/dashboard-ui/assets/index-DDMobcDz.css +1 -0
  5. package/dist/dashboard-ui/assets/index-idYPQJpm.js +809 -0
  6. package/dist/dashboard-ui/favicons/29cm.co.kr.png +0 -0
  7. package/dist/dashboard-ui/favicons/aliexpress.com.png +0 -0
  8. package/dist/dashboard-ui/favicons/amazon.com.png +0 -0
  9. package/dist/dashboard-ui/favicons/apify.com.png +0 -0
  10. package/dist/dashboard-ui/favicons/argo.camp.png +0 -0
  11. package/dist/dashboard-ui/favicons/boxhero.io.png +0 -0
  12. package/dist/dashboard-ui/favicons/bronte.co.kr.png +0 -0
  13. package/dist/dashboard-ui/favicons/cafe24.com.png +0 -0
  14. package/dist/dashboard-ui/favicons/cjdropshipping.com.png +0 -0
  15. package/dist/dashboard-ui/favicons/claude.ai.png +0 -0
  16. package/dist/dashboard-ui/favicons/coupang.com.png +0 -0
  17. package/dist/dashboard-ui/favicons/datalab.naver.com.png +0 -0
  18. package/dist/dashboard-ui/favicons/domeggook.com.png +0 -0
  19. package/dist/dashboard-ui/favicons/domeme.com.png +0 -0
  20. package/dist/dashboard-ui/favicons/domeme.domeggook.com.png +0 -0
  21. package/dist/dashboard-ui/favicons/ecount.com.png +0 -0
  22. package/dist/dashboard-ui/favicons/ezadmin.co.kr.png +0 -0
  23. package/dist/dashboard-ui/favicons/fallback.svg +1 -0
  24. package/dist/dashboard-ui/favicons/hwahae.com.png +0 -0
  25. package/dist/dashboard-ui/favicons/ksystem.co.kr.png +0 -0
  26. package/dist/dashboard-ui/favicons/kurly.com.png +0 -0
  27. package/dist/dashboard-ui/favicons/mail.google.com.ico +0 -0
  28. package/dist/dashboard-ui/favicons/meta.com.jpg +0 -0
  29. package/dist/dashboard-ui/favicons/musinsa.com.png +0 -0
  30. package/dist/dashboard-ui/favicons/oliveyoung.co.kr.png +0 -0
  31. package/dist/dashboard-ui/favicons/onewms.co.kr.png +0 -0
  32. package/dist/dashboard-ui/favicons/openai.com.png +0 -0
  33. package/dist/dashboard-ui/favicons/openclaw.ai.png +0 -0
  34. package/dist/dashboard-ui/favicons/plto.com.png +0 -0
  35. package/dist/dashboard-ui/favicons/poomgo.co.kr.ico +0 -0
  36. package/dist/dashboard-ui/favicons/qoo10.jp.png +0 -0
  37. package/dist/dashboard-ui/favicons/sabangnet.co.kr.png +0 -0
  38. package/dist/dashboard-ui/favicons/say-go.co.kr.png +0 -0
  39. package/dist/dashboard-ui/favicons/searchad.naver.com.png +0 -0
  40. package/dist/dashboard-ui/favicons/shopify.com.png +0 -0
  41. package/dist/dashboard-ui/favicons/shopping.naver.com.ico +0 -0
  42. package/dist/dashboard-ui/favicons/smartstore.ico +0 -0
  43. package/dist/dashboard-ui/favicons/sources.json +170 -0
  44. package/dist/dashboard-ui/favicons/specialoffer.co.kr.png +0 -0
  45. package/dist/dashboard-ui/favicons/ssfshop.com.png +0 -0
  46. package/dist/dashboard-ui/favicons/toss.im.png +0 -0
  47. package/dist/dashboard-ui/favicons/wconcept.co.kr.ico +0 -0
  48. package/dist/dashboard-ui/favicons/wehago.com.png +0 -0
  49. package/dist/dashboard-ui/favicons/zigzag.kr.png +0 -0
  50. package/dist/dashboard-ui/index.html +13 -0
  51. package/dist/skills/README.md +104 -0
  52. package/dist/skills/cost-calc/SKILL.md +104 -0
  53. package/dist/skills/cost-calc/agents/openai.yaml +8 -0
  54. package/dist/skills/cost-register/SKILL.md +116 -0
  55. package/dist/skills/daily-report/SKILL.md +80 -0
  56. package/dist/skills/daily-report/agents/openai.yaml +8 -0
  57. package/dist/skills/dashboard/SKILL.md +50 -0
  58. package/dist/skills/dashboard/agents/openai.yaml +8 -0
  59. package/dist/skills/inventory-sync/SKILL.md +85 -0
  60. package/dist/skills/inventory-sync/agents/openai.yaml +8 -0
  61. package/dist/skills/order-collect/SKILL.md +132 -0
  62. package/dist/skills/order-collect/agents/openai.yaml +8 -0
  63. package/dist/skills/order-fulfill/SKILL.md +97 -0
  64. package/dist/skills/order-fulfill/agents/openai.yaml +8 -0
  65. package/dist/skills/policy-ask/SKILL.md +52 -0
  66. package/dist/skills/price-monitor/SKILL.md +103 -0
  67. package/dist/skills/price-monitor/agents/openai.yaml +8 -0
  68. package/dist/skills/product-parse/SKILL.md +233 -0
  69. package/dist/skills/product-parse/agents/openai.yaml +8 -0
  70. package/dist/skills/product-sync/SKILL.md +85 -0
  71. package/dist/skills/product-sync/agents/openai.yaml +8 -0
  72. package/dist/skills/settlement-deposit/SKILL.md +88 -0
  73. package/dist/skills/settlement-report/SKILL.md +121 -0
  74. package/dist/skills/settlement-report/agents/openai.yaml +8 -0
  75. package/dist/skills/shopport/SKILL.md +123 -0
  76. package/dist/skills/shopport/agents/openai.yaml +8 -0
  77. package/dist/skills/source-to-register/SKILL.md +92 -0
  78. package/dist/skills/source-to-register/agents/openai.yaml +8 -0
  79. package/dist/skills/sppt/SKILL.md +234 -0
  80. package/dist/skills/sppt/agents/openai.yaml +8 -0
  81. package/dist/skills/sppurt/SKILL.md +234 -0
  82. package/dist/skills/sppurt/agents/openai.yaml +8 -0
  83. package/dist/skills/status-check/SKILL.md +78 -0
  84. package/dist/skills/status-check/agents/openai.yaml +8 -0
  85. package/dist/skills/trend-research/SKILL.md +79 -0
  86. package/dist/skills/trend-research/agents/openai.yaml +8 -0
  87. package/dist/skills/update/SKILL.md +83 -0
  88. package/dist/skills/waterfall-source/SKILL.md +80 -0
  89. package/dist/skills/waterfall-source/agents/openai.yaml +8 -0
  90. package/dist/skills/weekly-analysis/SKILL.md +84 -0
  91. package/dist/skills/weekly-analysis/agents/openai.yaml +8 -0
  92. package/package.json +60 -5
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><g fill="none" stroke="#94a3b8" stroke-width="2"><circle cx="16" cy="16" r="13"/><ellipse cx="16" cy="16" rx="6" ry="13"/><path d="M3 16h26M6 8h20M6 24h20"/></g></svg>
@@ -0,0 +1,170 @@
1
+ {
2
+ "29cm.co.kr": {
3
+ "filename": "29cm.co.kr.png",
4
+ "source_url": "https://www.google.com/s2/favicons?domain=29cm.co.kr&sz=64"
5
+ },
6
+ "aliexpress.com": {
7
+ "filename": "aliexpress.com.png",
8
+ "source_url": "https://www.google.com/s2/favicons?domain=aliexpress.com&sz=64"
9
+ },
10
+ "amazon.com": {
11
+ "filename": "amazon.com.png",
12
+ "source_url": "https://www.google.com/s2/favicons?domain=amazon.com&sz=64"
13
+ },
14
+ "apify.com": {
15
+ "filename": "apify.com.png",
16
+ "source_url": "https://www.google.com/s2/favicons?domain=apify.com&sz=64"
17
+ },
18
+ "argo.camp": {
19
+ "filename": "argo.camp.png",
20
+ "source_url": "https://www.google.com/s2/favicons?domain=argo.camp&sz=64"
21
+ },
22
+ "boxhero.io": {
23
+ "filename": "boxhero.io.png",
24
+ "source_url": "https://www.google.com/s2/favicons?domain=boxhero.io&sz=64"
25
+ },
26
+ "bronte.co.kr": {
27
+ "filename": "bronte.co.kr.png",
28
+ "source_url": "https://www.google.com/s2/favicons?domain=bronte.co.kr&sz=64"
29
+ },
30
+ "cafe24.com": {
31
+ "filename": "cafe24.com.png",
32
+ "source_url": "https://www.google.com/s2/favicons?domain=cafe24.com&sz=64"
33
+ },
34
+ "cjdropshipping.com": {
35
+ "filename": "cjdropshipping.com.png",
36
+ "source_url": "https://www.google.com/s2/favicons?domain=cjdropshipping.com&sz=64"
37
+ },
38
+ "claude.ai": {
39
+ "filename": "claude.ai.png",
40
+ "source_url": "https://www.google.com/s2/favicons?domain=claude.ai&sz=64"
41
+ },
42
+ "coupang.com": {
43
+ "filename": "coupang.com.png",
44
+ "source_url": "https://www.google.com/s2/favicons?domain=coupang.com&sz=64"
45
+ },
46
+ "datalab.naver.com": {
47
+ "filename": "datalab.naver.com.png",
48
+ "source_url": "https://www.google.com/s2/favicons?domain=datalab.naver.com&sz=64"
49
+ },
50
+ "domeggook.com": {
51
+ "filename": "domeggook.com.png",
52
+ "source_url": "https://www.google.com/s2/favicons?domain=domeggook.com&sz=64"
53
+ },
54
+ "domeme.com": {
55
+ "filename": "domeme.com.png",
56
+ "source_url": "https://www.google.com/s2/favicons?domain=domeme.com&sz=64"
57
+ },
58
+ "domeme.domeggook.com": {
59
+ "filename": "domeme.domeggook.com.png",
60
+ "source_url": "https://www.google.com/s2/favicons?domain=domeme.domeggook.com&sz=64"
61
+ },
62
+ "ecount.com": {
63
+ "filename": "ecount.com.png",
64
+ "source_url": "https://www.google.com/s2/favicons?domain=ecount.com&sz=64"
65
+ },
66
+ "ezadmin.co.kr": {
67
+ "filename": "ezadmin.co.kr.png",
68
+ "source_url": "https://www.google.com/s2/favicons?domain=ezadmin.co.kr&sz=64"
69
+ },
70
+ "hwahae.com": {
71
+ "filename": "hwahae.com.png",
72
+ "source_url": "https://www.google.com/s2/favicons?domain=hwahae.com&sz=64"
73
+ },
74
+ "ksystem.co.kr": {
75
+ "filename": "ksystem.co.kr.png",
76
+ "source_url": "https://www.ksystem.co.kr/wp-content/uploads/2023/01/cropped-favicon-32x32.png"
77
+ },
78
+ "kurly.com": {
79
+ "filename": "kurly.com.png",
80
+ "source_url": "https://www.google.com/s2/favicons?domain=kurly.com&sz=64"
81
+ },
82
+ "mail.google.com": {
83
+ "filename": "mail.google.com.ico",
84
+ "source_url": "https://ssl.gstatic.com/ui/v1/icons/mail/rfr/gmail.ico"
85
+ },
86
+ "meta.com": {
87
+ "filename": "meta.com.jpg",
88
+ "source_url": "https://www.google.com/s2/favicons?domain=meta.com&sz=64"
89
+ },
90
+ "musinsa.com": {
91
+ "filename": "musinsa.com.png",
92
+ "source_url": "https://www.google.com/s2/favicons?domain=musinsa.com&sz=64"
93
+ },
94
+ "oliveyoung.co.kr": {
95
+ "filename": "oliveyoung.co.kr.png",
96
+ "source_url": "https://www.google.com/s2/favicons?domain=oliveyoung.co.kr&sz=64"
97
+ },
98
+ "onewms.co.kr": {
99
+ "filename": "onewms.co.kr.png",
100
+ "source_url": "https://www.google.com/s2/favicons?domain=onewms.co.kr&sz=64"
101
+ },
102
+ "openai.com": {
103
+ "filename": "openai.com.png",
104
+ "source_url": "https://www.google.com/s2/favicons?domain=openai.com&sz=64"
105
+ },
106
+ "openclaw.ai": {
107
+ "filename": "openclaw.ai.png",
108
+ "source_url": "https://www.google.com/s2/favicons?domain=openclaw.ai&sz=64"
109
+ },
110
+ "plto.com": {
111
+ "filename": "plto.com.png",
112
+ "source_url": "https://www.google.com/s2/favicons?domain=plto.com&sz=64"
113
+ },
114
+ "poomgo.co.kr": {
115
+ "filename": "poomgo.co.kr.ico",
116
+ "source_url": "https://poomgo.com/icon.png?139a61f35e18c2b8"
117
+ },
118
+ "qoo10.jp": {
119
+ "filename": "qoo10.jp.png",
120
+ "source_url": "https://www.google.com/s2/favicons?domain=qoo10.jp&sz=64"
121
+ },
122
+ "sabangnet.co.kr": {
123
+ "filename": "sabangnet.co.kr.png",
124
+ "source_url": "https://www.google.com/s2/favicons?domain=sabangnet.co.kr&sz=64"
125
+ },
126
+ "say-go.co.kr": {
127
+ "filename": "say-go.co.kr.png",
128
+ "source_url": "https://say-go.co.kr/img/favicon.png"
129
+ },
130
+ "searchad.naver.com": {
131
+ "filename": "searchad.naver.com.png",
132
+ "source_url": "https://www.google.com/s2/favicons?domain=searchad.naver.com&sz=64"
133
+ },
134
+ "shopify.com": {
135
+ "filename": "shopify.com.png",
136
+ "source_url": "https://www.google.com/s2/favicons?domain=shopify.com&sz=64"
137
+ },
138
+ "shopping.naver.com": {
139
+ "filename": "shopping.naver.com.ico",
140
+ "source_url": "https://shopv.pstatic.net/web/r/20261002154536/_next/static/ico/favicon_shopping.ico"
141
+ },
142
+ "smartstore.naver.com": {
143
+ "filename": "smartstore.ico",
144
+ "source_url": "https://smartstore.naver.com/favicon.ico"
145
+ },
146
+ "specialoffer.co.kr": {
147
+ "filename": "specialoffer.co.kr.png",
148
+ "source_url": "https://www.google.com/s2/favicons?domain=specialoffer.co.kr&sz=64"
149
+ },
150
+ "ssfshop.com": {
151
+ "filename": "ssfshop.com.png",
152
+ "source_url": "https://www.google.com/s2/favicons?domain=ssfshop.com&sz=64"
153
+ },
154
+ "toss.im": {
155
+ "filename": "toss.im.png",
156
+ "source_url": "https://www.google.com/s2/favicons?domain=toss.im&sz=64"
157
+ },
158
+ "wconcept.co.kr": {
159
+ "filename": "wconcept.co.kr.ico",
160
+ "source_url": "https://static.wconcept.co.kr/favicon.ico"
161
+ },
162
+ "wehago.com": {
163
+ "filename": "wehago.com.png",
164
+ "source_url": "https://www.google.com/s2/favicons?domain=wehago.com&sz=64"
165
+ },
166
+ "zigzag.kr": {
167
+ "filename": "zigzag.kr.png",
168
+ "source_url": "https://www.google.com/s2/favicons?domain=zigzag.kr&sz=64"
169
+ }
170
+ }
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>shopport</title>
7
+ <script type="module" crossorigin src="/assets/index-idYPQJpm.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-DDMobcDz.css">
9
+ </head>
10
+ <body>
11
+ <div id="root"></div>
12
+ </body>
13
+ </html>
@@ -0,0 +1,104 @@
1
+ # Sppurt Skills
2
+
3
+ > Claude Code가 읽고 실행하는 커머스 운영 워크플로우 스킬
4
+
5
+ ## 설치
6
+
7
+ ### 자동 설치 (npm 설치 시 자동 등록)
8
+
9
+ ```bash
10
+ npm install -g sppurt
11
+ ```
12
+
13
+ 설치 완료 후 `~/.claude/skills/`에 스킬이 자동 등록됩니다.
14
+
15
+ ### 수동 등록
16
+
17
+ ```bash
18
+ sppt setup-skills # 스킬 등록
19
+ sppt setup-skills uninstall # 스킬 제거
20
+ ```
21
+
22
+ ## 스킬 목록
23
+
24
+ ### 도움말
25
+
26
+ | 스킬 | 설명 |
27
+ |---|---|
28
+ | `/sppt` | Sppurt 전체 도움말 + 스킬 목록 |
29
+ | `/sppurt` | Sppurt 브랜드 도움말 + CLI 스킬 목록 |
30
+ | `/shopport` | `/sppt`와 동일 (별칭) |
31
+
32
+ ### 주문
33
+
34
+ | 스킬 | 설명 |
35
+ |---|---|
36
+ | `/sppt-order-collect` | 멀티채널 주문 한번에 모아보기 |
37
+ | `/sppt-order-fulfill` | 주문 확인 → 소싱 발주 → 송장 등록 |
38
+
39
+ ### 소싱
40
+
41
+ | 스킬 | 설명 |
42
+ |---|---|
43
+ | `/sppt-source-to-register` | 소싱 검색 → 마진 계산 → 판매 채널 등록 |
44
+ | `/sppt-waterfall-source` | 3개 소싱채널 워터폴 가격 비교 |
45
+
46
+ ### 상품
47
+
48
+ | 스킬 | 설명 |
49
+ |---|---|
50
+ | `/sppt-product-sync` | 소싱→판매 배치 상품 동기화 |
51
+ | `/sppt-product-parse` | 상품명 → SKU/카테고리/제품라인 해체 |
52
+
53
+ ### 재고
54
+
55
+ | 스킬 | 설명 |
56
+ |---|---|
57
+ | `/sppt-inventory-sync` | 멀티채널 재고 분배 + 동기화 |
58
+
59
+ ### 가격/정산
60
+
61
+ | 스킬 | 설명 |
62
+ |---|---|
63
+ | `/sppt-price-monitor` | 소싱가 변동 감지 → 마진 체크 → 판매가 조정 |
64
+ | `/sppt-settlement-report` | 정산 현황 조회 + 수익 요약 |
65
+ | `/sppt-cost-calc` | 원가/마진/수수료 계산 |
66
+
67
+ ### 리서치
68
+
69
+ | 스킬 | 설명 |
70
+ |---|---|
71
+ | `/sppt-trend-research` | 트렌드 키워드 리서치 |
72
+
73
+ ### 운영
74
+
75
+ | 스킬 | 설명 |
76
+ |---|---|
77
+ | `/sppt-dashboard` | 운영 대시보드 띄우기 |
78
+ | `/sppt-status-check` | 전채널 연결 + 건강 체크 |
79
+
80
+ ## 전제 조건
81
+
82
+ - `sppt` CLI 설치 (`npm install -g sppurt`)
83
+ - 최소 1개 판매 채널 + 1개 소싱 채널 설정 (`sppt init`)
84
+
85
+ ## 스킬 구조
86
+
87
+ 각 스킬은 `SKILL.md` 마크다운 파일 하나로 구성됩니다.
88
+ YAML frontmatter에 `name`, `description`, `triggers`, `allowed-tools`가 정의되어 있으며,
89
+ Claude Code가 `~/.claude/skills/`에서 자동으로 발견하여 슬래시 커맨드로 사용할 수 있습니다.
90
+
91
+ ```
92
+ ~/.claude/skills/
93
+ ├── sppt/SKILL.md → /sppt
94
+ ├── shopport/SKILL.md → /shopport (legacy alias)
95
+ ├── sppurt/SKILL.md → /sppurt
96
+ ├── sppt-order-collect/SKILL.md → /sppt-order-collect
97
+ ├── sppt-order-fulfill/SKILL.md → /sppt-order-fulfill
98
+ └── ...
99
+ ```
100
+
101
+ ## 지원 채널
102
+
103
+ - **판매**: cafe24, coupang, smartstore, shopify
104
+ - **소싱**: domemae (위탁), domeggook (사입), specialoffer, cjdropshipping
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: sppt-cost-calc
3
+ description: |
4
+ 원가/마진/수수료/실수령액 계산 워크플로우.
5
+ Use when asked to "마진 계산", "원가 분석", "이거 팔면 얼마 남아", "수수료 계산".
6
+ ---
7
+
8
+ # cost-calc
9
+
10
+ 상품의 원가/마진/수수료/실수령액을 계산하는 워크플로우.
11
+
12
+ ## When to use
13
+
14
+ - "이 상품 팔면 얼마 남아?", "마진 계산해줘", "원가 분석해줘"
15
+ - 소싱 상품 등록 전 수익성 판단
16
+ - 채널별 수수료 비교
17
+
18
+ ## Steps
19
+
20
+ ### 1. 소싱가 확인
21
+
22
+ 소싱 채널에서 도매가를 확인합니다:
23
+
24
+ ```bash
25
+ sppt source detail <sourceChannel> <productId>
26
+ ```
27
+
28
+ ### 2. 채널별 수수료 확인
29
+
30
+ ```bash
31
+ sppt settlement fee list
32
+ ```
33
+
34
+ 채널별 수수료율:
35
+ | 채널 | 기본 수수료 |
36
+ |---|---|
37
+ | cafe24 | 3.3% (PG 수수료) |
38
+ | coupang | 10.8% (카테고리별 상이) |
39
+ | smartstore | 5.5% (카테고리별 상이) |
40
+ | shopify | 2.9% + $0.30 (결제 수수료) |
41
+
42
+ ### 3. 마진 계산
43
+
44
+ ```bash
45
+ sppt settlement calc <channel> <orderId> --amount <판매가>
46
+ ```
47
+
48
+ 또는 직접 계산:
49
+
50
+ ```bash
51
+ sppt cost estimate --source-price <도매가> --selling-price <판매가> --channel <채널> --shipping <배송비>
52
+ ```
53
+
54
+ 계산 공식:
55
+ ```
56
+ 실수령액 = 판매가 - 수수료 - 배송비
57
+ 마진 = 실수령액 - 도매가
58
+ 마진율 = 마진 / 판매가 × 100
59
+ ```
60
+
61
+ ### 4. 채널별 비교
62
+
63
+ 여러 채널에 같은 상품을 판매할 때 채널별 수익 비교:
64
+
65
+ ```
66
+ 💰 수익 비교 (도매가 8,500원, 판매가 15,900원)
67
+ ────────────────────────────────────────
68
+ 채널 수수료 배송비 실수령 마진 마진율
69
+ cafe24 525 3,000 12,375 3,875 24.4%
70
+ coupang 1,717 0 14,183 5,683 35.7%
71
+ smartstore 875 3,000 12,025 3,525 22.2%
72
+ ────────────────────────────────────────
73
+ ```
74
+
75
+ ### 5. 적정 판매가 역산
76
+
77
+ 목표 마진율로 판매가를 역산합니다:
78
+
79
+ ```
80
+ 목표 마진 30% → 판매가 = (도매가 + 배송비) / (1 - 수수료율 - 목표마진율)
81
+ ```
82
+
83
+ ### 6. 원가 등록 → 대시보드 마진 추적
84
+
85
+ 계산 결과가 만족스러우면, 원가를 등록하여 대시보드에서 지속적으로 마진율을 추적할 수 있습니다:
86
+
87
+ ```bash
88
+ # 매입단가 + 부대비용 등록
89
+ sppt cost set SKU-001 --purchase 8500 --shipping 3000 --packaging 500
90
+
91
+ # 등록 확인
92
+ sppt cost list
93
+ ```
94
+
95
+ 등록 후 대시보드 정산 페이지에서 채널별 마진율·공헌이익이 자동 계산됩니다.
96
+ 원가 등록·관리에 대한 자세한 안내는 `/sppt-cost-register` 스킬을 참고하세요.
97
+
98
+ ## Notes
99
+
100
+ - 쿠팡은 로켓배송/판매자배송에 따라 수수료 체계가 다릅니다
101
+ - 배송비 포함/별도 정책에 따라 마진이 크게 달라집니다
102
+ - 환율 변동 (CJ Dropshipping 등 해외 소싱) 고려 필요
103
+ - 수수료 규칙은 `sppt settlement fee set`으로 커스터마이즈 가능
104
+ - 원가를 등록하지 않으면 대시보드 마진율이 표시되지 않습니다 — `sppt cost set`으로 등록
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "원가/마진 계산"
3
+ short_description: "원가·마진·수수료·실수령액 계산"
4
+ brand_color: "#2563EB"
5
+ default_prompt: "$sppt-cost-calc 이 상품 마진 계산해줘"
6
+
7
+ policy:
8
+ allow_implicit_invocation: true
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: sppt-cost-register
3
+ description: |
4
+ SKU 원가 등록·관리 워크플로우.
5
+ Use when asked to "원가 등록", "원가 입력", "매입단가 설정", "변동비 등록", "원가 일괄 등록".
6
+ ---
7
+
8
+ # cost-register
9
+
10
+ SKU별 원가(매입단가·택배비·포장재비·풀필먼트비)를 등록하고 관리하는 워크플로우.
11
+ 등록된 원가는 클라우드에 자동 동기화되어 대시보드 마진율 계산에 반영됩니다.
12
+
13
+ ## When to use
14
+
15
+ - "원가 등록해줘", "매입단가 입력하고 싶어"
16
+ - "마진율이 안 나와" → 원가 미등록 상태일 때
17
+ - 대시보드에서 "원가 등록 필요" 안내를 본 경우
18
+ - 소싱 완료 후 원가 확정, 기존 상품 원가 업데이트
19
+
20
+ ## Steps
21
+
22
+ ### 1. 현재 등록 상태 확인
23
+
24
+ ```bash
25
+ sppt cost list
26
+ ```
27
+
28
+ 등록된 원가가 없으면 "저장된 원가 정보가 없습니다." 출력.
29
+
30
+ ### 2. 등록할 SKU 파악
31
+
32
+ 주문 데이터에서 활성 SKU 목록을 뽑아 원가 미등록 건을 확인:
33
+
34
+ ```bash
35
+ sppt report --by sku
36
+ ```
37
+
38
+ 이 목록과 `sppt cost list` 결과를 대조하여 미등록 SKU를 식별합니다.
39
+
40
+ ### 3. 단건 등록
41
+
42
+ ```bash
43
+ sppt cost set <skuId> --purchase <매입단가>
44
+ ```
45
+
46
+ **전체 옵션:**
47
+
48
+ | 옵션 | 설명 | 예시 |
49
+ |---|---|---|
50
+ | `--purchase <원>` | 매입단가 (필수) | `--purchase 5000` |
51
+ | `--shipping <원>` | 건당 택배비 | `--shipping 3000` |
52
+ | `--packaging <원>` | 포장재비 | `--packaging 500` |
53
+ | `--fulfillment <원>` | 풀필먼트 출고비 | `--fulfillment 1200` |
54
+ | `--name <상품명>` | SKU 이름 | `--name "기본 티셔츠"` |
55
+ | `--channel <채널>` | 채널 한정 원가 (없으면 공통) | `--channel coupang` |
56
+ | `--note <메모>` | 비고 | `--note "23년 2차 계약단가"` |
57
+
58
+ **예시:**
59
+ ```bash
60
+ sppt cost set SKU-001 --purchase 5000 --shipping 3000 --packaging 500 --name "기본 티셔츠"
61
+ ```
62
+
63
+ → 총 변동비 = 매입 5,000 + 택배 3,000 + 포장 500 = **8,500원**
64
+
65
+ ### 4. 일괄 등록
66
+
67
+ 여러 SKU를 연속으로 등록할 때는 사용자에게 SKU별 매입단가를 확인하면서 순차 등록합니다:
68
+
69
+ ```bash
70
+ # SKU 목록 확인 후 하나씩
71
+ sppt cost set SKU-001 --purchase 5000 --shipping 3000
72
+ sppt cost set SKU-002 --purchase 8500 --shipping 3000
73
+ sppt cost set SKU-003 --purchase 12000 --shipping 0 --fulfillment 1200
74
+ ```
75
+
76
+ 채널별로 원가가 다른 경우 `--channel`로 분리 등록:
77
+ ```bash
78
+ sppt cost set SKU-001 --purchase 5000 --channel coupang
79
+ sppt cost set SKU-001 --purchase 4500 --channel smartstore
80
+ ```
81
+
82
+ ### 5. 등록 확인
83
+
84
+ ```bash
85
+ sppt cost list
86
+ sppt cost show <skuId>
87
+ ```
88
+
89
+ ### 6. 대시보드 반영 확인
90
+
91
+ 원가 등록 후 대시보드에서 마진율이 표시되는지 확인:
92
+
93
+ ```bash
94
+ sppt dashboard
95
+ ```
96
+
97
+ 정산 페이지의 "원가 · 마진" 카드에 마진율과 원가 커버리지(%)가 표시됩니다.
98
+
99
+ ## 원가 수정·삭제
100
+
101
+ ```bash
102
+ # 수정 — 같은 SKU로 다시 set하면 덮어쓰기
103
+ sppt cost set SKU-001 --purchase 5500 --shipping 3000
104
+
105
+ # 삭제
106
+ sppt cost remove SKU-001
107
+ sppt cost remove SKU-001 --channel coupang # 채널 한정 원가만 삭제
108
+ ```
109
+
110
+ ## Notes
111
+
112
+ - 등록 즉시 클라우드 DB에 자동 동기화 (로그인 상태일 때)
113
+ - `--channel` 미지정 시 "공통" 원가로 저장 — 모든 채널에 적용
114
+ - 채널별 원가가 있으면 공통보다 우선 적용
115
+ - 총 변동비 = 매입단가 + 택배비 + 포장재비 + 풀필먼트비 + 기타비용
116
+ - 마진율 = (실수령 - 총변동비) / 실수령 × 100