skillplus 0.1.0__tar.gz → 0.1.2__tar.gz

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.
@@ -0,0 +1,132 @@
1
+ Metadata-Version: 2.4
2
+ Name: skillplus
3
+ Version: 0.1.2
4
+ Summary: Official Python SDK for SkillPlus
5
+ Project-URL: Homepage, https://skillplus.xyz
6
+ Project-URL: Documentation, https://docs.skillplus.xyz
7
+ Author: SkillPlus
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Keywords: ai,sdk,security,skillplus
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: httpx>=0.28
13
+ Provides-Extra: dev
14
+ Requires-Dist: build>=1.2; extra == 'dev'
15
+ Requires-Dist: pytest>=8; extra == 'dev'
16
+ Requires-Dist: respx>=0.22; extra == 'dev'
17
+ Description-Content-Type: text/markdown
18
+
19
+ # SkillPlus Python SDK
20
+
21
+ Official Python SDK for the hosted [SkillPlus](https://skillplus.xyz) API.
22
+
23
+ SkillPlus provides security intelligence for AI skills and agent-facing software, helping developers, teams, and platforms scan, understand, and trust AI skills before installation, approval, or integration.
24
+
25
+ ## Install
26
+
27
+ ```bash
28
+ pip install skillplus
29
+ ```
30
+
31
+ Requires Python 3.10+.
32
+
33
+ ## Quick start
34
+
35
+ One call that always ends with a completed report — scanning first if the
36
+ skill has never been seen:
37
+
38
+ ```python
39
+ from skillplus import SkillPlus
40
+
41
+ client = SkillPlus(api_key="skp_...")
42
+
43
+ report = client.wait_for_report("https://www.skills.sh/vercel-labs/skills/find-skills")
44
+ # GitHub repositories work the same way: "https://github.com/owner/repo"
45
+
46
+ print(report.verdict) # "safe" | "medium" | "high" | "unknown" — UI labels: Safe / Caution / High Risk / Unrated
47
+ print(report.summary.total_issues)
48
+ if report.supply_chain:
49
+ print(report.supply_chain.blacklist_hits) # poisoned-dependency hits
50
+ ```
51
+
52
+ Prefer `verdict` over the legacy `rating` field — it folds historical values
53
+ onto the current three-tier scale.
54
+
55
+ ## Lower-level: check without waiting
56
+
57
+ `query` returns immediately with the current state (`found` / `queued` /
58
+ `running` / `not_found` / `failed`) and never blocks:
59
+
60
+ ```python
61
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
62
+
63
+ if result.status == "found" and result.report:
64
+ print(result.report.verdict)
65
+ ```
66
+
67
+ ## Advanced options
68
+
69
+ For repositories containing many skills, or to queue a scan automatically when
70
+ no report exists yet:
71
+
72
+ ```python
73
+ result = client.query(
74
+ "https://github.com/owner/repo", # multi-skill repos are usually on GitHub
75
+ skill_path="skills/example", # pick one skill in the repo
76
+ scan_if_missing=True, # queue a scan if no report exists
77
+ )
78
+ ```
79
+
80
+ Client options:
81
+
82
+ ```python
83
+ client = SkillPlus(
84
+ api_key="skp_...",
85
+ base_url="https://skillplus.xyz", # staging / self-hosted override
86
+ timeout=30.0, # per-request timeout (seconds)
87
+ max_retries=2, # retries on 429/502/503, honoring Retry-After
88
+ )
89
+ ```
90
+
91
+ ## Context manager
92
+
93
+ ```python
94
+ from skillplus import SkillPlus
95
+
96
+ with SkillPlus(api_key="skp_...") as client:
97
+ result = client.scan("https://www.skills.sh/vercel-labs/skills/find-skills")
98
+ print(result.status)
99
+ ```
100
+
101
+ ## Methods
102
+
103
+ | Method | Use case |
104
+ |---|---|
105
+ | `query(...)` | Check whether SkillPlus already has a report for a skill. |
106
+ | `scan(...)` | Request a scan when a report is missing or when a fresh check is needed. |
107
+ | `wait_for_report(...)` | Query-and-wait: scans if missing, polls, and returns the completed report. |
108
+ | `get_report(scan_id)` | Retrieve structured report data: verdict, findings, AI audit, supply-chain snapshot. |
109
+ | `get_badge(scan_id)` | Fetch the badge SVG for embedding. |
110
+ | `get_badge_url(scan_id)` | Generate a badge URL for READMEs, marketplaces, or internal portals. |
111
+
112
+ ## Error handling
113
+
114
+ ```python
115
+ from skillplus import SkillPlus, SkillPlusError
116
+
117
+ client = SkillPlus(api_key="skp_...")
118
+
119
+ try:
120
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
121
+ except SkillPlusError as error:
122
+ print(error.status_code)
123
+ print(error.message)
124
+ ```
125
+
126
+ ## Development
127
+
128
+ ```bash
129
+ uv sync --extra dev
130
+ uv run pytest
131
+ uv build
132
+ ```
@@ -0,0 +1,114 @@
1
+ # SkillPlus Python SDK
2
+
3
+ Official Python SDK for the hosted [SkillPlus](https://skillplus.xyz) API.
4
+
5
+ SkillPlus provides security intelligence for AI skills and agent-facing software, helping developers, teams, and platforms scan, understand, and trust AI skills before installation, approval, or integration.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pip install skillplus
11
+ ```
12
+
13
+ Requires Python 3.10+.
14
+
15
+ ## Quick start
16
+
17
+ One call that always ends with a completed report — scanning first if the
18
+ skill has never been seen:
19
+
20
+ ```python
21
+ from skillplus import SkillPlus
22
+
23
+ client = SkillPlus(api_key="skp_...")
24
+
25
+ report = client.wait_for_report("https://www.skills.sh/vercel-labs/skills/find-skills")
26
+ # GitHub repositories work the same way: "https://github.com/owner/repo"
27
+
28
+ print(report.verdict) # "safe" | "medium" | "high" | "unknown" — UI labels: Safe / Caution / High Risk / Unrated
29
+ print(report.summary.total_issues)
30
+ if report.supply_chain:
31
+ print(report.supply_chain.blacklist_hits) # poisoned-dependency hits
32
+ ```
33
+
34
+ Prefer `verdict` over the legacy `rating` field — it folds historical values
35
+ onto the current three-tier scale.
36
+
37
+ ## Lower-level: check without waiting
38
+
39
+ `query` returns immediately with the current state (`found` / `queued` /
40
+ `running` / `not_found` / `failed`) and never blocks:
41
+
42
+ ```python
43
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
44
+
45
+ if result.status == "found" and result.report:
46
+ print(result.report.verdict)
47
+ ```
48
+
49
+ ## Advanced options
50
+
51
+ For repositories containing many skills, or to queue a scan automatically when
52
+ no report exists yet:
53
+
54
+ ```python
55
+ result = client.query(
56
+ "https://github.com/owner/repo", # multi-skill repos are usually on GitHub
57
+ skill_path="skills/example", # pick one skill in the repo
58
+ scan_if_missing=True, # queue a scan if no report exists
59
+ )
60
+ ```
61
+
62
+ Client options:
63
+
64
+ ```python
65
+ client = SkillPlus(
66
+ api_key="skp_...",
67
+ base_url="https://skillplus.xyz", # staging / self-hosted override
68
+ timeout=30.0, # per-request timeout (seconds)
69
+ max_retries=2, # retries on 429/502/503, honoring Retry-After
70
+ )
71
+ ```
72
+
73
+ ## Context manager
74
+
75
+ ```python
76
+ from skillplus import SkillPlus
77
+
78
+ with SkillPlus(api_key="skp_...") as client:
79
+ result = client.scan("https://www.skills.sh/vercel-labs/skills/find-skills")
80
+ print(result.status)
81
+ ```
82
+
83
+ ## Methods
84
+
85
+ | Method | Use case |
86
+ |---|---|
87
+ | `query(...)` | Check whether SkillPlus already has a report for a skill. |
88
+ | `scan(...)` | Request a scan when a report is missing or when a fresh check is needed. |
89
+ | `wait_for_report(...)` | Query-and-wait: scans if missing, polls, and returns the completed report. |
90
+ | `get_report(scan_id)` | Retrieve structured report data: verdict, findings, AI audit, supply-chain snapshot. |
91
+ | `get_badge(scan_id)` | Fetch the badge SVG for embedding. |
92
+ | `get_badge_url(scan_id)` | Generate a badge URL for READMEs, marketplaces, or internal portals. |
93
+
94
+ ## Error handling
95
+
96
+ ```python
97
+ from skillplus import SkillPlus, SkillPlusError
98
+
99
+ client = SkillPlus(api_key="skp_...")
100
+
101
+ try:
102
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
103
+ except SkillPlusError as error:
104
+ print(error.status_code)
105
+ print(error.message)
106
+ ```
107
+
108
+ ## Development
109
+
110
+ ```bash
111
+ uv sync --extra dev
112
+ uv run pytest
113
+ uv build
114
+ ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "skillplus"
7
- version = "0.1.0"
7
+ version = "0.1.2"
8
8
  description = "Official Python SDK for SkillPlus"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -50,7 +50,7 @@ class SkillPlus:
50
50
  headers={
51
51
  "Authorization": f"Bearer {api_key}",
52
52
  "Content-Type": "application/json",
53
- "User-Agent": "skillplus-python/0.1.0",
53
+ "User-Agent": "skillplus-python/0.1.2",
54
54
  },
55
55
  )
56
56
 
skillplus-0.1.0/PKG-INFO DELETED
@@ -1,102 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: skillplus
3
- Version: 0.1.0
4
- Summary: Official Python SDK for SkillPlus
5
- Project-URL: Homepage, https://skillplus.xyz
6
- Project-URL: Documentation, https://docs.skillplus.xyz
7
- Author: SkillPlus
8
- License: MIT
9
- License-File: LICENSE
10
- Keywords: ai,sdk,security,skillplus
11
- Requires-Python: >=3.10
12
- Requires-Dist: httpx>=0.28
13
- Provides-Extra: dev
14
- Requires-Dist: build>=1.2; extra == 'dev'
15
- Requires-Dist: pytest>=8; extra == 'dev'
16
- Requires-Dist: respx>=0.22; extra == 'dev'
17
- Description-Content-Type: text/markdown
18
-
19
- # SkillPlus Python SDK
20
-
21
- Official Python SDK for the hosted SkillPlus API.
22
-
23
- SkillPlus provides security intelligence for AI skills and agent-facing software, helping developers, teams, and platforms scan, understand, and trust AI skills before installation, approval, or integration.
24
-
25
- ## Install
26
-
27
- ```bash
28
- pip install skillplus
29
- ```
30
-
31
- ## Basic usage
32
-
33
- ```python
34
- from skillplus import SkillPlus
35
-
36
- client = SkillPlus(api_key="skp_...")
37
-
38
- result = client.query("https://github.com/owner/repo")
39
-
40
- if result.status == "found" and result.report:
41
- print(result.report.rating) # "safe" | "medium" | "high"
42
- ```
43
-
44
- ### Advanced options
45
-
46
- For repositories containing many skills, or to queue a scan automatically when
47
- no report exists yet:
48
-
49
- ```python
50
- result = client.query(
51
- "https://github.com/owner/repo",
52
- skill_path="skills/example", # pick one skill in a multi-skill repo
53
- scan_if_missing=True, # queue a scan if no report exists
54
- )
55
- ```
56
-
57
- The SDK talks to the official SkillPlus service at `https://skillplus.xyz`.
58
-
59
- ## Context manager
60
-
61
- ```python
62
- from skillplus import SkillPlus
63
-
64
- with SkillPlus(api_key="skp_...") as client:
65
- result = client.scan(
66
- "https://github.com/owner/repo",
67
- skill_path="skills/example",
68
- )
69
- print(result.status)
70
- ```
71
-
72
- ## Methods
73
-
74
- | Method | Use case |
75
- |---|---|
76
- | `query(...)` | Check whether SkillPlus already has a report for a skill. |
77
- | `scan(...)` | Request a scan when a report is missing or when a fresh check is needed. |
78
- | `get_report(scan_id)` | Retrieve structured report data for dashboards, registries, or automation. |
79
- | `get_badge(scan_id)` | Fetch the badge SVG for embedding. |
80
- | `get_badge_url(scan_id)` | Generate a badge URL for READMEs, marketplaces, or internal portals. |
81
-
82
- ## Error handling
83
-
84
- ```python
85
- from skillplus import SkillPlus, SkillPlusError
86
-
87
- client = SkillPlus(api_key="skp_...")
88
-
89
- try:
90
- result = client.query("https://github.com/owner/repo")
91
- except SkillPlusError as error:
92
- print(error.status_code)
93
- print(error.message)
94
- ```
95
-
96
- ## Development
97
-
98
- ```bash
99
- uv sync --extra dev
100
- uv run pytest
101
- uv run python -m build
102
- ```
skillplus-0.1.0/README.md DELETED
@@ -1,84 +0,0 @@
1
- # SkillPlus Python SDK
2
-
3
- Official Python SDK for the hosted SkillPlus API.
4
-
5
- SkillPlus provides security intelligence for AI skills and agent-facing software, helping developers, teams, and platforms scan, understand, and trust AI skills before installation, approval, or integration.
6
-
7
- ## Install
8
-
9
- ```bash
10
- pip install skillplus
11
- ```
12
-
13
- ## Basic usage
14
-
15
- ```python
16
- from skillplus import SkillPlus
17
-
18
- client = SkillPlus(api_key="skp_...")
19
-
20
- result = client.query("https://github.com/owner/repo")
21
-
22
- if result.status == "found" and result.report:
23
- print(result.report.rating) # "safe" | "medium" | "high"
24
- ```
25
-
26
- ### Advanced options
27
-
28
- For repositories containing many skills, or to queue a scan automatically when
29
- no report exists yet:
30
-
31
- ```python
32
- result = client.query(
33
- "https://github.com/owner/repo",
34
- skill_path="skills/example", # pick one skill in a multi-skill repo
35
- scan_if_missing=True, # queue a scan if no report exists
36
- )
37
- ```
38
-
39
- The SDK talks to the official SkillPlus service at `https://skillplus.xyz`.
40
-
41
- ## Context manager
42
-
43
- ```python
44
- from skillplus import SkillPlus
45
-
46
- with SkillPlus(api_key="skp_...") as client:
47
- result = client.scan(
48
- "https://github.com/owner/repo",
49
- skill_path="skills/example",
50
- )
51
- print(result.status)
52
- ```
53
-
54
- ## Methods
55
-
56
- | Method | Use case |
57
- |---|---|
58
- | `query(...)` | Check whether SkillPlus already has a report for a skill. |
59
- | `scan(...)` | Request a scan when a report is missing or when a fresh check is needed. |
60
- | `get_report(scan_id)` | Retrieve structured report data for dashboards, registries, or automation. |
61
- | `get_badge(scan_id)` | Fetch the badge SVG for embedding. |
62
- | `get_badge_url(scan_id)` | Generate a badge URL for READMEs, marketplaces, or internal portals. |
63
-
64
- ## Error handling
65
-
66
- ```python
67
- from skillplus import SkillPlus, SkillPlusError
68
-
69
- client = SkillPlus(api_key="skp_...")
70
-
71
- try:
72
- result = client.query("https://github.com/owner/repo")
73
- except SkillPlusError as error:
74
- print(error.status_code)
75
- print(error.message)
76
- ```
77
-
78
- ## Development
79
-
80
- ```bash
81
- uv sync --extra dev
82
- uv run pytest
83
- uv run python -m build
84
- ```
File without changes
File without changes