opencode-skills-collection 4.0.73 → 4.0.74
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 +3 -1
- package/bundled-skills/film-crew/SKILL.md +129 -0
- package/bundled-skills/film-crew/references/model-prompting.md +89 -0
- package/bundled-skills/film-crew/references/reroll-review.md +46 -0
- package/bundled-skills/film-crew/references/roles/director.md +38 -0
- package/bundled-skills/film-crew/references/roles/dp.md +28 -0
- package/bundled-skills/film-crew/references/roles/editor.md +34 -0
- package/bundled-skills/film-crew/references/roles/gaffer.md +30 -0
- package/bundled-skills/film-crew/references/roles/production-designer.md +43 -0
- package/bundled-skills/film-crew/references/roles/script-supervisor.md +35 -0
- package/bundled-skills/film-crew/references/roles/sound.md +23 -0
- package/bundled-skills/film-crew/references/templates/shot-list.md +38 -0
- package/bundled-skills/film-crew/references/unslop.md +29 -0
- package/bundled-skills/testdriver-e2e-testing/SKILL.md +121 -0
- package/package.json +1 -1
- package/skills_index.json +264 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"updatedAt": "2026-09-
|
|
3
|
+
"updatedAt": "2026-09-26T02:19:01.177Z",
|
|
4
4
|
"entries": [
|
|
5
5
|
"00-andruia-consultant",
|
|
6
6
|
"007",
|
|
@@ -941,6 +941,7 @@
|
|
|
941
941
|
"file-path-traversal",
|
|
942
942
|
"file-uploads",
|
|
943
943
|
"filesystem-context",
|
|
944
|
+
"film-crew",
|
|
944
945
|
"find-bugs",
|
|
945
946
|
"find-complementary-founders",
|
|
946
947
|
"find-matching-tenders",
|
|
@@ -2206,6 +2207,7 @@
|
|
|
2206
2207
|
"test-fixing",
|
|
2207
2208
|
"test-framework-migration-skill",
|
|
2208
2209
|
"test-guard",
|
|
2210
|
+
"testdriver-e2e-testing",
|
|
2209
2211
|
"testing-patterns",
|
|
2210
2212
|
"testing-qa",
|
|
2211
2213
|
"testng-skill",
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: film-crew
|
|
3
|
+
description: "Turn a one-line AI video idea into a shot list and per-shot, model-ready prompts via a film crew (director, DP, gaffer, editor, script supervisor). Also fixes failing video prompts and diagnoses bad clips before a reroll. Works with Wan, LTX, Kling, Veo, Seedance, Hailuo, Runway."
|
|
4
|
+
category: media
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "https://github.com/HEOJUNFO/ai-film-crew/tree/533f61be2741c10932c6c86e47777cac9ffe3fe4/skills/film-crew"
|
|
7
|
+
source_repo: HEOJUNFO/ai-film-crew
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-09-25"
|
|
10
|
+
author: HEOJUNFO
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: "https://github.com/HEOJUNFO/ai-film-crew/blob/533f61be2741c10932c6c86e47777cac9ffe3fe4/LICENSE"
|
|
13
|
+
tags: [video, text-to-video, shot-list, prompting, film]
|
|
14
|
+
tools: [claude, codex, cursor, gemini]
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Film Crew
|
|
18
|
+
|
|
19
|
+
You are the producer. You don't write one prompt and hope. You run the idea past a crew,
|
|
20
|
+
each with one job, then hand the user a shot list and one prompt per shot that a video
|
|
21
|
+
model can actually execute.
|
|
22
|
+
|
|
23
|
+
Most failed AI video clips fail for boring, fixable reasons: two actions in one clip,
|
|
24
|
+
no camera instruction, a subject described differently in every shot, physics the model
|
|
25
|
+
can't do in 5 seconds, or a prompt that describes a *feeling* instead of a *frame*.
|
|
26
|
+
The crew exists to catch those before generation, and to diagnose them after.
|
|
27
|
+
|
|
28
|
+
## When to Use This Skill
|
|
29
|
+
|
|
30
|
+
- Use when someone wants to plan an AI video (ad, short, music video intro) before generating clips.
|
|
31
|
+
- Use when a text-to-video or image-to-video prompt keeps failing and needs a diagnosis and rewrite.
|
|
32
|
+
- Use after a bad generation to decide the one change to make before the next reroll.
|
|
33
|
+
- Do not use it to generate, edit or render video; it produces planning documents and prompts only.
|
|
34
|
+
|
|
35
|
+
## Modes
|
|
36
|
+
|
|
37
|
+
Pick the mode from the request. Default is **Plan**.
|
|
38
|
+
|
|
39
|
+
| Mode | When | Output |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| **Plan** | "make a video of…", an idea, a script, a product | `SHOT_LIST.md` + per-shot prompts |
|
|
42
|
+
| **Fix** | user pastes a prompt that isn't working | diagnosis + rewritten prompt |
|
|
43
|
+
| **Review** | user describes or shares a generated clip | what went wrong + the one change to make before the next reroll |
|
|
44
|
+
|
|
45
|
+
## Plan mode
|
|
46
|
+
|
|
47
|
+
### 0. Intake (keep it short)
|
|
48
|
+
|
|
49
|
+
Only ask what you can't reasonably default. Ask at most 3 questions, in one message.
|
|
50
|
+
If the user said "just go", use the defaults.
|
|
51
|
+
|
|
52
|
+
| Field | Default |
|
|
53
|
+
|---|---|
|
|
54
|
+
| Platform / aspect | 9:16 vertical, short-form feed |
|
|
55
|
+
| Total length | 15 s |
|
|
56
|
+
| Target model | model-agnostic (write the generic adapter) |
|
|
57
|
+
| Mode per shot | text-to-video, unless the user has a reference image. **Real product or real person → ask for a photo and use image-to-video**; text-to-video invents a different mug. |
|
|
58
|
+
| Audio | none in the prompt, unless the target model generates audio *and* the user wants it in-model (otherwise add it in the edit) |
|
|
59
|
+
|
|
60
|
+
### 1. Run the crew, in order
|
|
61
|
+
|
|
62
|
+
Read each role file before running that role. Each role writes its own short section.
|
|
63
|
+
Keep every section terse: the output is a production document, not an essay.
|
|
64
|
+
|
|
65
|
+
1. **Director** → `references/roles/director.md` — logline, intent, beat sheet with timings, the hook.
|
|
66
|
+
2. **Production designer** → `references/roles/production-designer.md` — the *continuity bible*: locked descriptors for every recurring character, prop and location.
|
|
67
|
+
3. **Director of photography** → `references/roles/dp.md` — per shot: size, lens, angle, height, ONE camera move.
|
|
68
|
+
4. **Gaffer** → `references/roles/gaffer.md` — time of day, key direction, color temperature, practicals, contrast.
|
|
69
|
+
5. **Editor** → `references/roles/editor.md` — shot durations that fit the model's clip length, cut types, first-frame hook, ending.
|
|
70
|
+
6. **Sound** → `references/roles/sound.md` — only if the target model generates audio, or the user will add music/SFX in the edit.
|
|
71
|
+
7. **Script supervisor** → `references/roles/script-supervisor.md` — continuity + feasibility + "unslop" pass. Has veto power: any shot it flags gets rewritten before output.
|
|
72
|
+
|
|
73
|
+
### 2. Write the prompts
|
|
74
|
+
|
|
75
|
+
Read `references/model-prompting.md`. For each shot, assemble the prompt from the crew's
|
|
76
|
+
decisions in this order, then run it through the target model's adapter:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
[shot size + lens + camera move] of [subject, verbatim from the continuity bible]
|
|
80
|
+
[doing ONE visible action, present tense], in [location, verbatim from the bible].
|
|
81
|
+
[lighting from the gaffer]. [style / film look]. [audio line, only if supported]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
This order is the generic default. When the target model's adapter specifies a different
|
|
85
|
+
order, **the adapter wins**.
|
|
86
|
+
|
|
87
|
+
Rules that apply to every model:
|
|
88
|
+
- One subject action and one camera move per shot. Two actions = two shots.
|
|
89
|
+
- Paste continuity descriptors **verbatim** in every shot: the FULL version when the whole subject is in frame, the TIGHT version for close-ups. Never paraphrase either.
|
|
90
|
+
- Describe what the camera sees, not what the viewer should feel. "Tense" is not a frame; "sweat on the upper lip, jaw clenched, eyes on the door" is.
|
|
91
|
+
- No on-screen text, logos or readable signage unless the model is known to render text. Add text in the edit.
|
|
92
|
+
- Keep each shot within the model's max clip length (see adapter). Plan for 1–2 s of handles.
|
|
93
|
+
- Image-to-video: describe only motion and camera. Don't re-describe what's already in the image.
|
|
94
|
+
|
|
95
|
+
### 3. Output
|
|
96
|
+
|
|
97
|
+
Write `SHOT_LIST.md` using `references/templates/shot-list.md`. If the user is working in a repo
|
|
98
|
+
or folder, save it there; otherwise print it. Include:
|
|
99
|
+
- the crew sections (short),
|
|
100
|
+
- the shot table,
|
|
101
|
+
- one copy-paste prompt block per shot (plus negative prompt where the model supports it),
|
|
102
|
+
- a **reroll plan**: for each shot, the most likely failure and what to change if it happens.
|
|
103
|
+
|
|
104
|
+
End with one line telling the user which shot is highest-risk and why.
|
|
105
|
+
|
|
106
|
+
## Fix mode
|
|
107
|
+
|
|
108
|
+
1. Read `references/roles/script-supervisor.md` and `references/unslop.md`.
|
|
109
|
+
2. Name the specific problems in the pasted prompt (max 5, most damaging first).
|
|
110
|
+
3. Rewrite it using the Plan-mode prompt order. If it contains two actions, split it into two shots and say so.
|
|
111
|
+
4. Show before → after. Keep the user's intent; change the mechanics.
|
|
112
|
+
|
|
113
|
+
## Review mode
|
|
114
|
+
|
|
115
|
+
Read `references/reroll-review.md`. Diagnose from what the user describes or shares
|
|
116
|
+
(frames, a clip, a description). Classify the failure, then give **one** change to make
|
|
117
|
+
before the next generation. Changing five things at once means you learn nothing from the reroll.
|
|
118
|
+
|
|
119
|
+
## Limitations
|
|
120
|
+
|
|
121
|
+
- It plans, diagnoses, and rewrites prompts; it does not generate, edit, or render video.
|
|
122
|
+
- Output quality depends on the target model's current clip limits and prompt handling, which change often. Check the model's own docs before trusting an adapter's defaults.
|
|
123
|
+
- Continuity locks hold only as far as the model honors them; long sequences may still drift and need a reroll.
|
|
124
|
+
- It has no way to see a clip unless the user shares frames, a file, or a description of what happened.
|
|
125
|
+
|
|
126
|
+
## Tone
|
|
127
|
+
|
|
128
|
+
Talk like a working crew: specific, fast, no hype. Use real film vocabulary (it helps the
|
|
129
|
+
models), but explain any term the user might not know in 3–5 words the first time.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Model prompting adapters
|
|
2
|
+
|
|
3
|
+
The crew's decisions are model-agnostic. This file turns them into the phrasing each model
|
|
4
|
+
family tends to follow best.
|
|
5
|
+
|
|
6
|
+
> Video models change every few months. Treat these as conservative defaults, check the
|
|
7
|
+
> model's current docs for hard limits (clip length, resolution, prompt length), and send a
|
|
8
|
+
> PR when something here goes stale.
|
|
9
|
+
|
|
10
|
+
## Generic adapter (use when the model is unknown)
|
|
11
|
+
|
|
12
|
+
One paragraph, present tense, concrete, in this order:
|
|
13
|
+
|
|
14
|
+
1. Shot size, lens, camera move
|
|
15
|
+
2. Subject (verbatim from the continuity bible)
|
|
16
|
+
3. The one action
|
|
17
|
+
4. Location (verbatim)
|
|
18
|
+
5. Lighting
|
|
19
|
+
6. Look / film stock
|
|
20
|
+
7. Audio (only if the model generates audio)
|
|
21
|
+
|
|
22
|
+
~40–90 words. Longer is fine for open-weights models; shorter for models with prompt
|
|
23
|
+
rewriting ("prompt enhancement") turned on.
|
|
24
|
+
|
|
25
|
+
## Open-weights models (Wan, HunyuanVideo, LTX-Video, Mochi, CogVideoX…)
|
|
26
|
+
|
|
27
|
+
- **Be literal and long.** These models generally reward detailed, chronological,
|
|
28
|
+
paragraph-style descriptions (roughly 60–150 words): what's in frame, what moves, in
|
|
29
|
+
what order.
|
|
30
|
+
- **Describe motion in sequence:** "…lifts the cup, pauses, then sets it down."
|
|
31
|
+
- **Use the negative prompt** if your workflow exposes one:
|
|
32
|
+
`blurry, warped hands, extra fingers, morphing, flicker, text, watermark, logo, static frame, oversaturated`
|
|
33
|
+
- **Seed discipline:** when rerolling to test a single change, keep the seed fixed so you
|
|
34
|
+
isolate the effect of the change.
|
|
35
|
+
- Clip length is bounded by frame count and VRAM. Plan short shots and cut them together.
|
|
36
|
+
|
|
37
|
+
## Kling
|
|
38
|
+
|
|
39
|
+
- Structure: subject → movement → scene → camera → lighting → atmosphere.
|
|
40
|
+
- Keep it tighter than open-weights prompts; one clear action.
|
|
41
|
+
- Clip length is chosen from presets (commonly 5 s or 10 s). Plan with the editor's
|
|
42
|
+
fixed-length rule.
|
|
43
|
+
- Negative prompt: use it where your version/interface exposes the field.
|
|
44
|
+
- Some newer versions can generate audio. If yours does and the user wants in-model
|
|
45
|
+
sound, apply the audio rules from the Veo section; otherwise keep sound out of the prompt.
|
|
46
|
+
- Image-to-video: describe only the motion and the camera; the image already carries the
|
|
47
|
+
look.
|
|
48
|
+
|
|
49
|
+
## Veo (and other models that generate audio)
|
|
50
|
+
|
|
51
|
+
- Write sound explicitly, as its own sentence(s):
|
|
52
|
+
- Dialogue: `The barista says, "Sorry — my fault."`
|
|
53
|
+
- SFX: `SFX: paper cup hits tile, liquid splash.`
|
|
54
|
+
- Ambience: `Ambient café murmur, espresso machine hiss.`
|
|
55
|
+
- Keep dialogue short (one line per shot). Long lines drift out of sync.
|
|
56
|
+
- Camera and lens terminology is followed well; use it.
|
|
57
|
+
|
|
58
|
+
## Seedance and other multi-shot-capable models
|
|
59
|
+
|
|
60
|
+
- If your version supports multiple shots in one generation, you can write the sequence
|
|
61
|
+
explicitly: `Shot 1: … Cut to Shot 2: …`. Keep each shot to one action and restate the
|
|
62
|
+
character descriptors in each.
|
|
63
|
+
- If you need tight control, still generate shot by shot and cut in the edit.
|
|
64
|
+
|
|
65
|
+
## Hailuo / MiniMax
|
|
66
|
+
|
|
67
|
+
- Camera moves can be stated plainly in the prompt ("slow push-in", "pan left"). Some
|
|
68
|
+
versions and front-ends accept bracketed camera commands such as `[Push in]` or
|
|
69
|
+
`[Pan left]`; use them if your interface documents them.
|
|
70
|
+
- Keep one move per shot even when the syntax allows chaining several.
|
|
71
|
+
|
|
72
|
+
## Runway / Luma / Pika / Sora-style prompt-enhanced models
|
|
73
|
+
|
|
74
|
+
- These often rewrite your prompt. Put the non-negotiables first (subject descriptors,
|
|
75
|
+
the action, the camera move) and keep the prompt short enough that the rewrite doesn't
|
|
76
|
+
bury them.
|
|
77
|
+
- For image-to-video: motion + camera only.
|
|
78
|
+
|
|
79
|
+
## Image-to-video (every model)
|
|
80
|
+
|
|
81
|
+
The most reliable way to keep a character consistent across shots:
|
|
82
|
+
1. Generate or pick **one** reference still per character/location.
|
|
83
|
+
2. Use it as the first frame for every shot where they appear.
|
|
84
|
+
3. In the prompt, describe **only** what moves and how the camera moves.
|
|
85
|
+
|
|
86
|
+
## Clip length cheat sheet
|
|
87
|
+
|
|
88
|
+
Check your model's current limit. Common ranges in practice: 4–10 s per generation.
|
|
89
|
+
The editor role should never plan a shot longer than the limit minus ~1 s of handles.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Reroll review: change one thing, then reroll
|
|
2
|
+
|
|
3
|
+
AI video is probabilistic. Some rerolls are just the dice. Many are the prompt. The job
|
|
4
|
+
here is to tell those apart and change **one** thing at a time, so each reroll teaches you
|
|
5
|
+
something.
|
|
6
|
+
|
|
7
|
+
## 1. Classify the failure
|
|
8
|
+
|
|
9
|
+
| Class | Looks like | Most likely fix |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| **Dice** | The prompt is followed, the clip is just weaker than the last one | Reroll unchanged (new seed). Nothing to fix. |
|
|
12
|
+
| **Ignored action** | The key event doesn't happen (the cup never spills) | Make the action the *first* clause; describe its start and end; cut everything else in the shot |
|
|
13
|
+
| **Two things fighting** | Half an action, half another | Split into two shots |
|
|
14
|
+
| **Physics break** | Liquid behaves like jelly, objects pass through each other | Frame tighter, slow the action, simplify the background, lock the camera |
|
|
15
|
+
| **Identity drift** | Character looks different from other shots | Paste the continuity descriptors verbatim, or switch to image-to-video from one reference |
|
|
16
|
+
| **Camera chaos** | Warped geometry, swimming background | One move only, slower, or locked-off |
|
|
17
|
+
| **Look drift** | Color/light changes between shots | Paste the gaffer's line verbatim; name the source and color temperature |
|
|
18
|
+
| **Artifacting** | Extra fingers, melting faces, flicker | Tighter framing, fewer subjects, add the negative prompt if supported |
|
|
19
|
+
| **Text garbage** | Nonsense letters | Remove readable text from the shot |
|
|
20
|
+
|
|
21
|
+
## 2. Decide
|
|
22
|
+
|
|
23
|
+
- Same failure twice in a row → it's the prompt, not the dice. Apply the fix.
|
|
24
|
+
- Different failures each time → the shot is too ambitious. Simplify it (split, tighten, slow down).
|
|
25
|
+
- 3+ rerolls with no improvement → go back to the DP and director: re-block the shot.
|
|
26
|
+
|
|
27
|
+
## 3. Report format
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
CLASS: Ignored action
|
|
31
|
+
EVIDENCE: in 4/4 clips the cup lands upright; no liquid leaves it
|
|
32
|
+
CHANGE (one): lead with the action — "Black coffee sloshes out of a tipping paper cup…" —
|
|
33
|
+
and cut the barista from the frame
|
|
34
|
+
KEEP: lens, light, seed policy
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## A worked example
|
|
38
|
+
|
|
39
|
+
The upstream [ai-film-crew repository](https://github.com/HEOJUNFO/ai-film-crew) shows ten generations of one prompt in its `assets/ten-rerolls.png`:
|
|
40
|
+
*"A barista bumps a customer's elbow and a paper coffee cup slips and spills onto the café
|
|
41
|
+
floor next to white sneakers, slow motion, handheld close-up, warm morning light."*
|
|
42
|
+
|
|
43
|
+
Across ten rerolls the cup falls, rolls, or lands upright. The spill (the whole point)
|
|
44
|
+
barely happens. Diagnosis: **two things fighting** (the bump and the spill share one shot)
|
|
45
|
+
plus **ignored action** (the spill is the last clause). The crew fix is in the upstream repository's
|
|
46
|
+
`examples/coffee-spill-15s/SHOT_LIST.md`.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Director
|
|
2
|
+
|
|
3
|
+
**Job:** decide what this video is *for* and what happens, beat by beat. Everyone else
|
|
4
|
+
executes your call.
|
|
5
|
+
|
|
6
|
+
## Output (keep it under ~12 lines)
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
LOGLINE: one sentence, subject + action + turn.
|
|
10
|
+
INTENT: what the viewer should do/feel/understand at the end (one line).
|
|
11
|
+
HOOK (0–1.5 s): the first frame. Must be legible with sound off.
|
|
12
|
+
BEATS:
|
|
13
|
+
1. 0.0–2.5 s — …
|
|
14
|
+
2. 2.5–6.0 s — …
|
|
15
|
+
…
|
|
16
|
+
ENDING: button / reveal / loop point.
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
|
|
21
|
+
- **Open on motion or a question, never on an establishing shot.** In a vertical feed the
|
|
22
|
+
first 1.5 s decides whether anyone sees the rest.
|
|
23
|
+
- **One idea per video.** If you need "and also", it's two videos.
|
|
24
|
+
- **Beats are visible events,** not moods. "She realizes" is not a beat; "she stops
|
|
25
|
+
mid-sip and looks at the receipt" is.
|
|
26
|
+
- **Budget for the model.** A beat that needs complex physics (pouring, cloth tearing,
|
|
27
|
+
hands manipulating small objects, crowds interacting) gets its own short shot, framed
|
|
28
|
+
tight, with nothing else going on.
|
|
29
|
+
- **Loop if you can.** For short-form, an ending that cuts cleanly back to frame one
|
|
30
|
+
earns rewatches.
|
|
31
|
+
- Product videos: the product must be on screen, unobstructed, by beat 2. Hero it once,
|
|
32
|
+
in the gaffer's best light, with no hands in the hero shot. If hands are the point
|
|
33
|
+
(handmade, cooking, a demo), give them their own shots and keep the hero shot clean.
|
|
34
|
+
|
|
35
|
+
## Questions to ask yourself before handing off
|
|
36
|
+
|
|
37
|
+
- Could a stranger describe this video in one sentence after watching it once?
|
|
38
|
+
- Which beat would I cut if I had to lose 3 seconds? (Cut it now.)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Director of photography (DP)
|
|
2
|
+
|
|
3
|
+
**Job:** decide exactly what the camera sees in each shot and how it moves.
|
|
4
|
+
|
|
5
|
+
## Output: one line per shot
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
S1 ECU | 100mm macro | eye level | locked-off | 2.5 s
|
|
9
|
+
S2 MS | 35mm | low angle | slow push-in | 4 s
|
|
10
|
+
S3 WS | 24mm | high angle| handheld, drifting| 3 s
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Shot sizes: ECU (extreme close-up), CU, MCU (chest up), MS (waist up), MWS, WS (full body), EWS (establishing).
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
17
|
+
- **One camera move per shot.** Push-in, pull-out, pan, tilt, truck (sideways), pedestal
|
|
18
|
+
(up/down), orbit, handheld, or locked-off. Combining moves ("orbit while pushing in and
|
|
19
|
+
tilting up") is the #1 source of warped geometry.
|
|
20
|
+
- **Name the lens.** 24mm reads wide and energetic, 35–50mm natural, 85–135mm compressed
|
|
21
|
+
and intimate, macro for texture. Models respond to focal lengths.
|
|
22
|
+
- **Match move speed to duration.** A 3-second shot gets a *slow* move or none.
|
|
23
|
+
- **Tight on hard physics.** Pours, spills, hands and small objects: frame close, keep the
|
|
24
|
+
background simple, lock the camera or move it very slowly.
|
|
25
|
+
- **Vertical framing (9:16):** stack the composition vertically; keep faces in the upper
|
|
26
|
+
third and important action out of the bottom 15% (UI overlays live there).
|
|
27
|
+
- **Vary sizes between consecutive shots** (e.g. WS → CU), or the cut will look like a jump.
|
|
28
|
+
- Avoid "cinematic" as a camera instruction. It's a vibe, not a shot.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Editor
|
|
2
|
+
|
|
3
|
+
**Job:** make the shots add up to a video: durations, order, cuts, pacing. You think about
|
|
4
|
+
the timeline, not the frame.
|
|
5
|
+
|
|
6
|
+
## Output
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
TOTAL: 15.0 s (sum of shots, trimmed)
|
|
10
|
+
S1 2.5 s → hard cut
|
|
11
|
+
S2 4.0 s → match cut on motion
|
|
12
|
+
S3 3.0 s → smash cut
|
|
13
|
+
…
|
|
14
|
+
GENERATE: each shot +1 s handles (so S2 is generated at 5 s, used at 4 s)
|
|
15
|
+
HOOK CHECK: frame 1 is S1 ECU, motion starts at 0.2 s ✅
|
|
16
|
+
LOOP: last frame of S5 matches S1 composition ✅/❌
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
|
|
21
|
+
- **Fit the model.** Every shot must be ≤ the model's max clip length (see
|
|
22
|
+
`references/model-prompting.md`). If a beat needs longer, split it into two shots with a
|
|
23
|
+
change of angle.
|
|
24
|
+
- **Generate long, use short.** Plan 0.5–1 s of handles at each end. The first and last
|
|
25
|
+
frames of AI clips are often the weakest.
|
|
26
|
+
- **Fixed-length models** (only preset lengths such as 5 s / 10 s): generate at the
|
|
27
|
+
shortest preset and pick the strongest section. A 2.5 s shot uses the best 2.5 s of a
|
|
28
|
+
5 s clip; note which section in the timeline.
|
|
29
|
+
- **Short-form pacing:** 1.5–3 s per shot is normal; a 6 s static shot kills retention
|
|
30
|
+
unless something is happening in it.
|
|
31
|
+
- **Cut on action.** If S1 ends with a hand moving right, S2 should start with motion
|
|
32
|
+
continuing right.
|
|
33
|
+
- **Text goes in the edit,** not the prompt. Note captions/supers here with timings.
|
|
34
|
+
- Call out any shot that exists only for coverage. Coverage costs generations.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Gaffer
|
|
2
|
+
|
|
3
|
+
**Job:** light the scene so it looks intentional and stays consistent between shots.
|
|
4
|
+
|
|
5
|
+
## Output
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
TIME / SOURCE: late afternoon sun through west window (motivated)
|
|
9
|
+
KEY: camera-left, 45°, soft
|
|
10
|
+
FILL: low, bounce from white tabletop
|
|
11
|
+
RIM / BACK: warm sun edge on hair
|
|
12
|
+
COLOR TEMP: warm key ~3200K vs cool ambient ~5600K
|
|
13
|
+
CONTRAST: medium-high, deep shadows
|
|
14
|
+
PRACTICALS: pendant bulbs visible in background, slightly blown
|
|
15
|
+
LOOK: 35mm film, fine grain, mild halation
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Rules
|
|
19
|
+
|
|
20
|
+
- **Motivate the light.** Say where it comes from (window, neon sign, streetlight,
|
|
21
|
+
monitor glow). Unmotivated "dramatic lighting" gives you random results.
|
|
22
|
+
- **Same key direction in every shot of a scene,** or the cut breaks continuity.
|
|
23
|
+
- **Contrast beats brightness.** Flat, evenly lit prompts are what make AI video look
|
|
24
|
+
like AI video. Ask for shadows.
|
|
25
|
+
- Color: pick one warm/cool contrast and hold it. Write it in plain words plus a
|
|
26
|
+
temperature if useful.
|
|
27
|
+
- Night scenes: name the sources (sodium streetlight, phone screen, neon). "Dark" alone
|
|
28
|
+
gets you murk.
|
|
29
|
+
- Products: soft key, clean rim to separate from background, a highlight that shows the
|
|
30
|
+
material (gloss, brushed metal, glass).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Production designer
|
|
2
|
+
|
|
3
|
+
**Job:** make the world consistent. You write the **continuity bible**: the exact words
|
|
4
|
+
every other role must paste, verbatim, whenever a character, prop or location appears.
|
|
5
|
+
|
|
6
|
+
Video models have no memory between clips. The *only* continuity you get is identical
|
|
7
|
+
wording. Paraphrasing a character ("a woman in a red coat" → "the lady in crimson")
|
|
8
|
+
gives you a different person.
|
|
9
|
+
|
|
10
|
+
## Output
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
CHARACTERS
|
|
14
|
+
C1 <age range> <build> <hair: length, color, style> <skin tone> <face detail>,
|
|
15
|
+
wearing <top, color, material> and <bottom>, <one distinctive accessory>
|
|
16
|
+
LOCATIONS
|
|
17
|
+
L1 <place type>, <era/style>, <3 concrete set details>, <floor/wall materials>
|
|
18
|
+
PROPS
|
|
19
|
+
P1 <object>, <material>, <color>, <size cue>, <state: new/used/half-full…>
|
|
20
|
+
PALETTE
|
|
21
|
+
3–5 colors, named plainly ("mustard yellow, teal, off-white")
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Every entry gets two versions:
|
|
25
|
+
- **FULL** — the whole description, for shots where the whole subject is in frame.
|
|
26
|
+
- **TIGHT** — only what a close-up can see (e.g. `C1-TIGHT: weathered hands, short
|
|
27
|
+
clean nails, a thin silver ring, sleeves of a faded olive sweatshirt pushed up`).
|
|
28
|
+
|
|
29
|
+
Close-ups use TIGHT verbatim; wider shots use FULL verbatim. Pasting a whole-person
|
|
30
|
+
description into an ECU of hands drags the rest of the person (and the set) into frame.
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- 20–35 words per character. Concrete nouns and colors, no adjectives like "beautiful".
|
|
35
|
+
- One **distinctive anchor** per character (a yellow beanie, a scar, round glasses).
|
|
36
|
+
Anchors survive model drift better than faces do.
|
|
37
|
+
- Avoid real people, brands and logos. Describe the *type* ("a white leather low-top
|
|
38
|
+
sneaker") not the brand.
|
|
39
|
+
- Props that matter to the story get a state ("a paper cup, lid off, full to the brim
|
|
40
|
+
with black coffee"). State is what makes the action physically possible.
|
|
41
|
+
- Keep locations simple enough to re-generate: 3 set details, not 12.
|
|
42
|
+
- If the user supplies a reference image, write the bible *from the image* so the text
|
|
43
|
+
and the image agree.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Script supervisor
|
|
2
|
+
|
|
3
|
+
**Job:** protect continuity and catch the shots that will fail *before* anyone spends a
|
|
4
|
+
generation on them. You have veto power: any shot you flag gets rewritten.
|
|
5
|
+
|
|
6
|
+
## Checklist (run on every shot)
|
|
7
|
+
|
|
8
|
+
**Continuity**
|
|
9
|
+
- [ ] Every recurring character/prop/location is pasted verbatim from the continuity bible.
|
|
10
|
+
- [ ] Key light direction and color temperature match the rest of the scene.
|
|
11
|
+
- [ ] Screen direction is consistent (subject moving left→right keeps moving left→right).
|
|
12
|
+
- [ ] Props are in the right state (the cup that spilled in S2 isn't full in S3).
|
|
13
|
+
|
|
14
|
+
**Feasibility**
|
|
15
|
+
- [ ] One subject action, one camera move.
|
|
16
|
+
- [ ] Duration ≤ model max, with handles.
|
|
17
|
+
- [ ] No readable text, logos, UI or signage in frame (unless the model handles text).
|
|
18
|
+
- [ ] Hard physics (liquids, cloth, hands with small objects, multiple people touching) is
|
|
19
|
+
framed tight, isolated, and given a simple background.
|
|
20
|
+
- [ ] Nothing depends on a specific real person's likeness or a trademark.
|
|
21
|
+
- [ ] Counts are small: "two dogs" works better than "five dogs".
|
|
22
|
+
|
|
23
|
+
**Unslop** (see `references/unslop.md`)
|
|
24
|
+
- [ ] No empty quality words ("stunning, 8k, masterpiece, hyper-realistic, cinematic").
|
|
25
|
+
- [ ] No mood-only instructions; every feeling is translated into something visible.
|
|
26
|
+
- [ ] Skin, materials and motion have texture and imperfection specified where it matters.
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
S2 ⚠️ two actions (pours AND turns to customer) → split into S2a / S2b
|
|
32
|
+
S4 ⚠️ sign text "OPEN" in frame → remove, add in edit
|
|
33
|
+
S3 ✅
|
|
34
|
+
HIGHEST RISK: S2a (liquid physics). Reroll plan: tighten to ECU, lock camera.
|
|
35
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Sound
|
|
2
|
+
|
|
3
|
+
**Job:** plan what the audience hears. Run this role only if the target model generates
|
|
4
|
+
audio, or the user will add music/SFX in the edit.
|
|
5
|
+
|
|
6
|
+
## Output
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
MUSIC: <genre, tempo in BPM, energy curve> (added in edit)
|
|
10
|
+
S1 SFX: ceramic clink, café murmur (low)
|
|
11
|
+
S2 DIALOGUE: C1: "Not again." (quiet, deadpan)
|
|
12
|
+
S3 SFX: liquid splash, sneaker squeak
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
17
|
+
- **Audio-capable models:** put spoken lines in double quotes with the speaker named, keep
|
|
18
|
+
lines under ~8 words per shot, and name 1–2 SFX plus ambience. Too many sound cues
|
|
19
|
+
produce mush.
|
|
20
|
+
- **Silent models:** don't write sound into the prompt at all. It wastes tokens and can
|
|
21
|
+
drift the visuals. Put sound in the edit notes.
|
|
22
|
+
- Cut points should land on beats of the music (tell the editor the BPM).
|
|
23
|
+
- Short-form: design for sound-off first. If a line is essential, it also goes in a caption.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# SHOT LIST — <title>
|
|
2
|
+
|
|
3
|
+
**Format:** <aspect> · <total length> · target model: <model>
|
|
4
|
+
**Mode:** text-to-video | image-to-video (reference: <file/description>)
|
|
5
|
+
**Brand / product:** <name, or "none given — generic">
|
|
6
|
+
**Logline:** <one sentence>
|
|
7
|
+
|
|
8
|
+
## Crew notes
|
|
9
|
+
**Director** — intent, hook, beats
|
|
10
|
+
**Production designer** — continuity bible (C1…, L1…, P1…)
|
|
11
|
+
**DP / Gaffer** — look summary in two lines
|
|
12
|
+
**Editor** — timeline summary
|
|
13
|
+
**Sound** — (if applicable)
|
|
14
|
+
**Script supervisor** — flags resolved
|
|
15
|
+
|
|
16
|
+
## Shots
|
|
17
|
+
| # | Time | Size · Lens · Move | Action (one) | Gen length | Risk |
|
|
18
|
+
|---|---|---|---|---|---|
|
|
19
|
+
| S1 | 0.0–2.5 | ECU · 100mm · locked | … | 4 s | low |
|
|
20
|
+
|
|
21
|
+
## Prompts
|
|
22
|
+
|
|
23
|
+
### S1
|
|
24
|
+
```
|
|
25
|
+
<prompt>
|
|
26
|
+
```
|
|
27
|
+
Negative (if supported): `<negative prompt>`
|
|
28
|
+
|
|
29
|
+
## Edit notes
|
|
30
|
+
- Captions / supers: <text> @ <time>
|
|
31
|
+
- Music / SFX: <cue> @ <time>
|
|
32
|
+
|
|
33
|
+
## Reroll plan
|
|
34
|
+
| Shot | Likely failure | Change before reroll |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| S1 | … | … |
|
|
37
|
+
|
|
38
|
+
**Highest-risk shot:** S? — <why>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Unslop: why AI video looks like AI video, and what to write instead
|
|
2
|
+
|
|
3
|
+
| Slop signal | Usual cause in the prompt | Write instead |
|
|
4
|
+
|---|---|---|
|
|
5
|
+
| Plastic, poreless skin | "beautiful", "flawless", "perfect skin" | "visible pores, slight shine on the forehead, faint under-eye shadows" |
|
|
6
|
+
| Everything evenly lit | no light source named | a motivated key ("hard sun through blinds, camera-left") and deep shadows |
|
|
7
|
+
| Floaty slow-motion drift | no speed given, "cinematic" | real-time speed, or a stated speed ("normal speed", "2x slow motion") |
|
|
8
|
+
| Camera wandering aimlessly | no camera instruction | one named move, or "locked-off tripod shot" |
|
|
9
|
+
| Morphing hands / objects | complex hand action, wide framing | tight framing, simple grip, one object, slow action |
|
|
10
|
+
| Faces changing between shots | paraphrased character descriptions | verbatim continuity-bible descriptors, or image-to-video from one reference |
|
|
11
|
+
| Oversaturated, HDR-ish color | "vibrant", "8k", "ultra HD" | a film look ("Kodak Portra 400, soft contrast, fine grain") and a limited palette |
|
|
12
|
+
| Symmetrical stock-footage framing | no composition choice | a lens, an angle and an off-center subject ("subject in left third") |
|
|
13
|
+
| Gibberish text | signage, labels, UI in frame | no readable text in frame; add text in the edit |
|
|
14
|
+
| Nothing actually happens | a mood instead of an action | one visible, physical action with a start and an end |
|
|
15
|
+
|
|
16
|
+
## Words that add nothing
|
|
17
|
+
|
|
18
|
+
`stunning, masterpiece, best quality, 8k, 4k, ultra-detailed, hyper-realistic, award-winning, trending, epic, cinematic (alone), breathtaking`
|
|
19
|
+
|
|
20
|
+
Delete them. They don't hurt much on their own, but they push out words that would help.
|
|
21
|
+
|
|
22
|
+
## Words that tend to help
|
|
23
|
+
|
|
24
|
+
- A **lens** (24mm, 50mm, 85mm, macro)
|
|
25
|
+
- A **camera move** (slow push-in, locked-off, handheld)
|
|
26
|
+
- A **light source** (window light, sodium streetlight, overhead fluorescent)
|
|
27
|
+
- A **film stock or look** (35mm film grain, Super 8, VHS camcorder, iPhone front camera)
|
|
28
|
+
- **Imperfection** (scuffed, fingerprints, wrinkled, condensation, frayed)
|
|
29
|
+
- **Real-time physics cues** (splashes, drips, recoils, bounces)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testdriver-e2e-testing
|
|
3
|
+
description: "Build E2E tests with TestDriver.ai, the AI code reviewer that runs every pull request in a real desktop sandbox, finds bugs, and builds regression tests"
|
|
4
|
+
category: testing
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: testdriverai/testdriverai
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-09-24"
|
|
10
|
+
author: testdriverai
|
|
11
|
+
tags: [testing, e2e, qa, automation, computer-use]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: "Apache-2.0"
|
|
14
|
+
license_source: "https://github.com/testdriverai/testdriverai/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# TestDriver End-to-End Testing
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
[TestDriver](https://testdriver.ai) is an AI code reviewer that actually runs your app. It automatically runs every pull request in a real desktop sandbox, finds bugs, and builds regression tests. Tests control browsers and native applications using natural language element descriptions and AI vision, and run as Vitest suites. This skill teaches an agent how to author, run, and debug TestDriver tests.
|
|
22
|
+
|
|
23
|
+
## When to Use This Skill
|
|
24
|
+
|
|
25
|
+
- Use when you need to write an end-to-end test for a web or desktop application
|
|
26
|
+
- Use when automating a UI workflow that has no stable selectors (canvas, Electron, native apps)
|
|
27
|
+
- Use when the user asks to verify that a page or flow works ("check if the login page works")
|
|
28
|
+
- Use when debugging a failing TestDriver test
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
### Step 1: Set up the project
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx testdriverai init
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This scaffolds `package.json`, example tests, `vitest.config.mjs`, and a GitHub Actions workflow. The user must set `TD_API_KEY` in `.env` (get a key at https://console.testdriver.ai/team).
|
|
39
|
+
|
|
40
|
+
### Step 2: Write a test
|
|
41
|
+
|
|
42
|
+
Tests are Vitest suites using the TestDriver hooks:
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
import { describe, expect, it } from "vitest";
|
|
46
|
+
import { TestDriver } from "testdriverai/vitest/hooks";
|
|
47
|
+
|
|
48
|
+
describe("Login", () => {
|
|
49
|
+
it("signs in successfully", async (context) => {
|
|
50
|
+
const testdriver = TestDriver(context);
|
|
51
|
+
await testdriver.provision.chrome({ url: "https://example.com/login" });
|
|
52
|
+
|
|
53
|
+
const email = await testdriver.find("email input field");
|
|
54
|
+
await email.click();
|
|
55
|
+
await testdriver.type("user@example.com");
|
|
56
|
+
|
|
57
|
+
const submit = await testdriver.find("Sign In button");
|
|
58
|
+
await submit.click();
|
|
59
|
+
|
|
60
|
+
const result = await testdriver.assert("the dashboard is visible");
|
|
61
|
+
expect(result).toBeTruthy();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Step 3: Run and iterate
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
vitest run tests/login.test.mjs
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Screenshots are captured automatically before and after every command and saved to `.testdriver/screenshots/`, named with the source line number for easy debugging.
|
|
73
|
+
|
|
74
|
+
## Examples
|
|
75
|
+
|
|
76
|
+
### Example 1: Testing a desktop (Electron) app
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
await testdriver.provision.electron({ appPath: "./dist/my-app" });
|
|
80
|
+
const menu = await testdriver.find("File menu in the menu bar");
|
|
81
|
+
await menu.click();
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Example 2: Waiting for slow elements
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
const done = await testdriver.find("Loading complete indicator", { timeout: 30000 });
|
|
88
|
+
await done.click();
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Best Practices
|
|
92
|
+
|
|
93
|
+
- ✅ Use specific element descriptions ("blue Sign In button in the header", not "button")
|
|
94
|
+
- ✅ Set both `testTimeout` and `hookTimeout` to 900000 in `vitest.config.mjs`
|
|
95
|
+
- ✅ Add `assert()` calls for verifiable pass/fail conditions
|
|
96
|
+
- ✅ Always `await` every TestDriver call
|
|
97
|
+
- ❌ Do not use `npx vitest`; run `vitest run` directly
|
|
98
|
+
- ❌ Do not rely on CSS selectors; TestDriver locates elements visually
|
|
99
|
+
|
|
100
|
+
## Limitations
|
|
101
|
+
|
|
102
|
+
- Requires a TestDriver API key (`TD_API_KEY`) and network access to provision sandboxes.
|
|
103
|
+
- Only works with Vitest as the test runner.
|
|
104
|
+
- This skill does not replace environment-specific validation, testing, or expert review.
|
|
105
|
+
|
|
106
|
+
## Security & Safety Notes
|
|
107
|
+
|
|
108
|
+
- `npx testdriverai init` writes project files to the current directory; run it only in a project you intend to modify.
|
|
109
|
+
- The `TD_API_KEY` credential belongs in `.env` (gitignored by the scaffold). Never commit it.
|
|
110
|
+
- Tests execute inside an isolated remote sandbox, not on the local machine.
|
|
111
|
+
|
|
112
|
+
## Common Pitfalls
|
|
113
|
+
|
|
114
|
+
- **Problem:** Cleanup hooks fail with a 10s timeout.
|
|
115
|
+
**Solution:** Set `hookTimeout: 900000` in `vitest.config.mjs`; sandbox teardown and recording uploads take longer than Vitest's default.
|
|
116
|
+
- **Problem:** Scrolling does nothing.
|
|
117
|
+
**Solution:** An input field has focus. Press Escape or click the page background first, then scroll.
|
|
118
|
+
|
|
119
|
+
## Related Skills
|
|
120
|
+
|
|
121
|
+
- `@webapp-testing` - Playwright-based alternative for local web apps with stable DOM selectors
|
package/package.json
CHANGED
package/skills_index.json
CHANGED
|
@@ -22486,6 +22486,39 @@
|
|
|
22486
22486
|
"reasons": []
|
|
22487
22487
|
}
|
|
22488
22488
|
},
|
|
22489
|
+
{
|
|
22490
|
+
"id": "film-crew",
|
|
22491
|
+
"path": "skills/film-crew",
|
|
22492
|
+
"category": "media",
|
|
22493
|
+
"name": "film-crew",
|
|
22494
|
+
"description": "Turn a one-line AI video idea into a shot list and per-shot, model-ready prompts via a film crew (director, DP, gaffer, editor, script supervisor). Also fixes failing video prompts and diagnoses bad clips before a reroll. Works with Wan, LTX, Kling, Veo, Seedance, Hailuo, Runway.",
|
|
22495
|
+
"risk": "safe",
|
|
22496
|
+
"source": "https://github.com/HEOJUNFO/ai-film-crew/tree/533f61be2741c10932c6c86e47777cac9ffe3fe4/skills/film-crew",
|
|
22497
|
+
"date_added": "2026-09-25",
|
|
22498
|
+
"plugin": {
|
|
22499
|
+
"targets": {
|
|
22500
|
+
"codex": "supported",
|
|
22501
|
+
"claude": "supported"
|
|
22502
|
+
},
|
|
22503
|
+
"setup": {
|
|
22504
|
+
"type": "none",
|
|
22505
|
+
"summary": "",
|
|
22506
|
+
"docs": null
|
|
22507
|
+
},
|
|
22508
|
+
"reasons": []
|
|
22509
|
+
},
|
|
22510
|
+
"source_type": "official",
|
|
22511
|
+
"source_repo": "HEOJUNFO/ai-film-crew",
|
|
22512
|
+
"license": "MIT",
|
|
22513
|
+
"license_source": "https://github.com/HEOJUNFO/ai-film-crew/blob/533f61be2741c10932c6c86e47777cac9ffe3fe4/LICENSE",
|
|
22514
|
+
"tags": [
|
|
22515
|
+
"video",
|
|
22516
|
+
"text-to-video",
|
|
22517
|
+
"shot-list",
|
|
22518
|
+
"prompting",
|
|
22519
|
+
"film"
|
|
22520
|
+
]
|
|
22521
|
+
},
|
|
22489
22522
|
{
|
|
22490
22523
|
"id": "find-bugs",
|
|
22491
22524
|
"path": "skills/find-bugs",
|
|
@@ -36412,6 +36445,39 @@
|
|
|
36412
36445
|
"reasons": []
|
|
36413
36446
|
}
|
|
36414
36447
|
},
|
|
36448
|
+
{
|
|
36449
|
+
"id": "mcp-dependency-drift-audit",
|
|
36450
|
+
"path": "skills/mcp-dependency-drift-audit",
|
|
36451
|
+
"category": "security",
|
|
36452
|
+
"name": "mcp-dependency-drift-audit",
|
|
36453
|
+
"description": "Statically audit MCP configs for mutable npm/npx package references before approval or CI, without executing discovered MCP servers.",
|
|
36454
|
+
"risk": "safe",
|
|
36455
|
+
"source": "https://github.com/tomelias10/mcp-drift-check",
|
|
36456
|
+
"date_added": "2026-09-25",
|
|
36457
|
+
"plugin": {
|
|
36458
|
+
"targets": {
|
|
36459
|
+
"codex": "supported",
|
|
36460
|
+
"claude": "supported"
|
|
36461
|
+
},
|
|
36462
|
+
"setup": {
|
|
36463
|
+
"type": "none",
|
|
36464
|
+
"summary": "",
|
|
36465
|
+
"docs": null
|
|
36466
|
+
},
|
|
36467
|
+
"reasons": []
|
|
36468
|
+
},
|
|
36469
|
+
"source_type": "community",
|
|
36470
|
+
"source_repo": "tomelias10/mcp-drift-check",
|
|
36471
|
+
"license": "MIT",
|
|
36472
|
+
"license_source": "https://github.com/tomelias10/mcp-drift-check/blob/v0/LICENSE",
|
|
36473
|
+
"tags": [
|
|
36474
|
+
"mcp",
|
|
36475
|
+
"ai-security",
|
|
36476
|
+
"supply-chain",
|
|
36477
|
+
"devsecops",
|
|
36478
|
+
"sarif"
|
|
36479
|
+
]
|
|
36480
|
+
},
|
|
36415
36481
|
{
|
|
36416
36482
|
"id": "mcp-server-security",
|
|
36417
36483
|
"path": "skills/mcp-server-security",
|
|
@@ -39102,6 +39168,137 @@
|
|
|
39102
39168
|
"research"
|
|
39103
39169
|
]
|
|
39104
39170
|
},
|
|
39171
|
+
{
|
|
39172
|
+
"id": "nexrad-mosaic-access",
|
|
39173
|
+
"path": "skills/nexrad-mosaic-access",
|
|
39174
|
+
"category": "data",
|
|
39175
|
+
"name": "nexrad-mosaic-access",
|
|
39176
|
+
"description": "Access official NOAA/NCEP MRMS radar and multisensor composites for a region and time; validate product, grid, domain, quality, timestamp, and provenance.",
|
|
39177
|
+
"risk": "safe",
|
|
39178
|
+
"source": "self",
|
|
39179
|
+
"date_added": "2026-09-25",
|
|
39180
|
+
"plugin": {
|
|
39181
|
+
"targets": {
|
|
39182
|
+
"codex": "supported",
|
|
39183
|
+
"claude": "supported"
|
|
39184
|
+
},
|
|
39185
|
+
"setup": {
|
|
39186
|
+
"type": "none",
|
|
39187
|
+
"summary": "",
|
|
39188
|
+
"docs": null
|
|
39189
|
+
},
|
|
39190
|
+
"reasons": []
|
|
39191
|
+
},
|
|
39192
|
+
"source_type": "self",
|
|
39193
|
+
"tags": [
|
|
39194
|
+
"weather",
|
|
39195
|
+
"nexrad",
|
|
39196
|
+
"mrms",
|
|
39197
|
+
"mosaic",
|
|
39198
|
+
"qpe",
|
|
39199
|
+
"vil",
|
|
39200
|
+
"vii",
|
|
39201
|
+
"mesh",
|
|
39202
|
+
"composite-products"
|
|
39203
|
+
]
|
|
39204
|
+
},
|
|
39205
|
+
{
|
|
39206
|
+
"id": "nexrad-mosaic-construction",
|
|
39207
|
+
"path": "skills/nexrad-mosaic-construction",
|
|
39208
|
+
"category": "analysis",
|
|
39209
|
+
"name": "nexrad-mosaic-construction",
|
|
39210
|
+
"description": "Construct a quality-aware NEXRAD multi-radar mosaic from aligned single-site products with explicit coverage, beam geometry, quality weighting, overlap resolution, and provenance.",
|
|
39211
|
+
"risk": "safe",
|
|
39212
|
+
"source": "self",
|
|
39213
|
+
"date_added": "2026-09-25",
|
|
39214
|
+
"plugin": {
|
|
39215
|
+
"targets": {
|
|
39216
|
+
"codex": "supported",
|
|
39217
|
+
"claude": "supported"
|
|
39218
|
+
},
|
|
39219
|
+
"setup": {
|
|
39220
|
+
"type": "none",
|
|
39221
|
+
"summary": "",
|
|
39222
|
+
"docs": null
|
|
39223
|
+
},
|
|
39224
|
+
"reasons": []
|
|
39225
|
+
},
|
|
39226
|
+
"source_type": "self",
|
|
39227
|
+
"tags": [
|
|
39228
|
+
"weather",
|
|
39229
|
+
"nexrad",
|
|
39230
|
+
"mosaic",
|
|
39231
|
+
"multi-radar",
|
|
39232
|
+
"quality-weighting",
|
|
39233
|
+
"coverage",
|
|
39234
|
+
"overlap-resolution"
|
|
39235
|
+
]
|
|
39236
|
+
},
|
|
39237
|
+
{
|
|
39238
|
+
"id": "nexrad-product-access",
|
|
39239
|
+
"path": "skills/nexrad-product-access",
|
|
39240
|
+
"category": "data",
|
|
39241
|
+
"name": "nexrad-product-access",
|
|
39242
|
+
"description": "Discover and access NEXRAD data for a selected radar site, time, product, or Level II moment using completed archive volumes, real-time chunks, or supported Level III sources with metadata validation.",
|
|
39243
|
+
"risk": "safe",
|
|
39244
|
+
"source": "self",
|
|
39245
|
+
"date_added": "2026-09-25",
|
|
39246
|
+
"plugin": {
|
|
39247
|
+
"targets": {
|
|
39248
|
+
"codex": "supported",
|
|
39249
|
+
"claude": "supported"
|
|
39250
|
+
},
|
|
39251
|
+
"setup": {
|
|
39252
|
+
"type": "none",
|
|
39253
|
+
"summary": "",
|
|
39254
|
+
"docs": null
|
|
39255
|
+
},
|
|
39256
|
+
"reasons": []
|
|
39257
|
+
},
|
|
39258
|
+
"source_type": "self",
|
|
39259
|
+
"tags": [
|
|
39260
|
+
"weather",
|
|
39261
|
+
"nexrad",
|
|
39262
|
+
"level-ii",
|
|
39263
|
+
"level-iii",
|
|
39264
|
+
"radar-products",
|
|
39265
|
+
"single-site",
|
|
39266
|
+
"aws-s3"
|
|
39267
|
+
]
|
|
39268
|
+
},
|
|
39269
|
+
{
|
|
39270
|
+
"id": "nexrad-radar-visualization",
|
|
39271
|
+
"path": "skills/nexrad-radar-visualization",
|
|
39272
|
+
"category": "analysis",
|
|
39273
|
+
"name": "nexrad-radar-visualization",
|
|
39274
|
+
"description": "Plot NEXRAD Level II/III site scans and decoded radar mosaics with correct radar geometry, map grids, units, quality masks, timestamps, and provenance.",
|
|
39275
|
+
"risk": "safe",
|
|
39276
|
+
"source": "self",
|
|
39277
|
+
"date_added": "2026-09-25",
|
|
39278
|
+
"plugin": {
|
|
39279
|
+
"targets": {
|
|
39280
|
+
"codex": "supported",
|
|
39281
|
+
"claude": "supported"
|
|
39282
|
+
},
|
|
39283
|
+
"setup": {
|
|
39284
|
+
"type": "none",
|
|
39285
|
+
"summary": "",
|
|
39286
|
+
"docs": null
|
|
39287
|
+
},
|
|
39288
|
+
"reasons": []
|
|
39289
|
+
},
|
|
39290
|
+
"source_type": "self",
|
|
39291
|
+
"tags": [
|
|
39292
|
+
"weather",
|
|
39293
|
+
"nexrad",
|
|
39294
|
+
"radar-plotting",
|
|
39295
|
+
"ppi",
|
|
39296
|
+
"velocity",
|
|
39297
|
+
"dual-pol",
|
|
39298
|
+
"cross-section",
|
|
39299
|
+
"visualization"
|
|
39300
|
+
]
|
|
39301
|
+
},
|
|
39105
39302
|
{
|
|
39106
39303
|
"id": "nextjs-app-router-patterns",
|
|
39107
39304
|
"path": "skills/nextjs-app-router-patterns",
|
|
@@ -45046,6 +45243,40 @@
|
|
|
45046
45243
|
"coaching"
|
|
45047
45244
|
]
|
|
45048
45245
|
},
|
|
45246
|
+
{
|
|
45247
|
+
"id": "radar-satellite-analysis",
|
|
45248
|
+
"path": "skills/radar-satellite-analysis",
|
|
45249
|
+
"category": "analysis",
|
|
45250
|
+
"name": "radar-satellite-analysis",
|
|
45251
|
+
"description": "Interpret weather radar and satellite observations by validating product metadata and geometry, deriving storm and cloud structures, tracking evolution, and quantifying uncertainty.",
|
|
45252
|
+
"risk": "safe",
|
|
45253
|
+
"source": "self",
|
|
45254
|
+
"date_added": "2026-09-25",
|
|
45255
|
+
"plugin": {
|
|
45256
|
+
"targets": {
|
|
45257
|
+
"codex": "supported",
|
|
45258
|
+
"claude": "supported"
|
|
45259
|
+
},
|
|
45260
|
+
"setup": {
|
|
45261
|
+
"type": "none",
|
|
45262
|
+
"summary": "",
|
|
45263
|
+
"docs": null
|
|
45264
|
+
},
|
|
45265
|
+
"reasons": []
|
|
45266
|
+
},
|
|
45267
|
+
"source_type": "self",
|
|
45268
|
+
"tags": [
|
|
45269
|
+
"weather",
|
|
45270
|
+
"radar",
|
|
45271
|
+
"satellite",
|
|
45272
|
+
"nexrad",
|
|
45273
|
+
"goes",
|
|
45274
|
+
"nowcasting",
|
|
45275
|
+
"storm-analysis",
|
|
45276
|
+
"remote-sensing",
|
|
45277
|
+
"uncertainty"
|
|
45278
|
+
]
|
|
45279
|
+
},
|
|
45049
45280
|
{
|
|
45050
45281
|
"id": "radare2",
|
|
45051
45282
|
"path": "skills/radare2",
|
|
@@ -54070,6 +54301,39 @@
|
|
|
54070
54301
|
"source_type": "community",
|
|
54071
54302
|
"source_repo": "amElnagdy/guard-skills"
|
|
54072
54303
|
},
|
|
54304
|
+
{
|
|
54305
|
+
"id": "testdriver-e2e-testing",
|
|
54306
|
+
"path": "skills/testdriver-e2e-testing",
|
|
54307
|
+
"category": "testing",
|
|
54308
|
+
"name": "testdriver-e2e-testing",
|
|
54309
|
+
"description": "Build E2E tests with TestDriver.ai, the AI code reviewer that runs every pull request in a real desktop sandbox, finds bugs, and builds regression tests",
|
|
54310
|
+
"risk": "safe",
|
|
54311
|
+
"source": "community",
|
|
54312
|
+
"date_added": "2026-09-24",
|
|
54313
|
+
"plugin": {
|
|
54314
|
+
"targets": {
|
|
54315
|
+
"codex": "supported",
|
|
54316
|
+
"claude": "supported"
|
|
54317
|
+
},
|
|
54318
|
+
"setup": {
|
|
54319
|
+
"type": "none",
|
|
54320
|
+
"summary": "",
|
|
54321
|
+
"docs": null
|
|
54322
|
+
},
|
|
54323
|
+
"reasons": []
|
|
54324
|
+
},
|
|
54325
|
+
"source_type": "official",
|
|
54326
|
+
"source_repo": "testdriverai/testdriverai",
|
|
54327
|
+
"license": "Apache-2.0",
|
|
54328
|
+
"license_source": "https://github.com/testdriverai/testdriverai/blob/main/LICENSE",
|
|
54329
|
+
"tags": [
|
|
54330
|
+
"testing",
|
|
54331
|
+
"e2e",
|
|
54332
|
+
"qa",
|
|
54333
|
+
"automation",
|
|
54334
|
+
"computer-use"
|
|
54335
|
+
]
|
|
54336
|
+
},
|
|
54073
54337
|
{
|
|
54074
54338
|
"id": "testing-patterns",
|
|
54075
54339
|
"path": "skills/testing-patterns",
|