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.
Files changed (32) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +205 -0
  3. package/bin/harness.js +369 -0
  4. package/docs/AX_SKILL_LIBRARY_GUIDE.md +156 -0
  5. package/harness.js +2 -0
  6. package/package.json +50 -0
  7. package/skill-packs/ads-analytics/skill.json +31 -0
  8. package/skill-packs/ads-analytics/skills/conversion-attribution.md +6 -0
  9. package/skill-packs/ads-analytics/skills/ga4-debugging.md +7 -0
  10. package/skill-packs/ads-analytics/skills/roas-check.md +7 -0
  11. package/skill-packs/appstore-review/skill.json +29 -0
  12. package/skill-packs/appstore-review/skills/privacy-labels.md +6 -0
  13. package/skill-packs/appstore-review/skills/review-response.md +7 -0
  14. package/skill-packs/appstore-review/skills/webview-app.md +6 -0
  15. package/skill-packs/commerce-api/skill.json +40 -0
  16. package/skill-packs/commerce-api/skills/common-auth.md +22 -0
  17. package/skill-packs/commerce-api/skills/coupang.md +19 -0
  18. package/skill-packs/commerce-api/skills/lotteon.md +17 -0
  19. package/skill-packs/commerce-api/skills/order-sync.md +9 -0
  20. package/skill-packs/commerce-api/skills/smartstore.md +17 -0
  21. package/skill-packs/crawling/skill.json +32 -0
  22. package/skill-packs/crawling/skills/browser-automation.md +14 -0
  23. package/skill-packs/crawling/skills/cloud-runtime.md +7 -0
  24. package/skill-packs/crawling/skills/download-automation.md +9 -0
  25. package/skill-packs/firebase/skill.json +31 -0
  26. package/skill-packs/firebase/skills/firestore-indexes.md +6 -0
  27. package/skill-packs/firebase/skills/functions-deploy.md +13 -0
  28. package/skill-packs/firebase/skills/secrets.md +6 -0
  29. package/skill-packs/office/skill.json +29 -0
  30. package/skill-packs/office/skills/excel-automation.md +24 -0
  31. package/skill-packs/office/skills/powerpoint-generation.md +17 -0
  32. 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
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bin/harness.js');
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,6 @@
1
+ # Skill: Conversion Attribution
2
+
3
+ ## Rules
4
+ - Do not assume ad platform revenue equals store revenue.
5
+ - Check attribution window, deduplication, refund/cancel timing, and cross-device behavior.
6
+ - State uncertainty when platform definitions differ.
@@ -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,6 @@
1
+ # Skill: App Privacy Labels
2
+
3
+ ## Rules
4
+ - Distinguish data collected by the app from data collected only on the web service.
5
+ - Keep claims aligned with actual SDKs, tracking, analytics, account, and purchase flows.
6
+ - Do not guess; list evidence and uncertainty.
@@ -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,6 @@
1
+ # Skill: WebView App Review
2
+
3
+ ## Rules
4
+ - Clarify whether data collection happens inside the app, native layer, embedded web view, or external browser.
5
+ - Verify SDKs and tracking permissions.
6
+ - Keep privacy policy and App Store Connect labels consistent.
@@ -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,7 @@
1
+ # Skill: Cloud Browser Runtime
2
+
3
+ ## Rules
4
+ - Verify browser dependencies in the cloud image.
5
+ - Do not assume persistent disk.
6
+ - Use secret manager or environment variables for login values.
7
+ - Store artifacts in object storage when needed.
@@ -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,6 @@
1
+ # Skill: Firestore Indexes
2
+
3
+ ## Rules
4
+ - Do not delete console-created indexes without confirming usage.
5
+ - Keep `firestore.indexes.json` as the source of truth when possible.
6
+ - Record query patterns that require composite indexes.
@@ -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,6 @@
1
+ # Skill: Firebase Secrets
2
+
3
+ ## Rules
4
+ - Use Firebase/Google Secret Manager for sensitive values.
5
+ - Do not store secret values in `.harness/`, source code, or README.
6
+ - Document only secret names and usage locations.
@@ -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.