opencode-skills-collection 4.0.73 → 4.0.75
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 +16 -1
- package/bundled-skills/claude-api/SKILL.md +4 -4
- package/bundled-skills/claude-api/curl/examples.md +5 -5
- package/bundled-skills/claude-api/java/claude-api.md +1 -1
- package/bundled-skills/claude-api/php/claude-api.md +2 -2
- package/bundled-skills/claude-api/python/claude-api/README.md +13 -13
- package/bundled-skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled-skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled-skills/claude-api/python/claude-api/streaming.md +6 -6
- package/bundled-skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled-skills/claude-api/ruby/claude-api.md +3 -3
- package/bundled-skills/claude-api/shared/error-codes.md +2 -2
- package/bundled-skills/claude-api/shared/live-sources.md +1 -1
- package/bundled-skills/claude-api/shared/models.md +4 -4
- package/bundled-skills/claude-api/shared/tool-use-concepts.md +2 -2
- package/bundled-skills/claude-api/typescript/claude-api/README.md +12 -12
- package/bundled-skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled-skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled-skills/claude-api/typescript/claude-api/streaming.md +4 -4
- package/bundled-skills/claude-api/typescript/claude-api/tool-use.md +14 -14
- package/bundled-skills/electron-drive-skill/LICENSE +21 -0
- package/bundled-skills/electron-drive-skill/README.md +172 -0
- package/bundled-skills/electron-drive-skill/SKILL.md +237 -0
- package/bundled-skills/electron-drive-skill/drive.config.json.example +10 -0
- package/bundled-skills/electron-drive-skill/package.json +28 -0
- package/bundled-skills/electron-drive-skill/scripts/daemon.mjs +352 -0
- package/bundled-skills/electron-drive-skill/scripts/drive.mjs +250 -0
- package/bundled-skills/electron-drive-skill/scripts/lib.mjs +165 -0
- package/bundled-skills/electron-drive-skill/scripts/lib.test.mjs +56 -0
- 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/mcp-dependency-drift-audit/SKILL.md +169 -0
- package/bundled-skills/nexrad-mosaic-access/SKILL.md +297 -0
- package/bundled-skills/nexrad-mosaic-construction/SKILL.md +277 -0
- package/bundled-skills/nexrad-product-access/SKILL.md +258 -0
- package/bundled-skills/nexrad-radar-visualization/SKILL.md +318 -0
- package/bundled-skills/radar-satellite-analysis/SKILL.md +314 -0
- package/bundled-skills/testdriver-e2e-testing/SKILL.md +121 -0
- package/bundled-skills/traderspy-market-briefing/SKILL.md +132 -0
- package/bundled-skills/traderspy-market-screener/SKILL.md +182 -0
- package/bundled-skills/traderspy-market-screener/references/condition-cookbook.md +70 -0
- package/bundled-skills/traderspy-position-check/SKILL.md +130 -0
- package/bundled-skills/traderspy-position-check/references/risk-math.md +60 -0
- package/bundled-skills/traderspy-smart-money/SKILL.md +151 -0
- package/bundled-skills/traderspy-smart-money/references/exchange-notes.md +40 -0
- package/bundled-skills/traderspy-technical-analysis/SKILL.md +162 -0
- package/bundled-skills/traderspy-technical-analysis/references/derivatives-guide.md +57 -0
- package/bundled-skills/traderspy-technical-analysis/references/indicator-guide.md +47 -0
- package/bundled-skills/traderspy-trading-signals/SKILL.md +156 -0
- package/bundled-skills/traderspy-trading-signals/references/signal-fields.md +64 -0
- package/bundled-skills/unified-ai-gateway/SKILL.md +3 -3
- package/package.json +1 -1
- package/skills_index.json +499 -1
|
@@ -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,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-dependency-drift-audit
|
|
3
|
+
description: "Statically audit MCP configs for mutable npm/npx package references before approval or CI, without executing discovered MCP servers."
|
|
4
|
+
category: security
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "https://github.com/tomelias10/mcp-drift-check"
|
|
7
|
+
source_repo: tomelias10/mcp-drift-check
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-09-25"
|
|
10
|
+
author: tomelias10
|
|
11
|
+
tags: [mcp, ai-security, supply-chain, devsecops, sarif]
|
|
12
|
+
tools: [claude, cursor, gemini, codex, windsurf]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: "https://github.com/tomelias10/mcp-drift-check/blob/v0/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# MCP Dependency Drift Audit
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Audit Model Context Protocol configuration files for npm/npx package references that can resolve to different code after the configuration was reviewed. The workflow is deliberately static: it reads config text, classifies version selectors, and recommends reproducibility fixes without starting discovered MCP servers.
|
|
22
|
+
|
|
23
|
+
Dependency mutability is a review-boundary signal, not proof that a package is malicious, vulnerable, or compromised.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Before approving `.mcp.json`, Cursor, VS Code, GitHub Copilot, Claude, or Windsurf MCP configuration.
|
|
28
|
+
- When adding an MCP configuration gate to pull requests or CI.
|
|
29
|
+
- During an AI-agent security review where npm/npx-backed MCP servers are configured.
|
|
30
|
+
- When checking whether a previously reviewed MCP config can silently resolve to newer package code.
|
|
31
|
+
|
|
32
|
+
## How It Works
|
|
33
|
+
|
|
34
|
+
### Step 1: Locate and read MCP configs without executing them
|
|
35
|
+
|
|
36
|
+
Inspect known project paths such as `.mcp.json`, `.github/mcp.json`, `.cursor/mcp.json`, `.vscode/mcp.json`, and `.windsurf/mcp.json`, plus any MCP config explicitly supplied by the user.
|
|
37
|
+
|
|
38
|
+
Read them as text/JSON only. Never run a discovered `command` or `args` value as part of this audit. Stay inside the requested workspace by default; only include user-level/global MCP configuration if the user explicitly asks for machine-wide scope.
|
|
39
|
+
|
|
40
|
+
### Step 2: Use MCP Drift Check when already available
|
|
41
|
+
|
|
42
|
+
If `mcp-drift-check` is already installed, use the workspace-scoped mode from the intended repo root:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
mcp-drift-check scan-workspace --markdown
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
For CI evidence:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
mcp-drift-check scan-workspace --sarif mcp-drift.sarif --markdown
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If the scanner is not installed, explain that the following command fetches the open-source scanner from GitHub and get user approval before running it:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
uvx --from git+https://github.com/tomelias10/mcp-drift-check mcp-drift-check scan-workspace --markdown
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
If the user declines network access or installation, continue with the manual rules below.
|
|
61
|
+
|
|
62
|
+
### Step 3: Apply the manual static rules
|
|
63
|
+
|
|
64
|
+
For npm/npx-style package selectors:
|
|
65
|
+
|
|
66
|
+
| Selector | Classification | Reason |
|
|
67
|
+
| --- | --- | --- |
|
|
68
|
+
| `package@1.2.3` | SAFE | Exact package version is reproducible. |
|
|
69
|
+
| bare `package` or `@scope/package` | HIGH | A later resolution can select different package code. |
|
|
70
|
+
| `package@latest` | HIGH | The selector is explicitly mutable. |
|
|
71
|
+
| `package@^1.2.0`, `~1.2.0`, `>=1.2.0`, wildcard | MEDIUM | Resolution can change within the allowed range. |
|
|
72
|
+
| local path, script, binary, unknown executable | REVIEW | npm version-drift rules do not establish update behavior. |
|
|
73
|
+
|
|
74
|
+
Treat `-y` / `--yes` as context only. It suppresses interactive confirmation but is not a vulnerability by itself.
|
|
75
|
+
|
|
76
|
+
### Step 4: Recommend remediation without inventing versions
|
|
77
|
+
|
|
78
|
+
For mutable npm/npx references, recommend pinning to an exact version that the team has actually reviewed and then updating that pin deliberately.
|
|
79
|
+
|
|
80
|
+
Do not guess the version to pin. If registry lookup is needed, explain that it requires network access and ask before querying it.
|
|
81
|
+
|
|
82
|
+
Pinning improves reproducibility. It does not establish package provenance, vulnerability status, authorization safety, prompt-injection resistance, or runtime isolation.
|
|
83
|
+
|
|
84
|
+
### Step 5: Produce a bounded report
|
|
85
|
+
|
|
86
|
+
Return:
|
|
87
|
+
|
|
88
|
+
| Config | MCP server | Package/reference | Classification | Why | Recommended next step |
|
|
89
|
+
| --- | --- | --- | --- | --- | --- |
|
|
90
|
+
|
|
91
|
+
Then state:
|
|
92
|
+
|
|
93
|
+
- No MCP servers were executed during the audit.
|
|
94
|
+
- Mutable dependency references are review/reproducibility signals, not breach claims.
|
|
95
|
+
- A clean dependency-drift result is not a complete MCP security assessment.
|
|
96
|
+
|
|
97
|
+
## Examples
|
|
98
|
+
|
|
99
|
+
### Example 1: Audit before approval
|
|
100
|
+
|
|
101
|
+
**User:** `Audit this repo's MCP config before we approve it. Do not run any MCP servers.`
|
|
102
|
+
|
|
103
|
+
**Expected shape:**
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
.mcp.json | browser | @example/browser-mcp@latest | HIGH
|
|
107
|
+
Reason: @latest can resolve to different package code later.
|
|
108
|
+
Next step: pin the exact version your team reviews and update it deliberately.
|
|
109
|
+
|
|
110
|
+
No MCP servers were executed.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Example 2: Add a CI gate
|
|
114
|
+
|
|
115
|
+
For GitHub Actions:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
- uses: actions/checkout@v4
|
|
119
|
+
- uses: tomelias10/mcp-drift-check@v0
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
MCP Drift Check can also emit SARIF 2.1.0 for GitHub Code Scanning. The action defaults to workspace-only discovery; machine-wide user-level scanning remains an explicit `scan-all` choice.
|
|
123
|
+
|
|
124
|
+
## Best Practices
|
|
125
|
+
|
|
126
|
+
- ✅ Read config text only during discovery and classification.
|
|
127
|
+
- ✅ Keep the default scope to the requested workspace/repository.
|
|
128
|
+
- ✅ Separate reproducibility findings from vulnerability or compromise claims.
|
|
129
|
+
- ✅ Pin only a version the team has actually reviewed.
|
|
130
|
+
- ✅ Keep sensitive config values out of reports and public issues.
|
|
131
|
+
- ❌ Do not execute server commands found in a config to "verify" a static finding.
|
|
132
|
+
- ❌ Do not treat a clean result as a general MCP security guarantee.
|
|
133
|
+
|
|
134
|
+
## Limitations
|
|
135
|
+
|
|
136
|
+
- This workflow only covers dependency mutability/review drift for package-backed MCP configuration.
|
|
137
|
+
- It does not assess prompt injection, tool poisoning, OAuth/authorization, server implementation flaws, malware, provenance, or runtime sandboxing.
|
|
138
|
+
- Local executables and non-npm launch paths require separate review.
|
|
139
|
+
- A static config can be reproducible and still unsafe for other reasons.
|
|
140
|
+
|
|
141
|
+
## Security & Safety Notes
|
|
142
|
+
|
|
143
|
+
- The default workflow is read-only, local, and workspace-scoped.
|
|
144
|
+
- Never execute discovered MCP server commands during this audit.
|
|
145
|
+
- Never include credentials, tokens, private headers, or secret values in the output.
|
|
146
|
+
- The optional `uvx` path makes a network fetch from the declared GitHub source; obtain user approval before running it.
|
|
147
|
+
- If deeper active testing is requested, stop and establish explicit authorization and scope before any intrusive action.
|
|
148
|
+
|
|
149
|
+
## Common Pitfalls
|
|
150
|
+
|
|
151
|
+
- **Problem:** Calling an unpinned dependency a vulnerability.
|
|
152
|
+
**Solution:** Describe it as a reproducibility/review-drift signal unless separate evidence establishes security impact.
|
|
153
|
+
- **Problem:** Pinning to today's registry version without knowing what was reviewed.
|
|
154
|
+
**Solution:** Ask for the reviewed version or, with approval, reconstruct relevant package history; do not guess.
|
|
155
|
+
- **Problem:** Treating `-y` as the core finding.
|
|
156
|
+
**Solution:** Report it only as context; the version selector determines the dependency-drift classification.
|
|
157
|
+
- **Problem:** Scanning user-level MCP configs when the user only asked about one repo.
|
|
158
|
+
**Solution:** Use `scan-workspace` by default; use `scan-all` only when machine-wide scope is explicit.
|
|
159
|
+
|
|
160
|
+
## Related Skills
|
|
161
|
+
|
|
162
|
+
- `@mcp-server-security` - Broader MCP server hardening, authentication, authorization, transport, and runtime controls.
|
|
163
|
+
- `@supply-chain-security` - Broader software supply-chain assessment beyond MCP configuration.
|
|
164
|
+
- `@sast-scanning` - Static application-security analysis for source code rather than MCP launch configuration.
|
|
165
|
+
|
|
166
|
+
## Additional Resources
|
|
167
|
+
|
|
168
|
+
- [MCP Drift Check stable v0](https://github.com/tomelias10/mcp-drift-check/tree/v0) - MIT zero-execution scanner, GitHub Action, workspace-scoped mode, and SARIF output.
|
|
169
|
+
- [Public MCP dependency drift examples](https://site-creator-vinext-starter.surfaceproof.workers.dev/research/mcp-dependency-drift) - Commit-specific public configuration examples and methodology limitations.
|