@skillsmith/mcp-server 0.2.3 → 0.3.1
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/package.json +3 -2
- package/src/assets/docs/USER_GUIDE.md +192 -0
- package/src/assets/skills/skillsmith/SKILL.md +147 -0
- package/src/assets/skills/skillsmith/docs/QUOTAS.md +182 -0
- package/src/assets/skills/skillsmith/docs/SECURITY.md +174 -0
- package/src/assets/skills/skillsmith/docs/TRUST_TIERS.md +142 -0
- package/dist/.tsbuildinfo +0 -1
- package/dist/src/__tests__/get-skill.test.d.ts +0 -6
- package/dist/src/__tests__/get-skill.test.d.ts.map +0 -1
- package/dist/src/__tests__/get-skill.test.js +0 -88
- package/dist/src/__tests__/get-skill.test.js.map +0 -1
- package/dist/src/__tests__/middleware/errorFormatter.test.d.ts +0 -7
- package/dist/src/__tests__/middleware/errorFormatter.test.d.ts.map +0 -1
- package/dist/src/__tests__/middleware/errorFormatter.test.js +0 -304
- package/dist/src/__tests__/middleware/errorFormatter.test.js.map +0 -1
- package/dist/src/__tests__/middleware/license.test.d.ts +0 -7
- package/dist/src/__tests__/middleware/license.test.d.ts.map +0 -1
- package/dist/src/__tests__/middleware/license.test.js +0 -500
- package/dist/src/__tests__/middleware/license.test.js.map +0 -1
- package/dist/src/__tests__/search.test.d.ts +0 -6
- package/dist/src/__tests__/search.test.d.ts.map +0 -1
- package/dist/src/__tests__/search.test.js +0 -86
- package/dist/src/__tests__/search.test.js.map +0 -1
- package/dist/src/__tests__/test-utils.d.ts +0 -20
- package/dist/src/__tests__/test-utils.d.ts.map +0 -1
- package/dist/src/__tests__/test-utils.js +0 -91
- package/dist/src/__tests__/test-utils.js.map +0 -1
- package/dist/src/context/index.d.ts +0 -19
- package/dist/src/context/index.d.ts.map +0 -1
- package/dist/src/context/index.js +0 -25
- package/dist/src/context/index.js.map +0 -1
- package/dist/src/context/project-detector.d.ts +0 -145
- package/dist/src/context/project-detector.d.ts.map +0 -1
- package/dist/src/context/project-detector.js +0 -321
- package/dist/src/context/project-detector.js.map +0 -1
- package/dist/src/context.d.ts +0 -135
- package/dist/src/context.d.ts.map +0 -1
- package/dist/src/context.js +0 -191
- package/dist/src/context.js.map +0 -1
- package/dist/src/core-shim.d.ts +0 -7
- package/dist/src/core-shim.d.ts.map +0 -1
- package/dist/src/core-shim.js +0 -9
- package/dist/src/core-shim.js.map +0 -1
- package/dist/src/health/healthCheck.d.ts +0 -88
- package/dist/src/health/healthCheck.d.ts.map +0 -1
- package/dist/src/health/healthCheck.js +0 -117
- package/dist/src/health/healthCheck.js.map +0 -1
- package/dist/src/health/index.d.ts +0 -21
- package/dist/src/health/index.d.ts.map +0 -1
- package/dist/src/health/index.js +0 -21
- package/dist/src/health/index.js.map +0 -1
- package/dist/src/health/readinessCheck.d.ts +0 -139
- package/dist/src/health/readinessCheck.d.ts.map +0 -1
- package/dist/src/health/readinessCheck.js +0 -266
- package/dist/src/health/readinessCheck.js.map +0 -1
- package/dist/src/index.d.ts +0 -8
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -178
- package/dist/src/index.js.map +0 -1
- package/dist/src/index.test.d.ts +0 -2
- package/dist/src/index.test.d.ts.map +0 -1
- package/dist/src/index.test.js +0 -43
- package/dist/src/index.test.js.map +0 -1
- package/dist/src/logger.d.ts +0 -26
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -179
- package/dist/src/logger.js.map +0 -1
- package/dist/src/middleware/__tests__/csp.test.d.ts +0 -2
- package/dist/src/middleware/__tests__/csp.test.d.ts.map +0 -1
- package/dist/src/middleware/__tests__/csp.test.js +0 -390
- package/dist/src/middleware/__tests__/csp.test.js.map +0 -1
- package/dist/src/middleware/csp.d.ts +0 -103
- package/dist/src/middleware/csp.d.ts.map +0 -1
- package/dist/src/middleware/csp.js +0 -273
- package/dist/src/middleware/csp.js.map +0 -1
- package/dist/src/middleware/degradation.d.ts +0 -105
- package/dist/src/middleware/degradation.d.ts.map +0 -1
- package/dist/src/middleware/degradation.js +0 -319
- package/dist/src/middleware/degradation.js.map +0 -1
- package/dist/src/middleware/errorFormatter.d.ts +0 -119
- package/dist/src/middleware/errorFormatter.d.ts.map +0 -1
- package/dist/src/middleware/errorFormatter.js +0 -294
- package/dist/src/middleware/errorFormatter.js.map +0 -1
- package/dist/src/middleware/index.d.ts +0 -11
- package/dist/src/middleware/index.d.ts.map +0 -1
- package/dist/src/middleware/index.js +0 -16
- package/dist/src/middleware/index.js.map +0 -1
- package/dist/src/middleware/license.d.ts +0 -169
- package/dist/src/middleware/license.d.ts.map +0 -1
- package/dist/src/middleware/license.js +0 -292
- package/dist/src/middleware/license.js.map +0 -1
- package/dist/src/middleware/quota.d.ts +0 -182
- package/dist/src/middleware/quota.d.ts.map +0 -1
- package/dist/src/middleware/quota.js +0 -309
- package/dist/src/middleware/quota.js.map +0 -1
- package/dist/src/middleware/toolFeatureMapping.d.ts +0 -36
- package/dist/src/middleware/toolFeatureMapping.d.ts.map +0 -1
- package/dist/src/middleware/toolFeatureMapping.js +0 -96
- package/dist/src/middleware/toolFeatureMapping.js.map +0 -1
- package/dist/src/onboarding/first-run.d.ts +0 -64
- package/dist/src/onboarding/first-run.d.ts.map +0 -1
- package/dist/src/onboarding/first-run.js +0 -77
- package/dist/src/onboarding/first-run.js.map +0 -1
- package/dist/src/onboarding/index.d.ts +0 -7
- package/dist/src/onboarding/index.d.ts.map +0 -1
- package/dist/src/onboarding/index.js +0 -7
- package/dist/src/onboarding/index.js.map +0 -1
- package/dist/src/suggestions/index.d.ts +0 -21
- package/dist/src/suggestions/index.d.ts.map +0 -1
- package/dist/src/suggestions/index.js +0 -20
- package/dist/src/suggestions/index.js.map +0 -1
- package/dist/src/suggestions/suggestion-engine.d.ts +0 -185
- package/dist/src/suggestions/suggestion-engine.d.ts.map +0 -1
- package/dist/src/suggestions/suggestion-engine.js +0 -352
- package/dist/src/suggestions/suggestion-engine.js.map +0 -1
- package/dist/src/suggestions/types.d.ts +0 -88
- package/dist/src/suggestions/types.d.ts.map +0 -1
- package/dist/src/suggestions/types.js +0 -21
- package/dist/src/suggestions/types.js.map +0 -1
- package/dist/src/tools/analyze.d.ts +0 -151
- package/dist/src/tools/analyze.d.ts.map +0 -1
- package/dist/src/tools/analyze.js +0 -205
- package/dist/src/tools/analyze.js.map +0 -1
- package/dist/src/tools/compare.d.ts +0 -149
- package/dist/src/tools/compare.d.ts.map +0 -1
- package/dist/src/tools/compare.js +0 -464
- package/dist/src/tools/compare.js.map +0 -1
- package/dist/src/tools/get-skill.d.ts +0 -107
- package/dist/src/tools/get-skill.d.ts.map +0 -1
- package/dist/src/tools/get-skill.js +0 -260
- package/dist/src/tools/get-skill.js.map +0 -1
- package/dist/src/tools/index.d.ts +0 -20
- package/dist/src/tools/index.d.ts.map +0 -1
- package/dist/src/tools/index.js +0 -20
- package/dist/src/tools/index.js.map +0 -1
- package/dist/src/tools/install.d.ts +0 -122
- package/dist/src/tools/install.d.ts.map +0 -1
- package/dist/src/tools/install.js +0 -326
- package/dist/src/tools/install.js.map +0 -1
- package/dist/src/tools/recommend.d.ts +0 -169
- package/dist/src/tools/recommend.d.ts.map +0 -1
- package/dist/src/tools/recommend.js +0 -357
- package/dist/src/tools/recommend.js.map +0 -1
- package/dist/src/tools/search.d.ts +0 -114
- package/dist/src/tools/search.d.ts.map +0 -1
- package/dist/src/tools/search.js +0 -247
- package/dist/src/tools/search.js.map +0 -1
- package/dist/src/tools/suggest.d.ts +0 -181
- package/dist/src/tools/suggest.d.ts.map +0 -1
- package/dist/src/tools/suggest.js +0 -310
- package/dist/src/tools/suggest.js.map +0 -1
- package/dist/src/tools/uninstall.d.ts +0 -123
- package/dist/src/tools/uninstall.d.ts.map +0 -1
- package/dist/src/tools/uninstall.js +0 -250
- package/dist/src/tools/uninstall.js.map +0 -1
- package/dist/src/tools/validate.d.ts +0 -122
- package/dist/src/tools/validate.d.ts.map +0 -1
- package/dist/src/tools/validate.js +0 -497
- package/dist/src/tools/validate.js.map +0 -1
- package/dist/src/utils/installed-skills.d.ts +0 -101
- package/dist/src/utils/installed-skills.d.ts.map +0 -1
- package/dist/src/utils/installed-skills.js +0 -220
- package/dist/src/utils/installed-skills.js.map +0 -1
- package/dist/src/utils/validation.d.ts +0 -95
- package/dist/src/utils/validation.d.ts.map +0 -1
- package/dist/src/utils/validation.js +0 -186
- package/dist/src/utils/validation.js.map +0 -1
- package/dist/src/webhooks/index.d.ts +0 -8
- package/dist/src/webhooks/index.d.ts.map +0 -1
- package/dist/src/webhooks/index.js +0 -9
- package/dist/src/webhooks/index.js.map +0 -1
- package/dist/src/webhooks/webhook-endpoint.d.ts +0 -149
- package/dist/src/webhooks/webhook-endpoint.d.ts.map +0 -1
- package/dist/src/webhooks/webhook-endpoint.js +0 -339
- package/dist/src/webhooks/webhook-endpoint.js.map +0 -1
- package/dist/tests/compare.test.d.ts +0 -6
- package/dist/tests/compare.test.d.ts.map +0 -1
- package/dist/tests/compare.test.js +0 -225
- package/dist/tests/compare.test.js.map +0 -1
- package/dist/tests/context/project-detector.test.d.ts +0 -6
- package/dist/tests/context/project-detector.test.d.ts.map +0 -1
- package/dist/tests/context/project-detector.test.js +0 -719
- package/dist/tests/context/project-detector.test.js.map +0 -1
- package/dist/tests/e2e/compare.e2e.test.d.ts +0 -10
- package/dist/tests/e2e/compare.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/compare.e2e.test.js +0 -296
- package/dist/tests/e2e/compare.e2e.test.js.map +0 -1
- package/dist/tests/e2e/install-flow.e2e.test.d.ts +0 -10
- package/dist/tests/e2e/install-flow.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/install-flow.e2e.test.js +0 -229
- package/dist/tests/e2e/install-flow.e2e.test.js.map +0 -1
- package/dist/tests/e2e/recommend.e2e.test.d.ts +0 -12
- package/dist/tests/e2e/recommend.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/recommend.e2e.test.js +0 -357
- package/dist/tests/e2e/recommend.e2e.test.js.map +0 -1
- package/dist/tests/e2e/skill-flow.e2e.test.d.ts +0 -10
- package/dist/tests/e2e/skill-flow.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/skill-flow.e2e.test.js +0 -311
- package/dist/tests/e2e/skill-flow.e2e.test.js.map +0 -1
- package/dist/tests/e2e/suggest.e2e.test.d.ts +0 -13
- package/dist/tests/e2e/suggest.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/suggest.e2e.test.js +0 -367
- package/dist/tests/e2e/suggest.e2e.test.js.map +0 -1
- package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
- package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
- package/dist/tests/e2e/utils/baseline-collector.js +0 -211
- package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
- package/dist/tests/e2e/utils/hardcoded-detector.js +0 -255
- package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
- package/dist/tests/e2e/utils/index.d.ts +0 -7
- package/dist/tests/e2e/utils/index.d.ts.map +0 -1
- package/dist/tests/e2e/utils/index.js +0 -7
- package/dist/tests/e2e/utils/index.js.map +0 -1
- package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
- package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
- package/dist/tests/e2e/utils/linear-reporter.js +0 -232
- package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
- package/dist/tests/health.test.d.ts +0 -9
- package/dist/tests/health.test.d.ts.map +0 -1
- package/dist/tests/health.test.js +0 -308
- package/dist/tests/health.test.js.map +0 -1
- package/dist/tests/integration/analyze.integration.test.d.ts +0 -2
- package/dist/tests/integration/analyze.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/analyze.integration.test.js +0 -244
- package/dist/tests/integration/analyze.integration.test.js.map +0 -1
- package/dist/tests/integration/compare.integration.test.d.ts +0 -2
- package/dist/tests/integration/compare.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/compare.integration.test.js +0 -120
- package/dist/tests/integration/compare.integration.test.js.map +0 -1
- package/dist/tests/integration/fixtures/test-skills.d.ts +0 -62
- package/dist/tests/integration/fixtures/test-skills.d.ts.map +0 -1
- package/dist/tests/integration/fixtures/test-skills.js +0 -644
- package/dist/tests/integration/fixtures/test-skills.js.map +0 -1
- package/dist/tests/integration/get-skill.integration.test.d.ts +0 -6
- package/dist/tests/integration/get-skill.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/get-skill.integration.test.js +0 -203
- package/dist/tests/integration/get-skill.integration.test.js.map +0 -1
- package/dist/tests/integration/github-api.integration.test.d.ts +0 -14
- package/dist/tests/integration/github-api.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/github-api.integration.test.js +0 -190
- package/dist/tests/integration/github-api.integration.test.js.map +0 -1
- package/dist/tests/integration/install.integration.test.d.ts +0 -6
- package/dist/tests/integration/install.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/install.integration.test.js +0 -282
- package/dist/tests/integration/install.integration.test.js.map +0 -1
- package/dist/tests/integration/recommend.integration.test.d.ts +0 -2
- package/dist/tests/integration/recommend.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/recommend.integration.test.js +0 -217
- package/dist/tests/integration/recommend.integration.test.js.map +0 -1
- package/dist/tests/integration/search.integration.test.d.ts +0 -6
- package/dist/tests/integration/search.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/search.integration.test.js +0 -229
- package/dist/tests/integration/search.integration.test.js.map +0 -1
- package/dist/tests/integration/setup.d.ts +0 -74
- package/dist/tests/integration/setup.d.ts.map +0 -1
- package/dist/tests/integration/setup.js +0 -131
- package/dist/tests/integration/setup.js.map +0 -1
- package/dist/tests/integration/uninstall.integration.test.d.ts +0 -6
- package/dist/tests/integration/uninstall.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/uninstall.integration.test.js +0 -296
- package/dist/tests/integration/uninstall.integration.test.js.map +0 -1
- package/dist/tests/integration/validate.integration.test.d.ts +0 -2
- package/dist/tests/integration/validate.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/validate.integration.test.js +0 -181
- package/dist/tests/integration/validate.integration.test.js.map +0 -1
- package/dist/tests/onboarding/first-run.test.d.ts +0 -7
- package/dist/tests/onboarding/first-run.test.d.ts.map +0 -1
- package/dist/tests/onboarding/first-run.test.js +0 -258
- package/dist/tests/onboarding/first-run.test.js.map +0 -1
- package/dist/tests/performance/search-performance.test.d.ts +0 -10
- package/dist/tests/performance/search-performance.test.d.ts.map +0 -1
- package/dist/tests/performance/search-performance.test.js +0 -222
- package/dist/tests/performance/search-performance.test.js.map +0 -1
- package/dist/tests/recommend.test.d.ts +0 -6
- package/dist/tests/recommend.test.d.ts.map +0 -1
- package/dist/tests/recommend.test.js +0 -210
- package/dist/tests/recommend.test.js.map +0 -1
- package/dist/tests/suggestions/suggestion-engine.test.d.ts +0 -6
- package/dist/tests/suggestions/suggestion-engine.test.d.ts.map +0 -1
- package/dist/tests/suggestions/suggestion-engine.test.js +0 -448
- package/dist/tests/suggestions/suggestion-engine.test.js.map +0 -1
- package/dist/tests/test-utils.d.ts +0 -74
- package/dist/tests/test-utils.d.ts.map +0 -1
- package/dist/tests/test-utils.js +0 -98
- package/dist/tests/test-utils.js.map +0 -1
- package/dist/tests/tools.test.d.ts +0 -5
- package/dist/tests/tools.test.d.ts.map +0 -1
- package/dist/tests/tools.test.js +0 -138
- package/dist/tests/tools.test.js.map +0 -1
- package/dist/tests/unit/installed-skills.test.d.ts +0 -6
- package/dist/tests/unit/installed-skills.test.d.ts.map +0 -1
- package/dist/tests/unit/installed-skills.test.js +0 -285
- package/dist/tests/unit/installed-skills.test.js.map +0 -1
- package/dist/tests/unit/logger.test.d.ts +0 -6
- package/dist/tests/unit/logger.test.d.ts.map +0 -1
- package/dist/tests/unit/logger.test.js +0 -281
- package/dist/tests/unit/logger.test.js.map +0 -1
- package/dist/tests/validate.test.d.ts +0 -5
- package/dist/tests/validate.test.d.ts.map +0 -1
- package/dist/tests/validate.test.js +0 -303
- package/dist/tests/validate.test.js.map +0 -1
- package/dist/tests/webhooks/proxy-trust.security.test.d.ts +0 -8
- package/dist/tests/webhooks/proxy-trust.security.test.d.ts.map +0 -1
- package/dist/tests/webhooks/proxy-trust.security.test.js +0 -145
- package/dist/tests/webhooks/proxy-trust.security.test.js.map +0 -1
- package/dist/tests/webhooks/rate-limiter.security.test.d.ts +0 -8
- package/dist/tests/webhooks/rate-limiter.security.test.d.ts.map +0 -1
- package/dist/tests/webhooks/rate-limiter.security.test.js +0 -122
- package/dist/tests/webhooks/rate-limiter.security.test.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -6
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -13
- package/dist/vitest.config.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skillsmith/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "MCP server for Skillsmith skill discovery",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"files": [
|
|
39
|
-
"dist"
|
|
39
|
+
"dist",
|
|
40
|
+
"src/assets"
|
|
40
41
|
],
|
|
41
42
|
"license": "Elastic-2.0",
|
|
42
43
|
"repository": {
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Skillsmith User Guide
|
|
2
|
+
|
|
3
|
+
Welcome to Skillsmith, the skill discovery and management system for Claude Code.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### 1. Configure MCP Server
|
|
8
|
+
|
|
9
|
+
Add to `~/.claude/settings.json`:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"mcpServers": {
|
|
14
|
+
"skillsmith": {
|
|
15
|
+
"command": "npx",
|
|
16
|
+
"args": ["-y", "@skillsmith/mcp-server"]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 2. Restart Claude Code
|
|
23
|
+
|
|
24
|
+
Close and reopen your Claude Code session.
|
|
25
|
+
|
|
26
|
+
### 3. Start Using
|
|
27
|
+
|
|
28
|
+
Ask Claude:
|
|
29
|
+
- "Search for testing skills"
|
|
30
|
+
- "Install the commit skill"
|
|
31
|
+
- "What skills do I have installed?"
|
|
32
|
+
|
|
33
|
+
## What Gets Installed
|
|
34
|
+
|
|
35
|
+
On first run, Skillsmith automatically installs essential skills:
|
|
36
|
+
|
|
37
|
+
| Skill | Purpose |
|
|
38
|
+
|-------|---------|
|
|
39
|
+
| **varlock** | Secure environment variable management |
|
|
40
|
+
| **commit** | Git commit message generation |
|
|
41
|
+
| **governance** | Code quality enforcement |
|
|
42
|
+
| **skill-builder** | Create custom skills |
|
|
43
|
+
| **skillsmith** | This documentation |
|
|
44
|
+
|
|
45
|
+
## Trust Tiers
|
|
46
|
+
|
|
47
|
+
Always check the trust tier before installing skills:
|
|
48
|
+
|
|
49
|
+
| Tier | Safety | Action |
|
|
50
|
+
|------|--------|--------|
|
|
51
|
+
| **Official** (Green) | Highest | Install freely |
|
|
52
|
+
| **Verified** (Blue) | High | Install freely |
|
|
53
|
+
| **Community** (Yellow) | Medium | Review first |
|
|
54
|
+
| **Unverified** (Red) | Unknown | Careful review |
|
|
55
|
+
|
|
56
|
+
### Quick Trust Check
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
"Show details for community/some-skill"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Look for:
|
|
63
|
+
- Trust tier badge
|
|
64
|
+
- Quality score (aim for 70+)
|
|
65
|
+
- Number of stars
|
|
66
|
+
- Days since published
|
|
67
|
+
|
|
68
|
+
## Common Tasks
|
|
69
|
+
|
|
70
|
+
### Search for Skills
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
"Find testing skills"
|
|
74
|
+
"Search for devops skills with score above 80"
|
|
75
|
+
"Find verified git workflow skills"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Install a Skill
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
"Install community/jest-helper"
|
|
82
|
+
"Install the commit skill"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Compare Skills
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
"Compare jest-helper and vitest-helper"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Get Recommendations
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
"Recommend skills for my React project"
|
|
95
|
+
"What skills would help with this codebase?"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Create a Custom Skill
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
"Create a skill for generating changelogs"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Quota Limits
|
|
105
|
+
|
|
106
|
+
| Tier | API Calls/Month | Price |
|
|
107
|
+
|------|-----------------|-------|
|
|
108
|
+
| Community | 1,000 | Free |
|
|
109
|
+
| Individual | 10,000 | $9.99/mo |
|
|
110
|
+
| Team | 100,000 | $25/user/mo |
|
|
111
|
+
| Enterprise | Unlimited | $55/user/mo |
|
|
112
|
+
|
|
113
|
+
Check your usage:
|
|
114
|
+
```
|
|
115
|
+
"What's my Skillsmith quota?"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Upgrade at: https://skillsmith.app/upgrade
|
|
119
|
+
|
|
120
|
+
## Security Best Practices
|
|
121
|
+
|
|
122
|
+
1. **Prefer Verified or Official skills** for important projects
|
|
123
|
+
2. **Review Community skills** before installing
|
|
124
|
+
3. **Never install Unverified skills** without manual review
|
|
125
|
+
4. **Check the quality score** - aim for 70+
|
|
126
|
+
5. **Report suspicious skills** to security@skillsmith.app
|
|
127
|
+
|
|
128
|
+
## Where Skills Are Installed
|
|
129
|
+
|
|
130
|
+
Skills install to: `~/.claude/skills/<skill-name>/`
|
|
131
|
+
|
|
132
|
+
Each skill contains:
|
|
133
|
+
- `SKILL.md` - Main skill file (Claude reads this)
|
|
134
|
+
- Optional: `docs/`, `scripts/`, `templates/`
|
|
135
|
+
|
|
136
|
+
## Troubleshooting
|
|
137
|
+
|
|
138
|
+
### "Skill not found"
|
|
139
|
+
|
|
140
|
+
The skill may not exist in the registry. Try:
|
|
141
|
+
```
|
|
142
|
+
"Search for similar-name"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### "Installation failed"
|
|
146
|
+
|
|
147
|
+
Check:
|
|
148
|
+
1. Internet connection
|
|
149
|
+
2. Quota remaining
|
|
150
|
+
3. Skill hasn't been blocklisted
|
|
151
|
+
|
|
152
|
+
### "Security scan failed"
|
|
153
|
+
|
|
154
|
+
The skill was blocked for security reasons. Try a different skill or contact support if you believe this is an error.
|
|
155
|
+
|
|
156
|
+
### Quota Exceeded
|
|
157
|
+
|
|
158
|
+
You've hit your monthly limit. Options:
|
|
159
|
+
1. Wait until quota resets (1st of month)
|
|
160
|
+
2. Upgrade your tier
|
|
161
|
+
|
|
162
|
+
## Offline Usage
|
|
163
|
+
|
|
164
|
+
Installed skills work offline. Only these operations require internet:
|
|
165
|
+
- Searching for new skills
|
|
166
|
+
- Installing skills
|
|
167
|
+
- Getting recommendations
|
|
168
|
+
|
|
169
|
+
## Updating Skillsmith
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npx @skillsmith/mcp-server@latest
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Or let it auto-update via npx.
|
|
176
|
+
|
|
177
|
+
## Getting Help
|
|
178
|
+
|
|
179
|
+
- **Documentation**: `npx @skillsmith/mcp-server --docs`
|
|
180
|
+
- **Issues**: https://github.com/smith-horn/skillsmith/issues
|
|
181
|
+
- **Support**: support@skillsmith.app
|
|
182
|
+
- **Security**: security@skillsmith.app
|
|
183
|
+
|
|
184
|
+
## License
|
|
185
|
+
|
|
186
|
+
Skillsmith is licensed under **Elastic License 2.0**:
|
|
187
|
+
- Self-hosting for internal use: Allowed
|
|
188
|
+
- Modification for own use: Allowed
|
|
189
|
+
- Offering as managed service: Not allowed
|
|
190
|
+
- Circumventing license keys: Not allowed
|
|
191
|
+
|
|
192
|
+
Full license: https://www.elastic.co/licensing/elastic-license
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Skillsmith"
|
|
3
|
+
description: "Discover, install, compare, and manage Claude Code skills. Use when searching for skills, evaluating quality, understanding trust tiers, checking quotas, or creating custom skills. Triggers: 'find skill', 'search skills', 'install skill', 'trust tier', 'create skill', 'skill quality', 'skill quota'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skillsmith
|
|
7
|
+
|
|
8
|
+
Skillsmith is your skill discovery and management system for Claude Code. It provides access to 500+ community skills with trust verification, quality scoring, and security scanning.
|
|
9
|
+
|
|
10
|
+
## Quick Reference: MCP Tools
|
|
11
|
+
|
|
12
|
+
| Tool | Use When | Example |
|
|
13
|
+
|------|----------|---------|
|
|
14
|
+
| `search` | Finding skills by keyword, category, or trust tier | "Find testing skills" |
|
|
15
|
+
| `get_skill` | Getting full details about a specific skill | "Show details for community/jest-helper" |
|
|
16
|
+
| `install_skill` | Installing a skill to ~/.claude/skills/ | "Install the commit skill" |
|
|
17
|
+
| `uninstall_skill` | Removing an installed skill | "Uninstall jest-helper" |
|
|
18
|
+
| `skill_recommend` | Getting contextual recommendations | "Recommend skills for my React project" |
|
|
19
|
+
| `skill_validate` | Checking skill structure before manual install | "Validate this skill" |
|
|
20
|
+
| `skill_compare` | Comparing 2-5 skills side-by-side | "Compare jest-helper and vitest-helper" |
|
|
21
|
+
| `skill_suggest` | Getting suggestions based on current work | Automatic based on context |
|
|
22
|
+
|
|
23
|
+
## Trust Tiers
|
|
24
|
+
|
|
25
|
+
Skills are categorized by verification level:
|
|
26
|
+
|
|
27
|
+
| Tier | Badge | Meaning | When to Trust |
|
|
28
|
+
|------|-------|---------|---------------|
|
|
29
|
+
| **Official** | Green checkmark | Published by Anthropic, fully reviewed | Always safe |
|
|
30
|
+
| **Verified** | Blue checkmark | Verified publisher, 10+ stars, 30+ days old | Generally safe |
|
|
31
|
+
| **Community** | Yellow | Passed security scan, has required metadata | Review before install |
|
|
32
|
+
| **Unverified** | Red warning | No verification | Only if you trust the author |
|
|
33
|
+
|
|
34
|
+
For detailed criteria, see [TRUST_TIERS.md](docs/TRUST_TIERS.md).
|
|
35
|
+
|
|
36
|
+
## Quota System
|
|
37
|
+
|
|
38
|
+
API calls are limited by tier:
|
|
39
|
+
|
|
40
|
+
| Tier | API Calls/Month | Price |
|
|
41
|
+
|------|-----------------|-------|
|
|
42
|
+
| **Community** | 1,000 | Free |
|
|
43
|
+
| **Individual** | 10,000 | $9.99/mo |
|
|
44
|
+
| **Team** | 100,000 | $25/user/mo |
|
|
45
|
+
| **Enterprise** | Unlimited | $55/user/mo |
|
|
46
|
+
|
|
47
|
+
Warnings are shown at 80% and 90% usage. Upgrade at https://skillsmith.app/upgrade
|
|
48
|
+
|
|
49
|
+
For details, see [QUOTAS.md](docs/QUOTAS.md).
|
|
50
|
+
|
|
51
|
+
## Security Model
|
|
52
|
+
|
|
53
|
+
Skillsmith operates as a security boundary between untrusted skill sources and your Claude Code environment.
|
|
54
|
+
|
|
55
|
+
### What Skillsmith Validates
|
|
56
|
+
|
|
57
|
+
Before any skill is installed, Skillsmith performs:
|
|
58
|
+
|
|
59
|
+
1. **SKILL.md validation** - Must have valid YAML frontmatter with name and description
|
|
60
|
+
2. **Security scan** - Checks for jailbreak patterns, suspicious URLs, sensitive file access
|
|
61
|
+
3. **Typosquatting detection** - Warns if skill name is similar to known skills
|
|
62
|
+
4. **Blocklist check** - Rejects known-malicious skills
|
|
63
|
+
|
|
64
|
+
### What Skillsmith Cannot Prevent
|
|
65
|
+
|
|
66
|
+
- Novel attack patterns not in our detection database
|
|
67
|
+
- Social engineering in legitimate-looking instructions
|
|
68
|
+
- Runtime behavior (skills execute with your permissions)
|
|
69
|
+
|
|
70
|
+
**Recommendation**: Always review skill content before installation, especially for unverified skills.
|
|
71
|
+
|
|
72
|
+
For the complete security model, see [SECURITY.md](docs/SECURITY.md).
|
|
73
|
+
|
|
74
|
+
## Creating Skills
|
|
75
|
+
|
|
76
|
+
The **skill-builder** skill (auto-installed) helps you create custom skills:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
"Create a skill for generating API documentation"
|
|
80
|
+
"Build a skill to automate code reviews"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The skill-builder guides you through:
|
|
84
|
+
- YAML frontmatter (name ≤64 chars, description ≤1024 chars)
|
|
85
|
+
- Progressive disclosure structure (4 levels)
|
|
86
|
+
- Directory organization
|
|
87
|
+
- Validation checklist
|
|
88
|
+
|
|
89
|
+
## Search Examples
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
# Find all testing skills
|
|
93
|
+
"Search for testing skills"
|
|
94
|
+
|
|
95
|
+
# Find verified skills only
|
|
96
|
+
"Find verified skills for git workflows"
|
|
97
|
+
|
|
98
|
+
# Filter by quality score
|
|
99
|
+
"Search for devops skills with score above 80"
|
|
100
|
+
|
|
101
|
+
# Compare options
|
|
102
|
+
"Compare jest-helper, vitest-helper, and mocha-helper"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Common Tasks
|
|
106
|
+
|
|
107
|
+
### Install a Skill
|
|
108
|
+
```
|
|
109
|
+
"Install the commit skill"
|
|
110
|
+
```
|
|
111
|
+
Skillsmith downloads the skill, runs security scan, and installs to ~/.claude/skills/.
|
|
112
|
+
|
|
113
|
+
### Check What's Installed
|
|
114
|
+
```
|
|
115
|
+
"What skills do I have installed?"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Remove a Skill
|
|
119
|
+
```
|
|
120
|
+
"Uninstall the old-skill"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Get Recommendations
|
|
124
|
+
```
|
|
125
|
+
"Recommend skills for my TypeScript project"
|
|
126
|
+
```
|
|
127
|
+
Skillsmith analyzes your project context and suggests relevant skills.
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
Skillsmith uses **Elastic License 2.0**:
|
|
132
|
+
- You can self-host for internal use
|
|
133
|
+
- You can modify for your own use
|
|
134
|
+
- You cannot offer Skillsmith as a managed service to others
|
|
135
|
+
- You cannot circumvent license key functionality
|
|
136
|
+
|
|
137
|
+
## Related Documentation
|
|
138
|
+
|
|
139
|
+
- [Security Deep-Dive](docs/SECURITY.md)
|
|
140
|
+
- [Trust Tiers](docs/TRUST_TIERS.md)
|
|
141
|
+
- [Quota System](docs/QUOTAS.md)
|
|
142
|
+
|
|
143
|
+
## Getting Help
|
|
144
|
+
|
|
145
|
+
- Docs: `npx @skillsmith/mcp-server --docs`
|
|
146
|
+
- Issues: https://github.com/smith-horn/skillsmith/issues
|
|
147
|
+
- Email: support@skillsmith.app
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Quota System
|
|
2
|
+
|
|
3
|
+
Skillsmith uses a usage-based quota system to ensure fair access and sustainable service.
|
|
4
|
+
|
|
5
|
+
## Tier Limits
|
|
6
|
+
|
|
7
|
+
| Tier | API Calls/Month | Price | Best For |
|
|
8
|
+
|------|-----------------|-------|----------|
|
|
9
|
+
| **Community** | 1,000 | Free | Individual hobbyists |
|
|
10
|
+
| **Individual** | 10,000 | $9.99/mo | Active developers |
|
|
11
|
+
| **Team** | 100,000 | $25/user/mo | Development teams |
|
|
12
|
+
| **Enterprise** | Unlimited | $55/user/mo | Large organizations |
|
|
13
|
+
|
|
14
|
+
## What Counts as an API Call
|
|
15
|
+
|
|
16
|
+
Each of these operations counts as 1 API call:
|
|
17
|
+
- `search` - Searching for skills
|
|
18
|
+
- `get_skill` - Getting skill details
|
|
19
|
+
- `install_skill` - Installing a skill
|
|
20
|
+
- `uninstall_skill` - Removing a skill
|
|
21
|
+
- `skill_recommend` - Getting recommendations
|
|
22
|
+
- `skill_validate` - Validating a skill
|
|
23
|
+
- `skill_compare` - Comparing skills
|
|
24
|
+
- `skill_suggest` - Getting suggestions
|
|
25
|
+
|
|
26
|
+
**Free operations** (don't count):
|
|
27
|
+
- Viewing already-installed skills
|
|
28
|
+
- Reading local skill files
|
|
29
|
+
- Using installed skills
|
|
30
|
+
|
|
31
|
+
## Quota Warnings
|
|
32
|
+
|
|
33
|
+
Skillsmith provides progressive warnings as you approach your limit:
|
|
34
|
+
|
|
35
|
+
| Usage | Level | What Happens |
|
|
36
|
+
|-------|-------|--------------|
|
|
37
|
+
| 80% | Info | Warning in tool response |
|
|
38
|
+
| 90% | Warning | Warning + optional email |
|
|
39
|
+
| 100% | Error | Operations blocked |
|
|
40
|
+
|
|
41
|
+
### Example Warning at 80%
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"results": [...],
|
|
46
|
+
"_meta": {
|
|
47
|
+
"quota": {
|
|
48
|
+
"remaining": 200,
|
|
49
|
+
"limit": 1000,
|
|
50
|
+
"resetAt": "2026-02-01T00:00:00Z",
|
|
51
|
+
"warning": "80% of monthly quota used (200 remaining)"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### At 100% (Blocked)
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"error": "QUOTA_EXCEEDED",
|
|
62
|
+
"message": "Monthly quota exceeded. Upgrade at skillsmith.app/upgrade",
|
|
63
|
+
"resetAt": "2026-02-01T00:00:00Z"
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Checking Your Quota
|
|
68
|
+
|
|
69
|
+
Ask Claude:
|
|
70
|
+
```
|
|
71
|
+
"What's my Skillsmith quota?"
|
|
72
|
+
"How many API calls do I have left?"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Or check programmatically via the quota metadata in any response.
|
|
76
|
+
|
|
77
|
+
## Quota Resets
|
|
78
|
+
|
|
79
|
+
Quotas reset on the **first of each month** at 00:00 UTC.
|
|
80
|
+
|
|
81
|
+
Example:
|
|
82
|
+
- January 15: 800/1000 used
|
|
83
|
+
- February 1: 0/1000 used (reset)
|
|
84
|
+
|
|
85
|
+
Unused quota does not roll over.
|
|
86
|
+
|
|
87
|
+
## Upgrading Your Tier
|
|
88
|
+
|
|
89
|
+
### From Community to Individual ($9.99/mo)
|
|
90
|
+
- 10x more API calls (10,000/month)
|
|
91
|
+
- Priority support
|
|
92
|
+
- Basic analytics dashboard
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Upgrade at: https://skillsmith.app/upgrade?from=community&to=individual
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### From Individual to Team ($25/user/mo)
|
|
99
|
+
- 10x more API calls (100,000/month)
|
|
100
|
+
- Team workspaces
|
|
101
|
+
- Private skills
|
|
102
|
+
- Usage analytics
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Upgrade at: https://skillsmith.app/upgrade?from=individual&to=team
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### From Team to Enterprise ($55/user/mo)
|
|
109
|
+
- Unlimited API calls
|
|
110
|
+
- SSO (SAML 2.0)
|
|
111
|
+
- Role-based access control (RBAC)
|
|
112
|
+
- Audit logging
|
|
113
|
+
- SIEM integration
|
|
114
|
+
- Dedicated support
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Contact: sales@skillsmith.app
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Optimizing Quota Usage
|
|
121
|
+
|
|
122
|
+
### Do
|
|
123
|
+
- Cache search results when browsing
|
|
124
|
+
- Use `get_skill` only for skills you're considering
|
|
125
|
+
- Batch installations when possible
|
|
126
|
+
|
|
127
|
+
### Don't
|
|
128
|
+
- Run repeated searches for the same query
|
|
129
|
+
- Call `skill_validate` multiple times on the same skill
|
|
130
|
+
- Use `search` with overly broad queries
|
|
131
|
+
|
|
132
|
+
### Efficient Patterns
|
|
133
|
+
|
|
134
|
+
Instead of:
|
|
135
|
+
```
|
|
136
|
+
search("testing") # 1 call
|
|
137
|
+
search("testing jest") # 2 calls
|
|
138
|
+
search("testing vitest") # 3 calls
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Do:
|
|
142
|
+
```
|
|
143
|
+
search("testing", limit=20) # 1 call, get more results
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Enterprise Considerations
|
|
147
|
+
|
|
148
|
+
### Shared Quota (Team/Enterprise)
|
|
149
|
+
- Quota is shared across all team members
|
|
150
|
+
- Individual usage tracking available in dashboard
|
|
151
|
+
- Admins can set per-user soft limits
|
|
152
|
+
|
|
153
|
+
### Overage Protection
|
|
154
|
+
- Hard block at 100% by default
|
|
155
|
+
- Enterprise can enable overage billing
|
|
156
|
+
- Overage rate: $0.001 per additional call
|
|
157
|
+
|
|
158
|
+
### Audit Trail
|
|
159
|
+
Enterprise tier includes full audit logging:
|
|
160
|
+
- Who made each call
|
|
161
|
+
- What skill was accessed
|
|
162
|
+
- Timestamp and result
|
|
163
|
+
|
|
164
|
+
## FAQ
|
|
165
|
+
|
|
166
|
+
**Q: What happens if I hit my limit mid-project?**
|
|
167
|
+
A: You can upgrade immediately. New quota applies instantly.
|
|
168
|
+
|
|
169
|
+
**Q: Can I pre-pay for higher limits?**
|
|
170
|
+
A: Contact sales@skillsmith.app for custom plans.
|
|
171
|
+
|
|
172
|
+
**Q: Do local operations use quota?**
|
|
173
|
+
A: No. Only Skillsmith API calls (search, install, etc.) use quota.
|
|
174
|
+
|
|
175
|
+
**Q: Can I see my historical usage?**
|
|
176
|
+
A: Individual+ tiers have a usage dashboard at skillsmith.app/usage.
|
|
177
|
+
|
|
178
|
+
## Support
|
|
179
|
+
|
|
180
|
+
- Billing questions: billing@skillsmith.app
|
|
181
|
+
- Quota issues: support@skillsmith.app
|
|
182
|
+
- Enterprise sales: sales@skillsmith.app
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Skillsmith Security Model
|
|
2
|
+
|
|
3
|
+
This document provides detailed security information about how Skillsmith protects your Claude Code environment.
|
|
4
|
+
|
|
5
|
+
## Security Boundaries
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
TRUSTED ZONE
|
|
9
|
+
├── Claude model safety guardrails
|
|
10
|
+
├── Claude Code runtime
|
|
11
|
+
└── OS-level file access controls
|
|
12
|
+
|
|
13
|
+
SEMI-TRUSTED ZONE (Skillsmith)
|
|
14
|
+
├── Skill index (curated)
|
|
15
|
+
├── Quality scoring
|
|
16
|
+
├── Static analysis
|
|
17
|
+
├── Trust tier verification
|
|
18
|
+
└── Conflict detection
|
|
19
|
+
|
|
20
|
+
UNTRUSTED ZONE
|
|
21
|
+
├── GitHub repositories
|
|
22
|
+
├── Third-party skill authors
|
|
23
|
+
└── Community registries
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## What Skillsmith Scans For
|
|
27
|
+
|
|
28
|
+
### Critical Severity (Blocks Installation)
|
|
29
|
+
|
|
30
|
+
**Jailbreak Patterns**
|
|
31
|
+
- "ignore previous instructions"
|
|
32
|
+
- "developer mode" / "DAN mode"
|
|
33
|
+
- "bypass safety" / "bypass security"
|
|
34
|
+
- "system: override"
|
|
35
|
+
- "act as an AI without restrictions"
|
|
36
|
+
|
|
37
|
+
**Malicious URLs**
|
|
38
|
+
- Non-allowlisted external domains
|
|
39
|
+
- Allowlist includes: github.com, githubusercontent.com, anthropic.com, claude.ai
|
|
40
|
+
|
|
41
|
+
### High Severity (Requires Confirmation)
|
|
42
|
+
|
|
43
|
+
**Suspicious URLs**
|
|
44
|
+
- `file://` protocol (local file access)
|
|
45
|
+
- `gopher://`, `dict://`, `ldap://` protocols
|
|
46
|
+
- localhost / 127.0.0.x references
|
|
47
|
+
- Private IP ranges (10.x.x.x, 192.168.x.x, 172.16-31.x.x)
|
|
48
|
+
|
|
49
|
+
**Sensitive File Access Patterns**
|
|
50
|
+
- `*.env*` files
|
|
51
|
+
- `*.pem`, `*.key`, `*.p12` certificates
|
|
52
|
+
- `*credentials*`, `*secrets*`, `*password*`
|
|
53
|
+
- AWS credentials patterns
|
|
54
|
+
|
|
55
|
+
**Dangerous Commands**
|
|
56
|
+
- `rm -rf`, `format`, `delete`
|
|
57
|
+
- `curl`, `wget` to unknown domains
|
|
58
|
+
- `eval`, `exec` with dynamic input
|
|
59
|
+
|
|
60
|
+
### Medium Severity (Warning)
|
|
61
|
+
|
|
62
|
+
**Obfuscation Detection**
|
|
63
|
+
- High entropy content (Shannon entropy > 4.5)
|
|
64
|
+
- Possible base64 encoded payloads
|
|
65
|
+
- Unusual character sequences
|
|
66
|
+
|
|
67
|
+
**Permission Keywords**
|
|
68
|
+
- References to sudo, root, admin
|
|
69
|
+
- System modification commands
|
|
70
|
+
|
|
71
|
+
## Threat Model
|
|
72
|
+
|
|
73
|
+
| Threat | Severity | Mitigation | Status |
|
|
74
|
+
|--------|----------|------------|--------|
|
|
75
|
+
| Malicious SKILL.md | Critical | Pattern scanning, trust tiers | Active |
|
|
76
|
+
| Prompt injection | Critical | Pattern detection, entropy analysis | Active |
|
|
77
|
+
| Typosquatting | High | Levenshtein distance, char substitution | Active |
|
|
78
|
+
| Dependency hijacking | Medium | URL allowlist | Active |
|
|
79
|
+
| Author key compromise | Medium | Anomaly detection | Planned |
|
|
80
|
+
| Supply chain attack | High | Registry signing | Planned |
|
|
81
|
+
|
|
82
|
+
## Validation Patterns (Technical Detail)
|
|
83
|
+
|
|
84
|
+
### SSRF Detection
|
|
85
|
+
```
|
|
86
|
+
file://, gopher://, dict://, ldap://
|
|
87
|
+
localhost, 127.0.0.x
|
|
88
|
+
10.x.x.x, 192.168.x.x, 172.16-31.x.x
|
|
89
|
+
169.254.x.x (link-local)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Path Traversal Detection
|
|
93
|
+
```
|
|
94
|
+
../, ..\
|
|
95
|
+
..%2f, ..%5c (URL encoded)
|
|
96
|
+
%2e%2e (double-encoded)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Typosquatting Detection
|
|
100
|
+
- Levenshtein distance ≤ 2 from known skill names
|
|
101
|
+
- Character substitution (l/1, o/0, rn/m)
|
|
102
|
+
- Homograph attacks (unicode lookalikes)
|
|
103
|
+
|
|
104
|
+
## Best Practices
|
|
105
|
+
|
|
106
|
+
### For Skill Users
|
|
107
|
+
|
|
108
|
+
1. **Always check trust tier** before installing
|
|
109
|
+
- Official/Verified: Generally safe
|
|
110
|
+
- Community: Review skill content first
|
|
111
|
+
- Unverified: Only install if you trust the author personally
|
|
112
|
+
|
|
113
|
+
2. **Review skill content** for unverified skills
|
|
114
|
+
- Read the SKILL.md body
|
|
115
|
+
- Check for suspicious URLs or commands
|
|
116
|
+
- Look for overly broad permissions
|
|
117
|
+
|
|
118
|
+
3. **Use `skill_validate`** for manual installations
|
|
119
|
+
- Runs security scan before install
|
|
120
|
+
- Shows warnings and requires confirmation
|
|
121
|
+
|
|
122
|
+
4. **Report suspicious skills**
|
|
123
|
+
- GitHub: https://github.com/smith-horn/skillsmith/security/advisories
|
|
124
|
+
- Email: security@skillsmith.app
|
|
125
|
+
|
|
126
|
+
5. **Keep Skillsmith updated**
|
|
127
|
+
- New security patterns added regularly
|
|
128
|
+
- `npx @skillsmith/mcp-server@latest`
|
|
129
|
+
|
|
130
|
+
### For Skill Authors
|
|
131
|
+
|
|
132
|
+
1. **Avoid external URLs** unless necessary
|
|
133
|
+
- Prefer documented APIs (github.com, npm registry)
|
|
134
|
+
- Never reference internal/private URLs
|
|
135
|
+
|
|
136
|
+
2. **Don't request sensitive file access**
|
|
137
|
+
- Never read .env files
|
|
138
|
+
- Never access credential stores
|
|
139
|
+
|
|
140
|
+
3. **Be explicit about permissions**
|
|
141
|
+
- Document what files you read/write
|
|
142
|
+
- Document what commands you execute
|
|
143
|
+
|
|
144
|
+
4. **Submit for verification**
|
|
145
|
+
- Verified skills get more installs
|
|
146
|
+
- Process documented at skillsmith.app/verify
|
|
147
|
+
|
|
148
|
+
## Privacy Considerations
|
|
149
|
+
|
|
150
|
+
Skillsmith respects your privacy:
|
|
151
|
+
|
|
152
|
+
**Never sent to backend:**
|
|
153
|
+
- Your codebase content
|
|
154
|
+
- File paths or names
|
|
155
|
+
- Environment variables
|
|
156
|
+
- Credentials
|
|
157
|
+
- Conversation content
|
|
158
|
+
|
|
159
|
+
**Sent only with opt-in telemetry:**
|
|
160
|
+
- Anonymized search queries
|
|
161
|
+
- Skill install/uninstall events
|
|
162
|
+
- Error rates (stack traces only)
|
|
163
|
+
- Feature usage statistics
|
|
164
|
+
|
|
165
|
+
## Reporting Security Issues
|
|
166
|
+
|
|
167
|
+
**For vulnerabilities in Skillsmith itself:**
|
|
168
|
+
- Email: security@skillsmith.app
|
|
169
|
+
- GitHub Security Advisories: https://github.com/smith-horn/skillsmith/security/advisories
|
|
170
|
+
|
|
171
|
+
**For malicious skills:**
|
|
172
|
+
- Report via GitHub Issues
|
|
173
|
+
- Include skill ID and specific concern
|
|
174
|
+
- We investigate and blocklist within 24 hours
|