{"_id":"@blurtopian/pulse-demo-skill","_rev":"2-8e1b3cd08b7913a21871ac015fc2b363","name":"@blurtopian/pulse-demo-skill","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@blurtopian/pulse-demo-skill","version":"1.0.0","keywords":["remotion","video","demo","polling","voting","dapp","blockchain","claude","skill"],"author":"","license":"MIT","_id":"@blurtopian/pulse-demo-skill@1.0.0","maintainers":[{"name":"blurtopian_admin","email":"blurtopian@gmail.com"},{"name":"eastmael","email":"eastmaels@gmail.com"}],"homepage":"https://github.com/dpolls/pulse-demo-skill#readme","bugs":{"url":"https://github.com/dpolls/pulse-demo-skill/issues"},"bin":{"pulse-demo-skill":"dist/cli/index.js"},"dist":{"shasum":"24d8dd8721fdee3b01a995272c250ea415dcb8af","tarball":"https://registry.npmjs.org/@blurtopian/pulse-demo-skill/-/pulse-demo-skill-1.0.0.tgz","fileCount":77,"integrity":"sha512-FPx2GJ+pHAeS9A9y6HeN879Ur8Ys/1zt03gQnGdj5NvzkD2VPuC8lbe54ANYv7Kb0xVfwZs4CwBNYf8QQSm0ZQ==","signatures":[{"sig":"MEQCIHkW9Yr96LAUb1YLSIm9QoIs8q2I5gP7/e20I3LSKg4eAiA8fkh51v8SXOJ0LbtrH/TrB7VZDNKwtOa+hjMAxZSbIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246724},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9bdbfb7aa5a5509d85308e1009169cd16ecb84fd","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"eastmael","email":"eastmaels@gmail.com"},"repository":{"url":"git+https://github.com/dpolls/pulse-demo-skill.git","type":"git"},"_npmVersion":"10.9.3","description":"Claude skill for creating demo videos of polling/voting dApps with Remotion","directories":{},"_nodeVersion":"22.20.0","dependencies":{"fs-extra":"^11.2.0","commander":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.9.0","@types/node":"^22.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/pulse-demo-skill_1.0.0_1769417136596_0.5556203362993692","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@blurtopian/pulse-demo-skill","version":"1.1.0","description":"Claude skill for creating demo videos of polling/voting dApps with Remotion","main":"dist/index.js","types":"dist/index.d.ts","bin":{"pulse-demo-skill":"dist/cli/index.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","lint":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"keywords":["remotion","video","demo","polling","voting","dapp","blockchain","claude","skill"],"author":"","license":"MIT","dependencies":{"commander":"^12.1.0","fs-extra":"^11.2.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^22.0.0","typescript":"^5.9.0","vitest":"^2.0.0"},"repository":{"type":"git","url":"git+https://github.com/dpolls/pulse-demo-skill.git"},"engines":{"node":">=18.0.0"},"_id":"@blurtopian/pulse-demo-skill@1.1.0","gitHead":"9bdbfb7aa5a5509d85308e1009169cd16ecb84fd","bugs":{"url":"https://github.com/dpolls/pulse-demo-skill/issues"},"homepage":"https://github.com/dpolls/pulse-demo-skill#readme","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-1nOoHtKwq1y4kTs6k/ujhu4wh8PbnuTty4GpEX4aeK2jYb6YH98p8KsV6T+S3aADa7E3FBkeUU8Vj05FHcYbHg==","shasum":"a723c737ce874943f6051f76db3cf8dbcccb2347","tarball":"https://registry.npmjs.org/@blurtopian/pulse-demo-skill/-/pulse-demo-skill-1.1.0.tgz","fileCount":81,"unpackedSize":253584,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDXrfEbNaf6UPtccYGLAOJy2x5Helqbzrxx2m8G2STAyQIhAKgWmwF5blGWMcrBAbgJgj0tmgD2ayWYY/bxOJ1Q5eCE"}]},"_npmUser":{"name":"eastmael","email":"eastmaels@gmail.com"},"directories":{},"maintainers":[{"name":"blurtopian_admin","email":"blurtopian@gmail.com"},{"name":"eastmael","email":"eastmaels@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pulse-demo-skill_1.1.0_1769418977540_0.7350883068383902"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-26T08:45:36.493Z","modified":"2026-01-26T09:16:17.879Z","1.0.0":"2026-01-26T08:45:36.721Z","1.1.0":"2026-01-26T09:16:17.703Z"},"bugs":{"url":"https://github.com/dpolls/pulse-demo-skill/issues"},"license":"MIT","homepage":"https://github.com/dpolls/pulse-demo-skill#readme","keywords":["remotion","video","demo","polling","voting","dapp","blockchain","claude","skill"],"repository":{"type":"git","url":"git+https://github.com/dpolls/pulse-demo-skill.git"},"description":"Claude skill for creating demo videos of polling/voting dApps with Remotion","maintainers":[{"name":"blurtopian_admin","email":"blurtopian@gmail.com"},{"name":"eastmael","email":"eastmaels@gmail.com"}],"readme":"# Pulse Demo Skill\n\nA Claude skill for creating demo videos of polling/voting dApps using Remotion with ElevenLabs voiceover.\n\nBuilt on top of `remotion-best-practices`, this skill provides domain-specific patterns for poll/vote visualization, privacy mode animations, reward claiming flows, and multi-chain branding.\n\n## Features\n\n- **Poll Lifecycle Visualization**: ACTIVE → CLAIMING → CLOSED → FINALIZED states\n- **Privacy Mode Animations**: Anonymous, Semi-private, Identified modes\n- **Reward Animations**: Token icons, claiming flows, distribution visuals\n- **Multi-chain Support**: Aleo, Ethereum, Solana presets (or create your own)\n- **ElevenLabs Integration**: Generate professional voiceovers from scripts\n- **Configurable Branding**: Colors, fonts, logos, taglines\n\n## Installation\n\n### As a Claude Skill\n\n```bash\n# Create .claude directory\nmkdir -p .claude/skills\n\n# Install skill (can be invoked as /pulse-demo-skill)\nln -s /path/to/pulse-demo-skill/skill .claude/skills/pulse-demo-skill\n```\n\n### As a CLI Tool\n\n```bash\n# Initialize a new demo video project\nnpx @blurtopian/pulse-demo-skill init my-poll-demo\n\ncd my-poll-demo\nnpm install\n```\n\n## Using the /pulse-demo-skill Command\n\nThe `/pulse-demo-skill` command guides you through a structured workflow with user confirmations:\n\n```bash\n/pulse-demo-skill my-demo\n```\n\n### Workflow Checkpoints\n\n| Step | Checkpoint | Description |\n|------|------------|-------------|\n| 0 | Workflow Confirmation | Review and approve the production plan |\n| 3 | Script Review | Approve voiceover text before sending to API |\n| 4 | Voice Selection | Choose from recommended voices (Rachel, Josh, etc.) |\n\n### Voice Options\n\n| Voice | Gender | Style | Best For |\n|-------|--------|-------|----------|\n| Rachel | Female | Professional | Product demos (default) |\n| Josh | Male | Casual | Tech tutorials |\n| Bella | Female | Friendly | Approachable content |\n| Adam | Male | Neutral | Corporate, formal |\n\n### SSML Support\n\nThe command generates SSML markup for professional audio quality:\n\n```xml\n<speak>\n  <p>\n    Introducing <emphasis level=\"moderate\">MyPolls</emphasis>\n    <break time=\"200ms\"/>\n    decentralized voting on Aleo.\n  </p>\n</speak>\n```\n\n## Quick Start\n\n1. **Initialize a new project**\n\n```bash\nnpx @blurtopian/pulse-demo-skill init my-poll-demo\ncd my-poll-demo\nnpm install\n```\n\n2. **Configure your brand** (`src/config/theme.ts`)\n\n```typescript\nexport const theme: ThemeConfig = {\n  colors: {\n    primary: \"#6366f1\",\n    secondary: \"#8b5cf6\",\n    accent: \"#a855f7\",\n    background: \"#0a0a0a\",\n    text: \"#fafafa\",\n    muted: \"#a1a1aa\",\n  },\n  fonts: {\n    heading: \"system-ui, sans-serif\",\n    body: \"system-ui, sans-serif\",\n  },\n  logo: {\n    text: \"MyPolls\",\n    gradient: [\"#6366f1\", \"#a855f7\"],\n  },\n  tagline: \"Decentralized Voting\",\n  url: \"mypolls.app\",\n};\n```\n\n3. **Configure your chain** (`src/config/chain.ts`)\n\n```typescript\nimport { chainPresets } from \"pulse-demo-skill\";\n\nexport const chain = chainPresets.aleo;\n// Or customize:\n// export const chain: ChainConfig = { ... }\n```\n\n4. **Write your script** (`scripts/demo-script.md`)\n\n```markdown\n# Demo Script\n\n## Scene 1: Intro (0:00 - 0:05)\n**VO:** \"Introducing MyPolls - decentralized voting on Aleo.\"\n**Visual:** Logo animation\n\n## Scene 2: Problem (0:05 - 0:12)\n**VO:** \"Traditional voting lacks privacy and transparency.\"\n**Visual:** TextScene with problem statement\n```\n\n5. **Generate voiceover**\n\n```bash\n# Set your ElevenLabs API key\nexport ELEVENLABS_API_KEY=your_key_here\n\nnpm run generate:voiceover\n```\n\n6. **Preview and render**\n\n```bash\nnpm run dev        # Preview in browser\nnpm run render     # Export MP4\n```\n\n## Project Structure\n\n```\nmy-poll-demo/\n├── package.json\n├── remotion.config.ts\n├── tsconfig.json\n├── scripts/\n│   ├── demo-script.md          # Your video script\n│   └── generate-voiceover.ts   # Voiceover generator\n├── src/\n│   ├── index.ts\n│   ├── Root.tsx\n│   ├── DemoVideo.tsx           # Main composition\n│   ├── config/\n│   │   ├── theme.ts            # Brand configuration\n│   │   ├── chain.ts            # Blockchain settings\n│   │   └── timings.ts          # Scene durations\n│   ├── components/\n│   │   ├── Logo.tsx\n│   │   ├── TextScene.tsx\n│   │   ├── PrivacyModes.tsx\n│   │   ├── PollCreation.tsx\n│   │   ├── VotingFlow.tsx\n│   │   ├── RewardsClaim.tsx\n│   │   └── CallToAction.tsx\n│   └── lib/\n│       └── elevenlabs.ts\n└── public/\n    └── audio/                  # Generated voiceovers\n```\n\n## Configuration\n\n### Theme Configuration\n\n```typescript\ninterface ThemeConfig {\n  colors: {\n    primary: string;    // Main brand color\n    secondary: string;  // Secondary accent\n    accent: string;     // Highlights\n    background: string; // Scene backgrounds\n    text: string;       // Primary text\n    muted: string;      // Secondary text\n  };\n  fonts: {\n    heading: string;    // Title font\n    body: string;       // Body text font\n  };\n  logo: {\n    text: string;       // Logo text\n    gradient?: [string, string]; // Optional gradient\n  };\n  tagline: string;      // Shown below logo\n  url: string;          // Call-to-action URL\n}\n```\n\n### Chain Configuration\n\n```typescript\ninterface ChainConfig {\n  name: string;           // \"aleo\", \"ethereum\", \"solana\"\n  displayName: string;    // \"Aleo Blockchain\"\n  primaryColor: string;\n  secondaryColor: string;\n  networkName: string;    // \"Testnet\", \"Mainnet\"\n  privacyFeature?: string; // \"Zero-Knowledge Proofs\"\n}\n```\n\n### Built-in Chain Presets\n\n```typescript\nimport { chainPresets } from \"pulse-demo-skill\";\n\nchainPresets.aleo      // Aleo - ZK-native\nchainPresets.ethereum  // Ethereum - Solidity\nchainPresets.solana    // Solana - High performance\nchainPresets.polygon   // Polygon - L2\nchainPresets.base      // Base - Coinbase L2\n```\n\n## Available Components\n\n| Component | Description |\n|-----------|-------------|\n| `Logo` | Animated logo with tagline and network badge |\n| `TextScene` | Title + text with animated gradient background |\n| `PrivacyModes` | Three privacy mode cards with icons |\n| `PollCreation` | Poll setup flow visualization |\n| `VotingFlow` | Voting interaction demo |\n| `RewardsClaim` | Reward claiming animation |\n| `CallToAction` | Final CTA with URL and button |\n\n## Commands\n\n```bash\n# Development\nnpm run dev              # Start Remotion Studio\n\n# Rendering\nnpm run render           # Export as MP4\nnpm run render:gif       # Export as GIF\nnpm run thumbnail        # Export thumbnail PNG\n\n# Voiceover\nnpm run generate:voiceover  # Generate from script\n\n# Quality\nnpm run lint             # TypeScript check\n```\n\n## Requirements\n\n- Node.js 18+\n- ElevenLabs API key (for voiceover generation)\n\n## Related\n\n- [remotion-best-practices](https://github.com/remotion-dev/remotion-best-practices) - Core Remotion patterns\n- [Remotion Documentation](https://remotion.dev/docs)\n- [ElevenLabs API](https://elevenlabs.io/docs)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}