sinapse-ai 1.23.0 → 1.25.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/.agents/skills/sinapse/SKILL.md +10 -0
- package/.agents/skills/sinapse-agent/SKILL.md +22 -0
- package/.agents/skills/sinapse-analyst/SKILL.md +29 -0
- package/.agents/skills/sinapse-animations/SKILL.md +28 -0
- package/.agents/skills/sinapse-architect/SKILL.md +31 -0
- package/.agents/skills/sinapse-brand/SKILL.md +28 -0
- package/.agents/skills/sinapse-claude/SKILL.md +28 -0
- package/.agents/skills/sinapse-cloning/SKILL.md +28 -0
- package/.agents/skills/sinapse-commercial/SKILL.md +28 -0
- package/.agents/skills/sinapse-content/SKILL.md +28 -0
- package/.agents/skills/sinapse-copy/SKILL.md +28 -0
- package/.agents/skills/sinapse-council/SKILL.md +28 -0
- package/.agents/skills/sinapse-courses/SKILL.md +28 -0
- package/.agents/skills/sinapse-cyber/SKILL.md +28 -0
- package/.agents/skills/sinapse-data-engineer/SKILL.md +31 -0
- package/.agents/skills/sinapse-design/SKILL.md +28 -0
- package/.agents/skills/sinapse-dev/SKILL.md +31 -0
- package/.agents/skills/sinapse-devops/SKILL.md +31 -0
- package/.agents/skills/sinapse-finance/SKILL.md +28 -0
- package/.agents/skills/sinapse-growth/SKILL.md +28 -0
- package/.agents/skills/sinapse-loop/SKILL.md +35 -0
- package/.agents/skills/sinapse-orqx/SKILL.md +44 -0
- package/.agents/skills/sinapse-paidmedia/SKILL.md +28 -0
- package/.agents/skills/sinapse-pm/SKILL.md +31 -0
- package/.agents/skills/sinapse-po/SKILL.md +31 -0
- package/.agents/skills/sinapse-product/SKILL.md +28 -0
- package/.agents/skills/sinapse-qa/SKILL.md +31 -0
- package/.agents/skills/sinapse-research/SKILL.md +28 -0
- package/.agents/skills/sinapse-sm/SKILL.md +27 -0
- package/.agents/skills/sinapse-spec-driven/SKILL.md +35 -0
- package/.agents/skills/sinapse-squad-creator/SKILL.md +31 -0
- package/.agents/skills/sinapse-storytelling/SKILL.md +28 -0
- package/.agents/skills/sinapse-swarm/SKILL.md +28 -0
- package/.agents/skills/sinapse-ux-design-expert/SKILL.md +24 -0
- package/.agents/skills/snps/SKILL.md +10 -0
- package/.agents/skills/snps-orqx/SKILL.md +10 -0
- package/.claude/agents/README.md +67 -0
- package/.claude/agents/sinapse-ad-copywriter.md +14 -0
- package/.claude/agents/sinapse-agent-forger.md +14 -0
- package/.claude/agents/sinapse-analyst.md +14 -0
- package/.claude/agents/sinapse-animation-interpreter.md +14 -0
- package/.claude/agents/sinapse-animation-performance-engineer.md +14 -0
- package/.claude/agents/sinapse-animations-orqx.md +14 -0
- package/.claude/agents/sinapse-architect.md +14 -0
- package/.claude/agents/sinapse-assessment-creator.md +14 -0
- package/.claude/agents/sinapse-audience-intelligence.md +14 -0
- package/.claude/agents/sinapse-blake-snyder.md +14 -0
- package/.claude/agents/sinapse-brand-archetype-strategist.md +14 -0
- package/.claude/agents/sinapse-brand-auditor.md +14 -0
- package/.claude/agents/sinapse-brand-collateral-designer.md +14 -0
- package/.claude/agents/sinapse-brand-compiler.md +14 -0
- package/.claude/agents/sinapse-brand-creative-engineer.md +14 -0
- package/.claude/agents/sinapse-brand-culture-architect.md +14 -0
- package/.claude/agents/sinapse-brand-growth-strategist.md +14 -0
- package/.claude/agents/sinapse-brand-identity-designer.md +14 -0
- package/.claude/agents/sinapse-brand-motion-vfx.md +14 -0
- package/.claude/agents/sinapse-brand-naming-specialist.md +14 -0
- package/.claude/agents/sinapse-brand-orqx.md +14 -0
- package/.claude/agents/sinapse-brand-positioning-strategist.md +14 -0
- package/.claude/agents/sinapse-brand-sonic-designer.md +14 -0
- package/.claude/agents/sinapse-brand-strategist.md +14 -0
- package/.claude/agents/sinapse-brand-system-architect.md +14 -0
- package/.claude/agents/sinapse-brand-voice-writer.md +14 -0
- package/.claude/agents/sinapse-brene-brown.md +14 -0
- package/.claude/agents/sinapse-budget-controller.md +14 -0
- package/.claude/agents/sinapse-campaign-analyst.md +14 -0
- package/.claude/agents/sinapse-charlie-munger.md +14 -0
- package/.claude/agents/sinapse-claude-mastery-chief.md +14 -0
- package/.claude/agents/sinapse-cloning-orqx.md +14 -0
- package/.claude/agents/sinapse-cloud-security-engineer.md +14 -0
- package/.claude/agents/sinapse-cognitive-extractor.md +14 -0
- package/.claude/agents/sinapse-commercial-orqx.md +14 -0
- package/.claude/agents/sinapse-competitive-intelligence.md +14 -0
- package/.claude/agents/sinapse-compliance-officer.md +14 -0
- package/.claude/agents/sinapse-config-engineer.md +14 -0
- package/.claude/agents/sinapse-content-analyst.md +14 -0
- package/.claude/agents/sinapse-content-capturer.md +14 -0
- package/.claude/agents/sinapse-content-engineer.md +14 -0
- package/.claude/agents/sinapse-content-governor.md +14 -0
- package/.claude/agents/sinapse-content-orqx.md +14 -0
- package/.claude/agents/sinapse-content-writer.md +14 -0
- package/.claude/agents/sinapse-conversion-writer.md +14 -0
- package/.claude/agents/sinapse-copy-editor.md +14 -0
- package/.claude/agents/sinapse-copy-orqx.md +14 -0
- package/.claude/agents/sinapse-copy-strategist.md +14 -0
- package/.claude/agents/sinapse-cost-optimizer.md +14 -0
- package/.claude/agents/sinapse-council-orqx.md +14 -0
- package/.claude/agents/sinapse-courses-orqx.md +14 -0
- package/.claude/agents/sinapse-creative-strategist.md +14 -0
- package/.claude/agents/sinapse-cro-persuasion.md +14 -0
- package/.claude/agents/sinapse-cro-specialist.md +14 -0
- package/.claude/agents/sinapse-cs-business-auditor.md +14 -0
- package/.claude/agents/sinapse-cs-client-success.md +14 -0
- package/.claude/agents/sinapse-cs-crm-specialist.md +14 -0
- package/.claude/agents/sinapse-cs-funnel-architect.md +14 -0
- package/.claude/agents/sinapse-cs-lead-generation-strategist.md +14 -0
- package/.claude/agents/sinapse-cs-offer-designer.md +14 -0
- package/.claude/agents/sinapse-cs-revops-analyst.md +14 -0
- package/.claude/agents/sinapse-cs-sales-closer.md +14 -0
- package/.claude/agents/sinapse-cs-sales-enablement.md +14 -0
- package/.claude/agents/sinapse-css-motion-artist.md +14 -0
- package/.claude/agents/sinapse-curriculum-designer.md +14 -0
- package/.claude/agents/sinapse-cyber-orqx.md +14 -0
- package/.claude/agents/sinapse-dan-harmon.md +14 -0
- package/.claude/agents/sinapse-data-engineer.md +14 -0
- package/.claude/agents/sinapse-data-synthesizer.md +14 -0
- package/.claude/agents/sinapse-deep-researcher.md +14 -0
- package/.claude/agents/sinapse-derek-sivers.md +14 -0
- package/.claude/agents/sinapse-design-orqx.md +14 -0
- package/.claude/agents/sinapse-design-system.md +14 -0
- package/.claude/agents/sinapse-developer.md +14 -0
- package/.claude/agents/sinapse-devops.md +14 -0
- package/.claude/agents/sinapse-direct-response-writer.md +14 -0
- package/.claude/agents/sinapse-dx-accessibility-specialist.md +14 -0
- package/.claude/agents/sinapse-dx-design-system-architect.md +14 -0
- package/.claude/agents/sinapse-dx-frontend-engineer.md +14 -0
- package/.claude/agents/sinapse-dx-interaction-designer.md +14 -0
- package/.claude/agents/sinapse-dx-performance-engineer.md +14 -0
- package/.claude/agents/sinapse-dx-ui-designer.md +14 -0
- package/.claude/agents/sinapse-dx-ux-strategist.md +14 -0
- package/.claude/agents/sinapse-editorial-strategist.md +14 -0
- package/.claude/agents/sinapse-email-sequence-strategist.md +14 -0
- package/.claude/agents/sinapse-finance-orqx.md +14 -0
- package/.claude/agents/sinapse-fiscal-compliance-br.md +14 -0
- package/.claude/agents/sinapse-forecast-strategist.md +14 -0
- package/.claude/agents/sinapse-funnel-copywriter.md +14 -0
- package/.claude/agents/sinapse-ga-analytics-engineer.md +14 -0
- package/.claude/agents/sinapse-ga-campaign-analyst.md +14 -0
- package/.claude/agents/sinapse-ga-cro-specialist.md +14 -0
- package/.claude/agents/sinapse-ga-data-analyst.md +14 -0
- package/.claude/agents/sinapse-ga-growth-hacker.md +14 -0
- package/.claude/agents/sinapse-ga-seo-strategist.md +14 -0
- package/.claude/agents/sinapse-generative-particle-engineer.md +14 -0
- package/.claude/agents/sinapse-google-ads-specialist.md +14 -0
- package/.claude/agents/sinapse-growth-orqx.md +14 -0
- package/.claude/agents/sinapse-headline-specialist.md +14 -0
- package/.claude/agents/sinapse-hooks-architect.md +14 -0
- package/.claude/agents/sinapse-incident-responder.md +14 -0
- package/.claude/agents/sinapse-joseph-campbell.md +14 -0
- package/.claude/agents/sinapse-kb-architect.md +14 -0
- package/.claude/agents/sinapse-keith-johnstone.md +14 -0
- package/.claude/agents/sinapse-kindra-hall.md +14 -0
- package/.claude/agents/sinapse-launch-strategist.md +14 -0
- package/.claude/agents/sinapse-lesson-architect.md +14 -0
- package/.claude/agents/sinapse-long-form-writer.md +14 -0
- package/.claude/agents/sinapse-market-analyst.md +14 -0
- package/.claude/agents/sinapse-marshall-ganz.md +14 -0
- package/.claude/agents/sinapse-mcp-integrator.md +14 -0
- package/.claude/agents/sinapse-meta-ads-specialist.md +14 -0
- package/.claude/agents/sinapse-mind-synthesizer.md +14 -0
- package/.claude/agents/sinapse-motion-choreographer.md +14 -0
- package/.claude/agents/sinapse-nancy-duarte.md +14 -0
- package/.claude/agents/sinapse-naval-ravikant.md +14 -0
- package/.claude/agents/sinapse-network-security-engineer.md +14 -0
- package/.claude/agents/sinapse-oren-klaff.md +14 -0
- package/.claude/agents/sinapse-paidmedia-orqx.md +14 -0
- package/.claude/agents/sinapse-park-howell.md +14 -0
- package/.claude/agents/sinapse-patrick-lencioni.md +14 -0
- package/.claude/agents/sinapse-penetration-tester.md +14 -0
- package/.claude/agents/sinapse-performance-engineer.md +14 -0
- package/.claude/agents/sinapse-persuasion-psychologist.md +14 -0
- package/.claude/agents/sinapse-peter-thiel.md +14 -0
- package/.claude/agents/sinapse-platform-aesthetic-director.md +14 -0
- package/.claude/agents/sinapse-platform-specialist.md +14 -0
- package/.claude/agents/sinapse-pm-creative-performance-analyst.md +14 -0
- package/.claude/agents/sinapse-pm-youtube-ads-specialist.md +14 -0
- package/.claude/agents/sinapse-premium-packaging-strategist.md +14 -0
- package/.claude/agents/sinapse-pricing-strategist.md +14 -0
- package/.claude/agents/sinapse-product-lead.md +14 -0
- package/.claude/agents/sinapse-product-orqx.md +14 -0
- package/.claude/agents/sinapse-product-surface-director.md +14 -0
- package/.claude/agents/sinapse-production-director.md +14 -0
- package/.claude/agents/sinapse-profitability-analyst.md +14 -0
- package/.claude/agents/sinapse-project-integrator.md +14 -0
- package/.claude/agents/sinapse-project-lead.md +14 -0
- package/.claude/agents/sinapse-proof-architect.md +14 -0
- package/.claude/agents/sinapse-ps-client-product-manager.md +14 -0
- package/.claude/agents/sinapse-ps-delivery-manager.md +14 -0
- package/.claude/agents/sinapse-ps-discovery-lead.md +14 -0
- package/.claude/agents/sinapse-ps-product-analyst.md +14 -0
- package/.claude/agents/sinapse-ps-product-ops-specialist.md +14 -0
- package/.claude/agents/sinapse-ps-product-strategist.md +14 -0
- package/.claude/agents/sinapse-quality-gate.md +14 -0
- package/.claude/agents/sinapse-ray-dalio.md +14 -0
- package/.claude/agents/sinapse-reid-hoffman.md +14 -0
- package/.claude/agents/sinapse-research-orqx.md +14 -0
- package/.claude/agents/sinapse-revenue-analyst.md +14 -0
- package/.claude/agents/sinapse-roadmap-sentinel.md +14 -0
- package/.claude/agents/sinapse-scroll-narrative-engineer.md +14 -0
- package/.claude/agents/sinapse-shader-artist.md +14 -0
- package/.claude/agents/sinapse-signal-intelligence.md +14 -0
- package/.claude/agents/sinapse-simon-sinek.md +14 -0
- package/.claude/agents/sinapse-skill-craftsman.md +14 -0
- package/.claude/agents/sinapse-slide-designer.md +14 -0
- package/.claude/agents/sinapse-snps-orqx.md +14 -0
- package/.claude/agents/sinapse-soc-analyst.md +14 -0
- package/.claude/agents/sinapse-sop-extractor.md +14 -0
- package/.claude/agents/sinapse-source-hunter.md +14 -0
- package/.claude/agents/sinapse-sprint-lead.md +14 -0
- package/.claude/agents/sinapse-squad-assembler.md +14 -0
- package/.claude/agents/sinapse-squad-creator.md +14 -0
- package/.claude/agents/sinapse-storytelling-orqx.md +14 -0
- package/.claude/agents/sinapse-swarm-orqx.md +14 -0
- package/.claude/agents/sinapse-threat-analyst.md +14 -0
- package/.claude/agents/sinapse-threejs-architect.md +14 -0
- package/.claude/agents/sinapse-trend-forecaster.md +14 -0
- package/.claude/agents/sinapse-ux-design-expert.md +14 -0
- package/.claude/agents/sinapse-ux-designer.md +14 -0
- package/.claude/agents/sinapse-yvon-chouinard.md +14 -0
- package/.claude/rules/mandatory-delegation-reference.md +1 -1
- package/.claude/rules/mandatory-delegation.md +1 -1
- package/.claude/rules/software-engineering-applicability.md +13 -0
- package/.claude/rules/squad-awareness.md +1 -1
- package/.claude/rules/token-economy.md +1 -1
- package/.claude/skill-manifest.json +41 -0
- package/.claude/skills/api-review.md +50 -0
- package/.claude/skills/component-check.md +47 -0
- package/.claude/skills/db-review.md +41 -0
- package/.claude/skills/sinapse/SKILL.md +11 -0
- package/.claude/skills/sinapse-agent/SKILL.md +11 -0
- package/.claude/skills/sinapse-analyst/SKILL.md +11 -0
- package/.claude/skills/sinapse-animations/SKILL.md +11 -0
- package/.claude/skills/sinapse-architect/SKILL.md +11 -0
- package/.claude/skills/sinapse-brand/SKILL.md +11 -0
- package/.claude/skills/sinapse-claude/SKILL.md +11 -0
- package/.claude/skills/sinapse-cloning/SKILL.md +11 -0
- package/.claude/skills/sinapse-commercial/SKILL.md +11 -0
- package/.claude/skills/sinapse-content/SKILL.md +11 -0
- package/.claude/skills/sinapse-copy/SKILL.md +11 -0
- package/.claude/skills/sinapse-council/SKILL.md +11 -0
- package/.claude/skills/sinapse-courses/SKILL.md +11 -0
- package/.claude/skills/sinapse-cyber/SKILL.md +11 -0
- package/.claude/skills/sinapse-data-engineer/SKILL.md +11 -0
- package/.claude/skills/sinapse-design/SKILL.md +11 -0
- package/.claude/skills/sinapse-dev/SKILL.md +11 -0
- package/.claude/skills/sinapse-devops/SKILL.md +11 -0
- package/.claude/skills/sinapse-finance/SKILL.md +11 -0
- package/.claude/skills/sinapse-growth/SKILL.md +11 -0
- package/.claude/skills/sinapse-loop/SKILL.md +11 -0
- package/.claude/skills/sinapse-orqx/SKILL.md +11 -0
- package/.claude/skills/sinapse-paidmedia/SKILL.md +11 -0
- package/.claude/skills/sinapse-pm/SKILL.md +11 -0
- package/.claude/skills/sinapse-po/SKILL.md +11 -0
- package/.claude/skills/sinapse-product/SKILL.md +11 -0
- package/.claude/skills/sinapse-qa/SKILL.md +11 -0
- package/.claude/skills/sinapse-research/SKILL.md +11 -0
- package/.claude/skills/sinapse-sm/SKILL.md +11 -0
- package/.claude/skills/sinapse-spec-driven/SKILL.md +11 -0
- package/.claude/skills/sinapse-squad-creator/SKILL.md +11 -0
- package/.claude/skills/sinapse-storytelling/SKILL.md +11 -0
- package/.claude/skills/sinapse-swarm/SKILL.md +11 -0
- package/.claude/skills/sinapse-ux-design-expert/SKILL.md +11 -0
- package/.claude/skills/snps/SKILL.md +11 -0
- package/.claude/skills/snps-orqx/SKILL.md +11 -0
- package/.claude/skills/story-update.md +52 -0
- package/.claude/skills/test-guard.md +41 -0
- package/.codex/agents/ad-copywriter.toml +3 -0
- package/.codex/agents/agent-forger.toml +3 -0
- package/.codex/agents/analyst.toml +3 -0
- package/.codex/agents/animation-interpreter.toml +3 -0
- package/.codex/agents/animation-performance-engineer.toml +3 -0
- package/.codex/agents/animations-orqx.toml +3 -0
- package/.codex/agents/architect.toml +3 -0
- package/.codex/agents/assessment-creator.toml +3 -0
- package/.codex/agents/audience-intelligence.toml +3 -0
- package/.codex/agents/blake-snyder.toml +3 -0
- package/.codex/agents/brand-archetype-strategist.toml +3 -0
- package/.codex/agents/brand-auditor.toml +3 -0
- package/.codex/agents/brand-collateral-designer.toml +3 -0
- package/.codex/agents/brand-compiler.toml +3 -0
- package/.codex/agents/brand-creative-engineer.toml +3 -0
- package/.codex/agents/brand-culture-architect.toml +3 -0
- package/.codex/agents/brand-growth-strategist.toml +3 -0
- package/.codex/agents/brand-identity-designer.toml +3 -0
- package/.codex/agents/brand-motion-vfx.toml +3 -0
- package/.codex/agents/brand-naming-specialist.toml +3 -0
- package/.codex/agents/brand-orqx.toml +3 -0
- package/.codex/agents/brand-positioning-strategist.toml +3 -0
- package/.codex/agents/brand-sonic-designer.toml +3 -0
- package/.codex/agents/brand-strategist.toml +3 -0
- package/.codex/agents/brand-system-architect.toml +3 -0
- package/.codex/agents/brand-voice-writer.toml +3 -0
- package/.codex/agents/brene-brown.toml +3 -0
- package/.codex/agents/budget-controller.toml +3 -0
- package/.codex/agents/campaign-analyst.toml +3 -0
- package/.codex/agents/charlie-munger.toml +3 -0
- package/.codex/agents/claude-mastery-chief.toml +3 -0
- package/.codex/agents/cloning-orqx.toml +3 -0
- package/.codex/agents/cloud-security-engineer.toml +3 -0
- package/.codex/agents/cognitive-extractor.toml +3 -0
- package/.codex/agents/commercial-orqx.toml +3 -0
- package/.codex/agents/competitive-intelligence.toml +3 -0
- package/.codex/agents/compliance-officer.toml +3 -0
- package/.codex/agents/config-engineer.toml +3 -0
- package/.codex/agents/content-analyst.toml +3 -0
- package/.codex/agents/content-capturer.toml +3 -0
- package/.codex/agents/content-engineer.toml +3 -0
- package/.codex/agents/content-governor.toml +3 -0
- package/.codex/agents/content-orqx.toml +3 -0
- package/.codex/agents/content-writer.toml +3 -0
- package/.codex/agents/conversion-writer.toml +3 -0
- package/.codex/agents/copy-editor.toml +3 -0
- package/.codex/agents/copy-orqx.toml +3 -0
- package/.codex/agents/copy-strategist.toml +3 -0
- package/.codex/agents/cost-optimizer.toml +3 -0
- package/.codex/agents/council-orqx.toml +3 -0
- package/.codex/agents/courses-orqx.toml +3 -0
- package/.codex/agents/creative-strategist.toml +3 -0
- package/.codex/agents/cro-persuasion.toml +3 -0
- package/.codex/agents/cro-specialist.toml +3 -0
- package/.codex/agents/cs-business-auditor.toml +3 -0
- package/.codex/agents/cs-client-success.toml +3 -0
- package/.codex/agents/cs-crm-specialist.toml +3 -0
- package/.codex/agents/cs-funnel-architect.toml +3 -0
- package/.codex/agents/cs-lead-generation-strategist.toml +3 -0
- package/.codex/agents/cs-offer-designer.toml +3 -0
- package/.codex/agents/cs-revops-analyst.toml +3 -0
- package/.codex/agents/cs-sales-closer.toml +3 -0
- package/.codex/agents/cs-sales-enablement.toml +3 -0
- package/.codex/agents/css-motion-artist.toml +3 -0
- package/.codex/agents/curriculum-designer.toml +3 -0
- package/.codex/agents/cyber-orqx.toml +3 -0
- package/.codex/agents/dan-harmon.toml +3 -0
- package/.codex/agents/data-engineer.toml +3 -0
- package/.codex/agents/data-synthesizer.toml +3 -0
- package/.codex/agents/deep-researcher.toml +3 -0
- package/.codex/agents/derek-sivers.toml +3 -0
- package/.codex/agents/design-orqx.toml +3 -0
- package/.codex/agents/design-system.toml +3 -0
- package/.codex/agents/developer.toml +3 -0
- package/.codex/agents/devops.toml +3 -0
- package/.codex/agents/direct-response-writer.toml +3 -0
- package/.codex/agents/dx-accessibility-specialist.toml +3 -0
- package/.codex/agents/dx-design-system-architect.toml +3 -0
- package/.codex/agents/dx-frontend-engineer.toml +3 -0
- package/.codex/agents/dx-interaction-designer.toml +3 -0
- package/.codex/agents/dx-performance-engineer.toml +3 -0
- package/.codex/agents/dx-ui-designer.toml +3 -0
- package/.codex/agents/dx-ux-strategist.toml +3 -0
- package/.codex/agents/editorial-strategist.toml +3 -0
- package/.codex/agents/email-sequence-strategist.toml +3 -0
- package/.codex/agents/finance-orqx.toml +3 -0
- package/.codex/agents/fiscal-compliance-br.toml +3 -0
- package/.codex/agents/forecast-strategist.toml +3 -0
- package/.codex/agents/funnel-copywriter.toml +3 -0
- package/.codex/agents/ga-analytics-engineer.toml +3 -0
- package/.codex/agents/ga-campaign-analyst.toml +3 -0
- package/.codex/agents/ga-cro-specialist.toml +3 -0
- package/.codex/agents/ga-data-analyst.toml +3 -0
- package/.codex/agents/ga-growth-hacker.toml +3 -0
- package/.codex/agents/ga-seo-strategist.toml +3 -0
- package/.codex/agents/generative-particle-engineer.toml +3 -0
- package/.codex/agents/google-ads-specialist.toml +3 -0
- package/.codex/agents/growth-orqx.toml +3 -0
- package/.codex/agents/headline-specialist.toml +3 -0
- package/.codex/agents/hooks-architect.toml +3 -0
- package/.codex/agents/incident-responder.toml +3 -0
- package/.codex/agents/joseph-campbell.toml +3 -0
- package/.codex/agents/kb-architect.toml +3 -0
- package/.codex/agents/keith-johnstone.toml +3 -0
- package/.codex/agents/kindra-hall.toml +3 -0
- package/.codex/agents/launch-strategist.toml +3 -0
- package/.codex/agents/lesson-architect.toml +3 -0
- package/.codex/agents/long-form-writer.toml +3 -0
- package/.codex/agents/market-analyst.toml +3 -0
- package/.codex/agents/marshall-ganz.toml +3 -0
- package/.codex/agents/mcp-integrator.toml +3 -0
- package/.codex/agents/meta-ads-specialist.toml +3 -0
- package/.codex/agents/mind-synthesizer.toml +3 -0
- package/.codex/agents/motion-choreographer.toml +3 -0
- package/.codex/agents/nancy-duarte.toml +3 -0
- package/.codex/agents/naval-ravikant.toml +3 -0
- package/.codex/agents/network-security-engineer.toml +3 -0
- package/.codex/agents/oren-klaff.toml +3 -0
- package/.codex/agents/paidmedia-orqx.toml +3 -0
- package/.codex/agents/park-howell.toml +3 -0
- package/.codex/agents/patrick-lencioni.toml +3 -0
- package/.codex/agents/penetration-tester.toml +3 -0
- package/.codex/agents/performance-engineer.toml +3 -0
- package/.codex/agents/persuasion-psychologist.toml +3 -0
- package/.codex/agents/peter-thiel.toml +3 -0
- package/.codex/agents/platform-aesthetic-director.toml +3 -0
- package/.codex/agents/platform-specialist.toml +3 -0
- package/.codex/agents/pm-creative-performance-analyst.toml +3 -0
- package/.codex/agents/pm-youtube-ads-specialist.toml +3 -0
- package/.codex/agents/premium-packaging-strategist.toml +3 -0
- package/.codex/agents/pricing-strategist.toml +3 -0
- package/.codex/agents/product-lead.toml +3 -0
- package/.codex/agents/product-orqx.toml +3 -0
- package/.codex/agents/product-surface-director.toml +3 -0
- package/.codex/agents/production-director.toml +3 -0
- package/.codex/agents/profitability-analyst.toml +3 -0
- package/.codex/agents/project-integrator.toml +3 -0
- package/.codex/agents/project-lead.toml +3 -0
- package/.codex/agents/proof-architect.toml +3 -0
- package/.codex/agents/ps-client-product-manager.toml +3 -0
- package/.codex/agents/ps-delivery-manager.toml +3 -0
- package/.codex/agents/ps-discovery-lead.toml +3 -0
- package/.codex/agents/ps-product-analyst.toml +3 -0
- package/.codex/agents/ps-product-ops-specialist.toml +3 -0
- package/.codex/agents/ps-product-strategist.toml +3 -0
- package/.codex/agents/quality-gate.toml +3 -0
- package/.codex/agents/ray-dalio.toml +3 -0
- package/.codex/agents/reid-hoffman.toml +3 -0
- package/.codex/agents/research-orqx.toml +3 -0
- package/.codex/agents/revenue-analyst.toml +3 -0
- package/.codex/agents/roadmap-sentinel.toml +3 -0
- package/.codex/agents/scroll-narrative-engineer.toml +3 -0
- package/.codex/agents/shader-artist.toml +3 -0
- package/.codex/agents/signal-intelligence.toml +3 -0
- package/.codex/agents/simon-sinek.toml +3 -0
- package/.codex/agents/skill-craftsman.toml +3 -0
- package/.codex/agents/slide-designer.toml +3 -0
- package/.codex/agents/snps-orqx.toml +3 -0
- package/.codex/agents/soc-analyst.toml +3 -0
- package/.codex/agents/sop-extractor.toml +3 -0
- package/.codex/agents/source-hunter.toml +3 -0
- package/.codex/agents/sprint-lead.toml +3 -0
- package/.codex/agents/squad-assembler.toml +3 -0
- package/.codex/agents/squad-creator.toml +3 -0
- package/.codex/agents/storytelling-orqx.toml +3 -0
- package/.codex/agents/swarm-orqx.toml +3 -0
- package/.codex/agents/threat-analyst.toml +3 -0
- package/.codex/agents/threejs-architect.toml +3 -0
- package/.codex/agents/trend-forecaster.toml +3 -0
- package/.codex/agents/ux-design-expert.toml +3 -0
- package/.codex/agents/ux-designer.toml +3 -0
- package/.codex/agents/yvon-chouinard.toml +3 -0
- package/.codex/catalog.json +19 -4
- package/.codex/command-registry.json +94 -0
- package/.codex/config.toml +8 -0
- package/.codex/delegation-matrix.json +39 -25
- package/.codex/delegation-parity.json +46 -41
- package/.codex/hooks/claude-compat.cjs +547 -0
- package/.codex/hooks.json +123 -0
- package/.codex/scripts/resolve-codex-agent.js +30 -1
- package/.codex/scripts/resolve-codex-workflow.js +283 -0
- package/.codex/scripts/sinapse-codex.js +309 -0
- package/.codex/scripts/sync-codex-native.js +614 -0
- package/.codex/scripts/validate-codex-native.js +287 -0
- package/.codex/skills/react-bits-frontend/SKILL.md +66 -0
- package/.codex/skills/react-bits-frontend/agents/openai.yaml +4 -0
- package/.codex/skills/react-bits-frontend/references/corpus-map.md +29 -0
- package/.codex/skills/sinapse/SKILL.md +10 -0
- package/.codex/skills/sinapse-agent/SKILL.md +22 -0
- package/.codex/skills/sinapse-claude/SKILL.md +1 -1
- package/.codex/skills/sinapse-loop/SKILL.md +35 -0
- package/.codex/skills/sinapse-orqx/SKILL.md +33 -14
- package/.codex/skills/sinapse-spec-driven/SKILL.md +35 -0
- package/.codex/skills/snps/SKILL.md +10 -0
- package/.codex/skills/snps-orqx/SKILL.md +10 -0
- package/.sinapse-ai/data/entity-registry.yaml +57 -31
- package/.sinapse-ai/development/agents/snps-orqx.md +14 -1
- package/.sinapse-ai/install-manifest.yaml +16 -12
- package/.sinapse-ai/product/templates/statusline/agent-badges.json +37 -37
- package/.sinapse-ai/product/templates/statusline/track-agent-clear.cjs +22 -3
- package/.sinapse-ai/product/templates/statusline/track-agent.cjs +94 -7
- package/.sinapse-ai/product/templates/statusline/track-delegation.cjs +162 -0
- package/AGENTS.md +5 -4
- package/CHANGELOG.md +38 -2
- package/README.en.md +1 -1
- package/README.md +25 -10
- package/bin/commands/install.js +56 -41
- package/bin/commands/uninstall.js +57 -4
- package/bin/commands/update.js +32 -21
- package/bin/lib/command-generator.js +25 -3
- package/bin/lib/global-provider-adapters.js +136 -0
- package/bin/lib/setup-statusline.js +43 -12
- package/bin/utils/validate-publish.js +43 -10
- package/docs/framework/codex-parity/codex-native-runtime-v2.md +230 -0
- package/docs/framework/codex-parity/codex-workflow-task-parity.md +21 -7
- package/docs/framework/react-bits/animations.md +49 -0
- package/docs/framework/react-bits/audit-findings.md +103 -0
- package/docs/framework/react-bits/backgrounds.md +63 -0
- package/docs/framework/react-bits/catalog-summary.json +61 -0
- package/docs/framework/react-bits/components.md +58 -0
- package/docs/framework/react-bits/implementation-playbook.md +161 -0
- package/docs/framework/react-bits/index.md +130 -0
- package/docs/framework/react-bits/inventory.json +9333 -0
- package/docs/framework/react-bits/text-animations.md +41 -0
- package/docs/framework/software-engineering-applicability.md +31 -0
- package/docs/getting-started.md +6 -2
- package/docs/installation/README.md +2 -2
- package/package.json +18 -5
- package/packages/engineering-applicability/fixtures.json +52 -0
- package/packages/engineering-applicability/index.js +150 -0
- package/packages/installer/src/installer/sinapse-ai-installer.js +87 -2
- package/packages/installer/src/updater/index.js +34 -13
- package/packages/installer/src/wizard/feedback.js +1 -1
- package/packages/installer/src/wizard/ide-config-generator.js +26 -0
- package/packages/installer/src/wizard/index.js +101 -74
- package/scripts/gen-agent-badges.js +17 -1
- package/scripts/release-readiness.js +9 -3
- package/scripts/research/generate-react-bits-catalog.mjs +206 -0
- package/scripts/sync-provider-adapters.js +203 -0
- package/scripts/validate-provider-adapters.js +127 -0
- package/squads/squad-animations/knowledge-base/react-bits-operational-guide.md +43 -0
- package/squads/squad-animations/squad.yaml +10 -5
- package/squads/squad-animations/tasks/orchestrate-react-bits-frontend.md +60 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync, statSync } from 'node:fs';
|
|
5
|
+
import { basename, join, resolve } from 'node:path';
|
|
6
|
+
import { pathToFileURL } from 'node:url';
|
|
7
|
+
|
|
8
|
+
const args = process.argv.slice(2);
|
|
9
|
+
const valueOf = flag => {
|
|
10
|
+
const index = args.indexOf(flag);
|
|
11
|
+
return index === -1 ? undefined : args[index + 1];
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const repo = resolve(valueOf('--repo') || '../.tmp-react-bits-research');
|
|
15
|
+
const output = resolve(valueOf('--output') || 'docs/framework/react-bits');
|
|
16
|
+
const infoPath = join(repo, 'src', 'constants', 'Information.js');
|
|
17
|
+
|
|
18
|
+
if (!existsSync(join(repo, '.git')) || !existsSync(infoPath)) {
|
|
19
|
+
throw new Error(`React Bits checkout not found or incomplete: ${repo}`);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const sha = execFileSync('git', ['-C', repo, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim();
|
|
23
|
+
const commitDate = execFileSync('git', ['-C', repo, 'show', '-s', '--format=%cI', 'HEAD'], {
|
|
24
|
+
encoding: 'utf8'
|
|
25
|
+
}).trim();
|
|
26
|
+
const { componentMetadata, VARIANTS } = await import(`${pathToFileURL(infoPath).href}?sha=${sha}`);
|
|
27
|
+
|
|
28
|
+
if (!componentMetadata || !Array.isArray(VARIANTS) || VARIANTS.length !== 4) {
|
|
29
|
+
throw new Error('Required React Bits metadata exports are missing or changed');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const categories = ['Animations', 'TextAnimations', 'Components', 'Backgrounds'];
|
|
33
|
+
const categorySlugs = {
|
|
34
|
+
Animations: 'animations',
|
|
35
|
+
TextAnimations: 'text-animations',
|
|
36
|
+
Components: 'components',
|
|
37
|
+
Backgrounds: 'backgrounds'
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const walk = directory =>
|
|
41
|
+
readdirSync(directory, { withFileTypes: true }).flatMap(entry => {
|
|
42
|
+
const path = join(directory, entry.name);
|
|
43
|
+
return entry.isDirectory() ? walk(path) : [path];
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const codeMetadataFiles = walk(join(repo, 'src', 'constants', 'code')).filter(path => path.endsWith('.js'));
|
|
47
|
+
const codeMetadata = new Map();
|
|
48
|
+
|
|
49
|
+
for (const path of codeMetadataFiles) {
|
|
50
|
+
const source = readFileSync(path, 'utf8');
|
|
51
|
+
const sourceMatch = source.match(/@(?:content|ts-default)\/([^/]+)\/([^/]+)\//);
|
|
52
|
+
if (!sourceMatch) continue;
|
|
53
|
+
const dependencyMatch = source.match(/dependencies\s*:\s*([`'"])([\s\S]*?)\1/);
|
|
54
|
+
const dependencies = dependencyMatch
|
|
55
|
+
? dependencyMatch[2].replace(/^\s*(?:npm|pnpm|yarn|bun)\s+(?:i|install|add)\s+/, '').trim()
|
|
56
|
+
: '';
|
|
57
|
+
codeMetadata.set(`${sourceMatch[1]}/${sourceMatch[2]}`.toLowerCase(), { dependencies, path });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const findComponentDirectory = (category, name) => {
|
|
61
|
+
const root = join(repo, 'src', 'ts-default', category);
|
|
62
|
+
const match = readdirSync(root, { withFileTypes: true }).find(
|
|
63
|
+
entry => entry.isDirectory() && entry.name.toLowerCase() === name.toLowerCase()
|
|
64
|
+
);
|
|
65
|
+
if (!match) throw new Error(`Missing TS source directory for ${category}/${name}`);
|
|
66
|
+
return join(root, match.name);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const extractProps = source => {
|
|
70
|
+
const blocks = [];
|
|
71
|
+
const declarations = /(?:type|interface)\s+\w*Props\w*(?:\s+extends[^\{]+)?\s*(?:=\s*)?\{/g;
|
|
72
|
+
for (const match of source.matchAll(declarations)) {
|
|
73
|
+
let depth = 1;
|
|
74
|
+
let cursor = match.index + match[0].length;
|
|
75
|
+
const start = cursor;
|
|
76
|
+
while (cursor < source.length && depth > 0) {
|
|
77
|
+
if (source[cursor] === '{') depth += 1;
|
|
78
|
+
if (source[cursor] === '}') depth -= 1;
|
|
79
|
+
cursor += 1;
|
|
80
|
+
}
|
|
81
|
+
blocks.push(source.slice(start, cursor - 1));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const props = new Set();
|
|
85
|
+
for (const block of blocks) {
|
|
86
|
+
for (const line of block.split('\n')) {
|
|
87
|
+
const match = line.match(/^\s*(?:readonly\s+)?([A-Za-z_$][\w$]*)\??\s*:/);
|
|
88
|
+
if (match) props.add(match[1]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return [...props];
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const escapeCell = value => String(value || '').replaceAll('|', '\\|').replaceAll('\n', ' ');
|
|
95
|
+
const entries = Object.entries(componentMetadata).map(([key, metadata]) => {
|
|
96
|
+
const directory = findComponentDirectory(metadata.category, metadata.name);
|
|
97
|
+
const sourceFile = readdirSync(directory).find(file => file.endsWith('.tsx'));
|
|
98
|
+
if (!sourceFile) throw new Error(`Missing TSX source for ${key}`);
|
|
99
|
+
const source = readFileSync(join(directory, sourceFile), 'utf8');
|
|
100
|
+
const demoPath = join(repo, 'src', 'demo', metadata.category, `${metadata.name}Demo.jsx`);
|
|
101
|
+
const demo = existsSync(demoPath) ? readFileSync(demoPath, 'utf8') : '';
|
|
102
|
+
const demoProps = [...demo.matchAll(/\bname\s*:\s*['"]([^'"]+)['"]/g)].map(match => match[1]);
|
|
103
|
+
const props = [...new Set(demoProps.length ? demoProps : extractProps(source))];
|
|
104
|
+
const code = codeMetadata.get(key.toLowerCase()) || codeMetadata.get(
|
|
105
|
+
`${metadata.category}/${basename(directory)}`.toLowerCase()
|
|
106
|
+
);
|
|
107
|
+
if (!code) throw new Error(`Missing code metadata for ${key}`);
|
|
108
|
+
|
|
109
|
+
const variantConfig = {
|
|
110
|
+
'JS-CSS': { root: 'content', extension: 'jsx' },
|
|
111
|
+
'JS-TW': { root: 'tailwind', extension: 'jsx' },
|
|
112
|
+
'TS-CSS': { root: 'ts-default', extension: 'tsx' },
|
|
113
|
+
'TS-TW': { root: 'ts-tailwind', extension: 'tsx' }
|
|
114
|
+
};
|
|
115
|
+
const declaredVariants = metadata.variants || VARIANTS;
|
|
116
|
+
const variants = Object.fromEntries(declaredVariants.map(variant => {
|
|
117
|
+
const config = variantConfig[variant];
|
|
118
|
+
const sourcePath = join(repo, 'src', config.root, metadata.category, basename(directory), `${basename(directory)}.${config.extension}`);
|
|
119
|
+
const registryPath = join(repo, 'public', 'r', `${metadata.name}-${variant}.json`);
|
|
120
|
+
if (!existsSync(sourcePath) || !existsSync(registryPath)) throw new Error(`Missing published variant ${key}/${variant}`);
|
|
121
|
+
const registry = JSON.parse(readFileSync(registryPath, 'utf8'));
|
|
122
|
+
const sourceBytes = statSync(sourcePath).size;
|
|
123
|
+
return [variant, {
|
|
124
|
+
source: sourcePath.slice(repo.length + 1).replaceAll('\\', '/'),
|
|
125
|
+
sourceBytes,
|
|
126
|
+
functional: sourceBytes > 0,
|
|
127
|
+
dependencies: registry.dependencies || [],
|
|
128
|
+
registryDependencies: registry.registryDependencies || []
|
|
129
|
+
}];
|
|
130
|
+
}));
|
|
131
|
+
|
|
132
|
+
return {
|
|
133
|
+
key,
|
|
134
|
+
...metadata,
|
|
135
|
+
documentedDependencies: code.dependencies ? code.dependencies.split(/\s+/).filter(Boolean) : [],
|
|
136
|
+
dependencies: [...new Set(Object.values(variants).flatMap(variant => variant.dependencies))],
|
|
137
|
+
props,
|
|
138
|
+
variants,
|
|
139
|
+
sourceDirectory: basename(directory),
|
|
140
|
+
sourceFile
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
mkdirSync(output, { recursive: true });
|
|
145
|
+
for (const category of categories) {
|
|
146
|
+
const list = entries.filter(entry => entry.category === category).sort((a, b) => a.name.localeCompare(b.name));
|
|
147
|
+
const lines = [
|
|
148
|
+
`# React Bits - ${category}`,
|
|
149
|
+
'',
|
|
150
|
+
`> Snapshot oficial: \`${sha}\` (${commitDate}). Total nesta categoria: **${list.length}**.`,
|
|
151
|
+
'',
|
|
152
|
+
'Cada item abaixo aponta para a documentacao e para o codigo TypeScript/CSS oficial fixado no commit pesquisado.',
|
|
153
|
+
'',
|
|
154
|
+
'| Componente | O que faz | Dependencias | Props publicas | Variantes |',
|
|
155
|
+
'|---|---|---|---|---|'
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
for (const entry of list) {
|
|
159
|
+
const sourceUrl = `https://github.com/DavidHDev/react-bits/tree/${sha}/src/ts-default/${entry.category}/${entry.sourceDirectory}`;
|
|
160
|
+
const label = `[${entry.name}](${entry.docsUrl}) ([fonte](${sourceUrl}))`;
|
|
161
|
+
const props = entry.props.length ? entry.props.map(prop => `\`${prop}\``).join(', ') : 'children / DOM props';
|
|
162
|
+
const variantStatus = Object.entries(entry.variants)
|
|
163
|
+
.map(([variant, details]) => details.functional ? variant : `${variant} (VAZIA no upstream)`)
|
|
164
|
+
.join(', ');
|
|
165
|
+
const dependencies = entry.dependencies.length ? entry.dependencies.join(' ') : 'none';
|
|
166
|
+
lines.push(
|
|
167
|
+
`| ${label} | ${escapeCell(entry.description)} | \`${escapeCell(dependencies)}\` | ${escapeCell(props)} | ${variantStatus} |`
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
lines.push('', '## Comandos por componente', '');
|
|
172
|
+
lines.push('Substituir `<Component>` pelo nome exato da primeira coluna:');
|
|
173
|
+
lines.push('', '```bash');
|
|
174
|
+
lines.push('npx shadcn@latest add @react-bits/<Component>-TS-TW');
|
|
175
|
+
lines.push('npx shadcn@latest add https://reactbits.dev/r/<Component>-TS-TW');
|
|
176
|
+
lines.push('npx jsrepo@latest add https://reactbits.dev/r/<Component>-TS-TW');
|
|
177
|
+
lines.push('```', '');
|
|
178
|
+
writeFileSync(join(output, `${categorySlugs[category]}.md`), `${lines.join('\n')}\n`);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const dependencyCounts = new Map();
|
|
182
|
+
for (const entry of entries) {
|
|
183
|
+
const packages = entry.dependencies;
|
|
184
|
+
for (const packageName of packages) dependencyCounts.set(packageName, (dependencyCounts.get(packageName) || 0) + 1);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const incompleteVariants = entries.flatMap(entry => Object.entries(entry.variants)
|
|
188
|
+
.filter(([, details]) => !details.functional)
|
|
189
|
+
.map(([variant, details]) => ({ component: entry.name, category: entry.category, variant, source: details.source })));
|
|
190
|
+
|
|
191
|
+
const summary = {
|
|
192
|
+
source: 'https://github.com/DavidHDev/react-bits',
|
|
193
|
+
sha,
|
|
194
|
+
commitDate,
|
|
195
|
+
total: entries.length,
|
|
196
|
+
categories: Object.fromEntries(categories.map(category => [category, entries.filter(item => item.category === category).length])),
|
|
197
|
+
variants: VARIANTS,
|
|
198
|
+
registryItems: entries.reduce((total, entry) => total + Object.keys(entry.variants).length, 0),
|
|
199
|
+
documentedProps: entries.reduce((total, entry) => total + entry.props.length, 0),
|
|
200
|
+
incompleteVariants,
|
|
201
|
+
dependencies: Object.fromEntries([...dependencyCounts.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])))
|
|
202
|
+
};
|
|
203
|
+
writeFileSync(join(output, 'catalog-summary.json'), `${JSON.stringify(summary, null, 2)}\n`);
|
|
204
|
+
writeFileSync(join(output, 'inventory.json'), `${JSON.stringify({ ...summary, components: entries }, null, 2)}\n`);
|
|
205
|
+
|
|
206
|
+
process.stdout.write(`${JSON.stringify(summary, null, 2)}\n`);
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const yaml = require('js-yaml');
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
collectNativeAgentDefinitions,
|
|
10
|
+
readCodexCatalog,
|
|
11
|
+
syncCodexNativeAgents,
|
|
12
|
+
} = require('../.codex/scripts/sync-codex-native');
|
|
13
|
+
const { resolveCodexAgent } = require('../.codex/scripts/resolve-codex-agent');
|
|
14
|
+
|
|
15
|
+
const PROJECT_ROOT = path.resolve(__dirname, '..');
|
|
16
|
+
const CLAUDE_AGENTS_DIR = '.claude/agents';
|
|
17
|
+
const CLAUDE_SKILLS_DIR = '.claude/skills';
|
|
18
|
+
|
|
19
|
+
function writeFileAtomically(filePath, content) {
|
|
20
|
+
const temporaryPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
|
|
21
|
+
let handle;
|
|
22
|
+
try {
|
|
23
|
+
handle = fs.openSync(temporaryPath, 'wx', 0o600);
|
|
24
|
+
fs.writeFileSync(handle, content, 'utf8');
|
|
25
|
+
fs.fsyncSync(handle);
|
|
26
|
+
fs.closeSync(handle);
|
|
27
|
+
handle = undefined;
|
|
28
|
+
fs.renameSync(temporaryPath, filePath);
|
|
29
|
+
} finally {
|
|
30
|
+
if (handle !== undefined) fs.closeSync(handle);
|
|
31
|
+
try { fs.unlinkSync(temporaryPath); } catch { /* already published or cleanup is best-effort */ }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function writeFileIfChanged(filePath, content) {
|
|
36
|
+
let existing = null;
|
|
37
|
+
try {
|
|
38
|
+
existing = fs.readFileSync(filePath, 'utf8');
|
|
39
|
+
} catch (error) {
|
|
40
|
+
if (error.code !== 'ENOENT') throw error;
|
|
41
|
+
}
|
|
42
|
+
if (existing !== null && existing.replace(/\r\n/g, '\n') === content.replace(/\r\n/g, '\n')) {
|
|
43
|
+
return 'unchanged';
|
|
44
|
+
}
|
|
45
|
+
const status = existing === null ? 'created' : 'updated';
|
|
46
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
47
|
+
writeFileAtomically(filePath, content);
|
|
48
|
+
return status;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function claudeAgentFileName(definition) {
|
|
52
|
+
return `sinapse-${definition.id}.md`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function renderClaudeAgent(definition) {
|
|
56
|
+
const orchestratorRule = /-orqx$/.test(definition.id) || definition.id === 'snps-orqx'
|
|
57
|
+
? 'You coordinate and delegate domain execution; do not perform specialist work directly.'
|
|
58
|
+
: 'Work only within the authority declared by the canonical agent.';
|
|
59
|
+
return [
|
|
60
|
+
'---',
|
|
61
|
+
`name: ${definition.name}`,
|
|
62
|
+
`description: ${JSON.stringify(definition.description)}`,
|
|
63
|
+
'---',
|
|
64
|
+
'',
|
|
65
|
+
`# SINAPSE Claude Adapter: ${definition.name}`,
|
|
66
|
+
'',
|
|
67
|
+
`Read and follow \`${definition.sourcePath}\` as the canonical source of truth.`,
|
|
68
|
+
'Adopt its persona, authority boundaries, activation protocol, declared dependencies,',
|
|
69
|
+
'task inputs, outputs, gates and verification requirements.',
|
|
70
|
+
orchestratorRule,
|
|
71
|
+
'Resolve requested commands only from dependencies declared by the canonical source.',
|
|
72
|
+
'Use Claude Code native subagents or teams for delegation; never start a nested CLI.',
|
|
73
|
+
'Follow project CLAUDE.md and the SINAPSE Constitution before acting.',
|
|
74
|
+
'',
|
|
75
|
+
].join('\n');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function parseSkillMetadata(content) {
|
|
79
|
+
const match = String(content).match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
80
|
+
if (!match) throw new Error('Skill is missing YAML frontmatter');
|
|
81
|
+
const metadata = yaml.load(match[1]);
|
|
82
|
+
if (!metadata?.name || !metadata?.description) throw new Error('Skill frontmatter is incomplete');
|
|
83
|
+
return metadata;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function renderClaudeWorkflowSkill(skillId, description) {
|
|
87
|
+
if (skillId === 'sinapse-loop') {
|
|
88
|
+
return [
|
|
89
|
+
'---', `name: ${skillId}`, `description: ${description}`, '---', '',
|
|
90
|
+
'# SINAPSE Bounded Loop for Claude Code', '',
|
|
91
|
+
'Activate only when the user explicitly requests this loop. Obtain a verifiable',
|
|
92
|
+
'completion criterion, then repeat inspect -> delegate correction -> verify for at',
|
|
93
|
+
'most three iterations. Stop on completion, block, user stop, or iteration three.',
|
|
94
|
+
'Use Claude Code native subagents; never launch a nested Claude or Codex process.', '',
|
|
95
|
+
].join('\n');
|
|
96
|
+
}
|
|
97
|
+
return [
|
|
98
|
+
'---', `name: ${skillId}`, `description: ${description}`, '---', '',
|
|
99
|
+
'# SINAPSE Spec-Driven Workflow for Claude Code', '',
|
|
100
|
+
'Read `.sinapse-ai/development/workflows/spec-pipeline.yaml` and its referenced task',
|
|
101
|
+
'contracts. Follow PRD -> Epic -> Story -> Validation -> Implementation, delegating',
|
|
102
|
+
'each phase through Claude Code native subagents. A task contract controls inputs,',
|
|
103
|
+
'outputs, gates and verification. Never implement before a validated Ready story.', '',
|
|
104
|
+
].join('\n');
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function renderClaudeGenericSkill(skillId, description) {
|
|
108
|
+
return [
|
|
109
|
+
'---', `name: ${skillId}`, `description: ${description.replace(/Codex/g, 'Claude Code')}`, '---', '',
|
|
110
|
+
'# SINAPSE Parametric Agent Activator for Claude Code', '',
|
|
111
|
+
'Use the agent ID supplied with this skill. Find the matching project subagent by its',
|
|
112
|
+
'`name` frontmatter under `.claude/agents/sinapse-*.md`. Reject unknown IDs instead',
|
|
113
|
+
'of guessing. Invoke that native subagent with `@<name>` when delegation is',
|
|
114
|
+
'appropriate, and preserve its canonical authority and task contracts.', '',
|
|
115
|
+
].join('\n');
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function renderClaudeAgentSkill(skillId, description, projectRoot) {
|
|
119
|
+
const resolved = resolveCodexAgent(skillId, projectRoot);
|
|
120
|
+
const publicName = resolved.agentId === 'snps-orqx' ? 'sinapse-orqx' : resolved.agentId;
|
|
121
|
+
return [
|
|
122
|
+
'---', `name: ${skillId}`, `description: ${description.replace(/Codex/g, 'Claude Code')}`, '---', '',
|
|
123
|
+
`# SINAPSE Claude Activation: ${publicName}`, '',
|
|
124
|
+
`Read \`${resolved.sourceOfTruth}\` as the canonical source of truth.`,
|
|
125
|
+
`Use the native Claude subagent \`@agent-${publicName}\` for isolated delegation,`,
|
|
126
|
+
'or adopt the same persona in the current context when the workflow must remain here.',
|
|
127
|
+
'Follow declared dependencies and authority boundaries. Never invoke a nested CLI.', '',
|
|
128
|
+
].join('\n');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function collectClaudeSkills(projectRoot = PROJECT_ROOT) {
|
|
132
|
+
const catalog = readCodexCatalog(projectRoot);
|
|
133
|
+
const skillIds = [...new Set([
|
|
134
|
+
...catalog.expectedSkillIds,
|
|
135
|
+
...catalog.publicAliasSkillIds,
|
|
136
|
+
catalog.genericAgentSkillId,
|
|
137
|
+
])].sort();
|
|
138
|
+
|
|
139
|
+
return skillIds.map((skillId) => {
|
|
140
|
+
const nativePath = path.join(projectRoot, '.agents', 'skills', skillId, 'SKILL.md');
|
|
141
|
+
const metadata = parseSkillMetadata(fs.readFileSync(nativePath, 'utf8'));
|
|
142
|
+
let content;
|
|
143
|
+
if (skillId === catalog.genericAgentSkillId) {
|
|
144
|
+
content = renderClaudeGenericSkill(skillId, metadata.description);
|
|
145
|
+
} else if (skillId === 'sinapse-loop' || skillId === 'sinapse-spec-driven') {
|
|
146
|
+
content = renderClaudeWorkflowSkill(skillId, metadata.description);
|
|
147
|
+
} else {
|
|
148
|
+
content = renderClaudeAgentSkill(skillId, metadata.description, projectRoot);
|
|
149
|
+
}
|
|
150
|
+
return { skillId, content };
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function syncClaudeNative(projectRoot = PROJECT_ROOT) {
|
|
155
|
+
const definitions = collectNativeAgentDefinitions(projectRoot);
|
|
156
|
+
const skills = collectClaudeSkills(projectRoot);
|
|
157
|
+
const summary = {
|
|
158
|
+
agents: { total: definitions.length, created: 0, updated: 0, unchanged: 0 },
|
|
159
|
+
skills: { total: skills.length, created: 0, updated: 0, unchanged: 0 },
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
for (const definition of definitions) {
|
|
163
|
+
const target = path.join(projectRoot, CLAUDE_AGENTS_DIR, claudeAgentFileName(definition));
|
|
164
|
+
summary.agents[writeFileIfChanged(target, renderClaudeAgent(definition))] += 1;
|
|
165
|
+
}
|
|
166
|
+
for (const skill of skills) {
|
|
167
|
+
const target = path.join(projectRoot, CLAUDE_SKILLS_DIR, skill.skillId, 'SKILL.md');
|
|
168
|
+
summary.skills[writeFileIfChanged(target, skill.content)] += 1;
|
|
169
|
+
}
|
|
170
|
+
writeFileIfChanged(
|
|
171
|
+
path.join(projectRoot, '.claude', 'skill-manifest.json'),
|
|
172
|
+
`${JSON.stringify({ version: 1, skillIds: skills.map((skill) => skill.skillId).sort() }, null, 2)}\n`,
|
|
173
|
+
);
|
|
174
|
+
return summary;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function syncProviderAdapters(projectRoot = PROJECT_ROOT, options = {}) {
|
|
178
|
+
const codex = syncCodexNativeAgents(projectRoot, options);
|
|
179
|
+
const claude = syncClaudeNative(projectRoot);
|
|
180
|
+
return { codex, claude };
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function main() {
|
|
184
|
+
try {
|
|
185
|
+
const expandedSkills = process.argv.slice(2).includes('--expanded-skills');
|
|
186
|
+
console.log(JSON.stringify(syncProviderAdapters(PROJECT_ROOT, { expandedSkills }), null, 2));
|
|
187
|
+
} catch (error) {
|
|
188
|
+
console.error(`[sync-provider-adapters] ${error.message}`);
|
|
189
|
+
process.exitCode = 1;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (require.main === module) main();
|
|
194
|
+
|
|
195
|
+
module.exports = {
|
|
196
|
+
CLAUDE_AGENTS_DIR,
|
|
197
|
+
CLAUDE_SKILLS_DIR,
|
|
198
|
+
claudeAgentFileName,
|
|
199
|
+
renderClaudeAgent,
|
|
200
|
+
collectClaudeSkills,
|
|
201
|
+
syncClaudeNative,
|
|
202
|
+
syncProviderAdapters,
|
|
203
|
+
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const yaml = require('js-yaml');
|
|
7
|
+
|
|
8
|
+
const { validateNativeCodex } = require('../.codex/scripts/validate-codex-native');
|
|
9
|
+
|
|
10
|
+
const PROJECT_ROOT = path.resolve(__dirname, '..');
|
|
11
|
+
|
|
12
|
+
function parseFrontmatter(content) {
|
|
13
|
+
const match = String(content).match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
14
|
+
if (!match) throw new Error('missing YAML frontmatter');
|
|
15
|
+
const metadata = yaml.load(match[1]);
|
|
16
|
+
if (!metadata || typeof metadata !== 'object') throw new Error('invalid YAML frontmatter');
|
|
17
|
+
return metadata;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function validateClaudeNative(projectRoot = PROJECT_ROOT) {
|
|
21
|
+
const errors = [];
|
|
22
|
+
const agentsDir = path.join(projectRoot, '.claude', 'agents');
|
|
23
|
+
const agentFiles = fs.existsSync(agentsDir)
|
|
24
|
+
? fs.readdirSync(agentsDir).filter((file) => /^sinapse-.+\.md$/.test(file)).sort()
|
|
25
|
+
: [];
|
|
26
|
+
const manifestPath = path.join(projectRoot, '.claude', 'skill-manifest.json');
|
|
27
|
+
let expectedSkills = [];
|
|
28
|
+
try {
|
|
29
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
|
|
30
|
+
expectedSkills = (manifest.skillIds || []).map((skillId) => ({ skillId }));
|
|
31
|
+
if (expectedSkills.length !== 36) errors.push(`Claude skill manifest must contain 36 IDs, found ${expectedSkills.length}`);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
errors.push(`Claude skill manifest: ${error.message}`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (agentFiles.length !== 172) errors.push(`Claude native inventory must contain 172 agents, found ${agentFiles.length}`);
|
|
37
|
+
const claudeNames = new Set();
|
|
38
|
+
let claudeAgents = 0;
|
|
39
|
+
for (const file of agentFiles) {
|
|
40
|
+
const relativePath = path.join('.claude', 'agents', file);
|
|
41
|
+
const filePath = path.join(projectRoot, relativePath);
|
|
42
|
+
claudeAgents += 1;
|
|
43
|
+
try {
|
|
44
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
45
|
+
const metadata = parseFrontmatter(content);
|
|
46
|
+
if (!String(metadata.name || '').trim()) errors.push(`${relativePath} has no name`);
|
|
47
|
+
if (!String(metadata.description || '').trim()) errors.push(`${relativePath} has no description`);
|
|
48
|
+
if (claudeNames.has(metadata.name)) errors.push(`Duplicate Claude native agent name: ${metadata.name}`);
|
|
49
|
+
claudeNames.add(metadata.name);
|
|
50
|
+
const sourceMatch = content.match(/`((?:\.sinapse-ai\/development\/agents|squads\/[^/]+\/agents)\/[^`]+\.md)`/);
|
|
51
|
+
if (!sourceMatch) errors.push(`${relativePath} does not declare a canonical source`);
|
|
52
|
+
else if (!fs.existsSync(path.join(projectRoot, sourceMatch[1]))) errors.push(`${relativePath} points to missing ${sourceMatch[1]}`);
|
|
53
|
+
if (/[A-Za-z]:[\\/]/.test(content)) errors.push(`${relativePath} contains a personal absolute path`);
|
|
54
|
+
} catch (error) {
|
|
55
|
+
errors.push(`${relativePath}: ${error.message}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
let claudeSkills = 0;
|
|
60
|
+
for (const expected of expectedSkills) {
|
|
61
|
+
const relativePath = path.join('.claude', 'skills', expected.skillId, 'SKILL.md');
|
|
62
|
+
const filePath = path.join(projectRoot, relativePath);
|
|
63
|
+
if (!fs.existsSync(filePath)) {
|
|
64
|
+
errors.push(`Missing Claude native skill: ${relativePath}`);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
claudeSkills += 1;
|
|
68
|
+
try {
|
|
69
|
+
const metadata = parseFrontmatter(fs.readFileSync(filePath, 'utf8'));
|
|
70
|
+
if (metadata.name !== expected.skillId) errors.push(`${relativePath} has incorrect name ${metadata.name}`);
|
|
71
|
+
} catch (error) {
|
|
72
|
+
errors.push(`${relativePath}: ${error.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
for (const name of ['claude-mastery-chief', 'swarm-orqx', 'sinapse-orqx', 'meta-ads-specialist']) {
|
|
77
|
+
if (!claudeNames.has(name)) errors.push(`Claude native inventory is missing ${name}`);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
ok: errors.length === 0,
|
|
82
|
+
errors,
|
|
83
|
+
metrics: {
|
|
84
|
+
canonicalAgents: agentFiles.length,
|
|
85
|
+
claudeAgents,
|
|
86
|
+
claudeSkills,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function validateProviderAdapters(projectRoot = PROJECT_ROOT) {
|
|
92
|
+
const claude = validateClaudeNative(projectRoot);
|
|
93
|
+
const codex = validateNativeCodex(projectRoot);
|
|
94
|
+
const errors = [
|
|
95
|
+
...claude.errors.map((error) => `Claude: ${error}`),
|
|
96
|
+
...codex.errors.map((error) => `Codex: ${error}`),
|
|
97
|
+
];
|
|
98
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(projectRoot, 'package.json'), 'utf8'));
|
|
99
|
+
for (const entry of ['.claude/agents/', '.claude/skills/', '.agents/skills/', '.codex/agents/']) {
|
|
100
|
+
if (!pkg.files.includes(entry)) errors.push(`package.json files[] is missing ${entry}`);
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
ok: errors.length === 0,
|
|
104
|
+
errors,
|
|
105
|
+
metrics: {
|
|
106
|
+
...claude.metrics,
|
|
107
|
+
codexAgents: codex.metrics.nativeAgents,
|
|
108
|
+
codexSkills: codex.metrics.nativeSkills,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function main() {
|
|
114
|
+
const json = process.argv.slice(2).includes('--json');
|
|
115
|
+
const result = validateProviderAdapters();
|
|
116
|
+
if (json) console.log(JSON.stringify(result, null, 2));
|
|
117
|
+
else if (result.ok) {
|
|
118
|
+
console.log(`OK provider adapters (${result.metrics.canonicalAgents} agents; Claude ${result.metrics.claudeSkills} skills; Codex ${result.metrics.codexSkills} skills)`);
|
|
119
|
+
} else {
|
|
120
|
+
console.error(['Provider adapter validation failed', ...result.errors.map((error) => `- ${error}`)].join('\n'));
|
|
121
|
+
}
|
|
122
|
+
if (!result.ok) process.exitCode = 1;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (require.main === module) main();
|
|
126
|
+
|
|
127
|
+
module.exports = { parseFrontmatter, validateClaudeNative, validateProviderAdapters };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# React Bits - operational guide
|
|
2
|
+
|
|
3
|
+
> Fonte canônica: `docs/framework/react-bits/index.md`.
|
|
4
|
+
> Snapshot: `DavidHDev/react-bits@3acbd54115330a42e39f63dda2d4859e998b6684`.
|
|
5
|
+
|
|
6
|
+
## Contrato de uso
|
|
7
|
+
|
|
8
|
+
React Bits é um catálogo de código copiável, não um pacote monolítico. Usar a base
|
|
9
|
+
para descobrir o componente, confirmar API e dependências, escolher uma das quatro
|
|
10
|
+
variantes, instalar/copiar a fonte oficial e adaptar o código ao projeto.
|
|
11
|
+
|
|
12
|
+
Carregar sob demanda os quatro catálogos e o playbook em
|
|
13
|
+
`docs/framework/react-bits/`.
|
|
14
|
+
|
|
15
|
+
## Roteamento interno
|
|
16
|
+
|
|
17
|
+
| Necessidade | Delegar para |
|
|
18
|
+
| ----------------------------------- | -------------------------------- |
|
|
19
|
+
| intenção, shortlist e especificação | `animation-interpreter` |
|
|
20
|
+
| CSS, SVG e microinteração | `css-motion-artist` |
|
|
21
|
+
| timing, easing e composição | `motion-choreographer` |
|
|
22
|
+
| scroll e narrativa | `scroll-narrative-engineer` |
|
|
23
|
+
| Three/R3F/WebGL | `threejs-architect` |
|
|
24
|
+
| OGL/GLSL/shaders | `shader-artist` |
|
|
25
|
+
| partículas e física | `generative-particle-engineer` |
|
|
26
|
+
| performance, mobile e a11y | `animation-performance-engineer` |
|
|
27
|
+
|
|
28
|
+
## Regras invioláveis
|
|
29
|
+
|
|
30
|
+
1. Selecionar pela função na experiência, não por novidade.
|
|
31
|
+
2. Consultar fonte oficial e catálogo antes de afirmar props ou dependências.
|
|
32
|
+
3. Rodar `npm view <pacote>` para cada dependência antes de instalar.
|
|
33
|
+
4. Preferir `TS-TW` ou `TS-CSS` em projetos TypeScript.
|
|
34
|
+
5. Criar wrapper local e adaptar design tokens, conteúdo e breakpoints.
|
|
35
|
+
6. Implementar cleanup, reduced motion, fallback estático e semântica/foco.
|
|
36
|
+
7. Medir no mobile e impedir múltiplos owners de scroll, cursor ou render loop.
|
|
37
|
+
8. Não redistribuir componentes como biblioteca, bundle ou port; respeitar a licença.
|
|
38
|
+
|
|
39
|
+
## Atualização
|
|
40
|
+
|
|
41
|
+
Atualizar o checkout oficial por fast-forward e executar
|
|
42
|
+
`scripts/research/generate-react-bits-catalog.mjs`. A nova base só é válida quando o
|
|
43
|
+
gerador confirma paridade com `componentMetadata` e registra o novo SHA.
|
|
@@ -15,16 +15,16 @@ metadata:
|
|
|
15
15
|
updated_at: "2026-03-15"
|
|
16
16
|
created_by: "squad-creator (Craft)"
|
|
17
17
|
agents_count: 9
|
|
18
|
-
tasks_count:
|
|
19
|
-
knowledge_bases_count:
|
|
18
|
+
tasks_count: 76
|
|
19
|
+
knowledge_bases_count: 16
|
|
20
20
|
workflows_count: 5
|
|
21
21
|
checklists_count: 3
|
|
22
22
|
templates_count: 5
|
|
23
|
-
total_files:
|
|
23
|
+
total_files: 116
|
|
24
24
|
agents: 9
|
|
25
|
-
tasks:
|
|
25
|
+
tasks: 76
|
|
26
26
|
workflows: 0
|
|
27
|
-
knowledge_bases:
|
|
27
|
+
knowledge_bases: 16
|
|
28
28
|
checklists: 3
|
|
29
29
|
templates: 5
|
|
30
30
|
preferences: 0
|
|
@@ -40,6 +40,7 @@ agents:
|
|
|
40
40
|
- review-animation-quality
|
|
41
41
|
- manage-animation-pipeline
|
|
42
42
|
- generate-animation-report
|
|
43
|
+
- orchestrate-react-bits-frontend
|
|
43
44
|
|
|
44
45
|
- id: animation-interpreter
|
|
45
46
|
name: Decoder
|
|
@@ -206,6 +207,10 @@ knowledge_bases:
|
|
|
206
207
|
file: knowledge-base/unicorn-studio-pipeline.md
|
|
207
208
|
description: "Pipeline programatico Unicorn Studio — JSON templates, endpoints publicos, image swap, brand-aware parameters, SDK integration"
|
|
208
209
|
|
|
210
|
+
- name: react-bits-operational-guide
|
|
211
|
+
file: knowledge-base/react-bits-operational-guide.md
|
|
212
|
+
description: "Roteamento e guardrails para selecionar, instalar, adaptar, combinar e auditar componentes React Bits"
|
|
213
|
+
|
|
209
214
|
workflows:
|
|
210
215
|
- name: prompt-to-animation-cycle
|
|
211
216
|
file: workflows/prompt-to-animation-cycle.yaml
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
task: orchestrate-react-bits-frontend
|
|
3
|
+
responsavel: '@animations-orqx'
|
|
4
|
+
responsavel_type: Agent
|
|
5
|
+
atomic_layer: Task
|
|
6
|
+
elicit: false
|
|
7
|
+
|
|
8
|
+
Entrada:
|
|
9
|
+
- campo: frontend_objective
|
|
10
|
+
tipo: object
|
|
11
|
+
origem: 'user_request_or_design_spec'
|
|
12
|
+
obrigatorio: true
|
|
13
|
+
|
|
14
|
+
Saida:
|
|
15
|
+
- campo: react_bits_delivery
|
|
16
|
+
tipo: code_and_report
|
|
17
|
+
destino: 'review-animation-quality'
|
|
18
|
+
|
|
19
|
+
Checklist:
|
|
20
|
+
- '[ ] Traduzir objetivo visual em funcao de experiencia'
|
|
21
|
+
- '[ ] Consultar catalogo React Bits e formar shortlist'
|
|
22
|
+
- '[ ] Delegar implementacao ao especialista correto'
|
|
23
|
+
- '[ ] Verificar dependencias antes da instalacao'
|
|
24
|
+
- '[ ] Adaptar tokens, conteudo, responsividade e lifecycle'
|
|
25
|
+
- '[ ] Validar reduced motion, acessibilidade e performance mobile'
|
|
26
|
+
- '[ ] Registrar componente, variante, origem e customizacoes'
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Task: Orchestrate React Bits Frontend
|
|
30
|
+
|
|
31
|
+
## Objetivo
|
|
32
|
+
|
|
33
|
+
Selecionar, instalar, adaptar, combinar e auditar componentes oficiais do React Bits
|
|
34
|
+
para entregar uma experiência de frontend intencional, acessível e performática.
|
|
35
|
+
|
|
36
|
+
## Conhecimento obrigatório
|
|
37
|
+
|
|
38
|
+
Ler `../knowledge-base/react-bits-operational-guide.md` e carregar apenas os catálogos
|
|
39
|
+
de `docs/framework/react-bits/` relevantes ao pedido.
|
|
40
|
+
|
|
41
|
+
## Execução
|
|
42
|
+
|
|
43
|
+
1. Classificar a função do efeito: hierarquia, orientação, feedback, continuidade,
|
|
44
|
+
atmosfera ou delight.
|
|
45
|
+
2. Formar shortlist de até três itens usando descrição, props, motor e custo técnico.
|
|
46
|
+
3. Explicar a escolha e o orçamento de atenção/performance.
|
|
47
|
+
4. Delegar implementação conforme o roteamento da KB; o orquestrador não implementa.
|
|
48
|
+
5. Antes de instalar, verificar cada dependência oficial com `npm view`.
|
|
49
|
+
6. Escolher a variante que preserva o stack do projeto e integrar em wrapper local.
|
|
50
|
+
7. Adaptar tokens, copy, semântica, breakpoints, qualidade e fallbacks.
|
|
51
|
+
8. Delegar auditoria a `animation-performance-engineer` e revisão final ao pipeline.
|
|
52
|
+
|
|
53
|
+
## Critérios de qualidade
|
|
54
|
+
|
|
55
|
+
- Fonte, componente e variante rastreáveis.
|
|
56
|
+
- Nenhuma dependência desnecessária ou não verificada.
|
|
57
|
+
- Conteúdo acessível sem animação e estado final imediato em reduced motion.
|
|
58
|
+
- Cleanup completo de RAF, timers, observers, listeners e recursos GPU.
|
|
59
|
+
- Mobile funcional com fallback quando o efeito exceder o orçamento.
|
|
60
|
+
- Licença respeitada; componentes não são redistribuídos como produto isolado.
|