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,614 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Generate native Codex custom-agent adapters from the existing Markdown
|
|
6
|
+
* pointers and restore authoritative native workflow skills after the legacy
|
|
7
|
+
* Codex sync. Canonical agent definitions remain in `.sinapse-ai/` and
|
|
8
|
+
* `squads/`; generated files only teach Codex how to activate them.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
|
|
14
|
+
const { PROJECT_ROOT, loadCodexAgentIndex } = require('./resolve-codex-agent');
|
|
15
|
+
|
|
16
|
+
const CODEX_AGENTS_DIR = '.codex/agents';
|
|
17
|
+
const NATIVE_SKILLS_DIR = '.agents/skills';
|
|
18
|
+
const COMPATIBILITY_SKILLS_DIR = '.codex/skills';
|
|
19
|
+
const NATIVE_WORKFLOW_SKILLS = Object.freeze([
|
|
20
|
+
'sinapse-orqx',
|
|
21
|
+
'sinapse-spec-driven',
|
|
22
|
+
'sinapse-loop',
|
|
23
|
+
]);
|
|
24
|
+
const CODEX_CATALOG_PATH = '.codex/catalog.json';
|
|
25
|
+
const SUPREME_ORCHESTRATOR_ID = 'snps-orqx';
|
|
26
|
+
const SUPREME_ORCHESTRATOR_NAME = 'sinapse-orqx';
|
|
27
|
+
const MAX_DESCRIPTION_LENGTH = 240;
|
|
28
|
+
|
|
29
|
+
function normalizePath(filePath) {
|
|
30
|
+
return filePath.replace(/\\/g, '/');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isPathInside(parentPath, candidatePath) {
|
|
34
|
+
const relative = path.relative(parentPath, candidatePath);
|
|
35
|
+
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function readCanonicalSource(projectRoot, sourcePath) {
|
|
39
|
+
if (!sourcePath) {
|
|
40
|
+
throw new Error('Codex agent pointer does not declare a canonical source');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const root = path.resolve(projectRoot);
|
|
44
|
+
const absoluteSource = path.resolve(root, sourcePath);
|
|
45
|
+
if (!isPathInside(root, absoluteSource)) {
|
|
46
|
+
throw new Error(`Codex agent source escapes the project root: ${sourcePath}`);
|
|
47
|
+
}
|
|
48
|
+
if (!fs.existsSync(absoluteSource) || !fs.statSync(absoluteSource).isFile()) {
|
|
49
|
+
throw new Error(`Canonical agent source does not exist: ${sourcePath}`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return fs.readFileSync(absoluteSource, 'utf8');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function humanizeAgentId(agentId) {
|
|
56
|
+
return agentId
|
|
57
|
+
.split('-')
|
|
58
|
+
.filter(Boolean)
|
|
59
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
60
|
+
.join(' ');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function unwrapSingleLineYamlScalar(value) {
|
|
64
|
+
const trimmed = value.trim();
|
|
65
|
+
if (!trimmed || trimmed === '|' || trimmed === '>' || /^(?:\{|\[)/.test(trimmed)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
|
|
70
|
+
try {
|
|
71
|
+
return JSON.parse(trimmed);
|
|
72
|
+
} catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
|
|
78
|
+
return trimmed.slice(1, -1).replace(/''/g, "'");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return trimmed;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function sanitizeDescription(value) {
|
|
85
|
+
if (typeof value !== 'string') return null;
|
|
86
|
+
|
|
87
|
+
let description = value.replace(/\s+/g, ' ').trim();
|
|
88
|
+
const hasControlCharacter = [...description].some((character) => {
|
|
89
|
+
const codePoint = character.codePointAt(0);
|
|
90
|
+
return codePoint <= 31 || codePoint === 127;
|
|
91
|
+
});
|
|
92
|
+
if (description.length < 12 || hasControlCharacter) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (description.length > MAX_DESCRIPTION_LENGTH) {
|
|
97
|
+
const maximumPrefixLength = MAX_DESCRIPTION_LENGTH - 3;
|
|
98
|
+
const prefix = description.slice(0, maximumPrefixLength);
|
|
99
|
+
const wordBoundary = prefix.lastIndexOf(' ');
|
|
100
|
+
const safeBoundary = wordBoundary >= Math.floor(MAX_DESCRIPTION_LENGTH * 0.6)
|
|
101
|
+
? wordBoundary
|
|
102
|
+
: maximumPrefixLength;
|
|
103
|
+
description = `${prefix.slice(0, safeBoundary).trimEnd()}...`;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return description;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getTopLevelYamlBlock(sourceText, blockName) {
|
|
110
|
+
const lines = sourceText.split(/\r?\n/);
|
|
111
|
+
const startIndex = lines.findIndex((line) => line === `${blockName}:`);
|
|
112
|
+
if (startIndex === -1) return null;
|
|
113
|
+
|
|
114
|
+
let endIndex = lines.length;
|
|
115
|
+
for (let index = startIndex + 1; index < lines.length; index += 1) {
|
|
116
|
+
const line = lines[index];
|
|
117
|
+
if (line.trim() && !/^\s/.test(line)) {
|
|
118
|
+
endIndex = index;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return lines.slice(startIndex + 1, endIndex);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function getDirectFieldIndent(blockLines) {
|
|
127
|
+
const indents = blockLines
|
|
128
|
+
.filter((line) => line.trim() && !line.trimStart().startsWith('#'))
|
|
129
|
+
.map((line) => line.match(/^\s*/)[0].length)
|
|
130
|
+
.filter((indent) => indent > 0);
|
|
131
|
+
return indents.length > 0 ? Math.min(...indents) : null;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function extractYamlFieldFromLines(blockLines, directIndent, fieldName) {
|
|
135
|
+
const fieldPattern = new RegExp(`^\\s{${directIndent}}${fieldName}:\\s*(.*?)\\s*$`, 'i');
|
|
136
|
+
for (let index = 0; index < blockLines.length; index += 1) {
|
|
137
|
+
const match = blockLines[index].match(fieldPattern);
|
|
138
|
+
if (!match) continue;
|
|
139
|
+
|
|
140
|
+
const scalar = match[1].trim();
|
|
141
|
+
if (scalar === '|' || scalar === '>') {
|
|
142
|
+
const blockValue = [];
|
|
143
|
+
for (let valueIndex = index + 1; valueIndex < blockLines.length; valueIndex += 1) {
|
|
144
|
+
const line = blockLines[valueIndex];
|
|
145
|
+
const indent = line.match(/^\s*/)[0].length;
|
|
146
|
+
if (line.trim() && indent <= directIndent) break;
|
|
147
|
+
if (line.trim()) blockValue.push(line.trim());
|
|
148
|
+
}
|
|
149
|
+
return blockValue.join(' ');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return unwrapSingleLineYamlScalar(scalar);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function extractDirectYamlField(sourceText, blockName, fieldName) {
|
|
159
|
+
const blockLines = getTopLevelYamlBlock(sourceText, blockName);
|
|
160
|
+
if (!blockLines) return null;
|
|
161
|
+
|
|
162
|
+
const directIndent = getDirectFieldIndent(blockLines);
|
|
163
|
+
if (directIndent === null) return null;
|
|
164
|
+
|
|
165
|
+
return extractYamlFieldFromLines(blockLines, directIndent, fieldName);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function extractFrontmatterField(sourceText, fieldName) {
|
|
169
|
+
const lines = sourceText.split(/\r?\n/);
|
|
170
|
+
if (lines[0] !== '---') return null;
|
|
171
|
+
|
|
172
|
+
const endIndex = lines.findIndex((line, index) => index > 0 && line === '---');
|
|
173
|
+
if (endIndex === -1) return null;
|
|
174
|
+
|
|
175
|
+
return extractYamlFieldFromLines(lines.slice(1, endIndex), 0, fieldName);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function extractMarkdownRole(sourceText) {
|
|
179
|
+
const lines = sourceText.split(/\r?\n/);
|
|
180
|
+
const startIndex = lines.findIndex((line) =>
|
|
181
|
+
/^##\s+(?:Role|Papel|Purpose|Propósito)\s*$/i.test(line),
|
|
182
|
+
);
|
|
183
|
+
if (startIndex === -1) return null;
|
|
184
|
+
|
|
185
|
+
let endIndex = lines.length;
|
|
186
|
+
for (let index = startIndex + 1; index < lines.length; index += 1) {
|
|
187
|
+
if (/^##\s+/.test(lines[index])) {
|
|
188
|
+
endIndex = index;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return (
|
|
194
|
+
lines
|
|
195
|
+
.slice(startIndex + 1, endIndex)
|
|
196
|
+
.join('\n')
|
|
197
|
+
.split(/\r?\n\r?\n/)
|
|
198
|
+
.map((paragraph) => paragraph.replace(/\s+/g, ' ').trim())
|
|
199
|
+
.find(Boolean) || null
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function extractInlineMarkdownRole(sourceText) {
|
|
204
|
+
const bulletMatch = sourceText.match(
|
|
205
|
+
/^\s*-\s+\*\*(?:Role|Papel):\*\*\s*(.+?)\s*$/im,
|
|
206
|
+
);
|
|
207
|
+
if (bulletMatch) return bulletMatch[1];
|
|
208
|
+
|
|
209
|
+
const tableMatch = sourceText.match(
|
|
210
|
+
/^\|\s*\*\*(?:Role|Papel)\*\*\s*\|\s*(.+?)\s*\|\s*$/im,
|
|
211
|
+
);
|
|
212
|
+
return tableMatch ? tableMatch[1] : null;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function extractSourceDescription(sourceText) {
|
|
216
|
+
const candidates = [
|
|
217
|
+
extractDirectYamlField(sourceText, 'agent', 'whenToUse'),
|
|
218
|
+
extractDirectYamlField(sourceText, 'agent', 'description'),
|
|
219
|
+
extractFrontmatterField(sourceText, 'description'),
|
|
220
|
+
extractDirectYamlField(sourceText, 'persona', 'role'),
|
|
221
|
+
extractMarkdownRole(sourceText),
|
|
222
|
+
extractInlineMarkdownRole(sourceText),
|
|
223
|
+
extractDirectYamlField(sourceText, 'agent', 'title'),
|
|
224
|
+
];
|
|
225
|
+
|
|
226
|
+
for (const candidate of candidates) {
|
|
227
|
+
const description = sanitizeDescription(candidate);
|
|
228
|
+
if (description) return description;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function nativeAgentName(agentId) {
|
|
235
|
+
return agentId === SUPREME_ORCHESTRATOR_ID ? SUPREME_ORCHESTRATOR_NAME : agentId;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function fallbackDescription(agentId, sourcePath) {
|
|
239
|
+
return `${humanizeAgentId(nativeAgentName(agentId))} SINAPSE agent backed by ${sourcePath}.`;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function buildDeveloperInstructions(entry) {
|
|
243
|
+
const publicName = nativeAgentName(entry.id);
|
|
244
|
+
const aliasInstruction =
|
|
245
|
+
entry.id === SUPREME_ORCHESTRATOR_ID
|
|
246
|
+
? ' Treat @sinapse-orqx, @snps-orqx, @sinapse, @snps, and @imperator as aliases for this same agent.'
|
|
247
|
+
: '';
|
|
248
|
+
const delegationInstruction = /-orqx$/.test(entry.id)
|
|
249
|
+
? ' As an orchestrator, coordinate domain work through native Codex subagents and do not perform specialist work directly.'
|
|
250
|
+
: '';
|
|
251
|
+
|
|
252
|
+
return [
|
|
253
|
+
`You are the native Codex adapter for @${publicName}.${aliasInstruction}`,
|
|
254
|
+
'Read the repository AGENTS.md instructions before acting.',
|
|
255
|
+
`Read and follow the complete canonical agent definition at ${entry.sourcePath}.`,
|
|
256
|
+
`Adopt its persona, authority boundaries, activation protocol, and task dependencies.${delegationInstruction}`,
|
|
257
|
+
`Resolve requested task commands with node .codex/scripts/resolve-codex-command.js ${publicName} <command> --json, then execute only the returned canonical task target.`,
|
|
258
|
+
'Use native Codex collaboration for delegation; never start a nested codex or claude process.',
|
|
259
|
+
'Do not modify Claude Code configuration as part of Codex activation.',
|
|
260
|
+
].join('\n');
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
function serializeTomlString(value) {
|
|
264
|
+
return JSON.stringify(value);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function renderNativeAgentToml(definition) {
|
|
268
|
+
return [
|
|
269
|
+
`name = ${serializeTomlString(definition.name)}`,
|
|
270
|
+
`description = ${serializeTomlString(definition.description)}`,
|
|
271
|
+
`developer_instructions = ${serializeTomlString(definition.developerInstructions)}`,
|
|
272
|
+
'',
|
|
273
|
+
].join('\n');
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function buildNativeAgentDefinition(entry, projectRoot = PROJECT_ROOT) {
|
|
277
|
+
const sourceText = readCanonicalSource(projectRoot, entry.sourcePath);
|
|
278
|
+
const description =
|
|
279
|
+
extractSourceDescription(sourceText) || fallbackDescription(entry.id, entry.sourcePath);
|
|
280
|
+
|
|
281
|
+
return {
|
|
282
|
+
id: entry.id,
|
|
283
|
+
fileName: `${entry.id}.toml`,
|
|
284
|
+
name: nativeAgentName(entry.id),
|
|
285
|
+
description,
|
|
286
|
+
developerInstructions: buildDeveloperInstructions(entry),
|
|
287
|
+
sourcePath: entry.sourcePath,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function collectNativeAgentDefinitions(projectRoot = PROJECT_ROOT) {
|
|
292
|
+
const index = loadCodexAgentIndex(projectRoot);
|
|
293
|
+
return Object.keys(index)
|
|
294
|
+
.sort()
|
|
295
|
+
.map((agentId) => buildNativeAgentDefinition(index[agentId], projectRoot));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function writeFileIfChanged(filePath, content) {
|
|
299
|
+
let existing = null;
|
|
300
|
+
try {
|
|
301
|
+
existing = fs.readFileSync(filePath, 'utf8');
|
|
302
|
+
} catch (error) {
|
|
303
|
+
if (error.code !== 'ENOENT') throw error;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Git may check text files out as CRLF on Windows while generators emit LF.
|
|
307
|
+
// Treat newline-only differences as identical so repeated syncs are stable.
|
|
308
|
+
if (existing !== null && existing.replace(/\r\n/g, '\n') === content.replace(/\r\n/g, '\n')) {
|
|
309
|
+
return 'unchanged';
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
const status = existing === null ? 'created' : 'updated';
|
|
313
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
314
|
+
return status;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
function readCodexCatalog(projectRoot = PROJECT_ROOT) {
|
|
318
|
+
const catalogPath = path.resolve(projectRoot, CODEX_CATALOG_PATH);
|
|
319
|
+
if (!isPathInside(path.resolve(projectRoot), catalogPath)) {
|
|
320
|
+
throw new Error(`Codex catalog escapes the project root: ${CODEX_CATALOG_PATH}`);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
const catalog = JSON.parse(fs.readFileSync(catalogPath, 'utf8'));
|
|
324
|
+
if (!Array.isArray(catalog.expectedSkillIds) || catalog.expectedSkillIds.length === 0) {
|
|
325
|
+
throw new Error('Codex catalog does not declare expectedSkillIds');
|
|
326
|
+
}
|
|
327
|
+
if (!Array.isArray(catalog.publicAliasSkillIds) || catalog.publicAliasSkillIds.length === 0) {
|
|
328
|
+
throw new Error('Codex catalog does not declare publicAliasSkillIds');
|
|
329
|
+
}
|
|
330
|
+
if (typeof catalog.genericAgentSkillId !== 'string' || !catalog.genericAgentSkillId.trim()) {
|
|
331
|
+
throw new Error('Codex catalog does not declare genericAgentSkillId');
|
|
332
|
+
}
|
|
333
|
+
return catalog;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
function getManagedActivationSkillIds(catalog) {
|
|
337
|
+
return [...new Set([
|
|
338
|
+
...catalog.expectedSkillIds,
|
|
339
|
+
...catalog.publicAliasSkillIds,
|
|
340
|
+
catalog.genericAgentSkillId,
|
|
341
|
+
])].sort();
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
function renderSupremeAliasSkill(skillId) {
|
|
345
|
+
return [
|
|
346
|
+
'---',
|
|
347
|
+
`name: ${skillId}`,
|
|
348
|
+
'description: Activate the SINAPSE supreme orchestrator in Codex.',
|
|
349
|
+
'---',
|
|
350
|
+
'',
|
|
351
|
+
'# SINAPSE Supreme Orchestrator Alias',
|
|
352
|
+
'',
|
|
353
|
+
'This is a public alias for `$sinapse-orqx`. Follow the authoritative skill at',
|
|
354
|
+
'`.agents/skills/sinapse-orqx/SKILL.md` exactly. Resolve all aliases to the',
|
|
355
|
+
'canonical `snps-orqx` source and preserve its delegation-only authority.',
|
|
356
|
+
'',
|
|
357
|
+
].join('\n');
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
function renderGenericAgentSkill(skillId) {
|
|
361
|
+
return [
|
|
362
|
+
'---',
|
|
363
|
+
`name: ${skillId}`,
|
|
364
|
+
'description: Resolve and activate any canonical SINAPSE agent by ID in Codex.',
|
|
365
|
+
'---',
|
|
366
|
+
'',
|
|
367
|
+
'# SINAPSE Parametric Agent Activator',
|
|
368
|
+
'',
|
|
369
|
+
'Use the agent ID supplied after `$sinapse-agent`.',
|
|
370
|
+
'Canonical agent files under `.sinapse-ai/development/agents/` are the source of truth;',
|
|
371
|
+
'squad specialists resolve to their catalog-declared source. A persona greeting may use',
|
|
372
|
+
'`.codex/scripts/generate-codex-greeting.js` after successful resolution.',
|
|
373
|
+
'',
|
|
374
|
+
'1. Resolve it with `node .codex/scripts/resolve-codex-agent.js <agent-id> --json`.',
|
|
375
|
+
'2. If resolution fails, stop and return the resolver error without guessing an ID.',
|
|
376
|
+
'3. Read the returned `sourceOfTruth` and `pointer` files.',
|
|
377
|
+
'4. Adopt the canonical persona, authority boundaries and activation protocol.',
|
|
378
|
+
'5. Resolve starred commands with',
|
|
379
|
+
' `node .codex/scripts/resolve-codex-command.js <agent-id> <command> --json`.',
|
|
380
|
+
'6. Use native Codex collaboration for delegation; never start nested Codex or Claude.',
|
|
381
|
+
'',
|
|
382
|
+
'The 172 TOML adapters in `.codex/agents` remain the native subagent layer. This',
|
|
383
|
+
'skill is the discoverable `$` entrypoint and must not copy or redefine personas.',
|
|
384
|
+
'',
|
|
385
|
+
].join('\n');
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
function renderExpandedAgentSkill(definition) {
|
|
389
|
+
const skillId = `sinapse-agent-${definition.id}`;
|
|
390
|
+
return {
|
|
391
|
+
skillId,
|
|
392
|
+
relativePath: null,
|
|
393
|
+
content: [
|
|
394
|
+
'---',
|
|
395
|
+
`name: ${skillId}`,
|
|
396
|
+
`description: Activate the canonical SINAPSE ${definition.name} agent in Codex.`,
|
|
397
|
+
'---',
|
|
398
|
+
'',
|
|
399
|
+
`# SINAPSE Agent: ${definition.name}`,
|
|
400
|
+
'',
|
|
401
|
+
`This opt-in expanded activator is pinned to agent ID \`${definition.id}\`.`,
|
|
402
|
+
`Resolve it with \`node .codex/scripts/resolve-codex-agent.js ${definition.id} --json\`,`,
|
|
403
|
+
`then read \`${definition.sourcePath}\` as the source of truth and adopt its`,
|
|
404
|
+
'persona and authority boundaries. Resolve starred commands through',
|
|
405
|
+
`\`node .codex/scripts/resolve-codex-command.js ${definition.id} <command> --json\`.`,
|
|
406
|
+
'Use native Codex collaboration for delegation; never start nested runtimes.',
|
|
407
|
+
'',
|
|
408
|
+
].join('\n'),
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function collectCodexActivationSkills(projectRoot = PROJECT_ROOT, options = {}) {
|
|
413
|
+
const root = path.resolve(projectRoot);
|
|
414
|
+
const catalog = readCodexCatalog(root);
|
|
415
|
+
const authoritative = new Map(
|
|
416
|
+
collectNativeWorkflowSkills(root).map((skill) => [skill.skillId, skill]),
|
|
417
|
+
);
|
|
418
|
+
const skills = [];
|
|
419
|
+
const generatedSkillIds = new Set([
|
|
420
|
+
...catalog.publicAliasSkillIds,
|
|
421
|
+
catalog.genericAgentSkillId,
|
|
422
|
+
]);
|
|
423
|
+
|
|
424
|
+
for (const skillId of [...new Set(catalog.expectedSkillIds)].sort()) {
|
|
425
|
+
if (generatedSkillIds.has(skillId)) continue;
|
|
426
|
+
const nativeRelativePath = `${NATIVE_SKILLS_DIR}/${skillId}/SKILL.md`;
|
|
427
|
+
const nativeSourcePath = path.resolve(root, nativeRelativePath);
|
|
428
|
+
if (isPathInside(root, nativeSourcePath) && fs.existsSync(nativeSourcePath)) {
|
|
429
|
+
skills.push({
|
|
430
|
+
skillId,
|
|
431
|
+
relativePath: nativeRelativePath,
|
|
432
|
+
content: fs.readFileSync(nativeSourcePath, 'utf8'),
|
|
433
|
+
});
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
if (authoritative.has(skillId)) {
|
|
437
|
+
skills.push(authoritative.get(skillId));
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
const relativePath = `${COMPATIBILITY_SKILLS_DIR}/${skillId}/SKILL.md`;
|
|
442
|
+
const sourcePath = path.resolve(root, relativePath);
|
|
443
|
+
if (!isPathInside(root, sourcePath) || !fs.existsSync(sourcePath)) {
|
|
444
|
+
throw new Error(`Missing catalog activation skill: ${relativePath}`);
|
|
445
|
+
}
|
|
446
|
+
skills.push({ skillId, relativePath, content: fs.readFileSync(sourcePath, 'utf8') });
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
for (const skillId of catalog.publicAliasSkillIds) {
|
|
450
|
+
const relativePath = `${NATIVE_SKILLS_DIR}/${skillId}/SKILL.md`;
|
|
451
|
+
const sourcePath = path.resolve(root, relativePath);
|
|
452
|
+
skills.push({
|
|
453
|
+
skillId,
|
|
454
|
+
relativePath: fs.existsSync(sourcePath) ? relativePath : null,
|
|
455
|
+
content: fs.existsSync(sourcePath)
|
|
456
|
+
? fs.readFileSync(sourcePath, 'utf8')
|
|
457
|
+
: renderSupremeAliasSkill(skillId),
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
const genericRelativePath = `${NATIVE_SKILLS_DIR}/${catalog.genericAgentSkillId}/SKILL.md`;
|
|
461
|
+
const genericSourcePath = path.resolve(root, genericRelativePath);
|
|
462
|
+
skills.push({
|
|
463
|
+
skillId: catalog.genericAgentSkillId,
|
|
464
|
+
relativePath: fs.existsSync(genericSourcePath) ? genericRelativePath : null,
|
|
465
|
+
content: fs.existsSync(genericSourcePath)
|
|
466
|
+
? fs.readFileSync(genericSourcePath, 'utf8')
|
|
467
|
+
: renderGenericAgentSkill(catalog.genericAgentSkillId),
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
if (options.expandedSkills === true) {
|
|
471
|
+
for (const definition of collectNativeAgentDefinitions(root)) {
|
|
472
|
+
skills.push(renderExpandedAgentSkill(definition));
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
return skills.sort((left, right) => left.skillId.localeCompare(right.skillId));
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
function syncNativeActivationSkills(projectRoot, skills = collectCodexActivationSkills(projectRoot)) {
|
|
480
|
+
const outputDir = path.join(projectRoot, NATIVE_SKILLS_DIR);
|
|
481
|
+
const summary = {
|
|
482
|
+
total: skills.length,
|
|
483
|
+
created: 0,
|
|
484
|
+
updated: 0,
|
|
485
|
+
unchanged: 0,
|
|
486
|
+
sourceDir: COMPATIBILITY_SKILLS_DIR,
|
|
487
|
+
outputDir: normalizePath(path.relative(projectRoot, outputDir)),
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
for (const skill of skills) {
|
|
491
|
+
const skillDir = path.join(outputDir, skill.skillId);
|
|
492
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
493
|
+
const status = writeFileIfChanged(path.join(skillDir, 'SKILL.md'), skill.content);
|
|
494
|
+
summary[status] += 1;
|
|
495
|
+
}
|
|
496
|
+
return summary;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
function collectNativeWorkflowSkills(projectRoot = PROJECT_ROOT) {
|
|
500
|
+
const root = path.resolve(projectRoot);
|
|
501
|
+
return NATIVE_WORKFLOW_SKILLS.map((skillId) => {
|
|
502
|
+
const relativePath = `${NATIVE_SKILLS_DIR}/${skillId}/SKILL.md`;
|
|
503
|
+
const sourcePath = path.resolve(root, relativePath);
|
|
504
|
+
if (!isPathInside(root, sourcePath)) {
|
|
505
|
+
throw new Error(`Native workflow skill escapes the project root: ${relativePath}`);
|
|
506
|
+
}
|
|
507
|
+
if (!fs.existsSync(sourcePath) || !fs.statSync(sourcePath).isFile()) {
|
|
508
|
+
throw new Error(`Missing authoritative native workflow skill: ${relativePath}`);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
return {
|
|
512
|
+
skillId,
|
|
513
|
+
relativePath,
|
|
514
|
+
content: fs.readFileSync(sourcePath, 'utf8'),
|
|
515
|
+
};
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
function syncCodexWorkflowSkills(projectRoot, skills = collectNativeWorkflowSkills(projectRoot)) {
|
|
520
|
+
const outputDir = path.join(projectRoot, COMPATIBILITY_SKILLS_DIR);
|
|
521
|
+
const summary = {
|
|
522
|
+
total: skills.length,
|
|
523
|
+
created: 0,
|
|
524
|
+
updated: 0,
|
|
525
|
+
unchanged: 0,
|
|
526
|
+
sourceDir: NATIVE_SKILLS_DIR,
|
|
527
|
+
outputDir: normalizePath(path.relative(projectRoot, outputDir)),
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
for (const skill of skills) {
|
|
531
|
+
const skillDir = path.join(outputDir, skill.skillId);
|
|
532
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
533
|
+
const status = writeFileIfChanged(path.join(skillDir, 'SKILL.md'), skill.content);
|
|
534
|
+
summary[status] += 1;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
return summary;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
function syncCodexNativeAgents(projectRoot = PROJECT_ROOT, options = {}) {
|
|
541
|
+
const definitions = collectNativeAgentDefinitions(projectRoot);
|
|
542
|
+
const activationSkills = collectCodexActivationSkills(projectRoot, options);
|
|
543
|
+
const compatibilitySkills = options.expandedSkills === true
|
|
544
|
+
? collectCodexActivationSkills(projectRoot)
|
|
545
|
+
: activationSkills;
|
|
546
|
+
const outputDir = path.join(projectRoot, CODEX_AGENTS_DIR);
|
|
547
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
548
|
+
|
|
549
|
+
const summary = {
|
|
550
|
+
total: definitions.length,
|
|
551
|
+
created: 0,
|
|
552
|
+
updated: 0,
|
|
553
|
+
unchanged: 0,
|
|
554
|
+
outputDir: normalizePath(path.relative(projectRoot, outputDir)),
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
for (const definition of definitions) {
|
|
558
|
+
const outputPath = path.join(outputDir, definition.fileName);
|
|
559
|
+
const status = writeFileIfChanged(outputPath, renderNativeAgentToml(definition));
|
|
560
|
+
summary[status] += 1;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
summary.nativeSkills = syncNativeActivationSkills(projectRoot, activationSkills);
|
|
564
|
+
summary.activationMode = options.expandedSkills === true ? 'expanded' : 'tiered';
|
|
565
|
+
summary.skills = syncCodexWorkflowSkills(projectRoot, compatibilitySkills);
|
|
566
|
+
|
|
567
|
+
return summary;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
function main() {
|
|
571
|
+
try {
|
|
572
|
+
const expandedSkills = process.argv.slice(2).includes('--expanded-skills');
|
|
573
|
+
const summary = syncCodexNativeAgents(PROJECT_ROOT, { expandedSkills });
|
|
574
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
575
|
+
} catch (error) {
|
|
576
|
+
console.error(`[sync-codex-native] ${error.message}`);
|
|
577
|
+
process.exitCode = 1;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
if (require.main === module) {
|
|
582
|
+
main();
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
module.exports = {
|
|
586
|
+
CODEX_AGENTS_DIR,
|
|
587
|
+
NATIVE_SKILLS_DIR,
|
|
588
|
+
COMPATIBILITY_SKILLS_DIR,
|
|
589
|
+
NATIVE_WORKFLOW_SKILLS,
|
|
590
|
+
CODEX_CATALOG_PATH,
|
|
591
|
+
SUPREME_ORCHESTRATOR_ID,
|
|
592
|
+
SUPREME_ORCHESTRATOR_NAME,
|
|
593
|
+
unwrapSingleLineYamlScalar,
|
|
594
|
+
sanitizeDescription,
|
|
595
|
+
extractSourceDescription,
|
|
596
|
+
extractFrontmatterField,
|
|
597
|
+
extractMarkdownRole,
|
|
598
|
+
extractInlineMarkdownRole,
|
|
599
|
+
nativeAgentName,
|
|
600
|
+
buildDeveloperInstructions,
|
|
601
|
+
renderNativeAgentToml,
|
|
602
|
+
buildNativeAgentDefinition,
|
|
603
|
+
collectNativeAgentDefinitions,
|
|
604
|
+
collectNativeWorkflowSkills,
|
|
605
|
+
readCodexCatalog,
|
|
606
|
+
getManagedActivationSkillIds,
|
|
607
|
+
renderSupremeAliasSkill,
|
|
608
|
+
renderGenericAgentSkill,
|
|
609
|
+
renderExpandedAgentSkill,
|
|
610
|
+
collectCodexActivationSkills,
|
|
611
|
+
syncNativeActivationSkills,
|
|
612
|
+
syncCodexWorkflowSkills,
|
|
613
|
+
syncCodexNativeAgents,
|
|
614
|
+
};
|