@probo/skills 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/package.json +2 -2
- package/plugin.json +1 -1
- package/skills/access-review/references/decision-rubric.md +2 -3
- package/skills/access-review/references/mcp-tools.md +6 -4
- package/skills/compliance-portal-commitments/SKILL.md +3 -1
- package/skills/missing-signatures/references/mcp-tools.md +3 -1
- package/skills/open-source-compliance/SKILL.md +4 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@probo/skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Multi-agent compliance skills for open-source GRC (Claude Code, Codex, OpenCode) powered by Probo MCP",
|
|
5
5
|
"private": false,
|
|
6
6
|
"scripts": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
],
|
|
39
39
|
"license": "MIT",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"js-yaml": "^4.
|
|
41
|
+
"js-yaml": "^5.4.1"
|
|
42
42
|
},
|
|
43
43
|
"repository": {
|
|
44
44
|
"type": "git",
|
package/plugin.json
CHANGED
|
@@ -11,7 +11,7 @@ for non-`APPROVED` decisions.
|
|
|
11
11
|
| --- | --- | --- |
|
|
12
12
|
| `TERMINATED_USER` flag | `REVOKE` | Terminated user — access no longer required |
|
|
13
13
|
| `CONTRACTOR_EXPIRED` flag | `REVOKE` | Contractor engagement ended |
|
|
14
|
-
| `active === false`
|
|
14
|
+
| `active === false` | `REVOKE` | Account inactive at the source |
|
|
15
15
|
| `ORPHANED` flag and `active === false` | `REVOKE` | Orphaned inactive account |
|
|
16
16
|
| `ORPHANED` flag only, `active !== false` | `ESCALATE` | Orphaned account still active — needs owner |
|
|
17
17
|
| `SHARED_ACCOUNT` flag | `ESCALATE` | Shared account — assign individual owner |
|
|
@@ -19,7 +19,7 @@ for non-`APPROVED` decisions.
|
|
|
19
19
|
| `PRIVILEGED_ACCESS` or `ROLE_CREEP` flag | `ESCALATE` | Privileged access requires explicit approval |
|
|
20
20
|
| `is_admin === true` and (`DORMANT` flag or last_login very stale) | `ESCALATE` | Admin access dormant — confirm business need |
|
|
21
21
|
| `account_type === SERVICE_ACCOUNT`, active, no danger flags | `APPROVED` | Service account with expected access |
|
|
22
|
-
| Active user, no flags (or only `NONE`), not admin
|
|
22
|
+
| Active user, no flags (or only `NONE`), not admin | `APPROVED` | Routine access reaffirmed |
|
|
23
23
|
|
|
24
24
|
"Very stale" last_login: no login in 90+ days when `last_login` is present.
|
|
25
25
|
|
|
@@ -27,7 +27,6 @@ for non-`APPROVED` decisions.
|
|
|
27
27
|
|
|
28
28
|
| Condition | Suggested default | Why ambiguous |
|
|
29
29
|
| --- | --- | --- |
|
|
30
|
-
| `incremental_tag === NEW` | `ESCALATE` | New access since last campaign |
|
|
31
30
|
| `NO_BUSINESS_JUSTIFICATION` flag | `ESCALATE` or `REVOKE` | Needs human judgment |
|
|
32
31
|
| `OUT_OF_DEPARTMENT` flag | `ESCALATE` | Role/department mismatch |
|
|
33
32
|
| `EXCESSIVE` or `ROLE_MISMATCH` flag | `ESCALATE` | Role change needs context |
|
|
@@ -22,6 +22,10 @@ required input, so it serves two distinct purposes:
|
|
|
22
22
|
Either way the organization must be resolved before `listAccessReviewCampaigns`,
|
|
23
23
|
which requires `organization_id`.
|
|
24
24
|
|
|
25
|
+
Each organization includes `name` (operating name) and `legal_name` (registered
|
|
26
|
+
legal name, null when unset). Match the organization the user named against
|
|
27
|
+
`name`. Use `legal_name` when a note or report must name the legal entity.
|
|
28
|
+
|
|
25
29
|
## Read
|
|
26
30
|
|
|
27
31
|
### `listAccessReviewCampaigns`
|
|
@@ -40,7 +44,6 @@ List entries for a campaign. Primary data source for this command.
|
|
|
40
44
|
| `campaign_id` | Campaign GID |
|
|
41
45
|
| `filter.decision` | Use `PENDING` for review batches |
|
|
42
46
|
| `filter.flag` | Optional — focus on a flag (e.g. `TERMINATED_USER`) |
|
|
43
|
-
| `filter.incremental_tag` | Optional — `NEW`, `REMOVED`, `UNCHANGED` |
|
|
44
47
|
| `filter.is_admin` | Optional boolean |
|
|
45
48
|
| `filter.active` | Optional boolean |
|
|
46
49
|
| `size` | Page size; use `50` per batch |
|
|
@@ -54,8 +57,8 @@ infer the tool from account IDs, roles, email patterns, or other entry data.
|
|
|
54
57
|
|
|
55
58
|
Required: `campaign_id`
|
|
56
59
|
|
|
57
|
-
Returns `statistics` with `total_count`, `decision_counts`, `flag_counts
|
|
58
|
-
|
|
60
|
+
Returns `statistics` with `total_count`, `decision_counts`, `flag_counts`.
|
|
61
|
+
Call at the start of each run and after large batches.
|
|
59
62
|
|
|
60
63
|
## Write (semi-auto command)
|
|
61
64
|
|
|
@@ -102,7 +105,6 @@ Do not call unless the user explicitly asks for campaign setup:
|
|
|
102
105
|
| `auth_method` | `SSO`, `PASSWORD`, `API_KEY`, `OAUTH2`, `SSH`, `SERVICE_ACCOUNT` context |
|
|
103
106
|
| `account_type` | `SERVICE_ACCOUNT` vs `USER` |
|
|
104
107
|
| `last_login` | Dormancy signal |
|
|
105
|
-
| `incremental_tag` | `NEW` needs extra scrutiny |
|
|
106
108
|
| `flags`, `flag_reasons` | Primary risk signals |
|
|
107
109
|
| `decision` | Target `PENDING` entries only |
|
|
108
110
|
|
|
@@ -50,7 +50,9 @@ Commitments must trace to controls the company genuinely has. The source of trut
|
|
|
50
50
|
1. **Find the Probo MCP and the organization.** This environment may expose more than one Probo MCP
|
|
51
51
|
server (the plugin ships hosted `probo-us` and `probo-eu`, and self-hosted instances add their own).
|
|
52
52
|
Call `listOrganizations` on each until you find the one that returns the target company, and use that
|
|
53
|
-
server for every later call. Match the organization the user named
|
|
53
|
+
server for every later call. Match the organization the user named on `name` (the operating name) and
|
|
54
|
+
capture its `id`. `legal_name` is the registered legal name when set. The public group title still uses
|
|
55
|
+
the operating name. Use `legal_name` only when a commitment must name the legal entity.
|
|
54
56
|
2. **List the published policies.** Call `listDocuments` with `document_types: ["POLICY"]`. Policies with
|
|
55
57
|
a `current_published_major` are published.
|
|
56
58
|
3. **Read the actual content.** `getDocument` returns metadata only. To get the text, call
|
|
@@ -8,7 +8,9 @@ server configured in the agent). Read each tool schema before calling.
|
|
|
8
8
|
### `listOrganizations`
|
|
9
9
|
|
|
10
10
|
List organizations the caller can access. Use to resolve `$ARGUMENTS` when the
|
|
11
|
-
user provides a name instead of a GID.
|
|
11
|
+
user provides a name instead of a GID. Match on `name` (operating name).
|
|
12
|
+
`legal_name` is the registered legal name when set; use it in the report title
|
|
13
|
+
when the document should name the legal entity, and `name` otherwise.
|
|
12
14
|
|
|
13
15
|
### `listUsers`
|
|
14
16
|
|
|
@@ -17,7 +17,10 @@ first.
|
|
|
17
17
|
`claude mcp login probo-us` to complete the OAuth 2.0 sign-in.
|
|
18
18
|
2. Identify the target organization. List organizations if the user did not
|
|
19
19
|
provide one, and when several servers are connected use the one that returns
|
|
20
|
-
the target organization.
|
|
20
|
+
the target organization. `listOrganizations` returns `name` (the operating
|
|
21
|
+
name) and `legal_name` (the registered legal name, null when unset). Match
|
|
22
|
+
the organization on `name`. When a policy, contract, or other legal document
|
|
23
|
+
must name the company, use `legal_name` when it is set and `name` otherwise.
|
|
21
24
|
3. Prefer MCP tools over manual API calls. The Probo MCP API mirrors the
|
|
22
25
|
platform's GraphQL surface.
|
|
23
26
|
|