opencode-skills-collection 4.0.72 → 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 +9 -1
- package/bundled-skills/agent-memory-discipline/SKILL.md +204 -0
- package/bundled-skills/agent-memory-discipline/references/entry-format.md +37 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +2 -2
- 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/jev-social/SKILL.md +5 -5
- package/bundled-skills/noaa-radar-satellite-fetching/SKILL.md +253 -0
- package/bundled-skills/testdriver-e2e-testing/SKILL.md +121 -0
- package/bundled-skills/weather-data-lifecycle-management/SKILL.md +159 -0
- package/bundled-skills/weather-data-reproducibility/SKILL.md +292 -0
- package/bundled-skills/weather-model-run-discovery/SKILL.md +241 -0
- package/bundled-skills/weather-pipeline-performance-diagnosis/SKILL.md +184 -0
- package/package.json +1 -1
- package/skills_index.json +452 -1
|
@@ -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",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"agent-harness-fault-injection",
|
|
39
39
|
"agent-manager-skill",
|
|
40
40
|
"agent-memory",
|
|
41
|
+
"agent-memory-discipline",
|
|
41
42
|
"agent-memory-mcp",
|
|
42
43
|
"agent-memory-systems",
|
|
43
44
|
"agent-observability",
|
|
@@ -940,6 +941,7 @@
|
|
|
940
941
|
"file-path-traversal",
|
|
941
942
|
"file-uploads",
|
|
942
943
|
"filesystem-context",
|
|
944
|
+
"film-crew",
|
|
943
945
|
"find-bugs",
|
|
944
946
|
"find-complementary-founders",
|
|
945
947
|
"find-matching-tenders",
|
|
@@ -1603,6 +1605,7 @@
|
|
|
1603
1605
|
"nfs-storage",
|
|
1604
1606
|
"nft-standards",
|
|
1605
1607
|
"nika",
|
|
1608
|
+
"noaa-radar-satellite-fetching",
|
|
1606
1609
|
"nodejs-backend-patterns",
|
|
1607
1610
|
"nodejs-best-practices",
|
|
1608
1611
|
"nosql-expert",
|
|
@@ -2204,6 +2207,7 @@
|
|
|
2204
2207
|
"test-fixing",
|
|
2205
2208
|
"test-framework-migration-skill",
|
|
2206
2209
|
"test-guard",
|
|
2210
|
+
"testdriver-e2e-testing",
|
|
2207
2211
|
"testing-patterns",
|
|
2208
2212
|
"testing-qa",
|
|
2209
2213
|
"testng-skill",
|
|
@@ -2362,8 +2366,12 @@
|
|
|
2362
2366
|
"warp-delegate",
|
|
2363
2367
|
"warren-buffett",
|
|
2364
2368
|
"wcag-audit-patterns",
|
|
2369
|
+
"weather-data-lifecycle-management",
|
|
2370
|
+
"weather-data-reproducibility",
|
|
2365
2371
|
"weather-model-data-fetching",
|
|
2372
|
+
"weather-model-run-discovery",
|
|
2366
2373
|
"weather-observation-fetching",
|
|
2374
|
+
"weather-pipeline-performance-diagnosis",
|
|
2367
2375
|
"weaviate",
|
|
2368
2376
|
"weaviate-cookbooks",
|
|
2369
2377
|
"web-artifacts-builder",
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-memory-discipline
|
|
3
|
+
description: "Rules for when an agent should recall from long-term memory before acting and when it should save decisions, corrections and failures afterwards. Works with any memory backend."
|
|
4
|
+
category: memory
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: mnemoverse/agent-memory-discipline
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-09-23"
|
|
10
|
+
author: mnemoverse
|
|
11
|
+
tags: [agent-memory, long-term-memory, context-engineering, mcp, agent-skills]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: "CC0-1.0"
|
|
14
|
+
license_source: "https://github.com/mnemoverse/agent-memory-discipline/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Agent Memory Discipline
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Connecting a memory tool does not make an agent use it: tools register, the session runs, and nothing gets recalled or saved. This skill supplies the missing part, standing rules for when to read memory and when to write it.
|
|
22
|
+
|
|
23
|
+
The problem it solves is specific. An agent with memory available still repeats settled questions, reverts corrected habits, and loses decisions between sessions, because nothing tells it when recall and save are due. The rules below make both moments explicit.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Use when a memory tool or MCP memory server is connected but the agent is not using it consistently.
|
|
28
|
+
- Use when the user complains that the assistant loses preferences, conventions or past decisions between sessions.
|
|
29
|
+
- Use when setting up persistent memory for a project and the agent needs standing rules for reading and writing it.
|
|
30
|
+
- Use when the user says "remember this", "what did we decide", "recall", or "save this for next time".
|
|
31
|
+
|
|
32
|
+
## How It Works
|
|
33
|
+
|
|
34
|
+
### Before You Start: Any Memory Backend
|
|
35
|
+
|
|
36
|
+
The agent needs a memory tool it can call. Any backend works, and the rules are identical for each:
|
|
37
|
+
|
|
38
|
+
- **Files.** A `memory/` folder of Markdown notes, one fact per file. No dependencies, fully greppable, versionable in git.
|
|
39
|
+
- **A local MCP memory server.** Keeps everything on the local machine; several open-source options exist.
|
|
40
|
+
- **A hosted memory service over MCP.** Adds portability across tools and machines at the cost of the data living elsewhere.
|
|
41
|
+
|
|
42
|
+
Authentication is whatever the chosen backend requires: none for a local folder, the server's own configuration for a local MCP server, an API key or OAuth sign-in for a hosted service. This skill never handles credentials itself and never writes them into memory.
|
|
43
|
+
|
|
44
|
+
### Step 1: Recall Before Acting
|
|
45
|
+
|
|
46
|
+
Read memory **before** doing any of these, not after:
|
|
47
|
+
|
|
48
|
+
- starting work on a project touched before
|
|
49
|
+
- choosing a library, pattern, or tool
|
|
50
|
+
- writing tests, commits, or documentation, where conventions apply
|
|
51
|
+
- answering "how do we usually do X here"
|
|
52
|
+
- anything the user phrases as "again", "like last time", or "as we agreed"
|
|
53
|
+
|
|
54
|
+
Skip recall for one-off factual questions, arithmetic, or anything fully specified in the current message. Recall costs a tool call and context; spending it on a self-contained question is waste.
|
|
55
|
+
|
|
56
|
+
Search with the words the user actually used, plus the project or repository name. If the first search returns nothing useful, try one broader query, then stop and proceed without memory rather than looping.
|
|
57
|
+
|
|
58
|
+
### Step 2: Save After Deciding
|
|
59
|
+
|
|
60
|
+
Write to memory when one of these has just happened:
|
|
61
|
+
|
|
62
|
+
- a **decision** was made and will still matter next week ("we use pnpm", "the billing module stays untouched")
|
|
63
|
+
- the user **corrected** the agent, which is the strongest signal there is
|
|
64
|
+
- an approach **failed**, and why it failed
|
|
65
|
+
- a preference was stated that applies beyond this task
|
|
66
|
+
- a fact about the environment was discovered the hard way (a port, a flag, a service that must be running)
|
|
67
|
+
|
|
68
|
+
Do **not** save: the contents of files that can be read again, restatements of the current task, transient state, anything the user marked as temporary, and anything containing secrets, tokens, or personal data.
|
|
69
|
+
|
|
70
|
+
One memory, one fact. A paragraph containing four decisions cannot be superseded cleanly when one of them changes.
|
|
71
|
+
|
|
72
|
+
### Step 3: Write It So It Survives
|
|
73
|
+
|
|
74
|
+
A memory that is useless in three weeks was written wrong. Give each entry, in the text if the backend has no fields for it:
|
|
75
|
+
|
|
76
|
+
- **what** was decided or observed, in one sentence
|
|
77
|
+
- **why**, briefly, because the reason outlives the decision
|
|
78
|
+
- **when** it became true, and when it stopped being true if it has
|
|
79
|
+
- **where it came from**: a file, a commit, a conversation, a test run
|
|
80
|
+
|
|
81
|
+
Prefer the user's own words over a paraphrase. Paraphrase drifts.
|
|
82
|
+
|
|
83
|
+
### Step 4: Close the Past Instead of Overwriting It
|
|
84
|
+
|
|
85
|
+
When something changes, the old memory is not wrong. It is **closed**.
|
|
86
|
+
|
|
87
|
+
If the project moved from Redux to Zustand, "we use Redux" was true from January to June. Deleting it destroys the explanation for every component written in that window. Mark it superseded, keep its validity window, and write the new one alongside.
|
|
88
|
+
|
|
89
|
+
This is the single most destructive habit in agent memory, and it stays invisible until someone asks a question about old code.
|
|
90
|
+
|
|
91
|
+
### Step 5: Keep Contradictions Visible
|
|
92
|
+
|
|
93
|
+
If recall returns two entries that disagree, do not pick the closer match and proceed. Surface both, with their dates, and ask or flag. A convention that a recent failure contradicts is exactly the situation where the user needs to be told, not smoothed over.
|
|
94
|
+
|
|
95
|
+
### Step 6: Weigh Evidence and Policy Differently
|
|
96
|
+
|
|
97
|
+
- **Evidence** is what happened: one run, one failure, one observation. Cheap, plentiful, individually unreliable.
|
|
98
|
+
- **Policy** is what should happen: a convention, a decision, a rule. Expensive, and should be hard to change by accident.
|
|
99
|
+
|
|
100
|
+
An observation becomes policy when a human confirms it, when it lands in a merged decision record, or when it has worked repeatedly. Never promote a single observation to a rule without one of those.
|
|
101
|
+
|
|
102
|
+
### What Following This Skill Produces
|
|
103
|
+
|
|
104
|
+
Two things, and nothing else:
|
|
105
|
+
|
|
106
|
+
- **Recalled context, stated before the work starts.** The relevant entries are named with their dates and sources, so the user can see what the agent is relying on. Conflicting entries are shown side by side, not merged.
|
|
107
|
+
- **New memory entries after decisions, corrections and failures.** One fact each, in this shape:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
Project uses pnpm, not npm. Stated by the user on 2026-08-11 after a lockfile conflict. Applies to all packages in this repo.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
A superseded entry keeps its text and gains an end date and a pointer to the entry that replaced it. The full format, with closing and evidence examples, is in [references/entry-format.md](references/entry-format.md).
|
|
114
|
+
|
|
115
|
+
## Examples
|
|
116
|
+
|
|
117
|
+
### Example 1: A Correction
|
|
118
|
+
|
|
119
|
+
The user says: *"stop using npm here, we're on pnpm."*
|
|
120
|
+
|
|
121
|
+
1. This is a correction, which is the strongest save signal. Save it.
|
|
122
|
+
2. Write the entry:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
Project uses pnpm, not npm. Stated by the user on 2026-08-11 after a lockfile conflict. Applies to all packages in this repo.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
3. Do not also save "the user was annoyed", "ran npm install", or the lockfile contents.
|
|
129
|
+
4. Next session, before running any package command in this repo, recall first and find it.
|
|
130
|
+
|
|
131
|
+
### Example 2: A Contradiction
|
|
132
|
+
|
|
133
|
+
Recall returns two entries:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
Integration tests run against the staging database (2026-06-02)
|
|
137
|
+
Integration tests use a local container; staging is off limits after the incident (2026-08-19)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
1. Do not pick one and continue. State both, with dates.
|
|
141
|
+
2. Ask: *"Memory has two rules for integration tests; the August one says staging is off limits. Use the local container?"*
|
|
142
|
+
3. After the answer, close the entry that no longer holds, with its end date, and keep the other.
|
|
143
|
+
|
|
144
|
+
### Example 3: Closing an Entry That Stopped Being True
|
|
145
|
+
|
|
146
|
+
Do not delete the old entry. Add an end date and a pointer to what replaced it, then write the new entry alongside:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
[closed 2026-06-30, replaced by "State management uses Zustand"] State management uses Redux. Decided in the January architecture review.
|
|
150
|
+
State management uses Zustand. Migrated in June after the bundle size review. Applies to all new components.
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Best Practices
|
|
154
|
+
|
|
155
|
+
- **Do:** recall before project-specific work, and name the entries you rely on with their dates and sources.
|
|
156
|
+
- **Do:** save right after a decision, a correction, or a failure, in one sentence with its reason.
|
|
157
|
+
- **Do:** keep one fact per entry, so a later change can supersede it cleanly.
|
|
158
|
+
- **Do:** prefer the user's own words over a paraphrase.
|
|
159
|
+
- **Don't:** overwrite or remove an entry that stopped being true; close it with an end date instead.
|
|
160
|
+
- **Don't:** save file contents that can be read again, restatements of the current task, or transient state.
|
|
161
|
+
- **Don't:** promote a single observation to a rule without human confirmation, a merged decision record, or repeated success.
|
|
162
|
+
|
|
163
|
+
## Limitations
|
|
164
|
+
|
|
165
|
+
- This skill installs no memory backend and requires no account. Without a memory tool the agent can call, it can only say that memory is unavailable and continue.
|
|
166
|
+
- It decides when to recall and what to save. How well entries are found again depends on the backend's own search.
|
|
167
|
+
- It does not resolve contradictions by itself. It surfaces them with their dates and asks the user which one holds.
|
|
168
|
+
- What happens to an entry the user asks to remove depends on what the backend supports.
|
|
169
|
+
- This skill does not replace environment-specific validation, testing, or expert review.
|
|
170
|
+
- Stop and ask for clarification if required inputs, permissions, or safety boundaries are missing.
|
|
171
|
+
|
|
172
|
+
## Security & Safety Notes
|
|
173
|
+
|
|
174
|
+
- The skill contains no shell commands and makes no network calls of its own. It reads and writes memory only through the memory tool the user has already connected.
|
|
175
|
+
- Never save secrets, tokens, passwords, or personal data into memory, and never write credentials into an entry.
|
|
176
|
+
- A hosted memory backend stores entries outside the local machine. Choose the backend with that in mind.
|
|
177
|
+
- When the user asks for an entry to be removed, close or remove it as the backend allows, and confirm what was removed.
|
|
178
|
+
|
|
179
|
+
## Common Pitfalls
|
|
180
|
+
|
|
181
|
+
- **Problem:** The memory tool is unavailable or failing.
|
|
182
|
+
**Solution:** Proceed without memory, say so in one line, and do not retry in a loop. Save the pending decision as soon as the tool is back, rather than dropping it.
|
|
183
|
+
- **Problem:** Recall returns nothing.
|
|
184
|
+
**Solution:** Run one broader query, then continue without memory. An empty result is information: the topic is new, so a decision made now is worth saving.
|
|
185
|
+
- **Problem:** Recall returns too much.
|
|
186
|
+
**Solution:** Keep the entries that match the current project and task; ignore the rest rather than pasting them into context.
|
|
187
|
+
- **Problem:** Two entries disagree.
|
|
188
|
+
**Solution:** Show both with their dates and ask which holds. Do not resolve the conflict silently.
|
|
189
|
+
- **Problem:** A save is rejected or filtered by the backend.
|
|
190
|
+
**Solution:** Report it once. Do not rephrase the same fact repeatedly to get it through.
|
|
191
|
+
|
|
192
|
+
## Related Skills
|
|
193
|
+
|
|
194
|
+
- `@memory-systems`: when designing the memory architecture itself (short-term, long-term, graph-based) rather than the habit of using it.
|
|
195
|
+
- `@context-engineering`: when setting up rules files and session context, which this skill complements with rules for long-term memory.
|
|
196
|
+
|
|
197
|
+
## Additional Resources
|
|
198
|
+
|
|
199
|
+
- [Upstream repository](https://github.com/mnemoverse/agent-memory-discipline) (CC0-1.0)
|
|
200
|
+
- [Agent Skills overview](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview)
|
|
201
|
+
- [Claude Code skills](https://code.claude.com/docs/en/skills)
|
|
202
|
+
- [Model Context Protocol](https://modelcontextprotocol.io), for connecting memory servers
|
|
203
|
+
|
|
204
|
+
*Written and maintained by the team behind [Mnemoverse](https://mnemoverse.com), which is one hosted implementation. The rules above are deliberately backend-neutral and were written to be useful without it.*
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Memory entry format
|
|
2
|
+
|
|
3
|
+
Reference for Step 3 and Step 4 of the skill. Use fields when the backend has them; otherwise write the same information into the text of the entry.
|
|
4
|
+
|
|
5
|
+
## A new entry
|
|
6
|
+
|
|
7
|
+
| Part | What to write | Example |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| What | One sentence, the decision or observation | Project uses pnpm, not npm. |
|
|
10
|
+
| Why | The reason, briefly | Lockfile conflict between npm and pnpm. |
|
|
11
|
+
| When | The date it became true | 2026-08-11 |
|
|
12
|
+
| Source | Where it came from | Stated by the user in the session |
|
|
13
|
+
| Scope | Where it applies | All packages in this repository |
|
|
14
|
+
|
|
15
|
+
As a single line:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
Project uses pnpm, not npm. Stated by the user on 2026-08-11 after a lockfile conflict. Applies to all packages in this repo.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Closing an entry that stopped being true
|
|
22
|
+
|
|
23
|
+
Do not delete it. Add an end date and a pointer to what replaced it, then write the new entry alongside.
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
[closed 2026-06-30, replaced by "State management uses Zustand"] State management uses Redux. Decided in the January architecture review.
|
|
27
|
+
State management uses Zustand. Migrated in June after the bundle size review. Applies to all new components.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Evidence and policy
|
|
31
|
+
|
|
32
|
+
Mark which kind an entry is, so a single observation is not read later as a rule.
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
[evidence] The integration suite failed twice against staging on 2026-08-19.
|
|
36
|
+
[policy] Integration tests use a local container; staging is off limits. Confirmed by the user on 2026-08-20.
|
|
37
|
+
```
|
|
@@ -115,7 +115,7 @@ Use `data/specialized-plugin-candidates.json` for specialized-plugin membership
|
|
|
115
115
|
|
|
116
116
|
Treat the current catalog and the legacy user-site bridge as one public system:
|
|
117
117
|
|
|
118
|
-
- Current catalog: `sickn33/agentic-awesome-skills` at `https://
|
|
118
|
+
- Current catalog: `sickn33/agentic-awesome-skills` at `https://aaskills.tech/`.
|
|
119
119
|
- Legacy bridge: `sickn33/sickn33.github.io` at `https://sickn33.github.io/antigravity-awesome-skills/`.
|
|
120
120
|
|
|
121
121
|
For SEO, indexing, Pages, redirect, or infrastructure changes:
|
|
@@ -163,7 +163,7 @@ Every stable or prerelease version requires full release alignment. Creating the
|
|
|
163
163
|
5. Merge that release PR through its required checks, update local `main` to equal `origin/main`, and wait for every source, release, or canonical-sync PR in the release path to close. Re-run the release-state and plugin gates if protected `main` moved.
|
|
164
164
|
6. Run `npm run release:publish -- X.Y.Z`. It must resolve exactly one merged release PR from the same repository, authored by the repository owner, with base `main`, exact title `chore: release vX.Y.Z`, and head branch `release/vX.Y.Z`. Zero or multiple candidates fail closed; never select the newest approximate match. The command then verifies that exact protected merge before creating or reusing the tag and GitHub Release.
|
|
165
165
|
The npm publication workflow must first check out protected `main`, verify that the peeled release tag is an ancestor of current `origin/main`, validate the version directly from the tagged `package.json`, and only then check out or execute tag-controlled code. It has no manual-dispatch bypass.
|
|
166
|
-
7. Wait for publishing workflows, then bind every proof to the exact released commit: verify the tag/ref, GitHub Release, npm version and intended dist-tag, required CI, CodeQL, and the
|
|
166
|
+
7. Wait for publishing workflows, then bind every proof to the exact released commit: verify the tag/ref, GitHub Release, npm version and intended dist-tag, required CI, CodeQL, and the release-tag Pages build from the exact immutable `vX.Y.Z` tag using `deployment_target=release`. Never manually dispatch the release-tag build from `main` or another branch. A separate `deployment_target=main` dispatch may publish a protected main commit after source and canonical-sync work completes; it must verify current-main identity before build and again before deploy. Canonical-sync commits marked `[skip pages]` are never dispatched by canonical synchronization. Verify live `llms.txt`, `skills.json`, catalog and plugin routes, and the legacy redirect bridge; do not accept a successful run for a different SHA.
|
|
167
167
|
8. After npm confirms `X.Y.Z` as the published dist-tag, discover every already-configured local AAS MCP host from its real configuration and update each one to the exact same package version before declaring the release complete. Updating existing AAS host entries is part of the release; creating a previously absent host configuration still requires explicit authorization.
|
|
168
168
|
- Use the published package's `aas mcp configure` two-pass flow: first preview the change, then repeat the identical command with its approval digest. Supply absolute host-config, cache, and backup paths; require a backup when replacing an existing configuration.
|
|
169
169
|
- Pin `agentic-awesome-skills@X.Y.Z` and `--version X.Y.Z`; never use `latest`, reuse an older cached runtime, or create a previously absent host configuration without explicit authorization.
|
|
@@ -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.
|