bps-kit 1.0.18 → 1.1.0

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.
Files changed (37) hide show
  1. package/bin/cli.js +156 -28
  2. package/bin/convert_to_vscode.js +3 -0
  3. package/package.json +2 -2
  4. package/templates/VAULT_INDEX.md +5 -4
  5. package/templates/agents-template/agents/frontend-specialist.md +1 -1
  6. package/templates/agents-template/agents/site-builder.md +177 -0
  7. package/templates/agents-template/rules/GEMINI.md +5 -2
  8. package/templates/agents-template/workflows/build-site.md +122 -0
  9. package/templates/skills_extra/stitch-loop/README.md +54 -0
  10. package/templates/skills_extra/stitch-loop/SKILL.md +263 -0
  11. package/templates/skills_extra/stitch-loop/examples/SITE.md +73 -0
  12. package/templates/skills_extra/stitch-loop/examples/next-prompt.md +25 -0
  13. package/templates/skills_extra/stitch-loop/resources/baton-schema.md +61 -0
  14. package/templates/skills_extra/stitch-loop/resources/site-template.md +104 -0
  15. package/templates/skills_normal/design-md/README.md +34 -0
  16. package/templates/skills_normal/design-md/SKILL.md +172 -0
  17. package/templates/skills_normal/design-md/examples/DESIGN.md +154 -0
  18. package/templates/skills_normal/enhance-prompt/README.md +34 -0
  19. package/templates/skills_normal/enhance-prompt/SKILL.md +204 -0
  20. package/templates/skills_normal/enhance-prompt/references/KEYWORDS.md +114 -0
  21. package/templates/skills_normal/react-components/README.md +36 -0
  22. package/templates/skills_normal/react-components/SKILL.md +47 -0
  23. package/templates/skills_normal/react-components/examples/gold-standard-card.tsx +80 -0
  24. package/templates/skills_normal/react-components/package-lock.json +231 -0
  25. package/templates/skills_normal/react-components/package.json +16 -0
  26. package/templates/skills_normal/react-components/resources/architecture-checklist.md +15 -0
  27. package/templates/skills_normal/react-components/resources/component-template.tsx +37 -0
  28. package/templates/skills_normal/react-components/resources/stitch-api-reference.md +14 -0
  29. package/templates/skills_normal/react-components/resources/style-guide.json +27 -0
  30. package/templates/skills_normal/react-components/scripts/fetch-stitch.sh +30 -0
  31. package/templates/skills_normal/react-components/scripts/validate.js +70 -0
  32. package/templates/vault/remotion/README.md +105 -0
  33. package/templates/vault/remotion/examples/WalkthroughComposition.tsx +78 -0
  34. package/templates/vault/remotion/examples/screens.json +56 -0
  35. package/templates/vault/remotion/resources/composition-checklist.md +124 -0
  36. package/templates/vault/remotion/resources/screen-slide-template.tsx +123 -0
  37. package/templates/vault/remotion/scripts/download-stitch-asset.sh +38 -0
@@ -0,0 +1,124 @@
1
+ # Remotion Composition Checklist
2
+
3
+ Use this checklist to ensure your Remotion walkthrough video composition is complete and follows best practices.
4
+
5
+ ## ✅ Project Setup
6
+
7
+ - [ ] Remotion project initialized (or existing project verified)
8
+ - [ ] Dependencies installed (`@remotion/transitions`, etc.)
9
+ - [ ] Asset directory created (`public/assets/screens/`)
10
+ - [ ] Screen manifest created (`screens.json`)
11
+
12
+ ## ✅ Asset Preparation
13
+
14
+ - [ ] All Stitch screenshots downloaded
15
+ - [ ] Images saved with descriptive names
16
+ - [ ] Image dimensions recorded in manifest
17
+ - [ ] Images optimized for size (if needed)
18
+ - [ ] Asset paths are correct and relative to `public/`
19
+
20
+ ## ✅ Component Structure
21
+
22
+ - [ ] `ScreenSlide.tsx` component created
23
+ - [ ] Props interface defined
24
+ - [ ] Zoom animation implemented
25
+ - [ ] Fade animation implemented
26
+ - [ ] Text overlay included
27
+ - [ ] `WalkthroughComposition.tsx` created
28
+ - [ ] Screen manifest imported
29
+ - [ ] `<Sequence>` components for each screen
30
+ - [ ] Transitions between screens configured
31
+ - [ ] Proper timing offsets calculated
32
+
33
+ ## ✅ Configuration
34
+
35
+ - [ ] `remotion.config.ts` updated
36
+ - [ ] Composition ID set
37
+ - [ ] Video dimensions configured
38
+ - [ ] Frame rate set (30 or 60 fps)
39
+ - [ ] Duration calculated correctly
40
+ - [ ] Video metadata set (if applicable)
41
+ - [ ] Title
42
+ - [ ] Description
43
+
44
+ ## ✅ Animations & Transitions
45
+
46
+ - [ ] Spring animations use appropriate configs
47
+ - [ ] Damping values (8-15 typical)
48
+ - [ ] Stiffness values (60-100 typical)
49
+ - [ ] Transitions feel smooth
50
+ - [ ] Text overlays timed correctly
51
+ - [ ] No jarring or abrupt changes
52
+
53
+ ## ✅ Visual Quality
54
+
55
+ - [ ] Text is readable at all times
56
+ - [ ] Sufficient contrast between text and background
57
+ - [ ] Font sizes appropriate for video resolution
58
+ - [ ] Images display without distortion
59
+ - [ ] Aspect ratios maintained
60
+
61
+ ## ✅ Timing
62
+
63
+ - [ ] Each screen displays for appropriate duration
64
+ - [ ] Total video length is reasonable (not too long/short)
65
+ - [ ] Transitions don't feel rushed
66
+ - [ ] Text has time to be read
67
+
68
+ ## ✅ Preview & Testing
69
+
70
+ - [ ] Preview in Remotion Studio (`npm run dev`)
71
+ - [ ] Scrub through timeline to check all frames
72
+ - [ ] Verify smooth playback
73
+ - [ ] Check for any rendering errors
74
+ - [ ] Test on different screen sizes (if responsive)
75
+
76
+ ## ✅ Rendering
77
+
78
+ - [ ] Render command tested and works
79
+ - [ ] Output format chosen (MP4, WebM, etc.)
80
+ - [ ] Quality settings configured
81
+ - [ ] Codec specified (h264 recommended)
82
+ - [ ] Final video renders without errors
83
+
84
+ ## ✅ Final Output
85
+
86
+ - [ ] Video file generated successfully
87
+ - [ ] File size is reasonable
88
+ - [ ] Video plays correctly in media players
89
+ - [ ] Audio included (if applicable)
90
+ - [ ] Metadata embedded (if needed)
91
+
92
+ ## 🎨 Optional Enhancements
93
+
94
+ - [ ] Progress indicator showing current screen
95
+ - [ ] Custom logo or branding
96
+ - [ ] Background music or sound effects
97
+ - [ ] Voiceover narration
98
+ - [ ] Interactive hotspots highlighting features
99
+ - [ ] Call-to-action at end
100
+
101
+ ## 📋 Best Practices Verified
102
+
103
+ - [ ] Component code is modular and reusable
104
+ - [ ] TypeScript interfaces used for props
105
+ - [ ] No hardcoded values (use manifest/config)
106
+ - [ ] Code follows Remotion conventions
107
+ - [ ] Comments added for complex logic
108
+ - [ ] Assets organized in clear folder structure
109
+
110
+ ## 🐛 Common Issues Checked
111
+
112
+ - [ ] No blurry images (check source resolution)
113
+ - [ ] No misaligned text (verify positioning)
114
+ - [ ] No choppy animations (check spring configs)
115
+ - [ ] No missing assets (verify all paths)
116
+ - [ ] No build errors (run `npm run build` test)
117
+
118
+ ---
119
+
120
+ **Notes:**
121
+ - Mark items with `[x]` as you complete them
122
+ - Add custom checklist items specific to your project
123
+ - Review Remotion documentation for updates
124
+ - Test final video on target platform (YouTube, social, etc.)
@@ -0,0 +1,123 @@
1
+ import {AbsoluteFill, spring, useCurrentFrame, useVideoConfig} from 'remotion';
2
+ import {Img} from 'remotion';
3
+
4
+ interface ScreenSlideProps {
5
+ imageSrc: string;
6
+ title: string;
7
+ description?: string;
8
+ width: number;
9
+ height: number;
10
+ }
11
+
12
+ export const ScreenSlide: React.FC<ScreenSlideProps> = ({
13
+ imageSrc,
14
+ title,
15
+ description,
16
+ width,
17
+ height,
18
+ }) => {
19
+ const frame = useCurrentFrame();
20
+ const {fps} = useVideoConfig();
21
+
22
+ // Zoom in animation
23
+ const zoom = spring({
24
+ frame,
25
+ fps,
26
+ from: 0.95,
27
+ to: 1,
28
+ config: {
29
+ damping: 12,
30
+ stiffness: 80,
31
+ },
32
+ });
33
+
34
+ // Fade in animation
35
+ const opacity = spring({
36
+ frame,
37
+ fps,
38
+ from: 0,
39
+ to: 1,
40
+ config: {
41
+ damping: 10,
42
+ },
43
+ });
44
+
45
+ // Text overlay fade in (delayed)
46
+ const textOpacity = spring({
47
+ frame: frame - 15, // Delay by 15 frames
48
+ fps,
49
+ from: 0,
50
+ to: 1,
51
+ config: {
52
+ damping: 10,
53
+ },
54
+ });
55
+
56
+ return (
57
+ <AbsoluteFill
58
+ style={{
59
+ backgroundColor: '#000',
60
+ justifyContent: 'center',
61
+ alignItems: 'center',
62
+ }}
63
+ >
64
+ {/* Screen Image */}
65
+ <div
66
+ style={{
67
+ transform: `scale(${zoom})`,
68
+ opacity,
69
+ maxWidth: '90%',
70
+ maxHeight: '80%',
71
+ position: 'relative',
72
+ }}
73
+ >
74
+ <Img
75
+ src={imageSrc}
76
+ style={{
77
+ width: '100%',
78
+ height: 'auto',
79
+ borderRadius: '8px',
80
+ boxShadow: '0 20px 60px rgba(0, 0, 0, 0.3)',
81
+ }}
82
+ />
83
+ </div>
84
+
85
+ {/* Text Overlay */}
86
+ <div
87
+ style={{
88
+ position: 'absolute',
89
+ bottom: '10%',
90
+ left: '50%',
91
+ transform: 'translateX(-50%)',
92
+ textAlign: 'center',
93
+ opacity: textOpacity,
94
+ width: '80%',
95
+ }}
96
+ >
97
+ <h1
98
+ style={{
99
+ fontSize: '48px',
100
+ fontWeight: 'bold',
101
+ color: '#fff',
102
+ margin: '0 0 12px 0',
103
+ textShadow: '0 2px 10px rgba(0, 0, 0, 0.5)',
104
+ }}
105
+ >
106
+ {title}
107
+ </h1>
108
+ {description && (
109
+ <p
110
+ style={{
111
+ fontSize: '24px',
112
+ color: '#ddd',
113
+ margin: 0,
114
+ textShadow: '0 1px 5px rgba(0, 0, 0, 0.5)',
115
+ }}
116
+ >
117
+ {description}
118
+ </p>
119
+ )}
120
+ </div>
121
+ </AbsoluteFill>
122
+ );
123
+ };
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+
3
+ # Download Stitch screen asset with proper handling of Google Cloud Storage URLs
4
+ # Usage: ./download-stitch-asset.sh "https://storage.googleapis.com/..." "output-path.png"
5
+
6
+ set -e
7
+
8
+ if [ $# -ne 2 ]; then
9
+ echo "Usage: $0 <download_url> <output_path>"
10
+ echo "Example: $0 'https://storage.googleapis.com/stitch/screenshot.png' 'assets/screen.png'"
11
+ exit 1
12
+ fi
13
+
14
+ DOWNLOAD_URL="$1"
15
+ OUTPUT_PATH="$2"
16
+
17
+ # Create directory if it doesn't exist
18
+ OUTPUT_DIR=$(dirname "$OUTPUT_PATH")
19
+ mkdir -p "$OUTPUT_DIR"
20
+
21
+ echo "Downloading from: $DOWNLOAD_URL"
22
+ echo "Saving to: $OUTPUT_PATH"
23
+
24
+ # Use curl with follow redirects and authentication handling
25
+ curl -L -o "$OUTPUT_PATH" "$DOWNLOAD_URL"
26
+
27
+ if [ $? -eq 0 ]; then
28
+ echo "✓ Successfully downloaded to $OUTPUT_PATH"
29
+
30
+ # Display file size for verification
31
+ if command -v stat &> /dev/null; then
32
+ FILE_SIZE=$(stat -f%z "$OUTPUT_PATH" 2>/dev/null || stat -c%s "$OUTPUT_PATH" 2>/dev/null)
33
+ echo " File size: $FILE_SIZE bytes"
34
+ fi
35
+ else
36
+ echo "✗ Download failed"
37
+ exit 1
38
+ fi