sinapse-ai 1.24.0 → 1.25.1
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/react-bits-frontend/SKILL.md +66 -0
- package/.agents/skills/react-bits-frontend/agents/openai.yaml +4 -0
- package/.agents/skills/react-bits-frontend/references/corpus-map.md +29 -0
- package/.agents/skills/sinapse/SKILL.md +10 -0
- package/.agents/skills/sinapse-agent/SKILL.md +22 -0
- package/{.codex → .agents}/skills/sinapse-claude/SKILL.md +1 -1
- package/.agents/skills/sinapse-loop/SKILL.md +35 -0
- package/.agents/skills/sinapse-orqx/SKILL.md +44 -0
- package/.agents/skills/sinapse-spec-driven/SKILL.md +35 -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/software-engineering-applicability.md +13 -0
- package/.claude/settings.json +170 -0
- 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 +20 -5
- 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 +304 -0
- package/.codex/scripts/sync-codex-native.js +581 -0
- package/.codex/scripts/validate-codex-native.js +277 -0
- package/.codex/tasks/onboard-sinapse-codex.md +1 -1
- package/.sinapse-ai/data/entity-registry.yaml +91 -39
- package/.sinapse-ai/install-manifest.yaml +5 -5
- package/.sinapse-ai/product/templates/statusline/agent-badges.json +37 -37
- package/AGENTS.md +5 -4
- package/CHANGELOG.md +23 -7
- package/README.en.md +1 -1
- package/README.md +25 -10
- package/bin/cli.js +8 -1
- package/bin/commands/help.js +3 -2
- package/bin/commands/install.js +79 -53
- package/bin/commands/status.js +4 -3
- package/bin/commands/uninstall.js +247 -29
- package/bin/commands/update.js +38 -23
- package/bin/lib/command-generator.js +25 -3
- package/bin/lib/global-provider-adapters.js +199 -0
- package/bin/lib/provider-parity.js +22 -0
- package/bin/postinstall.js +11 -11
- package/bin/utils/validate-publish.js +43 -10
- package/docs/framework/codex-parity/codex-integration-process.md +6 -7
- package/docs/framework/codex-parity/codex-native-runtime-v2.md +230 -0
- package/docs/framework/codex-parity/codex-parity-program.md +4 -4
- package/docs/framework/codex-parity/codex-total-parity-orchestration-plan.md +1 -1
- 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/guides/codex-config.md +2 -2
- package/docs/guides/development-setup.md +1 -2
- package/docs/guides/ide-integration.md +6 -6
- package/docs/guides/quality-gates.md +2 -2
- package/docs/ide-integration.md +2 -2
- package/docs/installation/README.md +2 -2
- package/docs/installation/faq.md +1 -1
- package/docs/installation/troubleshooting.md +2 -2
- package/docs/installation/v4-quick-start.md +1 -1
- package/docs/pt/contributing.md +1 -1
- package/docs/pt/guides/development-setup.md +1 -2
- package/docs/pt/guides/quality-gates.md +2 -2
- package/docs/pt/ide-integration.md +6 -6
- package/docs/pt/installation/faq.md +1 -1
- package/docs/pt/installation/troubleshooting.md +2 -3
- package/docs/pt/installation/v4-quick-start.md +1 -2
- package/docs/pt/platforms/claude-code.md +4 -4
- package/docs/sinapse-agent-flows/analyst-system.md +1 -1
- package/docs/sinapse-agent-flows/architect-system.md +1 -1
- package/docs/sinapse-agent-flows/data-engineer-system.md +1 -1
- package/docs/sinapse-agent-flows/dev-system.md +1 -1
- package/docs/sinapse-agent-flows/pm-system.md +1 -1
- package/docs/sinapse-agent-flows/qa-system.md +1 -1
- package/docs/sinapse-agent-flows/sm-system.md +1 -1
- package/docs/sinapse-agent-flows/snps-orqx-system.md +1 -1
- package/docs/sinapse-agent-flows/squad-creator-system.md +2 -2
- package/docs/sinapse-agent-flows/ux-design-expert-system.md +1 -1
- package/package.json +37 -19
- package/packages/engineering-applicability/fixtures.json +52 -0
- package/packages/engineering-applicability/index.js +150 -0
- package/packages/installer/src/config/ide-configs.js +1 -1
- package/packages/installer/src/installer/sinapse-ai-installer.js +359 -2
- package/packages/installer/src/migrations/legacy-claude-agent-command-hashes.json +36 -0
- package/packages/installer/src/migrations/legacy-codex-native-skill-hashes.json +42 -0
- package/packages/installer/src/updater/index.js +51 -13
- package/packages/installer/src/wizard/feedback.js +1 -1
- package/packages/installer/src/wizard/ide-config-generator.js +22 -0
- package/packages/installer/src/wizard/index.js +106 -75
- 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-codex-command-registry.js +101 -0
- package/scripts/validate-provider-adapters.js +243 -0
- package/squads/claude-code-mastery/agents/skill-craftsman.md +2 -2
- package/squads/claude-code-mastery/knowledge-base/skill-creation-patterns.md +1 -1
- 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
- package/squads/squad-design/agents/ux-designer.md +1 -1
- package/.codex/skills/sinapse-orqx/SKILL.md +0 -25
- /package/{.codex → .agents}/skills/sinapse-analyst/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-animations/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-architect/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-brand/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-cloning/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-commercial/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-content/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-copy/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-council/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-courses/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-cyber/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-data-engineer/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-design/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-dev/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-devops/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-finance/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-growth/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-paidmedia/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-pm/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-po/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-product/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-qa/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-research/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-sm/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-squad-creator/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-storytelling/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-swarm/SKILL.md +0 -0
- /package/{.codex → .agents}/skills/sinapse-ux-design-expert/SKILL.md +0 -0
package/bin/commands/update.js
CHANGED
|
@@ -29,7 +29,14 @@ const {
|
|
|
29
29
|
} = require('../lib/detection');
|
|
30
30
|
const { promptLlmChoice } = require('../lib/prompts');
|
|
31
31
|
const { generateSquadAwareness } = require('./install');
|
|
32
|
+
const {
|
|
33
|
+
recordInstalledAgents,
|
|
34
|
+
reconcileInstalledAgents,
|
|
35
|
+
removeManagedGlobalSkills,
|
|
36
|
+
} = require('./uninstall');
|
|
32
37
|
const { regenerateAgentCommands } = require('../lib/command-generator');
|
|
38
|
+
const { deliverGlobalProviderAdapters, getGlobalCommandStagingDir } = require('../lib/global-provider-adapters');
|
|
39
|
+
const { assertProviderAdapterParity } = require('../lib/provider-parity');
|
|
33
40
|
const { execSync } = require('child_process');
|
|
34
41
|
|
|
35
42
|
// Query the latest version published to npm. Returns null when npm is unreachable.
|
|
@@ -146,39 +153,46 @@ async function cmdUpdateGlobal() {
|
|
|
146
153
|
logger.always(` ${GREEN}OK${NC} sinapse (orqx)`);
|
|
147
154
|
}
|
|
148
155
|
|
|
156
|
+
const coreDevelopmentSrc = path.join(ROOT, '.sinapse-ai', 'development');
|
|
157
|
+
const coreDevelopmentDest = path.join(SINAPSE_HOME, 'core');
|
|
158
|
+
if (fs.existsSync(coreDevelopmentSrc)) {
|
|
159
|
+
const delta = syncDirSync(coreDevelopmentSrc, coreDevelopmentDest);
|
|
160
|
+
totalDelta.added += delta.added;
|
|
161
|
+
totalDelta.updated += delta.updated;
|
|
162
|
+
totalDelta.unchanged += delta.unchanged;
|
|
163
|
+
totalDelta.removed += delta.removed;
|
|
164
|
+
logger.always(` ${GREEN}OK${NC} core development`);
|
|
165
|
+
}
|
|
166
|
+
|
|
149
167
|
// Phase 2: Regenerate commands — shared with `install` so `update` produces the
|
|
150
168
|
// SAME complete set (every specialist command + the rich master Imperator stubs),
|
|
151
169
|
// not just the `-orqx` subset it used to write.
|
|
152
170
|
logger.always(`\n${CYAN}Phase 2:${NC} Regenerating commands`);
|
|
153
|
-
|
|
171
|
+
const commandStagingDir = getGlobalCommandStagingDir({ llmChoice, sinapseHome: SINAPSE_HOME, claudeCommandsDir: CLAUDE_COMMANDS_DIR });
|
|
172
|
+
rmDirSync(commandStagingDir);
|
|
154
173
|
const { writtenAgents, totalAgents } = regenerateAgentCommands({
|
|
155
174
|
sinapseHome: SINAPSE_HOME,
|
|
156
|
-
commandsDir:
|
|
175
|
+
commandsDir: commandStagingDir,
|
|
157
176
|
squads,
|
|
158
177
|
sinapseMasterDest: path.join(SINAPSE_HOME, 'sinapse'),
|
|
178
|
+
coreDevelopmentDest,
|
|
159
179
|
});
|
|
160
180
|
logger.always(` ${GREEN}OK${NC} ${writtenAgents.size} command files (${totalAgents} agents total)`);
|
|
161
181
|
|
|
162
182
|
// Phase 2b: Install global agents based on LLM choice
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
for (const f of fs.readdirSync(CLAUDE_COMMANDS_DIR).filter(f => f.endsWith('.md'))) {
|
|
168
|
-
fs.copyFileSync(path.join(CLAUDE_COMMANDS_DIR, f), path.join(globalAgentsDir, f));
|
|
169
|
-
}
|
|
170
|
-
logger.always(` ${GREEN}OK${NC} Claude Code global agents (${writtenAgents.size})`);
|
|
171
|
-
}
|
|
183
|
+
const globalAdapters = deliverGlobalProviderAdapters({ llmChoice, home: HOME, commandsDir: commandStagingDir });
|
|
184
|
+
const activeAgentCount = assertProviderAdapterParity(llmChoice, globalAdapters, totalAgents);
|
|
185
|
+
if (globalAdapters.claude.length) logger.always(` ${GREEN}OK${NC} Claude Code global agents (${globalAdapters.claude.length})`);
|
|
186
|
+
if (globalAdapters.codex.length) logger.always(` ${GREEN}OK${NC} Codex global agents (${globalAdapters.codex.length} TOML, ${globalAdapters.skills.length} skills)`);
|
|
172
187
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
188
|
+
const installedAgentFilenames = new Set([...globalAdapters.claude, ...globalAdapters.codex]);
|
|
189
|
+
reconcileInstalledAgents(HOME, installedAgentFilenames);
|
|
190
|
+
if (llmChoice === 'claude-code') removeManagedGlobalSkills(HOME, { providers: ['codex'] });
|
|
191
|
+
if (llmChoice === 'codex') removeManagedGlobalSkills(HOME, { providers: ['claude-code'] });
|
|
192
|
+
const installedIdes = [];
|
|
193
|
+
if (globalAdapters.claude.length) installedIdes.push('claude-code');
|
|
194
|
+
if (globalAdapters.codex.length) installedIdes.push('codex');
|
|
195
|
+
recordInstalledAgents(installedAgentFilenames, installedIdes);
|
|
182
196
|
|
|
183
197
|
// Phase 3: Regenerate awareness
|
|
184
198
|
logger.always(`\n${CYAN}Phase 3:${NC} Updating squad-awareness`);
|
|
@@ -192,7 +206,8 @@ async function cmdUpdateGlobal() {
|
|
|
192
206
|
meta.updatedAt = new Date().toISOString();
|
|
193
207
|
meta.version = VERSION;
|
|
194
208
|
meta.squads = squads.length;
|
|
195
|
-
meta.
|
|
209
|
+
meta.agents = activeAgentCount;
|
|
210
|
+
meta.commands = activeAgentCount;
|
|
196
211
|
meta.llm = llmChoice;
|
|
197
212
|
fs.writeFileSync(metaPath, JSON.stringify(meta, null, 2));
|
|
198
213
|
|
|
@@ -235,9 +250,9 @@ async function cmdUpdateGlobal() {
|
|
|
235
250
|
logger.always(`${GREEN} SINAPSE AI atualizado para v${VERSION}!${NC}`);
|
|
236
251
|
logger.always(`${GREEN}══════════════════════════════════════════════════════════════${NC}`);
|
|
237
252
|
logger.always('');
|
|
238
|
-
logger.always(` ${BOLD}${squads.length} squads${NC} | ${BOLD}${
|
|
253
|
+
logger.always(` ${BOLD}${squads.length} squads${NC} | ${BOLD}${activeAgentCount} agents${NC} | ${BOLD}${activeAgentCount} native adapters${NC}`);
|
|
239
254
|
logger.always(` ${startCmd}`);
|
|
240
255
|
logger.always('');
|
|
241
256
|
}
|
|
242
257
|
|
|
243
|
-
module.exports = { cmdUpdateGlobal };
|
|
258
|
+
module.exports = { cmdUpdateGlobal, assertProviderAdapterParity };
|
|
@@ -116,7 +116,7 @@ Tasks: \`${squadPath}/tasks/\` · Workflows: \`${squadPath}/workflows/\` · Mani
|
|
|
116
116
|
`;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
function generateCommandMd(agentId, agentName, agentIcon, squadName, squadPath, agentFile) {
|
|
119
|
+
function generateCommandMd(agentId, agentName, agentIcon, squadName, squadPath, agentFile, options = {}) {
|
|
120
120
|
// Detecta se é orquestrador: id termina em -orqx OU é Imperator (snps-orqx/sinapse-orqx)
|
|
121
121
|
// ou um dos apelidos curtos do master (sinapse/snps).
|
|
122
122
|
const isOrchestrator = /-orqx$/.test(agentId) || agentId === 'snps-orqx' || agentId === 'sinapse-orqx' || agentId === 'sinapse' || agentId === 'snps';
|
|
@@ -139,6 +139,12 @@ function generateCommandMd(agentId, agentName, agentIcon, squadName, squadPath,
|
|
|
139
139
|
const fmDesc = (isOrchestrator
|
|
140
140
|
? `${agentName || agentId} — orchestrator for ${squadName}; diagnoses, routes to specialists and auto-generates an orchestration plan`
|
|
141
141
|
: `${agentName || agentId} — ${squadName} specialist`).replace(/["\n\r]/g, ' ').trim();
|
|
142
|
+
const manifestActivation = options.hasManifest === false
|
|
143
|
+
? '2. Use the installed core development module as canonical context'
|
|
144
|
+
: `2. Load the squad manifest at \`${squadPath}/squad.yaml\` for context`;
|
|
145
|
+
const manifestReference = options.hasManifest === false
|
|
146
|
+
? `- **Canonical module:** \`${squadPath}/\``
|
|
147
|
+
: `- **Squad Manifest:** \`${squadPath}/squad.yaml\``;
|
|
142
148
|
|
|
143
149
|
return `---
|
|
144
150
|
name: ${agentId}
|
|
@@ -151,7 +157,7 @@ ACTIVATION-NOTICE: This command activates an agent from ${squadName}.
|
|
|
151
157
|
|
|
152
158
|
CRITICAL: Read the agent definition file at \`${squadPath}/agents/${agentFile}\` to understand your full operating parameters. Then:
|
|
153
159
|
1. Adopt the persona defined in that file (name: ${agentName}, icon: ${agentIcon})
|
|
154
|
-
|
|
160
|
+
${manifestActivation}
|
|
155
161
|
3. Display a greeting showing your agent name, role, and available commands
|
|
156
162
|
${step4}
|
|
157
163
|
|
|
@@ -159,7 +165,7 @@ ${step4}
|
|
|
159
165
|
- **Agent ID:** ${agentId}
|
|
160
166
|
- **Squad:** ${squadName}
|
|
161
167
|
- **Definition:** \`${squadPath}/agents/${agentFile}\`
|
|
162
|
-
|
|
168
|
+
${manifestReference}
|
|
163
169
|
- **Tasks:** \`${squadPath}/tasks/\`
|
|
164
170
|
- **Knowledge Bases:** \`${squadPath}/knowledge-base/\`
|
|
165
171
|
- **Workflows:** \`${squadPath}/workflows/\`
|
|
@@ -209,6 +215,7 @@ function regenerateAgentCommands(deps = {}) {
|
|
|
209
215
|
commandsDir = CLAUDE_COMMANDS_DIR,
|
|
210
216
|
squads,
|
|
211
217
|
sinapseMasterDest = path.join(sinapseHome, 'sinapse'),
|
|
218
|
+
coreDevelopmentDest = path.join(sinapseHome, 'core'),
|
|
212
219
|
} = deps;
|
|
213
220
|
|
|
214
221
|
if (!Array.isArray(squads)) {
|
|
@@ -244,6 +251,21 @@ function regenerateAgentCommands(deps = {}) {
|
|
|
244
251
|
}
|
|
245
252
|
}
|
|
246
253
|
|
|
254
|
+
// Core agents are mirrored by the global installer so definitions and tasks
|
|
255
|
+
// remain resolvable after the npm process exits.
|
|
256
|
+
const coreAgentsDir = path.join(coreDevelopmentDest, 'agents');
|
|
257
|
+
if (fs.existsSync(coreAgentsDir)) {
|
|
258
|
+
const coreBase = toForwardSlash(coreDevelopmentDest);
|
|
259
|
+
for (const file of fs.readdirSync(coreAgentsDir).filter(f => f.endsWith('.md'))) {
|
|
260
|
+
if (file === 'README.md' || file === 'MEMORY.md' || file.startsWith('_') || writtenAgents.has(file)) continue;
|
|
261
|
+
const agentId = file.replace('.md', '');
|
|
262
|
+
const meta = extractAgentMeta(path.join(coreAgentsDir, file));
|
|
263
|
+
const cmdContent = generateCommandMd(agentId, meta.name, meta.icon, 'core', coreBase, file, { hasManifest: false });
|
|
264
|
+
atomicWriteFileSync(path.join(commandsDir, `${agentId}.md`), cmdContent);
|
|
265
|
+
writtenAgents.add(file);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
247
269
|
// 2. Commands for sinapse/ master squad agents.
|
|
248
270
|
if (fs.existsSync(sinapseMasterDest)) {
|
|
249
271
|
const masterAgentsDir = path.join(sinapseMasterDest, 'agents');
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const NOFOLLOW_READ_FLAGS = fs.constants.O_RDONLY | (fs.constants.O_NOFOLLOW || 0);
|
|
7
|
+
|
|
8
|
+
function readRegularFileNoFollowSync(filePath, encoding = null) {
|
|
9
|
+
let handle;
|
|
10
|
+
try {
|
|
11
|
+
handle = fs.openSync(filePath, NOFOLLOW_READ_FLAGS);
|
|
12
|
+
if (!fs.fstatSync(handle).isFile()) return null;
|
|
13
|
+
return fs.readFileSync(handle, encoding || undefined);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
if (['ENOENT', 'ELOOP', 'EISDIR'].includes(error.code)) return null;
|
|
16
|
+
throw error;
|
|
17
|
+
} finally {
|
|
18
|
+
if (handle !== undefined) fs.closeSync(handle);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function parseAgentMarkdown(content, fallbackName) {
|
|
23
|
+
const name = content.match(/^name:\s*([^\r\n]+)$/m)?.[1]?.trim() || fallbackName;
|
|
24
|
+
const raw = content.match(/^description:\s*(.+)$/m)?.[1]?.trim() || `SINAPSE ${name} agent`;
|
|
25
|
+
return { name, description: raw.replace(/^['"]|['"]$/g, '') };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function renderCodexToml(name, description, instructions) {
|
|
29
|
+
return [
|
|
30
|
+
`name = ${JSON.stringify(name)}`,
|
|
31
|
+
`description = ${JSON.stringify(description)}`,
|
|
32
|
+
`developer_instructions = ${JSON.stringify(instructions)}`,
|
|
33
|
+
'',
|
|
34
|
+
].join('\n');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function markGlobalAgent(markdown, fileName = '') {
|
|
38
|
+
let content = markdown;
|
|
39
|
+
if (fileName === 'snps-orqx.md') {
|
|
40
|
+
content = content.replace(/^name:\s*snps-orqx\s*$/m, 'name: sinapse-orqx');
|
|
41
|
+
}
|
|
42
|
+
if (content.includes('SINAPSE-MANAGED:global-agent')) return content;
|
|
43
|
+
return `${content.trimEnd()}\n\n<!-- SINAPSE-MANAGED:global-agent -->\n`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function renderGlobalSkill(skillId) {
|
|
47
|
+
const generic = skillId === 'sinapse-agent';
|
|
48
|
+
return [
|
|
49
|
+
'---',
|
|
50
|
+
`name: ${skillId}`,
|
|
51
|
+
`description: ${generic ? 'Resolve and activate any globally installed SINAPSE agent by ID.' : 'Activate the globally installed SINAPSE supreme orchestrator.'}`,
|
|
52
|
+
'---', '',
|
|
53
|
+
'<!-- SINAPSE-MANAGED:global-skill -->', '',
|
|
54
|
+
generic ? '# SINAPSE Global Agent Activator' : '# SINAPSE Global Orchestrator', '',
|
|
55
|
+
generic
|
|
56
|
+
? 'Resolve the requested ID through the native agent catalog of the active provider; reject unknown IDs without guessing.'
|
|
57
|
+
: 'Resolve this alias to the `sinapse-orqx` custom agent and preserve its delegation-only authority.',
|
|
58
|
+
'Canonical global persona and task sources live under `~/.sinapse/`.',
|
|
59
|
+
'Use native Codex delegation and never start a nested CLI.', '',
|
|
60
|
+
].join('\n');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function writeFileAtomically(filePath, content) {
|
|
64
|
+
const temporaryPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
|
|
65
|
+
let handle;
|
|
66
|
+
try {
|
|
67
|
+
handle = fs.openSync(temporaryPath, 'wx', 0o600);
|
|
68
|
+
fs.writeFileSync(handle, content, 'utf8');
|
|
69
|
+
fs.fsyncSync(handle);
|
|
70
|
+
fs.closeSync(handle);
|
|
71
|
+
handle = undefined;
|
|
72
|
+
fs.renameSync(temporaryPath, filePath);
|
|
73
|
+
} finally {
|
|
74
|
+
if (handle !== undefined) fs.closeSync(handle);
|
|
75
|
+
try { fs.unlinkSync(temporaryPath); } catch { /* already published or cleanup is best-effort */ }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function writeGlobalSkillIfManaged(skillPath, content) {
|
|
80
|
+
fs.mkdirSync(path.dirname(skillPath), { recursive: true });
|
|
81
|
+
|
|
82
|
+
let handle;
|
|
83
|
+
try {
|
|
84
|
+
const noFollow = fs.constants.O_NOFOLLOW || 0;
|
|
85
|
+
handle = fs.openSync(skillPath, fs.constants.O_RDONLY | noFollow);
|
|
86
|
+
} catch (error) {
|
|
87
|
+
if (error.code === 'ELOOP') return false;
|
|
88
|
+
if (error.code !== 'ENOENT') throw error;
|
|
89
|
+
try {
|
|
90
|
+
handle = fs.openSync(skillPath, 'wx');
|
|
91
|
+
} catch (createError) {
|
|
92
|
+
if (createError.code === 'EEXIST') return writeGlobalSkillIfManaged(skillPath, content);
|
|
93
|
+
throw createError;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
fs.writeFileSync(handle, content, 'utf8');
|
|
97
|
+
return true;
|
|
98
|
+
} finally {
|
|
99
|
+
fs.closeSync(handle);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
if (!fs.fstatSync(handle).isFile()) return false;
|
|
105
|
+
const existing = fs.readFileSync(handle, 'utf8');
|
|
106
|
+
if (!existing.includes('SINAPSE-MANAGED:global-skill')) return false;
|
|
107
|
+
fs.closeSync(handle);
|
|
108
|
+
handle = undefined;
|
|
109
|
+
writeFileAtomically(skillPath, content);
|
|
110
|
+
return true;
|
|
111
|
+
} finally {
|
|
112
|
+
if (handle !== undefined) fs.closeSync(handle);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function removeStaleManagedAgents(targetDir, expectedFiles, extension) {
|
|
117
|
+
if (!fs.existsSync(targetDir)) return [];
|
|
118
|
+
const expected = new Set(expectedFiles);
|
|
119
|
+
const removed = [];
|
|
120
|
+
for (const file of fs.readdirSync(targetDir).filter((name) => name.endsWith(extension))) {
|
|
121
|
+
if (expected.has(file)) continue;
|
|
122
|
+
const filePath = path.join(targetDir, file);
|
|
123
|
+
const content = readRegularFileNoFollowSync(filePath, 'utf8');
|
|
124
|
+
if (content === null) continue;
|
|
125
|
+
const explicitlyManaged = content.includes('SINAPSE-MANAGED:global-agent');
|
|
126
|
+
const legacyManaged = content.includes('ACTIVATION-NOTICE: This command activates an agent from sinapse.')
|
|
127
|
+
&& /\.sinapse[\\/]sinapse[\\/]agents[\\/]/.test(content)
|
|
128
|
+
&& content.includes('Load the squad manifest');
|
|
129
|
+
if (!explicitlyManaged && !legacyManaged) continue;
|
|
130
|
+
fs.unlinkSync(filePath);
|
|
131
|
+
removed.push(file);
|
|
132
|
+
}
|
|
133
|
+
return removed;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function deliverGlobalProviderAdapters({ llmChoice, home, commandsDir }) {
|
|
137
|
+
let commandFiles = fs.existsSync(commandsDir)
|
|
138
|
+
? fs.readdirSync(commandsDir).filter((file) => file.endsWith('.md')).sort()
|
|
139
|
+
: [];
|
|
140
|
+
if (commandFiles.includes('snps-orqx.md')) {
|
|
141
|
+
const aliasFiles = new Set(['sinapse.md', 'sinapse-orqx.md', 'snps.md']);
|
|
142
|
+
commandFiles = commandFiles.filter((file) => !aliasFiles.has(file));
|
|
143
|
+
}
|
|
144
|
+
const written = { claude: [], claudeSkills: [], codex: [], skills: [] };
|
|
145
|
+
|
|
146
|
+
if (llmChoice === 'claude-code' || llmChoice === 'both') {
|
|
147
|
+
const targetDir = path.join(home, '.claude', 'agents');
|
|
148
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
149
|
+
removeStaleManagedAgents(targetDir, commandFiles, '.md');
|
|
150
|
+
for (const file of commandFiles) {
|
|
151
|
+
const markdown = markGlobalAgent(fs.readFileSync(path.join(commandsDir, file), 'utf8'), file);
|
|
152
|
+
fs.writeFileSync(path.join(targetDir, file), markdown, 'utf8');
|
|
153
|
+
written.claude.push(file);
|
|
154
|
+
}
|
|
155
|
+
const skillsRoot = path.join(home, '.claude', 'skills');
|
|
156
|
+
for (const skillId of ['snps', 'sinapse', 'snps-orqx', 'sinapse-orqx', 'sinapse-agent']) {
|
|
157
|
+
const skillPath = path.join(skillsRoot, skillId, 'SKILL.md');
|
|
158
|
+
if (writeGlobalSkillIfManaged(skillPath, renderGlobalSkill(skillId))) {
|
|
159
|
+
written.claudeSkills.push(skillId);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (llmChoice === 'codex' || llmChoice === 'both') {
|
|
164
|
+
const targetDir = path.join(home, '.codex', 'agents');
|
|
165
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
166
|
+
removeStaleManagedAgents(
|
|
167
|
+
targetDir,
|
|
168
|
+
commandFiles.map((file) => file.replace(/\.md$/, '.toml')),
|
|
169
|
+
'.toml',
|
|
170
|
+
);
|
|
171
|
+
for (const file of commandFiles) {
|
|
172
|
+
const markdown = markGlobalAgent(fs.readFileSync(path.join(commandsDir, file), 'utf8'), file);
|
|
173
|
+
const id = file.replace(/\.md$/, '');
|
|
174
|
+
const metadata = parseAgentMarkdown(markdown, id);
|
|
175
|
+
const tomlName = `${id}.toml`;
|
|
176
|
+
fs.writeFileSync(path.join(targetDir, tomlName), renderCodexToml(metadata.name, metadata.description, markdown), 'utf8');
|
|
177
|
+
const staleMarkdown = path.join(targetDir, file);
|
|
178
|
+
if (fs.existsSync(staleMarkdown)) fs.unlinkSync(staleMarkdown);
|
|
179
|
+
written.codex.push(tomlName);
|
|
180
|
+
}
|
|
181
|
+
const skillsRoot = path.join(home, '.agents', 'skills');
|
|
182
|
+
for (const skillId of ['snps', 'sinapse', 'snps-orqx', 'sinapse-orqx', 'sinapse-agent']) {
|
|
183
|
+
const skillDir = path.join(skillsRoot, skillId);
|
|
184
|
+
const skillPath = path.join(skillDir, 'SKILL.md');
|
|
185
|
+
if (writeGlobalSkillIfManaged(skillPath, renderGlobalSkill(skillId))) {
|
|
186
|
+
written.skills.push(skillId);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return written;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function getGlobalCommandStagingDir({ llmChoice, sinapseHome, claudeCommandsDir }) {
|
|
194
|
+
void llmChoice;
|
|
195
|
+
void claudeCommandsDir;
|
|
196
|
+
return path.join(sinapseHome, '.generated', 'agents');
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
module.exports = { parseAgentMarkdown, renderCodexToml, markGlobalAgent, renderGlobalSkill, writeGlobalSkillIfManaged, removeStaleManagedAgents, deliverGlobalProviderAdapters, getGlobalCommandStagingDir };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function assertProviderAdapterParity(llmChoice, adapters, canonicalCount) {
|
|
4
|
+
if (!['claude-code', 'codex', 'both'].includes(llmChoice)) {
|
|
5
|
+
throw new Error(`Invalid LLM choice for provider parity: ${llmChoice}`);
|
|
6
|
+
}
|
|
7
|
+
const providerCounts = [];
|
|
8
|
+
if (llmChoice === 'claude-code' || llmChoice === 'both') {
|
|
9
|
+
providerCounts.push(['Claude Code', adapters.claude.length]);
|
|
10
|
+
}
|
|
11
|
+
if (llmChoice === 'codex' || llmChoice === 'both') {
|
|
12
|
+
providerCounts.push(['Codex', adapters.codex.length]);
|
|
13
|
+
}
|
|
14
|
+
const divergent = providerCounts.filter(([, count]) => count !== canonicalCount);
|
|
15
|
+
if (divergent.length) {
|
|
16
|
+
const details = divergent.map(([provider, count]) => `${provider}: ${count}/${canonicalCount}`).join(', ');
|
|
17
|
+
throw new Error(`Provider adapter parity failed (${details})`);
|
|
18
|
+
}
|
|
19
|
+
return canonicalCount;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
module.exports = { assertProviderAdapterParity };
|
package/bin/postinstall.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* Execution order (see Story A.1 AC 4):
|
|
19
19
|
* 1. env guard (SINAPSE_SKIP_POSTINSTALL / CI)
|
|
20
|
-
* 2. npm run sync:
|
|
20
|
+
* 2. npm run sync:providers
|
|
21
21
|
* 3. mkdir -p .sinapse/handoffs
|
|
22
22
|
* 4. mkdir -p .sinapse/scratchpad
|
|
23
23
|
* 5. sinapse doctor --quiet (exit code 2 = abort, 0/1 = OK)
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
*
|
|
31
31
|
* Exit codes:
|
|
32
32
|
* 0 success OR non-critical warning (framework operational)
|
|
33
|
-
* 2 critical failure (sync
|
|
33
|
+
* 2 critical failure (provider sync failed, or doctor exit >= 2)
|
|
34
34
|
*
|
|
35
35
|
* Note: exit 1 is NOT used. npm treats any non-zero postinstall exit as
|
|
36
36
|
* `command failed`, which scares users when the install is actually operational.
|
|
@@ -273,7 +273,7 @@ function run(command, args, opts = {}) {
|
|
|
273
273
|
* Detect if we're running inside a global npm install.
|
|
274
274
|
* Global installs land in /usr/local/lib/node_modules (Mac/Linux) or
|
|
275
275
|
* %APPDATA%\npm\node_modules (Windows). Agent sync to those paths is pointless
|
|
276
|
-
* — sync:
|
|
276
|
+
* — sync:providers must run inside a real project (per-project install).
|
|
277
277
|
*/
|
|
278
278
|
function isGlobalInstall() {
|
|
279
279
|
if (process.env.npm_config_global === 'true') return true;
|
|
@@ -287,8 +287,8 @@ function isGlobalInstall() {
|
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
/**
|
|
290
|
-
* Step 1:
|
|
291
|
-
*
|
|
290
|
+
* Step 1: synchronize native Claude and Codex provider adapters.
|
|
291
|
+
* Writes Claude agents to .claude/agents and Codex skills to .agents/skills.
|
|
292
292
|
*
|
|
293
293
|
* Skipped on global installs (no project to sync to). EACCES is treated as a
|
|
294
294
|
* non-critical warning — the user can run `sinapse install` inside their project
|
|
@@ -296,17 +296,17 @@ function isGlobalInstall() {
|
|
|
296
296
|
*/
|
|
297
297
|
function stepSyncIde() {
|
|
298
298
|
if (isGlobalInstall()) {
|
|
299
|
-
verboseLog(`${c.dim}sync:
|
|
299
|
+
verboseLog(`${c.dim}sync:providers pulado (install global — rode 'sinapse install' no seu projeto)${c.reset}`);
|
|
300
300
|
return { ok: true, critical: false, skipped: true };
|
|
301
301
|
}
|
|
302
|
-
verboseLog(`${c.cyan}›${c.reset} Sincronizando
|
|
303
|
-
const result = run('npm', ['run', 'sync:
|
|
302
|
+
verboseLog(`${c.cyan}›${c.reset} Sincronizando adapters para Claude Code e Codex...`);
|
|
303
|
+
const result = run('npm', ['run', 'sync:providers', '--silent']);
|
|
304
304
|
if (result.error) {
|
|
305
305
|
if (result.error.code === 'EACCES' || result.error.code === 'EPERM') {
|
|
306
306
|
warn("Sem permissão pra sincronizar agents. Rode 'sinapse install' dentro do seu projeto.");
|
|
307
307
|
return { ok: false, critical: false };
|
|
308
308
|
}
|
|
309
|
-
warn(`sync:
|
|
309
|
+
warn(`sync:providers falhou ao iniciar: ${result.error.message} — rode 'sinapse install' no projeto pra completar.`);
|
|
310
310
|
return { ok: false, critical: false };
|
|
311
311
|
}
|
|
312
312
|
if (result.status !== 0) {
|
|
@@ -315,7 +315,7 @@ function stepSyncIde() {
|
|
|
315
315
|
warn("Sem permissão pra sincronizar agents (npm global sem write). Rode 'sinapse install' no seu projeto.");
|
|
316
316
|
return { ok: false, critical: false };
|
|
317
317
|
}
|
|
318
|
-
warn(`sync:
|
|
318
|
+
warn(`sync:providers saiu com código ${result.status} — rode 'sinapse install' no projeto pra completar.`);
|
|
319
319
|
return { ok: false, critical: false };
|
|
320
320
|
}
|
|
321
321
|
verboseLog(`${c.green}✓${c.reset} Agents sincronizados`);
|
|
@@ -380,7 +380,7 @@ function stepGenerateSynapse() {
|
|
|
380
380
|
return { ok: true, critical: false, skipped: true };
|
|
381
381
|
}
|
|
382
382
|
// Run in-process (not a subprocess) — faster, and keeps the shared run()
|
|
383
|
-
// sequence (sync:
|
|
383
|
+
// sequence (sync:providers → doctor) intact for callers/tests. The wrapper's
|
|
384
384
|
// generate() is tolerant and never throws; preserve our own exit code since
|
|
385
385
|
// the underlying generator sets process.exitCode=1 on a miss.
|
|
386
386
|
const savedExit = process.exitCode;
|
|
@@ -15,31 +15,64 @@
|
|
|
15
15
|
|
|
16
16
|
const fs = require('fs');
|
|
17
17
|
const path = require('path');
|
|
18
|
-
const { execSync } = require('child_process');
|
|
18
|
+
const { execFileSync, execSync } = require('child_process');
|
|
19
19
|
|
|
20
20
|
const PROJECT_ROOT = path.join(__dirname, '..', '..');
|
|
21
21
|
const MIN_FILE_COUNT = 50;
|
|
22
22
|
|
|
23
|
+
function isNewerVersion(candidate, current) {
|
|
24
|
+
const left = String(candidate).replace(/^v/, '').split(/[.-]/).slice(0, 3).map(Number);
|
|
25
|
+
const right = String(current).replace(/^v/, '').split(/[.-]/).slice(0, 3).map(Number);
|
|
26
|
+
for (let i = 0; i < 3; i += 1) {
|
|
27
|
+
const delta = (left[i] || 0) - (right[i] || 0);
|
|
28
|
+
if (delta !== 0) return delta > 0;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
23
33
|
let passed = true;
|
|
24
34
|
let fileCount = 0;
|
|
25
35
|
|
|
26
36
|
console.log('--- Publish Safety Gate (INS-4.10) ---\n');
|
|
27
37
|
|
|
38
|
+
// Check 0: npm never accepts re-publishing an existing version. Surface the
|
|
39
|
+
// collision before the expensive package scan so release readiness stays
|
|
40
|
+
// honest and operators know that a semantic version bump is still required.
|
|
41
|
+
try {
|
|
42
|
+
const localVersion = require(path.join(PROJECT_ROOT, 'package.json')).version;
|
|
43
|
+
const npmCli = process.env.npm_execpath;
|
|
44
|
+
const npmExecutable = npmCli ? process.execPath : (process.platform === 'win32' ? 'npm.cmd' : 'npm');
|
|
45
|
+
const npmArgs = npmCli
|
|
46
|
+
? [npmCli, 'view', 'sinapse-ai', 'version']
|
|
47
|
+
: ['view', 'sinapse-ai', 'version'];
|
|
48
|
+
const publishedVersion = execFileSync(npmExecutable, npmArgs, {
|
|
49
|
+
encoding: 'utf8',
|
|
50
|
+
cwd: PROJECT_ROOT,
|
|
51
|
+
timeout: 15000,
|
|
52
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
53
|
+
}).trim();
|
|
54
|
+
if (!isNewerVersion(localVersion, publishedVersion)) {
|
|
55
|
+
console.error(`FAIL: local version ${localVersion} is not newer than npm latest ${publishedVersion}.`);
|
|
56
|
+
console.error(' A semantic version bump is required before publishing.');
|
|
57
|
+
passed = false;
|
|
58
|
+
} else {
|
|
59
|
+
console.log(`PASS: local version ${localVersion} is newer than npm latest ${publishedVersion}`);
|
|
60
|
+
}
|
|
61
|
+
} catch (err) {
|
|
62
|
+
console.error(`FAIL: could not verify the npm version boundary: ${err.message}`);
|
|
63
|
+
passed = false;
|
|
64
|
+
}
|
|
65
|
+
|
|
28
66
|
// Check 1: File count threshold via npm pack --dry-run
|
|
29
67
|
try {
|
|
30
|
-
const packOutput = execSync('npm pack --dry-run
|
|
68
|
+
const packOutput = execSync('npm pack --dry-run --json', {
|
|
31
69
|
encoding: 'utf8',
|
|
32
70
|
cwd: PROJECT_ROOT,
|
|
33
71
|
timeout: 30000,
|
|
72
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
73
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
34
74
|
});
|
|
35
|
-
|
|
36
|
-
const fileLines = packOutput.split('\n').filter(line =>
|
|
37
|
-
line.includes('npm notice') && !line.includes('Tarball') && !line.includes('name:') &&
|
|
38
|
-
!line.includes('version:') && !line.includes('filename:') && !line.includes('package size:') &&
|
|
39
|
-
!line.includes('unpacked size:') && !line.includes('shasum:') && !line.includes('integrity:') &&
|
|
40
|
-
!line.includes('total files:'),
|
|
41
|
-
);
|
|
42
|
-
fileCount = fileLines.length;
|
|
75
|
+
fileCount = ((JSON.parse(packOutput)[0] || {}).files || []).length;
|
|
43
76
|
|
|
44
77
|
if (fileCount < MIN_FILE_COUNT) {
|
|
45
78
|
console.error(`FAIL: Package has only ${fileCount} files, expected >= ${MIN_FILE_COUNT}.`);
|
|
@@ -9,7 +9,7 @@ O Codex hoje e alvo de primeira classe no SINAPSE:
|
|
|
9
9
|
|
|
10
10
|
- `AGENTS.md` como contrato operacional do projeto no Codex
|
|
11
11
|
- suporte oficial no installer/sync (`codex` em `ide-configs`)
|
|
12
|
-
- skills nativas via `.
|
|
12
|
+
- skills nativas via `.agents/skills` com estrategia local-first e raiz unica
|
|
13
13
|
- pipeline canonico de greeting/ativacao compartilhado
|
|
14
14
|
- validadores dedicados para detectar drift rapidamente
|
|
15
15
|
- suporte a notify command e hooks de ferramenta em releases recentes do Codex CLI
|
|
@@ -44,7 +44,7 @@ Regra prática para iniciantes:
|
|
|
44
44
|
### Artefatos Codex no projeto
|
|
45
45
|
|
|
46
46
|
- Agentes auxiliares: `.codex/agents/`
|
|
47
|
-
- Skills locais: `.
|
|
47
|
+
- Skills locais: `.agents/skills/sinapse-*/SKILL.md`
|
|
48
48
|
|
|
49
49
|
## Fluxo Operacional Recomendado
|
|
50
50
|
|
|
@@ -65,8 +65,8 @@ Fallback: atalhos definidos em `AGENTS.md` (`@architect`, `/architect`, etc.).
|
|
|
65
65
|
|
|
66
66
|
Este repositorio usa local-first para skills:
|
|
67
67
|
|
|
68
|
-
- preferir `.
|
|
69
|
-
-
|
|
68
|
+
- preferir `.agents/skills` versionado no projeto
|
|
69
|
+
- nao gerar espelhos SINAPSE em `.codex/skills` ou `~/.codex/skills`
|
|
70
70
|
- usar `npm run sync:skills:codex:global` apenas quando quiser instalacao global explicitamente
|
|
71
71
|
|
|
72
72
|
Isso evita menu duplicado no `/skills` e reduz drift entre equipe/CI.
|
|
@@ -97,7 +97,7 @@ Criterio de sucesso:
|
|
|
97
97
|
|
|
98
98
|
- `AGENTS.md` presente e coerente
|
|
99
99
|
- `.codex/agents/*.md` existente
|
|
100
|
-
- `.
|
|
100
|
+
- `.agents/skills/sinapse-*/SKILL.md` existente
|
|
101
101
|
- validadores sem erro
|
|
102
102
|
|
|
103
103
|
## Recursos Recentes do Codex (SINAPSE 4.0)
|
|
@@ -130,7 +130,7 @@ Mitigacao operacional no SINAPSE:
|
|
|
130
130
|
### Skills duplicadas no `/skills`
|
|
131
131
|
|
|
132
132
|
Causa tipica:
|
|
133
|
-
- artefatos duplicados entre
|
|
133
|
+
- artefatos SINAPSE duplicados entre raizes de skills descobertas pelo Codex
|
|
134
134
|
|
|
135
135
|
Correcao:
|
|
136
136
|
- manter local-first neste repo
|
|
@@ -168,4 +168,3 @@ Se houver divergencia entre estes documentos, a ordem de verdade para operacao d
|
|
|
168
168
|
2. scripts reais em `package.json`
|
|
169
169
|
3. este documento
|
|
170
170
|
4. docs de overview
|
|
171
|
-
|