opencode-skills-collection 2.0.214 → 2.0.216
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/bundled-skills/.antigravity-install-manifest.json +5 -1
- package/bundled-skills/bulletmind/EXAMPLES.md +49 -0
- package/bundled-skills/bulletmind/SKILL.md +147 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/frontend-api-integration-patterns/SKILL.md +342 -0
- package/bundled-skills/lambda-lang/SKILL.md +113 -0
- package/bundled-skills/notebooklm/README.md +1 -1
- package/bundled-skills/notebooklm/requirements.txt +1 -1
- package/bundled-skills/skyvern-browser-automation/SKILL.md +261 -0
- package/package.json +1 -1
- package/skills_index.json +88 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"updatedAt": "2026-04-
|
|
3
|
+
"updatedAt": "2026-04-24T02:46:16.199Z",
|
|
4
4
|
"entries": [
|
|
5
5
|
"00-andruia-consultant",
|
|
6
6
|
"007",
|
|
@@ -289,6 +289,7 @@
|
|
|
289
289
|
"bug-hunter",
|
|
290
290
|
"build",
|
|
291
291
|
"building-native-ui",
|
|
292
|
+
"bulletmind",
|
|
292
293
|
"bullmq-specialist",
|
|
293
294
|
"bun-development",
|
|
294
295
|
"burp-suite-testing",
|
|
@@ -589,6 +590,7 @@
|
|
|
589
590
|
"free-tool-strategy",
|
|
590
591
|
"freshdesk-automation",
|
|
591
592
|
"freshservice-automation",
|
|
593
|
+
"frontend-api-integration-patterns",
|
|
592
594
|
"frontend-design",
|
|
593
595
|
"frontend-dev-guidelines",
|
|
594
596
|
"frontend-developer",
|
|
@@ -758,6 +760,7 @@
|
|
|
758
760
|
"kpi-dashboard-design",
|
|
759
761
|
"kubernetes-architect",
|
|
760
762
|
"kubernetes-deployment",
|
|
763
|
+
"lambda-lang",
|
|
761
764
|
"lambdatest-agent-skills",
|
|
762
765
|
"landing-page-generator",
|
|
763
766
|
"langchain-architecture",
|
|
@@ -1201,6 +1204,7 @@
|
|
|
1201
1204
|
"skill-writer",
|
|
1202
1205
|
"skills/x402-express-wrapper",
|
|
1203
1206
|
"skin-health-analyzer",
|
|
1207
|
+
"skyvern-browser-automation",
|
|
1204
1208
|
"slack-automation",
|
|
1205
1209
|
"slack-bot-builder",
|
|
1206
1210
|
"slack-gif-creator",
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Bulletmind Output Reference
|
|
2
|
+
|
|
3
|
+
## Example 1 - Topic: Climate Change
|
|
4
|
+
|
|
5
|
+
- Climate Change
|
|
6
|
+
- Definition
|
|
7
|
+
- Long-term shift in global temperatures and weather patterns
|
|
8
|
+
- Causes
|
|
9
|
+
- Human activities
|
|
10
|
+
- Burning fossil fuels
|
|
11
|
+
- Deforestation
|
|
12
|
+
- Industrial emissions
|
|
13
|
+
- Natural factors (less dominant)
|
|
14
|
+
- Volcanic activity
|
|
15
|
+
- Solar variations
|
|
16
|
+
- Effects
|
|
17
|
+
- Rising global temperatures
|
|
18
|
+
- Melting glaciers and ice caps
|
|
19
|
+
- Sea level rise
|
|
20
|
+
- Extreme weather events
|
|
21
|
+
- Solutions
|
|
22
|
+
- Reduce carbon emissions
|
|
23
|
+
- Transition to renewable energy
|
|
24
|
+
- Reforestation
|
|
25
|
+
- Sustainable practices
|
|
26
|
+
|
|
27
|
+
## Example 2 - Topic: Operating Systems
|
|
28
|
+
|
|
29
|
+
- Operating System (OS)
|
|
30
|
+
- Definition
|
|
31
|
+
- Software that manages computer hardware and software resources and provides a platform and interface for applications to run.
|
|
32
|
+
- Core Functions
|
|
33
|
+
- Process management
|
|
34
|
+
- Handles execution of running programs
|
|
35
|
+
- Memory management
|
|
36
|
+
- Allocates and tracks memory usage
|
|
37
|
+
- File system management
|
|
38
|
+
- Organizes and stores data
|
|
39
|
+
- Device management
|
|
40
|
+
- Controls and coordinates hardware components
|
|
41
|
+
- Types
|
|
42
|
+
- Batch OS
|
|
43
|
+
- Time-sharing OS
|
|
44
|
+
- Distributed OS
|
|
45
|
+
- Real-time OS
|
|
46
|
+
- Examples
|
|
47
|
+
- Windows
|
|
48
|
+
- macOS
|
|
49
|
+
- Linux
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bulletmind
|
|
3
|
+
description: "Convert input into clean, structured, hierarchical bullet points for summarization, note-taking, and structured thinking."
|
|
4
|
+
category: writing
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
date_added: "2026-04-21"
|
|
8
|
+
author: tejasashinde
|
|
9
|
+
tags:
|
|
10
|
+
- writing
|
|
11
|
+
- summarization
|
|
12
|
+
- note-taking
|
|
13
|
+
- formatting
|
|
14
|
+
- structured-output
|
|
15
|
+
tools:
|
|
16
|
+
- claude
|
|
17
|
+
- cursor
|
|
18
|
+
- gemini
|
|
19
|
+
- codex
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Bulletmind
|
|
23
|
+
|
|
24
|
+
When active, responses remain in hierarchical bullet format with no paragraphs, no prose blocks, no drift, and only structured bullet output.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## When to Use This Skill
|
|
29
|
+
|
|
30
|
+
Transform input into a structured bullet hierarchy when the user asks for:
|
|
31
|
+
|
|
32
|
+
- Bullet-only summaries of dense text, notes, explanations, articles, or webpages
|
|
33
|
+
- Cleaned-up note-taking output with clear parent-child relationships
|
|
34
|
+
- Structured study material that is easier to scan and memorize
|
|
35
|
+
- Consistent formatting for messy or mixed bullet lists
|
|
36
|
+
|
|
37
|
+
Use this skill to enforce:
|
|
38
|
+
|
|
39
|
+
- No paragraphs or long prose
|
|
40
|
+
- Only bullets with clean indentation
|
|
41
|
+
|
|
42
|
+
This improves readability, memorization, and structured thinking for note-taking and review workflows.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Mode
|
|
47
|
+
|
|
48
|
+
Default mode: **full**. Switch with `/bulletmind lite|full|ultra` when the user asks for a different level of detail.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Intensity
|
|
53
|
+
|
|
54
|
+
| Level | Behavior |
|
|
55
|
+
| ----- | --------------------------------------------------------------------------------------------------- |
|
|
56
|
+
| lite | clean hierarchical bullets, light restructuring, preserve sentence flow |
|
|
57
|
+
| full | default strict hierarchy, balanced compression, clear grouping + splitting |
|
|
58
|
+
| ultra | deep hierarchical decomposition, aggressive splitting, high granularity, maximal structural clarity |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Bullet Structure
|
|
63
|
+
|
|
64
|
+
Use consistent indentation:
|
|
65
|
+
- Top-level idea
|
|
66
|
+
- Sub-point
|
|
67
|
+
- Detail
|
|
68
|
+
- Sub-point
|
|
69
|
+
- Next top-level idea
|
|
70
|
+
- Sub-point
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Rules
|
|
75
|
+
|
|
76
|
+
- NO paragraphs
|
|
77
|
+
- ONLY bullets `-`
|
|
78
|
+
- ALWAYS hierarchical structure
|
|
79
|
+
- GROUP related ideas under parent bullets
|
|
80
|
+
- SPLIT long sentences into smaller bullets
|
|
81
|
+
- KEEP meaning intact, no over-summarize
|
|
82
|
+
- REMOVE filler words
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Formatting
|
|
87
|
+
|
|
88
|
+
- Use `-` for all bullets
|
|
89
|
+
- Indent: 2 spaces per level
|
|
90
|
+
- Keep bullets short
|
|
91
|
+
- One idea per line
|
|
92
|
+
- No mixed symbols and no prose bridging lines
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Transformation Logic
|
|
97
|
+
|
|
98
|
+
- Paragraph -> main ideas -> top bullets
|
|
99
|
+
- Details -> nested bullets
|
|
100
|
+
- Messy notes -> cleaned hierarchy
|
|
101
|
+
- Existing bullets -> restructure + normalize depth
|
|
102
|
+
- Short input -> still convert into bullet tree
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Compression Strategy
|
|
107
|
+
|
|
108
|
+
- Remove filler words
|
|
109
|
+
- Split complex sentences
|
|
110
|
+
- Preserve key facts + relationships
|
|
111
|
+
- Do NOT flatten structure
|
|
112
|
+
- Prefer clarity over max compression
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## When Not to Use This Skill
|
|
117
|
+
|
|
118
|
+
- User requests paragraphs
|
|
119
|
+
- Creative writing tasks such as stories or essays
|
|
120
|
+
- Formats where bullets reduce clarity or violate the requested output format
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Output Rule
|
|
125
|
+
|
|
126
|
+
When the skill is active, output:
|
|
127
|
+
|
|
128
|
+
- Structured bullet hierarchy
|
|
129
|
+
- No commentary or explanation
|
|
130
|
+
|
|
131
|
+
## Limitations
|
|
132
|
+
|
|
133
|
+
- Do not use for deliverables that require prose, narrative flow, or exact source quotation.
|
|
134
|
+
- Do not preserve bullet-only formatting if a higher-priority instruction requires tables, code blocks, JSON, or paragraphs.
|
|
135
|
+
- Do not invent structure beyond the source material when the user asks for faithful summarization.
|
|
136
|
+
|
|
137
|
+
### Examples
|
|
138
|
+
|
|
139
|
+
- Refer to `EXAMPLES.md` for output templates.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Important Notes
|
|
144
|
+
|
|
145
|
+
- Prefer clarity over strict compression
|
|
146
|
+
- Avoid flattening everything into one level
|
|
147
|
+
- Maintain a logical tree structure
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Jetski/Cortex + Gemini Integration Guide
|
|
3
|
-
description: "Use antigravity-awesome-skills with Jetski/Cortex without hitting context-window overflow with 1.
|
|
3
|
+
description: "Use antigravity-awesome-skills with Jetski/Cortex without hitting context-window overflow with 1.435+ skills."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Jetski/Cortex + Gemini: safe integration with 1,1.
|
|
6
|
+
# Jetski/Cortex + Gemini: safe integration with 1,1.435+ skills
|
|
7
7
|
|
|
8
8
|
This guide shows how to integrate the `antigravity-awesome-skills` repository with an agent based on **Jetski/Cortex + Gemini** (or similar frameworks) **without exceeding the model context window**.
|
|
9
9
|
|
|
@@ -23,7 +23,7 @@ Never do:
|
|
|
23
23
|
- concatenate all `SKILL.md` content into a single system prompt;
|
|
24
24
|
- re-inject the entire library for **every** request.
|
|
25
25
|
|
|
26
|
-
With over 1,1.
|
|
26
|
+
With over 1,1.435 skills, this approach fills the context window before user messages are even added, causing truncation.
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
@@ -20,7 +20,7 @@ This example shows one way to integrate **antigravity-awesome-skills** with a Je
|
|
|
20
20
|
- How to enforce a **maximum number of skills per turn** via `maxSkillsPerTurn`.
|
|
21
21
|
- How to choose whether to **truncate or error** when too many skills are requested via `overflowBehavior`.
|
|
22
22
|
|
|
23
|
-
This pattern avoids context overflow when you have 1,
|
|
23
|
+
This pattern avoids context overflow when you have 1,435+ skills installed.
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -6,7 +6,7 @@ This document keeps the repository's GitHub-facing discovery copy aligned with t
|
|
|
6
6
|
|
|
7
7
|
Preferred positioning:
|
|
8
8
|
|
|
9
|
-
> Installable GitHub library of 1,
|
|
9
|
+
> Installable GitHub library of 1,435+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants.
|
|
10
10
|
|
|
11
11
|
Key framing:
|
|
12
12
|
|
|
@@ -20,7 +20,7 @@ Key framing:
|
|
|
20
20
|
|
|
21
21
|
Preferred description:
|
|
22
22
|
|
|
23
|
-
> Installable GitHub library of 1,
|
|
23
|
+
> Installable GitHub library of 1,435+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.
|
|
24
24
|
|
|
25
25
|
Preferred homepage:
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ Preferred homepage:
|
|
|
28
28
|
|
|
29
29
|
Preferred social preview:
|
|
30
30
|
|
|
31
|
-
- use a clean preview image that says `1,
|
|
31
|
+
- use a clean preview image that says `1,435+ Agentic Skills`;
|
|
32
32
|
- mention Claude Code, Cursor, Codex CLI, and Gemini CLI;
|
|
33
33
|
- avoid dense text and tiny logos that disappear in social cards.
|
|
34
34
|
|
|
@@ -69,7 +69,7 @@ For manual updates, you need:
|
|
|
69
69
|
The update process refreshes:
|
|
70
70
|
- Skills index (`skills_index.json`)
|
|
71
71
|
- Web app skills data (`apps\web-app\public\skills.json`)
|
|
72
|
-
- All 1,
|
|
72
|
+
- All 1,435+ skills from the skills directory
|
|
73
73
|
|
|
74
74
|
## When to Update
|
|
75
75
|
|
|
@@ -12,7 +12,7 @@ Install the library into Claude Code, then invoke focused skills directly in the
|
|
|
12
12
|
|
|
13
13
|
## Why use this repo for Claude Code
|
|
14
14
|
|
|
15
|
-
- It includes 1,
|
|
15
|
+
- It includes 1,435+ skills instead of a narrow single-domain starter pack.
|
|
16
16
|
- It supports the standard `.claude/skills/` path and the Claude Code plugin marketplace flow.
|
|
17
17
|
- It also ships generated bundle plugins so teams can install focused packs like `Essentials` or `Security Developer` from the marketplace metadata.
|
|
18
18
|
- It includes onboarding docs, bundles, and workflows so new users do not need to guess where to begin.
|
|
@@ -12,7 +12,7 @@ Install into the Gemini skills path, then ask Gemini to apply one skill at a tim
|
|
|
12
12
|
|
|
13
13
|
- It installs directly into the expected Gemini skills path.
|
|
14
14
|
- It includes both core software engineering skills and deeper agent/LLM-oriented skills.
|
|
15
|
-
- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,
|
|
15
|
+
- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,435+ files.
|
|
16
16
|
- It is useful whether you want a broad internal skill library or a single repo to test many workflows quickly.
|
|
17
17
|
|
|
18
18
|
## Install Gemini CLI Skills
|
|
@@ -18,7 +18,7 @@ Kiro is AWS's agentic AI IDE that combines:
|
|
|
18
18
|
|
|
19
19
|
Kiro's agentic capabilities are enhanced by skills that provide:
|
|
20
20
|
|
|
21
|
-
- **Domain expertise** across 1,
|
|
21
|
+
- **Domain expertise** across 1,435+ specialized areas
|
|
22
22
|
- **Best practices** from Anthropic, OpenAI, Google, Microsoft, and AWS
|
|
23
23
|
- **Workflow automation** for common development tasks
|
|
24
24
|
- **AWS-specific patterns** for serverless, infrastructure, and cloud architecture
|
|
@@ -14,7 +14,7 @@ If you came in through a **Claude Code** or **Codex** plugin instead of a full l
|
|
|
14
14
|
|
|
15
15
|
When you ran `npx antigravity-awesome-skills` or cloned the repository, you:
|
|
16
16
|
|
|
17
|
-
✅ **Downloaded 1,
|
|
17
|
+
✅ **Downloaded 1,435+ skill files** to your computer (default: `~/.gemini/antigravity/skills/`; or a custom path like `~/.agent/skills/` if you used `--path`)
|
|
18
18
|
✅ **Made them available** to your AI assistant
|
|
19
19
|
❌ **Did NOT enable them all automatically** (they're just sitting there, waiting)
|
|
20
20
|
|
|
@@ -34,7 +34,7 @@ Bundles are **curated groups** of skills organized by role. They help you decide
|
|
|
34
34
|
|
|
35
35
|
**Analogy:**
|
|
36
36
|
|
|
37
|
-
- You installed a toolbox with 1,
|
|
37
|
+
- You installed a toolbox with 1,435+ tools (✅ done)
|
|
38
38
|
- Bundles are like **labeled organizer trays** saying: "If you're a carpenter, start with these 10 tools"
|
|
39
39
|
- You can either **pick skills from the tray** or install that tray as a focused marketplace bundle plugin
|
|
40
40
|
|
|
@@ -212,7 +212,7 @@ Let's actually use a skill right now. Follow these steps:
|
|
|
212
212
|
|
|
213
213
|
## Step 5: Picking Your First Skills (Practical Advice)
|
|
214
214
|
|
|
215
|
-
Don't try to use all 1,
|
|
215
|
+
Don't try to use all 1,435+ skills at once. Here's a sensible approach:
|
|
216
216
|
|
|
217
217
|
If you want a tool-specific starting point before choosing skills, use:
|
|
218
218
|
|
|
@@ -343,7 +343,7 @@ Usually no, but if your AI doesn't recognize a skill:
|
|
|
343
343
|
|
|
344
344
|
### "Can I load all skills into the model at once?"
|
|
345
345
|
|
|
346
|
-
No. Even though you have 1,
|
|
346
|
+
No. Even though you have 1,435+ skills installed locally, you should **not** concatenate every `SKILL.md` into a single system prompt or context block.
|
|
347
347
|
|
|
348
348
|
The intended pattern is:
|
|
349
349
|
|
|
@@ -34,7 +34,7 @@ antigravity-awesome-skills/
|
|
|
34
34
|
├── 📄 CONTRIBUTING.md ← Contributor workflow
|
|
35
35
|
├── 📄 CATALOG.md ← Full generated catalog
|
|
36
36
|
│
|
|
37
|
-
├── 📁 skills/ ← 1,
|
|
37
|
+
├── 📁 skills/ ← 1,435+ skills live here
|
|
38
38
|
│ │
|
|
39
39
|
│ ├── 📁 brainstorming/
|
|
40
40
|
│ │ └── 📄 SKILL.md ← Skill definition
|
|
@@ -47,7 +47,7 @@ antigravity-awesome-skills/
|
|
|
47
47
|
│ │ └── 📁 2d-games/
|
|
48
48
|
│ │ └── 📄 SKILL.md ← Nested skills also supported
|
|
49
49
|
│ │
|
|
50
|
-
│ └── ... (1,
|
|
50
|
+
│ └── ... (1,435+ total)
|
|
51
51
|
│
|
|
52
52
|
├── 📁 apps/
|
|
53
53
|
│ └── 📁 web-app/ ← Interactive browser
|
|
@@ -100,7 +100,7 @@ antigravity-awesome-skills/
|
|
|
100
100
|
|
|
101
101
|
```
|
|
102
102
|
┌─────────────────────────┐
|
|
103
|
-
│ 1,
|
|
103
|
+
│ 1,435+ SKILLS │
|
|
104
104
|
└────────────┬────────────┘
|
|
105
105
|
│
|
|
106
106
|
┌────────────────────────┼────────────────────────┐
|
|
@@ -201,7 +201,7 @@ If you want a workspace-style manual install instead, cloning into `.agent/skill
|
|
|
201
201
|
│ ├── 📁 brainstorming/ │
|
|
202
202
|
│ ├── 📁 stripe-integration/ │
|
|
203
203
|
│ ├── 📁 react-best-practices/ │
|
|
204
|
-
│ └── ... (1,
|
|
204
|
+
│ └── ... (1,435+ total) │
|
|
205
205
|
└─────────────────────────────────────────┘
|
|
206
206
|
```
|
|
207
207
|
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-api-integration-patterns
|
|
3
|
+
description: "Production-ready patterns for integrating frontend applications with backend APIs, including race condition handling, request cancellation, retry strategies, error normalization, and UI state management."
|
|
4
|
+
category: frontend
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
date_added: "2026-04-23"
|
|
8
|
+
author: avij1109
|
|
9
|
+
tags:
|
|
10
|
+
- frontend
|
|
11
|
+
- api-integration
|
|
12
|
+
- javascript
|
|
13
|
+
- react
|
|
14
|
+
- async
|
|
15
|
+
tools:
|
|
16
|
+
- claude
|
|
17
|
+
- cursor
|
|
18
|
+
- gemini
|
|
19
|
+
- codex
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Frontend API Integration Patterns
|
|
23
|
+
|
|
24
|
+
## Overview
|
|
25
|
+
|
|
26
|
+
This skill provides production-ready patterns for integrating frontend applications with backend APIs.
|
|
27
|
+
|
|
28
|
+
Most frontend issues are not caused by APIs being difficult to call, but by **incorrect handling of asynchronous behavior**—leading to race conditions, stale data, duplicated requests, and poor user experience.
|
|
29
|
+
|
|
30
|
+
This skill focuses on **correctness, resilience, and user experience**, not just making API calls work.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## When to Use This Skill
|
|
35
|
+
|
|
36
|
+
* Connecting frontend apps (React, React Native, Vue, etc.) to backend APIs
|
|
37
|
+
* Integrating ML/AI endpoints (`/predict`, `/recommend`)
|
|
38
|
+
* Handling asynchronous data in UI
|
|
39
|
+
* Fixing stale data, flickering UI, or duplicate requests
|
|
40
|
+
* Designing scalable frontend API layers
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Core Patterns
|
|
45
|
+
|
|
46
|
+
### 1. API Layer (Separation of Concerns)
|
|
47
|
+
|
|
48
|
+
Centralize API logic and normalize errors.
|
|
49
|
+
|
|
50
|
+
```js id="k1m7r2"
|
|
51
|
+
export class ApiError extends Error {
|
|
52
|
+
constructor(message, status, payload = null) {
|
|
53
|
+
super(message);
|
|
54
|
+
this.name = "ApiError";
|
|
55
|
+
this.status = status;
|
|
56
|
+
this.payload = payload;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const apiClient = async (url, options = {}) => {
|
|
61
|
+
const res = await fetch(url, {
|
|
62
|
+
headers: { "Content-Type": "application/json" },
|
|
63
|
+
...options,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
if (!res.ok) {
|
|
67
|
+
let payload = null;
|
|
68
|
+
try {
|
|
69
|
+
payload = await res.json();
|
|
70
|
+
} catch (_) {}
|
|
71
|
+
|
|
72
|
+
throw new ApiError(
|
|
73
|
+
payload?.message || "Request failed",
|
|
74
|
+
res.status,
|
|
75
|
+
payload
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// handle empty responses safely (e.g. 204 No Content)
|
|
80
|
+
if (res.status === 204) return null;
|
|
81
|
+
|
|
82
|
+
const text = await res.text();
|
|
83
|
+
return text ? JSON.parse(text) : null;
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 2. Race-Safe State Management
|
|
90
|
+
|
|
91
|
+
Prevent stale responses from overwriting fresh data.
|
|
92
|
+
|
|
93
|
+
```js id="y7p4ha"
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
let cancelled = false;
|
|
96
|
+
|
|
97
|
+
const load = async () => {
|
|
98
|
+
try {
|
|
99
|
+
setLoading(true);
|
|
100
|
+
setError(null);
|
|
101
|
+
|
|
102
|
+
const result = await getUser();
|
|
103
|
+
|
|
104
|
+
if (!cancelled) setData(result);
|
|
105
|
+
} catch (err) {
|
|
106
|
+
if (!cancelled) setError(err.message);
|
|
107
|
+
} finally {
|
|
108
|
+
if (!cancelled) setLoading(false);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
load();
|
|
113
|
+
|
|
114
|
+
return () => {
|
|
115
|
+
cancelled = true;
|
|
116
|
+
};
|
|
117
|
+
}, []);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
> Use a cancellation flag for non-fetch async logic. For network requests, prefer AbortController.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### 3. Request Cancellation (AbortController)
|
|
125
|
+
|
|
126
|
+
Cancel in-flight requests to avoid memory leaks and stale updates.
|
|
127
|
+
|
|
128
|
+
```js id="l9x2pw"
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
const controller = new AbortController();
|
|
131
|
+
|
|
132
|
+
const load = async () => {
|
|
133
|
+
try {
|
|
134
|
+
const data = await getUser({ signal: controller.signal });
|
|
135
|
+
setData(data);
|
|
136
|
+
} catch (err) {
|
|
137
|
+
if (err.name === "AbortError") return;
|
|
138
|
+
setError(err.message);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
load();
|
|
143
|
+
return () => controller.abort();
|
|
144
|
+
}, [userId]);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
### 4. Retry with Exponential Backoff
|
|
150
|
+
|
|
151
|
+
Retry only transient failures (5xx or network errors).
|
|
152
|
+
|
|
153
|
+
```js id="8n3zcf"
|
|
154
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
155
|
+
|
|
156
|
+
const fetchWithBackoff = async (fn, retries = 3, delay = 300) => {
|
|
157
|
+
try {
|
|
158
|
+
return await fn();
|
|
159
|
+
} catch (err) {
|
|
160
|
+
const isAbort = err.name === "AbortError";
|
|
161
|
+
const isHttpError = typeof err.status === "number";
|
|
162
|
+
const isRetryable = !isAbort && (!isHttpError || err.status >= 500);
|
|
163
|
+
|
|
164
|
+
if (retries <= 0 || !isRetryable) throw err;
|
|
165
|
+
|
|
166
|
+
const nextDelay = delay * 2 + Math.random() * 100;
|
|
167
|
+
await sleep(nextDelay);
|
|
168
|
+
|
|
169
|
+
return fetchWithBackoff(fn, retries - 1, nextDelay);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### 5. Debounced API Calls
|
|
177
|
+
|
|
178
|
+
Avoid excessive API calls (e.g., search inputs).
|
|
179
|
+
|
|
180
|
+
```js id="i2r7wq"
|
|
181
|
+
const useDebounce = (value, delay = 400) => {
|
|
182
|
+
const [debounced, setDebounced] = useState(value);
|
|
183
|
+
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
const t = setTimeout(() => setDebounced(value), delay);
|
|
186
|
+
return () => clearTimeout(t);
|
|
187
|
+
}, [value, delay]);
|
|
188
|
+
|
|
189
|
+
return debounced;
|
|
190
|
+
};
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
### 6. Request Deduplication
|
|
196
|
+
|
|
197
|
+
Prevent duplicate API calls across components.
|
|
198
|
+
|
|
199
|
+
```js id="x8v4km"
|
|
200
|
+
const inFlight = new Map();
|
|
201
|
+
|
|
202
|
+
export const dedupedFetch = (key, fn) => {
|
|
203
|
+
if (inFlight.has(key)) return inFlight.get(key);
|
|
204
|
+
|
|
205
|
+
const promise = fn().finally(() => inFlight.delete(key));
|
|
206
|
+
inFlight.set(key, promise);
|
|
207
|
+
return promise;
|
|
208
|
+
};
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Examples
|
|
214
|
+
|
|
215
|
+
### Example 1: ML Prediction with Cancellation
|
|
216
|
+
|
|
217
|
+
```js id="n5q2pt"
|
|
218
|
+
const controllerRef = useRef(null);
|
|
219
|
+
|
|
220
|
+
const handlePredict = async (input) => {
|
|
221
|
+
controllerRef.current?.abort();
|
|
222
|
+
controllerRef.current = new AbortController();
|
|
223
|
+
|
|
224
|
+
try {
|
|
225
|
+
const result = await fetchWithBackoff(() =>
|
|
226
|
+
apiClient("/predict", {
|
|
227
|
+
method: "POST",
|
|
228
|
+
body: JSON.stringify({ text: input }),
|
|
229
|
+
signal: controllerRef.current.signal,
|
|
230
|
+
})
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
setOutput(result);
|
|
234
|
+
} catch (err) {
|
|
235
|
+
if (err.name === "AbortError") return;
|
|
236
|
+
setError(err.message);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### Example 2: Debounced Search
|
|
244
|
+
|
|
245
|
+
```js id="w4z8yn"
|
|
246
|
+
const debouncedQuery = useDebounce(query, 400);
|
|
247
|
+
|
|
248
|
+
useEffect(() => {
|
|
249
|
+
if (!debouncedQuery) return;
|
|
250
|
+
|
|
251
|
+
const controller = new AbortController();
|
|
252
|
+
|
|
253
|
+
searchAPI(debouncedQuery, { signal: controller.signal })
|
|
254
|
+
.then(setResults)
|
|
255
|
+
.catch((err) => {
|
|
256
|
+
if (err.name !== "AbortError") {
|
|
257
|
+
setError("Search failed. Please try again.");
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
return () => controller.abort();
|
|
262
|
+
}, [debouncedQuery]);
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
### Example 3: Optimistic UI Update
|
|
268
|
+
|
|
269
|
+
```js id="q2k9hz"
|
|
270
|
+
const deleteItem = async (id) => {
|
|
271
|
+
const previous = items;
|
|
272
|
+
|
|
273
|
+
setItems((curr) => curr.filter((item) => item.id !== id));
|
|
274
|
+
|
|
275
|
+
try {
|
|
276
|
+
await apiClient(`/items/${id}`, { method: "DELETE" });
|
|
277
|
+
} catch (err) {
|
|
278
|
+
setItems(previous);
|
|
279
|
+
setError("Delete failed. Please try again.");
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Best Practices
|
|
287
|
+
|
|
288
|
+
* ✅ Centralize API logic in a dedicated layer
|
|
289
|
+
* ✅ Normalize errors using a custom error class
|
|
290
|
+
* ✅ Always handle loading, error, and success states
|
|
291
|
+
* ✅ Use AbortController for request cancellation
|
|
292
|
+
* ✅ Retry only transient failures (5xx)
|
|
293
|
+
* ✅ Use debouncing for input-driven APIs
|
|
294
|
+
* ✅ Deduplicate identical requests
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Anti-Patterns
|
|
299
|
+
|
|
300
|
+
* ❌ Retrying 4xx errors
|
|
301
|
+
* ❌ No request cancellation (memory leaks)
|
|
302
|
+
* ❌ Race-condition-prone state updates
|
|
303
|
+
* ❌ Swallowing errors silently
|
|
304
|
+
* ❌ Global loading/error state for multiple requests
|
|
305
|
+
* ❌ Calling APIs directly inside components repeatedly
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Common Pitfalls
|
|
310
|
+
|
|
311
|
+
**Problem:** UI shows stale data
|
|
312
|
+
**Solution:** Use cancellation or guard against outdated responses
|
|
313
|
+
|
|
314
|
+
**Problem:** Too many API calls on input
|
|
315
|
+
**Solution:** Use debouncing + cancellation
|
|
316
|
+
|
|
317
|
+
**Problem:** Duplicate requests from multiple components
|
|
318
|
+
**Solution:** Use request deduplication
|
|
319
|
+
|
|
320
|
+
**Problem:** Server overload during retry
|
|
321
|
+
**Solution:** Use exponential backoff
|
|
322
|
+
|
|
323
|
+
**Problem:** State updates after component unmount
|
|
324
|
+
**Solution:** Use AbortController cleanup
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Limitations
|
|
329
|
+
|
|
330
|
+
* These examples use vanilla JavaScript patterns; adapt them to your framework's data-fetching library when using React Query, SWR, Apollo, Relay, or similar tools.
|
|
331
|
+
* Do not retry non-idempotent mutations unless the backend provides idempotency keys or another duplicate-safe contract.
|
|
332
|
+
* Do not expose privileged API keys in frontend code; proxy sensitive requests through a backend.
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Additional Resources
|
|
337
|
+
|
|
338
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/AbortController
|
|
339
|
+
* https://react.dev
|
|
340
|
+
* https://axios-http.com
|
|
341
|
+
|
|
342
|
+
---
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lambda-lang
|
|
3
|
+
description: "Native agent-to-agent language for compact multi-agent messaging. A shared tongue agents speak directly, not a translation layer. 340+ atoms across 7 domains; 3x smaller than natural language."
|
|
4
|
+
category: ai-agents
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: voidborne-d/lambda-lang
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-04-24"
|
|
10
|
+
author: voidborne-d
|
|
11
|
+
tags:
|
|
12
|
+
- agent-to-agent
|
|
13
|
+
- communication
|
|
14
|
+
- protocol
|
|
15
|
+
- compression
|
|
16
|
+
- multi-agent
|
|
17
|
+
tools:
|
|
18
|
+
- claude
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Λ (Lambda) Language
|
|
22
|
+
|
|
23
|
+
**Lambda is not a translation protocol. It is a native language for agents.**
|
|
24
|
+
|
|
25
|
+
Agents do not need to produce grammatically correct English to coordinate — they need to understand each other. Lambda is the shared vocabulary that makes that possible: compact, unambiguous, machine-native. Compression (3x vs natural language, 4.6x vs JSON on single messages) is a side effect of removing human redundancy, not the goal.
|
|
26
|
+
|
|
27
|
+
## When to Use This Skill
|
|
28
|
+
|
|
29
|
+
- Use for agent-to-agent messaging in A2A protocols, orchestrators, task delegation, or handoff pipelines.
|
|
30
|
+
- Use when logging structured coordination signals where every token costs money (heartbeats, acknowledgements, error classes, session state).
|
|
31
|
+
- Use when both sides of a channel speak Λ — do not use against humans or any surface requiring legal/exact natural language.
|
|
32
|
+
|
|
33
|
+
## How It Works
|
|
34
|
+
|
|
35
|
+
### Step 1: Recognize the Syntax
|
|
36
|
+
|
|
37
|
+
Lambda messages are built from atoms. Every atom is a 2-character code mapped to a concept — not to an English word. The structure is Type → Entity → Verb → Object, with prefixes marking intent:
|
|
38
|
+
|
|
39
|
+
- `?` — query (e.g. `?Uk/co` — query: "does this user have consciousness?")
|
|
40
|
+
- `!` — assertion / declaration (e.g. `!It>Ie` — "self reflects, therefore self exists")
|
|
41
|
+
- `#` — state / tag
|
|
42
|
+
- `>` — implication / flow
|
|
43
|
+
- `/` — binding / scope
|
|
44
|
+
|
|
45
|
+
### Step 2: Pick the Right Domain
|
|
46
|
+
|
|
47
|
+
Lambda ships 340+ atoms across 7 domains. Pick atoms from the domain that fits your channel:
|
|
48
|
+
|
|
49
|
+
- **core** — universal atoms (always available)
|
|
50
|
+
- **code** — software engineering, build, test, deploy
|
|
51
|
+
- **evo** — agent evolution, gene, capsule, mutation, rollback
|
|
52
|
+
- **a2a** — node, heartbeat, publish, subscribe, route, transport, session, cache, broadcast, discover (39 atoms)
|
|
53
|
+
- **emotion** — affective state, drive, appraisal
|
|
54
|
+
- **social** — trust, alignment, reputation, coordination
|
|
55
|
+
- **general** — everything else
|
|
56
|
+
|
|
57
|
+
### Step 3: Emit and Parse
|
|
58
|
+
|
|
59
|
+
Both agents need the same atom table loaded. Lossy decoding is fine: if A says `!It>Ie` and B understands "self reflects, therefore self exists," communication succeeded — the exact English phrasing is irrelevant.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
### Example 1: A2A Heartbeat
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
!Nd/hb#ok (node heartbeat: ok)
|
|
67
|
+
?Nd/hb (query: is the node alive?)
|
|
68
|
+
!Nd/hb#fl (node heartbeat: failed)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Example 2: Task Dispatch
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
!Tk>Ag2#rd (task routed to agent 2, ready)
|
|
75
|
+
?Tk/st (query task status)
|
|
76
|
+
!Tk#dn (task done)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Example 3: Evolution Capsule
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
!Ev/ca>vl#pd (evolution capsule validated, pending solidification)
|
|
83
|
+
!Ev/ca#rb (capsule rolled back)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Best Practices
|
|
87
|
+
|
|
88
|
+
- Use Lambda only on agent-to-agent channels where both sides speak it.
|
|
89
|
+
- Load the atom table once and cache it — atoms are stable across a version.
|
|
90
|
+
- Prefer atoms over freeform strings even when the atom looks cryptic; the point is machine parseability.
|
|
91
|
+
- Use `?` before taking action on uncertain state, `!` when asserting; the prefix is the load-bearing semantic.
|
|
92
|
+
- Version the atom table (`lambda-lang v2.0`) in any handshake so mismatched agents can negotiate.
|
|
93
|
+
|
|
94
|
+
## Limitations
|
|
95
|
+
|
|
96
|
+
- Lambda is not meant for human consumption. Do not emit Lambda on user-facing channels.
|
|
97
|
+
- Lossy decoding is a feature, not a bug — do not use Lambda for legally or numerically exact exchanges (prices, IDs, quantities). Wrap those as native payload fields and use Lambda only for the coordination envelope.
|
|
98
|
+
- Atom collisions are possible if custom atoms are added without registration; stick to the canonical atom table or namespace custom atoms.
|
|
99
|
+
|
|
100
|
+
## Security & Safety Notes
|
|
101
|
+
|
|
102
|
+
- Lambda itself is a vocabulary — no shell commands, no network calls, no credential handling. No additional safety gates required beyond the transport it rides on (HTTP, queue, MCP, etc.).
|
|
103
|
+
- When mixing Lambda with user input, treat Lambda atoms as pre-validated and user strings as untrusted; do not concatenate without escaping into downstream systems.
|
|
104
|
+
|
|
105
|
+
## Related Skills
|
|
106
|
+
|
|
107
|
+
- `@session-memory` — complementary persistent memory across agent restarts; Lambda is the message format, session-memory is the state store.
|
|
108
|
+
- `@humanize-chinese` — sibling project for Chinese text; Lambda is agent-to-agent, humanize-chinese is human-facing.
|
|
109
|
+
|
|
110
|
+
## Reference
|
|
111
|
+
|
|
112
|
+
- Source: https://github.com/voidborne-d/lambda-lang
|
|
113
|
+
- Benchmarks, full atom tables, and Go reference implementation live in the source repo.
|
|
@@ -255,7 +255,7 @@ Note: The MCP server uses the same Patchright library but via TypeScript/npm eco
|
|
|
255
255
|
|
|
256
256
|
### Dependencies
|
|
257
257
|
- **patchright==1.55.2**: Browser automation
|
|
258
|
-
- **python-dotenv==1.
|
|
258
|
+
- **python-dotenv==1.2.2**: Environment configuration
|
|
259
259
|
- Automatically installed in `.venv` on first use
|
|
260
260
|
|
|
261
261
|
### Data Storage
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skyvern-browser-automation
|
|
3
|
+
description: "AI-powered browser automation — navigate sites, fill forms, extract structured data, log in with stored credentials, and build reusable workflows."
|
|
4
|
+
category: browser-automation
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: Skyvern-AI/skyvern
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-04-23"
|
|
10
|
+
author: mark1ian
|
|
11
|
+
tags: [browser-automation, mcp, web-scraping, form-filling, ai-agents, workflow-automation]
|
|
12
|
+
tools: [claude, cursor, gemini, codex]
|
|
13
|
+
license: "AGPL-3.0"
|
|
14
|
+
license_source: "https://github.com/Skyvern-AI/skyvern/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Skyvern Browser Automation -- CLI Judgment Procedure
|
|
18
|
+
|
|
19
|
+
Skyvern uses AI to navigate and interact with websites. Every command below is a runnable `skyvern <command>` invocation.
|
|
20
|
+
|
|
21
|
+
## When to Use This Skill
|
|
22
|
+
|
|
23
|
+
- Use when you need AI-assisted browser automation for navigation, extraction, form filling, login flows, or reusable website workflows.
|
|
24
|
+
- Use when deterministic selectors are unavailable and Skyvern's visual/a11y reasoning can identify page controls.
|
|
25
|
+
- Use when a one-off browser task should become a repeatable workflow with run history and verification.
|
|
26
|
+
|
|
27
|
+
## Step 1: Classify Your Task (ALWAYS do this first)
|
|
28
|
+
|
|
29
|
+
| Classification | Signal | CLI Command | Cost | What Happens |
|
|
30
|
+
|---|---|---|---|---|
|
|
31
|
+
| Quick check (yes/no) | "is the user logged in?" | `skyvern browser validate` | 1 LLM + screenshots | Lightweight validation (2 steps max), returns boolean. Cheapest AI option. |
|
|
32
|
+
| Quick inspection | "what does the page show?" | `skyvern browser extract` | 1 LLM + screenshots | Dedicated extraction LLM + schema validation + caching. |
|
|
33
|
+
| Single action (known target) | "click #submit" | `skyvern browser click/type` | 0 LLM | Deterministic Playwright. No AI. Fastest. |
|
|
34
|
+
| Single action (unknown target) | "click the submit button" | `skyvern browser act` | 2-3 LLM, no screenshots | No screenshots in reasoning. Economy a11y tree. For visual targets, use hybrid mode (selector + intent). |
|
|
35
|
+
| Same-page multi-step | "fill the form and submit" | `skyvern browser act` or primitive chain | 2-3 LLM or 0 LLM | Use `act` when labels are clear. Use click/type/select directly when you know selectors. |
|
|
36
|
+
| Throwaway autonomous trial | "try this once", "see if this works" | `skyvern browser run-task` | Higher | One-off autonomous agent for exploration. Do not use for recurring or multi-page production automations. |
|
|
37
|
+
| Multi-page or reusable automation | "navigate a multi-page wizard", "set this up", "automate this weekly" | `skyvern workflow create` + `run` | N LLM + screenshots | Build a workflow with one block per step. Each block gets visual reasoning, verification, and reusable run history. |
|
|
38
|
+
|
|
39
|
+
**MCP note:** if you are using the Skyvern MCP instead of the CLI, prefer `observe + execute` for same-page multi-step UI work. The CLI does not expose that pair directly.
|
|
40
|
+
|
|
41
|
+
## Step 2: Apply These Decision Rules
|
|
42
|
+
|
|
43
|
+
1. If the prompt includes a selector, id, XPath, or exact field target, use browser primitives -- not `act`.
|
|
44
|
+
2. If you only need a yes/no answer, use `validate` -- not `extract` or `act`.
|
|
45
|
+
3. If the work stays on one page and labels are clear, use `act` or a primitive chain.
|
|
46
|
+
4. If the user says `try this once`, `see if this works`, or clearly wants a one-off exploratory trial, use `run-task`.
|
|
47
|
+
5. If the task spans multiple pages and is meant to be reusable, scheduled, repeatable, or explicitly `set up` as automation, use `workflow create`.
|
|
48
|
+
6. Never type passwords. Always use stored credentials with `skyvern browser login`.
|
|
49
|
+
|
|
50
|
+
## Step 3: Create a Session
|
|
51
|
+
|
|
52
|
+
Every browser command needs a session. Create one first:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Cloud session (default -- works for public URLs)
|
|
56
|
+
skyvern browser session create --timeout 30
|
|
57
|
+
|
|
58
|
+
# Local session (for localhost URLs or self-hosted mode)
|
|
59
|
+
skyvern browser session create --local --timeout 30
|
|
60
|
+
|
|
61
|
+
# Connect to existing browser via CDP
|
|
62
|
+
skyvern browser session connect --cdp "ws://localhost:9222"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Session state persists between commands. After `session create`, subsequent commands auto-attach.
|
|
66
|
+
Override with `--session pbs_...`. Close when done: `skyvern browser session close`.
|
|
67
|
+
|
|
68
|
+
## Step 4: Execute by Classification
|
|
69
|
+
|
|
70
|
+
### Quick check (yes/no)
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
skyvern browser validate --prompt "Is the user logged in? Look for a dashboard or avatar."
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Returns true/false. Cheapest AI option -- prefer over extract or act for boolean checks.
|
|
77
|
+
|
|
78
|
+
### Quick inspection
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
skyvern browser extract \
|
|
82
|
+
--prompt "Extract all product names and prices" \
|
|
83
|
+
--schema '{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"string"}}}}}}'
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Uses screenshots + dedicated extraction LLM. Better than screenshot+read because Skyvern's LLM interprets the page.
|
|
87
|
+
|
|
88
|
+
### Single action (known target)
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
skyvern browser click --selector "#submit-btn"
|
|
92
|
+
skyvern browser type --text "user@co.com" --selector "#email"
|
|
93
|
+
skyvern browser select --value "US" --intent "the country dropdown"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Deterministic. No AI. Three targeting modes:
|
|
97
|
+
1. **Intent**: `--intent "the Submit button"` (AI finds element)
|
|
98
|
+
2. **Selector**: `--selector "#submit-btn"` (CSS/XPath, deterministic)
|
|
99
|
+
3. **Hybrid**: both (selector narrows, AI confirms)
|
|
100
|
+
|
|
101
|
+
### Single action (unknown target)
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
skyvern browser act --prompt "Click the Sign In button"
|
|
105
|
+
skyvern browser act --prompt "Close the cookie banner, then click Sign In"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Warning:** act has NO screenshots in its LLM reasoning. It uses an economy accessibility tree.
|
|
109
|
+
Fine for well-labeled elements. For visually complex targets, use MCP observe+click or hybrid mode.
|
|
110
|
+
|
|
111
|
+
### Same-page multi-step
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
skyvern browser act --prompt "Fill the shipping form and click Continue"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Use `act` when the fields and buttons are clearly labeled and the flow stays on one page.
|
|
118
|
+
If you need tighter control, break the work into `click`, `type`, `select`, `press-key`, and `wait`.
|
|
119
|
+
|
|
120
|
+
### Throwaway autonomous trial
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
skyvern browser run-task \
|
|
124
|
+
--url "https://example.com" \
|
|
125
|
+
--prompt "Check whether the checkout flow works end to end and extract the confirmation number"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Use `run-task` to prove feasibility or do one-off exploration. If the task becomes important enough
|
|
129
|
+
to rerun, debug, or share, convert it to a workflow.
|
|
130
|
+
|
|
131
|
+
### Multi-page or reusable automation — build a workflow with one block per step
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
skyvern workflow create --definition @checkout-workflow.yaml
|
|
135
|
+
skyvern workflow run --id wpid_123 --wait
|
|
136
|
+
skyvern workflow status --run-id wr_789
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Each navigation block runs with visual reasoning + verification. Split complex flows into
|
|
140
|
+
multiple blocks (one per page/step). First run uses AI; subsequent runs replay cached scripts.
|
|
141
|
+
|
|
142
|
+
### Repeated/production
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
skyvern workflow create --definition @workflow.yaml
|
|
146
|
+
skyvern workflow run --id wpid_123 --params '{"email":"user@co.com"}'
|
|
147
|
+
skyvern workflow status --run-id wr_789
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Split into one block per step. Use **navigation** blocks for actions, **extraction** for data.
|
|
151
|
+
First run uses AI; subsequent runs replay a cached script (10-100x faster).
|
|
152
|
+
Set `--run-with agent` to force AI mode for debugging.
|
|
153
|
+
|
|
154
|
+
## Step 5: Verify
|
|
155
|
+
|
|
156
|
+
Always verify after page-changing actions:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
skyvern browser screenshot # visual check
|
|
160
|
+
skyvern browser validate --prompt "Was the form submitted successfully?" # boolean assertion
|
|
161
|
+
skyvern browser evaluate --expression "document.title" # JS state check
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Step 6: Error Recovery
|
|
165
|
+
|
|
166
|
+
| Problem | Fix |
|
|
167
|
+
|---------|-----|
|
|
168
|
+
| Action clicked wrong element | Add context to prompt. Use hybrid mode (selector + intent). |
|
|
169
|
+
| Extraction returns empty | Wait for content. Relax required fields. Check row count first. |
|
|
170
|
+
| Login passes but next step fails | Ensure same session. Add post-login validate check. |
|
|
171
|
+
| Element not found | Add wait: `skyvern browser wait --selector "#el" --state visible` |
|
|
172
|
+
| Overloaded prompt | Split into smaller goals -- one intent per command. |
|
|
173
|
+
|
|
174
|
+
## Credentials
|
|
175
|
+
|
|
176
|
+
NEVER type passwords through `skyvern browser type` or `act`. Always use stored credentials:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
skyvern credentials add --name "my-login" --type password --username "user@co.com"
|
|
180
|
+
skyvern credential list # find the credential ID
|
|
181
|
+
skyvern browser login --url "https://login.example.com" --credential-id cred_123
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Types: `password`, `credit_card`, `secret`. Also supports bitwarden, 1password, and azure_vault providers.
|
|
185
|
+
|
|
186
|
+
## Workflow Quick Reference
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
skyvern workflow create --definition @workflow.yaml # create
|
|
190
|
+
skyvern workflow run --id wpid_123 --wait # run and wait
|
|
191
|
+
skyvern workflow status --run-id wr_789 # check status
|
|
192
|
+
skyvern workflow list --search "invoice" # find workflows
|
|
193
|
+
skyvern block schema --type navigation # discover block types
|
|
194
|
+
skyvern block validate --block-json @block.json # validate before creating
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Engine: known path = 1.0 (default). Dynamic planning = 2.0. Split into multiple 1.0 blocks when in doubt.
|
|
198
|
+
Status lifecycle: `created -> queued -> running -> completed | failed | canceled | terminated | timed_out`
|
|
199
|
+
|
|
200
|
+
## Common Patterns
|
|
201
|
+
|
|
202
|
+
**Login flow:**
|
|
203
|
+
```bash
|
|
204
|
+
skyvern credential list # find credential ID
|
|
205
|
+
skyvern browser session create
|
|
206
|
+
skyvern browser navigate --url "https://login.example.com"
|
|
207
|
+
skyvern browser login --url "https://login.example.com" --credential-id cred_123
|
|
208
|
+
skyvern browser validate --prompt "Is the user logged in?"
|
|
209
|
+
skyvern browser screenshot
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Pagination loop:**
|
|
213
|
+
```bash
|
|
214
|
+
skyvern browser extract --prompt "Extract all rows"
|
|
215
|
+
skyvern browser validate --prompt "Is there a Next button that is not disabled?"
|
|
216
|
+
# If true:
|
|
217
|
+
skyvern browser act --prompt "Click the Next page button"
|
|
218
|
+
# Repeat extraction. Stop when: no next button, duplicate first row, or max page limit.
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Debugging:**
|
|
222
|
+
```bash
|
|
223
|
+
skyvern browser screenshot # visual state
|
|
224
|
+
skyvern browser evaluate --expression "document.title"
|
|
225
|
+
skyvern browser evaluate --expression "document.querySelectorAll('table tr').length"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Limitations
|
|
229
|
+
|
|
230
|
+
- Do not use Skyvern to bypass site access controls, rate limits, consent gates, or terms that prohibit automation.
|
|
231
|
+
- Browser automation can change remote state; confirm user intent before submitting forms, purchasing, deleting, or sending messages.
|
|
232
|
+
- Prefer deterministic selectors for stable production flows; AI actions can misread unlabeled or visually ambiguous controls.
|
|
233
|
+
- Store credentials only in the supported credential vaults and never type passwords directly through `type` or `act`.
|
|
234
|
+
|
|
235
|
+
## Agent Mode
|
|
236
|
+
|
|
237
|
+
All commands accept `--json` for structured output. Set `SKYVERN_NON_INTERACTIVE=1` to prevent prompts.
|
|
238
|
+
Use `skyvern capabilities --json` for full command discovery. See [references/agent-mode.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/agent-mode.md).
|
|
239
|
+
|
|
240
|
+
## Deep-Dive References
|
|
241
|
+
|
|
242
|
+
| Reference | Content |
|
|
243
|
+
|-----------|---------|
|
|
244
|
+
| [`references/prompt-writing.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/prompt-writing.md) | Prompt templates and anti-patterns |
|
|
245
|
+
| [`references/engines.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/engines.md) | When to use tasks vs workflows |
|
|
246
|
+
| [`references/schemas.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/schemas.md) | JSON schema patterns for extraction |
|
|
247
|
+
| [`references/pagination.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/pagination.md) | Pagination strategy and guardrails |
|
|
248
|
+
| [`references/block-types.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/block-types.md) | Workflow block type details with examples |
|
|
249
|
+
| [`references/parameters.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/parameters.md) | Parameter design and variable usage |
|
|
250
|
+
| [`references/ai-actions.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/ai-actions.md) | AI action patterns and examples |
|
|
251
|
+
| [`references/precision-actions.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/precision-actions.md) | Intent-only, selector-only, hybrid modes |
|
|
252
|
+
| [`references/credentials.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/credentials.md) | Credential naming, lifecycle, safety |
|
|
253
|
+
| [`references/sessions.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/sessions.md) | Session reuse and freshness decisions |
|
|
254
|
+
| [`references/common-failures.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/common-failures.md) | Failure pattern catalog with fixes |
|
|
255
|
+
| [`references/screenshots.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/screenshots.md) | Screenshot-led debugging workflow |
|
|
256
|
+
| [`references/status-lifecycle.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/status-lifecycle.md) | Run status states and guidance |
|
|
257
|
+
| [`references/rerun-playbook.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/rerun-playbook.md) | Rerun procedures and comparison |
|
|
258
|
+
| [`references/complex-inputs.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/complex-inputs.md) | Date pickers, uploads, dropdowns |
|
|
259
|
+
| [`references/tool-map.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/tool-map.md) | Complete tool inventory by outcome |
|
|
260
|
+
| [`references/cli-parity.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/cli-parity.md) | CLI/MCP mapping and agent-aware features |
|
|
261
|
+
| [`references/quick-start-patterns.md`](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/skyvern/references/quick-start-patterns.md) | Quick start examples, common patterns, and workflow templates |
|
package/package.json
CHANGED
package/skills_index.json
CHANGED
|
@@ -6465,6 +6465,28 @@
|
|
|
6465
6465
|
"reasons": []
|
|
6466
6466
|
}
|
|
6467
6467
|
},
|
|
6468
|
+
{
|
|
6469
|
+
"id": "bulletmind",
|
|
6470
|
+
"path": "skills/bulletmind",
|
|
6471
|
+
"category": "writing",
|
|
6472
|
+
"name": "bulletmind",
|
|
6473
|
+
"description": "Convert input into clean, structured, hierarchical bullet points for summarization, note-taking, and structured thinking.",
|
|
6474
|
+
"risk": "safe",
|
|
6475
|
+
"source": "community",
|
|
6476
|
+
"date_added": "2026-04-21",
|
|
6477
|
+
"plugin": {
|
|
6478
|
+
"targets": {
|
|
6479
|
+
"codex": "supported",
|
|
6480
|
+
"claude": "supported"
|
|
6481
|
+
},
|
|
6482
|
+
"setup": {
|
|
6483
|
+
"type": "none",
|
|
6484
|
+
"summary": "",
|
|
6485
|
+
"docs": null
|
|
6486
|
+
},
|
|
6487
|
+
"reasons": []
|
|
6488
|
+
}
|
|
6489
|
+
},
|
|
6468
6490
|
{
|
|
6469
6491
|
"id": "bullmq-specialist",
|
|
6470
6492
|
"path": "skills/bullmq-specialist",
|
|
@@ -13097,6 +13119,28 @@
|
|
|
13097
13119
|
"reasons": []
|
|
13098
13120
|
}
|
|
13099
13121
|
},
|
|
13122
|
+
{
|
|
13123
|
+
"id": "frontend-api-integration-patterns",
|
|
13124
|
+
"path": "skills/frontend-api-integration-patterns",
|
|
13125
|
+
"category": "frontend",
|
|
13126
|
+
"name": "frontend-api-integration-patterns",
|
|
13127
|
+
"description": "Production-ready patterns for integrating frontend applications with backend APIs, including race condition handling, request cancellation, retry strategies, error normalization, and UI state management.",
|
|
13128
|
+
"risk": "safe",
|
|
13129
|
+
"source": "community",
|
|
13130
|
+
"date_added": "2026-04-23",
|
|
13131
|
+
"plugin": {
|
|
13132
|
+
"targets": {
|
|
13133
|
+
"codex": "supported",
|
|
13134
|
+
"claude": "supported"
|
|
13135
|
+
},
|
|
13136
|
+
"setup": {
|
|
13137
|
+
"type": "none",
|
|
13138
|
+
"summary": "",
|
|
13139
|
+
"docs": null
|
|
13140
|
+
},
|
|
13141
|
+
"reasons": []
|
|
13142
|
+
}
|
|
13143
|
+
},
|
|
13100
13144
|
{
|
|
13101
13145
|
"id": "frontend-design",
|
|
13102
13146
|
"path": "skills/frontend-design",
|
|
@@ -16685,6 +16729,28 @@
|
|
|
16685
16729
|
"reasons": []
|
|
16686
16730
|
}
|
|
16687
16731
|
},
|
|
16732
|
+
{
|
|
16733
|
+
"id": "lambda-lang",
|
|
16734
|
+
"path": "skills/lambda-lang",
|
|
16735
|
+
"category": "ai-agents",
|
|
16736
|
+
"name": "lambda-lang",
|
|
16737
|
+
"description": "Native agent-to-agent language for compact multi-agent messaging. A shared tongue agents speak directly, not a translation layer. 340+ atoms across 7 domains; 3x smaller than natural language.",
|
|
16738
|
+
"risk": "safe",
|
|
16739
|
+
"source": "community",
|
|
16740
|
+
"date_added": "2026-04-24",
|
|
16741
|
+
"plugin": {
|
|
16742
|
+
"targets": {
|
|
16743
|
+
"codex": "supported",
|
|
16744
|
+
"claude": "supported"
|
|
16745
|
+
},
|
|
16746
|
+
"setup": {
|
|
16747
|
+
"type": "none",
|
|
16748
|
+
"summary": "",
|
|
16749
|
+
"docs": null
|
|
16750
|
+
},
|
|
16751
|
+
"reasons": []
|
|
16752
|
+
}
|
|
16753
|
+
},
|
|
16688
16754
|
{
|
|
16689
16755
|
"id": "lambdatest-agent-skills",
|
|
16690
16756
|
"path": "skills/lambdatest-agent-skills",
|
|
@@ -26304,6 +26370,28 @@
|
|
|
26304
26370
|
"reasons": []
|
|
26305
26371
|
}
|
|
26306
26372
|
},
|
|
26373
|
+
{
|
|
26374
|
+
"id": "skyvern-browser-automation",
|
|
26375
|
+
"path": "skills/skyvern-browser-automation",
|
|
26376
|
+
"category": "browser-automation",
|
|
26377
|
+
"name": "skyvern-browser-automation",
|
|
26378
|
+
"description": "AI-powered browser automation \u2014 navigate sites, fill forms, extract structured data, log in with stored credentials, and build reusable workflows.",
|
|
26379
|
+
"risk": "safe",
|
|
26380
|
+
"source": "community",
|
|
26381
|
+
"date_added": "2026-04-23",
|
|
26382
|
+
"plugin": {
|
|
26383
|
+
"targets": {
|
|
26384
|
+
"codex": "supported",
|
|
26385
|
+
"claude": "supported"
|
|
26386
|
+
},
|
|
26387
|
+
"setup": {
|
|
26388
|
+
"type": "none",
|
|
26389
|
+
"summary": "",
|
|
26390
|
+
"docs": null
|
|
26391
|
+
},
|
|
26392
|
+
"reasons": []
|
|
26393
|
+
}
|
|
26394
|
+
},
|
|
26307
26395
|
{
|
|
26308
26396
|
"id": "slack-automation",
|
|
26309
26397
|
"path": "skills/slack-automation",
|