skillplus 0.1.0__tar.gz → 0.1.1__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,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: skillplus
3
+ Version: 0.1.1
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
+ ## Basic usage
34
+
35
+ ```python
36
+ from skillplus import SkillPlus
37
+
38
+ client = SkillPlus(api_key="skp_...")
39
+
40
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
41
+ # GitHub repositories work the same way: "https://github.com/owner/repo"
42
+
43
+ if result.status == "found" and result.report:
44
+ print(result.report.verdict) # "safe" | "medium" | "high" | "unknown"
45
+ ```
46
+
47
+ Prefer `verdict` over the legacy `rating` field — it folds historical values
48
+ onto the current three-tier scale (UI labels: safe→Safe, medium→Caution,
49
+ high→High Risk, unknown→Unrated).
50
+
51
+ ## One call that always ends with a report
52
+
53
+ When you just want the final answer — scanning first if the skill has never
54
+ been seen — use the wait helper. It polls internally and returns the
55
+ completed report:
56
+
57
+ ```python
58
+ report = client.wait_for_report("https://www.skills.sh/vercel-labs/skills/find-skills")
59
+
60
+ print(report.verdict)
61
+ print(report.summary.total_issues)
62
+ if report.supply_chain:
63
+ print(report.supply_chain.blacklist_hits) # poisoned-dependency hits
64
+ ```
65
+
66
+ ## Advanced options
67
+
68
+ For repositories containing many skills, or to queue a scan automatically when
69
+ no report exists yet:
70
+
71
+ ```python
72
+ result = client.query(
73
+ "https://github.com/owner/repo", # multi-skill repos are usually on GitHub
74
+ skill_path="skills/example", # pick one skill in the repo
75
+ scan_if_missing=True, # queue a scan if no report exists
76
+ )
77
+ ```
78
+
79
+ Client options:
80
+
81
+ ```python
82
+ client = SkillPlus(
83
+ api_key="skp_...",
84
+ base_url="https://skillplus.xyz", # staging / self-hosted override
85
+ timeout=30.0, # per-request timeout (seconds)
86
+ max_retries=2, # retries on 429/502/503, honoring Retry-After
87
+ )
88
+ ```
89
+
90
+ ## Context manager
91
+
92
+ ```python
93
+ from skillplus import SkillPlus
94
+
95
+ with SkillPlus(api_key="skp_...") as client:
96
+ result = client.scan("https://www.skills.sh/vercel-labs/skills/find-skills")
97
+ print(result.status)
98
+ ```
99
+
100
+ ## Methods
101
+
102
+ | Method | Use case |
103
+ |---|---|
104
+ | `query(...)` | Check whether SkillPlus already has a report for a skill. |
105
+ | `scan(...)` | Request a scan when a report is missing or when a fresh check is needed. |
106
+ | `wait_for_report(...)` | Query-and-wait: scans if missing, polls, and returns the completed report. |
107
+ | `get_report(scan_id)` | Retrieve structured report data: verdict, findings, AI audit, supply-chain snapshot. |
108
+ | `get_badge(scan_id)` | Fetch the badge SVG for embedding. |
109
+ | `get_badge_url(scan_id)` | Generate a badge URL for READMEs, marketplaces, or internal portals. |
110
+
111
+ ## Error handling
112
+
113
+ ```python
114
+ from skillplus import SkillPlus, SkillPlusError
115
+
116
+ client = SkillPlus(api_key="skp_...")
117
+
118
+ try:
119
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
120
+ except SkillPlusError as error:
121
+ print(error.status_code)
122
+ print(error.message)
123
+ ```
124
+
125
+ ## Development
126
+
127
+ ```bash
128
+ uv sync --extra dev
129
+ uv run pytest
130
+ uv build
131
+ ```
@@ -0,0 +1,113 @@
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
+ ## Basic usage
16
+
17
+ ```python
18
+ from skillplus import SkillPlus
19
+
20
+ client = SkillPlus(api_key="skp_...")
21
+
22
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
23
+ # GitHub repositories work the same way: "https://github.com/owner/repo"
24
+
25
+ if result.status == "found" and result.report:
26
+ print(result.report.verdict) # "safe" | "medium" | "high" | "unknown"
27
+ ```
28
+
29
+ Prefer `verdict` over the legacy `rating` field — it folds historical values
30
+ onto the current three-tier scale (UI labels: safe→Safe, medium→Caution,
31
+ high→High Risk, unknown→Unrated).
32
+
33
+ ## One call that always ends with a report
34
+
35
+ When you just want the final answer — scanning first if the skill has never
36
+ been seen — use the wait helper. It polls internally and returns the
37
+ completed report:
38
+
39
+ ```python
40
+ report = client.wait_for_report("https://www.skills.sh/vercel-labs/skills/find-skills")
41
+
42
+ print(report.verdict)
43
+ print(report.summary.total_issues)
44
+ if report.supply_chain:
45
+ print(report.supply_chain.blacklist_hits) # poisoned-dependency hits
46
+ ```
47
+
48
+ ## Advanced options
49
+
50
+ For repositories containing many skills, or to queue a scan automatically when
51
+ no report exists yet:
52
+
53
+ ```python
54
+ result = client.query(
55
+ "https://github.com/owner/repo", # multi-skill repos are usually on GitHub
56
+ skill_path="skills/example", # pick one skill in the repo
57
+ scan_if_missing=True, # queue a scan if no report exists
58
+ )
59
+ ```
60
+
61
+ Client options:
62
+
63
+ ```python
64
+ client = SkillPlus(
65
+ api_key="skp_...",
66
+ base_url="https://skillplus.xyz", # staging / self-hosted override
67
+ timeout=30.0, # per-request timeout (seconds)
68
+ max_retries=2, # retries on 429/502/503, honoring Retry-After
69
+ )
70
+ ```
71
+
72
+ ## Context manager
73
+
74
+ ```python
75
+ from skillplus import SkillPlus
76
+
77
+ with SkillPlus(api_key="skp_...") as client:
78
+ result = client.scan("https://www.skills.sh/vercel-labs/skills/find-skills")
79
+ print(result.status)
80
+ ```
81
+
82
+ ## Methods
83
+
84
+ | Method | Use case |
85
+ |---|---|
86
+ | `query(...)` | Check whether SkillPlus already has a report for a skill. |
87
+ | `scan(...)` | Request a scan when a report is missing or when a fresh check is needed. |
88
+ | `wait_for_report(...)` | Query-and-wait: scans if missing, polls, and returns the completed report. |
89
+ | `get_report(scan_id)` | Retrieve structured report data: verdict, findings, AI audit, supply-chain snapshot. |
90
+ | `get_badge(scan_id)` | Fetch the badge SVG for embedding. |
91
+ | `get_badge_url(scan_id)` | Generate a badge URL for READMEs, marketplaces, or internal portals. |
92
+
93
+ ## Error handling
94
+
95
+ ```python
96
+ from skillplus import SkillPlus, SkillPlusError
97
+
98
+ client = SkillPlus(api_key="skp_...")
99
+
100
+ try:
101
+ result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
102
+ except SkillPlusError as error:
103
+ print(error.status_code)
104
+ print(error.message)
105
+ ```
106
+
107
+ ## Development
108
+
109
+ ```bash
110
+ uv sync --extra dev
111
+ uv run pytest
112
+ uv build
113
+ ```
@@ -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.1"
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.1",
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