jfl 0.0.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.
- package/LICENSE +21 -0
- package/README.md +313 -0
- package/clawdbot-skill/README.md +328 -0
- package/clawdbot-skill/SKILL.md +362 -0
- package/clawdbot-skill/index.ts +486 -0
- package/clawdbot-skill/package.json +28 -0
- package/clawdbot-skill/skill.json +28 -0
- package/dist/commands/agents.d.ts +5 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +399 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/context-hub.d.ts +12 -0
- package/dist/commands/context-hub.d.ts.map +1 -0
- package/dist/commands/context-hub.js +642 -0
- package/dist/commands/context-hub.js.map +1 -0
- package/dist/commands/deploy.d.ts +5 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +370 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/feedback.d.ts +2 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +178 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/hud.d.ts +4 -0
- package/dist/commands/hud.d.ts.map +1 -0
- package/dist/commands/hud.js +262 -0
- package/dist/commands/hud.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +553 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +23 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +818 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/ralph.d.ts +9 -0
- package/dist/commands/ralph.d.ts.map +1 -0
- package/dist/commands/ralph.js +67 -0
- package/dist/commands/ralph.js.map +1 -0
- package/dist/commands/repair.d.ts +7 -0
- package/dist/commands/repair.d.ts.map +1 -0
- package/dist/commands/repair.js +283 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/session-mgmt.d.ts +33 -0
- package/dist/commands/session-mgmt.d.ts.map +1 -0
- package/dist/commands/session-mgmt.js +404 -0
- package/dist/commands/session-mgmt.js.map +1 -0
- package/dist/commands/session.d.ts +2 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +639 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/skills.d.ts +31 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +314 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +127 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/synopsis.d.ts +10 -0
- package/dist/commands/synopsis.d.ts.map +1 -0
- package/dist/commands/synopsis.js +277 -0
- package/dist/commands/synopsis.js.map +1 -0
- package/dist/commands/update.d.ts +10 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +165 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/voice.d.ts +410 -0
- package/dist/commands/voice.d.ts.map +1 -0
- package/dist/commands/voice.js +4763 -0
- package/dist/commands/voice.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +512 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/context-hub-mcp.d.ts +11 -0
- package/dist/mcp/context-hub-mcp.d.ts.map +1 -0
- package/dist/mcp/context-hub-mcp.js +548 -0
- package/dist/mcp/context-hub-mcp.js.map +1 -0
- package/dist/telegram/voice.d.ts +146 -0
- package/dist/telegram/voice.d.ts.map +1 -0
- package/dist/telegram/voice.js +351 -0
- package/dist/telegram/voice.js.map +1 -0
- package/dist/types/skills.d.ts +44 -0
- package/dist/types/skills.d.ts.map +1 -0
- package/dist/types/skills.js +5 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/ui/banner.d.ts +18 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +323 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +52 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +72 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/theme.d.ts +82 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +142 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/utils/auth-guard.d.ts +66 -0
- package/dist/utils/auth-guard.d.ts.map +1 -0
- package/dist/utils/auth-guard.js +348 -0
- package/dist/utils/auth-guard.js.map +1 -0
- package/dist/utils/ensure-project.d.ts +11 -0
- package/dist/utils/ensure-project.d.ts.map +1 -0
- package/dist/utils/ensure-project.js +70 -0
- package/dist/utils/ensure-project.js.map +1 -0
- package/dist/utils/git.d.ts +73 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +219 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/github-auth.d.ts +54 -0
- package/dist/utils/github-auth.d.ts.map +1 -0
- package/dist/utils/github-auth.js +375 -0
- package/dist/utils/github-auth.js.map +1 -0
- package/dist/utils/github-repo.d.ts +30 -0
- package/dist/utils/github-repo.d.ts.map +1 -0
- package/dist/utils/github-repo.js +219 -0
- package/dist/utils/github-repo.js.map +1 -0
- package/dist/utils/platform-auth.d.ts +81 -0
- package/dist/utils/platform-auth.d.ts.map +1 -0
- package/dist/utils/platform-auth.js +191 -0
- package/dist/utils/platform-auth.js.map +1 -0
- package/dist/utils/project-config.d.ts +43 -0
- package/dist/utils/project-config.d.ts.map +1 -0
- package/dist/utils/project-config.js +97 -0
- package/dist/utils/project-config.js.map +1 -0
- package/dist/utils/skill-registry.d.ts +49 -0
- package/dist/utils/skill-registry.d.ts.map +1 -0
- package/dist/utils/skill-registry.js +192 -0
- package/dist/utils/skill-registry.js.map +1 -0
- package/dist/utils/wallet.d.ts +62 -0
- package/dist/utils/wallet.d.ts.map +1 -0
- package/dist/utils/wallet.js +252 -0
- package/dist/utils/wallet.js.map +1 -0
- package/dist/utils/x402-client.d.ts +86 -0
- package/dist/utils/x402-client.d.ts.map +1 -0
- package/dist/utils/x402-client.js +265 -0
- package/dist/utils/x402-client.js.map +1 -0
- package/package.json +76 -0
- package/scripts/postinstall.js +116 -0
- package/scripts/test-onboarding.sh +121 -0
- package/scripts/voice-start.sh +128 -0
- package/scripts/voice-stop.sh +33 -0
- package/template/.claude/settings.json +92 -0
- package/template/.claude/skills/agent-browser/SKILL.md +116 -0
- package/template/.claude/skills/brand-architect/SKILL.md +240 -0
- package/template/.claude/skills/brand-architect/config.yaml +137 -0
- package/template/.claude/skills/campaign-hud/config.yaml +112 -0
- package/template/.claude/skills/content-creator/SKILL.md +294 -0
- package/template/.claude/skills/debug/MULTI_AGENT.md +360 -0
- package/template/.claude/skills/debug/SKILL.md +549 -0
- package/template/.claude/skills/fly-deploy/SKILL.md +676 -0
- package/template/.claude/skills/founder-video/SKILL.md +467 -0
- package/template/.claude/skills/hud/SKILL.md +157 -0
- package/template/.claude/skills/ralph-tui/SKILL.md +210 -0
- package/template/.claude/skills/react-best-practices/AGENTS.md +2249 -0
- package/template/.claude/skills/react-best-practices/README.md +123 -0
- package/template/.claude/skills/react-best-practices/SKILL.md +125 -0
- package/template/.claude/skills/react-best-practices/metadata.json +15 -0
- package/template/.claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/template/.claude/skills/react-best-practices/rules/_template.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/template/.claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/template/.claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.claude/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/template/.claude/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/template/.claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/template/.claude/skills/remotion-best-practices/SKILL.md +43 -0
- package/template/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
- package/template/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
- package/template/.claude/skills/remotion-best-practices/rules/audio.md +172 -0
- package/template/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/template/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/template/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/template/.claude/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/template/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/template/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/template/.claude/skills/remotion-best-practices/rules/images.md +130 -0
- package/template/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/template/.claude/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/template/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/template/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/template/.claude/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/template/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/template/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/template/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
- package/template/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/template/.claude/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/template/.claude/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/template/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
- package/template/.claude/skills/search/SKILL.md +220 -0
- package/template/.claude/skills/spec/SKILL.md +377 -0
- package/template/.claude/skills/startup/SKILL.md +310 -0
- package/template/.claude/skills/web-architect/SKILL.md +309 -0
- package/template/.claude/skills/x-algorithm/SKILL.md +305 -0
- package/template/.jfl/config.json +8 -0
- package/template/.mcp.json +11 -0
- package/template/CLAUDE.md +960 -0
- package/template/content/.gitkeep +0 -0
- package/template/context-hub +3 -0
- package/template/knowledge/BRAND_BRIEF.md +124 -0
- package/template/knowledge/BRAND_DECISIONS.md +168 -0
- package/template/knowledge/NARRATIVE.md +114 -0
- package/template/knowledge/ROADMAP.md +128 -0
- package/template/knowledge/THESIS.md +108 -0
- package/template/knowledge/VISION.md +74 -0
- package/template/knowledge/VOICE_AND_TONE.md +146 -0
- package/template/previews/.gitkeep +0 -0
- package/template/scripts/session/auto-commit.sh +245 -0
- package/template/scripts/session/auto-merge.sh +325 -0
- package/template/scripts/session/jfl-doctor.sh +587 -0
- package/template/scripts/session/session-end.sh +194 -0
- package/template/scripts/session/session-init.sh +163 -0
- package/template/scripts/session/session-sync.sh +167 -0
- package/template/scripts/session/test-context-preservation.sh +160 -0
- package/template/skills/agent-browser/SKILL.md +116 -0
- package/template/skills/brand-architect/SKILL.md +240 -0
- package/template/skills/brand-architect/config.yaml +137 -0
- package/template/skills/campaign-hud/config.yaml +112 -0
- package/template/skills/content-creator/SKILL.md +294 -0
- package/template/skills/debug/MULTI_AGENT.md +360 -0
- package/template/skills/debug/SKILL.md +549 -0
- package/template/skills/fly-deploy/SKILL.md +676 -0
- package/template/skills/founder-video/SKILL.md +467 -0
- package/template/skills/hud/SKILL.md +204 -0
- package/template/skills/ralph-tui/SKILL.md +210 -0
- package/template/skills/react-best-practices/AGENTS.md +2249 -0
- package/template/skills/react-best-practices/README.md +123 -0
- package/template/skills/react-best-practices/SKILL.md +125 -0
- package/template/skills/react-best-practices/metadata.json +15 -0
- package/template/skills/react-best-practices/rules/_sections.md +46 -0
- package/template/skills/react-best-practices/rules/_template.md +28 -0
- package/template/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/template/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/template/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/template/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/template/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/template/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/template/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/template/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/template/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/template/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/template/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/template/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/template/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/template/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/template/skills/remotion-best-practices/SKILL.md +43 -0
- package/template/skills/remotion-best-practices/rules/3d.md +86 -0
- package/template/skills/remotion-best-practices/rules/animations.md +29 -0
- package/template/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/template/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/template/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/template/skills/remotion-best-practices/rules/assets.md +78 -0
- package/template/skills/remotion-best-practices/rules/audio.md +172 -0
- package/template/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/template/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/template/skills/remotion-best-practices/rules/charts.md +58 -0
- package/template/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/template/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/template/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/template/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/template/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/template/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/template/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/template/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/template/skills/remotion-best-practices/rules/images.md +130 -0
- package/template/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/template/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/template/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/template/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/template/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/template/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/template/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/template/skills/remotion-best-practices/rules/timing.md +179 -0
- package/template/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/template/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/template/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/template/skills/remotion-best-practices/rules/videos.md +171 -0
- package/template/skills/search/SKILL.md +220 -0
- package/template/skills/spec/SKILL.md +377 -0
- package/template/skills/startup/SKILL.md +310 -0
- package/template/skills/web-architect/SKILL.md +309 -0
- package/template/skills/x-algorithm/SKILL.md +305 -0
- package/template/suggestions/.gitkeep +0 -0
- package/template/templates/QUICKSTART_SKILL_TO_PRODUCT.md +242 -0
- package/template/templates/brand/BRAND_BRIEF.md +124 -0
- package/template/templates/brand/BRAND_DECISIONS.md +168 -0
- package/template/templates/brand/BRAND_GUIDELINES.md +251 -0
- package/template/templates/brand/VOICE_AND_TONE.md +146 -0
- package/template/templates/brand/global.css +240 -0
- package/template/templates/collaboration/CONTRIBUTOR.md +74 -0
- package/template/templates/collaboration/CRM.md +97 -0
- package/template/templates/collaboration/TASKS.md +83 -0
- package/template/templates/strategic/NARRATIVE.md +114 -0
- package/template/templates/strategic/ROADMAP.md +128 -0
- package/template/templates/strategic/THESIS.md +108 -0
- package/template/templates/strategic/VISION.md +74 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: search
|
|
3
|
+
description: Semantic search across GTM knowledge base using qmd - find context by meaning, not just keywords
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Search
|
|
7
|
+
|
|
8
|
+
Semantic search across your GTM workspace. Find decisions, context, and knowledge by meaning.
|
|
9
|
+
|
|
10
|
+
Uses [qmd](https://github.com/tobi/qmd) - local hybrid search combining BM25 keywords, vector embeddings, and LLM reranking.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/search "what did we decide about pricing"
|
|
16
|
+
/search "authentication flow"
|
|
17
|
+
/search --keyword "API" # Fast keyword-only
|
|
18
|
+
/search --semantic "how to deploy" # Vector-only
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Setup
|
|
22
|
+
|
|
23
|
+
**New workspaces:** Search is set up automatically during `jfl init` if you choose to enable it.
|
|
24
|
+
|
|
25
|
+
**Existing workspaces:** Follow the manual setup below.
|
|
26
|
+
|
|
27
|
+
## On Skill Invoke
|
|
28
|
+
|
|
29
|
+
### Step 1: Check if qmd is installed
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
which qmd
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**If not installed:**
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
qmd not found. It's a local search engine for your markdown files.
|
|
39
|
+
|
|
40
|
+
Install it?
|
|
41
|
+
|
|
42
|
+
bun install -g https://github.com/tobi/qmd
|
|
43
|
+
|
|
44
|
+
[Yes] [No]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
If yes, run:
|
|
48
|
+
```bash
|
|
49
|
+
bun install -g https://github.com/tobi/qmd
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 2: Check if GTM is indexed
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
qmd status
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Look for a collection that matches this workspace (check `.jfl/config.json` for the collection name).
|
|
59
|
+
|
|
60
|
+
**If no collection exists, guide setup:**
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
This GTM workspace isn't indexed yet.
|
|
64
|
+
|
|
65
|
+
To set up search, run these commands:
|
|
66
|
+
|
|
67
|
+
# Add the workspace as a collection
|
|
68
|
+
qmd collection add . --name <project-name>
|
|
69
|
+
|
|
70
|
+
# Add context to help search understand the content
|
|
71
|
+
qmd context add qmd://<project-name> "GTM workspace: vision, narrative, specs, content, and decisions"
|
|
72
|
+
qmd context add qmd://<project-name>/knowledge "Strategic docs: vision, thesis, roadmap, brand"
|
|
73
|
+
qmd context add qmd://<project-name>/content "Marketing content: articles, threads, posts"
|
|
74
|
+
|
|
75
|
+
# Generate embeddings (takes a minute, downloads ~1.5GB of models first time)
|
|
76
|
+
qmd embed
|
|
77
|
+
|
|
78
|
+
After running these, try /search again.
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Note:** These commands are run automatically during `jfl init` if search is enabled. Only run manually for existing workspaces.
|
|
82
|
+
|
|
83
|
+
### Step 3: Run the search
|
|
84
|
+
|
|
85
|
+
**Default (hybrid with reranking - best quality):**
|
|
86
|
+
```bash
|
|
87
|
+
qmd query "USER_QUERY" -n 10
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Keyword-only (fast):**
|
|
91
|
+
```bash
|
|
92
|
+
qmd search "USER_QUERY" -n 10
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Semantic-only:**
|
|
96
|
+
```bash
|
|
97
|
+
qmd vsearch "USER_QUERY" -n 10
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Step 4: Present results
|
|
101
|
+
|
|
102
|
+
Show results with:
|
|
103
|
+
- File path (relative to workspace)
|
|
104
|
+
- Score (percentage)
|
|
105
|
+
- Snippet with context
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
Found 5 results for "pricing":
|
|
109
|
+
|
|
110
|
+
knowledge/PRODUCT_SPEC_V2.md (87%)
|
|
111
|
+
"The day pass model: $5/day per person. Only pay days you use it..."
|
|
112
|
+
|
|
113
|
+
knowledge/THESIS.md (72%)
|
|
114
|
+
"Before: $355k/year (tools + coordination headcount). After: $240/year..."
|
|
115
|
+
|
|
116
|
+
content/articles/YOU_SHOULD_BE_WORKING_ON_CONTEXT.md (58%)
|
|
117
|
+
"The entire SaaS economy is a $300B/year patch..."
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
If user wants full content, use:
|
|
121
|
+
```bash
|
|
122
|
+
qmd get "FILE_PATH" --full
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Search Modes
|
|
128
|
+
|
|
129
|
+
| Mode | Command | Use When |
|
|
130
|
+
|------|---------|----------|
|
|
131
|
+
| **Hybrid** | `qmd query` | Best quality, default |
|
|
132
|
+
| **Keyword** | `qmd search` | Fast, exact matches |
|
|
133
|
+
| **Semantic** | `qmd vsearch` | Conceptual similarity |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Keeping Index Fresh
|
|
138
|
+
|
|
139
|
+
When files change, the index needs updating:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Re-index all collections
|
|
143
|
+
qmd update
|
|
144
|
+
|
|
145
|
+
# Re-index and pull git changes first
|
|
146
|
+
qmd update --pull
|
|
147
|
+
|
|
148
|
+
# Re-generate embeddings (after significant changes)
|
|
149
|
+
qmd embed
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Do not run these automatically.** Mention to user if results seem stale.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Advanced Options
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Filter by collection
|
|
160
|
+
qmd query "API design" -c knowledge
|
|
161
|
+
|
|
162
|
+
# Minimum score threshold
|
|
163
|
+
qmd query "authentication" --min-score 0.5
|
|
164
|
+
|
|
165
|
+
# All results above threshold
|
|
166
|
+
qmd query "error handling" --all --min-score 0.3
|
|
167
|
+
|
|
168
|
+
# JSON output for processing
|
|
169
|
+
qmd query "deployment" --json
|
|
170
|
+
|
|
171
|
+
# Get full document content
|
|
172
|
+
qmd get "knowledge/VISION.md" --full
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## MCP Server (Optional)
|
|
178
|
+
|
|
179
|
+
For deeper integration, qmd can run as an MCP server so Claude has it as a native tool.
|
|
180
|
+
|
|
181
|
+
Add to `~/.claude/settings.json`:
|
|
182
|
+
```json
|
|
183
|
+
{
|
|
184
|
+
"mcpServers": {
|
|
185
|
+
"qmd": {
|
|
186
|
+
"command": "qmd",
|
|
187
|
+
"args": ["mcp"]
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Then Claude can use `qmd_search`, `qmd_vsearch`, `qmd_query`, `qmd_get` directly without invoking the skill.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## What Gets Indexed
|
|
198
|
+
|
|
199
|
+
Default glob pattern indexes all markdown files:
|
|
200
|
+
- `knowledge/` - vision, narrative, thesis, brand, specs
|
|
201
|
+
- `content/` - articles, threads, posts
|
|
202
|
+
- `product/` - product specs, decisions
|
|
203
|
+
- `suggestions/` - contributor work
|
|
204
|
+
- `drafts/` - work in progress
|
|
205
|
+
|
|
206
|
+
Customize with `--mask` when adding collection:
|
|
207
|
+
```bash
|
|
208
|
+
qmd collection add . --name gtm --mask "**/*.md"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Why Local Search
|
|
214
|
+
|
|
215
|
+
- **Private** - everything stays on your machine
|
|
216
|
+
- **Semantic** - finds related concepts, not just keywords
|
|
217
|
+
- **Fast** - SQLite + local models, no API calls
|
|
218
|
+
- **Context-aware** - understands your knowledge base structure
|
|
219
|
+
|
|
220
|
+
The context layer becomes searchable. Decisions don't get lost.
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec
|
|
3
|
+
description: Refine product specs through parallel adversarial agents - multiple perspectives catch what any single review would miss
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Refinement
|
|
7
|
+
|
|
8
|
+
Multi-agent adversarial review for product specs. Parallel agents with different personas critique your spec until consensus.
|
|
9
|
+
|
|
10
|
+
**Why this matters:** A single reviewer will miss things. Multiple perspectives - skeptic, implementer, user advocate, security engineer - will catch gaps, challenge assumptions, and surface edge cases. The result is a document that has survived rigorous review before you write a single line of code.
|
|
11
|
+
|
|
12
|
+
**Dogfooding:** This skill uses JFL's own multi-agent infrastructure. No external API keys needed. Parallel Task agents debate using the same Claude that powers everything else.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/spec # Start from scratch - describe what to build
|
|
18
|
+
/spec ./docs/my-spec.md # Refine an existing spec
|
|
19
|
+
/spec --interview # Deep requirements gathering first
|
|
20
|
+
/spec --focus security # Focus critique on security concerns
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## On Skill Invoke
|
|
24
|
+
|
|
25
|
+
### Step 1: Determine Input
|
|
26
|
+
|
|
27
|
+
**If user provided a file path:**
|
|
28
|
+
- Read the file
|
|
29
|
+
- Use as starting spec
|
|
30
|
+
|
|
31
|
+
**If user said --interview:**
|
|
32
|
+
- Start interview mode (see Interview section below)
|
|
33
|
+
|
|
34
|
+
**If user just described what to build:**
|
|
35
|
+
- Ask 2-4 clarifying questions first
|
|
36
|
+
- Draft initial spec based on answers
|
|
37
|
+
- Show draft for approval before debate
|
|
38
|
+
|
|
39
|
+
### Step 2: Select Document Type
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
What type of document?
|
|
43
|
+
|
|
44
|
+
1. PRD - Product requirements (for stakeholders, PMs)
|
|
45
|
+
2. Tech Spec - Technical architecture (for engineers)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 3: Select Personas
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Which perspectives should review this spec?
|
|
52
|
+
(More = more rigorous review)
|
|
53
|
+
|
|
54
|
+
[x] Skeptic - challenges assumptions, asks "why not X?"
|
|
55
|
+
[x] Implementer - cares about buildability, edge cases
|
|
56
|
+
[x] User Advocate - focuses on UX, accessibility, real usage
|
|
57
|
+
[ ] Security Engineer - thinks like an attacker
|
|
58
|
+
[ ] Oncall Engineer - cares about debugging at 3am
|
|
59
|
+
[ ] Junior Developer - flags ambiguity, missing context
|
|
60
|
+
[ ] Product Manager - user value, success metrics
|
|
61
|
+
[ ] QA Engineer - missing test scenarios, failure modes
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Default: Skeptic + Implementer + User Advocate (3 perspectives)
|
|
65
|
+
|
|
66
|
+
### Step 4: Run Parallel Critique
|
|
67
|
+
|
|
68
|
+
**Spawn Task agents in parallel, each with their persona:**
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Launching 3 agents in parallel:
|
|
72
|
+
|
|
73
|
+
[Skeptic] Challenging assumptions...
|
|
74
|
+
[Implementer] Checking buildability...
|
|
75
|
+
[User Advocate] Evaluating UX...
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Each agent receives:
|
|
79
|
+
- The spec content
|
|
80
|
+
- Their persona description
|
|
81
|
+
- Instructions to critique independently
|
|
82
|
+
- Focus area if specified (--focus security, etc.)
|
|
83
|
+
|
|
84
|
+
**Example agent prompts:**
|
|
85
|
+
|
|
86
|
+
**Skeptic Agent:**
|
|
87
|
+
```
|
|
88
|
+
You are a skeptical technical reviewer. Your job is to challenge assumptions and ask "why not X?"
|
|
89
|
+
|
|
90
|
+
Read this spec and identify:
|
|
91
|
+
1. Assumptions that aren't justified
|
|
92
|
+
2. Alternative approaches not considered
|
|
93
|
+
3. Potential failure modes
|
|
94
|
+
4. Questions that should be answered before building
|
|
95
|
+
5. Scope that could be cut
|
|
96
|
+
|
|
97
|
+
Be constructively critical. Don't just criticize - suggest alternatives.
|
|
98
|
+
|
|
99
|
+
SPEC:
|
|
100
|
+
<spec content>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Implementer Agent:**
|
|
104
|
+
```
|
|
105
|
+
You are a senior engineer who will build this. Your job is to evaluate buildability.
|
|
106
|
+
|
|
107
|
+
Read this spec and identify:
|
|
108
|
+
1. Missing technical details needed to implement
|
|
109
|
+
2. Edge cases not covered
|
|
110
|
+
3. Integration points that are underspecified
|
|
111
|
+
4. Performance concerns
|
|
112
|
+
5. Dependencies and ordering constraints
|
|
113
|
+
6. Ambiguous requirements
|
|
114
|
+
|
|
115
|
+
Be specific about what's missing. Give examples of edge cases.
|
|
116
|
+
|
|
117
|
+
SPEC:
|
|
118
|
+
<spec content>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**User Advocate Agent:**
|
|
122
|
+
```
|
|
123
|
+
You are a UX-focused product person. Your job is to advocate for real users.
|
|
124
|
+
|
|
125
|
+
Read this spec and identify:
|
|
126
|
+
1. User journeys that are incomplete
|
|
127
|
+
2. Error states not handled
|
|
128
|
+
3. Accessibility concerns
|
|
129
|
+
4. Mobile vs desktop gaps
|
|
130
|
+
5. Onboarding friction
|
|
131
|
+
6. Confusing terminology
|
|
132
|
+
|
|
133
|
+
Think about actual humans using this. What will frustrate them?
|
|
134
|
+
|
|
135
|
+
SPEC:
|
|
136
|
+
<spec content>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Step 5: Synthesize Critiques
|
|
140
|
+
|
|
141
|
+
After all agents complete, synthesize their feedback:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
## Critique Summary
|
|
145
|
+
|
|
146
|
+
### Skeptic raised:
|
|
147
|
+
- [concern 1]
|
|
148
|
+
- [concern 2]
|
|
149
|
+
|
|
150
|
+
### Implementer raised:
|
|
151
|
+
- [concern 1]
|
|
152
|
+
- [concern 2]
|
|
153
|
+
|
|
154
|
+
### User Advocate raised:
|
|
155
|
+
- [concern 1]
|
|
156
|
+
- [concern 2]
|
|
157
|
+
|
|
158
|
+
## Overlapping concerns (multiple agents flagged):
|
|
159
|
+
- [high priority issue]
|
|
160
|
+
|
|
161
|
+
## Questions that need answers:
|
|
162
|
+
- [question 1]
|
|
163
|
+
- [question 2]
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Step 6: Get User Input on Questions
|
|
167
|
+
|
|
168
|
+
If agents raised questions that need user input:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
The reviewers raised some questions:
|
|
172
|
+
|
|
173
|
+
1. What are your expected traffic patterns for rate limiting?
|
|
174
|
+
2. Should offline mode be supported?
|
|
175
|
+
3. What happens if the WebSocket disconnects mid-huddle?
|
|
176
|
+
|
|
177
|
+
Your answers:
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Step 7: Revise Spec
|
|
181
|
+
|
|
182
|
+
Based on critiques and user input:
|
|
183
|
+
1. Address each concern raised
|
|
184
|
+
2. Add missing details
|
|
185
|
+
3. Clarify ambiguities
|
|
186
|
+
4. Document decisions made
|
|
187
|
+
|
|
188
|
+
Show the revised spec sections.
|
|
189
|
+
|
|
190
|
+
### Step 8: Validate (Optional Second Round)
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
Run another round of review?
|
|
194
|
+
|
|
195
|
+
[Yes - full review] [Yes - quick check] [No - spec is ready]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
If yes, spawn agents again on revised spec. Repeat until consensus or user is satisfied.
|
|
199
|
+
|
|
200
|
+
### Step 9: Output Final Spec
|
|
201
|
+
|
|
202
|
+
When done:
|
|
203
|
+
- Write to `product/SPEC.md` or user-specified location
|
|
204
|
+
- Show summary of rounds and refinements
|
|
205
|
+
- Offer to continue to tech spec if PRD was just completed
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Interview Mode
|
|
210
|
+
|
|
211
|
+
Deep requirements gathering before drafting. Covers:
|
|
212
|
+
|
|
213
|
+
1. **Problem & Context** - What are we solving? Who has this pain?
|
|
214
|
+
2. **Users & Stakeholders** - All user types, technical levels, concerns
|
|
215
|
+
3. **Functional Requirements** - Core user journey, decision points, edge cases
|
|
216
|
+
4. **Technical Constraints** - Integrations, performance, scale, compliance
|
|
217
|
+
5. **UI/UX** - Desired experience, critical flows, mobile vs desktop
|
|
218
|
+
6. **Tradeoffs** - What gets cut first? Build vs buy?
|
|
219
|
+
7. **Risks** - What could cause failure? What assumptions might be wrong?
|
|
220
|
+
8. **Success Criteria** - How do we know it worked? What metrics?
|
|
221
|
+
|
|
222
|
+
After interview, synthesize into complete spec, then run through adversarial review.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Focus Modes
|
|
227
|
+
|
|
228
|
+
Direct critique toward specific concerns:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
/spec --focus security # Auth, validation, encryption, vulnerabilities
|
|
232
|
+
/spec --focus scalability # Horizontal scaling, sharding, caching
|
|
233
|
+
/spec --focus performance # Latency, throughput, optimization
|
|
234
|
+
/spec --focus ux # User journeys, error states, accessibility
|
|
235
|
+
/spec --focus reliability # Failure modes, circuit breakers, recovery
|
|
236
|
+
/spec --focus cost # Infrastructure costs, resource efficiency
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
When focus is specified, agents weight that area more heavily in their critique.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Persona Definitions
|
|
244
|
+
|
|
245
|
+
### Skeptic
|
|
246
|
+
- Challenges every assumption
|
|
247
|
+
- Asks "why not just use X?"
|
|
248
|
+
- Identifies scope creep
|
|
249
|
+
- Questions necessity of features
|
|
250
|
+
- Suggests simpler alternatives
|
|
251
|
+
|
|
252
|
+
### Implementer
|
|
253
|
+
- Focuses on buildability
|
|
254
|
+
- Catches edge cases
|
|
255
|
+
- Identifies missing technical specs
|
|
256
|
+
- Thinks about testing
|
|
257
|
+
- Flags integration complexity
|
|
258
|
+
|
|
259
|
+
### User Advocate
|
|
260
|
+
- Thinks about real usage
|
|
261
|
+
- Catches UX friction
|
|
262
|
+
- Advocates for accessibility
|
|
263
|
+
- Identifies confusing flows
|
|
264
|
+
- Focuses on error states
|
|
265
|
+
|
|
266
|
+
### Security Engineer
|
|
267
|
+
- Thinks like an attacker
|
|
268
|
+
- Reviews auth/authz
|
|
269
|
+
- Identifies injection points
|
|
270
|
+
- Checks data handling
|
|
271
|
+
- Reviews trust boundaries
|
|
272
|
+
|
|
273
|
+
### Oncall Engineer
|
|
274
|
+
- Cares about observability
|
|
275
|
+
- Wants clear error messages
|
|
276
|
+
- Thinks about debugging at 3am
|
|
277
|
+
- Asks about runbooks
|
|
278
|
+
- Flags monitoring gaps
|
|
279
|
+
|
|
280
|
+
### Junior Developer
|
|
281
|
+
- Flags unclear context
|
|
282
|
+
- Identifies assumed knowledge
|
|
283
|
+
- Asks "dumb" questions
|
|
284
|
+
- Catches jargon
|
|
285
|
+
- Wants more examples
|
|
286
|
+
|
|
287
|
+
### Product Manager
|
|
288
|
+
- Focuses on user value
|
|
289
|
+
- Asks about success metrics
|
|
290
|
+
- Prioritizes features
|
|
291
|
+
- Thinks about launch
|
|
292
|
+
- Identifies missing stakeholders
|
|
293
|
+
|
|
294
|
+
### QA Engineer
|
|
295
|
+
- Thinks about test scenarios
|
|
296
|
+
- Identifies failure modes
|
|
297
|
+
- Asks about data states
|
|
298
|
+
- Catches race conditions
|
|
299
|
+
- Wants acceptance criteria
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## The Flow
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
You describe what to build
|
|
307
|
+
↓
|
|
308
|
+
(Optional) Interview mode for deep requirements
|
|
309
|
+
↓
|
|
310
|
+
Claude drafts initial spec
|
|
311
|
+
↓
|
|
312
|
+
Parallel agents critique (3+ perspectives)
|
|
313
|
+
↓
|
|
314
|
+
Synthesize feedback + get user input on questions
|
|
315
|
+
↓
|
|
316
|
+
Revise spec
|
|
317
|
+
↓
|
|
318
|
+
(Optional) Another round until consensus
|
|
319
|
+
↓
|
|
320
|
+
Final spec output
|
|
321
|
+
↓
|
|
322
|
+
Ready to build
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Why Before Building
|
|
328
|
+
|
|
329
|
+
This is agents working together to catch what a single review misses.
|
|
330
|
+
|
|
331
|
+
Before writing code:
|
|
332
|
+
- Edge cases surfaced
|
|
333
|
+
- Assumptions challenged
|
|
334
|
+
- Gaps identified
|
|
335
|
+
- Clarifying questions asked
|
|
336
|
+
|
|
337
|
+
The spec that survives adversarial review is the spec worth building.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Integration with JFL
|
|
342
|
+
|
|
343
|
+
After spec is finalized:
|
|
344
|
+
- Save to `product/SPEC.md` or appropriate location
|
|
345
|
+
- Reference during build for decisions already made
|
|
346
|
+
- Update as implementation reveals new questions
|
|
347
|
+
|
|
348
|
+
The spec becomes part of the context layer - persistent knowledge that survives sessions.
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## Example Output
|
|
353
|
+
|
|
354
|
+
```
|
|
355
|
+
## Spec Review Complete
|
|
356
|
+
|
|
357
|
+
Rounds: 2
|
|
358
|
+
Personas: Skeptic, Implementer, User Advocate
|
|
359
|
+
|
|
360
|
+
### Key refinements made:
|
|
361
|
+
1. Added WebSocket reconnection handling (Implementer)
|
|
362
|
+
2. Clarified mobile-first approach (User Advocate)
|
|
363
|
+
3. Removed over-engineered participant limit system (Skeptic)
|
|
364
|
+
4. Added error states for all async operations (Implementer)
|
|
365
|
+
5. Defined success metrics (User Advocate)
|
|
366
|
+
|
|
367
|
+
### Concerns addressed:
|
|
368
|
+
- 8 edge cases documented
|
|
369
|
+
- 3 security considerations added
|
|
370
|
+
- 2 features descoped to v2
|
|
371
|
+
|
|
372
|
+
### Remaining open questions (for implementation):
|
|
373
|
+
- Exact voice transcription service TBD
|
|
374
|
+
- Rate limiting thresholds need load testing
|
|
375
|
+
|
|
376
|
+
Spec saved to: product/HUDDLE_SPEC.md
|
|
377
|
+
```
|