leerness 1.0.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.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/bin/harness.js +369 -0
- package/docs/AX_SKILL_LIBRARY_GUIDE.md +156 -0
- package/harness.js +2 -0
- package/package.json +50 -0
- package/skill-packs/ads-analytics/skill.json +31 -0
- package/skill-packs/ads-analytics/skills/conversion-attribution.md +6 -0
- package/skill-packs/ads-analytics/skills/ga4-debugging.md +7 -0
- package/skill-packs/ads-analytics/skills/roas-check.md +7 -0
- package/skill-packs/appstore-review/skill.json +29 -0
- package/skill-packs/appstore-review/skills/privacy-labels.md +6 -0
- package/skill-packs/appstore-review/skills/review-response.md +7 -0
- package/skill-packs/appstore-review/skills/webview-app.md +6 -0
- package/skill-packs/commerce-api/skill.json +40 -0
- package/skill-packs/commerce-api/skills/common-auth.md +22 -0
- package/skill-packs/commerce-api/skills/coupang.md +19 -0
- package/skill-packs/commerce-api/skills/lotteon.md +17 -0
- package/skill-packs/commerce-api/skills/order-sync.md +9 -0
- package/skill-packs/commerce-api/skills/smartstore.md +17 -0
- package/skill-packs/crawling/skill.json +32 -0
- package/skill-packs/crawling/skills/browser-automation.md +14 -0
- package/skill-packs/crawling/skills/cloud-runtime.md +7 -0
- package/skill-packs/crawling/skills/download-automation.md +9 -0
- package/skill-packs/firebase/skill.json +31 -0
- package/skill-packs/firebase/skills/firestore-indexes.md +6 -0
- package/skill-packs/firebase/skills/functions-deploy.md +13 -0
- package/skill-packs/firebase/skills/secrets.md +6 -0
- package/skill-packs/office/skill.json +29 -0
- package/skill-packs/office/skills/excel-automation.md +24 -0
- package/skill-packs/office/skills/powerpoint-generation.md +17 -0
- package/skill-packs/office/skills/word-template.md +15 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Leerness AX Skill Library Guide
|
|
2
|
+
|
|
3
|
+
AX는 AI eXperience의 약자입니다. 이 문서는 AI 에이전트가 검증된 스킬 데이터를 안전하게 학습, 검증, 빌드, 업로드, 업데이트, 병합, 마이그레이션할 수 있도록 만든 실행 가이드입니다.
|
|
4
|
+
|
|
5
|
+
## 목표
|
|
6
|
+
|
|
7
|
+
- 성공한 구현 방식을 재사용 가능한 스킬로 축적한다.
|
|
8
|
+
- 민감정보는 절대 스킬에 저장하지 않는다.
|
|
9
|
+
- 스킬 업로드는 AI 검증 게이트를 통과한 경우에만 허용한다.
|
|
10
|
+
- 각 스킬의 최종 업데이트 날짜, 버전, 검증 상태를 명확히 표시한다.
|
|
11
|
+
- downstream 프로젝트에 병합할 때 `.harness/skills-lock.json`에 출처와 상태를 기록한다.
|
|
12
|
+
|
|
13
|
+
## 전체 흐름
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
검증된 프로젝트 작업
|
|
17
|
+
-> leerness skill learn
|
|
18
|
+
-> leerness library validate
|
|
19
|
+
-> leerness library verify --ai
|
|
20
|
+
-> leerness library build
|
|
21
|
+
-> leerness library publish --target npm|git --execute
|
|
22
|
+
-> 다른 프로젝트에서 library merge/update/migrate
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 스킬에 들어갈 수 있는 데이터
|
|
26
|
+
|
|
27
|
+
허용:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
반복 가능한 절차
|
|
31
|
+
성공한 구현 순서
|
|
32
|
+
검증 방법
|
|
33
|
+
실패 대응법
|
|
34
|
+
환경변수 이름
|
|
35
|
+
파일 구조
|
|
36
|
+
의사코드와 템플릿
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
금지:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
실제 토큰
|
|
43
|
+
실제 쿠키
|
|
44
|
+
비밀번호
|
|
45
|
+
운영 고객 데이터
|
|
46
|
+
개인정보가 포함된 API 응답 원문
|
|
47
|
+
비공개 인증 헤더
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## 필수 메타데이터
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"name": "commerce-api-coupang",
|
|
55
|
+
"version": "1.0.0",
|
|
56
|
+
"title": "Coupang Commerce API Skill",
|
|
57
|
+
"category": "commerce-api",
|
|
58
|
+
"description": "쿠팡 커머스 API 연동을 위한 재사용 가능한 구현 가이드",
|
|
59
|
+
"lastUpdated": "2026-04-28",
|
|
60
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
61
|
+
"requiresEnv": [
|
|
62
|
+
"COUPANG_ACCESS_KEY",
|
|
63
|
+
"COUPANG_SECRET_KEY"
|
|
64
|
+
],
|
|
65
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
66
|
+
"verification": {
|
|
67
|
+
"status": "passed",
|
|
68
|
+
"method": "ai-assisted-review",
|
|
69
|
+
"verifiedBy": "leerness-ai",
|
|
70
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
71
|
+
"checks": [
|
|
72
|
+
"structure",
|
|
73
|
+
"secret-scan",
|
|
74
|
+
"env-reference-only",
|
|
75
|
+
"reusability",
|
|
76
|
+
"migration-readiness"
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 업로드 규칙
|
|
83
|
+
|
|
84
|
+
업로드 전:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
leerness library validate ./my-skill --strict-ai
|
|
88
|
+
leerness library verify ./my-skill --ai --reviewer leerness-ai
|
|
89
|
+
leerness library build ./my-skill
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
npm 업로드:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
leerness library publish ./my-skill/dist/my-skill --target npm --execute
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
git 업로드:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
leerness library publish ./my-skill/dist/my-skill --target git --repo https://github.com/USER/leerness-skill-name.git --execute
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`--execute`가 없으면 dry-run입니다. AI 검증 메타데이터가 없거나 `needs-review` 상태이면 업로드가 차단됩니다.
|
|
105
|
+
|
|
106
|
+
## 업데이트 규칙
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
leerness library update ./my-skill --from ./validated-new-skill --version 1.1.0
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
업데이트 후에는 검증 상태가 `needs-review`로 돌아갑니다. 다시 AI 검증을 통과해야 업로드할 수 있습니다.
|
|
113
|
+
|
|
114
|
+
## 병합 규칙
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
leerness library merge ./dist/my-skill --path ./target-project
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
병합 결과는 아래에 기록됩니다.
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
.harness/skills-lock.json
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
기록 항목:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"name": "commerce-api-coupang",
|
|
131
|
+
"version": "1.0.0",
|
|
132
|
+
"source": "local-or-package",
|
|
133
|
+
"lastUpdated": "2026-04-28",
|
|
134
|
+
"verificationStatus": "passed"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 마이그레이션 규칙
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
leerness library migrate ./old-skill-folder --version 1.0.0
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
마이그레이션은 기존 스킬 폴더를 표준 메타데이터 구조로 정규화합니다. 마이그레이션된 스킬은 자동으로 `needs-review`가 되며, 업로드 전 다시 검증해야 합니다.
|
|
145
|
+
|
|
146
|
+
## AI 에이전트용 체크리스트
|
|
147
|
+
|
|
148
|
+
- [ ] 스킬 목적과 사용 조건이 명확한가
|
|
149
|
+
- [ ] 구현 절차가 재현 가능한가
|
|
150
|
+
- [ ] 실제 비밀값이 없는가
|
|
151
|
+
- [ ] 환경변수 이름만 기록했는가
|
|
152
|
+
- [ ] lastUpdated, lastUpdatedAt이 있는가
|
|
153
|
+
- [ ] verification.status가 passed인가
|
|
154
|
+
- [ ] 업데이트 후 재검증이 필요한 상태를 표시했는가
|
|
155
|
+
- [ ] 병합 시 skills-lock에 기록되는가
|
|
156
|
+
- [ ] 업로드는 dry-run 후 --execute로만 수행되는가
|
package/harness.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "leerness",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Leerness: AI 에이전트가 대규모 프로젝트에서도 맥락, 규율, 디자인/기능 일관성, 검증된 스킬 라이브러리를 유지하도록 돕는 AX 최적화 개발 하네스.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"leerness",
|
|
7
|
+
"ai",
|
|
8
|
+
"agent",
|
|
9
|
+
"harness",
|
|
10
|
+
"harness-engineering",
|
|
11
|
+
"context-engineering",
|
|
12
|
+
"skill-library",
|
|
13
|
+
"ai-verified-skill",
|
|
14
|
+
"ax-guideline",
|
|
15
|
+
"skill-migration",
|
|
16
|
+
"developer-tools"
|
|
17
|
+
],
|
|
18
|
+
"bin": {
|
|
19
|
+
"leerness": "./bin/harness.js"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"bin/",
|
|
23
|
+
"skill-packs/",
|
|
24
|
+
"docs/",
|
|
25
|
+
"harness.js",
|
|
26
|
+
"README.md",
|
|
27
|
+
"LICENSE"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"test": "node ./bin/harness.js --help && node ./bin/harness.js init --yes --skills office,commerce-api ./tmp-harness-test && node ./bin/harness.js status ./tmp-harness-test && node ./bin/harness.js skill list && node ./bin/harness.js library guide ./tmp-harness-test && node ./bin/harness.js verify ./tmp-harness-test",
|
|
31
|
+
"prepack": "node ./bin/harness.js --version"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/gugu9999gu/leerness.git"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/gugu9999gu/leerness/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/gugu9999gu/leerness#readme",
|
|
41
|
+
"author": "gugu9999gu",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"type": "commonjs",
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ads-analytics",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"title": "Ads and Analytics Skill Library",
|
|
5
|
+
"category": "marketing",
|
|
6
|
+
"description": "GA4, 광고 전환, ROAS, attribution 점검을 위한 스킬입니다.",
|
|
7
|
+
"compatibleHarness": ">=3.1.0",
|
|
8
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
9
|
+
"requiresEnv": [
|
|
10
|
+
"GA4_PROPERTY_ID"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
"skills/ga4-debugging.md",
|
|
14
|
+
"skills/conversion-attribution.md",
|
|
15
|
+
"skills/roas-check.md"
|
|
16
|
+
],
|
|
17
|
+
"lastUpdated": "2026-04-28",
|
|
18
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
19
|
+
"verification": {
|
|
20
|
+
"status": "passed",
|
|
21
|
+
"method": "bundled-ai-review",
|
|
22
|
+
"verifiedBy": "leerness-ai",
|
|
23
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
24
|
+
"checks": [
|
|
25
|
+
"structure",
|
|
26
|
+
"secret-scan",
|
|
27
|
+
"env-reference-only",
|
|
28
|
+
"reusability"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Skill: GA4 Debugging
|
|
2
|
+
|
|
3
|
+
## Procedure
|
|
4
|
+
1. Identify event name, source, medium, campaign, and conversion mapping.
|
|
5
|
+
2. Compare realtime/debug view, BigQuery/export, and ad platform numbers when available.
|
|
6
|
+
3. Check cross-domain, consent mode, duplicate tags, and server/client duplication.
|
|
7
|
+
4. Record assumptions and unresolved gaps.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Skill: ROAS Sanity Check
|
|
2
|
+
|
|
3
|
+
## Procedure
|
|
4
|
+
1. Confirm spend, attributed revenue, attribution window, and conversion action.
|
|
5
|
+
2. Compare with actual order data where possible.
|
|
6
|
+
3. Flag suspiciously high ROAS for duplicate events or cross-store attribution.
|
|
7
|
+
4. Document likely causes and verification steps.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "appstore-review",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"title": "App Store Review Skill Library",
|
|
5
|
+
"category": "mobile",
|
|
6
|
+
"description": "App Store 심사 대응, 개인정보 라벨, 웹뷰 앱 검토를 위한 스킬입니다.",
|
|
7
|
+
"compatibleHarness": ">=3.1.0",
|
|
8
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
9
|
+
"requiresEnv": [],
|
|
10
|
+
"files": [
|
|
11
|
+
"skills/privacy-labels.md",
|
|
12
|
+
"skills/review-response.md",
|
|
13
|
+
"skills/webview-app.md"
|
|
14
|
+
],
|
|
15
|
+
"lastUpdated": "2026-04-28",
|
|
16
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
17
|
+
"verification": {
|
|
18
|
+
"status": "passed",
|
|
19
|
+
"method": "bundled-ai-review",
|
|
20
|
+
"verifiedBy": "leerness-ai",
|
|
21
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
22
|
+
"checks": [
|
|
23
|
+
"structure",
|
|
24
|
+
"secret-scan",
|
|
25
|
+
"env-reference-only",
|
|
26
|
+
"reusability"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Skill: App Store Review Response
|
|
2
|
+
|
|
3
|
+
## Procedure
|
|
4
|
+
1. Identify guideline, issue description, reviewed version, device, and requested action.
|
|
5
|
+
2. Decide whether to reply, resubmit, or fix in next update.
|
|
6
|
+
3. Write a concise response with exact changes or clarification.
|
|
7
|
+
4. Keep tone factual and cooperative.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "commerce-api",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"title": "Commerce API Integration Skill Library",
|
|
5
|
+
"category": "commerce",
|
|
6
|
+
"description": "쿠팡, 롯데온, 스마트스토어 등 커머스 API 연동 패턴과 보안 규칙을 담은 스킬 모음입니다.",
|
|
7
|
+
"compatibleHarness": ">=3.1.0",
|
|
8
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
9
|
+
"requiresEnv": [
|
|
10
|
+
"COMMERCE_API_BASE_URL",
|
|
11
|
+
"COUPANG_ACCESS_KEY",
|
|
12
|
+
"COUPANG_SECRET_KEY",
|
|
13
|
+
"COUPANG_VENDOR_ID",
|
|
14
|
+
"LOTTEON_CLIENT_ID",
|
|
15
|
+
"LOTTEON_CLIENT_SECRET",
|
|
16
|
+
"SMARTSTORE_CLIENT_ID",
|
|
17
|
+
"SMARTSTORE_CLIENT_SECRET"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"skills/common-auth.md",
|
|
21
|
+
"skills/coupang.md",
|
|
22
|
+
"skills/lotteon.md",
|
|
23
|
+
"skills/smartstore.md",
|
|
24
|
+
"skills/order-sync.md"
|
|
25
|
+
],
|
|
26
|
+
"lastUpdated": "2026-04-28",
|
|
27
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
28
|
+
"verification": {
|
|
29
|
+
"status": "passed",
|
|
30
|
+
"method": "bundled-ai-review",
|
|
31
|
+
"verifiedBy": "leerness-ai",
|
|
32
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
33
|
+
"checks": [
|
|
34
|
+
"structure",
|
|
35
|
+
"secret-scan",
|
|
36
|
+
"env-reference-only",
|
|
37
|
+
"reusability"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Skill: Commerce API Common Auth
|
|
2
|
+
|
|
3
|
+
## Sensitive data policy
|
|
4
|
+
Do not write access keys, secret keys, refresh tokens, passwords, cookies, or bearer tokens into `.harness/`.
|
|
5
|
+
Only record variable names and where the runtime should read them.
|
|
6
|
+
|
|
7
|
+
## Required pattern
|
|
8
|
+
- Local development: `.env.local`
|
|
9
|
+
- CI/CD: GitHub Actions Secrets or provider secret manager
|
|
10
|
+
- Server runtime: cloud environment variables or secret manager
|
|
11
|
+
|
|
12
|
+
## Standard variables
|
|
13
|
+
- `COMMERCE_API_BASE_URL`
|
|
14
|
+
- `COMMERCE_API_TIMEOUT_MS`
|
|
15
|
+
- Provider-specific credentials such as `COUPANG_ACCESS_KEY` or `LOTTEON_CLIENT_SECRET`
|
|
16
|
+
|
|
17
|
+
## Procedure
|
|
18
|
+
1. Read provider documentation before coding.
|
|
19
|
+
2. Create a typed config loader that validates required env names.
|
|
20
|
+
3. Centralize signing/auth header creation.
|
|
21
|
+
4. Mask sensitive values in logs.
|
|
22
|
+
5. Store request/response examples with fake data only.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Skill: Coupang API Integration
|
|
2
|
+
|
|
3
|
+
## Required env names
|
|
4
|
+
- `COUPANG_ACCESS_KEY`
|
|
5
|
+
- `COUPANG_SECRET_KEY`
|
|
6
|
+
- `COUPANG_VENDOR_ID`
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
- Do not hardcode keys.
|
|
10
|
+
- Do not log authorization headers.
|
|
11
|
+
- Keep API signing logic isolated in one module.
|
|
12
|
+
- Use fake fixtures for tests.
|
|
13
|
+
|
|
14
|
+
## Procedure
|
|
15
|
+
1. Create provider config from env.
|
|
16
|
+
2. Implement request signing in a small tested function.
|
|
17
|
+
3. Build API client wrapper with timeout/retry handling.
|
|
18
|
+
4. Normalize external response into internal order/product schema.
|
|
19
|
+
5. Add troubleshooting notes to `task-log.md` after a successful integration.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Skill: LotteON API Integration
|
|
2
|
+
|
|
3
|
+
## Required env names
|
|
4
|
+
- `LOTTEON_CLIENT_ID`
|
|
5
|
+
- `LOTTEON_CLIENT_SECRET`
|
|
6
|
+
- `LOTTEON_SELLER_ID`
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
- Keep auth refresh flow separate from business logic.
|
|
10
|
+
- Mask all token values in logs.
|
|
11
|
+
- Record only endpoint names and schema notes in harness files.
|
|
12
|
+
|
|
13
|
+
## Procedure
|
|
14
|
+
1. Define env config and validation.
|
|
15
|
+
2. Implement token acquisition/refresh module.
|
|
16
|
+
3. Wrap provider API with a stable internal interface.
|
|
17
|
+
4. Add fake fixtures for order/product sync.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Skill: Commerce Order Sync
|
|
2
|
+
|
|
3
|
+
## Procedure
|
|
4
|
+
1. Define sync cursor: date range, order id, or updated timestamp.
|
|
5
|
+
2. Fetch in pages and save checkpoints.
|
|
6
|
+
3. Normalize provider response into internal schema.
|
|
7
|
+
4. Deduplicate by provider order id.
|
|
8
|
+
5. Log counts, not sensitive values.
|
|
9
|
+
6. Add retry and dead-letter handling for failed items.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Skill: SmartStore API Integration
|
|
2
|
+
|
|
3
|
+
## Required env names
|
|
4
|
+
- `SMARTSTORE_CLIENT_ID`
|
|
5
|
+
- `SMARTSTORE_CLIENT_SECRET`
|
|
6
|
+
- `SMARTSTORE_ACCOUNT_ID`
|
|
7
|
+
|
|
8
|
+
## Rules
|
|
9
|
+
- Keep account identifiers configurable.
|
|
10
|
+
- Separate provider DTOs from internal DTOs.
|
|
11
|
+
- Never store API credentials in `.harness/`.
|
|
12
|
+
|
|
13
|
+
## Procedure
|
|
14
|
+
1. Create provider config schema.
|
|
15
|
+
2. Implement token/auth flow.
|
|
16
|
+
3. Build order/product sync functions.
|
|
17
|
+
4. Validate pagination and rate limits.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "crawling",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"title": "Crawling and Browser Automation Skill Library",
|
|
5
|
+
"category": "automation",
|
|
6
|
+
"description": "API가 없거나 제한적일 때 브라우저 자동화와 다운로드 자동화를 안전하게 구현하기 위한 스킬입니다.",
|
|
7
|
+
"compatibleHarness": ">=3.1.0",
|
|
8
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
9
|
+
"requiresEnv": [
|
|
10
|
+
"CRAWLER_USER_ID",
|
|
11
|
+
"CRAWLER_PASSWORD"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
"skills/browser-automation.md",
|
|
15
|
+
"skills/download-automation.md",
|
|
16
|
+
"skills/cloud-runtime.md"
|
|
17
|
+
],
|
|
18
|
+
"lastUpdated": "2026-04-28",
|
|
19
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
20
|
+
"verification": {
|
|
21
|
+
"status": "passed",
|
|
22
|
+
"method": "bundled-ai-review",
|
|
23
|
+
"verifiedBy": "leerness-ai",
|
|
24
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
25
|
+
"checks": [
|
|
26
|
+
"structure",
|
|
27
|
+
"secret-scan",
|
|
28
|
+
"env-reference-only",
|
|
29
|
+
"reusability"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Skill: Browser Automation
|
|
2
|
+
|
|
3
|
+
## Rules
|
|
4
|
+
- Prefer official APIs when available.
|
|
5
|
+
- Respect site terms, robots restrictions, and rate limits.
|
|
6
|
+
- Do not store cookies, passwords, or session tokens in `.harness/`.
|
|
7
|
+
- Keep selectors stable and add screenshots on failure.
|
|
8
|
+
|
|
9
|
+
## Procedure
|
|
10
|
+
1. Identify whether API exists.
|
|
11
|
+
2. Define login/session handling using runtime secrets.
|
|
12
|
+
3. Use robust selectors and explicit waits.
|
|
13
|
+
4. Add retry, timeout, and failure screenshot capture.
|
|
14
|
+
5. Keep downloaded files in a controlled output path.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Skill: Download Automation
|
|
2
|
+
|
|
3
|
+
## Procedure
|
|
4
|
+
1. Prepare output directory.
|
|
5
|
+
2. Trigger download and wait for the browser download event.
|
|
6
|
+
3. Save with deterministic filename.
|
|
7
|
+
4. Validate file extension and size.
|
|
8
|
+
5. Parse and normalize after download.
|
|
9
|
+
6. Record failure reason without sensitive data.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "firebase",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"title": "Firebase and Cloud Functions Skill Library",
|
|
5
|
+
"category": "backend",
|
|
6
|
+
"description": "Firebase Functions, Firestore, Hosting, Cloud Run 연동 개발을 위한 스킬입니다.",
|
|
7
|
+
"compatibleHarness": ">=3.1.0",
|
|
8
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
9
|
+
"requiresEnv": [
|
|
10
|
+
"FIREBASE_PROJECT_ID"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
"skills/functions-deploy.md",
|
|
14
|
+
"skills/firestore-indexes.md",
|
|
15
|
+
"skills/secrets.md"
|
|
16
|
+
],
|
|
17
|
+
"lastUpdated": "2026-04-28",
|
|
18
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
19
|
+
"verification": {
|
|
20
|
+
"status": "passed",
|
|
21
|
+
"method": "bundled-ai-review",
|
|
22
|
+
"verifiedBy": "leerness-ai",
|
|
23
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
24
|
+
"checks": [
|
|
25
|
+
"structure",
|
|
26
|
+
"secret-scan",
|
|
27
|
+
"env-reference-only",
|
|
28
|
+
"reusability"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Skill: Firebase Functions Deploy
|
|
2
|
+
|
|
3
|
+
## Rules
|
|
4
|
+
- Check runtime version and function generation before deploy.
|
|
5
|
+
- Keep region, memory, timeout, and invoker settings explicit.
|
|
6
|
+
- Avoid broad public invoker unless required.
|
|
7
|
+
|
|
8
|
+
## Procedure
|
|
9
|
+
1. Inspect `firebase.json`, `.firebaserc`, and functions package.
|
|
10
|
+
2. Validate environment variables and secrets.
|
|
11
|
+
3. Build and test locally when possible.
|
|
12
|
+
4. Deploy targeted functions first for risky changes.
|
|
13
|
+
5. Record deploy result in `task-log.md`.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "office",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"title": "Microsoft Office Automation Skill Library",
|
|
5
|
+
"category": "productivity",
|
|
6
|
+
"description": "Excel, Word, PowerPoint 문서 자동화와 템플릿 기반 산출물 생성을 위한 스킬 모음입니다.",
|
|
7
|
+
"compatibleHarness": ">=3.1.0",
|
|
8
|
+
"sensitiveDataPolicy": "env-reference-only",
|
|
9
|
+
"requiresEnv": [],
|
|
10
|
+
"files": [
|
|
11
|
+
"skills/excel-automation.md",
|
|
12
|
+
"skills/powerpoint-generation.md",
|
|
13
|
+
"skills/word-template.md"
|
|
14
|
+
],
|
|
15
|
+
"lastUpdated": "2026-04-28",
|
|
16
|
+
"lastUpdatedAt": "2026-04-28T00:00:00.000Z",
|
|
17
|
+
"verification": {
|
|
18
|
+
"status": "passed",
|
|
19
|
+
"method": "bundled-ai-review",
|
|
20
|
+
"verifiedBy": "leerness-ai",
|
|
21
|
+
"verifiedAt": "2026-04-28T00:00:00.000Z",
|
|
22
|
+
"checks": [
|
|
23
|
+
"structure",
|
|
24
|
+
"secret-scan",
|
|
25
|
+
"env-reference-only",
|
|
26
|
+
"reusability"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Skill: Excel Automation
|
|
2
|
+
|
|
3
|
+
## When to use
|
|
4
|
+
Use this when generating, editing, validating, or summarizing Excel workbooks.
|
|
5
|
+
|
|
6
|
+
## Rules
|
|
7
|
+
- Never overwrite the original workbook without creating an output copy.
|
|
8
|
+
- Preserve formulas, formatting, merged cells, filters, widths, and hidden sheets unless explicitly asked to change them.
|
|
9
|
+
- For data transformations, keep a clear before/after summary.
|
|
10
|
+
- Do not store personal data or credentials in harness files.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. Identify workbook purpose, key sheets, and required output.
|
|
14
|
+
2. Inspect structure before editing.
|
|
15
|
+
3. Apply the minimum necessary transformation.
|
|
16
|
+
4. Validate row counts, formulas, and totals.
|
|
17
|
+
5. Save a new output file.
|
|
18
|
+
6. Update `.harness/session-handoff.md` with what changed.
|
|
19
|
+
|
|
20
|
+
## Output checklist
|
|
21
|
+
- Changed sheets
|
|
22
|
+
- Added/removed columns
|
|
23
|
+
- Validation result
|
|
24
|
+
- Output filename
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Skill: PowerPoint Generation
|
|
2
|
+
|
|
3
|
+
## When to use
|
|
4
|
+
Use this when creating or modifying slide decks.
|
|
5
|
+
|
|
6
|
+
## Rules
|
|
7
|
+
- Keep one clear message per slide.
|
|
8
|
+
- Reuse existing theme, fonts, layout, and spacing when editing an existing deck.
|
|
9
|
+
- Avoid dense paragraphs; convert to structured bullets or visuals.
|
|
10
|
+
- Do not embed confidential business data in reusable skill files.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. Define audience, purpose, and slide count.
|
|
14
|
+
2. Create outline before slide generation.
|
|
15
|
+
3. Apply consistent title, body, visual hierarchy, and spacing.
|
|
16
|
+
4. Check readability and page overflow.
|
|
17
|
+
5. Export and document the output.
|