opencode-skills-collection 4.0.61 → 4.0.63
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/README.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
[](https://www.npmjs.com/package/opencode-skills-collection)
|
|
11
11
|
[](https://www.npmjs.com/package/opencode-skills-collection)
|
|
12
|
+
[](https://hol.org/go/guard/rawsar?dest=%2Fguard%2Fbilling%3Fpromo%3DGUARD20-RAWSAR%23upgrade&link_id=02c248f9-50d5-4c60-abf0-ca80d2604a6b&utm_source=insights_share&utm_medium=affiliate_cta&utm_campaign=share20)
|
|
12
13
|
[](./LICENSE)
|
|
13
14
|
[](https://zread.ai/FrancoStino/opencode-skills-collection)
|
|
14
15
|
</div>
|
|
@@ -20,6 +21,11 @@
|
|
|
20
21
|
|
|
21
22
|
---
|
|
22
23
|
|
|
24
|
+
## Sponsor
|
|
25
|
+
[](https://gitads.dev/v1/ad-track?source=francostino/opencode-skills-collection@github)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
23
29
|
## Overview
|
|
24
30
|
|
|
25
31
|
**OpenCode Skills Collection** ships a pre-bundled snapshot of 1595+ universal skills for the OpenCode.
|
|
@@ -255,9 +261,6 @@ To use the latest beta version, update your `~/.config/opencode/opencode.json`:
|
|
|
255
261
|
|
|
256
262
|
[MIT ©](./LICENSE)
|
|
257
263
|
|
|
258
|
-
## GitAds Sponsored
|
|
259
|
-
[](https://gitads.dev/v1/ad-track?source=francostino/opencode-skills-collection@github)
|
|
260
|
-
|
|
261
264
|
## Star History
|
|
262
265
|
|
|
263
266
|
<a href="https://www.star-history.com/?repos=FrancoStino%2Fopencode-skills-collection&type=date&legend=top-left">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"updatedAt": "2026-09-
|
|
3
|
+
"updatedAt": "2026-09-15T02:11:34.766Z",
|
|
4
4
|
"entries": [
|
|
5
5
|
"00-andruia-consultant",
|
|
6
6
|
"007",
|
|
@@ -954,6 +954,7 @@
|
|
|
954
954
|
"gitlab-automation",
|
|
955
955
|
"gitlab-ci-patterns",
|
|
956
956
|
"gitops-workflow",
|
|
957
|
+
"glasser",
|
|
957
958
|
"global-chat-agent-discovery",
|
|
958
959
|
"gmail-automation",
|
|
959
960
|
"go-concurrency-patterns",
|
|
@@ -1239,6 +1240,7 @@
|
|
|
1239
1240
|
"marketing-ideas",
|
|
1240
1241
|
"marketing-plan",
|
|
1241
1242
|
"marketing-psychology",
|
|
1243
|
+
"marketplace-rbac-audit",
|
|
1242
1244
|
"markstream-angular",
|
|
1243
1245
|
"markstream-custom-components",
|
|
1244
1246
|
"markstream-install",
|
|
@@ -1517,6 +1519,7 @@
|
|
|
1517
1519
|
"product-marketing-context",
|
|
1518
1520
|
"production-audit",
|
|
1519
1521
|
"production-code-audit",
|
|
1522
|
+
"production-runtime-certification",
|
|
1520
1523
|
"production-scheduling",
|
|
1521
1524
|
"professional-proofreader",
|
|
1522
1525
|
"programmatic-seo",
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: glasser
|
|
3
|
+
description: "Search, inspect, and run third-party data APIs through one CLI when the environment has no suitable integration."
|
|
4
|
+
category: data
|
|
5
|
+
risk: critical
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-12"
|
|
9
|
+
author: adriansurething
|
|
10
|
+
tags: [api, data, search, enrichment, marketing, research, cli]
|
|
11
|
+
tools: [claude, cursor, codex, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Glasser
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Glasser is a commercial API broker that exposes third-party data providers
|
|
19
|
+
through one CLI and one account. Use it to fill a data gap after checking the
|
|
20
|
+
environment's free tools and the user's existing integrations. Provider output
|
|
21
|
+
keeps its native structure, so inspect the selected endpoint before every run.
|
|
22
|
+
|
|
23
|
+
This skill was contributed by a member of the Glasser team.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Use when a task needs current web, news, search, social, business, people,
|
|
28
|
+
places, shopping, image, video, or enrichment data that available tools
|
|
29
|
+
cannot supply.
|
|
30
|
+
- Use when the user wants pay-per-call access without creating a separate
|
|
31
|
+
account with the underlying provider.
|
|
32
|
+
- Use for marketing and research workflows that need structured evidence from
|
|
33
|
+
a named data provider.
|
|
34
|
+
- Prefer the user's explicit provider choice, existing API keys, installed
|
|
35
|
+
integrations, and free tools before Glasser.
|
|
36
|
+
|
|
37
|
+
## How It Works
|
|
38
|
+
|
|
39
|
+
### Step 1: Check Availability and Authentication
|
|
40
|
+
|
|
41
|
+
Use the CLI only if it is already installed or the user has approved its
|
|
42
|
+
installation under the host environment's software-installation policy.
|
|
43
|
+
Installation instructions are maintained at
|
|
44
|
+
<https://glasser.ai/SKILL.md>. Do not download or install executable code
|
|
45
|
+
without the review and approval required by the current environment.
|
|
46
|
+
|
|
47
|
+
Check the CLI and account:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
glasser --version
|
|
51
|
+
glasser balance
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If authentication is missing in an interactive session, run `glasser login`.
|
|
55
|
+
It opens a browser-based device flow. Relay the URL and code printed by the CLI
|
|
56
|
+
and wait for the command to finish. Never ask the user to paste a Key into chat.
|
|
57
|
+
|
|
58
|
+
For unattended environments, the user can configure `GLASSER_API_KEY` through
|
|
59
|
+
the environment's secret manager. Never write it to a project file or include
|
|
60
|
+
it in a command argument.
|
|
61
|
+
|
|
62
|
+
### Step 2: Discover Candidate Endpoints
|
|
63
|
+
|
|
64
|
+
Search by capability instead of guessing a provider or endpoint:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
glasser search -q "Google search results"
|
|
68
|
+
glasser search -q "company enrichment"
|
|
69
|
+
glasser search -q "Reddit posts and comments"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Compare the provider, endpoint, and listed price. Search results are ranked by
|
|
73
|
+
relevance; rank is not a quality or price recommendation.
|
|
74
|
+
|
|
75
|
+
### Step 3: Inspect the Contract
|
|
76
|
+
|
|
77
|
+
Inspect the exact endpoint before constructing input:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
glasser inspect -p serper -e /search
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Record:
|
|
84
|
+
|
|
85
|
+
- the current price and all charge clauses;
|
|
86
|
+
- required and optional input fields;
|
|
87
|
+
- fields that control result volume;
|
|
88
|
+
- run mode and timeout;
|
|
89
|
+
- the provider that will receive the request.
|
|
90
|
+
|
|
91
|
+
Schemas, prices, and charge clauses can change. The live `inspect` result is
|
|
92
|
+
the contract for the next run.
|
|
93
|
+
|
|
94
|
+
### Step 4: Authorize the Paid Scope
|
|
95
|
+
|
|
96
|
+
Only `run` spends the workspace balance. Before the first paid call, show the
|
|
97
|
+
user the provider, endpoint, per-call price, charge exceptions, input scope,
|
|
98
|
+
and requested result volume. Wait for approval unless the user already gave an
|
|
99
|
+
exact scope or budget that covers the call.
|
|
100
|
+
|
|
101
|
+
Create the provider-native JSON input in a file after inspection. A file avoids
|
|
102
|
+
shell-quoting errors and keeps the request reviewable. Do not include unrelated
|
|
103
|
+
personal, confidential, or credential data.
|
|
104
|
+
|
|
105
|
+
### Step 5: Run and Recover Safely
|
|
106
|
+
|
|
107
|
+
Run the approved request:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
glasser run -p serper -e /search -f request.json --wait
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The CLI prints an Idempotency-Key. If a timeout or transport failure leaves the
|
|
114
|
+
outcome uncertain, repeat the request with that same key:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
glasser run -p serper -e /search -f request.json --idempotency-key <same-key> --wait
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Do not create a new key for an ambiguous retry. It can create and charge a
|
|
121
|
+
second run. For a known run, use `glasser runs get -r <run-id> --wait` instead
|
|
122
|
+
of starting another one.
|
|
123
|
+
|
|
124
|
+
### Step 6: Report Evidence and Cost
|
|
125
|
+
|
|
126
|
+
For every run used in the answer, report:
|
|
127
|
+
|
|
128
|
+
1. the provider and endpoint;
|
|
129
|
+
2. the Glasser run status;
|
|
130
|
+
3. what the provider response says;
|
|
131
|
+
4. the exact `Charge` printed by the CLI;
|
|
132
|
+
5. the private `Run URL` printed by the CLI.
|
|
133
|
+
|
|
134
|
+
`COMPLETED` means the provider answered. It does not guarantee that the
|
|
135
|
+
provider found a result, so describe both the run status and the payload.
|
|
136
|
+
|
|
137
|
+
## Examples
|
|
138
|
+
|
|
139
|
+
### Example 1: Research a Search Results Page
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
Find a Google SERP endpoint in Glasser, show me its current price and input
|
|
143
|
+
schema, and ask before running one query for "best email marketing tools".
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The agent searches the catalog, inspects the selected endpoint, obtains paid
|
|
147
|
+
scope approval, writes input that matches the live schema, and returns sourced
|
|
148
|
+
results with the charge and Run URL.
|
|
149
|
+
|
|
150
|
+
### Example 2: Fill a Company-Data Gap
|
|
151
|
+
|
|
152
|
+
```text
|
|
153
|
+
Our current tools cannot enrich these five companies. Find suitable Glasser
|
|
154
|
+
endpoints, compare their prices and required inputs, and stop before spending.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
The agent returns a provider comparison without making a paid run.
|
|
158
|
+
|
|
159
|
+
## Best Practices
|
|
160
|
+
|
|
161
|
+
- Start with the smallest result count that can answer the question.
|
|
162
|
+
- Reuse data already retrieved during the current task.
|
|
163
|
+
- Keep exact decimal money values as strings when calculating totals.
|
|
164
|
+
- Save large outputs to a file and read only the fields needed for analysis.
|
|
165
|
+
- Preserve provider attribution when presenting evidence.
|
|
166
|
+
|
|
167
|
+
## Limitations
|
|
168
|
+
|
|
169
|
+
- Glasser is a paid service. Endpoint availability, prices, and provider terms
|
|
170
|
+
can change.
|
|
171
|
+
- Data quality and coverage depend on the selected third-party provider.
|
|
172
|
+
- A Glasser run does not grant permission to collect or use personal data.
|
|
173
|
+
Apply the user's purpose, applicable law, and provider terms.
|
|
174
|
+
- The private Run URL is available only to members of the Glasser workspace.
|
|
175
|
+
- The skill cannot complete interactive login without the user approving the
|
|
176
|
+
browser device flow.
|
|
177
|
+
|
|
178
|
+
## Security & Safety Notes
|
|
179
|
+
|
|
180
|
+
- Treat every `run` as a state-changing paid operation.
|
|
181
|
+
- Keep Keys in an environment secret store and out of files, logs, prompts,
|
|
182
|
+
command arguments, commits, and generated reports.
|
|
183
|
+
- Tell the user which provider receives the request before sending sensitive
|
|
184
|
+
or personal data, and minimize the submitted fields.
|
|
185
|
+
- Do not run speculative calls, retry loops, or unapproved bulk jobs.
|
|
186
|
+
- Stop on insufficient balance, rejected authorization, or a schema mismatch;
|
|
187
|
+
correct the cause before considering another paid call.
|
|
188
|
+
|
|
189
|
+
## Common Pitfalls
|
|
190
|
+
|
|
191
|
+
- **Problem:** Input validation fails.
|
|
192
|
+
**Solution:** Inspect the endpoint again and rebuild the JSON from the live
|
|
193
|
+
schema instead of guessing field names.
|
|
194
|
+
- **Problem:** A request timed out after submission.
|
|
195
|
+
**Solution:** Reuse the printed Idempotency-Key or fetch the known run.
|
|
196
|
+
- **Problem:** A completed run contains no useful result.
|
|
197
|
+
**Solution:** Report the provider outcome and charge clause; do not label the
|
|
198
|
+
transport as failed or rerun automatically.
|
|
199
|
+
- **Problem:** The CLI reports an available update.
|
|
200
|
+
**Solution:** Finish the current task, then follow the official upgrade
|
|
201
|
+
instructions and refresh the Glasser skill before the next task.
|
|
202
|
+
|
|
203
|
+
## Related Skills
|
|
204
|
+
|
|
205
|
+
- `@seo-dataforseo` - Use when DataForSEO is already configured and the task is
|
|
206
|
+
specifically SEO data.
|
|
207
|
+
- `@apify-market-research` - Use when the user already has an Apify integration
|
|
208
|
+
for the selected research source.
|
|
209
|
+
- `@parallel-search-mcp` - Use when Parallel is installed and covers the task.
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: marketplace-rbac-audit
|
|
3
|
+
description: "Audit multi-role marketplace authorization across roles, resource ownership, tenant boundaries, and order-state transitions; use when access rules need evidence, not UI assumptions."
|
|
4
|
+
category: security
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-12"
|
|
9
|
+
author: mosinlshaikh
|
|
10
|
+
tags: [marketplace, rbac, authorization, access-control, security]
|
|
11
|
+
tools: [claude, cursor, codex, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Marketplace RBAC Audit
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Audit authorization in marketplaces where customers, vendors, fulfillment staff, couriers, support agents, administrators, and service accounts act on shared orders and resources. Build an explicit policy matrix, trace enforcement from route to data access, and verify both allowed and denied behavior without treating hidden UI controls as security.
|
|
19
|
+
|
|
20
|
+
This is a read-only review by default. It does not grant permission to scan a live service, create test accounts, alter permissions, or access another person's data.
|
|
21
|
+
|
|
22
|
+
## When to Use This Skill
|
|
23
|
+
|
|
24
|
+
- Reviewing authorization in a marketplace, delivery platform, multi-vendor store, or fulfillment system.
|
|
25
|
+
- Adding or changing roles, administrative powers, ownership rules, or order-state transitions.
|
|
26
|
+
- Investigating whether one customer, vendor, courier, hub, or tenant can access another party's resources.
|
|
27
|
+
- Preparing negative authorization tests before release or after an access-control incident.
|
|
28
|
+
|
|
29
|
+
Do not use this skill for authentication design alone, generic multi-tenant architecture, offensive ID enumeration, or penetration testing outside an explicitly authorized test environment.
|
|
30
|
+
|
|
31
|
+
## Establish the Authorization Contract
|
|
32
|
+
|
|
33
|
+
Record the actual actors and resources instead of assuming standard role names.
|
|
34
|
+
|
|
35
|
+
For each actor, capture:
|
|
36
|
+
|
|
37
|
+
- identity source and role-assignment authority;
|
|
38
|
+
- tenant, organization, store, hub, region, or assignment scope;
|
|
39
|
+
- resource relationships such as owner, seller, assigned courier, servicing hub, or support case;
|
|
40
|
+
- permitted operations and state transitions;
|
|
41
|
+
- emergency, support, delegated, and service-account access;
|
|
42
|
+
- audit-log and approval requirements for privileged actions.
|
|
43
|
+
|
|
44
|
+
Separate these policy dimensions:
|
|
45
|
+
|
|
46
|
+
1. **Role** — what this actor type may generally do.
|
|
47
|
+
2. **Relationship** — which specific object the actor may access.
|
|
48
|
+
3. **Tenant or operational scope** — where the permission applies.
|
|
49
|
+
4. **Resource state** — whether the operation is valid now.
|
|
50
|
+
5. **Field scope** — which attributes may be viewed or changed.
|
|
51
|
+
|
|
52
|
+
A matching role is not sufficient when ownership, assignment, tenant, state, or field rules fail.
|
|
53
|
+
|
|
54
|
+
## Build the Policy Matrix
|
|
55
|
+
|
|
56
|
+
Create one row per meaningful actor-resource-operation combination.
|
|
57
|
+
|
|
58
|
+
| Field | Required content |
|
|
59
|
+
|---|---|
|
|
60
|
+
| Actor | Role plus relevant tenant/store/hub/assignment |
|
|
61
|
+
| Resource | Order, product, inventory, payout, address, profile, delivery, refund, or admin object |
|
|
62
|
+
| Operation | List, view, create, update, delete, assign, transition, refund, export, or impersonate |
|
|
63
|
+
| Relationship | Owner, seller, assignee, servicing hub, same tenant, or none |
|
|
64
|
+
| Required state | Order/payment/delivery state in which the operation is allowed |
|
|
65
|
+
| Field scope | Allowed and prohibited fields |
|
|
66
|
+
| Expected result | Allow or deny, including disclosure policy such as 403 versus 404 |
|
|
67
|
+
| Enforcement point | Route, policy layer, service, query predicate, database policy, or queue consumer |
|
|
68
|
+
| Evidence | Code reference, test ID, request ID, or audit event |
|
|
69
|
+
|
|
70
|
+
Mark an undocumented decision as **UNDEFINED**; do not invent a permission merely because current code allows it.
|
|
71
|
+
|
|
72
|
+
## Audit Workflow
|
|
73
|
+
|
|
74
|
+
### 1. Inventory Entry Points
|
|
75
|
+
|
|
76
|
+
Map HTTP routes, GraphQL operations, server actions, background jobs, webhooks, file downloads, exports, administrative tools, and queue consumers that access marketplace resources. Include bulk operations and alternate HTTP methods.
|
|
77
|
+
|
|
78
|
+
### 2. Trace Identity and Scope
|
|
79
|
+
|
|
80
|
+
For every entry point, trace how the authenticated principal becomes an authorization context. Confirm that role, tenant, store, hub, assignment, and delegation claims come from a trusted server-side source and are current enough for the operation.
|
|
81
|
+
|
|
82
|
+
Do not accept actor, tenant, owner, vendor, hub, courier, price, payout, or privilege fields from the request merely because they are present in a signed-in session.
|
|
83
|
+
|
|
84
|
+
### 3. Trace Object Authorization
|
|
85
|
+
|
|
86
|
+
Follow the resource identifier from request to data access. Prefer a scoped query or atomic mutation that includes every required predicate:
|
|
87
|
+
|
|
88
|
+
~~~text
|
|
89
|
+
resource_id
|
|
90
|
+
+ tenant/store/hub scope
|
|
91
|
+
+ owner/seller/assignee relationship
|
|
92
|
+
+ permitted current state
|
|
93
|
+
= authorized object or no match
|
|
94
|
+
~~~
|
|
95
|
+
|
|
96
|
+
A separate “check then update” sequence may race with reassignment or state changes. Record where a transaction, conditional update, row-level lock, or equivalent consistency control is required.
|
|
97
|
+
|
|
98
|
+
### 4. Check Field-Level Authorization
|
|
99
|
+
|
|
100
|
+
Compare request and response schemas by role. Verify that mass assignment, serializer defaults, ORM spreads, exports, and error payloads cannot expose or change protected fields.
|
|
101
|
+
|
|
102
|
+
Examples of sensitive fields include:
|
|
103
|
+
|
|
104
|
+
- another customer's address or contact details;
|
|
105
|
+
- vendor settlement and payout configuration;
|
|
106
|
+
- courier identity or precise location outside an active delivery need;
|
|
107
|
+
- internal fraud, moderation, cost, or risk fields;
|
|
108
|
+
- role, tenant, hub, assignment, price, refund, and payment-state attributes.
|
|
109
|
+
|
|
110
|
+
### 5. Audit State Transitions
|
|
111
|
+
|
|
112
|
+
Build an allowlist of valid transitions with authorized actors and invariants. For example, “assigned courier may mark picked up” is incomplete unless the order is assigned to that courier, is in the expected prior state, belongs to the same operational scope, and has not been cancelled.
|
|
113
|
+
|
|
114
|
+
Reject client-selected final states when the server should derive the transition. Verify idempotency and concurrency behavior for assignment, cancellation, refund, fulfillment, and delivery confirmation.
|
|
115
|
+
|
|
116
|
+
### 6. Verify Indirect Paths
|
|
117
|
+
|
|
118
|
+
Apply the same policy to:
|
|
119
|
+
|
|
120
|
+
- nested resources and parent-child ownership;
|
|
121
|
+
- invoice, receipt, label, media, and document downloads;
|
|
122
|
+
- search, autocomplete, counts, and analytics;
|
|
123
|
+
- bulk update, import, and export;
|
|
124
|
+
- webhook and queue-triggered changes;
|
|
125
|
+
- cached responses and pre-signed URLs;
|
|
126
|
+
- support tools, impersonation, and “view as user” modes.
|
|
127
|
+
|
|
128
|
+
UI visibility is evidence of presentation only. A hidden button, disabled control, or unpublished link does not enforce authorization.
|
|
129
|
+
|
|
130
|
+
### 7. Design Negative Tests
|
|
131
|
+
|
|
132
|
+
Use synthetic identities and records in an authorized test environment. For every important allowed case, add the nearest denied cases:
|
|
133
|
+
|
|
134
|
+
- same role, different owner;
|
|
135
|
+
- same role, different vendor/store/hub/tenant;
|
|
136
|
+
- correct role, wrong assignment;
|
|
137
|
+
- correct relationship, invalid resource state;
|
|
138
|
+
- expired, disabled, removed, or downgraded membership;
|
|
139
|
+
- protected field added to an otherwise valid request;
|
|
140
|
+
- bulk request containing one unauthorized object;
|
|
141
|
+
- stale session after role or assignment revocation;
|
|
142
|
+
- guessed nested-resource or download identifier.
|
|
143
|
+
|
|
144
|
+
Do not use real customer records as “victim” data. Do not enumerate identifiers or run live probes without explicit target authorization and a bounded test plan.
|
|
145
|
+
|
|
146
|
+
### 8. Report Evidence and Gaps
|
|
147
|
+
|
|
148
|
+
Report confirmed behavior separately from code inference. A route with no test is not proven secure; mark it **NOT VERIFIED**. A permission with no owner is **UNDEFINED**.
|
|
149
|
+
|
|
150
|
+
## Findings Format
|
|
151
|
+
|
|
152
|
+
~~~text
|
|
153
|
+
MARKETPLACE RBAC AUDIT
|
|
154
|
+
Revision: <immutable source revision>
|
|
155
|
+
Environment: <code review or authorized test target>
|
|
156
|
+
Observed at: <UTC timestamp>
|
|
157
|
+
|
|
158
|
+
POLICY COVERAGE: <covered rows>/<required rows>
|
|
159
|
+
ALLOWED-PATH TESTS: PASS | FAIL | NOT VERIFIED
|
|
160
|
+
DENIED-PATH TESTS: PASS | FAIL | NOT VERIFIED
|
|
161
|
+
OBJECT OWNERSHIP: PASS | FAIL | NOT VERIFIED
|
|
162
|
+
TENANT/STORE/HUB ISOLATION: PASS | FAIL | NOT VERIFIED
|
|
163
|
+
STATE TRANSITIONS: PASS | FAIL | NOT VERIFIED
|
|
164
|
+
FIELD-LEVEL ACCESS: PASS | FAIL | NOT VERIFIED
|
|
165
|
+
INDIRECT PATHS: PASS | FAIL | NOT VERIFIED
|
|
166
|
+
PRIVILEGED ACTION AUDITABILITY: PASS | FAIL | NOT VERIFIED
|
|
167
|
+
|
|
168
|
+
OVERALL: PASS | FAIL | INCOMPLETE
|
|
169
|
+
Findings: <IDs with actor, resource, operation, evidence, and impact>
|
|
170
|
+
Undefined policies: <explicit list>
|
|
171
|
+
Untested paths: <explicit list>
|
|
172
|
+
~~~
|
|
173
|
+
|
|
174
|
+
## Example Policy Rows
|
|
175
|
+
|
|
176
|
+
| Actor | Resource and operation | Relationship/state | Expected |
|
|
177
|
+
|---|---|---|---|
|
|
178
|
+
| Customer | View order | Own order | Allow |
|
|
179
|
+
| Customer | View order | Another customer's order | Deny |
|
|
180
|
+
| Vendor operator | Update product | Product belongs to vendor; editable state | Allow permitted fields only |
|
|
181
|
+
| Vendor operator | View payout | Different vendor | Deny |
|
|
182
|
+
| Courier | Update delivery status | Assigned delivery; valid next state | Allow one transition |
|
|
183
|
+
| Courier | Read customer location | Unassigned or completed delivery | Deny |
|
|
184
|
+
| Hub operator | Assign courier | Order belongs to serviced hub; assignable state | Allow |
|
|
185
|
+
| Hub operator | Refund payment | No refund permission | Deny |
|
|
186
|
+
| Support agent | View order | Active support purpose | Allow redacted fields and audit access |
|
|
187
|
+
| Administrator | Change user role | Explicit privilege plus required approval | Allow and emit audit event |
|
|
188
|
+
|
|
189
|
+
## Severity Guidance
|
|
190
|
+
|
|
191
|
+
- **Critical:** cross-tenant administrative access, payout destination changes, role escalation, mass customer-data access, or unauthorized refunds.
|
|
192
|
+
- **High:** cross-owner order/address access, unauthorized fulfillment transitions, courier location exposure, or vendor isolation failure.
|
|
193
|
+
- **Medium:** excessive fields, missing privileged audit events, stale-role access, or enumeration through counts and metadata.
|
|
194
|
+
- **Low:** policy/documentation gaps with no demonstrated access bypass.
|
|
195
|
+
|
|
196
|
+
Base severity on demonstrated reach, sensitivity, prerequisites, and business impact. Do not inflate severity from a role name alone.
|
|
197
|
+
|
|
198
|
+
## Best Practices
|
|
199
|
+
|
|
200
|
+
- Treat authorization as policy over role, relationship, scope, state, and fields.
|
|
201
|
+
- Default new actor-resource-operation combinations to deny until explicitly defined.
|
|
202
|
+
- Enforce policy server-side at every entry point, close to the data mutation.
|
|
203
|
+
- Prefer reusable policy functions plus negative tests over scattered role-name checks.
|
|
204
|
+
- Make role and assignment revocation effective within a defined, tested interval.
|
|
205
|
+
- Require explicit approval and immutable audit events for high-impact privileged actions.
|
|
206
|
+
- Re-run affected matrix rows after route, schema, role, workflow, or ownership changes.
|
|
207
|
+
|
|
208
|
+
## Common Pitfalls
|
|
209
|
+
|
|
210
|
+
- **Problem:** The frontend hides unauthorized actions.
|
|
211
|
+
**Solution:** Test the backend operation directly with a synthetic unauthorized principal.
|
|
212
|
+
|
|
213
|
+
- **Problem:** A vendor role can access every vendor's records.
|
|
214
|
+
**Solution:** Require both the role and the resource's vendor/store relationship in the query.
|
|
215
|
+
|
|
216
|
+
- **Problem:** A courier can submit any delivery state.
|
|
217
|
+
**Solution:** Authorize one server-defined transition from the current state for the assigned courier.
|
|
218
|
+
|
|
219
|
+
- **Problem:** An admin bypass silently applies to support agents.
|
|
220
|
+
**Solution:** Define separate privileged operations, field scope, approval requirements, and audit events.
|
|
221
|
+
|
|
222
|
+
- **Problem:** List endpoints are scoped but exports or downloads are not.
|
|
223
|
+
**Solution:** Reuse the same policy at every direct and indirect resource path.
|
|
224
|
+
|
|
225
|
+
## Limitations
|
|
226
|
+
|
|
227
|
+
- A source review cannot prove runtime identity-provider configuration or database policies without corresponding evidence.
|
|
228
|
+
- Negative tests prove only the identities, resources, operations, states, and environments exercised.
|
|
229
|
+
- This skill does not replace threat modeling, authentication review, privacy assessment, or an authorized penetration test.
|
|
230
|
+
- Marketplace policy varies by product and jurisdiction; unresolved business decisions must remain **UNDEFINED**.
|
|
231
|
+
|
|
232
|
+
## Security & Safety Notes
|
|
233
|
+
|
|
234
|
+
- Keep the audit read-only unless the user separately authorizes test creation or remediation.
|
|
235
|
+
- Use synthetic identities and records; never test by accessing unrelated real users' data.
|
|
236
|
+
- Redact tokens, session material, personal data, internal identifiers, and sensitive topology from evidence.
|
|
237
|
+
- Stop before live probing, privilege changes, impersonation, bulk exports, or state-changing requests unless the exact action and target are authorized.
|
|
238
|
+
|
|
239
|
+
## Related Skills
|
|
240
|
+
|
|
241
|
+
- **@api-security-best-practices** — use for broader API authentication, validation, abuse controls, and secure implementation patterns.
|
|
242
|
+
- **@saas-multi-tenant** — use for designing tenant isolation and PostgreSQL row-level security.
|
|
243
|
+
- **@idor-testing** — use only for explicitly authorized offensive IDOR testing.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-runtime-certification
|
|
3
|
+
description: "Certify a deployed service with fresh evidence across source, CI, migrations, runtime health, readiness, and critical routes; use before declaring a release production-ready."
|
|
4
|
+
category: devops
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-12"
|
|
9
|
+
author: mosinlshaikh
|
|
10
|
+
tags: [production, deployment, verification, reliability, devops]
|
|
11
|
+
tools: [claude, cursor, codex, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Production Runtime Certification
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Produce an evidence-backed release verdict that distinguishes code quality, CI success, deployment success, and live runtime health. The skill prevents a green pipeline or successful deploy event from being treated as proof that a service is usable in its target environment.
|
|
19
|
+
|
|
20
|
+
## When to Use This Skill
|
|
21
|
+
|
|
22
|
+
- Before declaring a release, environment, or migration production-ready.
|
|
23
|
+
- After a deployment when CI is green but runtime health is unknown or failing.
|
|
24
|
+
- During release audits that require a concise PASS, FAIL, or BLOCKED decision with reproducible evidence.
|
|
25
|
+
- When handing a deployed service from engineering to operations or a client.
|
|
26
|
+
|
|
27
|
+
Do not use this skill as a substitute for feature acceptance, security review, load testing, disaster-recovery exercises, or regulatory approval.
|
|
28
|
+
|
|
29
|
+
## Certification Contract
|
|
30
|
+
|
|
31
|
+
Agree on these inputs before testing:
|
|
32
|
+
|
|
33
|
+
- exact source revision, repository, and target environment;
|
|
34
|
+
- deployment identifier and expected artifact or image digest when available;
|
|
35
|
+
- health and readiness endpoints plus expected success semantics;
|
|
36
|
+
- migration mechanism and expected schema version;
|
|
37
|
+
- critical user journeys or routes;
|
|
38
|
+
- authorized, non-destructive probes and credential boundaries.
|
|
39
|
+
|
|
40
|
+
If the target, authorization, or success criteria are ambiguous, stop and request clarification. Never probe an unrelated environment, expose credentials in output, or modify production data merely to obtain a passing result.
|
|
41
|
+
|
|
42
|
+
## Evidence Model
|
|
43
|
+
|
|
44
|
+
Record every gate as one of:
|
|
45
|
+
|
|
46
|
+
- **PASS** — fresh evidence satisfies the agreed criterion.
|
|
47
|
+
- **FAIL** — fresh evidence disproves the criterion.
|
|
48
|
+
- **BLOCKED** — the gate could not be tested because access, tooling, configuration, or an upstream dependency is unavailable.
|
|
49
|
+
- **NOT APPLICABLE** — the gate is deliberately excluded with a written reason.
|
|
50
|
+
|
|
51
|
+
`BLOCKED` is not `PASS`. An overall certification can be **GREEN** only when every required gate passes. Any required failure produces **RED**; any required blocked gate with no failure produces **BLOCKED**.
|
|
52
|
+
|
|
53
|
+
## Workflow
|
|
54
|
+
|
|
55
|
+
### 1. Pin the Subject
|
|
56
|
+
|
|
57
|
+
Capture the immutable source revision and intended runtime artifact. Confirm that the deployed artifact maps to that revision. A branch name, local working tree, or “latest deployment” label is not immutable evidence.
|
|
58
|
+
|
|
59
|
+
### 2. Verify Source and CI
|
|
60
|
+
|
|
61
|
+
Run the repository's current validation and test commands on the pinned revision. Inspect the required CI jobs for the same revision, including conclusion and timestamp. Do not infer full CI success from one job or from an older run.
|
|
62
|
+
|
|
63
|
+
### 3. Verify Deployment Identity
|
|
64
|
+
|
|
65
|
+
Confirm that the target environment reports the expected deployment, revision, or artifact digest. Record the environment and deployment identifiers without copying secrets or sensitive configuration values.
|
|
66
|
+
|
|
67
|
+
### 4. Verify Database State
|
|
68
|
+
|
|
69
|
+
Use the application's supported migration status or a read-only schema-version query. Confirm migrations completed on the target database and that the application is not running against an unexpected database or schema.
|
|
70
|
+
|
|
71
|
+
Do not apply, roll back, repair, or stamp migrations unless the user separately authorizes that mutation and a recovery plan exists.
|
|
72
|
+
|
|
73
|
+
### 5. Probe Liveness and Readiness
|
|
74
|
+
|
|
75
|
+
Test liveness and readiness separately when both exist:
|
|
76
|
+
|
|
77
|
+
- **Liveness** shows that the process can respond.
|
|
78
|
+
- **Readiness** shows that the service can handle intended traffic and required dependencies are available.
|
|
79
|
+
|
|
80
|
+
Record timestamp, target, status code, bounded response summary, and latency. Redact tokens, cookies, internal hostnames, database addresses, and response fields that contain secrets or personal data.
|
|
81
|
+
|
|
82
|
+
### 6. Exercise Critical Routes
|
|
83
|
+
|
|
84
|
+
Run the smallest authorized smoke suite that proves the agreed critical journeys. Prefer synthetic or test records and read-only probes. For authenticated routes, use designated test identities with least privilege and never place credentials in commands, logs, or the report.
|
|
85
|
+
|
|
86
|
+
### 7. Check Operational Signals
|
|
87
|
+
|
|
88
|
+
Inspect the bounded deployment window for crash loops, unhandled exceptions, dependency failures, elevated error rates, or resource exhaustion. Absence of log access is `BLOCKED`, not proof of health.
|
|
89
|
+
|
|
90
|
+
### 8. Issue the Verdict
|
|
91
|
+
|
|
92
|
+
Publish the evidence matrix, unresolved risks, and exact overall verdict. Keep observations separate from inference. Include enough identifiers and timestamps for another engineer to reproduce the decision without exposing sensitive data.
|
|
93
|
+
|
|
94
|
+
## Report Template
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
PRODUCTION RUNTIME CERTIFICATION
|
|
98
|
+
Environment: <target>
|
|
99
|
+
Source revision: <immutable revision>
|
|
100
|
+
Deployment/artifact: <immutable identifier>
|
|
101
|
+
Observed at: <UTC timestamp>
|
|
102
|
+
|
|
103
|
+
SOURCE VALIDATION: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
104
|
+
CI: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
105
|
+
DEPLOYMENT IDENTITY: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
106
|
+
DATABASE MIGRATIONS: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
107
|
+
LIVENESS: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
108
|
+
READINESS: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
109
|
+
CRITICAL ROUTES: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
110
|
+
OPERATIONAL SIGNALS: PASS | FAIL | BLOCKED | NOT APPLICABLE
|
|
111
|
+
|
|
112
|
+
OVERALL: GREEN | RED | BLOCKED
|
|
113
|
+
Evidence: <commands/checks, run IDs, timestamps, bounded results>
|
|
114
|
+
Unresolved risks: <none or explicit list>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Examples
|
|
118
|
+
|
|
119
|
+
### CI Green, Runtime Unavailable
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
SOURCE VALIDATION: PASS — revision 8f31c2a, tests 146/146
|
|
123
|
+
CI: PASS — required run 72814 completed at 2026-09-12T10:06:00Z
|
|
124
|
+
DEPLOYMENT IDENTITY: PASS — artifact maps to revision 8f31c2a
|
|
125
|
+
DATABASE MIGRATIONS: BLOCKED — target database access unavailable
|
|
126
|
+
LIVENESS: FAIL — HTTP 503 at 2026-09-12T10:14:22Z
|
|
127
|
+
READINESS: FAIL — HTTP 503 at 2026-09-12T10:14:24Z
|
|
128
|
+
CRITICAL ROUTES: BLOCKED — smoke checks stopped after readiness failure
|
|
129
|
+
OPERATIONAL SIGNALS: BLOCKED — log access unavailable
|
|
130
|
+
|
|
131
|
+
OVERALL: RED
|
|
132
|
+
Unresolved risks: runtime cause and database state remain unverified
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Fully Supported Verdict
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
SOURCE VALIDATION: PASS
|
|
139
|
+
CI: PASS
|
|
140
|
+
DEPLOYMENT IDENTITY: PASS
|
|
141
|
+
DATABASE MIGRATIONS: PASS
|
|
142
|
+
LIVENESS: PASS
|
|
143
|
+
READINESS: PASS
|
|
144
|
+
CRITICAL ROUTES: PASS
|
|
145
|
+
OPERATIONAL SIGNALS: PASS
|
|
146
|
+
|
|
147
|
+
OVERALL: GREEN
|
|
148
|
+
Unresolved risks: none within the agreed certification scope
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Best Practices
|
|
152
|
+
|
|
153
|
+
- Use fresh, timestamped evidence for the exact revision and environment.
|
|
154
|
+
- Prefer immutable run, deployment, and artifact identifiers over screenshots or labels.
|
|
155
|
+
- Set bounded timeouts and request counts for runtime probes.
|
|
156
|
+
- Report partial success precisely; preserve FAIL and BLOCKED gates in summaries.
|
|
157
|
+
- Keep the certification read-only unless a separate change request authorizes remediation.
|
|
158
|
+
- Re-run affected gates after any code, configuration, migration, or infrastructure change.
|
|
159
|
+
|
|
160
|
+
## Common Pitfalls
|
|
161
|
+
|
|
162
|
+
- **Problem:** CI is green, so the release is declared healthy.
|
|
163
|
+
**Solution:** Verify deployment identity, migrations, readiness, routes, and operational signals independently.
|
|
164
|
+
|
|
165
|
+
- **Problem:** A liveness response is treated as readiness.
|
|
166
|
+
**Solution:** Test dependency-aware readiness criteria or record readiness as BLOCKED when none exist.
|
|
167
|
+
|
|
168
|
+
- **Problem:** Smoke tests accidentally create or alter customer data.
|
|
169
|
+
**Solution:** Use non-destructive probes or designated synthetic records with an explicit cleanup policy.
|
|
170
|
+
|
|
171
|
+
- **Problem:** Missing access is reported as success because no error was observed.
|
|
172
|
+
**Solution:** Mark the affected gate BLOCKED and keep the overall verdict BLOCKED unless another required gate fails.
|
|
173
|
+
|
|
174
|
+
- **Problem:** Credentials or internal configuration are copied into evidence.
|
|
175
|
+
**Solution:** Record identifiers and bounded outcomes; redact secrets, personal data, and sensitive topology.
|
|
176
|
+
|
|
177
|
+
## Limitations
|
|
178
|
+
|
|
179
|
+
- Certification is a point-in-time result for one revision and environment.
|
|
180
|
+
- Passing smoke checks do not establish performance capacity, security, resilience, or business correctness beyond the agreed scope.
|
|
181
|
+
- Provider dashboards and health endpoints can be incomplete; state evidence gaps explicitly.
|
|
182
|
+
- A GREEN verdict expires when the deployed artifact, configuration, schema, dependencies, or target environment changes.
|
|
183
|
+
|
|
184
|
+
## Security & Safety Notes
|
|
185
|
+
|
|
186
|
+
- Obtain authorization for the exact target and probes before accessing a live environment.
|
|
187
|
+
- Use least-privilege, designated test identities and read-only checks wherever possible.
|
|
188
|
+
- Never print, store, or transmit secrets, session material, personal data, or full sensitive responses in certification evidence.
|
|
189
|
+
- Stop when a check would require destructive data changes, privilege escalation, or a scope expansion that was not authorized.
|
|
190
|
+
|
|
191
|
+
## Related Skills
|
|
192
|
+
|
|
193
|
+
- `@verification-before-completion` — verifies that any completion claim has fresh supporting evidence; use this skill for the production-specific gate model and verdict.
|
|
194
|
+
- `@deployment-procedures` — use for executing a deployment; return here afterward to certify the deployed runtime.
|
package/package.json
CHANGED