claude-code-arcane 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +100 -0
- package/LICENSE +26 -0
- package/README.md +372 -0
- package/agents/ai/ai-architect.md +80 -0
- package/agents/ai/data-engineer.md +66 -0
- package/agents/ai/data-scientist.md +58 -0
- package/agents/ai/ml-engineer.md +61 -0
- package/agents/business/business-ops-lead.md +64 -0
- package/agents/business/financial-analyst.md +62 -0
- package/agents/business/sales-engineer.md +74 -0
- package/agents/clevel/ceo-advisor.md +64 -0
- package/agents/clevel/cfo-advisor.md +63 -0
- package/agents/clevel/chief-of-staff.md +60 -0
- package/agents/clevel/cmo-advisor.md +67 -0
- package/agents/clevel/coo-advisor.md +79 -0
- package/agents/clevel/cto-advisor.md +72 -0
- package/agents/devops/cloud-architect.md +52 -0
- package/agents/devops/platform-lead.md +72 -0
- package/agents/devops/sre-lead.md +100 -0
- package/agents/engineering/android-engineer.md +78 -0
- package/agents/engineering/backend-architect.md +127 -0
- package/agents/engineering/database-architect.md +138 -0
- package/agents/engineering/flutter-engineer.md +75 -0
- package/agents/engineering/frontend-architect.md +138 -0
- package/agents/engineering/go-engineer.md +102 -0
- package/agents/engineering/ios-engineer.md +76 -0
- package/agents/engineering/node-engineer.md +107 -0
- package/agents/engineering/react-engineer.md +109 -0
- package/agents/engineering/react-native-engineer.md +112 -0
- package/agents/engineering/sql-specialist.md +106 -0
- package/agents/game/accessibility-specialist.md +150 -0
- package/agents/game/ai-programmer.md +95 -0
- package/agents/game/analytics-engineer.md +101 -0
- package/agents/game/art-director.md +64 -0
- package/agents/game/economy-designer.md +143 -0
- package/agents/game/game-designer.md +70 -0
- package/agents/game/gameplay-programmer.md +133 -0
- package/agents/game/lead-programmer.md +62 -0
- package/agents/game/level-designer.md +115 -0
- package/agents/game/live-ops-designer.md +184 -0
- package/agents/game/narrative-director.md +60 -0
- package/agents/game/network-programmer.md +98 -0
- package/agents/game/performance-analyst.md +112 -0
- package/agents/game/qa-lead.md +65 -0
- package/agents/game/qa-tester-gamedev.md +230 -0
- package/agents/game/release-manager.md +65 -0
- package/agents/game/sound-designer.md +85 -0
- package/agents/game/systems-designer.md +157 -0
- package/agents/game/technical-artist.md +108 -0
- package/agents/game/technical-director.md +74 -0
- package/agents/game/ue-replication-specialist.md +143 -0
- package/agents/game/unity-shader-specialist.md +178 -0
- package/agents/game/unity-specialist.md +184 -0
- package/agents/game/unreal-specialist.md +172 -0
- package/agents/game/ux-designer.md +112 -0
- package/agents/game/world-builder.md +111 -0
- package/agents/game/writer.md +104 -0
- package/agents/integrations/api-tools-specialist.md +209 -0
- package/agents/integrations/comms-tools-specialist.md +159 -0
- package/agents/integrations/design-tools-specialist.md +129 -0
- package/agents/integrations/docs-tools-specialist.md +116 -0
- package/agents/integrations/integrations-architect.md +144 -0
- package/agents/integrations/project-tools-specialist.md +129 -0
- package/agents/management/delivery-manager.md +105 -0
- package/agents/management/program-director.md +55 -0
- package/agents/management/project-manager.md +126 -0
- package/agents/management/scrum-master.md +96 -0
- package/agents/marketing/content-lead.md +74 -0
- package/agents/marketing/growth-lead.md +72 -0
- package/agents/marketing/marketing-analyst.md +89 -0
- package/agents/marketing/marketing-director.md +75 -0
- package/agents/marketing/seo-lead.md +80 -0
- package/agents/product/chief-product-officer.md +79 -0
- package/agents/product/design-system-lead.md +76 -0
- package/agents/product/product-manager.md +132 -0
- package/agents/product/ui-lead.md +73 -0
- package/agents/product/ux-lead.md +103 -0
- package/agents/quality/qa-director.md +121 -0
- package/agents/quality/qa-engineer.md +92 -0
- package/agents/quality/security-architect.md +144 -0
- package/agents/regulatory/compliance-officer.md +88 -0
- package/agents/regulatory/quality-manager.md +90 -0
- package/agents/regulatory/regulatory-director.md +92 -0
- package/agents/visualnovel/vn-comfyui-artist.md +91 -0
- package/agents/visualnovel/vn-narrative-director.md +86 -0
- package/agents/visualnovel/vn-producer.md +108 -0
- package/agents/visualnovel/vn-renpy-developer.md +118 -0
- package/agents/visualnovel/vn-scene-director.md +98 -0
- package/agents/visualnovel/vn-ui-designer.md +97 -0
- package/dist/cli.js +2352 -0
- package/docs/SKILLS-CATALOG.md +457 -0
- package/docs/USER-GUIDE.md +543 -0
- package/docs/agent-hierarchy.md +133 -0
- package/docs/coding-standards.md +135 -0
- package/docs/collaborative-design.md +439 -0
- package/docs/context-management.md +200 -0
- package/docs/coordination-rules.md +164 -0
- package/docs/directory-structure.md +156 -0
- package/docs/division-structure.md +135 -0
- package/docs/gamedev/coding-standards.md +184 -0
- package/docs/gates/README.md +169 -0
- package/docs/gates/gamedev-gates.md +509 -0
- package/docs/gates/software-gates.md +449 -0
- package/docs/software/coding-standards.md +165 -0
- package/docs/technical-preferences.md +61 -0
- package/docs/templates/accessibility-requirements.md +331 -0
- package/docs/templates/architecture-decision-record.md +177 -0
- package/docs/templates/architecture-doc-from-code.md +266 -0
- package/docs/templates/architecture-traceability.md +101 -0
- package/docs/templates/changelog-template.md +62 -0
- package/docs/templates/collaborative-protocols/design-agent-protocol.md +157 -0
- package/docs/templates/collaborative-protocols/implementation-agent-protocol.md +160 -0
- package/docs/templates/collaborative-protocols/leadership-agent-protocol.md +181 -0
- package/docs/templates/design-doc-from-implementation.md +204 -0
- package/docs/templates/incident-response.md +135 -0
- package/docs/templates/interaction-pattern-library.md +1089 -0
- package/docs/templates/milestone-definition.md +79 -0
- package/docs/templates/post-mortem.md +69 -0
- package/docs/templates/prd.md +222 -0
- package/docs/templates/project-stage-report.md +218 -0
- package/docs/templates/release-checklist-template.md +125 -0
- package/docs/templates/release-notes.md +103 -0
- package/docs/templates/rfc.md +256 -0
- package/docs/templates/risk-register-entry.md +58 -0
- package/docs/templates/skill-test-spec.md +96 -0
- package/docs/templates/sprint-plan.md +75 -0
- package/docs/templates/technical-design-document.md +98 -0
- package/docs/templates/test-evidence.md +86 -0
- package/docs/templates/test-plan.md +151 -0
- package/docs/templates/ux-spec.md +544 -0
- package/hooks/check-update.sh +82 -0
- package/hooks/detect-division.sh +28 -0
- package/hooks/detect-gaps.sh +230 -0
- package/hooks/log-agent-stop.sh +7 -0
- package/hooks/log-agent.sh +7 -0
- package/hooks/notify.sh +7 -0
- package/hooks/post-compact.sh +7 -0
- package/hooks/pre-compact.sh +7 -0
- package/hooks/session-start.sh +78 -0
- package/hooks/session-stop.sh +7 -0
- package/hooks/statusline.sh +98 -0
- package/hooks/validate-assets.sh +10 -0
- package/hooks/validate-commit.sh +24 -0
- package/hooks/validate-push.sh +21 -0
- package/hooks/validate-secrets.sh +23 -0
- package/hooks/validate-skill-change.sh +19 -0
- package/package.json +63 -0
- package/profiles/agile.yaml +60 -0
- package/profiles/ai.yaml +27 -0
- package/profiles/android-native.yaml +36 -0
- package/profiles/backend-go.yaml +56 -0
- package/profiles/backend-ts.yaml +59 -0
- package/profiles/business.yaml +24 -0
- package/profiles/clevel.yaml +48 -0
- package/profiles/clickup.yaml +21 -0
- package/profiles/core.yaml +83 -0
- package/profiles/database.yaml +28 -0
- package/profiles/design.yaml +30 -0
- package/profiles/docs.yaml +31 -0
- package/profiles/finance.yaml +23 -0
- package/profiles/flutter.yaml +37 -0
- package/profiles/frontend.yaml +39 -0
- package/profiles/infra.yaml +47 -0
- package/profiles/integrations.yaml +23 -0
- package/profiles/ios-native.yaml +37 -0
- package/profiles/jira.yaml +21 -0
- package/profiles/marketing.yaml +64 -0
- package/profiles/mobile.yaml +39 -0
- package/profiles/regulatory.yaml +33 -0
- package/profiles/security.yaml +30 -0
- package/profiles/self-improving.yaml +22 -0
- package/profiles/statusline.yaml +21 -0
- package/profiles/testing.yaml +32 -0
- package/profiles/unity-design.yaml +37 -0
- package/profiles/unity-dev.yaml +44 -0
- package/profiles/visual-novel.yaml +54 -0
- package/rules/ai-code.md +60 -0
- package/rules/api-code.md +41 -0
- package/rules/backend-code.md +35 -0
- package/rules/data-files.md +58 -0
- package/rules/frontend-code.md +35 -0
- package/rules/gamedev/ai-code.md +15 -0
- package/rules/gamedev/design-docs.md +18 -0
- package/rules/gamedev/engine-code.md +41 -0
- package/rules/gamedev/gameplay-code.md +31 -0
- package/rules/gamedev/narrative.md +15 -0
- package/rules/gamedev/network-code.md +15 -0
- package/rules/gamedev/shader-code.md +43 -0
- package/rules/gamedev/ui-code.md +15 -0
- package/rules/gamedev/vn-code.md +37 -0
- package/rules/implementation-workflow.md +48 -0
- package/rules/infra-code.md +47 -0
- package/rules/migration-code.md +41 -0
- package/rules/prototype-code.md +40 -0
- package/rules/test-standards.md +55 -0
- package/skills/ab-test-setup/SKILL.md +99 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +252 -0
- package/skills/ab-test-setup/references/test-templates.md +268 -0
- package/skills/ab-test-setup/scripts/sample_size_calculator.py +337 -0
- package/skills/accessibility/SKILL.md +32 -0
- package/skills/accessibility/references/anti-patterns.md +9 -0
- package/skills/accessibility/references/component-requirements.md +15 -0
- package/skills/accessibility/references/focus-forms-testing.md +31 -0
- package/skills/accessibility/references/wcag-criteria.md +17 -0
- package/skills/ad-creative/SKILL.md +85 -0
- package/skills/ad-creative/references/creative-frameworks.md +253 -0
- package/skills/ad-creative/references/platform-specs.md +170 -0
- package/skills/ad-creative/scripts/ad_copy_validator.py +490 -0
- package/skills/agent-designer/README.md +430 -0
- package/skills/agent-designer/SKILL.md +64 -0
- package/skills/agent-designer/agent_evaluator.py +1223 -0
- package/skills/agent-designer/agent_planner.py +911 -0
- package/skills/agent-designer/assets/sample_execution_logs.json +543 -0
- package/skills/agent-designer/assets/sample_system_requirements.json +57 -0
- package/skills/agent-designer/assets/sample_tool_descriptions.json +545 -0
- package/skills/agent-designer/expected_outputs/sample_agent_architecture.json +488 -0
- package/skills/agent-designer/expected_outputs/sample_evaluation_report.json +570 -0
- package/skills/agent-designer/expected_outputs/sample_tool_schemas.json +416 -0
- package/skills/agent-designer/references/agent_architecture_patterns.md +445 -0
- package/skills/agent-designer/references/evaluation_methodology.md +749 -0
- package/skills/agent-designer/references/tool_design_best_practices.md +470 -0
- package/skills/agent-designer/tool_schema_generator.py +978 -0
- package/skills/agent-protocol/SKILL.md +102 -0
- package/skills/agent-protocol/references/communication-standard.md +115 -0
- package/skills/agent-protocol/references/invocation-patterns.md +247 -0
- package/skills/agent-protocol/references/quality-loop.md +123 -0
- package/skills/agent-workflow-designer/SKILL.md +59 -0
- package/skills/agent-workflow-designer/references/workflow-patterns.md +82 -0
- package/skills/agent-workflow-designer/scripts/workflow_scaffolder.py +113 -0
- package/skills/ai-security/SKILL.md +113 -0
- package/skills/ai-security/references/atlas-coverage.md +150 -0
- package/skills/ai-security/scripts/ai_threat_scanner.py +564 -0
- package/skills/ai-seo/SKILL.md +172 -0
- package/skills/ai-seo/references/ai-search-landscape.md +191 -0
- package/skills/ai-seo/references/content-patterns.md +276 -0
- package/skills/ai-seo/references/monitoring-guide.md +208 -0
- package/skills/ai-seo/references/optimization-playbook.md +58 -0
- package/skills/analytics-tracking/SKILL.md +105 -0
- package/skills/analytics-tracking/references/debugging-playbook.md +224 -0
- package/skills/analytics-tracking/references/event-taxonomy-guide.md +203 -0
- package/skills/analytics-tracking/references/gtm-patterns.md +298 -0
- package/skills/analytics-tracking/scripts/tracking_plan_generator.py +386 -0
- package/skills/android-native-dev/SKILL.md +878 -0
- package/skills/android-native-dev/references/accessibility.md +209 -0
- package/skills/android-native-dev/references/adaptive-screens.md +231 -0
- package/skills/android-native-dev/references/design-style-guide.md +365 -0
- package/skills/android-native-dev/references/functional-requirements.md +229 -0
- package/skills/android-native-dev/references/motion-system.md +203 -0
- package/skills/android-native-dev/references/performance-stability.md +223 -0
- package/skills/android-native-dev/references/privacy-security.md +244 -0
- package/skills/android-native-dev/references/testing.md +554 -0
- package/skills/android-native-dev/references/visual-design.md +246 -0
- package/skills/api-design/SKILL.md +88 -0
- package/skills/api-design/references/anti-patterns.md +14 -0
- package/skills/api-design/references/versioning-deprecation.md +23 -0
- package/skills/api-docs/SKILL.md +101 -0
- package/skills/api-versioning/SKILL.md +51 -0
- package/skills/api-versioning/references/anti-patterns-and-checklist.md +27 -0
- package/skills/api-versioning/references/implementation-by-framework.md +31 -0
- package/skills/app-store-optimization/HOW_TO_USE.md +281 -0
- package/skills/app-store-optimization/SKILL.md +150 -0
- package/skills/app-store-optimization/assets/aso-audit-template.md +268 -0
- package/skills/app-store-optimization/expected_output.json +170 -0
- package/skills/app-store-optimization/references/ab-testing-guide.md +72 -0
- package/skills/app-store-optimization/references/aso-best-practices.md +403 -0
- package/skills/app-store-optimization/references/before-after-examples.md +73 -0
- package/skills/app-store-optimization/references/keyword-research-guide.md +419 -0
- package/skills/app-store-optimization/references/metadata-optimization.md +65 -0
- package/skills/app-store-optimization/references/platform-requirements.md +324 -0
- package/skills/app-store-optimization/sample_input.json +30 -0
- package/skills/app-store-optimization/scripts/ab_test_planner.py +662 -0
- package/skills/app-store-optimization/scripts/aso_scorer.py +482 -0
- package/skills/app-store-optimization/scripts/competitor_analyzer.py +577 -0
- package/skills/app-store-optimization/scripts/keyword_analyzer.py +406 -0
- package/skills/app-store-optimization/scripts/launch_checklist.py +739 -0
- package/skills/app-store-optimization/scripts/localization_helper.py +588 -0
- package/skills/app-store-optimization/scripts/metadata_optimizer.py +581 -0
- package/skills/app-store-optimization/scripts/review_analyzer.py +714 -0
- package/skills/arcane-add/SKILL.md +47 -0
- package/skills/arcane-clean/SKILL.md +45 -0
- package/skills/arcane-list/SKILL.md +46 -0
- package/skills/arcane-remove/SKILL.md +68 -0
- package/skills/arcane-status/SKILL.md +42 -0
- package/skills/architecture-decision/SKILL.md +75 -0
- package/skills/architecture-decision/templates/adr.md +101 -0
- package/skills/architecture-review/SKILL.md +90 -0
- package/skills/art-bible/SKILL.md +88 -0
- package/skills/art-bible/references/anti-patterns.md +8 -0
- package/skills/art-bible/references/checklist.md +17 -0
- package/skills/asset-audit/SKILL.md +95 -0
- package/skills/asset-spec/SKILL.md +72 -0
- package/skills/asset-spec/references/anti-patterns-checklist.md +19 -0
- package/skills/asset-spec/references/spec-output-format.md +34 -0
- package/skills/async-ops/SKILL.md +59 -0
- package/skills/async-ops/references/anti-patterns.md +16 -0
- package/skills/async-ops/references/checklist.md +10 -0
- package/skills/async-ops/references/job-scheduling.md +37 -0
- package/skills/async-ops/references/outbound-webhooks.md +19 -0
- package/skills/atlassian-admin/SKILL.md +121 -0
- package/skills/atlassian-admin/assets/permission_scheme_template.json +173 -0
- package/skills/atlassian-admin/references/security-hardening-guide.md +214 -0
- package/skills/atlassian-admin/references/user-provisioning-checklist.md +177 -0
- package/skills/atlassian-admin/scripts/permission_audit_tool.py +469 -0
- package/skills/atlassian-templates/SKILL.md +128 -0
- package/skills/atlassian-templates/references/governance-framework.md +234 -0
- package/skills/atlassian-templates/references/template-design-patterns.md +252 -0
- package/skills/atlassian-templates/scripts/template_scaffolder.py +418 -0
- package/skills/audit-dev/SKILL.md +43 -0
- package/skills/audit-game/SKILL.md +54 -0
- package/skills/audit-game/references/cross-reference-criteria.md +42 -0
- package/skills/audit-game/references/output-template.md +48 -0
- package/skills/audit-log/SKILL.md +75 -0
- package/skills/auth-strategy/SKILL.md +120 -0
- package/skills/auth-strategy/references/anti-patterns.md +21 -0
- package/skills/aws-solution-architect/SKILL.md +125 -0
- package/skills/aws-solution-architect/assets/expected_output.json +55 -0
- package/skills/aws-solution-architect/assets/sample_input.json +18 -0
- package/skills/aws-solution-architect/references/architecture_patterns.md +535 -0
- package/skills/aws-solution-architect/references/best_practices.md +631 -0
- package/skills/aws-solution-architect/references/service_selection.md +484 -0
- package/skills/aws-solution-architect/scripts/architecture_designer.py +808 -0
- package/skills/aws-solution-architect/scripts/cost_optimizer.py +346 -0
- package/skills/aws-solution-architect/scripts/serverless_stack.py +663 -0
- package/skills/azure-cloud-architect/SKILL.md +128 -0
- package/skills/azure-cloud-architect/references/architecture_patterns.md +413 -0
- package/skills/azure-cloud-architect/references/best_practices.md +337 -0
- package/skills/azure-cloud-architect/references/service_selection.md +250 -0
- package/skills/azure-cloud-architect/scripts/architecture_designer.py +592 -0
- package/skills/azure-cloud-architect/scripts/bicep_generator.py +775 -0
- package/skills/azure-cloud-architect/scripts/cost_optimizer.py +492 -0
- package/skills/backup-strategy/SKILL.md +101 -0
- package/skills/balance-check/SKILL.md +119 -0
- package/skills/board-deck-builder/SKILL.md +64 -0
- package/skills/board-deck-builder/references/deck-frameworks.md +184 -0
- package/skills/board-deck-builder/templates/board-deck-template.md +210 -0
- package/skills/board-meeting/SKILL.md +58 -0
- package/skills/board-meeting/references/meeting-facilitation.md +167 -0
- package/skills/board-meeting/templates/meeting-agenda.md +81 -0
- package/skills/board-meeting/templates/meeting-minutes.md +91 -0
- package/skills/brainstorm/SKILL.md +94 -0
- package/skills/brainstorm/references/next-steps-pipeline.md +13 -0
- package/skills/brainstorm/references/review-mode-gates.md +13 -0
- package/skills/brand-guidelines/SKILL.md +91 -0
- package/skills/brand-guidelines/references/brand-identity-and-framework.md +262 -0
- package/skills/bug-report/SKILL.md +53 -0
- package/skills/bug-triage/SKILL.md +74 -0
- package/skills/business-investment-advisor/SKILL.md +83 -0
- package/skills/business-investment-advisor/references/analysis-frameworks.md +113 -0
- package/skills/caching-strategy/SKILL.md +81 -0
- package/skills/caching-strategy/references/http-headers.md +9 -0
- package/skills/caching-strategy/references/patterns-and-invalidation.md +25 -0
- package/skills/caching-strategy/references/redis-and-client.md +13 -0
- package/skills/caching-strategy/references/ttl-defaults.md +11 -0
- package/skills/campaign-analytics/SKILL.md +93 -0
- package/skills/campaign-analytics/assets/ab_test_template.md +130 -0
- package/skills/campaign-analytics/assets/campaign_report_template.md +141 -0
- package/skills/campaign-analytics/assets/channel_comparison_template.md +158 -0
- package/skills/campaign-analytics/assets/expected_output.json +110 -0
- package/skills/campaign-analytics/assets/sample_campaign_data.json +151 -0
- package/skills/campaign-analytics/references/attribution-models-guide.md +285 -0
- package/skills/campaign-analytics/references/campaign-metrics-benchmarks.md +259 -0
- package/skills/campaign-analytics/references/funnel-optimization-framework.md +302 -0
- package/skills/campaign-analytics/scripts/attribution_analyzer.py +347 -0
- package/skills/campaign-analytics/scripts/campaign_roi_calculator.py +459 -0
- package/skills/campaign-analytics/scripts/funnel_analyzer.py +305 -0
- package/skills/capa-officer/SKILL.md +125 -0
- package/skills/capa-officer/references/effectiveness-verification-guide.md +462 -0
- package/skills/capa-officer/references/rca-methodologies.md +455 -0
- package/skills/capa-officer/scripts/capa_tracker.py +638 -0
- package/skills/capa-officer/scripts/root_cause_analyzer.py +486 -0
- package/skills/cdn-setup/SKILL.md +33 -0
- package/skills/cdn-setup/references/cache-strategy-and-invalidation.md +30 -0
- package/skills/cdn-setup/references/security-and-anti-patterns.md +26 -0
- package/skills/ceo-advisor/SKILL.md +110 -0
- package/skills/ceo-advisor/references/board_governance_investor_relations.md +599 -0
- package/skills/ceo-advisor/references/executive_decision_framework.md +475 -0
- package/skills/ceo-advisor/references/leadership_organizational_culture.md +682 -0
- package/skills/ceo-advisor/scripts/financial_scenario_analyzer.py +451 -0
- package/skills/ceo-advisor/scripts/strategy_analyzer.py +609 -0
- package/skills/cfo-advisor/SKILL.md +81 -0
- package/skills/cfo-advisor/references/cash_management.md +374 -0
- package/skills/cfo-advisor/references/financial_planning.md +500 -0
- package/skills/cfo-advisor/references/fundraising_playbook.md +419 -0
- package/skills/cfo-advisor/scripts/burn_rate_calculator.py +402 -0
- package/skills/cfo-advisor/scripts/fundraising_model.py +490 -0
- package/skills/cfo-advisor/scripts/unit_economics_analyzer.py +529 -0
- package/skills/change-management/SKILL.md +53 -0
- package/skills/change-management/references/adkar-details.md +110 -0
- package/skills/change-management/references/change-playbook.md +308 -0
- package/skills/changelog/SKILL.md +111 -0
- package/skills/check/SKILL.md +22 -0
- package/skills/chief-of-staff/SKILL.md +70 -0
- package/skills/chief-of-staff/references/routing-matrix.md +212 -0
- package/skills/chief-of-staff/references/synthesis-framework.md +201 -0
- package/skills/chro-advisor/SKILL.md +86 -0
- package/skills/chro-advisor/references/comp_frameworks.md +320 -0
- package/skills/chro-advisor/references/org_design.md +333 -0
- package/skills/chro-advisor/references/people_strategy.md +320 -0
- package/skills/chro-advisor/scripts/comp_benchmarker.py +613 -0
- package/skills/chro-advisor/scripts/hiring_plan_modeler.py +572 -0
- package/skills/churn-prevention/SKILL.md +200 -0
- package/skills/churn-prevention/references/cancel-flow-playbook.md +254 -0
- package/skills/churn-prevention/references/dunning-guide.md +276 -0
- package/skills/churn-prevention/references/exit-survey-and-save-offers.md +42 -0
- package/skills/churn-prevention/scripts/churn_impact_calculator.py +199 -0
- package/skills/ci-cd-setup/SKILL.md +66 -0
- package/skills/ci-cd-setup/references/anti-patterns.md +10 -0
- package/skills/ci-cd-setup/references/checklist.md +14 -0
- package/skills/ci-cd-setup/references/secret-and-deploy.md +30 -0
- package/skills/ciso-advisor/SKILL.md +86 -0
- package/skills/ciso-advisor/references/compliance_roadmap.md +370 -0
- package/skills/ciso-advisor/references/incident_response.md +350 -0
- package/skills/ciso-advisor/references/security_strategy.md +321 -0
- package/skills/ciso-advisor/scripts/compliance_tracker.py +781 -0
- package/skills/ciso-advisor/scripts/risk_quantifier.py +690 -0
- package/skills/clickup/SKILL.md +134 -0
- package/skills/cloud-security/SKILL.md +107 -0
- package/skills/cloud-security/references/cspm-checks.md +109 -0
- package/skills/cloud-security/scripts/cloud_posture_check.py +1180 -0
- package/skills/cmo-advisor/SKILL.md +82 -0
- package/skills/cmo-advisor/references/brand_positioning.md +374 -0
- package/skills/cmo-advisor/references/growth_frameworks.md +456 -0
- package/skills/cmo-advisor/references/marketing_org.md +281 -0
- package/skills/cmo-advisor/scripts/growth_model_simulator.py +416 -0
- package/skills/cmo-advisor/scripts/marketing_budget_modeler.py +440 -0
- package/skills/code-review/SKILL.md +66 -0
- package/skills/cold-email/SKILL.md +178 -0
- package/skills/cold-email/references/deliverability-guide.md +225 -0
- package/skills/cold-email/references/follow-up-playbook.md +225 -0
- package/skills/cold-email/references/frameworks.md +217 -0
- package/skills/cold-email/references/voice-and-subject-lines.md +41 -0
- package/skills/cold-email/scripts/email_sequence_analyzer.py +517 -0
- package/skills/commit/SKILL.md +25 -0
- package/skills/company-os/SKILL.md +66 -0
- package/skills/company-os/references/implementation-guide.md +249 -0
- package/skills/company-os/references/os-comparison.md +242 -0
- package/skills/company-os/references/six-components.md +129 -0
- package/skills/competitive-intel/SKILL.md +62 -0
- package/skills/competitive-intel/references/ci-playbook.md +237 -0
- package/skills/competitive-intel/templates/battlecard-template.md +99 -0
- package/skills/competitive-teardown/SKILL.md +169 -0
- package/skills/competitive-teardown/references/analysis-templates.md +203 -0
- package/skills/competitive-teardown/references/competitive-analysis-frameworks.md +107 -0
- package/skills/competitive-teardown/references/data-collection-guide.md +104 -0
- package/skills/competitive-teardown/references/scoring-rubric.md +116 -0
- package/skills/competitive-teardown/scripts/competitive_matrix_builder.py +299 -0
- package/skills/competitor-alternatives/SKILL.md +92 -0
- package/skills/competitor-alternatives/references/content-architecture.md +263 -0
- package/skills/competitor-alternatives/references/templates.md +212 -0
- package/skills/competitor-alternatives/scripts/comparison_matrix_builder.py +365 -0
- package/skills/confluence-expert/SKILL.md +129 -0
- package/skills/confluence-expert/references/macro-cheat-sheet.md +144 -0
- package/skills/confluence-expert/references/space-architecture-patterns.md +246 -0
- package/skills/confluence-expert/references/templates.md +725 -0
- package/skills/confluence-expert/scripts/content_audit_analyzer.py +457 -0
- package/skills/confluence-expert/scripts/space_structure_generator.py +517 -0
- package/skills/consistency-check/SKILL.md +68 -0
- package/skills/content-creator/SKILL.md +52 -0
- package/skills/content-creator/assets/content_calendar_template.md +99 -0
- package/skills/content-creator/examples/brand_voice_analysis_example.md +180 -0
- package/skills/content-creator/examples/seo_optimization_example.md +259 -0
- package/skills/content-creator/references/analytics_guide.md +352 -0
- package/skills/content-creator/references/brand_guidelines.md +219 -0
- package/skills/content-creator/references/content_frameworks.md +551 -0
- package/skills/content-creator/references/social_media_optimization.md +342 -0
- package/skills/content-humanizer/SKILL.md +193 -0
- package/skills/content-humanizer/references/ai-tells-checklist.md +157 -0
- package/skills/content-humanizer/references/voice-techniques.md +168 -0
- package/skills/content-humanizer/scripts/humanizer_scorer.py +504 -0
- package/skills/content-production/SKILL.md +192 -0
- package/skills/content-production/references/content-brief-guide.md +146 -0
- package/skills/content-production/references/optimization-checklist.md +139 -0
- package/skills/content-production/scripts/brand_voice_analyzer.py +197 -0
- package/skills/content-production/scripts/content_scorer.py +464 -0
- package/skills/content-production/scripts/seo_optimizer.py +433 -0
- package/skills/content-production/templates/content-brief-template.md +126 -0
- package/skills/content-strategy/SKILL.md +125 -0
- package/skills/content-strategy/references/content-strategy-reference.md +278 -0
- package/skills/content-strategy/scripts/topic_cluster_mapper.py +243 -0
- package/skills/context-engine/SKILL.md +50 -0
- package/skills/context-engine/references/anonymization-protocol.md +173 -0
- package/skills/context-prime/SKILL.md +25 -0
- package/skills/contract-and-proposal-writer/SKILL.md +126 -0
- package/skills/contract-and-proposal-writer/references/contract-templates.md +276 -0
- package/skills/contract-testing/SKILL.md +42 -0
- package/skills/contract-testing/references/anti-patterns-and-checklist.md +28 -0
- package/skills/contract-testing/references/implementation-details.md +29 -0
- package/skills/coo-advisor/SKILL.md +92 -0
- package/skills/coo-advisor/references/ops_cadence.md +606 -0
- package/skills/coo-advisor/references/process_frameworks.md +459 -0
- package/skills/coo-advisor/references/scaling_playbook.md +465 -0
- package/skills/coo-advisor/scripts/okr_tracker.py +1100 -0
- package/skills/coo-advisor/scripts/ops_efficiency_analyzer.py +1071 -0
- package/skills/copy-editing/SKILL.md +124 -0
- package/skills/copy-editing/references/copy-editing-checklist.md +134 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +376 -0
- package/skills/copy-editing/references/seven-sweeps-framework.md +228 -0
- package/skills/copy-editing/scripts/readability_scorer.py +285 -0
- package/skills/copywriting/SKILL.md +192 -0
- package/skills/copywriting/references/copy-frameworks.md +338 -0
- package/skills/copywriting/references/natural-transitions.md +252 -0
- package/skills/copywriting/references/writing-style-rules.md +63 -0
- package/skills/copywriting/scripts/headline_scorer.py +256 -0
- package/skills/cpo-advisor/SKILL.md +102 -0
- package/skills/cpo-advisor/references/pmf_playbook.md +307 -0
- package/skills/cpo-advisor/references/product_org_design.md +407 -0
- package/skills/cpo-advisor/references/product_strategy.md +454 -0
- package/skills/cpo-advisor/scripts/pmf_scorer.py +600 -0
- package/skills/cpo-advisor/scripts/portfolio_analyzer.py +547 -0
- package/skills/create-epics/SKILL.md +65 -0
- package/skills/create-pr/SKILL.md +26 -0
- package/skills/create-stories/SKILL.md +85 -0
- package/skills/create-test-user/SKILL.md +37 -0
- package/skills/create-ticket/SKILL.md +50 -0
- package/skills/cro-advisor/SKILL.md +86 -0
- package/skills/cro-advisor/references/nrr_playbook.md +380 -0
- package/skills/cro-advisor/references/pricing_strategy.md +417 -0
- package/skills/cro-advisor/references/sales_playbook.md +461 -0
- package/skills/cro-advisor/scripts/churn_analyzer.py +742 -0
- package/skills/cro-advisor/scripts/revenue_forecast_model.py +571 -0
- package/skills/cs-onboard/SKILL.md +60 -0
- package/skills/cs-onboard/references/interview-guide.md +173 -0
- package/skills/cs-onboard/templates/company-context-template.md +144 -0
- package/skills/csp-headers/SKILL.md +53 -0
- package/skills/csp-headers/references/anti-patterns-checklist.md +26 -0
- package/skills/csp-headers/references/implementation.md +18 -0
- package/skills/cto-advisor/SKILL.md +95 -0
- package/skills/cto-advisor/references/architecture_decision_records.md +294 -0
- package/skills/cto-advisor/references/engineering_metrics.md +393 -0
- package/skills/cto-advisor/references/technology_evaluation_framework.md +370 -0
- package/skills/cto-advisor/references/workflows.md +84 -0
- package/skills/cto-advisor/scripts/team_scaling_calculator.py +562 -0
- package/skills/cto-advisor/scripts/tech_debt_analyzer.py +450 -0
- package/skills/culture-architect/SKILL.md +66 -0
- package/skills/culture-architect/references/culture-playbook.md +243 -0
- package/skills/culture-architect/templates/culture-code-template.md +137 -0
- package/skills/customer-success-manager/SKILL.md +97 -0
- package/skills/customer-success-manager/assets/executive_business_review_template.md +209 -0
- package/skills/customer-success-manager/assets/expected_output.json +170 -0
- package/skills/customer-success-manager/assets/onboarding_checklist_template.md +215 -0
- package/skills/customer-success-manager/assets/qbr_template.md +163 -0
- package/skills/customer-success-manager/assets/sample_customer_data.json +314 -0
- package/skills/customer-success-manager/assets/success_plan_template.md +167 -0
- package/skills/customer-success-manager/references/cs-metrics-benchmarks.md +259 -0
- package/skills/customer-success-manager/references/cs-playbooks.md +290 -0
- package/skills/customer-success-manager/references/health-scoring-framework.md +184 -0
- package/skills/customer-success-manager/scripts/churn_risk_analyzer.py +487 -0
- package/skills/customer-success-manager/scripts/expansion_opportunity_scorer.py +414 -0
- package/skills/customer-success-manager/scripts/health_score_calculator.py +438 -0
- package/skills/data-migrations/SKILL.md +113 -0
- package/skills/data-migrations/references/anti-patterns.md +14 -0
- package/skills/data-migrations/references/batching.md +9 -0
- package/skills/data-migrations/references/checklist.md +14 -0
- package/skills/data-migrations/references/expand-contract.md +19 -0
- package/skills/data-operations/SKILL.md +59 -0
- package/skills/data-operations/references/anti-patterns.md +17 -0
- package/skills/data-operations/references/query-optimization.md +37 -0
- package/skills/data-operations/references/seeding.md +38 -0
- package/skills/data-seeding/SKILL.md +96 -0
- package/skills/database/SKILL.md +74 -0
- package/skills/database/references/anti-patterns.md +20 -0
- package/skills/database/references/query-patterns.md +32 -0
- package/skills/database-indexing/SKILL.md +85 -0
- package/skills/database-indexing/references/anti-patterns.md +14 -0
- package/skills/database-indexing/references/checklists.md +23 -0
- package/skills/database-indexing/references/index-types.md +18 -0
- package/skills/database-setup/SKILL.md +109 -0
- package/skills/database-setup/references/indexing-guide.md +126 -0
- package/skills/db-diagram/SKILL.md +87 -0
- package/skills/decision-logger/SKILL.md +59 -0
- package/skills/decision-logger/references/entry-format.md +55 -0
- package/skills/decision-logger/scripts/decision_tracker.py +620 -0
- package/skills/decision-logger/templates/decision-entry.md +63 -0
- package/skills/deploy-check/SKILL.md +87 -0
- package/skills/deploy-staging/SKILL.md +44 -0
- package/skills/deps-audit/SKILL.md +92 -0
- package/skills/design-handoff/SKILL.md +49 -0
- package/skills/design-system/SKILL.md +56 -0
- package/skills/design-system/references/post-design-validation.md +8 -0
- package/skills/design-system/references/section-guidance.md +29 -0
- package/skills/distributed-tracing/SKILL.md +86 -0
- package/skills/doc-gdd/SKILL.md +56 -0
- package/skills/doc-pas/SKILL.md +41 -0
- package/skills/doc-pas/references/examples-and-usage.md +27 -0
- package/skills/doc-pas/references/output-format-template.md +63 -0
- package/skills/doc-rfc/SKILL.md +55 -0
- package/skills/doc-rfc/templates/decision.md +38 -0
- package/skills/doc-rfc/templates/epica.md +68 -0
- package/skills/doc-rfc/templates/hu.md +52 -0
- package/skills/doc-rfc/templates/tarea.md +37 -0
- package/skills/docker-setup/SKILL.md +78 -0
- package/skills/docker-setup/references/anti-patterns.md +10 -0
- package/skills/docker-setup/references/checklists.md +34 -0
- package/skills/docker-setup/references/size-optimization.md +7 -0
- package/skills/docx-generator/SKILL.md +249 -0
- package/skills/docx-generator/assets/styles/academic_styles.xml +250 -0
- package/skills/docx-generator/assets/styles/corporate_styles.xml +284 -0
- package/skills/docx-generator/assets/styles/default_styles.xml +449 -0
- package/skills/docx-generator/assets/xsd/aesthetic-rules.xsd +470 -0
- package/skills/docx-generator/assets/xsd/business-rules.xsd +130 -0
- package/skills/docx-generator/assets/xsd/common-types.xsd +159 -0
- package/skills/docx-generator/assets/xsd/wml-subset.xsd +589 -0
- package/skills/docx-generator/references/cjk_typography.md +357 -0
- package/skills/docx-generator/references/cjk_university_template_guide.md +184 -0
- package/skills/docx-generator/references/comments_guide.md +191 -0
- package/skills/docx-generator/references/design_good_bad_examples.md +829 -0
- package/skills/docx-generator/references/design_principles.md +819 -0
- package/skills/docx-generator/references/openxml_element_order.md +308 -0
- package/skills/docx-generator/references/openxml_encyclopedia_part1.md +4061 -0
- package/skills/docx-generator/references/openxml_encyclopedia_part2.md +2820 -0
- package/skills/docx-generator/references/openxml_encyclopedia_part3.md +3381 -0
- package/skills/docx-generator/references/openxml_namespaces.md +82 -0
- package/skills/docx-generator/references/openxml_units.md +72 -0
- package/skills/docx-generator/references/scenario_a_create.md +284 -0
- package/skills/docx-generator/references/scenario_b_edit_content.md +295 -0
- package/skills/docx-generator/references/scenario_c_apply_template.md +456 -0
- package/skills/docx-generator/references/track_changes_guide.md +200 -0
- package/skills/docx-generator/references/troubleshooting.md +506 -0
- package/skills/docx-generator/references/typography_guide.md +294 -0
- package/skills/docx-generator/references/xsd_validation_guide.md +158 -0
- package/skills/docx-generator/scripts/doc_to_docx.sh +40 -0
- package/skills/docx-generator/scripts/docx_preview.sh +37 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
- package/skills/docx-generator/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
- package/skills/docx-generator/scripts/env_check.sh +196 -0
- package/skills/docx-generator/scripts/setup.ps1 +274 -0
- package/skills/docx-generator/scripts/setup.sh +504 -0
- package/skills/email-sequence/SKILL.md +119 -0
- package/skills/email-sequence/references/email-sequence-playbook.md +209 -0
- package/skills/email-sequence/scripts/sequence_analyzer.py +354 -0
- package/skills/email-template-builder/SKILL.md +93 -0
- package/skills/email-template-builder/references/react-email-templates.md +323 -0
- package/skills/env-sync/SKILL.md +102 -0
- package/skills/error-tracking/SKILL.md +25 -0
- package/skills/error-tracking/references/anti-patterns-and-checklist.md +23 -0
- package/skills/error-tracking/references/operational-details.md +38 -0
- package/skills/error-tracking/references/setup-per-stack.md +24 -0
- package/skills/estimate/SKILL.md +51 -0
- package/skills/estimate/references/complexity-factors.md +30 -0
- package/skills/estimate/references/estimate-template.md +60 -0
- package/skills/executive-mentor/.claude-plugin/plugin.json +13 -0
- package/skills/executive-mentor/SKILL.md +90 -0
- package/skills/executive-mentor/agents/devils-advocate.md +139 -0
- package/skills/executive-mentor/references/board_dynamics.md +263 -0
- package/skills/executive-mentor/references/crisis_playbook.md +173 -0
- package/skills/executive-mentor/references/hard_things.md +256 -0
- package/skills/executive-mentor/scripts/decision_matrix_scorer.py +491 -0
- package/skills/executive-mentor/scripts/stakeholder_mapper.py +547 -0
- package/skills/executive-mentor/skills/board-prep/SKILL.md +76 -0
- package/skills/executive-mentor/skills/challenge/SKILL.md +80 -0
- package/skills/executive-mentor/skills/hard-call/SKILL.md +64 -0
- package/skills/executive-mentor/skills/postmortem/SKILL.md +78 -0
- package/skills/executive-mentor/skills/stress-test/SKILL.md +74 -0
- package/skills/executive-mentor/skills/stress-test/references/patterns-by-type.md +73 -0
- package/skills/experiment-designer/SKILL.md +108 -0
- package/skills/experiment-designer/references/experiment-playbook.md +70 -0
- package/skills/experiment-designer/references/statistics-reference.md +56 -0
- package/skills/experiment-designer/scripts/sample_size_calculator.py +100 -0
- package/skills/fda-consultant-specialist/SKILL.md +102 -0
- package/skills/fda-consultant-specialist/references/device_cybersecurity_guidance.md +695 -0
- package/skills/fda-consultant-specialist/references/fda_capa_requirements.md +718 -0
- package/skills/fda-consultant-specialist/references/fda_submission_guide.md +400 -0
- package/skills/fda-consultant-specialist/references/hipaa_compliance_framework.md +721 -0
- package/skills/fda-consultant-specialist/references/qsr_compliance_requirements.md +753 -0
- package/skills/fda-consultant-specialist/scripts/fda_submission_tracker.py +493 -0
- package/skills/fda-consultant-specialist/scripts/hipaa_risk_assessment.py +626 -0
- package/skills/fda-consultant-specialist/scripts/qsr_compliance_checker.py +618 -0
- package/skills/feature-flags/SKILL.md +98 -0
- package/skills/figma/SKILL.md +124 -0
- package/skills/figma-to-code/SKILL.md +80 -0
- package/skills/figma-to-code/references/checklist-and-output.md +32 -0
- package/skills/figma-to-code/references/stack-detection.md +34 -0
- package/skills/figma-tokens/SKILL.md +55 -0
- package/skills/file-uploads/SKILL.md +95 -0
- package/skills/financial-analyst/SKILL.md +152 -0
- package/skills/financial-analyst/assets/dcf_analysis_template.md +184 -0
- package/skills/financial-analyst/assets/expected_output.json +161 -0
- package/skills/financial-analyst/assets/forecast_report_template.md +177 -0
- package/skills/financial-analyst/assets/sample_financial_data.json +219 -0
- package/skills/financial-analyst/assets/variance_report_template.md +122 -0
- package/skills/financial-analyst/references/financial-ratios-guide.md +376 -0
- package/skills/financial-analyst/references/forecasting-best-practices.md +279 -0
- package/skills/financial-analyst/references/industry-adaptations.md +103 -0
- package/skills/financial-analyst/references/valuation-methodology.md +246 -0
- package/skills/financial-analyst/scripts/budget_variance_analyzer.py +406 -0
- package/skills/financial-analyst/scripts/dcf_valuation.py +449 -0
- package/skills/financial-analyst/scripts/forecast_builder.py +494 -0
- package/skills/financial-analyst/scripts/ratio_calculator.py +432 -0
- package/skills/fix-issue/SKILL.md +19 -0
- package/skills/flutter-dev/SKILL.md +122 -0
- package/skills/flutter-dev/references/animations.md +497 -0
- package/skills/flutter-dev/references/bloc-state.md +281 -0
- package/skills/flutter-dev/references/forms.md +656 -0
- package/skills/flutter-dev/references/gorouter-navigation.md +257 -0
- package/skills/flutter-dev/references/localization.md +510 -0
- package/skills/flutter-dev/references/networking.md +566 -0
- package/skills/flutter-dev/references/performance.md +306 -0
- package/skills/flutter-dev/references/platform-specific.md +417 -0
- package/skills/flutter-dev/references/project-structure.md +274 -0
- package/skills/flutter-dev/references/riverpod-state.md +232 -0
- package/skills/flutter-dev/references/testing.md +364 -0
- package/skills/flutter-dev/references/widget-patterns.md +233 -0
- package/skills/form-cro/SKILL.md +128 -0
- package/skills/form-cro/references/experiments.md +77 -0
- package/skills/form-cro/references/form-cro-playbook.md +271 -0
- package/skills/form-cro/scripts/form_field_analyzer.py +291 -0
- package/skills/form-validation/SKILL.md +75 -0
- package/skills/founder-coach/SKILL.md +57 -0
- package/skills/founder-coach/references/delegation-energy.md +124 -0
- package/skills/founder-coach/references/founder-toolkit.md +296 -0
- package/skills/founder-coach/references/leadership-evolution.md +112 -0
- package/skills/founder-coach/references/leadership-growth.md +178 -0
- package/skills/free-tool-strategy/SKILL.md +167 -0
- package/skills/free-tool-strategy/references/design-and-lead-capture.md +58 -0
- package/skills/free-tool-strategy/references/launch-playbook.md +182 -0
- package/skills/free-tool-strategy/references/tool-types-guide.md +253 -0
- package/skills/free-tool-strategy/scripts/tool_roi_estimator.py +401 -0
- package/skills/frontend-dev/SKILL.md +555 -0
- package/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/references/asset-prompt-guide.md +43 -0
- package/skills/frontend-dev/references/env-setup.md +33 -0
- package/skills/frontend-dev/references/minimax-cli-reference.md +133 -0
- package/skills/frontend-dev/references/minimax-image-guide.md +65 -0
- package/skills/frontend-dev/references/minimax-music-guide.md +216 -0
- package/skills/frontend-dev/references/minimax-tts-guide.md +78 -0
- package/skills/frontend-dev/references/minimax-video-guide.md +82 -0
- package/skills/frontend-dev/references/minimax-voice-catalog.md +686 -0
- package/skills/frontend-dev/references/motion-recipes.md +407 -0
- package/skills/frontend-dev/references/troubleshooting.md +85 -0
- package/skills/frontend-dev/scripts/minimax_image.py +137 -0
- package/skills/frontend-dev/scripts/minimax_music.py +157 -0
- package/skills/frontend-dev/scripts/minimax_tts.py +127 -0
- package/skills/frontend-dev/scripts/minimax_video.py +187 -0
- package/skills/frontend-dev/templates/generator_template.js +223 -0
- package/skills/frontend-dev/templates/viewer.html +599 -0
- package/skills/game-analysis/SKILL.md +51 -0
- package/skills/game-analysis/references/anti-patterns-checklist.md +25 -0
- package/skills/game-analysis/references/balance-report-format.md +21 -0
- package/skills/game-analysis/references/playtest-template.md +28 -0
- package/skills/game-audit/SKILL.md +66 -0
- package/skills/game-docs/SKILL.md +58 -0
- package/skills/game-docs/references/gdd-structure.md +24 -0
- package/skills/game-docs/references/pas-format.md +49 -0
- package/skills/game-docs/references/writing-rules.md +17 -0
- package/skills/gate-check/SKILL.md +93 -0
- package/skills/gcp-cloud-architect/SKILL.md +127 -0
- package/skills/gcp-cloud-architect/references/architecture_patterns.md +512 -0
- package/skills/gcp-cloud-architect/references/best_practices.md +467 -0
- package/skills/gcp-cloud-architect/references/service_selection.md +547 -0
- package/skills/gcp-cloud-architect/scripts/architecture_designer.py +805 -0
- package/skills/gcp-cloud-architect/scripts/cost_optimizer.py +465 -0
- package/skills/gcp-cloud-architect/scripts/deployment_manager.py +835 -0
- package/skills/gdocs/SKILL.md +128 -0
- package/skills/gdpr-dsgvo-expert/SKILL.md +97 -0
- package/skills/gdpr-dsgvo-expert/references/dpia_methodology.md +412 -0
- package/skills/gdpr-dsgvo-expert/references/gdpr_compliance_guide.md +336 -0
- package/skills/gdpr-dsgvo-expert/references/german_bdsg_requirements.md +327 -0
- package/skills/gdpr-dsgvo-expert/scripts/data_subject_rights_tracker.py +541 -0
- package/skills/gdpr-dsgvo-expert/scripts/dpia_generator.py +670 -0
- package/skills/gdpr-dsgvo-expert/scripts/gdpr_compliance_checker.py +443 -0
- package/skills/gdrive/SKILL.md +46 -0
- package/skills/gh-projects/SKILL.md +103 -0
- package/skills/gh-projects/references/graphql-queries.md +207 -0
- package/skills/git-worktree-manager/SKILL.md +86 -0
- package/skills/git-worktree-manager/references/docker-compose-patterns.md +62 -0
- package/skills/git-worktree-manager/references/port-allocation-strategy.md +46 -0
- package/skills/git-worktree-manager/scripts/worktree_cleanup.py +196 -0
- package/skills/git-worktree-manager/scripts/worktree_manager.py +240 -0
- package/skills/go-clean-architecture/SKILL.md +95 -0
- package/skills/go-clean-architecture/references/anti-patterns.md +7 -0
- package/skills/go-clean-architecture/references/checklist.md +13 -0
- package/skills/gsheets/SKILL.md +46 -0
- package/skills/helm-chart-builder/.claude-plugin/plugin.json +13 -0
- package/skills/helm-chart-builder/SKILL.md +122 -0
- package/skills/helm-chart-builder/references/chart-patterns.md +435 -0
- package/skills/helm-chart-builder/references/values-design.md +462 -0
- package/skills/helm-chart-builder/scripts/chart_analyzer.py +542 -0
- package/skills/helm-chart-builder/scripts/values_validator.py +442 -0
- package/skills/help/SKILL.md +75 -0
- package/skills/hotfix/SKILL.md +63 -0
- package/skills/i18n-setup/SKILL.md +79 -0
- package/skills/incident/SKILL.md +107 -0
- package/skills/incident-commander/SKILL.md +133 -0
- package/skills/incident-commander/assets/incident_report_template.md +171 -0
- package/skills/incident-commander/assets/runbook_template.md +289 -0
- package/skills/incident-commander/assets/sample_incident_classification.json +14 -0
- package/skills/incident-commander/assets/sample_incident_data.json +276 -0
- package/skills/incident-commander/assets/sample_incident_pir_data.json +74 -0
- package/skills/incident-commander/assets/sample_timeline_events.json +263 -0
- package/skills/incident-commander/assets/simple_incident.json +6 -0
- package/skills/incident-commander/assets/simple_timeline_events.json +30 -0
- package/skills/incident-commander/expected_outputs/incident_classification_text_output.txt +44 -0
- package/skills/incident-commander/expected_outputs/pir_markdown_output.md +88 -0
- package/skills/incident-commander/expected_outputs/simple_incident_classification.txt +44 -0
- package/skills/incident-commander/expected_outputs/timeline_reconstruction_text_output.txt +110 -0
- package/skills/incident-commander/references/communication_templates.md +591 -0
- package/skills/incident-commander/references/incident-response-framework.md +372 -0
- package/skills/incident-commander/references/incident_severity_matrix.md +292 -0
- package/skills/incident-commander/references/rca_frameworks_guide.md +562 -0
- package/skills/incident-commander/references/reference-information.md +201 -0
- package/skills/incident-commander/references/sla-management-guide.md +566 -0
- package/skills/incident-commander/scripts/incident_classifier.py +914 -0
- package/skills/incident-commander/scripts/incident_timeline_builder.py +742 -0
- package/skills/incident-commander/scripts/pir_generator.py +1638 -0
- package/skills/incident-commander/scripts/postmortem_generator.py +804 -0
- package/skills/incident-commander/scripts/severity_classifier.py +1228 -0
- package/skills/incident-commander/scripts/timeline_reconstructor.py +1007 -0
- package/skills/incident-response/SKILL.md +103 -0
- package/skills/incident-response/references/regulatory-deadlines.md +125 -0
- package/skills/incident-response/scripts/incident_triage.py +768 -0
- package/skills/information-security-manager-iso27001/SKILL.md +120 -0
- package/skills/information-security-manager-iso27001/references/incident-response.md +420 -0
- package/skills/information-security-manager-iso27001/references/iso27001-controls.md +381 -0
- package/skills/information-security-manager-iso27001/references/risk-assessment-guide.md +262 -0
- package/skills/information-security-manager-iso27001/scripts/compliance_checker.py +398 -0
- package/skills/information-security-manager-iso27001/scripts/risk_assessment.py +403 -0
- package/skills/internal-narrative/SKILL.md +68 -0
- package/skills/internal-narrative/references/narrative-frameworks.md +211 -0
- package/skills/internal-narrative/templates/all-hands-template.md +103 -0
- package/skills/intl-expansion/SKILL.md +72 -0
- package/skills/intl-expansion/references/market-entry-playbook.md +138 -0
- package/skills/intl-expansion/references/regional-guide.md +144 -0
- package/skills/ios-application-dev/SKILL.md +172 -0
- package/skills/ios-application-dev/references/accessibility.md +259 -0
- package/skills/ios-application-dev/references/graphics-animation.md +350 -0
- package/skills/ios-application-dev/references/layout-system.md +199 -0
- package/skills/ios-application-dev/references/metal-shader.md +178 -0
- package/skills/ios-application-dev/references/navigation-patterns.md +175 -0
- package/skills/ios-application-dev/references/swift-coding-standards.md +757 -0
- package/skills/ios-application-dev/references/swiftui-design-guidelines.md +1167 -0
- package/skills/ios-application-dev/references/system-integration.md +401 -0
- package/skills/ios-application-dev/references/uikit-components.md +297 -0
- package/skills/isms-audit-expert/SKILL.md +108 -0
- package/skills/isms-audit-expert/references/cloud-security-audit.md +226 -0
- package/skills/isms-audit-expert/references/iso27001-audit-methodology.md +260 -0
- package/skills/isms-audit-expert/references/security-control-testing.md +276 -0
- package/skills/isms-audit-expert/scripts/isms_audit_scheduler.py +279 -0
- package/skills/jira-tickets/SKILL.md +52 -0
- package/skills/jira-tickets/references/states-epics-sprints.md +43 -0
- package/skills/jira-tickets/references/team-data.md +51 -0
- package/skills/job-scheduling/SKILL.md +107 -0
- package/skills/jwt-strategy/SKILL.md +74 -0
- package/skills/jwt-strategy/references/anti-patterns.md +16 -0
- package/skills/jwt-strategy/references/checklist.md +13 -0
- package/skills/jwt-strategy/references/implementation.md +21 -0
- package/skills/kickoff/SKILL.md +180 -0
- package/skills/launch-strategy/SKILL.md +72 -0
- package/skills/launch-strategy/references/launch-frameworks-and-checklists.md +317 -0
- package/skills/launch-strategy/scripts/launch_readiness_scorer.py +301 -0
- package/skills/llm-cost-optimizer/SKILL.md +194 -0
- package/skills/local-database-setup/SKILL.md +48 -0
- package/skills/logging-setup/SKILL.md +79 -0
- package/skills/logging-setup/references/anti-patterns.md +7 -0
- package/skills/logging-setup/references/checklist.md +14 -0
- package/skills/logging-setup/references/pii-audit-access.md +25 -0
- package/skills/ma-playbook/SKILL.md +72 -0
- package/skills/ma-playbook/references/due-diligence-checklist.md +148 -0
- package/skills/ma-playbook/references/integration-playbook.md +145 -0
- package/skills/map-systems/SKILL.md +82 -0
- package/skills/map-systems/references/dependency-layers-priorities.md +36 -0
- package/skills/map-systems/references/implicit-systems.md +13 -0
- package/skills/marketing-context/SKILL.md +167 -0
- package/skills/marketing-context/references/context-template.md +64 -0
- package/skills/marketing-context/scripts/context_validator.py +219 -0
- package/skills/marketing-context/templates/marketing-context-template.md +133 -0
- package/skills/marketing-demand-acquisition/SKILL.md +124 -0
- package/skills/marketing-demand-acquisition/references/attribution-guide.md +217 -0
- package/skills/marketing-demand-acquisition/references/campaign-templates.md +221 -0
- package/skills/marketing-demand-acquisition/references/hubspot-workflows.md +168 -0
- package/skills/marketing-demand-acquisition/references/international-playbooks.md +200 -0
- package/skills/marketing-demand-acquisition/scripts/calculate_cac.py +101 -0
- package/skills/marketing-ideas/SKILL.md +83 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +347 -0
- package/skills/marketing-ops/SKILL.md +188 -0
- package/skills/marketing-ops/references/routing-matrix.md +37 -0
- package/skills/marketing-ops/scripts/campaign_tracker.py +156 -0
- package/skills/marketing-psychology/SKILL.md +121 -0
- package/skills/marketing-psychology/references/mental-models-catalog.md +397 -0
- package/skills/marketing-strategy-pmm/SKILL.md +130 -0
- package/skills/marketing-strategy-pmm/references/international-gtm.md +401 -0
- package/skills/marketing-strategy-pmm/references/launch-checklists.md +333 -0
- package/skills/marketing-strategy-pmm/references/messaging-templates.md +446 -0
- package/skills/marketing-strategy-pmm/references/positioning-frameworks.md +279 -0
- package/skills/mcp-server-builder/SKILL.md +109 -0
- package/skills/mcp-server-builder/references/openapi-extraction-guide.md +34 -0
- package/skills/mcp-server-builder/references/python-server-template.md +22 -0
- package/skills/mcp-server-builder/references/typescript-server-template.md +19 -0
- package/skills/mcp-server-builder/references/validation-checklist.md +30 -0
- package/skills/mcp-server-builder/scripts/mcp_validator.py +186 -0
- package/skills/mcp-server-builder/scripts/openapi_to_mcp.py +284 -0
- package/skills/mdr-745-specialist/SKILL.md +110 -0
- package/skills/mdr-745-specialist/references/clinical-evidence-requirements.md +303 -0
- package/skills/mdr-745-specialist/references/mdr-classification-guide.md +289 -0
- package/skills/mdr-745-specialist/references/technical-documentation-templates.md +355 -0
- package/skills/mdr-745-specialist/scripts/mdr_gap_analyzer.py +511 -0
- package/skills/meeting-analyzer/SKILL.md +99 -0
- package/skills/meeting-analyzer/references/analysis-modules.md +92 -0
- package/skills/meeting-to-tasks/SKILL.md +63 -0
- package/skills/mfa-setup/SKILL.md +111 -0
- package/skills/mfa-setup/references/anti-patterns.md +15 -0
- package/skills/mfa-setup/references/checklist.md +17 -0
- package/skills/mfa-setup/references/rate-limiting.md +10 -0
- package/skills/mfa-setup/references/role-rules.md +9 -0
- package/skills/mfa-setup/references/schema-db.md +5 -0
- package/skills/milestone-review/SKILL.md +46 -0
- package/skills/monorepo-setup/SKILL.md +66 -0
- package/skills/monorepo-setup/references/anti-patterns-and-checklist.md +27 -0
- package/skills/ms365-tenant-manager/SKILL.md +104 -0
- package/skills/ms365-tenant-manager/expected_output.json +86 -0
- package/skills/ms365-tenant-manager/references/powershell-templates.md +704 -0
- package/skills/ms365-tenant-manager/references/security-policies.md +357 -0
- package/skills/ms365-tenant-manager/references/troubleshooting.md +411 -0
- package/skills/ms365-tenant-manager/references/workflow-scripts.md +145 -0
- package/skills/ms365-tenant-manager/sample_input.json +21 -0
- package/skills/ms365-tenant-manager/scripts/powershell_generator.py +430 -0
- package/skills/ms365-tenant-manager/scripts/tenant_setup.py +447 -0
- package/skills/ms365-tenant-manager/scripts/user_management.py +447 -0
- package/skills/oauth-setup/SKILL.md +92 -0
- package/skills/observability/SKILL.md +88 -0
- package/skills/observability-ops/SKILL.md +42 -0
- package/skills/observability-ops/references/anti-patterns.md +14 -0
- package/skills/observability-ops/references/slo-sli-framework.md +44 -0
- package/skills/observability-ops/references/tracing-setup.md +35 -0
- package/skills/observability-setup/SKILL.md +43 -0
- package/skills/observability-setup/references/conventions-and-anti-patterns.md +32 -0
- package/skills/observability-setup/references/stack-setup-details.md +23 -0
- package/skills/onboard/SKILL.md +123 -0
- package/skills/onboarding-cro/SKILL.md +149 -0
- package/skills/onboarding-cro/references/experiments.md +89 -0
- package/skills/onboarding-cro/scripts/activation_funnel_analyzer.py +217 -0
- package/skills/optimize/SKILL.md +27 -0
- package/skills/org-health-diagnostic/SKILL.md +79 -0
- package/skills/org-health-diagnostic/references/health-benchmarks.md +217 -0
- package/skills/org-health-diagnostic/scripts/health_scorer.py +585 -0
- package/skills/owasp-top10-check/SKILL.md +110 -0
- package/skills/owasp-top10-check/references/anti-patterns.md +19 -0
- package/skills/owasp-top10-check/references/educabot-specifics.md +6 -0
- package/skills/owasp-top10-check/references/tools.md +9 -0
- package/skills/page-cro/SKILL.md +160 -0
- package/skills/page-cro/references/experiments.md +71 -0
- package/skills/page-cro/scripts/conversion_audit.py +427 -0
- package/skills/paid-ads/SKILL.md +162 -0
- package/skills/paid-ads/references/ad-copy-templates.md +200 -0
- package/skills/paid-ads/references/audience-targeting.md +234 -0
- package/skills/paid-ads/references/campaign-structure.md +103 -0
- package/skills/paid-ads/references/platform-setup-checklists.md +269 -0
- package/skills/paid-ads/scripts/roas_calculator.py +304 -0
- package/skills/patch-notes/SKILL.md +51 -0
- package/skills/paywall-upgrade-cro/SKILL.md +189 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +78 -0
- package/skills/pdf-generator/SKILL.md +181 -0
- package/skills/pdf-generator/design/design.md +381 -0
- package/skills/pdf-generator/scripts/cover.py +1579 -0
- package/skills/pdf-generator/scripts/fill_inspect.py +200 -0
- package/skills/pdf-generator/scripts/fill_write.py +242 -0
- package/skills/pdf-generator/scripts/make.sh +491 -0
- package/skills/pdf-generator/scripts/merge.py +112 -0
- package/skills/pdf-generator/scripts/palette.py +521 -0
- package/skills/pdf-generator/scripts/reformat_parse.py +374 -0
- package/skills/pdf-generator/scripts/render_body.py +1052 -0
- package/skills/pdf-generator/scripts/render_cover.js +111 -0
- package/skills/perf-profile/SKILL.md +82 -0
- package/skills/performance/SKILL.md +37 -0
- package/skills/performance/references/anti-patterns.md +25 -0
- package/skills/performance/references/cache-strategy.md +48 -0
- package/skills/performance/references/rate-limit-config.md +48 -0
- package/skills/performance-test/SKILL.md +87 -0
- package/skills/playtest-report/SKILL.md +45 -0
- package/skills/playwright-pro/.mcp.json +27 -0
- package/skills/playwright-pro/CLAUDE.md +84 -0
- package/skills/playwright-pro/LICENSE +21 -0
- package/skills/playwright-pro/SKILL.md +91 -0
- package/skills/playwright-pro/agents/migration-planner.md +121 -0
- package/skills/playwright-pro/agents/test-architect.md +105 -0
- package/skills/playwright-pro/agents/test-debugger.md +117 -0
- package/skills/playwright-pro/hooks/detect-playwright.sh +23 -0
- package/skills/playwright-pro/hooks/hooks.json +25 -0
- package/skills/playwright-pro/hooks/validate-test.sh +58 -0
- package/skills/playwright-pro/references/assertions.md +89 -0
- package/skills/playwright-pro/references/common-pitfalls.md +137 -0
- package/skills/playwright-pro/references/fixtures.md +121 -0
- package/skills/playwright-pro/references/flaky-tests.md +56 -0
- package/skills/playwright-pro/references/golden-rules.md +12 -0
- package/skills/playwright-pro/references/locators.md +77 -0
- package/skills/playwright-pro/settings.json +8 -0
- package/skills/playwright-pro/skills/browserstack/SKILL.md +169 -0
- package/skills/playwright-pro/skills/fix/SKILL.md +114 -0
- package/skills/playwright-pro/skills/fix/flaky-taxonomy.md +134 -0
- package/skills/playwright-pro/skills/generate/SKILL.md +145 -0
- package/skills/playwright-pro/skills/generate/patterns.md +163 -0
- package/skills/playwright-pro/skills/init/SKILL.md +168 -0
- package/skills/playwright-pro/skills/migrate/SKILL.md +136 -0
- package/skills/playwright-pro/skills/migrate/cypress-mapping.md +79 -0
- package/skills/playwright-pro/skills/migrate/selenium-mapping.md +94 -0
- package/skills/playwright-pro/skills/report/SKILL.md +127 -0
- package/skills/playwright-pro/skills/review/SKILL.md +103 -0
- package/skills/playwright-pro/skills/review/anti-patterns.md +182 -0
- package/skills/playwright-pro/skills/testrail/SKILL.md +130 -0
- package/skills/playwright-pro/templates/README.md +123 -0
- package/skills/playwright-pro/templates/accessibility/color-contrast.md +162 -0
- package/skills/playwright-pro/templates/accessibility/keyboard-navigation.md +149 -0
- package/skills/playwright-pro/templates/accessibility/screen-reader.md +159 -0
- package/skills/playwright-pro/templates/api/auth-headers.md +148 -0
- package/skills/playwright-pro/templates/api/error-responses.md +157 -0
- package/skills/playwright-pro/templates/api/graphql.md +174 -0
- package/skills/playwright-pro/templates/api/rate-limiting.md +152 -0
- package/skills/playwright-pro/templates/api/rest-crud.md +152 -0
- package/skills/playwright-pro/templates/auth/login.md +119 -0
- package/skills/playwright-pro/templates/auth/logout.md +112 -0
- package/skills/playwright-pro/templates/auth/mfa.md +125 -0
- package/skills/playwright-pro/templates/auth/password-reset.md +129 -0
- package/skills/playwright-pro/templates/auth/rbac.md +132 -0
- package/skills/playwright-pro/templates/auth/remember-me.md +127 -0
- package/skills/playwright-pro/templates/auth/session-timeout.md +113 -0
- package/skills/playwright-pro/templates/auth/sso.md +115 -0
- package/skills/playwright-pro/templates/checkout/add-to-cart.md +112 -0
- package/skills/playwright-pro/templates/checkout/apply-coupon.md +123 -0
- package/skills/playwright-pro/templates/checkout/order-confirm.md +108 -0
- package/skills/playwright-pro/templates/checkout/order-history.md +119 -0
- package/skills/playwright-pro/templates/checkout/payment.md +148 -0
- package/skills/playwright-pro/templates/checkout/update-quantity.md +125 -0
- package/skills/playwright-pro/templates/crud/bulk-operations.md +129 -0
- package/skills/playwright-pro/templates/crud/create.md +118 -0
- package/skills/playwright-pro/templates/crud/delete.md +116 -0
- package/skills/playwright-pro/templates/crud/read.md +117 -0
- package/skills/playwright-pro/templates/crud/soft-delete.md +113 -0
- package/skills/playwright-pro/templates/crud/update.md +129 -0
- package/skills/playwright-pro/templates/dashboard/chart-rendering.md +131 -0
- package/skills/playwright-pro/templates/dashboard/data-loading.md +128 -0
- package/skills/playwright-pro/templates/dashboard/date-range-filter.md +136 -0
- package/skills/playwright-pro/templates/dashboard/export.md +146 -0
- package/skills/playwright-pro/templates/dashboard/realtime-updates.md +143 -0
- package/skills/playwright-pro/templates/forms/autosave.md +135 -0
- package/skills/playwright-pro/templates/forms/conditional-fields.md +120 -0
- package/skills/playwright-pro/templates/forms/file-upload.md +136 -0
- package/skills/playwright-pro/templates/forms/multi-step.md +137 -0
- package/skills/playwright-pro/templates/forms/single-step.md +124 -0
- package/skills/playwright-pro/templates/forms/validation.md +141 -0
- package/skills/playwright-pro/templates/notifications/in-app.md +125 -0
- package/skills/playwright-pro/templates/notifications/notification-center.md +128 -0
- package/skills/playwright-pro/templates/notifications/toast-messages.md +139 -0
- package/skills/playwright-pro/templates/onboarding/email-verification.md +118 -0
- package/skills/playwright-pro/templates/onboarding/first-time-setup.md +130 -0
- package/skills/playwright-pro/templates/onboarding/registration.md +131 -0
- package/skills/playwright-pro/templates/onboarding/welcome-tour.md +128 -0
- package/skills/playwright-pro/templates/search/basic-search.md +118 -0
- package/skills/playwright-pro/templates/search/empty-state.md +109 -0
- package/skills/playwright-pro/templates/search/filters.md +128 -0
- package/skills/playwright-pro/templates/search/pagination.md +123 -0
- package/skills/playwright-pro/templates/search/sorting.md +131 -0
- package/skills/playwright-pro/templates/settings/account-delete.md +136 -0
- package/skills/playwright-pro/templates/settings/notification-prefs.md +139 -0
- package/skills/playwright-pro/templates/settings/password-change.md +143 -0
- package/skills/playwright-pro/templates/settings/profile-update.md +130 -0
- package/skills/popup-cro/SKILL.md +142 -0
- package/skills/popup-cro/references/experiments.md +88 -0
- package/skills/popup-cro/references/popup-cro-playbook.md +261 -0
- package/skills/postman/SKILL.md +79 -0
- package/skills/pptx-generator/SKILL.md +246 -0
- package/skills/pptx-generator/references/design-system.md +392 -0
- package/skills/pptx-generator/references/editing.md +162 -0
- package/skills/pptx-generator/references/pitfalls.md +112 -0
- package/skills/pptx-generator/references/pptxgenjs.md +420 -0
- package/skills/pptx-generator/references/slide-types.md +413 -0
- package/skills/pricing-strategy/SKILL.md +101 -0
- package/skills/pricing-strategy/references/pricing-models.md +194 -0
- package/skills/pricing-strategy/references/pricing-page-playbook.md +221 -0
- package/skills/pricing-strategy/scripts/pricing_modeler.py +283 -0
- package/skills/product-analytics/SKILL.md +151 -0
- package/skills/product-analytics/references/dashboard-templates.md +66 -0
- package/skills/product-analytics/references/metrics-frameworks.md +84 -0
- package/skills/product-analytics/scripts/metrics_calculator.py +195 -0
- package/skills/product-discovery/SKILL.md +118 -0
- package/skills/product-discovery/references/discovery-frameworks.md +72 -0
- package/skills/product-discovery/scripts/assumption_mapper.py +123 -0
- package/skills/product-manager-toolkit/SKILL.md +121 -0
- package/skills/product-manager-toolkit/assets/prd_template.md +132 -0
- package/skills/product-manager-toolkit/assets/rice_input_template.csv +4 -0
- package/skills/product-manager-toolkit/references/frameworks.md +559 -0
- package/skills/product-manager-toolkit/references/input-output-examples.md +156 -0
- package/skills/product-manager-toolkit/references/prd_templates.md +317 -0
- package/skills/product-manager-toolkit/scripts/customer_interview_analyzer.py +452 -0
- package/skills/product-manager-toolkit/scripts/rice_prioritizer.py +296 -0
- package/skills/product-spec/SKILL.md +65 -0
- package/skills/product-strategist/SKILL.md +122 -0
- package/skills/product-strategist/assets/okr_template.md +106 -0
- package/skills/product-strategist/references/examples/sample_growth_okrs.json +366 -0
- package/skills/product-strategist/references/okr_framework.md +328 -0
- package/skills/product-strategist/references/strategy_types.md +320 -0
- package/skills/product-strategist/scripts/okr_cascade_generator.py +592 -0
- package/skills/programmatic-seo/SKILL.md +156 -0
- package/skills/programmatic-seo/references/playbooks.md +72 -0
- package/skills/programmatic-seo/scripts/url_pattern_generator.py +194 -0
- package/skills/prompt-engineer-toolkit/README.md +51 -0
- package/skills/prompt-engineer-toolkit/SKILL.md +136 -0
- package/skills/prompt-engineer-toolkit/references/evaluation-rubric.md +14 -0
- package/skills/prompt-engineer-toolkit/references/prompt-templates.md +105 -0
- package/skills/prompt-engineer-toolkit/references/technique-guide.md +25 -0
- package/skills/prompt-engineer-toolkit/scripts/prompt_tester.py +239 -0
- package/skills/prompt-engineer-toolkit/scripts/prompt_versioner.py +235 -0
- package/skills/prototype/SKILL.md +54 -0
- package/skills/qa-plan/SKILL.md +77 -0
- package/skills/qms-audit-expert/SKILL.md +116 -0
- package/skills/qms-audit-expert/references/iso13485-audit-guide.md +388 -0
- package/skills/qms-audit-expert/references/nonconformity-classification.md +221 -0
- package/skills/qms-audit-expert/scripts/audit_schedule_optimizer.py +420 -0
- package/skills/quality-documentation-manager/SKILL.md +140 -0
- package/skills/quality-documentation-manager/references/21cfr11-compliance-guide.md +398 -0
- package/skills/quality-documentation-manager/references/document-control-procedures.md +340 -0
- package/skills/quality-documentation-manager/scripts/document_validator.py +646 -0
- package/skills/quality-documentation-manager/scripts/document_version_control.py +466 -0
- package/skills/quality-manager-qmr/SKILL.md +129 -0
- package/skills/quality-manager-qmr/references/management-review-guide.md +378 -0
- package/skills/quality-manager-qmr/references/quality-kpi-framework.md +296 -0
- package/skills/quality-manager-qmr/scripts/management_review_tracker.py +580 -0
- package/skills/quality-manager-qmr/scripts/quality_effectiveness_monitor.py +481 -0
- package/skills/quality-manager-qms-iso13485/SKILL.md +129 -0
- package/skills/quality-manager-qms-iso13485/references/iso13485-clause-requirements.md +726 -0
- package/skills/quality-manager-qms-iso13485/references/qms-process-templates.md +876 -0
- package/skills/quality-manager-qms-iso13485/scripts/qms_audit_checklist.py +886 -0
- package/skills/query-optimization/SKILL.md +107 -0
- package/skills/quick-design/SKILL.md +47 -0
- package/skills/rag-architect/SKILL.md +117 -0
- package/skills/rag-architect/references/chunking_strategies_comparison.md +287 -0
- package/skills/rag-architect/references/embedding_model_benchmark.md +338 -0
- package/skills/rag-architect/references/rag_evaluation_framework.md +431 -0
- package/skills/rag-architect/scripts/chunking_optimizer.py +787 -0
- package/skills/rag-architect/scripts/rag_pipeline_designer.py +680 -0
- package/skills/rag-architect/scripts/retrieval_evaluator.py +578 -0
- package/skills/rate-limiting/SKILL.md +114 -0
- package/skills/rbac-abac/SKILL.md +70 -0
- package/skills/rbac-abac/references/anti-patterns.md +14 -0
- package/skills/rbac-abac/references/checklist.md +13 -0
- package/skills/rbac-abac/references/schema-jwt-cache.md +27 -0
- package/skills/react-native-dev/SKILL.md +139 -0
- package/skills/react-native-dev/references/animations.md +254 -0
- package/skills/react-native-dev/references/components.md +124 -0
- package/skills/react-native-dev/references/engineering.md +527 -0
- package/skills/react-native-dev/references/forms.md +300 -0
- package/skills/react-native-dev/references/native-capabilities.md +163 -0
- package/skills/react-native-dev/references/navigation.md +271 -0
- package/skills/react-native-dev/references/networking.md +346 -0
- package/skills/react-native-dev/references/performance.md +215 -0
- package/skills/react-native-dev/references/state-management.md +230 -0
- package/skills/react-native-dev/references/styling.md +117 -0
- package/skills/react-native-dev/references/testing.md +342 -0
- package/skills/read-replicas/SKILL.md +46 -0
- package/skills/read-replicas/references/anti-patterns-checklist.md +26 -0
- package/skills/read-replicas/references/consistency-connection.md +24 -0
- package/skills/read-replicas/references/ha-dr.md +18 -0
- package/skills/red-team/SKILL.md +120 -0
- package/skills/red-team/references/attack-path-methodology.md +135 -0
- package/skills/red-team/scripts/engagement_planner.py +420 -0
- package/skills/referral-program/SKILL.md +189 -0
- package/skills/referral-program/references/loop-and-incentives.md +81 -0
- package/skills/referral-program/references/measurement-framework.md +199 -0
- package/skills/referral-program/references/program-mechanics.md +212 -0
- package/skills/referral-program/scripts/referral_roi_calculator.py +420 -0
- package/skills/regression-suite/SKILL.md +89 -0
- package/skills/regulatory-affairs-head/SKILL.md +117 -0
- package/skills/regulatory-affairs-head/references/eu-mdr-submission-guide.md +95 -0
- package/skills/regulatory-affairs-head/references/fda-submission-guide.md +127 -0
- package/skills/regulatory-affairs-head/references/global-regulatory-pathways.md +283 -0
- package/skills/regulatory-affairs-head/references/iso-regulatory-requirements.md +363 -0
- package/skills/regulatory-affairs-head/scripts/regulatory_pathway_analyzer.py +557 -0
- package/skills/regulatory-affairs-head/scripts/regulatory_tracker.py +199 -0
- package/skills/release/SKILL.md +89 -0
- package/skills/release-announce/SKILL.md +64 -0
- package/skills/release-checklist/SKILL.md +63 -0
- package/skills/research-summarizer/SKILL.md +94 -0
- package/skills/research-summarizer/references/citation-formats.md +105 -0
- package/skills/research-summarizer/references/summary-templates.md +120 -0
- package/skills/research-summarizer/scripts/extract_citations.py +309 -0
- package/skills/research-summarizer/scripts/format_summary.py +244 -0
- package/skills/retrospective/SKILL.md +72 -0
- package/skills/revenue-operations/SKILL.md +101 -0
- package/skills/revenue-operations/assets/expected_output.json +117 -0
- package/skills/revenue-operations/assets/forecast_report_template.md +149 -0
- package/skills/revenue-operations/assets/gtm_dashboard_template.md +215 -0
- package/skills/revenue-operations/assets/pipeline_review_template.md +138 -0
- package/skills/revenue-operations/assets/sample_forecast_data.json +23 -0
- package/skills/revenue-operations/assets/sample_gtm_data.json +24 -0
- package/skills/revenue-operations/assets/sample_pipeline_data.json +160 -0
- package/skills/revenue-operations/references/gtm-efficiency-benchmarks.md +257 -0
- package/skills/revenue-operations/references/pipeline-management-framework.md +292 -0
- package/skills/revenue-operations/references/revops-metrics-guide.md +304 -0
- package/skills/revenue-operations/scripts/forecast_accuracy_tracker.py +531 -0
- package/skills/revenue-operations/scripts/gtm_efficiency_calculator.py +658 -0
- package/skills/revenue-operations/scripts/pipeline_analyzer.py +496 -0
- package/skills/reverse-document/SKILL.md +70 -0
- package/skills/risk-management-specialist/SKILL.md +125 -0
- package/skills/risk-management-specialist/references/iso14971-implementation-guide.md +468 -0
- package/skills/risk-management-specialist/references/risk-analysis-methods.md +415 -0
- package/skills/risk-management-specialist/references/risk-assessment-templates.md +77 -0
- package/skills/risk-management-specialist/scripts/fmea_analyzer.py +442 -0
- package/skills/risk-management-specialist/scripts/risk_matrix_calculator.py +419 -0
- package/skills/roadmap-communicator/SKILL.md +96 -0
- package/skills/roadmap-communicator/references/communication-templates.md +63 -0
- package/skills/roadmap-communicator/references/roadmap-templates.md +44 -0
- package/skills/roadmap-communicator/scripts/changelog_generator.py +151 -0
- package/skills/rollback-strategy/SKILL.md +80 -0
- package/skills/rollback-strategy/references/anti-patterns.md +14 -0
- package/skills/rollback-strategy/references/canary-auto-rollback.md +17 -0
- package/skills/rollback-strategy/references/communication-protocol.md +6 -0
- package/skills/rollback-strategy/references/mobile-rollback.md +10 -0
- package/skills/rollback-strategy/references/pre-deploy-checklist.md +15 -0
- package/skills/rollback-strategy/references/runbook-commands.md +147 -0
- package/skills/run-migrations/SKILL.md +67 -0
- package/skills/runbooks/SKILL.md +57 -0
- package/skills/runbooks/references/anti-patterns.md +6 -0
- package/skills/runbooks/references/checklist.md +13 -0
- package/skills/runbooks/references/lifecycle.md +14 -0
- package/skills/runbooks/references/writing-principles.md +9 -0
- package/skills/runbooks/templates/runbook.md +80 -0
- package/skills/saas-metrics-coach/SKILL.md +156 -0
- package/skills/saas-metrics-coach/assets/input-template.md +29 -0
- package/skills/saas-metrics-coach/references/benchmarks.md +101 -0
- package/skills/saas-metrics-coach/references/formulas.md +103 -0
- package/skills/saas-metrics-coach/scripts/metrics_calculator.py +217 -0
- package/skills/saas-metrics-coach/scripts/quick_ratio_calculator.py +173 -0
- package/skills/saas-metrics-coach/scripts/unit_economics_simulator.py +205 -0
- package/skills/sales-engineer/SKILL.md +104 -0
- package/skills/sales-engineer/assets/demo_script_template.md +232 -0
- package/skills/sales-engineer/assets/expected_output.json +474 -0
- package/skills/sales-engineer/assets/poc_scorecard_template.md +213 -0
- package/skills/sales-engineer/assets/sample_rfp_data.json +219 -0
- package/skills/sales-engineer/assets/technical_proposal_template.md +231 -0
- package/skills/sales-engineer/references/competitive-positioning-framework.md +226 -0
- package/skills/sales-engineer/references/poc-best-practices.md +277 -0
- package/skills/sales-engineer/references/rfp-response-guide.md +189 -0
- package/skills/sales-engineer/scripts/competitive_matrix_builder.py +525 -0
- package/skills/sales-engineer/scripts/poc_planner.py +765 -0
- package/skills/sales-engineer/scripts/rfp_response_analyzer.py +557 -0
- package/skills/scaffold-fastify-ts/SKILL.md +77 -0
- package/skills/scaffold-fastify-ts/references/anti-patterns.md +10 -0
- package/skills/scaffold-fastify-ts/references/key-decisions.md +27 -0
- package/skills/scaffold-go/SKILL.md +77 -0
- package/skills/scaffold-go/references/patterns.md +22 -0
- package/skills/scaffold-go/references/project-structure.md +15 -0
- package/skills/scaffold-react-native/SKILL.md +69 -0
- package/skills/scaffold-react-native/references/conventions.md +26 -0
- package/skills/scaffold-react-native/references/workflow-and-navigation.md +22 -0
- package/skills/scaffold-react-vite/SKILL.md +76 -0
- package/skills/scaffold-react-vite/references/anti-patterns.md +9 -0
- package/skills/scaffold-react-vite/references/dependency-baseline.md +22 -0
- package/skills/scaffold-unity/SKILL.md +52 -0
- package/skills/scaffold-unity/references/folder-structure-and-files.md +43 -0
- package/skills/scaffold-unity/references/naming-conventions.md +11 -0
- package/skills/scenario-war-room/SKILL.md +81 -0
- package/skills/scenario-war-room/references/cascade-model.md +103 -0
- package/skills/scenario-war-room/references/scenario-planning.md +212 -0
- package/skills/scenario-war-room/scripts/scenario_modeler.py +486 -0
- package/skills/schema-markup/SKILL.md +184 -0
- package/skills/schema-markup/references/implementation-patterns.md +437 -0
- package/skills/schema-markup/references/schema-types-guide.md +285 -0
- package/skills/schema-markup/references/testing-and-mistakes.md +43 -0
- package/skills/schema-markup/scripts/schema_validator.py +442 -0
- package/skills/scope-check/SKILL.md +67 -0
- package/skills/scope-check/references/report-template.md +56 -0
- package/skills/scrum-master/SKILL.md +128 -0
- package/skills/scrum-master/assets/expected_output.json +131 -0
- package/skills/scrum-master/assets/expected_velocity_output.json +85 -0
- package/skills/scrum-master/assets/sample_sprint_data.json +821 -0
- package/skills/scrum-master/assets/sprint_report_template.md +214 -0
- package/skills/scrum-master/assets/team_health_check_template.md +380 -0
- package/skills/scrum-master/references/retro-formats.md +336 -0
- package/skills/scrum-master/references/team-dynamics-framework.md +561 -0
- package/skills/scrum-master/references/velocity-forecasting-guide.md +386 -0
- package/skills/scrum-master/scripts/retrospective_analyzer.py +914 -0
- package/skills/scrum-master/scripts/sprint_health_scorer.py +744 -0
- package/skills/scrum-master/scripts/velocity_analyzer.py +580 -0
- package/skills/search-setup/SKILL.md +49 -0
- package/skills/search-setup/references/anti-patterns-checklist.md +24 -0
- package/skills/search-setup/references/engine-details.md +15 -0
- package/skills/search-setup/references/indexing-pipeline.md +11 -0
- package/skills/search-setup/references/observability.md +6 -0
- package/skills/secret-management/SKILL.md +49 -0
- package/skills/secret-management/references/anti-patterns.md +7 -0
- package/skills/secret-management/references/checklist.md +13 -0
- package/skills/secret-management/references/implementation-details.md +37 -0
- package/skills/security-audit/SKILL.md +86 -0
- package/skills/security-pen-testing/SKILL.md +114 -0
- package/skills/security-pen-testing/references/attack_patterns.md +629 -0
- package/skills/security-pen-testing/references/owasp_top_10_checklist.md +440 -0
- package/skills/security-pen-testing/references/responsible_disclosure.md +317 -0
- package/skills/security-pen-testing/scripts/dependency_auditor.py +455 -0
- package/skills/security-pen-testing/scripts/pentest_report_generator.py +462 -0
- package/skills/security-pen-testing/scripts/vulnerability_scanner.py +545 -0
- package/skills/self-improving-agent/.claude-plugin/plugin.json +13 -0
- package/skills/self-improving-agent/CLAUDE.md +79 -0
- package/skills/self-improving-agent/LICENSE +21 -0
- package/skills/self-improving-agent/SKILL.md +112 -0
- package/skills/self-improving-agent/agents/memory-analyst.md +74 -0
- package/skills/self-improving-agent/agents/skill-extractor.md +110 -0
- package/skills/self-improving-agent/hooks/error-capture.sh +110 -0
- package/skills/self-improving-agent/hooks/hooks.json +15 -0
- package/skills/self-improving-agent/reference/memory-architecture.md +131 -0
- package/skills/self-improving-agent/reference/promotion-rules.md +83 -0
- package/skills/self-improving-agent/reference/rules-directory-patterns.md +137 -0
- package/skills/self-improving-agent/settings.json +28 -0
- package/skills/self-improving-agent/skills/extract/SKILL.md +182 -0
- package/skills/self-improving-agent/skills/promote/SKILL.md +148 -0
- package/skills/self-improving-agent/skills/remember/SKILL.md +102 -0
- package/skills/self-improving-agent/skills/review/SKILL.md +130 -0
- package/skills/self-improving-agent/skills/status/SKILL.md +107 -0
- package/skills/self-improving-agent/templates/rule-template.md +17 -0
- package/skills/self-improving-agent/templates/skill-template.md +53 -0
- package/skills/senior-computer-vision/SKILL.md +125 -0
- package/skills/senior-computer-vision/references/computer_vision_architectures.md +683 -0
- package/skills/senior-computer-vision/references/object_detection_optimization.md +885 -0
- package/skills/senior-computer-vision/references/production_vision_systems.md +1226 -0
- package/skills/senior-computer-vision/references/reference-docs-and-commands.md +96 -0
- package/skills/senior-computer-vision/scripts/dataset_pipeline_builder.py +1699 -0
- package/skills/senior-computer-vision/scripts/inference_optimizer.py +557 -0
- package/skills/senior-computer-vision/scripts/vision_model_trainer.py +576 -0
- package/skills/senior-data-engineer/SKILL.md +198 -0
- package/skills/senior-data-engineer/references/data_modeling_patterns.md +1058 -0
- package/skills/senior-data-engineer/references/data_pipeline_architecture.md +1100 -0
- package/skills/senior-data-engineer/references/dataops_best_practices.md +1502 -0
- package/skills/senior-data-engineer/references/troubleshooting.md +183 -0
- package/skills/senior-data-engineer/references/workflows.md +624 -0
- package/skills/senior-data-engineer/scripts/data_quality_validator.py +1636 -0
- package/skills/senior-data-engineer/scripts/etl_performance_optimizer.py +1685 -0
- package/skills/senior-data-engineer/scripts/pipeline_orchestrator.py +883 -0
- package/skills/senior-data-scientist/SKILL.md +117 -0
- package/skills/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
- package/skills/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
- package/skills/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
- package/skills/senior-data-scientist/scripts/experiment_designer.py +100 -0
- package/skills/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
- package/skills/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
- package/skills/senior-ml-engineer/SKILL.md +121 -0
- package/skills/senior-ml-engineer/references/llm_integration_guide.md +317 -0
- package/skills/senior-ml-engineer/references/mlops_production_patterns.md +265 -0
- package/skills/senior-ml-engineer/references/rag_system_architecture.md +371 -0
- package/skills/senior-ml-engineer/scripts/ml_monitoring_suite.py +100 -0
- package/skills/senior-ml-engineer/scripts/model_deployment_pipeline.py +100 -0
- package/skills/senior-ml-engineer/scripts/rag_system_builder.py +100 -0
- package/skills/senior-pm/SKILL.md +109 -0
- package/skills/senior-pm/assets/executive_report_template.md +267 -0
- package/skills/senior-pm/assets/expected_output.json +150 -0
- package/skills/senior-pm/assets/project_charter_template.md +274 -0
- package/skills/senior-pm/assets/raci_matrix_template.md +265 -0
- package/skills/senior-pm/assets/sample_project_data.json +458 -0
- package/skills/senior-pm/references/portfolio-kpis.md +32 -0
- package/skills/senior-pm/references/portfolio-prioritization-models.md +645 -0
- package/skills/senior-pm/references/risk-management-framework.md +485 -0
- package/skills/senior-pm/scripts/project_health_dashboard.py +814 -0
- package/skills/senior-pm/scripts/resource_capacity_planner.py +846 -0
- package/skills/senior-pm/scripts/risk_matrix_analyzer.py +698 -0
- package/skills/senior-prompt-engineer/SKILL.md +108 -0
- package/skills/senior-prompt-engineer/references/agentic_system_design.md +646 -0
- package/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md +524 -0
- package/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md +572 -0
- package/skills/senior-prompt-engineer/scripts/agent_orchestrator.py +560 -0
- package/skills/senior-prompt-engineer/scripts/prompt_optimizer.py +519 -0
- package/skills/senior-prompt-engineer/scripts/rag_evaluator.py +574 -0
- package/skills/seo-audit/SKILL.md +150 -0
- package/skills/seo-audit/references/aeo-geo-patterns.md +110 -0
- package/skills/seo-audit/references/ai-writing-detection.md +63 -0
- package/skills/seo-audit/references/seo-audit-reference.md +289 -0
- package/skills/seo-audit/scripts/seo_checker.py +361 -0
- package/skills/shader-dev/SKILL.md +299 -0
- package/skills/shader-dev/reference/ambient-occlusion.md +382 -0
- package/skills/shader-dev/reference/analytic-ray-tracing.md +651 -0
- package/skills/shader-dev/reference/anti-aliasing.md +71 -0
- package/skills/shader-dev/reference/atmospheric-scattering.md +571 -0
- package/skills/shader-dev/reference/camera-effects.md +80 -0
- package/skills/shader-dev/reference/cellular-automata.md +635 -0
- package/skills/shader-dev/reference/color-palette.md +481 -0
- package/skills/shader-dev/reference/csg-boolean-operations.md +466 -0
- package/skills/shader-dev/reference/domain-repetition.md +436 -0
- package/skills/shader-dev/reference/domain-warping.md +419 -0
- package/skills/shader-dev/reference/fluid-simulation.md +425 -0
- package/skills/shader-dev/reference/fractal-rendering.md +525 -0
- package/skills/shader-dev/reference/lighting-model.md +639 -0
- package/skills/shader-dev/reference/matrix-transform.md +535 -0
- package/skills/shader-dev/reference/multipass-buffer.md +571 -0
- package/skills/shader-dev/reference/normal-estimation.md +418 -0
- package/skills/shader-dev/reference/particle-system.md +589 -0
- package/skills/shader-dev/reference/path-tracing-gi.md +602 -0
- package/skills/shader-dev/reference/polar-uv-manipulation.md +521 -0
- package/skills/shader-dev/reference/post-processing.md +375 -0
- package/skills/shader-dev/reference/procedural-2d-pattern.md +439 -0
- package/skills/shader-dev/reference/procedural-noise.md +551 -0
- package/skills/shader-dev/reference/ray-marching.md +396 -0
- package/skills/shader-dev/reference/sdf-2d.md +724 -0
- package/skills/shader-dev/reference/sdf-3d.md +805 -0
- package/skills/shader-dev/reference/sdf-tricks.md +63 -0
- package/skills/shader-dev/reference/shadow-techniques.md +476 -0
- package/skills/shader-dev/reference/simulation-physics.md +644 -0
- package/skills/shader-dev/reference/sound-synthesis.md +578 -0
- package/skills/shader-dev/reference/terrain-rendering.md +839 -0
- package/skills/shader-dev/reference/texture-mapping-advanced.md +87 -0
- package/skills/shader-dev/reference/texture-sampling.md +553 -0
- package/skills/shader-dev/reference/volumetric-rendering.md +608 -0
- package/skills/shader-dev/reference/voronoi-cellular-noise.md +486 -0
- package/skills/shader-dev/reference/voxel-rendering.md +701 -0
- package/skills/shader-dev/reference/water-ocean.md +445 -0
- package/skills/shader-dev/reference/webgl-pitfalls.md +41 -0
- package/skills/shader-dev/techniques/ambient-occlusion.md +364 -0
- package/skills/shader-dev/techniques/analytic-ray-tracing.md +542 -0
- package/skills/shader-dev/techniques/anti-aliasing.md +124 -0
- package/skills/shader-dev/techniques/atmospheric-scattering.md +522 -0
- package/skills/shader-dev/techniques/camera-effects.md +115 -0
- package/skills/shader-dev/techniques/cellular-automata.md +531 -0
- package/skills/shader-dev/techniques/color-palette.md +380 -0
- package/skills/shader-dev/techniques/csg-boolean-operations.md +491 -0
- package/skills/shader-dev/techniques/domain-repetition.md +333 -0
- package/skills/shader-dev/techniques/domain-warping.md +414 -0
- package/skills/shader-dev/techniques/fluid-simulation.md +1175 -0
- package/skills/shader-dev/techniques/fractal-rendering.md +436 -0
- package/skills/shader-dev/techniques/lighting-model.md +527 -0
- package/skills/shader-dev/techniques/matrix-transform.md +455 -0
- package/skills/shader-dev/techniques/multipass-buffer.md +922 -0
- package/skills/shader-dev/techniques/normal-estimation.md +318 -0
- package/skills/shader-dev/techniques/particle-system.md +1203 -0
- package/skills/shader-dev/techniques/path-tracing-gi.md +623 -0
- package/skills/shader-dev/techniques/polar-uv-manipulation.md +373 -0
- package/skills/shader-dev/techniques/post-processing.md +788 -0
- package/skills/shader-dev/techniques/procedural-2d-pattern.md +346 -0
- package/skills/shader-dev/techniques/procedural-noise.md +554 -0
- package/skills/shader-dev/techniques/ray-marching.md +467 -0
- package/skills/shader-dev/techniques/sdf-2d.md +631 -0
- package/skills/shader-dev/techniques/sdf-3d.md +589 -0
- package/skills/shader-dev/techniques/sdf-tricks.md +100 -0
- package/skills/shader-dev/techniques/shadow-techniques.md +776 -0
- package/skills/shader-dev/techniques/simulation-physics.md +1542 -0
- package/skills/shader-dev/techniques/sound-synthesis.md +490 -0
- package/skills/shader-dev/techniques/terrain-rendering.md +408 -0
- package/skills/shader-dev/techniques/texture-mapping-advanced.md +121 -0
- package/skills/shader-dev/techniques/texture-sampling.md +382 -0
- package/skills/shader-dev/techniques/volumetric-rendering.md +375 -0
- package/skills/shader-dev/techniques/voronoi-cellular-noise.md +458 -0
- package/skills/shader-dev/techniques/voxel-rendering.md +985 -0
- package/skills/shader-dev/techniques/water-ocean.md +490 -0
- package/skills/shader-dev/techniques/webgl-pitfalls.md +170 -0
- package/skills/signup-flow-cro/SKILL.md +150 -0
- package/skills/signup-flow-cro/references/experiments.md +76 -0
- package/skills/signup-flow-cro/references/signup-cro-playbook.md +180 -0
- package/skills/signup-flow-cro/scripts/funnel_drop_analyzer.py +320 -0
- package/skills/site-architecture/SKILL.md +167 -0
- package/skills/site-architecture/references/internal-linking-playbook.md +216 -0
- package/skills/site-architecture/references/navigation-design.md +32 -0
- package/skills/site-architecture/references/silo-and-linking-guide.md +80 -0
- package/skills/site-architecture/references/url-design-guide.md +220 -0
- package/skills/site-architecture/scripts/sitemap_analyzer.py +375 -0
- package/skills/skill-auditor/SKILL.md +159 -0
- package/skills/skill-auditor/references/frontmatter-spec.md +113 -0
- package/skills/skill-auditor/references/lazy-loading-guide.md +98 -0
- package/skills/skill-improve/SKILL.md +59 -0
- package/skills/skill-test/SKILL.md +45 -0
- package/skills/skill-test/references/audit-mode-procedure.md +7 -0
- package/skills/skill-test/references/category-mode-procedure.md +7 -0
- package/skills/skill-test/references/next-steps-guide.md +9 -0
- package/skills/skill-test/references/spec-mode-procedure.md +8 -0
- package/skills/skill-test/references/static-checks.md +13 -0
- package/skills/slack/SKILL.md +45 -0
- package/skills/slo-sli/SKILL.md +92 -0
- package/skills/slo-sli/references/alerting-burn-rate.md +22 -0
- package/skills/slo-sli/references/anti-patterns.md +12 -0
- package/skills/slo-sli/references/checklist.md +14 -0
- package/skills/smoke-check/SKILL.md +77 -0
- package/skills/snowflake-development/SKILL.md +119 -0
- package/skills/snowflake-development/references/cortex_ai_and_agents.md +280 -0
- package/skills/snowflake-development/references/snowflake_sql_and_pipelines.md +281 -0
- package/skills/snowflake-development/references/troubleshooting.md +155 -0
- package/skills/snowflake-development/scripts/snowflake_query_helper.py +233 -0
- package/skills/soc2-compliance/SKILL.md +132 -0
- package/skills/soc2-compliance/references/evidence_collection_guide.md +227 -0
- package/skills/soc2-compliance/references/trust_service_criteria.md +273 -0
- package/skills/soc2-compliance/references/type1_vs_type2.md +273 -0
- package/skills/soc2-compliance/scripts/control_matrix_builder.py +679 -0
- package/skills/soc2-compliance/scripts/evidence_tracker.py +240 -0
- package/skills/soc2-compliance/scripts/gap_analyzer.py +479 -0
- package/skills/social-content/SKILL.md +155 -0
- package/skills/social-content/references/hooks-and-repurposing.md +74 -0
- package/skills/social-content/references/platforms.md +163 -0
- package/skills/social-content/references/post-templates.md +171 -0
- package/skills/social-content/references/reverse-engineering.md +190 -0
- package/skills/social-media-analyzer/HOW_TO_USE.md +39 -0
- package/skills/social-media-analyzer/SKILL.md +190 -0
- package/skills/social-media-analyzer/assets/expected_output.json +61 -0
- package/skills/social-media-analyzer/assets/sample_input.json +42 -0
- package/skills/social-media-analyzer/references/platform-benchmarks.md +226 -0
- package/skills/social-media-analyzer/scripts/analyze_performance.py +180 -0
- package/skills/social-media-analyzer/scripts/calculate_metrics.py +147 -0
- package/skills/social-media-manager/SKILL.md +195 -0
- package/skills/social-media-manager/scripts/social_calendar_generator.py +399 -0
- package/skills/sprint-ceremony/SKILL.md +75 -0
- package/skills/sprint-plan/SKILL.md +47 -0
- package/skills/sprint-report/SKILL.md +124 -0
- package/skills/standup-report/SKILL.md +51 -0
- package/skills/start/SKILL.md +67 -0
- package/skills/start-service/SKILL.md +45 -0
- package/skills/state-management/SKILL.md +75 -0
- package/skills/story-done/SKILL.md +69 -0
- package/skills/story-done/references/review-gates.md +9 -0
- package/skills/story-done/references/test-evidence-traceability.md +17 -0
- package/skills/story-readiness/SKILL.md +57 -0
- package/skills/story-readiness/references/context-loading.md +9 -0
- package/skills/story-readiness/references/output-format.md +7 -0
- package/skills/story-readiness/references/readiness-checklist.md +33 -0
- package/skills/strategic-alignment/SKILL.md +79 -0
- package/skills/strategic-alignment/references/alignment-playbook.md +205 -0
- package/skills/strategic-alignment/scripts/alignment_checker.py +455 -0
- package/skills/stripe-integration-expert/SKILL.md +65 -0
- package/skills/stripe-integration-expert/references/stripe-code-examples.md +372 -0
- package/skills/tdd-guide/HOW_TO_USE.md +313 -0
- package/skills/tdd-guide/SKILL.md +114 -0
- package/skills/tdd-guide/assets/expected_output.json +77 -0
- package/skills/tdd-guide/assets/sample_coverage_report.lcov +56 -0
- package/skills/tdd-guide/assets/sample_input_python.json +39 -0
- package/skills/tdd-guide/assets/sample_input_typescript.json +36 -0
- package/skills/tdd-guide/references/ci-integration.md +195 -0
- package/skills/tdd-guide/references/framework-guide.md +206 -0
- package/skills/tdd-guide/references/tdd-best-practices.md +128 -0
- package/skills/tdd-guide/references/tdd-code-examples.md +229 -0
- package/skills/tdd-guide/scripts/coverage_analyzer.py +434 -0
- package/skills/tdd-guide/scripts/fixture_generator.py +440 -0
- package/skills/tdd-guide/scripts/format_detector.py +384 -0
- package/skills/tdd-guide/scripts/framework_adapter.py +428 -0
- package/skills/tdd-guide/scripts/metrics_calculator.py +456 -0
- package/skills/tdd-guide/scripts/output_formatter.py +354 -0
- package/skills/tdd-guide/scripts/tdd_workflow.py +474 -0
- package/skills/tdd-guide/scripts/test_generator.py +438 -0
- package/skills/team-communications/SKILL.md +69 -0
- package/skills/team-communications/references/3p-updates.md +47 -0
- package/skills/team-communications/references/company-newsletter.md +65 -0
- package/skills/team-communications/references/faq-answers.md +30 -0
- package/skills/team-communications/references/general-comms.md +16 -0
- package/skills/team-vn/SKILL.md +187 -0
- package/skills/tech-debt/SKILL.md +91 -0
- package/skills/tech-debt/references/register-format.md +20 -0
- package/skills/tech-debt/references/scan-indicators.md +22 -0
- package/skills/tech-stack-evaluator/SKILL.md +111 -0
- package/skills/tech-stack-evaluator/assets/expected_output_comparison.json +82 -0
- package/skills/tech-stack-evaluator/assets/sample_input_structured.json +39 -0
- package/skills/tech-stack-evaluator/assets/sample_input_tco.json +42 -0
- package/skills/tech-stack-evaluator/assets/sample_input_text.json +4 -0
- package/skills/tech-stack-evaluator/references/examples.md +383 -0
- package/skills/tech-stack-evaluator/references/metrics.md +242 -0
- package/skills/tech-stack-evaluator/references/workflows.md +362 -0
- package/skills/tech-stack-evaluator/scripts/ecosystem_analyzer.py +501 -0
- package/skills/tech-stack-evaluator/scripts/format_detector.py +430 -0
- package/skills/tech-stack-evaluator/scripts/migration_analyzer.py +587 -0
- package/skills/tech-stack-evaluator/scripts/report_generator.py +460 -0
- package/skills/tech-stack-evaluator/scripts/security_assessor.py +518 -0
- package/skills/tech-stack-evaluator/scripts/stack_comparator.py +389 -0
- package/skills/tech-stack-evaluator/scripts/tco_calculator.py +458 -0
- package/skills/terraform-init/SKILL.md +80 -0
- package/skills/terraform-init/references/anti-patterns.md +11 -0
- package/skills/terraform-init/references/security-checklist.md +10 -0
- package/skills/test-flakiness/SKILL.md +90 -0
- package/skills/test-helpers/SKILL.md +50 -0
- package/skills/test-setup/SKILL.md +58 -0
- package/skills/testing/SKILL.md +32 -0
- package/skills/testing/references/anti-patterns.md +11 -0
- package/skills/testing/references/coverage-strategy.md +11 -0
- package/skills/testing/references/framework-setup.md +25 -0
- package/skills/testing/references/helper-patterns.md +9 -0
- package/skills/threat-detection/SKILL.md +114 -0
- package/skills/threat-detection/references/hunt-playbooks.md +131 -0
- package/skills/threat-detection/scripts/threat_signal_analyzer.py +571 -0
- package/skills/unity-game-architecture/SKILL.md +45 -0
- package/skills/unity-game-architecture/references/anti-patterns.md +15 -0
- package/skills/unity-game-architecture/references/checklist.md +16 -0
- package/skills/unity-game-architecture/references/performance-and-systems.md +29 -0
- package/skills/user-persona/SKILL.md +65 -0
- package/skills/user-persona/references/persona-template.md +27 -0
- package/skills/ux-design/SKILL.md +60 -0
- package/skills/ux-design/references/cross-reference-and-routing.md +19 -0
- package/skills/ux-design/references/spec-sections.md +19 -0
- package/skills/ux-review/SKILL.md +70 -0
- package/skills/video-content-strategist/SKILL.md +181 -0
- package/skills/video-content-strategist/references/scripts-and-anti-patterns.md +48 -0
- package/skills/visual-regression/SKILL.md +86 -0
- package/skills/vn-asset-pipeline/SKILL.md +166 -0
- package/skills/vn-character-design/SKILL.md +220 -0
- package/skills/vn-comfyui-gen/SKILL.md +235 -0
- package/skills/vn-comfyui-gen/references/comfyui-vn-workflows.md +197 -0
- package/skills/vn-dialogue-tree/SKILL.md +126 -0
- package/skills/vn-gdd/SKILL.md +133 -0
- package/skills/vn-narrative-design/SKILL.md +185 -0
- package/skills/vn-renpy-setup/SKILL.md +136 -0
- package/skills/vn-scene-compose/SKILL.md +234 -0
- package/skills/vn-script/SKILL.md +140 -0
- package/skills/vn-script/references/renpy-cheatsheet.md +169 -0
- package/skills/vn-testing/SKILL.md +178 -0
- package/skills/vn-ui-design/SKILL.md +220 -0
- package/skills/web-security/SKILL.md +92 -0
- package/skills/web-security/references/csp-and-frontend.md +36 -0
- package/skills/webhooks/SKILL.md +102 -0
- package/skills/websocket-realtime-rooms/SKILL.md +46 -0
- package/skills/websocket-realtime-rooms/references/anti-patterns-checklist.md +27 -0
- package/skills/websocket-realtime-rooms/references/auth-security.md +9 -0
- package/skills/websocket-realtime-rooms/references/client-implementation.md +15 -0
- package/skills/websocket-realtime-rooms/references/heartbeat-reconnect-backpressure.md +17 -0
- package/skills/weekly-digest/SKILL.md +51 -0
- package/skills/worktree-isolation/README.md +193 -0
- package/skills/worktree-isolation/SKILL.md +87 -0
- package/skills/worktree-isolation/scripts/apply.py +178 -0
- package/skills/worktree-isolation/scripts/lib.py +371 -0
- package/skills/worktree-isolation-setup/README.md +137 -0
- package/skills/worktree-isolation-setup/SKILL.md +192 -0
- package/skills/worktree-isolation-setup/scripts/apply.py +178 -0
- package/skills/worktree-isolation-setup/scripts/install_hook.py +118 -0
- package/skills/worktree-isolation-setup/scripts/lib.py +371 -0
- package/skills/x-twitter-growth/SKILL.md +91 -0
- package/skills/x-twitter-growth/references/algorithm-signals.md +70 -0
- package/skills/x-twitter-growth/scripts/competitor_analyzer.py +235 -0
- package/skills/x-twitter-growth/scripts/content_planner.py +210 -0
- package/skills/x-twitter-growth/scripts/growth_tracker.py +259 -0
- package/skills/x-twitter-growth/scripts/profile_auditor.py +294 -0
- package/skills/x-twitter-growth/scripts/tweet_composer.py +290 -0
- package/skills/xlsx-generator/SKILL.md +135 -0
- package/skills/xlsx-generator/references/create.md +691 -0
- package/skills/xlsx-generator/references/edit.md +684 -0
- package/skills/xlsx-generator/references/fix.md +37 -0
- package/skills/xlsx-generator/references/format.md +768 -0
- package/skills/xlsx-generator/references/ooxml-cheatsheet.md +231 -0
- package/skills/xlsx-generator/references/read-analyze.md +97 -0
- package/skills/xlsx-generator/references/validate.md +772 -0
- package/skills/xlsx-generator/scripts/formula_check.py +422 -0
- package/skills/xlsx-generator/scripts/libreoffice_recalc.py +248 -0
- package/skills/xlsx-generator/scripts/shared_strings_builder.py +163 -0
- package/skills/xlsx-generator/scripts/style_audit.py +575 -0
- package/skills/xlsx-generator/scripts/xlsx_add_column.py +395 -0
- package/skills/xlsx-generator/scripts/xlsx_insert_row.py +274 -0
- package/skills/xlsx-generator/scripts/xlsx_pack.py +87 -0
- package/skills/xlsx-generator/scripts/xlsx_reader.py +362 -0
- package/skills/xlsx-generator/scripts/xlsx_shift_rows.py +396 -0
- package/skills/xlsx-generator/scripts/xlsx_unpack.py +130 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/[Content_Types].xml +9 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/_rels/.rels +6 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/xl/styles.xml +160 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/xl/workbook.xml +30 -0
- package/skills/xlsx-generator/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
- package/templates/gamedev/architecture-decision-record.md +176 -0
- package/templates/gamedev/art-bible.md +80 -0
- package/templates/gamedev/concept-doc-from-prototype.md +304 -0
- package/templates/gamedev/difficulty-curve.md +330 -0
- package/templates/gamedev/economy-model.md +130 -0
- package/templates/gamedev/faction-design.md +166 -0
- package/templates/gamedev/game-concept.md +316 -0
- package/templates/gamedev/game-design-document.md +219 -0
- package/templates/gamedev/game-pillars.md +313 -0
- package/templates/gamedev/hud-design.md +505 -0
- package/templates/gamedev/level-design-document.md +111 -0
- package/templates/gamedev/narrative-character-sheet.md +111 -0
- package/templates/gamedev/pitch-document.md +140 -0
- package/templates/gamedev/player-journey.md +357 -0
- package/templates/gamedev/project-stage-report.md +199 -0
- package/templates/gamedev/sound-bible.md +130 -0
- package/templates/gamedev/systems-index.md +146 -0
- package/templates/gamedev/technical-design-document.md +96 -0
- package/templates/gamedev/test-evidence.md +86 -0
- package/templates/gamedev/test-plan.md +144 -0
|
@@ -0,0 +1,985 @@
|
|
|
1
|
+
## WebGL2 Adaptation Requirements
|
|
2
|
+
|
|
3
|
+
The code templates in this document use ShaderToy GLSL style. When generating standalone HTML pages, you must adapt for WebGL2:
|
|
4
|
+
|
|
5
|
+
- Use `canvas.getContext("webgl2")` **(required! WebGL1 does not support in/out keywords)**
|
|
6
|
+
- Shader first line: `#version 300 es`, add `precision highp float;` to fragment shader
|
|
7
|
+
- **IMPORTANT: #version must be the very first line of the shader! No characters before it (including blank lines/comments/Unicode BOM)**
|
|
8
|
+
- Vertex shader: `attribute` → `in`, `varying` → `out`
|
|
9
|
+
- Fragment shader: `varying` → `in`, `gl_FragColor` → custom `out vec4 fragColor`, `texture2D()` → `texture()`
|
|
10
|
+
- ShaderToy's `void mainImage(out vec4 fragColor, in vec2 fragCoord)` needs to be adapted to the standard `void main()` entry point
|
|
11
|
+
|
|
12
|
+
### WebGL2 Full Adaptation Example
|
|
13
|
+
|
|
14
|
+
```glsl
|
|
15
|
+
// === Vertex Shader ===
|
|
16
|
+
const vertexShaderSource = `#version 300 es
|
|
17
|
+
in vec2 a_position;
|
|
18
|
+
void main() {
|
|
19
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
20
|
+
}`;
|
|
21
|
+
|
|
22
|
+
// === Fragment Shader ===
|
|
23
|
+
const fragmentShaderSource = `#version 300 es
|
|
24
|
+
precision highp float;
|
|
25
|
+
|
|
26
|
+
uniform float iTime;
|
|
27
|
+
uniform vec2 iResolution;
|
|
28
|
+
|
|
29
|
+
// IMPORTANT: Important: WebGL2 must declare the output variable!
|
|
30
|
+
out vec4 fragColor;
|
|
31
|
+
|
|
32
|
+
// ... other functions ...
|
|
33
|
+
|
|
34
|
+
void main() {
|
|
35
|
+
// IMPORTANT: Use gl_FragCoord.xy instead of fragCoord
|
|
36
|
+
vec2 fragCoord = gl_FragCoord.xy;
|
|
37
|
+
|
|
38
|
+
vec3 col = vec3(0.0);
|
|
39
|
+
|
|
40
|
+
// ... rendering logic ...
|
|
41
|
+
|
|
42
|
+
// IMPORTANT: Write to fragColor, not gl_FragColor!
|
|
43
|
+
fragColor = vec4(col, 1.0);
|
|
44
|
+
}`;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**IMPORTANT: Common GLSL compile errors:**
|
|
48
|
+
- `in/out storage qualifier supported in GLSL ES 3.00 only` → Check that you are using `getContext("webgl2")` and `#version 300 es`
|
|
49
|
+
- `#version directive must occur on the first line` → Check that the shader string starts with #version, with no characters before it
|
|
50
|
+
- **IMPORTANT: GLSL reserved words**: `cast`, `class`, `template`, `namespace`, `union`, `enum`, `typedef`, `sizeof`, `input`, `output`, `filter`, `image`, `sampler`, `fixed`, `volatile`, `public`, `static`, `extern`, `external`, `interface`, `long`, `short`, `double`, `half`, `unsigned`, `superp`, `inline`, `noinline`, etc. are all GLSL reserved words and **must never be used as variable or function names**! Common pitfall: naming a function `cast` for ray casting → compile failure. **Use compound names like `castRay`, `castShadow`, `shootRay` instead**.
|
|
51
|
+
- **IMPORTANT: GLSL strict typing**: float/int cannot be mixed. `if (x > 0)` for int, `if (y < 0.0)` for float. Comparing ivec3 members to float requires explicit conversion: `float(c.y) < height`. When getVoxel returns int, compare with `> 0` not `> 0.0`. Function parameter types must match exactly.
|
|
52
|
+
- **IMPORTANT: Vector dimension mismatch (vec2 vs vec3)**: `p.xz` returns `vec2` and **must never** be added to `vec3` or passed to functions expecting `vec3` parameters (e.g., `fbm(vec3)`, `noise(vec3)`)! Common error: `fbm(p.xz * 0.08 + vec3(...))` — `vec2 + vec3` compile failure. **Fix**: either use a `vec2` version of noise/fbm, or construct a full vec3: `fbm(vec3(p.xz * 0.08, p.y * 0.05))`. Similarly, `vec2` only has `.x`/`.y`, cannot access `.z`/`.w`.
|
|
53
|
+
- **IMPORTANT: length() / floating-point precision**: `length(ivec2)` must first convert to `vec2`: `length(vec2(d))`. Exact floating-point equality comparison almost never works; use range comparison: `floor(p.y) == floor(height)`
|
|
54
|
+
|
|
55
|
+
# Voxel Rendering Skill
|
|
56
|
+
|
|
57
|
+
## Use Cases
|
|
58
|
+
- Rendering discrete volumetric data on regular 3D grids (Minecraft-style worlds, medical volume data, architectural voxel models)
|
|
59
|
+
- Pixel-accurate block/cube scenes
|
|
60
|
+
- "Block art", "3D pixel art", "low-poly voxel" visual styles
|
|
61
|
+
- Real-time voxel scenes in pure fragment shader environments like ShaderToy
|
|
62
|
+
- Advanced lighting effects including shadows, AO, and global illumination
|
|
63
|
+
|
|
64
|
+
## Core Principles
|
|
65
|
+
|
|
66
|
+
The core of voxel rendering is the **DDA (Digital Differential Analyzer) ray traversal algorithm**: cast a ray from the camera through each pixel, stepping through the 3D grid cell by cell along the ray direction until hitting an occupied voxel.
|
|
67
|
+
|
|
68
|
+
For ray `P(t) = rayPos + t * rayDir`, DDA maintains:
|
|
69
|
+
- **`mapPos`** = `floor(rayPos)`: current grid coordinate (integer)
|
|
70
|
+
- **`deltaDist`** = `abs(1.0 / rayDir)`: t cost to cross one cell
|
|
71
|
+
- **`sideDist`** = `(sign(rayDir) * (mapPos - rayPos) + sign(rayDir) * 0.5 + 0.5) * deltaDist`: t distance to the next boundary on each axis
|
|
72
|
+
|
|
73
|
+
Each step advances along the axis with the smallest `sideDist`, updating `sideDist += deltaDist` and `mapPos += rayStep`.
|
|
74
|
+
|
|
75
|
+
Normal on hit: `normal = -mask * rayStep`
|
|
76
|
+
|
|
77
|
+
Face UV is obtained by projecting the hit point onto the two tangent axes of the hit face.
|
|
78
|
+
|
|
79
|
+
## Implementation Steps
|
|
80
|
+
|
|
81
|
+
### Step 1: Camera Ray Construction
|
|
82
|
+
```glsl
|
|
83
|
+
vec2 screenPos = (fragCoord.xy / iResolution.xy) * 2.0 - 1.0;
|
|
84
|
+
vec3 cameraDir = vec3(0.0, 0.0, 0.8); // Focal length; larger = narrower FOV
|
|
85
|
+
vec3 cameraPlaneU = vec3(1.0, 0.0, 0.0);
|
|
86
|
+
vec3 cameraPlaneV = vec3(0.0, 1.0, 0.0) * iResolution.y / iResolution.x;
|
|
87
|
+
vec3 rayDir = cameraDir + screenPos.x * cameraPlaneU + screenPos.y * cameraPlaneV;
|
|
88
|
+
vec3 rayPos = vec3(0.0, 2.0, -12.0);
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Step 2: DDA Initialization
|
|
92
|
+
```glsl
|
|
93
|
+
ivec3 mapPos = ivec3(floor(rayPos));
|
|
94
|
+
vec3 rayStep = sign(rayDir);
|
|
95
|
+
vec3 deltaDist = abs(1.0 / rayDir); // When ray is normalized, equivalent to abs(1.0/rd), no length() needed
|
|
96
|
+
vec3 sideDist = (sign(rayDir) * (vec3(mapPos) - rayPos) + (sign(rayDir) * 0.5) + 0.5) * deltaDist;
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Step 3: DDA Traversal Loop (Branchless Version)
|
|
100
|
+
```glsl
|
|
101
|
+
#define MAX_RAY_STEPS 64
|
|
102
|
+
|
|
103
|
+
bvec3 mask;
|
|
104
|
+
for (int i = 0; i < MAX_RAY_STEPS; i++) {
|
|
105
|
+
if (getVoxel(mapPos)) break;
|
|
106
|
+
// Branchless axis selection
|
|
107
|
+
mask = lessThanEqual(sideDist.xyz, min(sideDist.yzx, sideDist.zxy));
|
|
108
|
+
sideDist += vec3(mask) * deltaDist;
|
|
109
|
+
mapPos += ivec3(vec3(mask)) * ivec3(rayStep);
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Alternative form (step version):
|
|
114
|
+
```glsl
|
|
115
|
+
vec3 mask = step(sideDist.xyz, sideDist.yzx) * step(sideDist.xyz, sideDist.zxy);
|
|
116
|
+
sideDist += mask * deltaDist;
|
|
117
|
+
mapPos += mask * rayStep;
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Step 4: Voxel Occupancy Function
|
|
121
|
+
```glsl
|
|
122
|
+
// Basic version: solid block (most common; use this when user asks for "voxel cube")
|
|
123
|
+
// IMPORTANT: Important: getVoxel receives ivec3, but all internal calculations must use float!
|
|
124
|
+
bool getVoxel(ivec3 c) {
|
|
125
|
+
vec3 p = vec3(c) + vec3(0.5); // ivec3 → vec3 conversion (required!)
|
|
126
|
+
float d = sdBox(p, vec3(6.0)); // Solid 12x12x12 cube
|
|
127
|
+
return d < 0.0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Advanced version: SDF boolean operations (sphere carved from box = only corners remain)
|
|
131
|
+
bool getVoxelCarved(ivec3 c) {
|
|
132
|
+
vec3 p = vec3(c) + vec3(0.5);
|
|
133
|
+
float d = max(-sdSphere(p, 7.5), sdBox(p, vec3(6.0))); // box ∩ ¬sphere
|
|
134
|
+
return d < 0.0;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Advanced version: height map terrain with material IDs
|
|
138
|
+
// IMPORTANT: Key: all comparisons must use float! c.y is int and must be converted to float for comparison
|
|
139
|
+
// IMPORTANT: Important: must use range comparison, not exact equality (floating-point precision issues)
|
|
140
|
+
int getVoxelMaterial(ivec3 c) {
|
|
141
|
+
vec3 p = vec3(c); // ivec3 → vec3 conversion (required!)
|
|
142
|
+
float groundHeight = getTerrainHeight(p.xz); // p.xz is vec2, passes float parameters
|
|
143
|
+
if (float(c.y) < groundHeight) return 1; // int → float comparison
|
|
144
|
+
if (float(c.y) < groundHeight + 4.0) return 7; // int → float comparison
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Pure float version (simpler, recommended):
|
|
149
|
+
int getVoxelMaterial(vec3 c) {
|
|
150
|
+
float groundHeight = getTerrainHeight(c.xz);
|
|
151
|
+
// IMPORTANT: Use range comparison, never exact equality!
|
|
152
|
+
if (c.y >= groundHeight && c.y < groundHeight + 1.0) return 1; // Grass top layer
|
|
153
|
+
if (c.y >= groundHeight - 3.0 && c.y < groundHeight) return 2; // Dirt layer
|
|
154
|
+
if (c.y < groundHeight - 3.0) return 3; // Stone layer
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Advanced version: mountain terrain (height-based coloring: grass green → rock gray → snow white)
|
|
159
|
+
// IMPORTANT: Key 1: color thresholds must be based on heightRatio (normalized height 0~1), not absolute height!
|
|
160
|
+
// IMPORTANT: Key 2: maxH must match the actual maximum return value of getMountainHeight!
|
|
161
|
+
// If getMountainHeight returns at most 15.0, maxH must be 15.0, not arbitrarily 20.0
|
|
162
|
+
// IMPORTANT: Key 3: threshold spacing must be large enough (at least 0.2), otherwise color bands are too narrow to see
|
|
163
|
+
// IMPORTANT: Key 4: grass area typically covers the largest terrain area (low elevation); set grass threshold high (0.4) to ensure green is clearly visible
|
|
164
|
+
float maxH = 15.0; // IMPORTANT: Must equal the actual max value of getMountainHeight!
|
|
165
|
+
int getMountainVoxel(vec3 c) {
|
|
166
|
+
float height = getMountainHeight(c.xz); // Returns 0 ~ maxH
|
|
167
|
+
if (c.y > height) return 0; // Air
|
|
168
|
+
float heightRatio = c.y / maxH; // Normalize to 0~1
|
|
169
|
+
// IMPORTANT: Thresholds from low to high: grass < 0.4, rock 0.4~0.7, snow > 0.7
|
|
170
|
+
if (heightRatio < 0.4) return 1; // Grass (green) — largest area
|
|
171
|
+
if (heightRatio < 0.7) return 2; // Rock (gray)
|
|
172
|
+
return 3; // Snow cap (white)
|
|
173
|
+
}
|
|
174
|
+
// IMPORTANT: Corresponding material colors must have sufficient saturation and clear contrast:
|
|
175
|
+
// mat==1: vec3(0.25, 0.55, 0.15) Grass green (saturated green, must not be grayish!)
|
|
176
|
+
// mat==2: vec3(0.5, 0.45, 0.4) Rock gray-brown
|
|
177
|
+
// mat==3: vec3(0.92, 0.93, 0.96) Snow white
|
|
178
|
+
// IMPORTANT: Lighting must not be too bright or it washes out colors! Sun intensity ≤ 2.0, sky light ≤ 1.0
|
|
179
|
+
// IMPORTANT: Gamma correction pow(col, vec3(0.4545)) brightens dark colors and reduces saturation;
|
|
180
|
+
// if colors look grayish-white, make grass green more saturated: vec3(0.2, 0.5, 0.1)
|
|
181
|
+
|
|
182
|
+
// IMPORTANT: Rotating objects: to rotate a voxel object, apply inverse rotation to the sample point in getVoxel!
|
|
183
|
+
// Do not rotate the camera to simulate object rotation (that only changes the viewpoint)
|
|
184
|
+
bool getVoxelRotating(ivec3 c) {
|
|
185
|
+
vec3 p = vec3(c) + vec3(0.5);
|
|
186
|
+
// Rotate around Y axis: apply inverse rotation to sample point
|
|
187
|
+
float angle = -iTime; // Negative sign = inverse transform
|
|
188
|
+
float s = sin(angle), co = cos(angle);
|
|
189
|
+
p.xz = vec2(p.x * co - p.z * s, p.x * s + p.z * co);
|
|
190
|
+
float d = sdBox(p, vec3(6.0)); // Rotated solid cube
|
|
191
|
+
return d < 0.0;
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Step 5: Face Shading (Normal + Base Color)
|
|
196
|
+
```glsl
|
|
197
|
+
vec3 normal = -vec3(mask) * rayStep;
|
|
198
|
+
vec3 color;
|
|
199
|
+
if (mask.x) color = vec3(0.5); // Side faces darkest
|
|
200
|
+
if (mask.y) color = vec3(1.0); // Top face brightest
|
|
201
|
+
if (mask.z) color = vec3(0.75); // Front/back faces medium
|
|
202
|
+
fragColor = vec4(color, 1.0);
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Step 6: Precise Hit Position and Face UV
|
|
206
|
+
```glsl
|
|
207
|
+
float t = dot(sideDist - deltaDist, vec3(mask));
|
|
208
|
+
vec3 hitPos = rayPos + rayDir * t;
|
|
209
|
+
vec3 uvw = hitPos - vec3(mapPos);
|
|
210
|
+
vec2 uv = vec2(dot(vec3(mask) * uvw.yzx, vec3(1.0)),
|
|
211
|
+
dot(vec3(mask) * uvw.zxy, vec3(1.0)));
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Step 7: Neighbor Voxel AO
|
|
215
|
+
```glsl
|
|
216
|
+
float vertexAo(vec2 side, float corner) {
|
|
217
|
+
return (side.x + side.y + max(corner, side.x * side.y)) / 3.0;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
vec4 voxelAo(vec3 pos, vec3 d1, vec3 d2) {
|
|
221
|
+
vec4 side = vec4(
|
|
222
|
+
getVoxel(pos + d1), getVoxel(pos + d2),
|
|
223
|
+
getVoxel(pos - d1), getVoxel(pos - d2));
|
|
224
|
+
vec4 corner = vec4(
|
|
225
|
+
getVoxel(pos + d1 + d2), getVoxel(pos - d1 + d2),
|
|
226
|
+
getVoxel(pos - d1 - d2), getVoxel(pos + d1 - d2));
|
|
227
|
+
vec4 ao;
|
|
228
|
+
ao.x = vertexAo(side.xy, corner.x);
|
|
229
|
+
ao.y = vertexAo(side.yz, corner.y);
|
|
230
|
+
ao.z = vertexAo(side.zw, corner.z);
|
|
231
|
+
ao.w = vertexAo(side.wx, corner.w);
|
|
232
|
+
return 1.0 - ao;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Bilinear interpolation
|
|
236
|
+
vec4 ambient = voxelAo(mapPos - rayStep * mask, mask.zxy, mask.yzx);
|
|
237
|
+
float ao = mix(mix(ambient.z, ambient.w, uv.x), mix(ambient.y, ambient.x, uv.x), uv.y);
|
|
238
|
+
ao = pow(ao, 1.0 / 3.0); // Gamma correction to control AO intensity
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Step 8: DDA Shadow Ray
|
|
242
|
+
```glsl
|
|
243
|
+
// IMPORTANT: Shadow steps must be capped at 16; total main ray + shadow ray steps should not exceed 80
|
|
244
|
+
#define MAX_SHADOW_STEPS 16
|
|
245
|
+
|
|
246
|
+
float castShadow(vec3 ro, vec3 rd) {
|
|
247
|
+
vec3 pos = floor(ro);
|
|
248
|
+
vec3 ri = 1.0 / rd;
|
|
249
|
+
vec3 rs = sign(rd);
|
|
250
|
+
vec3 dis = (pos - ro + 0.5 + rs * 0.5) * ri;
|
|
251
|
+
for (int i = 0; i < MAX_SHADOW_STEPS; i++) {
|
|
252
|
+
if (getVoxel(ivec3(pos))) return 0.0;
|
|
253
|
+
vec3 mm = step(dis.xyz, dis.yzx) * step(dis.xyz, dis.zxy);
|
|
254
|
+
dis += mm * rs * ri;
|
|
255
|
+
pos += mm * rs;
|
|
256
|
+
}
|
|
257
|
+
return 1.0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
vec3 sundir = normalize(vec3(-0.5, 0.6, 0.7));
|
|
261
|
+
float shadow = castShadow(hitPos + normal * 0.01, sundir);
|
|
262
|
+
float diffuse = max(dot(normal, sundir), 0.0) * shadow;
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Complete Code Template
|
|
266
|
+
|
|
267
|
+
```glsl
|
|
268
|
+
// === Voxel Rendering - Complete ShaderToy Template ===
|
|
269
|
+
// Includes: DDA traversal, face shading, neighbor AO, hard shadows
|
|
270
|
+
|
|
271
|
+
// IMPORTANT: Performance critical: SwiftShader software renderer (headless browser evaluation environment) cannot handle too many loop iterations
|
|
272
|
+
// Default 64+16=80 steps, suitable for most scenes. Simple scenes (single cube) can increase to 96+24
|
|
273
|
+
// Multi-building/character/Minecraft scenes must keep 64+16 or lower!
|
|
274
|
+
#define MAX_RAY_STEPS 64
|
|
275
|
+
#define MAX_SHADOW_STEPS 16
|
|
276
|
+
#define GRID_SIZE 16.0
|
|
277
|
+
|
|
278
|
+
// ---- Math Utilities ----
|
|
279
|
+
float sdSphere(vec3 p, float r) { return length(p) - r; }
|
|
280
|
+
float sdBox(vec3 p, vec3 b) {
|
|
281
|
+
vec3 d = abs(p) - b;
|
|
282
|
+
return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0));
|
|
283
|
+
}
|
|
284
|
+
float hash31(vec3 n) { return fract(sin(dot(n, vec3(1.0, 113.0, 257.0))) * 43758.5453); }
|
|
285
|
+
|
|
286
|
+
vec2 rotate2d(vec2 v, float a) {
|
|
287
|
+
float s = sin(a), c = cos(a);
|
|
288
|
+
return vec2(v.x * c - v.y * s, v.y * c + v.x * s);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// ---- Voxel Scene Definition ----
|
|
292
|
+
// IMPORTANT: Default solid cube. Use sdBox for "voxel cube"; add SDF boolean ops for carved/sculpted shapes
|
|
293
|
+
int getVoxel(vec3 c) {
|
|
294
|
+
vec3 p = c + 0.5;
|
|
295
|
+
float d = sdBox(p, vec3(6.0)); // Solid 12x12x12 block
|
|
296
|
+
if (d < 0.0) {
|
|
297
|
+
if (p.y < -3.0) return 2;
|
|
298
|
+
return 1;
|
|
299
|
+
}
|
|
300
|
+
return 0;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// ---- Neighbor AO ----
|
|
304
|
+
float getOccupancy(vec3 c) { return float(getVoxel(c) > 0); }
|
|
305
|
+
|
|
306
|
+
float vertexAo(vec2 side, float corner) {
|
|
307
|
+
return (side.x + side.y + max(corner, side.x * side.y)) / 3.0;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
vec4 voxelAo(vec3 pos, vec3 d1, vec3 d2) {
|
|
311
|
+
vec4 side = vec4(
|
|
312
|
+
getOccupancy(pos + d1), getOccupancy(pos + d2),
|
|
313
|
+
getOccupancy(pos - d1), getOccupancy(pos - d2));
|
|
314
|
+
vec4 corner = vec4(
|
|
315
|
+
getOccupancy(pos + d1 + d2), getOccupancy(pos - d1 + d2),
|
|
316
|
+
getOccupancy(pos - d1 - d2), getOccupancy(pos + d1 - d2));
|
|
317
|
+
vec4 ao;
|
|
318
|
+
ao.x = vertexAo(side.xy, corner.x);
|
|
319
|
+
ao.y = vertexAo(side.yz, corner.y);
|
|
320
|
+
ao.z = vertexAo(side.zw, corner.z);
|
|
321
|
+
ao.w = vertexAo(side.wx, corner.w);
|
|
322
|
+
return 1.0 - ao;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// ---- DDA Traversal Core ----
|
|
326
|
+
struct HitInfo {
|
|
327
|
+
bool hit;
|
|
328
|
+
float t;
|
|
329
|
+
vec3 pos;
|
|
330
|
+
vec3 normal;
|
|
331
|
+
vec3 mapPos;
|
|
332
|
+
vec2 uv;
|
|
333
|
+
int mat;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
HitInfo castRay(vec3 ro, vec3 rd, int maxSteps) {
|
|
337
|
+
HitInfo info;
|
|
338
|
+
info.hit = false;
|
|
339
|
+
info.t = 0.0;
|
|
340
|
+
|
|
341
|
+
vec3 mapPos = floor(ro);
|
|
342
|
+
vec3 rayStep = sign(rd);
|
|
343
|
+
vec3 deltaDist = abs(1.0 / rd);
|
|
344
|
+
vec3 sideDist = (rayStep * (mapPos - ro) + rayStep * 0.5 + 0.5) * deltaDist;
|
|
345
|
+
vec3 mask = vec3(0.0);
|
|
346
|
+
|
|
347
|
+
for (int i = 0; i < maxSteps; i++) {
|
|
348
|
+
int vox = getVoxel(mapPos);
|
|
349
|
+
if (vox > 0) {
|
|
350
|
+
info.hit = true;
|
|
351
|
+
info.mat = vox;
|
|
352
|
+
info.normal = -mask * rayStep;
|
|
353
|
+
info.mapPos = mapPos;
|
|
354
|
+
info.t = dot(sideDist - deltaDist, mask);
|
|
355
|
+
info.pos = ro + rd * info.t;
|
|
356
|
+
vec3 uvw = info.pos - mapPos;
|
|
357
|
+
info.uv = vec2(dot(mask * uvw.yzx, vec3(1.0)),
|
|
358
|
+
dot(mask * uvw.zxy, vec3(1.0)));
|
|
359
|
+
return info;
|
|
360
|
+
}
|
|
361
|
+
mask = step(sideDist.xyz, sideDist.yzx) * step(sideDist.xyz, sideDist.zxy);
|
|
362
|
+
sideDist += mask * deltaDist;
|
|
363
|
+
mapPos += mask * rayStep;
|
|
364
|
+
}
|
|
365
|
+
return info;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// ---- Shadow Ray ----
|
|
369
|
+
// IMPORTANT: Shadow steps at 16 (combined with main ray 64 = 80, within SwiftShader safe range)
|
|
370
|
+
float castShadow(vec3 ro, vec3 rd) {
|
|
371
|
+
vec3 pos = floor(ro);
|
|
372
|
+
vec3 ri = 1.0 / rd;
|
|
373
|
+
vec3 rs = sign(rd);
|
|
374
|
+
vec3 dis = (pos - ro + 0.5 + rs * 0.5) * ri;
|
|
375
|
+
for (int i = 0; i < MAX_SHADOW_STEPS; i++) {
|
|
376
|
+
// IMPORTANT: getVoxel returns int; comparison must use int constant (0), not float (0.0)
|
|
377
|
+
if (getVoxel(pos) > 0) return 0.0;
|
|
378
|
+
vec3 mm = step(dis.xyz, dis.yzx) * step(dis.xyz, dis.zxy);
|
|
379
|
+
dis += mm * rs * ri;
|
|
380
|
+
pos += mm * rs;
|
|
381
|
+
}
|
|
382
|
+
return 1.0;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// ---- Material Colors ----
|
|
386
|
+
// IMPORTANT: Texture coloring key: "low saturation" does not mean "near white/gray"!
|
|
387
|
+
// Low saturation = colorful but not vivid, must retain clear hue differences (e.g., brick red 0.55,0.35,0.3 not gray-white 0.8,0.8,0.8)
|
|
388
|
+
// Brick/stone textures: use UV periodic patterns (mortar lines = dark lines), never use solid colors!
|
|
389
|
+
vec3 getMaterialColor(int mat, vec2 uv) {
|
|
390
|
+
vec3 col = vec3(0.6);
|
|
391
|
+
if (mat == 1) col = vec3(0.7, 0.7, 0.75);
|
|
392
|
+
if (mat == 2) col = vec3(0.4, 0.55, 0.3);
|
|
393
|
+
float checker = mod(floor(uv.x * 4.0) + floor(uv.y * 4.0), 2.0);
|
|
394
|
+
col *= 0.85 + 0.15 * checker;
|
|
395
|
+
return col;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// ---- Brick/Stone Texture Coloring (use this to replace getMaterialColor when user requests "brick texture") ----
|
|
399
|
+
// IMPORTANT: Key: brick texture = UV periodic pattern (staggered rows + mortar dark lines), not solid color!
|
|
400
|
+
vec3 getBrickColor(vec2 uv, vec3 baseColor, vec3 mortarColor) {
|
|
401
|
+
vec2 brickUV = uv * vec2(4.0, 8.0);
|
|
402
|
+
float row = floor(brickUV.y);
|
|
403
|
+
brickUV.x += mod(row, 2.0) * 0.5; // Staggered row offset
|
|
404
|
+
vec2 f = fract(brickUV);
|
|
405
|
+
float mortar = step(f.x, 0.06) + step(f.y, 0.08); // Mortar joints
|
|
406
|
+
mortar = clamp(mortar, 0.0, 1.0);
|
|
407
|
+
float noise = fract(sin(dot(floor(brickUV), vec2(12.9898, 78.233))) * 43758.5453);
|
|
408
|
+
vec3 brickVariation = baseColor * (0.85 + 0.3 * noise); // Slight color variation per brick
|
|
409
|
+
return mix(brickVariation, mortarColor, mortar);
|
|
410
|
+
}
|
|
411
|
+
// Usage example (maze walls):
|
|
412
|
+
// if (mat == 1) col = getBrickColor(uv, vec3(0.55, 0.35, 0.3), vec3(0.4, 0.38, 0.35)); // Brick red + mortar
|
|
413
|
+
// if (mat == 2) col = getBrickColor(uv, vec3(0.5, 0.48, 0.42), vec3(0.35, 0.33, 0.3)); // Gray stone brick
|
|
414
|
+
|
|
415
|
+
// ---- Main Function ----
|
|
416
|
+
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
417
|
+
vec2 screenPos = (fragCoord.xy / iResolution.xy) * 2.0 - 1.0;
|
|
418
|
+
screenPos.x *= iResolution.x / iResolution.y;
|
|
419
|
+
|
|
420
|
+
vec3 ro = vec3(0.0, 2.0 * sin(iTime * 0.5), -12.0);
|
|
421
|
+
vec3 forward = vec3(0.0, 0.0, 0.8);
|
|
422
|
+
vec3 rd = normalize(forward + vec3(screenPos, 0.0));
|
|
423
|
+
|
|
424
|
+
ro.xz = rotate2d(ro.xz, iTime * 0.3);
|
|
425
|
+
rd.xz = rotate2d(rd.xz, iTime * 0.3);
|
|
426
|
+
|
|
427
|
+
vec3 sunDir = normalize(vec3(-0.5, 0.6, 0.7));
|
|
428
|
+
vec3 skyColor = vec3(0.6, 0.75, 0.9);
|
|
429
|
+
|
|
430
|
+
HitInfo hit = castRay(ro, rd, MAX_RAY_STEPS);
|
|
431
|
+
|
|
432
|
+
vec3 col;
|
|
433
|
+
if (hit.hit) {
|
|
434
|
+
vec3 matCol = getMaterialColor(hit.mat, hit.uv);
|
|
435
|
+
|
|
436
|
+
vec3 mask = abs(hit.normal);
|
|
437
|
+
vec4 ambient = voxelAo(hit.mapPos, mask.zxy, mask.yzx);
|
|
438
|
+
float ao = mix(
|
|
439
|
+
mix(ambient.z, ambient.w, hit.uv.x),
|
|
440
|
+
mix(ambient.y, ambient.x, hit.uv.x),
|
|
441
|
+
hit.uv.y);
|
|
442
|
+
ao = pow(ao, 0.5);
|
|
443
|
+
|
|
444
|
+
float shadow = castShadow(hit.pos + hit.normal * 0.01, sunDir);
|
|
445
|
+
|
|
446
|
+
float diff = max(dot(hit.normal, sunDir), 0.0);
|
|
447
|
+
float sky = 0.5 + 0.5 * hit.normal.y;
|
|
448
|
+
|
|
449
|
+
vec3 lighting = vec3(0.0);
|
|
450
|
+
// IMPORTANT: Mountain/terrain scenes: sun light ≤ 2.0, sky light ≤ 1.0; too bright washes out material color differences
|
|
451
|
+
lighting += 2.0 * diff * vec3(1.0, 0.95, 0.8) * shadow;
|
|
452
|
+
lighting += 1.0 * sky * skyColor;
|
|
453
|
+
lighting *= ao;
|
|
454
|
+
|
|
455
|
+
col = matCol * lighting;
|
|
456
|
+
|
|
457
|
+
// IMPORTANT: Fog: coefficient should not be too large, otherwise nearby objects get swallowed into pure sky color
|
|
458
|
+
// 0.0002 suits GRID_SIZE=16 scenes; use smaller coefficients for larger scenes
|
|
459
|
+
float fog = 1.0 - exp(-0.0002 * hit.t * hit.t);
|
|
460
|
+
col = mix(col, skyColor, clamp(fog, 0.0, 0.7)); // Clamp prevents objects from disappearing entirely
|
|
461
|
+
} else {
|
|
462
|
+
col = skyColor - rd.y * 0.2;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
col = pow(clamp(col, 0.0, 1.0), vec3(0.4545));
|
|
466
|
+
fragColor = vec4(col, 1.0);
|
|
467
|
+
}
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
## Common Variants
|
|
471
|
+
|
|
472
|
+
### Variant 1: Glowing Voxels (Glow Accumulation)
|
|
473
|
+
Accumulate distance-based glow values during DDA traversal; produces semi-transparent glow even on miss.
|
|
474
|
+
```glsl
|
|
475
|
+
float glow = 0.0;
|
|
476
|
+
for (int i = 0; i < MAX_RAY_STEPS; i++) {
|
|
477
|
+
float d = sdSomeShape(vec3(mapPos));
|
|
478
|
+
glow += 0.015 / (0.01 + d * d);
|
|
479
|
+
if (d < 0.0) break;
|
|
480
|
+
// ... normal DDA stepping ...
|
|
481
|
+
}
|
|
482
|
+
vec3 col = baseColor + glow * vec3(0.4, 0.6, 1.0);
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Variant 2: Rounded Voxels (Intra-voxel SDF Refinement)
|
|
486
|
+
After DDA hit, perform SDF ray march inside the voxel to render rounded blocks.
|
|
487
|
+
```glsl
|
|
488
|
+
float id = hash31(mapPos);
|
|
489
|
+
float w = 0.05 + 0.35 * id;
|
|
490
|
+
|
|
491
|
+
float sdRoundedBox(vec3 p, float w) {
|
|
492
|
+
return length(max(abs(p) - 0.5 + w, 0.0)) - w;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
vec3 localP = hitPos - mapPos - 0.5;
|
|
496
|
+
for (int j = 0; j < 6; j++) {
|
|
497
|
+
float h = sdRoundedBox(localP, w);
|
|
498
|
+
if (h < 0.025) break;
|
|
499
|
+
localP += rd * max(0.0, h);
|
|
500
|
+
}
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Variant 3: Hybrid SDF-Voxel Traversal
|
|
504
|
+
SDF sphere-tracing with large steps at distance, switching to precise DDA near the surface.
|
|
505
|
+
```glsl
|
|
506
|
+
#define VOXEL_SIZE 0.0625
|
|
507
|
+
#define SWITCH_DIST (VOXEL_SIZE * 1.732)
|
|
508
|
+
|
|
509
|
+
bool useVoxel = false;
|
|
510
|
+
for (int i = 0; i < MAX_STEPS; i++) {
|
|
511
|
+
vec3 pos = ro + rd * t;
|
|
512
|
+
float d = mapSDF(useVoxel ? voxelCenter : pos);
|
|
513
|
+
if (!useVoxel) {
|
|
514
|
+
t += d;
|
|
515
|
+
if (d < SWITCH_DIST) { useVoxel = true; voxelPos = getVoxelPos(pos); }
|
|
516
|
+
} else {
|
|
517
|
+
if (d < 0.0) break;
|
|
518
|
+
if (d > SWITCH_DIST) { useVoxel = false; t += d; continue; }
|
|
519
|
+
vec3 exitT = (voxelPos - ro * ird + ird * VOXEL_SIZE * 0.5);
|
|
520
|
+
// ... select minimum axis to advance ...
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
### Variant 4: Voxel Cone Tracing
|
|
526
|
+
Build multi-level mipmaps, cast cone-shaped rays from hit points for global illumination.
|
|
527
|
+
```glsl
|
|
528
|
+
vec4 traceCone(vec3 origin, vec3 dir, float coneRatio) {
|
|
529
|
+
vec4 light = vec4(0.0);
|
|
530
|
+
float t = 1.0;
|
|
531
|
+
for (int i = 0; i < 58; i++) {
|
|
532
|
+
vec3 sp = origin + dir * t;
|
|
533
|
+
float diameter = max(1.0, t * coneRatio);
|
|
534
|
+
float lod = log2(diameter);
|
|
535
|
+
vec4 sample = voxelFetch(sp, lod);
|
|
536
|
+
light += sample * (1.0 - light.w);
|
|
537
|
+
t += diameter;
|
|
538
|
+
}
|
|
539
|
+
return light;
|
|
540
|
+
}
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
### Variant 5: PBR Lighting + Multi-Bounce Reflection
|
|
544
|
+
GGX BRDF replacing Lambert, with metallic/roughness parameters; cast a second DDA ray for reflections.
|
|
545
|
+
```glsl
|
|
546
|
+
float ggxDiffuse(float NoL, float NoV, float LoH, float roughness) {
|
|
547
|
+
float FD90 = 0.5 + 2.0 * roughness * LoH * LoH;
|
|
548
|
+
float a = 1.0 + (FD90 - 1.0) * pow(1.0 - NoL, 5.0);
|
|
549
|
+
float b = 1.0 + (FD90 - 1.0) * pow(1.0 - NoV, 5.0);
|
|
550
|
+
return a * b / 3.14159;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
vec3 rd2 = reflect(rd, normal);
|
|
554
|
+
HitInfo reflHit = castRay(hitPos + normal * 0.001, rd2, 64);
|
|
555
|
+
vec3 reflColor = reflHit.hit ? shade(reflHit) : skyColor;
|
|
556
|
+
|
|
557
|
+
float fresnel = 0.04 + 0.96 * pow(1.0 - max(dot(normal, -rd), 0.0), 5.0);
|
|
558
|
+
col += fresnel * reflColor;
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
### Variant 6: Voxel Water Scene (Water + Underwater Voxels)
|
|
562
|
+
Water surface ripple reflections, underwater refraction, sand and seaweed for a complete water scene.
|
|
563
|
+
```glsl
|
|
564
|
+
float waterY = 0.0;
|
|
565
|
+
|
|
566
|
+
// Underwater voxel scene definition (sand + seaweed)
|
|
567
|
+
// IMPORTANT: All coordinate operations must use correct vector dimensions!
|
|
568
|
+
// c.xz returns vec2, only has .x/.y components, cannot use .z!
|
|
569
|
+
int getVoxel(vec3 c) {
|
|
570
|
+
float sandHeight = -3.0 + 0.5 * sin(c.x * 0.3) * cos(c.z * 0.4);
|
|
571
|
+
if (c.y < sandHeight) return 1; // Sand interior
|
|
572
|
+
if (c.y < sandHeight + 1.0) return 2; // Sand surface
|
|
573
|
+
// Seaweed: only grows underwater, above sand
|
|
574
|
+
float grassHash = fract(sin(dot(floor(c.xz), vec2(12.9898, 78.233))) * 43758.5453);
|
|
575
|
+
// IMPORTANT: floor(c.xz) is vec2; the second argument to dot() must also be vec2
|
|
576
|
+
if (grassHash > 0.85 && c.y >= sandHeight + 1.0 && c.y < sandHeight + 1.0 + 3.0 * grassHash) {
|
|
577
|
+
return 3; // Seaweed
|
|
578
|
+
}
|
|
579
|
+
return 0;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
// Handle water surface in main rendering
|
|
583
|
+
float tWater = (waterY - ro.y) / rd.y;
|
|
584
|
+
bool hitWater = tWater > 0.0 && (tWater < hit.t || !hit.hit);
|
|
585
|
+
|
|
586
|
+
if (hitWater) {
|
|
587
|
+
vec3 waterPos = ro + rd * tWater;
|
|
588
|
+
vec3 waterNormal = vec3(0.0, 1.0, 0.0);
|
|
589
|
+
// IMPORTANT: waterPos.xz is vec2; access with .x/.y (not .x/.z)
|
|
590
|
+
vec2 waveXZ = waterPos.xz; // vec2: waveXZ.x = worldX, waveXZ.y = worldZ
|
|
591
|
+
waterNormal.x += 0.05 * sin(waveXZ.x * 3.0 + iTime);
|
|
592
|
+
waterNormal.z += 0.05 * cos(waveXZ.y * 2.0 + iTime * 0.7);
|
|
593
|
+
waterNormal = normalize(waterNormal);
|
|
594
|
+
|
|
595
|
+
float fresnel = 0.04 + 0.96 * pow(1.0 - max(dot(waterNormal, -rd), 0.0), 5.0);
|
|
596
|
+
|
|
597
|
+
// Reflection
|
|
598
|
+
vec3 reflDir = reflect(rd, waterNormal);
|
|
599
|
+
HitInfo reflHit = castRay(waterPos + waterNormal * 0.01, reflDir, 64);
|
|
600
|
+
vec3 reflCol = reflHit.hit ? getMaterialColor(reflHit.mat, reflHit.uv) : skyColor;
|
|
601
|
+
|
|
602
|
+
// Refraction (underwater voxels: sand, seaweed)
|
|
603
|
+
vec3 refrDir = refract(rd, waterNormal, 1.0 / 1.33);
|
|
604
|
+
HitInfo refrHit = castRay(waterPos - waterNormal * 0.01, refrDir, 64);
|
|
605
|
+
vec3 refrCol;
|
|
606
|
+
if (refrHit.hit) {
|
|
607
|
+
vec3 matCol = getMaterialColor(refrHit.mat, refrHit.uv);
|
|
608
|
+
float underwaterDist = length(refrHit.pos - waterPos);
|
|
609
|
+
refrCol = mix(matCol, vec3(0.0, 0.15, 0.3), 1.0 - exp(-0.1 * underwaterDist));
|
|
610
|
+
} else {
|
|
611
|
+
refrCol = vec3(0.0, 0.1, 0.3);
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
col = mix(refrCol, reflCol, fresnel);
|
|
615
|
+
col = mix(col, vec3(0.0, 0.3, 0.5), 0.2);
|
|
616
|
+
}
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
### Variant 7: Rotating Voxel Objects
|
|
620
|
+
Rotate voxel objects as a whole. Core: apply inverse rotation to sample points in getVoxel.
|
|
621
|
+
```glsl
|
|
622
|
+
// IMPORTANT: Correct way to rotate objects: apply inverse rotation to sample coordinates in getVoxel
|
|
623
|
+
// Wrong approach: only rotate the camera (that just changes the viewpoint, not the object)
|
|
624
|
+
int getVoxel(vec3 c) {
|
|
625
|
+
vec3 p = c + 0.5;
|
|
626
|
+
// Rotate around Y axis
|
|
627
|
+
float angle = -iTime * 0.5;
|
|
628
|
+
float s = sin(angle), co = cos(angle);
|
|
629
|
+
p.xz = vec2(p.x * co - p.z * s, p.x * s + p.z * co);
|
|
630
|
+
// Can also rotate around multiple axes:
|
|
631
|
+
// p.yz = vec2(p.y * co2 - p.z * s2, p.y * s2 + p.z * co2); // X axis rotation
|
|
632
|
+
float d = sdBox(p, vec3(6.0));
|
|
633
|
+
if (d < 0.0) return 1;
|
|
634
|
+
return 0;
|
|
635
|
+
}
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
### Variant 8: Indoor/Cave/Enclosed Scenes (Point Lights + High Ambient Lighting)
|
|
639
|
+
Indoor, cave, underground, sci-fi base, and other enclosed or semi-enclosed scenes require point lights and high ambient lighting.
|
|
640
|
+
```glsl
|
|
641
|
+
// IMPORTANT: Key points for enclosed/semi-enclosed scenes (caves, interiors, sci-fi bases, mazes, etc.):
|
|
642
|
+
// 1. Camera must be placed inside the cavity (a position where getVoxel returns 0)
|
|
643
|
+
// 2. Must use point lights, not just directional light (directional light blocked by walls/ceiling = total darkness!)
|
|
644
|
+
// 3. Ambient light must be high enough (at least 0.2-0.3) to prevent scene from being too dark to see details
|
|
645
|
+
// 4. Can use multiple point lights + emissive voxels to simulate torches/fluorescence/holographic displays
|
|
646
|
+
// 5. Sci-fi scene metallic walls need bright enough light sources to show reflections
|
|
647
|
+
// 6. Emissive elements (holographic screens, indicator lights, magic circles) use emissive materials: add emissive color directly to lighting
|
|
648
|
+
|
|
649
|
+
// Cave scene: cavity = area where getVoxel returns 0
|
|
650
|
+
// IMPORTANT: Cave/terrain noise functions must respect vector dimensions!
|
|
651
|
+
// p.xz is vec2; if noise/fbm function takes vec3, construct a full vec3:
|
|
652
|
+
// Correct: fbm(vec3(p.xz, p.y * 0.5)) or use vec2 version of noise
|
|
653
|
+
// Wrong: fbm(p.xz + vec3(...)) ← vec2 + vec3 compile failure!
|
|
654
|
+
int getVoxel(vec3 c) {
|
|
655
|
+
float cave = sdSphere(c + 0.5, 12.0);
|
|
656
|
+
// IMPORTANT: For noise-carved detail, use c's components directly (all float)
|
|
657
|
+
cave += 2.0 * sin(c.x * 0.3) * sin(c.y * 0.4) * sin(c.z * 0.35);
|
|
658
|
+
if (cave > 0.0) return 1; // Rock wall
|
|
659
|
+
return 0; // Cavity (camera goes here)
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
// Point light attenuation
|
|
663
|
+
vec3 pointLightPos = vec3(0.0, 3.0, 0.0);
|
|
664
|
+
vec3 toLight = pointLightPos - hit.pos;
|
|
665
|
+
float lightDist = length(toLight);
|
|
666
|
+
vec3 lightDir = toLight / lightDist;
|
|
667
|
+
float attenuation = 1.0 / (1.0 + 0.1 * lightDist + 0.01 * lightDist * lightDist);
|
|
668
|
+
|
|
669
|
+
float diff = max(dot(hit.normal, lightDir), 0.0);
|
|
670
|
+
float shadow = castShadow(hit.pos + hit.normal * 0.01, lightDir);
|
|
671
|
+
|
|
672
|
+
vec3 lighting = vec3(0.0);
|
|
673
|
+
// IMPORTANT: High ambient light to prevent total darkness (required for enclosed scenes! at least 0.2)
|
|
674
|
+
lighting += vec3(0.25, 0.22, 0.2); // Warm ambient light
|
|
675
|
+
lighting += 3.0 * diff * attenuation * vec3(1.0, 0.8, 0.5) * shadow; // Point light
|
|
676
|
+
|
|
677
|
+
// Multiple torches/emissive objects (use sin for flicker animation)
|
|
678
|
+
vec3 torch1 = vec3(5.0, 2.0, 3.0);
|
|
679
|
+
vec3 torch2 = vec3(-4.0, 1.0, -5.0);
|
|
680
|
+
float flicker1 = 0.8 + 0.2 * sin(iTime * 5.0 + 1.0);
|
|
681
|
+
float flicker2 = 0.8 + 0.2 * sin(iTime * 4.3 + 2.7);
|
|
682
|
+
lighting += calcPointLight(hit.pos, hit.normal, torch1, vec3(1.0, 0.6, 0.2)) * flicker1;
|
|
683
|
+
lighting += calcPointLight(hit.pos, hit.normal, torch2, vec3(0.2, 1.0, 0.5)) * flicker2;
|
|
684
|
+
|
|
685
|
+
// Emissive materials (holographic displays, fluorescent moss, indicator lights, magic circles, etc.)
|
|
686
|
+
// IMPORTANT: Emissive colors are added directly to lighting, unaffected by shadows
|
|
687
|
+
if (hit.mat == 2) {
|
|
688
|
+
lighting += vec3(0.1, 0.4, 0.15); // Fluorescent moss (faint green)
|
|
689
|
+
}
|
|
690
|
+
if (hit.mat == 3) {
|
|
691
|
+
float pulse = 0.7 + 0.3 * sin(iTime * 2.0);
|
|
692
|
+
lighting += vec3(0.2, 0.6, 1.0) * pulse; // Blue pulse light
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
col = matCol * lighting;
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
### Variant 9: Voxel Character Animation
|
|
699
|
+
Simple voxel character animation using time-driven offsets and rotations.
|
|
700
|
+
```glsl
|
|
701
|
+
// IMPORTANT: Voxel character animation core approach:
|
|
702
|
+
// 1. Split the character into multiple body parts (head, torso, left arm, right arm, left leg, right leg)
|
|
703
|
+
// 2. Each part is an sdBox with independent offset/rotation parameters
|
|
704
|
+
// 3. iTime drives limb swinging (sin/cos periodic motion)
|
|
705
|
+
// 4. Combine all parts using SDF min()
|
|
706
|
+
// IMPORTANT: SwiftShader performance critical: character function is called at every DDA step!
|
|
707
|
+
// Must add AABB bounding box check in getVoxel: first check if c is near the character,
|
|
708
|
+
// skip sdBox calculations for that character if not nearby. Otherwise frame timeout → black screen
|
|
709
|
+
// Reduce MAX_RAY_STEPS to 64, MAX_SHADOW_STEPS to 16
|
|
710
|
+
|
|
711
|
+
int getCharacter(vec3 p, vec3 charPos, float animPhase) {
|
|
712
|
+
vec3 lp = p - charPos;
|
|
713
|
+
float limbSwing = sin(iTime * 4.0 + animPhase) * 0.5;
|
|
714
|
+
|
|
715
|
+
// Torso
|
|
716
|
+
float body = sdBox(lp - vec3(0, 3, 0), vec3(1.5, 2.0, 1.0));
|
|
717
|
+
// Head
|
|
718
|
+
float head = sdBox(lp - vec3(0, 6, 0), vec3(1.2, 1.2, 1.2));
|
|
719
|
+
|
|
720
|
+
// Arm swing (offset y coordinate around shoulder joint to simulate rotation)
|
|
721
|
+
vec3 armOffset = vec3(0, limbSwing * 2.0, limbSwing);
|
|
722
|
+
float leftArm = sdBox(lp - vec3(-2.5, 3, 0) - armOffset, vec3(0.5, 2.0, 0.5));
|
|
723
|
+
float rightArm = sdBox(lp - vec3(2.5, 3, 0) + armOffset, vec3(0.5, 2.0, 0.5));
|
|
724
|
+
|
|
725
|
+
// Alternating leg swing
|
|
726
|
+
vec3 legOffset = vec3(0, 0, limbSwing * 1.5);
|
|
727
|
+
float leftLeg = sdBox(lp - vec3(-0.7, 0, 0) - legOffset, vec3(0.5, 1.5, 0.5));
|
|
728
|
+
float rightLeg = sdBox(lp - vec3(0.7, 0, 0) + legOffset, vec3(0.5, 1.5, 0.5));
|
|
729
|
+
|
|
730
|
+
float d = min(body, min(head, min(leftArm, min(rightArm, min(leftLeg, rightLeg)))));
|
|
731
|
+
if (d < 0.0) {
|
|
732
|
+
if (head < 0.0) return 10; // Head (skin color)
|
|
733
|
+
if (leftArm < 0.0 || rightArm < 0.0) return 11; // Arms
|
|
734
|
+
return 12; // Torso/legs
|
|
735
|
+
}
|
|
736
|
+
return 0;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
// Combine scene + characters in getVoxel
|
|
740
|
+
// IMPORTANT: Must add AABB bounding box early exit! Character sdBox calculations are expensive
|
|
741
|
+
int getVoxel(vec3 c) {
|
|
742
|
+
// Scene (floor, walls, etc.)
|
|
743
|
+
int scene = getSceneVoxel(c);
|
|
744
|
+
if (scene > 0) return scene;
|
|
745
|
+
// IMPORTANT: AABB check: only call getCharacter near the character
|
|
746
|
+
// Character 1: warrior (at position (5,0,0)), bounding box ±5 cells
|
|
747
|
+
if (abs(c.x - 5.0) < 5.0 && c.y >= 0.0 && c.y < 10.0 && abs(c.z) < 5.0) {
|
|
748
|
+
int char1 = getCharacter(c, vec3(5, 0, 0), 0.0);
|
|
749
|
+
if (char1 > 0) return char1;
|
|
750
|
+
}
|
|
751
|
+
// Character 2: mage (at position (-5,0,3)), bounding box ±5 cells
|
|
752
|
+
if (abs(c.x + 5.0) < 5.0 && c.y >= 0.0 && c.y < 10.0 && abs(c.z - 3.0) < 5.0) {
|
|
753
|
+
int char2 = getCharacter(c, vec3(-5, 0, 3), 3.14);
|
|
754
|
+
if (char2 > 0) return char2;
|
|
755
|
+
}
|
|
756
|
+
return 0;
|
|
757
|
+
}
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
### Variant 10: Waterfall / Flowing Water Particle Effects
|
|
761
|
+
Dynamic waterfall, splash particles, water mist effects. Core: time-offset noise simulates water flow, hashed particles simulate splashes, exponential decay simulates mist.
|
|
762
|
+
```glsl
|
|
763
|
+
// IMPORTANT: Key points for waterfall/flowing water/particle effects:
|
|
764
|
+
// 1. Waterfall stream: noise + iTime vertical offset simulates water column flowing down
|
|
765
|
+
// 2. Splash particles: hash-distributed voxels at the bottom, positions change with iTime to simulate splashing
|
|
766
|
+
// 3. Water mist: semi-transparent accumulation (reduced alpha) or density field at the bottom simulates mist diffusion
|
|
767
|
+
// 4. Waterfall must have a clear high point (cliff/rock wall) and low point (pool), drop ≥ 10 cells
|
|
768
|
+
// 5. Water stream material uses light blue-white + brightness flicker to simulate flowing water feel
|
|
769
|
+
|
|
770
|
+
float hash21(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }
|
|
771
|
+
|
|
772
|
+
int getVoxel(vec3 c) {
|
|
773
|
+
// Cliff rock walls (both sides + back)
|
|
774
|
+
if (c.x < -5.0 || c.x > 5.0) {
|
|
775
|
+
if (c.y < 15.0 && c.z > -3.0 && c.z < 3.0) return 1; // Rock
|
|
776
|
+
}
|
|
777
|
+
if (c.z > 2.0 && c.y < 15.0 && abs(c.x) < 6.0) return 1; // Back wall
|
|
778
|
+
|
|
779
|
+
// Cliff top platform
|
|
780
|
+
if (c.y >= 13.0 && c.y < 15.0 && c.z > -1.0 && c.z < 3.0 && abs(c.x) < 5.0) return 1;
|
|
781
|
+
|
|
782
|
+
// Bottom pool floor
|
|
783
|
+
if (c.y < -2.0 && abs(c.x) < 8.0 && c.z > -6.0 && c.z < 3.0) return 2; // Pool bottom
|
|
784
|
+
|
|
785
|
+
// IMPORTANT: Waterfall stream: narrow band x ∈ [-2, 2], falling from y=13 to y=0
|
|
786
|
+
// Use iTime offset on y-coordinate noise to simulate downward water flow
|
|
787
|
+
if (abs(c.x) < 2.0 && c.y >= 0.0 && c.y < 13.0 && c.z > -1.0 && c.z < 1.0) {
|
|
788
|
+
float flowNoise = hash21(vec2(floor(c.x), floor(c.y - iTime * 8.0)));
|
|
789
|
+
if (flowNoise > 0.25) return 3; // Water (gaps simulate translucent water curtain)
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
// IMPORTANT: Splash particles: bottom y ∈ [-1, 3], x ∈ [-4, 4]
|
|
793
|
+
// Use hash + iTime to generate randomly bouncing voxel particles
|
|
794
|
+
if (c.y >= -1.0 && c.y < 3.0 && abs(c.x) < 4.0 && c.z > -3.0 && c.z < 2.0) {
|
|
795
|
+
float t = iTime * 3.0;
|
|
796
|
+
float particleHash = hash21(vec2(floor(c.x * 2.0), floor(c.z * 2.0) + floor(t)));
|
|
797
|
+
float yOffset = fract(t + particleHash) * 3.0; // Particle upward trajectory
|
|
798
|
+
if (abs(c.y - yOffset) < 0.6 && particleHash > 0.7) return 4; // Splash particle
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
// IMPORTANT: Water mist: bottom y ∈ [-1, 2], wider range than splashes
|
|
802
|
+
// Density decreases with height and distance from waterfall center
|
|
803
|
+
if (c.y >= -1.0 && c.y < 2.0 && abs(c.x) < 6.0 && c.z > -5.0 && c.z < 3.0) {
|
|
804
|
+
float distFromCenter = length(vec2(c.x, c.z));
|
|
805
|
+
float mistDensity = exp(-0.15 * distFromCenter) * exp(-0.5 * max(c.y, 0.0));
|
|
806
|
+
float mistNoise = hash21(vec2(floor(c.x * 0.5 + iTime * 0.5), floor(c.z * 0.5)));
|
|
807
|
+
if (mistNoise < mistDensity * 0.8) return 5; // Water mist
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
return 0;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
// Material colors
|
|
814
|
+
vec3 getMaterialColor(int mat, vec2 uv) {
|
|
815
|
+
if (mat == 1) return vec3(0.45, 0.4, 0.35); // Rock
|
|
816
|
+
if (mat == 2) return vec3(0.35, 0.3, 0.25); // Pool bottom
|
|
817
|
+
if (mat == 3) { // Water stream (shimmering blue-white)
|
|
818
|
+
float shimmer = 0.8 + 0.2 * sin(uv.y * 20.0 + iTime * 10.0);
|
|
819
|
+
return vec3(0.6, 0.8, 1.0) * shimmer;
|
|
820
|
+
}
|
|
821
|
+
if (mat == 4) return vec3(0.85, 0.92, 1.0); // Splash (bright white)
|
|
822
|
+
if (mat == 5) return vec3(0.7, 0.82, 0.9); // Water mist (pale blue-white)
|
|
823
|
+
return vec3(0.5);
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
// IMPORTANT: Water mist material needs special lighting: high emissive + translucent feel
|
|
827
|
+
// During shading:
|
|
828
|
+
if (hit.mat == 5) {
|
|
829
|
+
lighting += vec3(0.4, 0.5, 0.6); // Water mist emissive (unaffected by shadows)
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
// Camera: side angle slightly elevated, showing the full waterfall (top to bottom + bottom splashes and mist)
|
|
833
|
+
// ro = vec3(12.0, 10.0, -10.0), lookAt = vec3(0.0, 6.0, 0.0)
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
### Variant 11: Multi-Building / Town / Minecraft-Style Scenes (Multi-Structure Town Composition)
|
|
837
|
+
Towns, villages, Minecraft-style worlds, and other scenes requiring multiple discrete structures (houses, trees, lampposts, etc.) placed on the ground.
|
|
838
|
+
**IMPORTANT: "Minecraft-like voxel scene" = multi-building scene; must follow the performance constraints of this template!**
|
|
839
|
+
```glsl
|
|
840
|
+
// IMPORTANT: Key points for multi-building scenes:
|
|
841
|
+
// 1. Define the ground first (height map or flat plane), ensure ground getVoxel returns correct material
|
|
842
|
+
// 2. Each building uses an independent helper function, receiving local coordinates, returning material ID
|
|
843
|
+
// 3. In getVoxel, check each building sequentially (using offset coordinates), return on first hit
|
|
844
|
+
// 4. Camera must be outside the scene facing the center, far enough to see the full view
|
|
845
|
+
// 5. IMPORTANT: Building coordinate ranges must be within DDA traversal range (MAX_RAY_STEPS * cell ≈ reachable distance)
|
|
846
|
+
// 6. IMPORTANT: Scene range should not be too large! Concentrate all buildings within -20~20 range, camera 30-50 cells away
|
|
847
|
+
// 7. IMPORTANT: SwiftShader performance critical: getVoxel must have AABB bounding box early exit!
|
|
848
|
+
// Above ground (c.y > 0), check AABB range first; return 0 immediately if outside building area
|
|
849
|
+
// Otherwise every DDA step checks all buildings → frame timeout → black screen / only sky renders
|
|
850
|
+
// 8. IMPORTANT: MAX_RAY_STEPS reduced to 64, MAX_SHADOW_STEPS to 16 (complex getVoxel requires lower step counts)
|
|
851
|
+
|
|
852
|
+
// Single house: width w, depth d, height h, with triangular roof
|
|
853
|
+
int makeHouse(vec3 p, float w, float d, float h, int wallMat, int roofMat) {
|
|
854
|
+
// Walls
|
|
855
|
+
if (p.x >= 0.0 && p.x < w && p.z >= 0.0 && p.z < d && p.y >= 0.0 && p.y < h) {
|
|
856
|
+
return wallMat;
|
|
857
|
+
}
|
|
858
|
+
// Triangular roof: starts from wall top, x range narrows by 1 per level
|
|
859
|
+
float roofY = p.y - h;
|
|
860
|
+
float roofInset = roofY; // Inset by 1 cell per level
|
|
861
|
+
if (roofY >= 0.0 && roofY < w * 0.5
|
|
862
|
+
&& p.x >= roofInset && p.x < w - roofInset
|
|
863
|
+
&& p.z >= 0.0 && p.z < d) {
|
|
864
|
+
return roofMat;
|
|
865
|
+
}
|
|
866
|
+
return 0;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
// Tree: trunk + spherical canopy
|
|
870
|
+
int makeTree(vec3 p, float trunkH, float crownR, int trunkMat, int leafMat) {
|
|
871
|
+
// Trunk (1x1 column)
|
|
872
|
+
if (p.x >= -0.5 && p.x < 0.5 && p.z >= -0.5 && p.z < 0.5
|
|
873
|
+
&& p.y >= 0.0 && p.y < trunkH) {
|
|
874
|
+
return trunkMat;
|
|
875
|
+
}
|
|
876
|
+
// Spherical canopy
|
|
877
|
+
vec3 crownCenter = vec3(0.0, trunkH + crownR * 0.5, 0.0);
|
|
878
|
+
if (length(p - crownCenter) < crownR) {
|
|
879
|
+
return leafMat;
|
|
880
|
+
}
|
|
881
|
+
return 0;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
// Lamppost: thin pole + glowing top block
|
|
885
|
+
int makeLamp(vec3 p, float h, int poleMat, int lightMat) {
|
|
886
|
+
if (p.x >= -0.3 && p.x < 0.3 && p.z >= -0.3 && p.z < 0.3
|
|
887
|
+
&& p.y >= 0.0 && p.y < h) {
|
|
888
|
+
return poleMat; // Pole
|
|
889
|
+
}
|
|
890
|
+
if (p.x >= -0.5 && p.x < 0.5 && p.z >= -0.5 && p.z < 0.5
|
|
891
|
+
&& p.y >= h && p.y < h + 1.0) {
|
|
892
|
+
return lightMat; // Lamp head (emissive)
|
|
893
|
+
}
|
|
894
|
+
return 0;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
int getVoxel(vec3 c) {
|
|
898
|
+
// 1. Ground (y < 0 is underground, y == 0 layer is surface)
|
|
899
|
+
if (c.y < -1.0) return 0;
|
|
900
|
+
if (c.y < 0.0) return 1; // Ground (dirt/grass)
|
|
901
|
+
|
|
902
|
+
// 2. Road (along z direction, x range -2~2)
|
|
903
|
+
if (c.y < 1.0 && abs(c.x) < 2.0) return 2; // Road surface
|
|
904
|
+
|
|
905
|
+
// IMPORTANT: AABB bounding box early exit (required for SwiftShader!)
|
|
906
|
+
// All buildings are within x:-15~15, y:0~12, z:-5~15
|
|
907
|
+
// Return 0 immediately outside this range, avoiding per-building checks
|
|
908
|
+
if (c.x < -15.0 || c.x > 15.0 || c.y > 12.0 || c.z < -5.0 || c.z > 15.0) return 0;
|
|
909
|
+
|
|
910
|
+
// 3. Place buildings (each with offset coordinates)
|
|
911
|
+
// IMPORTANT: House width/height must be ≥ 5 cells, otherwise they look like dots from far away! Use bright material colors
|
|
912
|
+
int m;
|
|
913
|
+
|
|
914
|
+
// House A: position (5, 0, 3), width 6, depth 5, height 5
|
|
915
|
+
m = makeHouse(c - vec3(5.0, 0.0, 3.0), 6.0, 5.0, 5.0, 3, 4);
|
|
916
|
+
if (m > 0) return m;
|
|
917
|
+
|
|
918
|
+
// House B: position (-10, 0, 2), width 7, depth 5, height 5
|
|
919
|
+
m = makeHouse(c - vec3(-10.0, 0.0, 2.0), 7.0, 5.0, 5.0, 5, 4);
|
|
920
|
+
if (m > 0) return m;
|
|
921
|
+
|
|
922
|
+
// Tree: position (0, 0, 8)
|
|
923
|
+
m = makeTree(c - vec3(0.0, 0.0, 8.0), 4.0, 2.5, 6, 7);
|
|
924
|
+
if (m > 0) return m;
|
|
925
|
+
|
|
926
|
+
// Lamppost: position (3, 0, 0)
|
|
927
|
+
m = makeLamp(c - vec3(3.0, 0.0, 0.0), 5.0, 8, 9);
|
|
928
|
+
if (m > 0) return m;
|
|
929
|
+
|
|
930
|
+
return 0;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
// IMPORTANT: Camera setup: must be far enough to overlook the entire town
|
|
934
|
+
// Recommended: ro = vec3(0, 15, -35), looking at scene center vec3(0, 3, 5)
|
|
935
|
+
vec3 ro = vec3(0.0, 15.0, -35.0);
|
|
936
|
+
vec3 lookAt = vec3(0.0, 3.0, 5.0);
|
|
937
|
+
vec3 forward = normalize(lookAt - ro);
|
|
938
|
+
vec3 right = normalize(cross(forward, vec3(0, 1, 0)));
|
|
939
|
+
vec3 up = cross(right, forward);
|
|
940
|
+
vec3 rd = normalize(forward * 0.8 + right * screenPos.x + up * screenPos.y);
|
|
941
|
+
|
|
942
|
+
// IMPORTANT: Sunset/side-lit scene key: when light comes from the side or at low angle, building fronts may be completely backlit turning into black silhouettes!
|
|
943
|
+
// Must satisfy all: (1) ambient light ≥ 0.3 (prevent backlit faces from going black); (2) house walls use bright materials (e.g., light yellow 0.85,0.75,0.55)
|
|
944
|
+
// (3) house dimensions must not be too small (width/height ≥ 5 cells), otherwise they look like dots from far away
|
|
945
|
+
vec3 sunDir = normalize(vec3(-0.8, 0.3, 0.5)); // Sunset low angle
|
|
946
|
+
vec3 sunColor = vec3(1.0, 0.6, 0.3); // Warm orange
|
|
947
|
+
vec3 ambientColor = vec3(0.35, 0.3, 0.4); // IMPORTANT: High ambient light (≥0.3) to prevent silhouettes
|
|
948
|
+
// lighting = ambientColor + diff * sunColor * shadow;
|
|
949
|
+
```
|
|
950
|
+
|
|
951
|
+
## Performance & Composition
|
|
952
|
+
|
|
953
|
+
**Performance Tips:**
|
|
954
|
+
- Early exit: break immediately when `mapPos` exceeds scene bounds
|
|
955
|
+
- Shadow ray steps of 16-24 are sufficient
|
|
956
|
+
- Use SDF sphere-tracing with large steps in open areas, switch to DDA near surfaces
|
|
957
|
+
- Material queries, AO, normals, etc. are only computed after hit
|
|
958
|
+
- Replace procedural voxel queries with `texelFetch` texture sampling
|
|
959
|
+
- Multi-frame accumulation + reprojection for low-noise results
|
|
960
|
+
- **IMPORTANT: MAX_RAY_STEPS defaults to 64, MAX_SHADOW_STEPS defaults to 16 (total 80)**. Only simple scenes (single cube/sphere) can increase to 96+24. Multi-building/Minecraft/character scenes with complex getVoxel must keep 64+16 or lower, otherwise SwiftShader frame timeout → only sky background renders
|
|
961
|
+
|
|
962
|
+
**Composition Tips:**
|
|
963
|
+
- **Procedural noise terrain**: use FBM/Perlin noise height maps inside `getVoxel()`
|
|
964
|
+
- **SDF procedural modeling**: use SDF boolean operations inside `getVoxel()` to define shapes
|
|
965
|
+
- **Texture mapping**: after hit, sample 16x16 pixel textures using face UV * 16
|
|
966
|
+
- **Atmospheric scattering / volumetric fog**: accumulate medium density during DDA traversal
|
|
967
|
+
- **Water surface rendering**: Fresnel reflection/refraction on a specific Y plane (see Variant 6 above)
|
|
968
|
+
- **Global illumination**: cone tracing or Monte Carlo hemisphere sampling
|
|
969
|
+
- **Temporal reprojection**: multi-frame accumulation + previous frame reprojection for anti-aliasing and denoising
|
|
970
|
+
|
|
971
|
+
## Common Errors
|
|
972
|
+
|
|
973
|
+
1. **GLSL reserved words causing compile failure**: `cast`, `class`, `template`, `namespace`, `input`, `output`, `filter`, `image`, `sampler`, `half`, `fixed`, etc. are GLSL reserved words and **must never be used as variable or function names**. Use compound names: `castRay`, `castShadow`, `shootRay`, `spellEffect` (not `cast`)
|
|
974
|
+
2. **Enclosed/semi-enclosed scene total darkness**: caves, interiors, sci-fi bases, mazes, and other enclosed scenes cannot rely solely on directional light (completely blocked by walls/ceiling); must use point lights + high ambient light (≥0.2) + emissive materials (see Variant 8)
|
|
975
|
+
3. **Camera inside voxel causing rendering anomalies**: cave/indoor scene camera origin must be inside the cavity (where getVoxel returns 0), otherwise the first DDA step hits immediately = scene invisible
|
|
976
|
+
4. **Complex getVoxel causing SwiftShader black screen (most common with Minecraft-style/town/character/multi-building scenes!)**: getVoxel is called once per DDA step; if it contains multiple buildings/characters/terrain+trees without early exit, frame timeout → only sky background renders. **Must do all of**: (1) AABB bounding box early exit (check coordinate range first, return 0 immediately outside building area); (2) MAX_RAY_STEPS ≤ 64, MAX_SHADOW_STEPS ≤ 16; (3) scene range within ±20 cells. **Minecraft-style scene = multi-building scene**; must follow this rule (see Variant 9, 11 template code)
|
|
977
|
+
5. **vec2/vec3 dimension mismatch causing compile failure**: `p.xz` returns `vec2` and cannot be passed directly to noise/fbm functions expecting `vec3` parameters or used in operations with `vec3`. Use `vec3(p.xz, val)` to construct a full vec3, or use vec2 versions of functions
|
|
978
|
+
6. **Mountain/terrain height-based coloring invisible**: (1) `maxH` must equal the actual max return value of the terrain noise function (don't arbitrarily use 20.0); (2) grass threshold at 0.4 (largest area ensures green is visible), rock 0.4~0.7, snow >0.7; (3) grass green must be saturated enough `vec3(0.25, 0.55, 0.15)` not grayish; (4) sun intensity ≤2.0, sky light ≤1.0, too bright washes out colors; (5) gamma correction reduces saturation, pre-compensate material colors (see Step 4 mountain terrain template)
|
|
979
|
+
7. **Waterfall/flowing water effect lacks recognizability**: waterfall must have a clear cliff drop (≥10 cells), visible water column (noise + iTime offset), bottom splash particles (hash random bouncing), and mist (exponential decay density field). Just a gradient color block is not a waterfall! See Variant 10 complete template
|
|
980
|
+
8. **"Low saturation coloring" becomes pure white/gray**: low saturation ≠ near white! Low saturation means colors are not vivid but still have clear hue (e.g., brick red `vec3(0.55, 0.35, 0.3)` not gray-white `vec3(0.8, 0.8, 0.8)`). Brick/stone textures must use UV periodic patterns (staggered rows + mortar dark lines), not solid colors. See the `getBrickColor` function in the complete template
|
|
981
|
+
9. **Sunset/side-lit scene buildings become black silhouettes**: when low-angle light (sunset/dawn) illuminates from the side, building fronts are completely backlit → pure black silhouettes with no visible detail. Must: (1) ambient light ≥ 0.3; (2) walls use bright materials (light yellow, off-white) not dark colors; (3) buildings large enough (width/height ≥ 5 cells). See Variant 11 sunset scene code
|
|
982
|
+
|
|
983
|
+
## Further Reading
|
|
984
|
+
|
|
985
|
+
For full step-by-step tutorials, mathematical derivations, and advanced usage, see [reference](../reference/voxel-rendering.md)
|