/contribute
Share improvements - issues, PRs, skills, templates
$ npx -y skills add digitalsamba/claude-code-video-toolkit --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/contribute
Context preview
What this command does when you run it.
Share improvements - issues, PRs, skills, templates
Command definition
contribute.mddescription: Share improvements - issues, PRs, skills, templates
Contribute
Help users contribute improvements back to the toolkit without sharing their private project work.
Entry Point
When invoked, determine the contribution type:
How would you like to contribute?
1. **Report an issue** - Bug, missing feature, or question
2. **Submit an improvement** - PR for command, skill, template, or docs
3. **Share a new skill** - Package domain knowledge you've developed
4. **Share a template** - Generalize a project into a reusable template
5. **Share an example project** - Showcase a real project (configs + scripts, no large media)
Which would you like to do?
---
Option 1: Report an Issue
I'll help you create a GitHub issue.
What type of issue?
1. ๐ Bug report
2. ๐ก Feature request
3. ๐ Documentation improvement
4. โ Question
Describe the issue:
Then generate issue with `gh issue create`:
gh issue create \
--repo digitalsamba/claude-code-video-toolkit \
--title "Bug: description" \
--body "## Description
[User's description]
## Steps to Reproduce
[If bug]
## Expected Behavior
[If bug]
---
Reported via /contribute command"
---
Option 2: Submit an Improvement
Step 1: Verify Safety
Let me check what would be shared...
โ
Safe to share:
.claude/commands/video.md (modified)
.claude/skills/ffmpeg/SKILL.md (modified)
โ Ignored (stays private):
projects/ (your video work)
assets/voices/ (your voice samples)
.env (secrets)
Does this look right?
Step 2: Create Branch & Commit
# Show current status
git status
# Create branch
git checkout -b improve/short-description
# Stage toolkit files only
git add .claude/ templates/ lib/ docs/ _internal/ tools/ brands/default/
# Commit with description
git commit -m "$(cat <<'EOF'
Improve: short description
Longer description of what changed and why.
๐ค Generated with Claude Code
EOF
)"
Step 3: Create PR
gh pr create \
--title "Improve: short description" \
--body "$(cat <<'EOF'
## Summary
What this PR improves.
## Changes
- Change 1
- Change 2
## Testing
How to test the improvement.
---
๐ค Generated with Claude Code
EOF
)"
Step 4: Confirmation
PR created! ๐
View at: [PR URL]
Your projects/ directory was NOT included.
Only toolkit improvements were shared.
After merge, you can update your local copy:
git checkout main
git pull
---
Option 3: Share a Skill
Step 1: Identify Skill
Which skill would you like to share?
Found in .claude/skills/:
1. ffmpeg (beta) - already in toolkit
2. my-new-skill (draft) - your addition
Or describe a new skill to create.
Step 2: Prepare Skill
Check skill is ready:
- [ ] SKILL.md has clear description
- [ ] Examples are tested and work
- [ ] No project-specific paths or secrets
- [ ] Status is at least "beta"
Step 3: Create PR
Same as Option 2, but focused on `.claude/skills/{name}/`
---
Option 4: Share a Template
Step 0: Is it actually a template? (ask this first)
Most "new template" ideas are really a **brand profile**. Ask before anything else, and take the answer seriously โ this is the single most common wrong turn in this command:
What makes your video different from the closest existing template?
a. Colors, fonts, logo, narrator voice
b. Scene pacing / timing values
c. Different scenes, different structure, different composition code
If (a) or (b) only -> you want a BRAND PROFILE, not a template.
**If (a) or (b):** stop here and run `/brand` instead. Templates read their palette, fonts and voice from a brand (`voice.brand` in `config.json` points at `brands/<name>/voice.json`), and timing values like `lead`/`tail`/`xfade` live in your project's own `config.json`. Copying a template to change those produces a near-identical fork that stops inheriting fixes to the original โ worse for you than for the toolkit.
A brand profile does not need to be committed to this repo to work. Keep it local unless it is genuinely useful to other people.
**Only continue below if (c)** โ the composition code itself differs.
Step 1: Identify Template
Templates are generalized from projects.
Do you have a project you'd like to turn into a template?
Or an existing template in templates/ to share?
Step 2: Generalize (if from project)
To turn a project into a shareable template:
1. Copy to templates/:
cp -r projects/my-video templates/my-template
2. Remove project-specific content:
- Clear demo videos from public/demos/
- Reset config to example values
- Remove generated audio
- Update README with generic instructions
3. Verify it works:
cd templates/my-template
npm install
npm run studio
4. Check it is not a near-duplicate โ diff every file against the
template you started from:
for f in <new-template>/*; do
diff -q "<base-template>/$(basename "$f")" "$f" 2>/dev/null
done
Identical composition code (build.py, gen_captions.py, src/) means this
should be a brand profile plus project config, not a template. Go back
to Step 0.
Ready to proceed?Step 3: Create PR
Same as Option 2, but focused on `templates/{name}/`
---
Option 5: Share an Example Project
Example projects showcase real-world usage. They include configs, scripts, and documentation but NOT large media files.
Step 1: List Available Projects
Found in projects/:
1. digital-samba-skill-demo
Marketing video for DS Claude Code skill
Template: product-demo style
2. sprint-review-cho-oyu
iOS sprint review for Digital Samba Mobile
Template: sprint-review
Which project would you like to share as an example?Step 1b: Contributor Recognition
We'd like to credit you for sharing this example!
Your name or organization: ___
Website URL (optional, for backlink): ___
This will appear in:
- examples/README.m
Read more
description: Share improvements - issues, PRs, skills, templates
Contribute
Help users contribute improvements back to the toolkit without sharing their private project work.
Entry Point
When invoked, determine the contribution type:
How would you like to contribute? 1. **Report an issue** - Bug, missing feature, or question 2. **Submit an improvement** - PR for command, skill, template, or docs 3. **Share a new skill** - Package domain knowledge you've developed 4. **Share a template** - Generalize a project into a reusable template 5. **Share an example project** - Showcase a real project (configs + scripts, no large media) Which would you like to do?
---
Option 1: Report an Issue
I'll help you create a GitHub issue. What type of issue? 1. ๐ Bug report 2. ๐ก Feature request 3. ๐ Documentation improvement 4. โ Question Describe the issue:
Then generate issue with `gh issue create`:
gh issue create \ --repo digitalsamba/claude-code-video-toolkit \ --title "Bug: description" \ --body "## Description [User's description] ## Steps to Reproduce [If bug] ## Expected Behavior [If bug] --- Reported via /contribute command"
---
Option 2: Submit an Improvement
Step 1: Verify Safety
Let me check what would be shared... โ Safe to share: .claude/commands/video.md (modified) .claude/skills/ffmpeg/SKILL.md (modified) โ Ignored (stays private): projects/ (your video work) assets/voices/ (your voice samples) .env (secrets) Does this look right?
Step 2: Create Branch & Commit
# Show current status git status # Create branch git checkout -b improve/short-description # Stage toolkit files only git add .claude/ templates/ lib/ docs/ _internal/ tools/ brands/default/ # Commit with description git commit -m "$(cat <<'EOF' Improve: short description Longer description of what changed and why. ๐ค Generated with Claude Code EOF )"
Step 3: Create PR
gh pr create \ --title "Improve: short description" \ --body "$(cat <<'EOF' ## Summary What this PR improves. ## Changes - Change 1 - Change 2 ## Testing How to test the improvement. --- ๐ค Generated with Claude Code EOF )"
Step 4: Confirmation
PR created! ๐ View at: [PR URL] Your projects/ directory was NOT included. Only toolkit improvements were shared. After merge, you can update your local copy: git checkout main git pull
---
Option 3: Share a Skill
Step 1: Identify Skill
Which skill would you like to share? Found in .claude/skills/: 1. ffmpeg (beta) - already in toolkit 2. my-new-skill (draft) - your addition Or describe a new skill to create.
Step 2: Prepare Skill
Check skill is ready:
- [ ] SKILL.md has clear description
- [ ] Examples are tested and work
- [ ] No project-specific paths or secrets
- [ ] Status is at least "beta"
Step 3: Create PR
Same as Option 2, but focused on `.claude/skills/{name}/`
---
Option 4: Share a Template
Step 0: Is it actually a template? (ask this first)
Most "new template" ideas are really a **brand profile**. Ask before anything else, and take the answer seriously โ this is the single most common wrong turn in this command:
What makes your video different from the closest existing template? a. Colors, fonts, logo, narrator voice b. Scene pacing / timing values c. Different scenes, different structure, different composition code If (a) or (b) only -> you want a BRAND PROFILE, not a template.
**If (a) or (b):** stop here and run `/brand` instead. Templates read their palette, fonts and voice from a brand (`voice.brand` in `config.json` points at `brands/<name>/voice.json`), and timing values like `lead`/`tail`/`xfade` live in your project's own `config.json`. Copying a template to change those produces a near-identical fork that stops inheriting fixes to the original โ worse for you than for the toolkit.
A brand profile does not need to be committed to this repo to work. Keep it local unless it is genuinely useful to other people.
**Only continue below if (c)** โ the composition code itself differs.
Step 1: Identify Template
Templates are generalized from projects. Do you have a project you'd like to turn into a template? Or an existing template in templates/ to share?
Step 2: Generalize (if from project)
To turn a project into a shareable template:
1. Copy to templates/:
cp -r projects/my-video templates/my-template
2. Remove project-specific content:
- Clear demo videos from public/demos/
- Reset config to example values
- Remove generated audio
- Update README with generic instructions
3. Verify it works:
cd templates/my-template
npm install
npm run studio
4. Check it is not a near-duplicate โ diff every file against the
template you started from:
for f in <new-template>/*; do
diff -q "<base-template>/$(basename "$f")" "$f" 2>/dev/null
done
Identical composition code (build.py, gen_captions.py, src/) means this
should be a brand profile plus project config, not a template. Go back
to Step 0.
Ready to proceed?Step 3: Create PR
Same as Option 2, but focused on `templates/{name}/`
---
Option 5: Share an Example Project
Example projects showcase real-world usage. They include configs, scripts, and documentation but NOT large media files.
Step 1: List Available Projects
Found in projects/:
1. digital-samba-skill-demo
Marketing video for DS Claude Code skill
Template: product-demo style
2. sprint-review-cho-oyu
iOS sprint review for Digital Samba Mobile
Template: sprint-review
Which project would you like to share as an example?Step 1b: Contributor Recognition
We'd like to credit you for sharing this example! Your name or organization: ___ Website URL (optional, for backlink): ___ This will appear in: - examples/README.m
Tell Claude Code what video you want โ it writes the script, generates the voiceover, music, and visuals, and renders the MP4.
Repo: digitalsamba/claude-code-video-toolkit
Other commands on claude-code-video-toolkit.
design
Focused design session for improving video scene visuals using the frontend-design skill.

