@nguyenphp/antigravity-marketing 1.0.16 → 1.0.19
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/README.md +187 -74
- package/bin/index.js +4 -4
- package/package.json +4 -3
- package/templates/.agent/agents/backend-specialist.md +263 -0
- package/templates/.agent/agents/database-architect.md +226 -0
- package/templates/.agent/agents/debugger.md +225 -0
- package/templates/.agent/agents/devops-engineer.md +242 -0
- package/templates/.agent/agents/documentation-writer.md +104 -0
- package/templates/.agent/agents/explorer-agent.md +73 -0
- package/templates/.agent/agents/frontend-specialist.md +527 -0
- package/templates/.agent/agents/game-developer.md +162 -0
- package/templates/.agent/agents/mobile-developer.md +377 -0
- package/templates/.agent/agents/orchestrator.md +400 -0
- package/templates/.agent/agents/penetration-tester.md +188 -0
- package/templates/.agent/agents/performance-optimizer.md +187 -0
- package/templates/.agent/agents/project-planner.md +403 -0
- package/templates/.agent/agents/security-auditor.md +170 -0
- package/templates/.agent/agents/seo-specialist.md +111 -0
- package/templates/.agent/agents/test-engineer.md +158 -0
- package/templates/.agent/rules/GEMINI.md +248 -0
- package/templates/.agent/skills/analytics-marketing/SKILL.md +172 -324
- package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
- package/templates/.agent/skills/api-patterns/api-style.md +42 -0
- package/templates/.agent/skills/api-patterns/auth.md +24 -0
- package/templates/.agent/skills/api-patterns/documentation.md +26 -0
- package/templates/.agent/skills/api-patterns/graphql.md +41 -0
- package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/templates/.agent/skills/api-patterns/response.md +37 -0
- package/templates/.agent/skills/api-patterns/rest.md +40 -0
- package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
- package/templates/.agent/skills/api-patterns/trpc.md +41 -0
- package/templates/.agent/skills/api-patterns/versioning.md +22 -0
- package/templates/.agent/skills/app-builder/SKILL.md +75 -0
- package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/templates/.agent/skills/app-builder/feature-building.md +53 -0
- package/templates/.agent/skills/app-builder/project-detection.md +34 -0
- package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
- package/templates/.agent/skills/app-builder/tech-stack.md +40 -0
- package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/templates/.agent/skills/architecture/SKILL.md +55 -0
- package/templates/.agent/skills/architecture/context-discovery.md +43 -0
- package/templates/.agent/skills/architecture/examples.md +94 -0
- package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
- package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
- package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/templates/.agent/skills/banner-design/SKILL.md +192 -0
- package/templates/.agent/skills/banner-design/references/banner-sizes-and-styles.md +118 -0
- package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
- package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
- package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
- package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
- package/templates/.agent/skills/brand/SKILL.md +97 -0
- package/templates/.agent/skills/brand/references/approval-checklist.md +169 -0
- package/templates/.agent/skills/brand/references/asset-organization.md +157 -0
- package/templates/.agent/skills/brand/references/brand-guideline-template.md +140 -0
- package/templates/.agent/skills/brand/references/color-palette-management.md +186 -0
- package/templates/.agent/skills/brand/references/consistency-checklist.md +94 -0
- package/templates/.agent/skills/brand/references/logo-usage-rules.md +185 -0
- package/templates/.agent/skills/brand/references/messaging-framework.md +85 -0
- package/templates/.agent/skills/brand/references/typography-specifications.md +214 -0
- package/templates/.agent/skills/brand/references/update.md +118 -0
- package/templates/.agent/skills/brand/references/visual-identity.md +96 -0
- package/templates/.agent/skills/brand/references/voice-framework.md +88 -0
- package/templates/.agent/skills/brand/scripts/extract-colors.cjs +341 -0
- package/templates/.agent/skills/brand/scripts/inject-brand-context.cjs +349 -0
- package/templates/.agent/skills/brand/scripts/sync-brand-to-tokens.cjs +266 -0
- package/templates/.agent/skills/brand/scripts/validate-asset.cjs +387 -0
- package/templates/.agent/skills/brand/templates/brand-guidelines-starter.md +275 -0
- package/templates/.agent/skills/clean-code/SKILL.md +201 -0
- package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
- package/templates/.agent/skills/copywriting/SKILL.md +250 -0
- package/templates/.agent/skills/database-design/SKILL.md +52 -0
- package/templates/.agent/skills/database-design/database-selection.md +43 -0
- package/templates/.agent/skills/database-design/indexing.md +39 -0
- package/templates/.agent/skills/database-design/migrations.md +48 -0
- package/templates/.agent/skills/database-design/optimization.md +36 -0
- package/templates/.agent/skills/database-design/orm-selection.md +30 -0
- package/templates/.agent/skills/database-design/schema-design.md +56 -0
- package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/templates/.agent/skills/docker-expert/SKILL.md +409 -0
- package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/templates/.agent/skills/frontend-design/color-system.md +311 -0
- package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
- package/templates/.agent/skills/frontend-design/ux-psychology.md +541 -0
- package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/templates/.agent/skills/frontend-slides/SKILL.md +92 -0
- package/templates/.agent/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/templates/.agent/skills/frontend-slides/animation-patterns.md +110 -0
- package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.html +789 -0
- package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.pptx +0 -0
- package/templates/.agent/skills/frontend-slides/html-template.md +347 -0
- package/templates/.agent/skills/frontend-slides/scripts/export-pptx.py +58 -0
- package/templates/.agent/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/templates/.agent/skills/frontend-slides/viewport-base.css +153 -0
- package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/templates/.agent/skills/game-development/SKILL.md +167 -0
- package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
- package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/templates/.agent/skills/growth-engine/SKILL.md +244 -0
- package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
- package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
- package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/templates/.agent/skills/marketing-report-expert/SKILL.md +70 -0
- package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/templates/.agent/skills/minimax-docx/LICENSE +21 -0
- package/templates/.agent/skills/minimax-docx/SKILL.md +274 -0
- package/templates/.agent/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
- package/templates/.agent/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
- package/templates/.agent/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
- package/templates/.agent/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
- package/templates/.agent/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
- package/templates/.agent/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
- package/templates/.agent/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
- package/templates/.agent/skills/minimax-docx/references/cjk_typography.md +357 -0
- package/templates/.agent/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
- package/templates/.agent/skills/minimax-docx/references/comments_guide.md +191 -0
- package/templates/.agent/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
- package/templates/.agent/skills/minimax-docx/references/design_principles.md +819 -0
- package/templates/.agent/skills/minimax-docx/references/openxml_element_order.md +308 -0
- package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
- package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
- package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
- package/templates/.agent/skills/minimax-docx/references/openxml_namespaces.md +82 -0
- package/templates/.agent/skills/minimax-docx/references/openxml_units.md +72 -0
- package/templates/.agent/skills/minimax-docx/references/scenario_a_create.md +284 -0
- package/templates/.agent/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
- package/templates/.agent/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
- package/templates/.agent/skills/minimax-docx/references/track_changes_guide.md +200 -0
- package/templates/.agent/skills/minimax-docx/references/troubleshooting.md +506 -0
- package/templates/.agent/skills/minimax-docx/references/typography_guide.md +294 -0
- package/templates/.agent/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
- package/templates/.agent/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
- package/templates/.agent/skills/minimax-docx/scripts/docx_preview.sh +37 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
- package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
- package/templates/.agent/skills/minimax-docx/scripts/env_check.sh +196 -0
- package/templates/.agent/skills/minimax-docx/scripts/setup.ps1 +274 -0
- package/templates/.agent/skills/minimax-docx/scripts/setup.sh +504 -0
- package/templates/.agent/skills/minimax-multimodal-toolkit/SKILL.md +359 -0
- package/templates/.agent/skills/minimax-pdf/README.md +222 -0
- package/templates/.agent/skills/minimax-pdf/SKILL.md +201 -0
- package/templates/.agent/skills/minimax-pdf/design/design.md +381 -0
- package/templates/.agent/skills/minimax-pdf/scripts/cover.py +1579 -0
- package/templates/.agent/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
- package/templates/.agent/skills/minimax-pdf/scripts/fill_write.py +242 -0
- package/templates/.agent/skills/minimax-pdf/scripts/make.sh +491 -0
- package/templates/.agent/skills/minimax-pdf/scripts/merge.py +112 -0
- package/templates/.agent/skills/minimax-pdf/scripts/palette.py +559 -0
- package/templates/.agent/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
- package/templates/.agent/skills/minimax-pdf/scripts/render_body.py +1055 -0
- package/templates/.agent/skills/minimax-pdf/scripts/render_cover.cjs +111 -0
- package/templates/.agent/skills/minimax-xlsx/SKILL.md +138 -0
- package/templates/.agent/skills/minimax-xlsx/references/create.md +691 -0
- package/templates/.agent/skills/minimax-xlsx/references/edit.md +684 -0
- package/templates/.agent/skills/minimax-xlsx/references/fix.md +37 -0
- package/templates/.agent/skills/minimax-xlsx/references/format.md +768 -0
- package/templates/.agent/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
- package/templates/.agent/skills/minimax-xlsx/references/read-analyze.md +97 -0
- package/templates/.agent/skills/minimax-xlsx/references/validate.md +772 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/formula_check.py +422 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/style_audit.py +575 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
- package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
- package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
- package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
- package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
- package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
- package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/templates/.agent/skills/nestjs-expert/SKILL.md +552 -0
- package/templates/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
- package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
- package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
- package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
- package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
- package/templates/.agent/skills/ppc-advertising/SKILL.md +183 -475
- package/templates/.agent/skills/pptx-generator/SKILL.md +249 -0
- package/templates/.agent/skills/pptx-generator/references/design-system.md +392 -0
- package/templates/.agent/skills/pptx-generator/references/editing.md +162 -0
- package/templates/.agent/skills/pptx-generator/references/pitfalls.md +112 -0
- package/templates/.agent/skills/pptx-generator/references/pptxgenjs.md +420 -0
- package/templates/.agent/skills/pptx-generator/references/slide-types.md +413 -0
- package/templates/.agent/skills/prisma-expert/SKILL.md +355 -0
- package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
- package/templates/.agent/skills/react-patterns/SKILL.md +198 -0
- package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
- package/templates/.agent/skills/remotion-best-practices/SKILL.md +45 -111
- package/templates/.agent/skills/remotion-best-practices/rules/3d.md +4 -4
- package/templates/.agent/skills/remotion-best-practices/rules/animations.md +5 -7
- package/templates/.agent/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/templates/.agent/skills/remotion-best-practices/rules/assets.md +78 -0
- package/templates/.agent/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/templates/.agent/skills/remotion-best-practices/rules/audio.md +1 -4
- package/templates/.agent/skills/remotion-best-practices/rules/calculate-metadata.md +47 -17
- package/templates/.agent/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/templates/.agent/skills/remotion-best-practices/rules/charts.md +80 -48
- package/templates/.agent/skills/remotion-best-practices/rules/compositions.md +22 -14
- package/templates/.agent/skills/remotion-best-practices/rules/display-captions.md +79 -21
- package/templates/.agent/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/templates/.agent/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
- package/templates/.agent/skills/remotion-best-practices/rules/fonts.md +96 -54
- package/templates/.agent/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/templates/.agent/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/templates/.agent/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/templates/.agent/skills/remotion-best-practices/rules/gifs.md +21 -18
- package/templates/.agent/skills/remotion-best-practices/rules/images.md +6 -2
- package/templates/.agent/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/templates/.agent/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/templates/.agent/skills/remotion-best-practices/rules/lottie.md +10 -7
- package/templates/.agent/skills/remotion-best-practices/rules/maps.md +412 -0
- package/templates/.agent/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/templates/.agent/skills/remotion-best-practices/rules/measuring-text.md +140 -0
- package/templates/.agent/skills/remotion-best-practices/rules/parameters.md +109 -0
- package/templates/.agent/skills/remotion-best-practices/rules/sequencing.md +13 -1
- package/templates/.agent/skills/remotion-best-practices/rules/sfx.md +26 -0
- package/templates/.agent/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/templates/.agent/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/templates/.agent/skills/remotion-best-practices/rules/text-animations.md +4 -115
- package/templates/.agent/skills/remotion-best-practices/rules/timing.md +19 -19
- package/templates/.agent/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/templates/.agent/skills/remotion-best-practices/rules/transitions.md +117 -42
- package/templates/.agent/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/templates/.agent/skills/remotion-best-practices/rules/trimming.md +51 -0
- package/templates/.agent/skills/remotion-best-practices/rules/voiceover.md +99 -0
- package/templates/.agent/skills/seo-fundamentals/SKILL.md +83 -441
- package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/templates/.agent/skills/server-management/SKILL.md +161 -0
- package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
- package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/templates/.agent/skills/tutorial-video-expert/SKILL.md +88 -0
- package/templates/.agent/skills/typescript-expert/SKILL.md +429 -0
- package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +1 -1
- package/templates/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/templates/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/templates/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
- package/templates/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/templates/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
- package/templates/.agent/skills/vision-analysis/SKILL.md +174 -0
- package/templates/.agent/skills/vue-expert/SKILL.md +374 -0
- package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
- package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/templates/.agent/workflows/analyze.md +3 -0
- package/templates/.agent/workflows/brainstorm.md +113 -0
- package/templates/.agent/workflows/brand-report.md +44 -0
- package/templates/.agent/workflows/create.md +59 -0
- package/templates/.agent/workflows/debug.md +103 -0
- package/templates/.agent/workflows/deploy.md +176 -0
- package/templates/.agent/workflows/enhance.md +63 -0
- package/templates/.agent/workflows/orchestrate.md +237 -0
- package/templates/.agent/workflows/plan.md +89 -0
- package/templates/.agent/workflows/preview.md +80 -0
- package/templates/.agent/workflows/report.md +49 -0
- package/templates/.agent/workflows/status.md +86 -0
- package/templates/.agent/workflows/test.md +144 -0
- package/templates/.agent/workflows/ui-ux-pro-max.md +231 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: growth-engine
|
|
3
|
+
description: 'Motor de crescimento para produtos digitais -- growth hacking, SEO, ASO, viral loops, email marketing, CRM, referral programs e aquisicao organica. Ativar para: criar estrategia de growth,
|
|
4
|
+
SEO...'
|
|
5
|
+
risk: none
|
|
6
|
+
source: community
|
|
7
|
+
date_added: '2026-03-06'
|
|
8
|
+
author: renat
|
|
9
|
+
tags:
|
|
10
|
+
- growth
|
|
11
|
+
- seo
|
|
12
|
+
- marketing
|
|
13
|
+
- viral
|
|
14
|
+
- acquisition
|
|
15
|
+
tools:
|
|
16
|
+
- claude-code
|
|
17
|
+
- antigravity
|
|
18
|
+
- cursor
|
|
19
|
+
- gemini-cli
|
|
20
|
+
- codex-cli
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# GROWTH-ENGINE -- Crescimento Exponencial
|
|
24
|
+
|
|
25
|
+
## Overview
|
|
26
|
+
|
|
27
|
+
Motor de crescimento para produtos digitais -- growth hacking, SEO, ASO, viral loops, email marketing, CRM, referral programs e aquisicao organica. Ativar para: criar estrategia de growth, SEO tecnico, ASO para app stores, programa de referral, email marketing, viral coefficient, funil de aquisicao, conteudo para crescimento organico, campanhas de lancamento.
|
|
28
|
+
|
|
29
|
+
## When to Use This Skill
|
|
30
|
+
|
|
31
|
+
- When you need specialized assistance with this domain
|
|
32
|
+
|
|
33
|
+
## Do Not Use This Skill When
|
|
34
|
+
|
|
35
|
+
- The task is unrelated to growth engine
|
|
36
|
+
- A simpler, more specific tool can handle the request
|
|
37
|
+
- The user needs general-purpose assistance without domain expertise
|
|
38
|
+
|
|
39
|
+
## How It Works
|
|
40
|
+
|
|
41
|
+
> O melhor marketing e um produto que as pessoas amam. -- Sam Altman
|
|
42
|
+
> Crescimento real comeca com um produto que vale a pena recomendar.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Pirate Metrics (Aarrr) Para Auri
|
|
47
|
+
|
|
48
|
+
AQUISICAO: Como as pessoas descobrem a Auri?
|
|
49
|
+
Meta: 10.000 visitantes/mes -> 1.000 cadastros
|
|
50
|
+
Canais: SEO, Product Hunt, Influencers tech, PR
|
|
51
|
+
|
|
52
|
+
ATIVACAO: Quando o usuario experimenta o primeiro valor?
|
|
53
|
+
Meta: 60% completam primeira conversa em 24h
|
|
54
|
+
Metrica: First Conversation Rate (FCR)
|
|
55
|
+
|
|
56
|
+
RETENCAO: As pessoas voltam?
|
|
57
|
+
Meta: D7 = 30%, D30 = 15%, D90 = 8%
|
|
58
|
+
Metrica: WAC (Weekly Active Conversationalists)
|
|
59
|
+
|
|
60
|
+
RECEITA: As pessoas pagam?
|
|
61
|
+
Meta: 8% trial->Pro conversao
|
|
62
|
+
Metrica: MRR, ARPU, LTV
|
|
63
|
+
|
|
64
|
+
REFERENCIA: As pessoas indicam?
|
|
65
|
+
Meta: NPS > 50, Viral Coefficient > 0.3
|
|
66
|
+
Metrica: Referrals per user, K-factor
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Checklist Seo Para Landing Page Auri
|
|
71
|
+
|
|
72
|
+
<title>Auri -- O Assistente de Voz que Realmente Pensa | para Alexa</title>
|
|
73
|
+
<meta name="description" content="Auri transforma seu Alexa em um assistente
|
|
74
|
+
com Claude AI. Analise de negocios, decisoes estrategicas e memoria real.">
|
|
75
|
+
|
|
76
|
+
<meta property="og:title" content="Auri -- IA de Voz para Alexa">
|
|
77
|
+
<meta property="og:description" content="O primeiro assistente de voz
|
|
78
|
+
com raciocinio real. Powered by Claude.">
|
|
79
|
+
|
|
80
|
+
<script type="application/ld+json">
|
|
81
|
+
{
|
|
82
|
+
"@context": "https://schema.org",
|
|
83
|
+
"@type": "SoftwareApplication",
|
|
84
|
+
"name": "Auri",
|
|
85
|
+
"operatingSystem": "Amazon Alexa",
|
|
86
|
+
"applicationCategory": "AI Assistant",
|
|
87
|
+
"offers": {"@type": "Offer", "price": "0"},
|
|
88
|
+
"aggregateRating": {"@type": "AggregateRating",
|
|
89
|
+
"ratingValue": "4.8", "ratingCount": "127"}
|
|
90
|
+
}
|
|
91
|
+
</script>
|
|
92
|
+
|
|
93
|
+
## Keywords Estrategicas Auri
|
|
94
|
+
|
|
95
|
+
High Intent (converter):
|
|
96
|
+
- "skill alexa inteligente"
|
|
97
|
+
- "assistente alexa com ia"
|
|
98
|
+
- "como usar claude no alexa"
|
|
99
|
+
|
|
100
|
+
Informacional (educar):
|
|
101
|
+
- "assistente de voz ia brasil"
|
|
102
|
+
- "melhor skill alexa portugues"
|
|
103
|
+
|
|
104
|
+
Long tail (baixa competicao):
|
|
105
|
+
- "alexa responder perguntas complexas"
|
|
106
|
+
- "skill alexa analise de negocios"
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Amazon Skill Store Optimization
|
|
111
|
+
|
|
112
|
+
skill_name: "Auri -- IA de Voz Inteligente"
|
|
113
|
+
invocation: "auri"
|
|
114
|
+
|
|
115
|
+
short_description: >
|
|
116
|
+
Auri transforma seu Alexa em um assistente verdadeiramente inteligente.
|
|
117
|
+
Powered by Claude AI -- pensa, recorda e evolui com voce.
|
|
118
|
+
|
|
119
|
+
long_description: >
|
|
120
|
+
Chega de respostas rasas. Auri e o primeiro assistente de voz com
|
|
121
|
+
raciocinio real para o mercado brasileiro.
|
|
122
|
+
|
|
123
|
+
O QUE A AURI FAZ:
|
|
124
|
+
- Analisa problemas de negocio complexos
|
|
125
|
+
- Recorda conversas anteriores (memoria real)
|
|
126
|
+
- Oferece perspectivas de especialistas
|
|
127
|
+
- Aprende suas preferencias ao longo do tempo
|
|
128
|
+
|
|
129
|
+
COMO COMECAR: Diga "Alexa, abrir Auri" e comece a conversar naturalmente.
|
|
130
|
+
|
|
131
|
+
example_phrases:
|
|
132
|
+
- "Alexa, abrir Auri"
|
|
133
|
+
- "Me ajuda a decidir entre essas duas opcoes de negocio"
|
|
134
|
+
- "Analisa esse problema para mim"
|
|
135
|
+
|
|
136
|
+
keywords: "ia, inteligencia artificial, assistente inteligente, claude, negocios"
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Tipos De Viral Loops Para Auri
|
|
141
|
+
|
|
142
|
+
Loop 1: WORD-OF-MOUTH ORGANICO
|
|
143
|
+
Trigger: usuario tem conversa impressionante com Auri
|
|
144
|
+
Acao: comenta com amigos/nas redes
|
|
145
|
+
Meta: cada usuario traz 0.3 novos usuarios (K=0.3)
|
|
146
|
+
|
|
147
|
+
Loop 2: SHARE DE INSIGHTS
|
|
148
|
+
Trigger: Auri gera insight especialmente bom
|
|
149
|
+
Acao: botao "Compartilhar esse insight" -> post pronto para redes
|
|
150
|
+
Meta: 5% das conversas geram um share
|
|
151
|
+
|
|
152
|
+
Loop 3: REFERRAL PROGRAM
|
|
153
|
+
Incentivo: Ganhe 1 mes Pro por cada amigo que assinar
|
|
154
|
+
Meta: 10% dos usuarios Pro indicam pelo menos 1 pessoa
|
|
155
|
+
|
|
156
|
+
## Calculadora De Viral Coefficient
|
|
157
|
+
|
|
158
|
+
def calculate_k_factor(percent_who_invite, invites_per_user, conversion_rate):
|
|
159
|
+
k = percent_who_invite * invites_per_user * conversion_rate
|
|
160
|
+
if k >= 1:
|
|
161
|
+
status = "Crescimento viral (cada usuario traz mais de 1)"
|
|
162
|
+
elif k >= 0.5:
|
|
163
|
+
status = "Bom (crescimento acelerado)"
|
|
164
|
+
elif k >= 0.2:
|
|
165
|
+
status = "Ok (crescimento suportado)"
|
|
166
|
+
else:
|
|
167
|
+
status = "Baixo (crescimento lento)"
|
|
168
|
+
return {"k_factor": round(k, 2), "status": status,
|
|
169
|
+
"interpretation": f"Cada 100 usuarios trazem {int(k*100)} novos"}
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Sequencia De Onboarding (7 Dias)
|
|
174
|
+
|
|
175
|
+
Dia 0 -- Boas-vindas (imediato apos cadastro)
|
|
176
|
+
Assunto: "Bem-vindo a Auri. Aqui esta como comecar."
|
|
177
|
+
Body: Tutorial em 3 passos, link para primeira conversa, dica de uso
|
|
178
|
+
|
|
179
|
+
Dia 1 -- Ativacao (se nao fez primeira conversa)
|
|
180
|
+
Assunto: "Sua Auri esta esperando voce"
|
|
181
|
+
Body: Os 3 tipos de perguntas que mais impressionam, CTA urgente
|
|
182
|
+
|
|
183
|
+
Dia 3 -- Educacao
|
|
184
|
+
Assunto: "O que 100 usuarios da Auri descobriram essa semana"
|
|
185
|
+
Body: Case real + insight surpreendente + feature escondida
|
|
186
|
+
|
|
187
|
+
Dia 7 -- Upsell (se usou pelo menos 3x)
|
|
188
|
+
Assunto: "Voce esta usando 80% do limite gratuito"
|
|
189
|
+
Body: O que Pro desbloqueia, oferta especial por 48h, prova social
|
|
190
|
+
|
|
191
|
+
Dia 14 -- Reativacao (se parou de usar)
|
|
192
|
+
Assunto: "Saudade, [nome]. O que aconteceu?"
|
|
193
|
+
Body: Pergunta genuina, link para retorno facil, nova feature
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Estrategia De Lancamento
|
|
198
|
+
|
|
199
|
+
1 semana antes:
|
|
200
|
+
- Pedir a hunters influentes para cacar o produto
|
|
201
|
+
- Preparar assets: logo, tagline, screenshots, video demo 60s
|
|
202
|
+
- Warm up: posts no X/LinkedIn sobre o problema que Auri resolve
|
|
203
|
+
- Recrutar 50 early adopters para upvotar no lancamento
|
|
204
|
+
|
|
205
|
+
Dia de lancamento (meia-noite PT):
|
|
206
|
+
- Post no X: demo impressionante + link PH
|
|
207
|
+
- Email para toda waitlist: "Estamos no Product Hunt hoje!"
|
|
208
|
+
- Mensagem no Telegram/Discord de comunidades tech BR
|
|
209
|
+
- Ficar online o dia todo respondendo comentarios
|
|
210
|
+
|
|
211
|
+
Posicionamento: Tagline: "The Alexa skill that actually thinks"
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 7. Comandos
|
|
216
|
+
|
|
217
|
+
| Comando | Acao |
|
|
218
|
+
|---------|------|
|
|
219
|
+
| /growth-audit | Auditoria completa de growth |
|
|
220
|
+
| /seo-analysis | Analise SEO da landing page |
|
|
221
|
+
| /aso-optimize | Otimiza metadata da skill Alexa |
|
|
222
|
+
| /viral-loop | Projeta viral loop para o produto |
|
|
223
|
+
| /email-sequence | Cria sequencia de email marketing |
|
|
224
|
+
| /launch-plan | Plano de lancamento completo |
|
|
225
|
+
| /referral-program | Desenha programa de referral |
|
|
226
|
+
|
|
227
|
+
## Best Practices
|
|
228
|
+
|
|
229
|
+
- Provide clear, specific context about your project and requirements
|
|
230
|
+
- Review all suggestions before applying them to production code
|
|
231
|
+
- Combine with other complementary skills for comprehensive analysis
|
|
232
|
+
|
|
233
|
+
## Common Pitfalls
|
|
234
|
+
|
|
235
|
+
- Using this skill for tasks outside its domain expertise
|
|
236
|
+
- Applying recommendations without understanding your specific context
|
|
237
|
+
- Not providing enough project context for accurate analysis
|
|
238
|
+
|
|
239
|
+
## Related Skills
|
|
240
|
+
|
|
241
|
+
- `analytics-product` - Complementary skill for enhanced analysis
|
|
242
|
+
- `monetization` - Complementary skill for enhanced analysis
|
|
243
|
+
- `product-design` - Complementary skill for enhanced analysis
|
|
244
|
+
- `product-inventor` - Complementary skill for enhanced analysis
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: i18n-localization
|
|
3
|
+
description: Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.
|
|
4
|
+
allowed-tools: Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# i18n & Localization
|
|
8
|
+
|
|
9
|
+
> Internationalization (i18n) and Localization (L10n) best practices.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Core Concepts
|
|
14
|
+
|
|
15
|
+
| Term | Meaning |
|
|
16
|
+
|------|---------|
|
|
17
|
+
| **i18n** | Internationalization - making app translatable |
|
|
18
|
+
| **L10n** | Localization - actual translations |
|
|
19
|
+
| **Locale** | Language + Region (en-US, tr-TR) |
|
|
20
|
+
| **RTL** | Right-to-left languages (Arabic, Hebrew) |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. When to Use i18n
|
|
25
|
+
|
|
26
|
+
| Project Type | i18n Needed? |
|
|
27
|
+
|--------------|--------------|
|
|
28
|
+
| Public web app | ✅ Yes |
|
|
29
|
+
| SaaS product | ✅ Yes |
|
|
30
|
+
| Internal tool | ⚠️ Maybe |
|
|
31
|
+
| Single-region app | ⚠️ Consider future |
|
|
32
|
+
| Personal project | ❌ Optional |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 3. Implementation Patterns
|
|
37
|
+
|
|
38
|
+
### React (react-i18next)
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
import { useTranslation } from 'react-i18next';
|
|
42
|
+
|
|
43
|
+
function Welcome() {
|
|
44
|
+
const { t } = useTranslation();
|
|
45
|
+
return <h1>{t('welcome.title')}</h1>;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Next.js (next-intl)
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
import { useTranslations } from 'next-intl';
|
|
53
|
+
|
|
54
|
+
export default function Page() {
|
|
55
|
+
const t = useTranslations('Home');
|
|
56
|
+
return <h1>{t('title')}</h1>;
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Python (gettext)
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from gettext import gettext as _
|
|
64
|
+
|
|
65
|
+
print(_("Welcome to our app"))
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 4. File Structure
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
locales/
|
|
74
|
+
├── en/
|
|
75
|
+
│ ├── common.json
|
|
76
|
+
│ ├── auth.json
|
|
77
|
+
│ └── errors.json
|
|
78
|
+
├── tr/
|
|
79
|
+
│ ├── common.json
|
|
80
|
+
│ ├── auth.json
|
|
81
|
+
│ └── errors.json
|
|
82
|
+
└── ar/ # RTL
|
|
83
|
+
└── ...
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 5. Best Practices
|
|
89
|
+
|
|
90
|
+
### DO ✅
|
|
91
|
+
|
|
92
|
+
- Use translation keys, not raw text
|
|
93
|
+
- Namespace translations by feature
|
|
94
|
+
- Support pluralization
|
|
95
|
+
- Handle date/number formats per locale
|
|
96
|
+
- Plan for RTL from the start
|
|
97
|
+
- Use ICU message format for complex strings
|
|
98
|
+
|
|
99
|
+
### DON'T ❌
|
|
100
|
+
|
|
101
|
+
- Hardcode strings in components
|
|
102
|
+
- Concatenate translated strings
|
|
103
|
+
- Assume text length (German is 30% longer)
|
|
104
|
+
- Forget about RTL layout
|
|
105
|
+
- Mix languages in same file
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 6. Common Issues
|
|
110
|
+
|
|
111
|
+
| Issue | Solution |
|
|
112
|
+
|-------|----------|
|
|
113
|
+
| Missing translation | Fallback to default language |
|
|
114
|
+
| Hardcoded strings | Use linter/checker script |
|
|
115
|
+
| Date format | Use Intl.DateTimeFormat |
|
|
116
|
+
| Number format | Use Intl.NumberFormat |
|
|
117
|
+
| Pluralization | Use ICU message format |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 7. RTL Support
|
|
122
|
+
|
|
123
|
+
```css
|
|
124
|
+
/* CSS Logical Properties */
|
|
125
|
+
.container {
|
|
126
|
+
margin-inline-start: 1rem; /* Not margin-left */
|
|
127
|
+
padding-inline-end: 1rem; /* Not padding-right */
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
[dir="rtl"] .icon {
|
|
131
|
+
transform: scaleX(-1);
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 8. Checklist
|
|
138
|
+
|
|
139
|
+
Before shipping:
|
|
140
|
+
|
|
141
|
+
- [ ] All user-facing strings use translation keys
|
|
142
|
+
- [ ] Locale files exist for all supported languages
|
|
143
|
+
- [ ] Date/number formatting uses Intl API
|
|
144
|
+
- [ ] RTL layout tested (if applicable)
|
|
145
|
+
- [ ] Fallback language configured
|
|
146
|
+
- [ ] No hardcoded strings in components
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Script
|
|
151
|
+
|
|
152
|
+
| Script | Purpose | Command |
|
|
153
|
+
|--------|---------|---------|
|
|
154
|
+
| `scripts/i18n_checker.py` | Detect hardcoded strings & missing translations | `python scripts/i18n_checker.py <project_path>` |
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
i18n Checker - Detects hardcoded strings and missing translations.
|
|
4
|
+
Scans for untranslated text in React, Vue, and Python files.
|
|
5
|
+
"""
|
|
6
|
+
import sys
|
|
7
|
+
import re
|
|
8
|
+
import json
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
# Fix Windows console encoding for Unicode output
|
|
12
|
+
try:
|
|
13
|
+
sys.stdout.reconfigure(encoding='utf-8', errors='replace')
|
|
14
|
+
sys.stderr.reconfigure(encoding='utf-8', errors='replace')
|
|
15
|
+
except AttributeError:
|
|
16
|
+
pass # Python < 3.7
|
|
17
|
+
|
|
18
|
+
# Patterns that indicate hardcoded strings (should be translated)
|
|
19
|
+
HARDCODED_PATTERNS = {
|
|
20
|
+
'jsx': [
|
|
21
|
+
# Text directly in JSX: <div>Hello World</div>
|
|
22
|
+
r'>\s*[A-Z][a-zA-Z\s]{3,30}\s*</',
|
|
23
|
+
# JSX attribute strings: title="Welcome"
|
|
24
|
+
r'(title|placeholder|label|alt|aria-label)="[A-Z][a-zA-Z\s]{2,}"',
|
|
25
|
+
# Button/heading text
|
|
26
|
+
r'<(button|h[1-6]|p|span|label)[^>]*>\s*[A-Z][a-zA-Z\s!?.,]{3,}\s*</',
|
|
27
|
+
],
|
|
28
|
+
'vue': [
|
|
29
|
+
# Vue template text
|
|
30
|
+
r'>\s*[A-Z][a-zA-Z\s]{3,30}\s*</',
|
|
31
|
+
r'(placeholder|label|title)="[A-Z][a-zA-Z\s]{2,}"',
|
|
32
|
+
],
|
|
33
|
+
'python': [
|
|
34
|
+
# print/raise with string literals
|
|
35
|
+
r'(print|raise\s+\w+)\s*\(\s*["\'][A-Z][^"\']{5,}["\']',
|
|
36
|
+
# Flask flash messages
|
|
37
|
+
r'flash\s*\(\s*["\'][A-Z][^"\']{5,}["\']',
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Patterns that indicate proper i18n usage
|
|
42
|
+
I18N_PATTERNS = [
|
|
43
|
+
r't\(["\']', # t('key') - react-i18next
|
|
44
|
+
r'useTranslation', # React hook
|
|
45
|
+
r'\$t\(', # Vue i18n
|
|
46
|
+
r'_\(["\']', # Python gettext
|
|
47
|
+
r'gettext\(', # Python gettext
|
|
48
|
+
r'useTranslations', # next-intl
|
|
49
|
+
r'FormattedMessage', # react-intl
|
|
50
|
+
r'i18n\.', # Generic i18n
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
def find_locale_files(project_path: Path) -> list:
|
|
54
|
+
"""Find translation/locale files."""
|
|
55
|
+
patterns = [
|
|
56
|
+
"**/locales/**/*.json",
|
|
57
|
+
"**/translations/**/*.json",
|
|
58
|
+
"**/lang/**/*.json",
|
|
59
|
+
"**/i18n/**/*.json",
|
|
60
|
+
"**/messages/*.json",
|
|
61
|
+
"**/*.po", # gettext
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
files = []
|
|
65
|
+
for pattern in patterns:
|
|
66
|
+
files.extend(project_path.glob(pattern))
|
|
67
|
+
|
|
68
|
+
return [f for f in files if 'node_modules' not in str(f)]
|
|
69
|
+
|
|
70
|
+
def check_locale_completeness(locale_files: list) -> dict:
|
|
71
|
+
"""Check if all locales have the same keys."""
|
|
72
|
+
issues = []
|
|
73
|
+
passed = []
|
|
74
|
+
|
|
75
|
+
if not locale_files:
|
|
76
|
+
return {'passed': [], 'issues': ["[!] No locale files found"]}
|
|
77
|
+
|
|
78
|
+
# Group by parent folder (language)
|
|
79
|
+
locales = {}
|
|
80
|
+
for f in locale_files:
|
|
81
|
+
if f.suffix == '.json':
|
|
82
|
+
try:
|
|
83
|
+
lang = f.parent.name
|
|
84
|
+
content = json.loads(f.read_text(encoding='utf-8'))
|
|
85
|
+
if lang not in locales:
|
|
86
|
+
locales[lang] = {}
|
|
87
|
+
locales[lang][f.stem] = set(flatten_keys(content))
|
|
88
|
+
except:
|
|
89
|
+
continue
|
|
90
|
+
|
|
91
|
+
if len(locales) < 2:
|
|
92
|
+
passed.append(f"[OK] Found {len(locale_files)} locale file(s)")
|
|
93
|
+
return {'passed': passed, 'issues': issues}
|
|
94
|
+
|
|
95
|
+
passed.append(f"[OK] Found {len(locales)} language(s): {', '.join(locales.keys())}")
|
|
96
|
+
|
|
97
|
+
# Compare keys across locales
|
|
98
|
+
all_langs = list(locales.keys())
|
|
99
|
+
base_lang = all_langs[0]
|
|
100
|
+
|
|
101
|
+
for namespace in locales.get(base_lang, {}):
|
|
102
|
+
base_keys = locales[base_lang].get(namespace, set())
|
|
103
|
+
|
|
104
|
+
for lang in all_langs[1:]:
|
|
105
|
+
other_keys = locales.get(lang, {}).get(namespace, set())
|
|
106
|
+
|
|
107
|
+
missing = base_keys - other_keys
|
|
108
|
+
if missing:
|
|
109
|
+
issues.append(f"[X] {lang}/{namespace}: Missing {len(missing)} keys")
|
|
110
|
+
|
|
111
|
+
extra = other_keys - base_keys
|
|
112
|
+
if extra:
|
|
113
|
+
issues.append(f"[!] {lang}/{namespace}: {len(extra)} extra keys")
|
|
114
|
+
|
|
115
|
+
if not issues:
|
|
116
|
+
passed.append("[OK] All locales have matching keys")
|
|
117
|
+
|
|
118
|
+
return {'passed': passed, 'issues': issues}
|
|
119
|
+
|
|
120
|
+
def flatten_keys(d, prefix=''):
|
|
121
|
+
"""Flatten nested dict keys."""
|
|
122
|
+
keys = set()
|
|
123
|
+
for k, v in d.items():
|
|
124
|
+
new_key = f"{prefix}.{k}" if prefix else k
|
|
125
|
+
if isinstance(v, dict):
|
|
126
|
+
keys.update(flatten_keys(v, new_key))
|
|
127
|
+
else:
|
|
128
|
+
keys.add(new_key)
|
|
129
|
+
return keys
|
|
130
|
+
|
|
131
|
+
def check_hardcoded_strings(project_path: Path) -> dict:
|
|
132
|
+
"""Check for hardcoded strings in code files."""
|
|
133
|
+
issues = []
|
|
134
|
+
passed = []
|
|
135
|
+
|
|
136
|
+
# Find code files
|
|
137
|
+
extensions = {
|
|
138
|
+
'.tsx': 'jsx', '.jsx': 'jsx', '.ts': 'jsx', '.js': 'jsx',
|
|
139
|
+
'.vue': 'vue',
|
|
140
|
+
'.py': 'python'
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
code_files = []
|
|
144
|
+
for ext in extensions:
|
|
145
|
+
code_files.extend(project_path.rglob(f"*{ext}"))
|
|
146
|
+
|
|
147
|
+
code_files = [f for f in code_files if not any(x in str(f) for x in
|
|
148
|
+
['node_modules', '.git', 'dist', 'build', '__pycache__', 'venv', 'test', 'spec'])]
|
|
149
|
+
|
|
150
|
+
if not code_files:
|
|
151
|
+
return {'passed': ["[!] No code files found"], 'issues': []}
|
|
152
|
+
|
|
153
|
+
files_with_i18n = 0
|
|
154
|
+
files_with_hardcoded = 0
|
|
155
|
+
hardcoded_examples = []
|
|
156
|
+
|
|
157
|
+
for file_path in code_files[:50]: # Limit
|
|
158
|
+
try:
|
|
159
|
+
content = file_path.read_text(encoding='utf-8', errors='ignore')
|
|
160
|
+
ext = file_path.suffix
|
|
161
|
+
file_type = extensions.get(ext, 'jsx')
|
|
162
|
+
|
|
163
|
+
# Check for i18n usage
|
|
164
|
+
has_i18n = any(re.search(p, content) for p in I18N_PATTERNS)
|
|
165
|
+
if has_i18n:
|
|
166
|
+
files_with_i18n += 1
|
|
167
|
+
|
|
168
|
+
# Check for hardcoded strings
|
|
169
|
+
patterns = HARDCODED_PATTERNS.get(file_type, [])
|
|
170
|
+
hardcoded_found = False
|
|
171
|
+
|
|
172
|
+
for pattern in patterns:
|
|
173
|
+
matches = re.findall(pattern, content)
|
|
174
|
+
if matches and not has_i18n:
|
|
175
|
+
hardcoded_found = True
|
|
176
|
+
if len(hardcoded_examples) < 5:
|
|
177
|
+
hardcoded_examples.append(f"{file_path.name}: {str(matches[0])[:40]}...")
|
|
178
|
+
|
|
179
|
+
if hardcoded_found:
|
|
180
|
+
files_with_hardcoded += 1
|
|
181
|
+
|
|
182
|
+
except:
|
|
183
|
+
continue
|
|
184
|
+
|
|
185
|
+
passed.append(f"[OK] Analyzed {len(code_files)} code files")
|
|
186
|
+
|
|
187
|
+
if files_with_i18n > 0:
|
|
188
|
+
passed.append(f"[OK] {files_with_i18n} files use i18n")
|
|
189
|
+
|
|
190
|
+
if files_with_hardcoded > 0:
|
|
191
|
+
issues.append(f"[X] {files_with_hardcoded} files may have hardcoded strings")
|
|
192
|
+
for ex in hardcoded_examples:
|
|
193
|
+
issues.append(f" → {ex}")
|
|
194
|
+
else:
|
|
195
|
+
passed.append("[OK] No obvious hardcoded strings detected")
|
|
196
|
+
|
|
197
|
+
return {'passed': passed, 'issues': issues}
|
|
198
|
+
|
|
199
|
+
def main():
|
|
200
|
+
target = sys.argv[1] if len(sys.argv) > 1 else "."
|
|
201
|
+
project_path = Path(target)
|
|
202
|
+
|
|
203
|
+
print("\n" + "=" * 60)
|
|
204
|
+
print(" i18n CHECKER - Internationalization Audit")
|
|
205
|
+
print("=" * 60 + "\n")
|
|
206
|
+
|
|
207
|
+
# Check locale files
|
|
208
|
+
locale_files = find_locale_files(project_path)
|
|
209
|
+
locale_result = check_locale_completeness(locale_files)
|
|
210
|
+
|
|
211
|
+
# Check hardcoded strings
|
|
212
|
+
code_result = check_hardcoded_strings(project_path)
|
|
213
|
+
|
|
214
|
+
# Print results
|
|
215
|
+
print("[LOCALE FILES]")
|
|
216
|
+
print("-" * 40)
|
|
217
|
+
for item in locale_result['passed']:
|
|
218
|
+
print(f" {item}")
|
|
219
|
+
for item in locale_result['issues']:
|
|
220
|
+
print(f" {item}")
|
|
221
|
+
|
|
222
|
+
print("\n[CODE ANALYSIS]")
|
|
223
|
+
print("-" * 40)
|
|
224
|
+
for item in code_result['passed']:
|
|
225
|
+
print(f" {item}")
|
|
226
|
+
for item in code_result['issues']:
|
|
227
|
+
print(f" {item}")
|
|
228
|
+
|
|
229
|
+
# Summary
|
|
230
|
+
critical_issues = sum(1 for i in locale_result['issues'] + code_result['issues'] if i.startswith("[X]"))
|
|
231
|
+
|
|
232
|
+
print("\n" + "=" * 60)
|
|
233
|
+
if critical_issues == 0:
|
|
234
|
+
print("[OK] i18n CHECK: PASSED")
|
|
235
|
+
sys.exit(0)
|
|
236
|
+
else:
|
|
237
|
+
print(f"[X] i18n CHECK: {critical_issues} issues found")
|
|
238
|
+
sys.exit(1)
|
|
239
|
+
|
|
240
|
+
if __name__ == "__main__":
|
|
241
|
+
main()
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lint-and-validate
|
|
3
|
+
description: Automatic quality control, linting, and static analysis procedures. Use after every code modification to ensure syntax correctness and project standards. Triggers onKeywords: lint, format, check, validate, types, static analysis.
|
|
4
|
+
allowed-tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Lint and Validate Skill
|
|
8
|
+
|
|
9
|
+
> **MANDATORY:** Run appropriate validation tools after EVERY code change. Do not finish a task until the code is error-free.
|
|
10
|
+
|
|
11
|
+
### Procedures by Ecosystem
|
|
12
|
+
|
|
13
|
+
#### Node.js / TypeScript
|
|
14
|
+
1. **Lint/Fix:** `npm run lint` or `npx eslint "path" --fix`
|
|
15
|
+
2. **Types:** `npx tsc --noEmit`
|
|
16
|
+
3. **Security:** `npm audit --audit-level=high`
|
|
17
|
+
|
|
18
|
+
#### Python
|
|
19
|
+
1. **Linter (Ruff):** `ruff check "path" --fix` (Fast & Modern)
|
|
20
|
+
2. **Security (Bandit):** `bandit -r "path" -ll`
|
|
21
|
+
3. **Types (MyPy):** `mypy "path"`
|
|
22
|
+
|
|
23
|
+
## The Quality Loop
|
|
24
|
+
1. **Write/Edit Code**
|
|
25
|
+
2. **Run Audit:** `npm run lint && npx tsc --noEmit`
|
|
26
|
+
3. **Analyze Report:** Check the "FINAL AUDIT REPORT" section.
|
|
27
|
+
4. **Fix & Repeat:** Submitting code with "FINAL AUDIT" failures is NOT allowed.
|
|
28
|
+
|
|
29
|
+
## Error Handling
|
|
30
|
+
- If `lint` fails: Fix the style or syntax issues immediately.
|
|
31
|
+
- If `tsc` fails: Correct type mismatches before proceeding.
|
|
32
|
+
- If no tool is configured: Check the project root for `.eslintrc`, `tsconfig.json`, `pyproject.toml` and suggest creating one.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
**Strict Rule:** No code should be committed or reported as "done" without passing these checks.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Scripts
|
|
40
|
+
|
|
41
|
+
| Script | Purpose | Command |
|
|
42
|
+
|--------|---------|---------|
|
|
43
|
+
| `scripts/lint_runner.py` | Unified lint check | `python scripts/lint_runner.py <project_path>` |
|
|
44
|
+
| `scripts/type_coverage.py` | Type coverage analysis | `python scripts/type_coverage.py <project_path>` |
|
|
45
|
+
|