opencode-skills-collection 4.0.60 → 4.0.62
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 +6 -3
- package/bundled-skills/.antigravity-install-manifest.json +7 -1
- package/bundled-skills/agy-auto/SKILL.md +137 -0
- package/bundled-skills/client-secret-exposure-audit/SKILL.md +228 -0
- package/bundled-skills/client-secret-exposure-audit/references/example-report.md +144 -0
- package/bundled-skills/glasser/SKILL.md +209 -0
- package/bundled-skills/marketplace-rbac-audit/SKILL.md +243 -0
- package/bundled-skills/md2video-audio/SKILL.md +135 -0
- package/bundled-skills/production-runtime-certification/SKILL.md +194 -0
- package/package.json +1 -1
- package/skills_index.json +194 -0
|
@@ -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,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: md2video-audio
|
|
3
|
+
description: "Convert Markdown documents into narrated MP4 videos with synchronized visuals and voice narration."
|
|
4
|
+
category: media
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: 70v-Yoyo/md2video-audio-skill
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-09-12"
|
|
10
|
+
author: 70v-Yoyo
|
|
11
|
+
tags: [markdown, video, audio, text-to-speech, marp, presentation]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: "Apache-2.0"
|
|
14
|
+
license_source: "https://github.com/70v-Yoyo/md2video-audio-skill/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Md2video-audio
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
`md2video-audio` converts a Markdown document into a narrated MP4 video by transforming the source into synchronized presentation visuals and spoken narration.
|
|
22
|
+
|
|
23
|
+
The workflow preserves the original file and generates separate presentation, narration, and video outputs.
|
|
24
|
+
|
|
25
|
+
- `source_repo: 70v-Yoyo/md2video-audio-skill`
|
|
26
|
+
- `source_type: community`
|
|
27
|
+
|
|
28
|
+
## When to Use This Skill
|
|
29
|
+
|
|
30
|
+
- Use when converting Markdown tutorials, reports, or presentations into narrated videos.
|
|
31
|
+
- Use when creating presentation-style videos.
|
|
32
|
+
- Use when the user asks for Markdown-to-video, narrated slides, or audio-video generation.
|
|
33
|
+
|
|
34
|
+
## How It Works
|
|
35
|
+
|
|
36
|
+
### Step 1: Check Environment
|
|
37
|
+
|
|
38
|
+
Verify required local dependencies before running the workflow. Do not install, remove, or modify dependencies without user confirmation.
|
|
39
|
+
|
|
40
|
+
### Step 2: Prepare the Markdown
|
|
41
|
+
|
|
42
|
+
Keep the original file unchanged.
|
|
43
|
+
|
|
44
|
+
Create a new Markdown file with improved sectioning, formatting, and natural transitions while preserving the original meaning.
|
|
45
|
+
|
|
46
|
+
### Step 3: Generate Presentation Markdown
|
|
47
|
+
|
|
48
|
+
Convert the prepared document into Marp-compatible slides.
|
|
49
|
+
|
|
50
|
+
- Separate slides with `---`.
|
|
51
|
+
- Prevent content overflow.
|
|
52
|
+
- Split oversized tables, code blocks, or sections when necessary.
|
|
53
|
+
- Ask the user to choose a Marp style when required.
|
|
54
|
+
|
|
55
|
+
### Step 4: Generate Narration
|
|
56
|
+
|
|
57
|
+
Create a narration Markdown file aligned one-to-one with the presentation slides.
|
|
58
|
+
|
|
59
|
+
Remove visual-only characters that should not be spoken and verify that slide separators remain synchronized.
|
|
60
|
+
|
|
61
|
+
### Step 5: Generate Video
|
|
62
|
+
|
|
63
|
+
Run the provided video-generation script with the presentation and narration files:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
python ai-2md2marp2av.py presentation.md narration.md
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The script renders Marp slides, generates speech with Edge-TTS, and combines them into an MP4 video.
|
|
70
|
+
|
|
71
|
+
Ask the user to complete any interactive input required by the script.
|
|
72
|
+
|
|
73
|
+
### Step 6: Fallback
|
|
74
|
+
|
|
75
|
+
If the primary workflow fails, try the included fallback scripts in order:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
python md2marp2av.py
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Then:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
python md2video.py
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Examples
|
|
88
|
+
|
|
89
|
+
### Example 1: Convert a Tutorial
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
/md2video-audio tutorial.md
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Produces presentation Markdown, narration Markdown, and a narrated MP4 video.
|
|
96
|
+
|
|
97
|
+
### Example 2: Convert a Work Report
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
/md2video-audio project-review.md
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Use the generated slides and narration to create a presentation-style report video.
|
|
104
|
+
|
|
105
|
+
## Best Practices
|
|
106
|
+
|
|
107
|
+
- ✅ Preserve the original Markdown file.
|
|
108
|
+
- ✅ Keep presentation and narration slide counts synchronized.
|
|
109
|
+
- ✅ Split slides that exceed safe layout limits.
|
|
110
|
+
- ✅ Confirm before installing dependencies or running interactive actions.
|
|
111
|
+
- ❌ Do not overwrite the source document.
|
|
112
|
+
- ❌ Do not silently install, remove, or modify system dependencies.
|
|
113
|
+
|
|
114
|
+
## Limitations
|
|
115
|
+
|
|
116
|
+
- Requires the local runtime and dependencies used by the included scripts.
|
|
117
|
+
- Complex Markdown layouts may require manual adjustment.
|
|
118
|
+
- Edge-TTS availability depends on the local network and runtime environment.
|
|
119
|
+
- Stop and ask for clarification when required files, permissions, or user choices are missing.
|
|
120
|
+
|
|
121
|
+
## Security & Safety Notes
|
|
122
|
+
|
|
123
|
+
- Run scripts only in a local or authorized environment.
|
|
124
|
+
- Confirm with the user before installing dependencies or making environment changes.
|
|
125
|
+
- Generated files should be written as new files rather than replacing source content.
|
|
126
|
+
- Do not execute interactive or destructive commands without explicit user confirmation.
|
|
127
|
+
|
|
128
|
+
## Common Pitfalls
|
|
129
|
+
|
|
130
|
+
- **Problem:** Presentation and narration contain different slide counts.
|
|
131
|
+
**Solution:** Verify the number of `---` separators and realign the narration.
|
|
132
|
+
- **Problem:** Slide content overflows the Marp layout.
|
|
133
|
+
**Solution:** Split the content into smaller logical sections before rendering.
|
|
134
|
+
- **Problem:** Video generation fails because dependencies are unavailable.
|
|
135
|
+
**Solution:** Verify the environment first, then use the fallback scripts if appropriate.
|