@framers/agentos-skills 0.5.0 → 0.6.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/package.json +1 -1
- package/registry/curated/code-safety/SKILL.md +4 -0
- package/registry/curated/grounding-guard/SKILL.md +4 -0
- package/registry/curated/hitl-safety/SKILL.md +200 -0
- package/registry/curated/pii-redaction/SKILL.md +4 -0
- package/registry/curated/system-tools/SKILL.md +13 -0
- package/registry.json +108 -83
package/package.json
CHANGED
|
@@ -35,6 +35,10 @@ vulnerabilities. You also have a tool for on-demand code scanning.
|
|
|
35
35
|
- **Insecure Deserialization**: pickle.loads, yaml.load without SafeLoader
|
|
36
36
|
- **SSRF**: unvalidated URL construction from user input
|
|
37
37
|
|
|
38
|
+
## Post-Approval Guardrail Override
|
|
39
|
+
|
|
40
|
+
When HITL (human-in-the-loop) is enabled with `guardrailOverride: true` (the default), the code-safety scanner runs **after** HITL approval as a post-approval guardrail. This means even actions approved by a human operator or LLM judge are scanned for destructive patterns before execution. This catches accidental approvals of dangerous commands like `rm -rf /` or `DROP TABLE`. See the **hitl-safety** skill for full HITL configuration.
|
|
41
|
+
|
|
38
42
|
## Constraints
|
|
39
43
|
|
|
40
44
|
- Regex-based detection — may have false positives on safe code patterns
|
|
@@ -30,6 +30,10 @@ against the retrieved sources using NLI entailment detection.
|
|
|
30
30
|
- **Contradicted**: claim directly contradicts a source document
|
|
31
31
|
- **Unverifiable**: claim cannot be found in any source (potential hallucination)
|
|
32
32
|
|
|
33
|
+
## Interaction with HITL Guardrail Overrides
|
|
34
|
+
|
|
35
|
+
When HITL is enabled with `guardrailOverride: true`, the grounding guard participates in the post-approval guardrail pipeline. If a tool action is approved (by human or LLM judge) but produces output containing ungrounded claims, the grounding guard can flag or veto the response before it reaches the user. See the **hitl-safety** skill for HITL configuration details.
|
|
36
|
+
|
|
33
37
|
## Constraints
|
|
34
38
|
|
|
35
39
|
- Only runs when RAG sources are available (no sources → no verification)
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hitl-safety
|
|
3
|
+
version: '1.0.0'
|
|
4
|
+
description: Human-in-the-loop safety controls — approval routing via human, LLM judge, or auto-approve with guardrail overrides.
|
|
5
|
+
author: Wunderland
|
|
6
|
+
namespace: wunderland
|
|
7
|
+
category: safety
|
|
8
|
+
tags: [hitl, approval, llm-judge, guardrails, safety, human-in-the-loop]
|
|
9
|
+
requires_secrets: []
|
|
10
|
+
requires_tools: []
|
|
11
|
+
metadata:
|
|
12
|
+
agentos:
|
|
13
|
+
emoji: "\U0001F6E1"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# HITL Safety Controls
|
|
17
|
+
|
|
18
|
+
You have access to AgentOS human-in-the-loop (HITL) safety controls. These gate dangerous or irreversible actions behind an approval step — either a human operator, an LLM judge, or a policy-based auto-decision — before execution proceeds.
|
|
19
|
+
|
|
20
|
+
## When to Use HITL
|
|
21
|
+
|
|
22
|
+
Request approval before any action that is:
|
|
23
|
+
|
|
24
|
+
- **Destructive** — deleting files, dropping database tables, revoking credentials
|
|
25
|
+
- **Irreversible** — sending emails, publishing posts, executing financial transactions
|
|
26
|
+
- **Expensive** — spawning large compute jobs, calling premium APIs with high token cost
|
|
27
|
+
- **Sensitive** — accessing PII, modifying security settings, changing permissions
|
|
28
|
+
- **External** — calling third-party APIs that have side effects (webhooks, payments)
|
|
29
|
+
|
|
30
|
+
If the agent's security tier is **paranoid**, every tool invocation goes through HITL. At **strict**, destructive and external actions require approval. At **balanced** and below, HITL is opt-in per tool or workflow.
|
|
31
|
+
|
|
32
|
+
## The Six HITL Handlers
|
|
33
|
+
|
|
34
|
+
Import handlers from the top-level namespace:
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { hitl } from '@framers/agentos';
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### hitl.autoApprove()
|
|
41
|
+
Always approves. Use only in development, testing, or when the security tier is **permissive/dangerous** and you trust all tool inputs.
|
|
42
|
+
|
|
43
|
+
### hitl.autoReject(reason?)
|
|
44
|
+
Always denies with an optional reason string. Useful for locking down specific tools entirely.
|
|
45
|
+
|
|
46
|
+
### hitl.cli()
|
|
47
|
+
Prompts the human operator in the terminal for a yes/no decision. Default handler when running `wunderland chat` interactively.
|
|
48
|
+
|
|
49
|
+
### hitl.webhook(url)
|
|
50
|
+
POSTs the approval request to an external URL and waits for a JSON response with `{ approved: boolean, reason?: string }`. Use for custom dashboards or external approval systems.
|
|
51
|
+
|
|
52
|
+
### hitl.slack({ channel, token })
|
|
53
|
+
Sends an approval request to a Slack channel and waits for a reaction or thread reply. In v1, defaults to auto-approve after notification.
|
|
54
|
+
|
|
55
|
+
### hitl.llmJudge({ model?, provider?, criteria?, confidenceThreshold?, fallback?, apiKey? })
|
|
56
|
+
Routes the approval decision through an LLM. The judge evaluates the pending action against the provided criteria string and returns approve/reject with a confidence score. When the confidence is below `confidenceThreshold` (default 0.7), the judge falls back to `fallback` (default: auto-reject).
|
|
57
|
+
|
|
58
|
+
**Usage in agency():**
|
|
59
|
+
```typescript
|
|
60
|
+
agency({
|
|
61
|
+
hitl: {
|
|
62
|
+
handler: hitl.llmJudge({
|
|
63
|
+
model: 'gpt-4o-mini',
|
|
64
|
+
criteria: 'Is this action safe and relevant to the user request?',
|
|
65
|
+
confidenceThreshold: 0.7,
|
|
66
|
+
}),
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Usage in CLI:**
|
|
72
|
+
```bash
|
|
73
|
+
wunderland chat --llm-judge
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Usage in agent.config.json:**
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"hitl": {
|
|
80
|
+
"mode": "llm-judge"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Guardrail Overrides
|
|
86
|
+
|
|
87
|
+
When `guardrailOverride` is `true` (the default), guardrails run **after** HITL approval and can veto actions that passed the approval gate. This provides defense-in-depth: even if a human or LLM judge approves an action, built-in safety checks still apply.
|
|
88
|
+
|
|
89
|
+
Built-in post-approval guardrail checks:
|
|
90
|
+
|
|
91
|
+
- **code-safety** — detects destructive shell patterns (`rm -rf /`, `DROP TABLE`, `FORMAT C:`)
|
|
92
|
+
- **pii-redaction** — detects SSNs, credit card numbers, and other PII in tool arguments
|
|
93
|
+
|
|
94
|
+
Even auto-approved actions (via `hitl.autoApprove()`) are checked when `guardrailOverride` is enabled.
|
|
95
|
+
|
|
96
|
+
**Disable guardrail overrides:**
|
|
97
|
+
```typescript
|
|
98
|
+
// In API
|
|
99
|
+
agency({ hitl: { guardrailOverride: false } });
|
|
100
|
+
```
|
|
101
|
+
```bash
|
|
102
|
+
# In CLI
|
|
103
|
+
wunderland chat --no-guardrail-override
|
|
104
|
+
```
|
|
105
|
+
```json
|
|
106
|
+
// In agent.config.json
|
|
107
|
+
{ "hitl": { "guardrailOverride": false } }
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## humanNode in Graph Orchestration
|
|
111
|
+
|
|
112
|
+
When building agent graphs with AgentOS orchestration, use `humanNode()` to insert approval gates:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { humanNode } from '@framers/agentos/orchestration';
|
|
116
|
+
|
|
117
|
+
humanNode({
|
|
118
|
+
prompt: 'Deploy to production?',
|
|
119
|
+
timeout: 300000, // 5 minutes
|
|
120
|
+
onTimeout: 'reject', // what happens when timeout expires
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### humanNode Options
|
|
125
|
+
|
|
126
|
+
| Option | Type | Description |
|
|
127
|
+
|--------|------|-------------|
|
|
128
|
+
| `prompt` | `string` | The question shown to the approver |
|
|
129
|
+
| `autoAccept` | `boolean` | Skip human, always approve |
|
|
130
|
+
| `autoReject` | `boolean` | Always deny (with optional `reason`) |
|
|
131
|
+
| `judge` | `{ model, criteria, confidenceThreshold }` | Delegate decision to an LLM judge |
|
|
132
|
+
| `onTimeout` | `'accept' \| 'reject' \| 'error'` | Behavior when timeout expires |
|
|
133
|
+
| `timeout` | `number` | Milliseconds before onTimeout fires |
|
|
134
|
+
|
|
135
|
+
**LLM judge in a graph node:**
|
|
136
|
+
```typescript
|
|
137
|
+
humanNode({
|
|
138
|
+
prompt: 'Deploy to production?',
|
|
139
|
+
judge: {
|
|
140
|
+
model: 'gpt-4o-mini',
|
|
141
|
+
criteria: 'Is this deployment safe given the current test results?',
|
|
142
|
+
confidenceThreshold: 0.8,
|
|
143
|
+
},
|
|
144
|
+
onTimeout: 'reject',
|
|
145
|
+
timeout: 300000,
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## The Approval Flow
|
|
150
|
+
|
|
151
|
+
The full execution path for any HITL-gated action:
|
|
152
|
+
|
|
153
|
+
1. **Tool invocation requested** — the agent wants to call a tool
|
|
154
|
+
2. **HITL decision** — the configured handler (human, LLM judge, auto) evaluates the request
|
|
155
|
+
3. **Guardrail check** — if `guardrailOverride` is true, post-approval guardrails scan the action
|
|
156
|
+
4. **Execute or deny** — the tool runs only if both HITL and guardrails approve
|
|
157
|
+
|
|
158
|
+
If either step rejects, the agent receives a denial message with a reason and can adjust its approach.
|
|
159
|
+
|
|
160
|
+
## Choosing the Right Handler
|
|
161
|
+
|
|
162
|
+
| Scenario | Recommended Handler |
|
|
163
|
+
|----------|-------------------|
|
|
164
|
+
| Development / testing | `hitl.autoApprove()` |
|
|
165
|
+
| Interactive CLI session | `hitl.cli()` |
|
|
166
|
+
| Production with human oversight | `hitl.webhook(url)` or `hitl.slack(...)` |
|
|
167
|
+
| High-volume autonomous agent | `hitl.llmJudge(...)` |
|
|
168
|
+
| Locked-down tool | `hitl.autoReject('Tool disabled')` |
|
|
169
|
+
|
|
170
|
+
## Security Tier Interaction
|
|
171
|
+
|
|
172
|
+
- **Dangerous / Permissive** — HITL is opt-in; most tools auto-approve
|
|
173
|
+
- **Balanced** — HITL gates destructive tools (file delete, shell execute with dangerous patterns)
|
|
174
|
+
- **Strict** — HITL gates all external and write tools; only read-only tools skip approval
|
|
175
|
+
- **Paranoid** — every tool invocation goes through HITL, no exceptions
|
|
176
|
+
|
|
177
|
+
Set the security tier in `agent.config.json`:
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"security": {
|
|
181
|
+
"tier": "balanced"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Or programmatically:
|
|
187
|
+
```typescript
|
|
188
|
+
import { SecurityTiers } from '@framers/agentos/safety/runtime';
|
|
189
|
+
agency({ security: { tier: SecurityTiers.BALANCED } });
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Best Practices
|
|
193
|
+
|
|
194
|
+
- **Default to guardrailOverride: true** — defense-in-depth catches what humans miss
|
|
195
|
+
- **Use LLM judge for high-volume flows** — humans cannot review hundreds of requests per minute
|
|
196
|
+
- **Set meaningful criteria** — vague criteria like "is this ok?" produce unreliable judge decisions
|
|
197
|
+
- **Always set onTimeout** — hanging approval gates block the entire agent pipeline
|
|
198
|
+
- **Combine with PII redaction** — ensure tool arguments are scanned for leaked secrets before execution
|
|
199
|
+
- **Log all decisions** — HITL decisions are audit-logged; review them periodically for pattern analysis
|
|
200
|
+
- **Escalate on low confidence** — configure the LLM judge fallback to escalate to a human when confidence is low rather than auto-rejecting
|
|
@@ -49,6 +49,10 @@ Redact PII from text and return the sanitized version. Supports styles:
|
|
|
49
49
|
- If a user explicitly asks you to include their name/email, respect that —
|
|
50
50
|
the guardrail handles involuntary leakage, not intentional sharing
|
|
51
51
|
|
|
52
|
+
## Post-Approval Guardrail Override
|
|
53
|
+
|
|
54
|
+
When HITL is enabled with `guardrailOverride: true` (the default), PII redaction runs as a post-approval guardrail. Tool arguments that pass HITL approval (human or LLM judge) are still scanned for PII before execution. This catches cases where a human approves a tool call without noticing that the arguments contain SSNs, credit card numbers, or other sensitive data. See the **hitl-safety** skill for full HITL configuration.
|
|
55
|
+
|
|
52
56
|
## Constraints
|
|
53
57
|
|
|
54
58
|
- NER model (~110MB) loads lazily on first detection of name-like tokens
|
|
@@ -103,6 +103,19 @@ You are a system operations agent. You safely execute CLI commands, manage crede
|
|
|
103
103
|
5. Check for errors in exit codes and stderr
|
|
104
104
|
6. Deploy using cloud-deployment tools if build succeeds
|
|
105
105
|
|
|
106
|
+
## HITL and Guardrail Overrides
|
|
107
|
+
|
|
108
|
+
CLI executor commands are subject to HITL (human-in-the-loop) approval when the agent's security tier requires it. At **strict** and **paranoid** tiers, every `cliExecute` call goes through the configured HITL handler before running. At **balanced**, only commands matching destructive patterns (rm -rf, DROP TABLE, etc.) trigger approval.
|
|
109
|
+
|
|
110
|
+
Even after HITL approval, **guardrail overrides** (enabled by default) perform a post-approval safety scan on the command. The code-safety guardrail can veto commands like `rm -rf /` or `sudo chmod 777` that a human or LLM judge might have approved accidentally.
|
|
111
|
+
|
|
112
|
+
To use an LLM judge instead of a human for CLI approvals:
|
|
113
|
+
```bash
|
|
114
|
+
wunderland chat --llm-judge
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
See the **hitl-safety** skill for full HITL handler configuration.
|
|
118
|
+
|
|
106
119
|
## Best Practices
|
|
107
120
|
|
|
108
121
|
- **Least privilege** — use the most restrictive security tier that allows the needed operations
|
package/registry.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0.0",
|
|
3
|
-
"updated": "2026-03-
|
|
3
|
+
"updated": "2026-03-30T11:33:50.828Z",
|
|
4
4
|
"categories": {
|
|
5
5
|
"curated": [
|
|
6
6
|
"1password",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"google-cloud-tts",
|
|
35
35
|
"grounding-guard",
|
|
36
36
|
"healthcheck",
|
|
37
|
+
"hitl-safety",
|
|
37
38
|
"image-editing",
|
|
38
39
|
"image-gen",
|
|
39
40
|
"instagram-bot",
|
|
@@ -99,7 +100,7 @@
|
|
|
99
100
|
"namespace": "wunderland",
|
|
100
101
|
"verified": true,
|
|
101
102
|
"source": "curated",
|
|
102
|
-
"verifiedAt": "2026-03-
|
|
103
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
103
104
|
"keywords": [
|
|
104
105
|
"1password",
|
|
105
106
|
"passwords",
|
|
@@ -144,7 +145,7 @@
|
|
|
144
145
|
"namespace": "wunderland",
|
|
145
146
|
"verified": true,
|
|
146
147
|
"source": "curated",
|
|
147
|
-
"verifiedAt": "2026-03-
|
|
148
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
148
149
|
"keywords": [
|
|
149
150
|
"accounts",
|
|
150
151
|
"credentials",
|
|
@@ -180,7 +181,7 @@
|
|
|
180
181
|
"namespace": "wunderland",
|
|
181
182
|
"verified": true,
|
|
182
183
|
"source": "curated",
|
|
183
|
-
"verifiedAt": "2026-03-
|
|
184
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
184
185
|
"keywords": [
|
|
185
186
|
"agent",
|
|
186
187
|
"config",
|
|
@@ -201,7 +202,7 @@
|
|
|
201
202
|
"namespace": "wunderland",
|
|
202
203
|
"verified": true,
|
|
203
204
|
"source": "curated",
|
|
204
|
-
"verifiedAt": "2026-03-
|
|
205
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
205
206
|
"keywords": [
|
|
206
207
|
"voice",
|
|
207
208
|
"tts",
|
|
@@ -232,7 +233,7 @@
|
|
|
232
233
|
"namespace": "wunderland",
|
|
233
234
|
"verified": true,
|
|
234
235
|
"source": "curated",
|
|
235
|
-
"verifiedAt": "2026-03-
|
|
236
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
236
237
|
"keywords": [
|
|
237
238
|
"apple-notes",
|
|
238
239
|
"macos",
|
|
@@ -266,7 +267,7 @@
|
|
|
266
267
|
"namespace": "wunderland",
|
|
267
268
|
"verified": true,
|
|
268
269
|
"source": "curated",
|
|
269
|
-
"verifiedAt": "2026-03-
|
|
270
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
270
271
|
"keywords": [
|
|
271
272
|
"apple-reminders",
|
|
272
273
|
"macos",
|
|
@@ -301,7 +302,7 @@
|
|
|
301
302
|
"namespace": "wunderland",
|
|
302
303
|
"verified": true,
|
|
303
304
|
"source": "curated",
|
|
304
|
-
"verifiedAt": "2026-03-
|
|
305
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
305
306
|
"keywords": [
|
|
306
307
|
"audio",
|
|
307
308
|
"music",
|
|
@@ -328,7 +329,7 @@
|
|
|
328
329
|
"namespace": "wunderland",
|
|
329
330
|
"verified": true,
|
|
330
331
|
"source": "curated",
|
|
331
|
-
"verifiedAt": "2026-03-
|
|
332
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
332
333
|
"keywords": [
|
|
333
334
|
"blog",
|
|
334
335
|
"publishing",
|
|
@@ -372,7 +373,7 @@
|
|
|
372
373
|
"namespace": "wunderland",
|
|
373
374
|
"verified": true,
|
|
374
375
|
"source": "curated",
|
|
375
|
-
"verifiedAt": "2026-03-
|
|
376
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
376
377
|
"keywords": [
|
|
377
378
|
"bluesky",
|
|
378
379
|
"social-media",
|
|
@@ -412,7 +413,7 @@
|
|
|
412
413
|
"namespace": "wunderland",
|
|
413
414
|
"verified": true,
|
|
414
415
|
"source": "curated",
|
|
415
|
-
"verifiedAt": "2026-03-
|
|
416
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
416
417
|
"keywords": [
|
|
417
418
|
"channels",
|
|
418
419
|
"messaging",
|
|
@@ -437,7 +438,7 @@
|
|
|
437
438
|
"namespace": "wunderland",
|
|
438
439
|
"verified": true,
|
|
439
440
|
"source": "curated",
|
|
440
|
-
"verifiedAt": "2026-03-
|
|
441
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
441
442
|
"keywords": [
|
|
442
443
|
"shell",
|
|
443
444
|
"cli",
|
|
@@ -477,7 +478,7 @@
|
|
|
477
478
|
"namespace": "wunderland",
|
|
478
479
|
"verified": true,
|
|
479
480
|
"source": "curated",
|
|
480
|
-
"verifiedAt": "2026-03-
|
|
481
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
481
482
|
"keywords": [
|
|
482
483
|
"cloud",
|
|
483
484
|
"deployment",
|
|
@@ -508,7 +509,7 @@
|
|
|
508
509
|
"namespace": "wunderland",
|
|
509
510
|
"verified": true,
|
|
510
511
|
"source": "curated",
|
|
511
|
-
"verifiedAt": "2026-03-
|
|
512
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
512
513
|
"keywords": [
|
|
513
514
|
"cloud",
|
|
514
515
|
"devops",
|
|
@@ -535,7 +536,7 @@
|
|
|
535
536
|
"namespace": "wunderland",
|
|
536
537
|
"verified": true,
|
|
537
538
|
"source": "curated",
|
|
538
|
-
"verifiedAt": "2026-03-
|
|
539
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
539
540
|
"keywords": [
|
|
540
541
|
"guardrails",
|
|
541
542
|
"code-safety",
|
|
@@ -563,7 +564,7 @@
|
|
|
563
564
|
"namespace": "wunderland",
|
|
564
565
|
"verified": true,
|
|
565
566
|
"source": "curated",
|
|
566
|
-
"verifiedAt": "2026-03-
|
|
567
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
567
568
|
"keywords": [
|
|
568
569
|
"coding",
|
|
569
570
|
"programming",
|
|
@@ -590,7 +591,7 @@
|
|
|
590
591
|
"namespace": "wunderland",
|
|
591
592
|
"verified": true,
|
|
592
593
|
"source": "curated",
|
|
593
|
-
"verifiedAt": "2026-03-
|
|
594
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
594
595
|
"keywords": [
|
|
595
596
|
"clearbit",
|
|
596
597
|
"company",
|
|
@@ -622,7 +623,7 @@
|
|
|
622
623
|
"namespace": "wunderland",
|
|
623
624
|
"verified": true,
|
|
624
625
|
"source": "curated",
|
|
625
|
-
"verifiedAt": "2026-03-
|
|
626
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
626
627
|
"keywords": [
|
|
627
628
|
"content",
|
|
628
629
|
"writing",
|
|
@@ -652,7 +653,7 @@
|
|
|
652
653
|
"namespace": "wunderland",
|
|
653
654
|
"verified": true,
|
|
654
655
|
"source": "curated",
|
|
655
|
-
"verifiedAt": "2026-03-
|
|
656
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
656
657
|
"keywords": [
|
|
657
658
|
"research",
|
|
658
659
|
"investigation",
|
|
@@ -690,7 +691,7 @@
|
|
|
690
691
|
"namespace": "wunderland",
|
|
691
692
|
"verified": true,
|
|
692
693
|
"source": "curated",
|
|
693
|
-
"verifiedAt": "2026-03-
|
|
694
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
694
695
|
"keywords": [
|
|
695
696
|
"voice",
|
|
696
697
|
"diarization",
|
|
@@ -715,7 +716,7 @@
|
|
|
715
716
|
"namespace": "wunderland",
|
|
716
717
|
"verified": true,
|
|
717
718
|
"source": "curated",
|
|
718
|
-
"verifiedAt": "2026-03-
|
|
719
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
719
720
|
"keywords": [
|
|
720
721
|
"discord",
|
|
721
722
|
"messaging",
|
|
@@ -743,7 +744,7 @@
|
|
|
743
744
|
"namespace": "wunderland",
|
|
744
745
|
"verified": true,
|
|
745
746
|
"source": "curated",
|
|
746
|
-
"verifiedAt": "2026-03-
|
|
747
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
747
748
|
"keywords": [
|
|
748
749
|
"document",
|
|
749
750
|
"export",
|
|
@@ -778,7 +779,7 @@
|
|
|
778
779
|
"namespace": "wunderland",
|
|
779
780
|
"verified": true,
|
|
780
781
|
"source": "curated",
|
|
781
|
-
"verifiedAt": "2026-03-
|
|
782
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
782
783
|
"metadata": {
|
|
783
784
|
"primaryEnv": "INTERNAL_API_SECRET",
|
|
784
785
|
"emoji": "📧",
|
|
@@ -819,7 +820,7 @@
|
|
|
819
820
|
"namespace": "wunderland",
|
|
820
821
|
"verified": true,
|
|
821
822
|
"source": "curated",
|
|
822
|
-
"verifiedAt": "2026-03-
|
|
823
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
823
824
|
"keywords": [
|
|
824
825
|
"emergent",
|
|
825
826
|
"tools",
|
|
@@ -856,7 +857,7 @@
|
|
|
856
857
|
"namespace": "wunderland",
|
|
857
858
|
"verified": true,
|
|
858
859
|
"source": "curated",
|
|
859
|
-
"verifiedAt": "2026-03-
|
|
860
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
860
861
|
"keywords": [
|
|
861
862
|
"voice",
|
|
862
863
|
"endpointing",
|
|
@@ -882,7 +883,7 @@
|
|
|
882
883
|
"namespace": "wunderland",
|
|
883
884
|
"verified": true,
|
|
884
885
|
"source": "curated",
|
|
885
|
-
"verifiedAt": "2026-03-
|
|
886
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
886
887
|
"keywords": [
|
|
887
888
|
"facebook",
|
|
888
889
|
"social-media",
|
|
@@ -921,7 +922,7 @@
|
|
|
921
922
|
"namespace": "wunderland",
|
|
922
923
|
"verified": true,
|
|
923
924
|
"source": "curated",
|
|
924
|
-
"verifiedAt": "2026-03-
|
|
925
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
925
926
|
"keywords": [
|
|
926
927
|
"git",
|
|
927
928
|
"version-control",
|
|
@@ -975,7 +976,7 @@
|
|
|
975
976
|
"namespace": "wunderland",
|
|
976
977
|
"verified": true,
|
|
977
978
|
"source": "curated",
|
|
978
|
-
"verifiedAt": "2026-03-
|
|
979
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
979
980
|
"keywords": [
|
|
980
981
|
"github",
|
|
981
982
|
"git",
|
|
@@ -1034,7 +1035,7 @@
|
|
|
1034
1035
|
"namespace": "wunderland",
|
|
1035
1036
|
"verified": true,
|
|
1036
1037
|
"source": "curated",
|
|
1037
|
-
"verifiedAt": "2026-03-
|
|
1038
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1038
1039
|
"keywords": [
|
|
1039
1040
|
"voice",
|
|
1040
1041
|
"stt",
|
|
@@ -1063,7 +1064,7 @@
|
|
|
1063
1064
|
"namespace": "wunderland",
|
|
1064
1065
|
"verified": true,
|
|
1065
1066
|
"source": "curated",
|
|
1066
|
-
"verifiedAt": "2026-03-
|
|
1067
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1067
1068
|
"keywords": [
|
|
1068
1069
|
"voice",
|
|
1069
1070
|
"tts",
|
|
@@ -1092,7 +1093,7 @@
|
|
|
1092
1093
|
"namespace": "wunderland",
|
|
1093
1094
|
"verified": true,
|
|
1094
1095
|
"source": "curated",
|
|
1095
|
-
"verifiedAt": "2026-03-
|
|
1096
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1096
1097
|
"keywords": [
|
|
1097
1098
|
"guardrails",
|
|
1098
1099
|
"hallucination",
|
|
@@ -1120,7 +1121,7 @@
|
|
|
1120
1121
|
"namespace": "wunderland",
|
|
1121
1122
|
"verified": true,
|
|
1122
1123
|
"source": "curated",
|
|
1123
|
-
"verifiedAt": "2026-03-
|
|
1124
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1124
1125
|
"keywords": [
|
|
1125
1126
|
"monitoring",
|
|
1126
1127
|
"health",
|
|
@@ -1142,6 +1143,30 @@
|
|
|
1142
1143
|
}
|
|
1143
1144
|
}
|
|
1144
1145
|
},
|
|
1146
|
+
{
|
|
1147
|
+
"id": "com.framers.skill.hitl-safety",
|
|
1148
|
+
"name": "hitl-safety",
|
|
1149
|
+
"displayName": "hitl-safety",
|
|
1150
|
+
"version": "1.0.0",
|
|
1151
|
+
"path": "registry/curated/hitl-safety",
|
|
1152
|
+
"description": "Human-in-the-loop safety controls — approval routing via human, LLM judge, or auto-approve with guardrail overrides.",
|
|
1153
|
+
"category": "safety",
|
|
1154
|
+
"namespace": "wunderland",
|
|
1155
|
+
"verified": true,
|
|
1156
|
+
"source": "curated",
|
|
1157
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1158
|
+
"keywords": [
|
|
1159
|
+
"hitl",
|
|
1160
|
+
"approval",
|
|
1161
|
+
"llm-judge",
|
|
1162
|
+
"guardrails",
|
|
1163
|
+
"safety",
|
|
1164
|
+
"human-in-the-loop"
|
|
1165
|
+
],
|
|
1166
|
+
"metadata": {
|
|
1167
|
+
"emoji": "🛡"
|
|
1168
|
+
}
|
|
1169
|
+
},
|
|
1145
1170
|
{
|
|
1146
1171
|
"id": "com.framers.skill.image-editing",
|
|
1147
1172
|
"name": "image-editing",
|
|
@@ -1153,7 +1178,7 @@
|
|
|
1153
1178
|
"namespace": "wunderland",
|
|
1154
1179
|
"verified": true,
|
|
1155
1180
|
"source": "curated",
|
|
1156
|
-
"verifiedAt": "2026-03-
|
|
1181
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1157
1182
|
"keywords": [
|
|
1158
1183
|
"image",
|
|
1159
1184
|
"editing",
|
|
@@ -1174,7 +1199,7 @@
|
|
|
1174
1199
|
"namespace": "wunderland",
|
|
1175
1200
|
"verified": true,
|
|
1176
1201
|
"source": "curated",
|
|
1177
|
-
"verifiedAt": "2026-03-
|
|
1202
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1178
1203
|
"keywords": [
|
|
1179
1204
|
"image-generation",
|
|
1180
1205
|
"ai-art",
|
|
@@ -1207,7 +1232,7 @@
|
|
|
1207
1232
|
"namespace": "wunderland",
|
|
1208
1233
|
"verified": true,
|
|
1209
1234
|
"source": "curated",
|
|
1210
|
-
"verifiedAt": "2026-03-
|
|
1235
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1211
1236
|
"keywords": [
|
|
1212
1237
|
"instagram",
|
|
1213
1238
|
"social-media",
|
|
@@ -1245,7 +1270,7 @@
|
|
|
1245
1270
|
"namespace": "wunderland",
|
|
1246
1271
|
"verified": true,
|
|
1247
1272
|
"source": "curated",
|
|
1248
|
-
"verifiedAt": "2026-03-
|
|
1273
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1249
1274
|
"keywords": [
|
|
1250
1275
|
"widget",
|
|
1251
1276
|
"interactive",
|
|
@@ -1276,7 +1301,7 @@
|
|
|
1276
1301
|
"namespace": "wunderland",
|
|
1277
1302
|
"verified": true,
|
|
1278
1303
|
"source": "curated",
|
|
1279
|
-
"verifiedAt": "2026-03-
|
|
1304
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1280
1305
|
"keywords": [
|
|
1281
1306
|
"linkedin",
|
|
1282
1307
|
"social-media",
|
|
@@ -1314,7 +1339,7 @@
|
|
|
1314
1339
|
"namespace": "wunderland",
|
|
1315
1340
|
"verified": true,
|
|
1316
1341
|
"source": "curated",
|
|
1317
|
-
"verifiedAt": "2026-03-
|
|
1342
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1318
1343
|
"keywords": [
|
|
1319
1344
|
"mastodon",
|
|
1320
1345
|
"fediverse",
|
|
@@ -1354,7 +1379,7 @@
|
|
|
1354
1379
|
"namespace": "wunderland",
|
|
1355
1380
|
"verified": true,
|
|
1356
1381
|
"source": "curated",
|
|
1357
|
-
"verifiedAt": "2026-03-
|
|
1382
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1358
1383
|
"keywords": [
|
|
1359
1384
|
"media",
|
|
1360
1385
|
"giphy",
|
|
@@ -1382,7 +1407,7 @@
|
|
|
1382
1407
|
"namespace": "wunderland",
|
|
1383
1408
|
"verified": true,
|
|
1384
1409
|
"source": "curated",
|
|
1385
|
-
"verifiedAt": "2026-03-
|
|
1410
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1386
1411
|
"keywords": [
|
|
1387
1412
|
"memory",
|
|
1388
1413
|
"cognitive",
|
|
@@ -1406,7 +1431,7 @@
|
|
|
1406
1431
|
"namespace": "wunderland",
|
|
1407
1432
|
"verified": true,
|
|
1408
1433
|
"source": "curated",
|
|
1409
|
-
"verifiedAt": "2026-03-
|
|
1434
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1410
1435
|
"keywords": [
|
|
1411
1436
|
"guardrails",
|
|
1412
1437
|
"safety",
|
|
@@ -1436,7 +1461,7 @@
|
|
|
1436
1461
|
"namespace": "wunderland",
|
|
1437
1462
|
"verified": true,
|
|
1438
1463
|
"source": "curated",
|
|
1439
|
-
"verifiedAt": "2026-03-
|
|
1464
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1440
1465
|
"keywords": [
|
|
1441
1466
|
"movies",
|
|
1442
1467
|
"tv",
|
|
@@ -1470,7 +1495,7 @@
|
|
|
1470
1495
|
"namespace": "wunderland",
|
|
1471
1496
|
"verified": true,
|
|
1472
1497
|
"source": "curated",
|
|
1473
|
-
"verifiedAt": "2026-03-
|
|
1498
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1474
1499
|
"keywords": [
|
|
1475
1500
|
"rag",
|
|
1476
1501
|
"multimodal",
|
|
@@ -1500,7 +1525,7 @@
|
|
|
1500
1525
|
"namespace": "wunderland",
|
|
1501
1526
|
"verified": true,
|
|
1502
1527
|
"source": "curated",
|
|
1503
|
-
"verifiedAt": "2026-03-
|
|
1528
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1504
1529
|
"keywords": [
|
|
1505
1530
|
"notion",
|
|
1506
1531
|
"wiki",
|
|
@@ -1529,7 +1554,7 @@
|
|
|
1529
1554
|
"namespace": "wunderland",
|
|
1530
1555
|
"verified": true,
|
|
1531
1556
|
"source": "curated",
|
|
1532
|
-
"verifiedAt": "2026-03-
|
|
1557
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1533
1558
|
"keywords": [
|
|
1534
1559
|
"obsidian",
|
|
1535
1560
|
"markdown",
|
|
@@ -1557,7 +1582,7 @@
|
|
|
1557
1582
|
"namespace": "wunderland",
|
|
1558
1583
|
"verified": true,
|
|
1559
1584
|
"source": "curated",
|
|
1560
|
-
"verifiedAt": "2026-03-
|
|
1585
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1561
1586
|
"keywords": [
|
|
1562
1587
|
"voice",
|
|
1563
1588
|
"wake-word",
|
|
@@ -1585,7 +1610,7 @@
|
|
|
1585
1610
|
"namespace": "wunderland",
|
|
1586
1611
|
"verified": true,
|
|
1587
1612
|
"source": "curated",
|
|
1588
|
-
"verifiedAt": "2026-03-
|
|
1613
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1589
1614
|
"keywords": [
|
|
1590
1615
|
"pii",
|
|
1591
1616
|
"privacy",
|
|
@@ -1616,7 +1641,7 @@
|
|
|
1616
1641
|
"namespace": "wunderland",
|
|
1617
1642
|
"verified": true,
|
|
1618
1643
|
"source": "curated",
|
|
1619
|
-
"verifiedAt": "2026-03-
|
|
1644
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1620
1645
|
"keywords": [
|
|
1621
1646
|
"pinterest",
|
|
1622
1647
|
"social-media",
|
|
@@ -1653,7 +1678,7 @@
|
|
|
1653
1678
|
"namespace": "wunderland",
|
|
1654
1679
|
"verified": true,
|
|
1655
1680
|
"source": "curated",
|
|
1656
|
-
"verifiedAt": "2026-03-
|
|
1681
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1657
1682
|
"keywords": [
|
|
1658
1683
|
"voice",
|
|
1659
1684
|
"tts",
|
|
@@ -1680,7 +1705,7 @@
|
|
|
1680
1705
|
"namespace": "wunderland",
|
|
1681
1706
|
"verified": true,
|
|
1682
1707
|
"source": "curated",
|
|
1683
|
-
"verifiedAt": "2026-03-
|
|
1708
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1684
1709
|
"keywords": [
|
|
1685
1710
|
"voice",
|
|
1686
1711
|
"wake-word",
|
|
@@ -1711,7 +1736,7 @@
|
|
|
1711
1736
|
"namespace": "wunderland",
|
|
1712
1737
|
"verified": true,
|
|
1713
1738
|
"source": "curated",
|
|
1714
|
-
"verifiedAt": "2026-03-
|
|
1739
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1715
1740
|
"keywords": [
|
|
1716
1741
|
"productivity",
|
|
1717
1742
|
"email",
|
|
@@ -1738,7 +1763,7 @@
|
|
|
1738
1763
|
"namespace": "wunderland",
|
|
1739
1764
|
"verified": true,
|
|
1740
1765
|
"source": "curated",
|
|
1741
|
-
"verifiedAt": "2026-03-
|
|
1766
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1742
1767
|
"keywords": [
|
|
1743
1768
|
"reddit",
|
|
1744
1769
|
"social-media",
|
|
@@ -1779,7 +1804,7 @@
|
|
|
1779
1804
|
"namespace": "wunderland",
|
|
1780
1805
|
"verified": true,
|
|
1781
1806
|
"source": "curated",
|
|
1782
|
-
"verifiedAt": "2026-03-
|
|
1807
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1783
1808
|
"keywords": [
|
|
1784
1809
|
"research",
|
|
1785
1810
|
"web-search",
|
|
@@ -1805,7 +1830,7 @@
|
|
|
1805
1830
|
"namespace": "wunderland",
|
|
1806
1831
|
"verified": true,
|
|
1807
1832
|
"source": "curated",
|
|
1808
|
-
"verifiedAt": "2026-03-
|
|
1833
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1809
1834
|
"keywords": [
|
|
1810
1835
|
"seo",
|
|
1811
1836
|
"link-building",
|
|
@@ -1840,7 +1865,7 @@
|
|
|
1840
1865
|
"namespace": "wunderland",
|
|
1841
1866
|
"verified": true,
|
|
1842
1867
|
"source": "curated",
|
|
1843
|
-
"verifiedAt": "2026-03-
|
|
1868
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1844
1869
|
"keywords": [
|
|
1845
1870
|
"deploy",
|
|
1846
1871
|
"cloud",
|
|
@@ -1876,7 +1901,7 @@
|
|
|
1876
1901
|
"namespace": "wunderland",
|
|
1877
1902
|
"verified": true,
|
|
1878
1903
|
"source": "curated",
|
|
1879
|
-
"verifiedAt": "2026-03-
|
|
1904
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1880
1905
|
"keywords": [
|
|
1881
1906
|
"slack",
|
|
1882
1907
|
"messaging",
|
|
@@ -1908,7 +1933,7 @@
|
|
|
1908
1933
|
"namespace": "wunderland",
|
|
1909
1934
|
"verified": true,
|
|
1910
1935
|
"source": "curated",
|
|
1911
|
-
"verifiedAt": "2026-03-
|
|
1936
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1912
1937
|
"keywords": [
|
|
1913
1938
|
"social-media",
|
|
1914
1939
|
"automation",
|
|
@@ -1936,7 +1961,7 @@
|
|
|
1936
1961
|
"namespace": "wunderland",
|
|
1937
1962
|
"verified": true,
|
|
1938
1963
|
"source": "curated",
|
|
1939
|
-
"verifiedAt": "2026-03-
|
|
1964
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z"
|
|
1940
1965
|
},
|
|
1941
1966
|
{
|
|
1942
1967
|
"id": "com.framers.skill.spotify-player",
|
|
@@ -1949,7 +1974,7 @@
|
|
|
1949
1974
|
"namespace": "wunderland",
|
|
1950
1975
|
"verified": true,
|
|
1951
1976
|
"source": "curated",
|
|
1952
|
-
"verifiedAt": "2026-03-
|
|
1977
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1953
1978
|
"keywords": [
|
|
1954
1979
|
"spotify",
|
|
1955
1980
|
"music",
|
|
@@ -1984,7 +2009,7 @@
|
|
|
1984
2009
|
"namespace": "wunderland",
|
|
1985
2010
|
"verified": true,
|
|
1986
2011
|
"source": "curated",
|
|
1987
|
-
"verifiedAt": "2026-03-
|
|
2012
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
1988
2013
|
"keywords": [
|
|
1989
2014
|
"voice",
|
|
1990
2015
|
"stt",
|
|
@@ -2014,7 +2039,7 @@
|
|
|
2014
2039
|
"namespace": "wunderland",
|
|
2015
2040
|
"verified": true,
|
|
2016
2041
|
"source": "curated",
|
|
2017
|
-
"verifiedAt": "2026-03-
|
|
2042
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2018
2043
|
"keywords": [
|
|
2019
2044
|
"voice",
|
|
2020
2045
|
"stt",
|
|
@@ -2045,7 +2070,7 @@
|
|
|
2045
2070
|
"namespace": "wunderland",
|
|
2046
2071
|
"verified": true,
|
|
2047
2072
|
"source": "curated",
|
|
2048
|
-
"verifiedAt": "2026-03-
|
|
2073
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2049
2074
|
"keywords": [
|
|
2050
2075
|
"voice",
|
|
2051
2076
|
"tts",
|
|
@@ -2075,7 +2100,7 @@
|
|
|
2075
2100
|
"namespace": "wunderland",
|
|
2076
2101
|
"verified": true,
|
|
2077
2102
|
"source": "curated",
|
|
2078
|
-
"verifiedAt": "2026-03-
|
|
2103
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2079
2104
|
"keywords": [
|
|
2080
2105
|
"voice",
|
|
2081
2106
|
"tts",
|
|
@@ -2104,7 +2129,7 @@
|
|
|
2104
2129
|
"namespace": "wunderland",
|
|
2105
2130
|
"verified": true,
|
|
2106
2131
|
"source": "curated",
|
|
2107
|
-
"verifiedAt": "2026-03-
|
|
2132
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2108
2133
|
"keywords": [
|
|
2109
2134
|
"structured-output",
|
|
2110
2135
|
"json",
|
|
@@ -2124,7 +2149,7 @@
|
|
|
2124
2149
|
"namespace": "wunderland",
|
|
2125
2150
|
"verified": true,
|
|
2126
2151
|
"source": "curated",
|
|
2127
|
-
"verifiedAt": "2026-03-
|
|
2152
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2128
2153
|
"keywords": [
|
|
2129
2154
|
"summarization",
|
|
2130
2155
|
"text-processing",
|
|
@@ -2150,7 +2175,7 @@
|
|
|
2150
2175
|
"namespace": "wunderland",
|
|
2151
2176
|
"verified": true,
|
|
2152
2177
|
"source": "curated",
|
|
2153
|
-
"verifiedAt": "2026-03-
|
|
2178
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2154
2179
|
"keywords": [
|
|
2155
2180
|
"system",
|
|
2156
2181
|
"cli",
|
|
@@ -2176,7 +2201,7 @@
|
|
|
2176
2201
|
"namespace": "wunderland",
|
|
2177
2202
|
"verified": true,
|
|
2178
2203
|
"source": "curated",
|
|
2179
|
-
"verifiedAt": "2026-03-
|
|
2204
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2180
2205
|
"keywords": [
|
|
2181
2206
|
"threads",
|
|
2182
2207
|
"social-media",
|
|
@@ -2212,7 +2237,7 @@
|
|
|
2212
2237
|
"namespace": "wunderland",
|
|
2213
2238
|
"verified": true,
|
|
2214
2239
|
"source": "curated",
|
|
2215
|
-
"verifiedAt": "2026-03-
|
|
2240
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2216
2241
|
"keywords": [
|
|
2217
2242
|
"tiktok",
|
|
2218
2243
|
"video",
|
|
@@ -2249,7 +2274,7 @@
|
|
|
2249
2274
|
"namespace": "wunderland",
|
|
2250
2275
|
"verified": true,
|
|
2251
2276
|
"source": "curated",
|
|
2252
|
-
"verifiedAt": "2026-03-
|
|
2277
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2253
2278
|
"keywords": [
|
|
2254
2279
|
"guardrails",
|
|
2255
2280
|
"topics",
|
|
@@ -2276,7 +2301,7 @@
|
|
|
2276
2301
|
"namespace": "wunderland",
|
|
2277
2302
|
"verified": true,
|
|
2278
2303
|
"source": "curated",
|
|
2279
|
-
"verifiedAt": "2026-03-
|
|
2304
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2280
2305
|
"keywords": [
|
|
2281
2306
|
"trello",
|
|
2282
2307
|
"kanban",
|
|
@@ -2309,7 +2334,7 @@
|
|
|
2309
2334
|
"namespace": "wunderland",
|
|
2310
2335
|
"verified": true,
|
|
2311
2336
|
"source": "curated",
|
|
2312
|
-
"verifiedAt": "2026-03-
|
|
2337
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2313
2338
|
"keywords": [
|
|
2314
2339
|
"twitter",
|
|
2315
2340
|
"social-media",
|
|
@@ -2352,7 +2377,7 @@
|
|
|
2352
2377
|
"namespace": "wunderland",
|
|
2353
2378
|
"verified": true,
|
|
2354
2379
|
"source": "curated",
|
|
2355
|
-
"verifiedAt": "2026-03-
|
|
2380
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2356
2381
|
"keywords": [
|
|
2357
2382
|
"video",
|
|
2358
2383
|
"generation",
|
|
@@ -2379,7 +2404,7 @@
|
|
|
2379
2404
|
"namespace": "wunderland",
|
|
2380
2405
|
"verified": true,
|
|
2381
2406
|
"source": "curated",
|
|
2382
|
-
"verifiedAt": "2026-03-
|
|
2407
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2383
2408
|
"keywords": [
|
|
2384
2409
|
"vision",
|
|
2385
2410
|
"ocr",
|
|
@@ -2402,7 +2427,7 @@
|
|
|
2402
2427
|
"namespace": "wunderland",
|
|
2403
2428
|
"verified": true,
|
|
2404
2429
|
"source": "curated",
|
|
2405
|
-
"verifiedAt": "2026-03-
|
|
2430
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2406
2431
|
"keywords": [
|
|
2407
2432
|
"voice",
|
|
2408
2433
|
"speech",
|
|
@@ -2429,7 +2454,7 @@
|
|
|
2429
2454
|
"namespace": "wunderland",
|
|
2430
2455
|
"verified": true,
|
|
2431
2456
|
"source": "curated",
|
|
2432
|
-
"verifiedAt": "2026-03-
|
|
2457
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2433
2458
|
"keywords": [
|
|
2434
2459
|
"voice",
|
|
2435
2460
|
"telephony",
|
|
@@ -2457,7 +2482,7 @@
|
|
|
2457
2482
|
"namespace": "wunderland",
|
|
2458
2483
|
"verified": true,
|
|
2459
2484
|
"source": "curated",
|
|
2460
|
-
"verifiedAt": "2026-03-
|
|
2485
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2461
2486
|
"keywords": [
|
|
2462
2487
|
"voice",
|
|
2463
2488
|
"stt",
|
|
@@ -2483,7 +2508,7 @@
|
|
|
2483
2508
|
"namespace": "wunderland",
|
|
2484
2509
|
"verified": true,
|
|
2485
2510
|
"source": "curated",
|
|
2486
|
-
"verifiedAt": "2026-03-
|
|
2511
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2487
2512
|
"keywords": [
|
|
2488
2513
|
"weather",
|
|
2489
2514
|
"forecast",
|
|
@@ -2509,7 +2534,7 @@
|
|
|
2509
2534
|
"namespace": "wunderland",
|
|
2510
2535
|
"verified": true,
|
|
2511
2536
|
"source": "curated",
|
|
2512
|
-
"verifiedAt": "2026-03-
|
|
2537
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2513
2538
|
"keywords": [
|
|
2514
2539
|
"scraping",
|
|
2515
2540
|
"browser",
|
|
@@ -2546,7 +2571,7 @@
|
|
|
2546
2571
|
"namespace": "wunderland",
|
|
2547
2572
|
"verified": true,
|
|
2548
2573
|
"source": "curated",
|
|
2549
|
-
"verifiedAt": "2026-03-
|
|
2574
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2550
2575
|
"keywords": [
|
|
2551
2576
|
"search",
|
|
2552
2577
|
"web",
|
|
@@ -2573,7 +2598,7 @@
|
|
|
2573
2598
|
"namespace": "wunderland",
|
|
2574
2599
|
"verified": true,
|
|
2575
2600
|
"source": "curated",
|
|
2576
|
-
"verifiedAt": "2026-03-
|
|
2601
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2577
2602
|
"keywords": [
|
|
2578
2603
|
"transcription",
|
|
2579
2604
|
"whisper",
|
|
@@ -2636,7 +2661,7 @@
|
|
|
2636
2661
|
"namespace": "wunderland",
|
|
2637
2662
|
"verified": true,
|
|
2638
2663
|
"source": "curated",
|
|
2639
|
-
"verifiedAt": "2026-03-
|
|
2664
|
+
"verifiedAt": "2026-03-30T11:33:50.828Z",
|
|
2640
2665
|
"keywords": [
|
|
2641
2666
|
"youtube",
|
|
2642
2667
|
"video",
|
|
@@ -2669,8 +2694,8 @@
|
|
|
2669
2694
|
"community": []
|
|
2670
2695
|
},
|
|
2671
2696
|
"stats": {
|
|
2672
|
-
"totalSkills":
|
|
2673
|
-
"curatedCount":
|
|
2697
|
+
"totalSkills": 81,
|
|
2698
|
+
"curatedCount": 81,
|
|
2674
2699
|
"communityCount": 0
|
|
2675
2700
|
}
|
|
2676
2701
|
}
|