@wazir-dev/cli 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/AGENTS.md +111 -0
- package/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +101 -0
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/assets/composition-engine.mmd +34 -0
- package/assets/demo-script.sh +17 -0
- package/assets/logo-dark.svg +14 -0
- package/assets/logo.svg +14 -0
- package/assets/pipeline.mmd +39 -0
- package/assets/record-demo.sh +51 -0
- package/docs/README.md +51 -0
- package/docs/adapters/context-mode.md +60 -0
- package/docs/concepts/architecture.md +87 -0
- package/docs/concepts/artifact-model.md +60 -0
- package/docs/concepts/composition-engine.md +36 -0
- package/docs/concepts/indexing-and-recall.md +160 -0
- package/docs/concepts/observability.md +41 -0
- package/docs/concepts/roles-and-workflows.md +59 -0
- package/docs/concepts/terminology-policy.md +27 -0
- package/docs/getting-started/01-installation.md +78 -0
- package/docs/getting-started/02-first-run.md +102 -0
- package/docs/getting-started/03-adding-to-project.md +15 -0
- package/docs/getting-started/04-host-setup.md +15 -0
- package/docs/guides/ci-integration.md +15 -0
- package/docs/guides/creating-skills.md +15 -0
- package/docs/guides/expertise-module-authoring.md +15 -0
- package/docs/guides/hook-development.md +15 -0
- package/docs/guides/memory-and-learnings.md +34 -0
- package/docs/guides/multi-host-export.md +15 -0
- package/docs/guides/troubleshooting.md +101 -0
- package/docs/guides/writing-custom-roles.md +15 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
- package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
- package/docs/readmes/INDEX.md +99 -0
- package/docs/readmes/features/expertise/README.md +171 -0
- package/docs/readmes/features/exports/README.md +222 -0
- package/docs/readmes/features/hooks/README.md +103 -0
- package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
- package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
- package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
- package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
- package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
- package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
- package/docs/readmes/features/hooks/session-start.md +119 -0
- package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
- package/docs/readmes/features/roles/README.md +157 -0
- package/docs/readmes/features/roles/clarifier.md +152 -0
- package/docs/readmes/features/roles/content-author.md +190 -0
- package/docs/readmes/features/roles/designer.md +193 -0
- package/docs/readmes/features/roles/executor.md +184 -0
- package/docs/readmes/features/roles/learner.md +210 -0
- package/docs/readmes/features/roles/planner.md +182 -0
- package/docs/readmes/features/roles/researcher.md +164 -0
- package/docs/readmes/features/roles/reviewer.md +184 -0
- package/docs/readmes/features/roles/specifier.md +162 -0
- package/docs/readmes/features/roles/verifier.md +215 -0
- package/docs/readmes/features/schemas/README.md +178 -0
- package/docs/readmes/features/skills/README.md +63 -0
- package/docs/readmes/features/skills/brainstorming.md +96 -0
- package/docs/readmes/features/skills/debugging.md +148 -0
- package/docs/readmes/features/skills/design.md +120 -0
- package/docs/readmes/features/skills/prepare-next.md +109 -0
- package/docs/readmes/features/skills/run-audit.md +159 -0
- package/docs/readmes/features/skills/scan-project.md +109 -0
- package/docs/readmes/features/skills/self-audit.md +176 -0
- package/docs/readmes/features/skills/tdd.md +137 -0
- package/docs/readmes/features/skills/using-skills.md +92 -0
- package/docs/readmes/features/skills/verification.md +120 -0
- package/docs/readmes/features/skills/writing-plans.md +104 -0
- package/docs/readmes/features/tooling/README.md +320 -0
- package/docs/readmes/features/workflows/README.md +186 -0
- package/docs/readmes/features/workflows/author.md +181 -0
- package/docs/readmes/features/workflows/clarify.md +154 -0
- package/docs/readmes/features/workflows/design-review.md +171 -0
- package/docs/readmes/features/workflows/design.md +169 -0
- package/docs/readmes/features/workflows/discover.md +162 -0
- package/docs/readmes/features/workflows/execute.md +173 -0
- package/docs/readmes/features/workflows/learn.md +167 -0
- package/docs/readmes/features/workflows/plan-review.md +165 -0
- package/docs/readmes/features/workflows/plan.md +170 -0
- package/docs/readmes/features/workflows/prepare-next.md +167 -0
- package/docs/readmes/features/workflows/review.md +169 -0
- package/docs/readmes/features/workflows/run-audit.md +191 -0
- package/docs/readmes/features/workflows/spec-challenge.md +159 -0
- package/docs/readmes/features/workflows/specify.md +160 -0
- package/docs/readmes/features/workflows/verify.md +177 -0
- package/docs/readmes/packages/README.md +50 -0
- package/docs/readmes/packages/ajv.md +117 -0
- package/docs/readmes/packages/context-mode.md +118 -0
- package/docs/readmes/packages/gray-matter.md +116 -0
- package/docs/readmes/packages/node-test.md +137 -0
- package/docs/readmes/packages/yaml.md +112 -0
- package/docs/reference/configuration-reference.md +159 -0
- package/docs/reference/expertise-index.md +52 -0
- package/docs/reference/git-flow.md +43 -0
- package/docs/reference/hooks.md +87 -0
- package/docs/reference/host-exports.md +50 -0
- package/docs/reference/launch-checklist.md +172 -0
- package/docs/reference/marketplace-listings.md +76 -0
- package/docs/reference/release-process.md +34 -0
- package/docs/reference/roles-reference.md +77 -0
- package/docs/reference/skills.md +33 -0
- package/docs/reference/templates.md +29 -0
- package/docs/reference/tooling-cli.md +94 -0
- package/docs/truth-claims.yaml +222 -0
- package/expertise/PROGRESS.md +63 -0
- package/expertise/README.md +18 -0
- package/expertise/antipatterns/PROGRESS.md +56 -0
- package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
- package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
- package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
- package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
- package/expertise/antipatterns/backend/index.md +24 -0
- package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
- package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
- package/expertise/antipatterns/code/async-antipatterns.md +622 -0
- package/expertise/antipatterns/code/code-smells.md +1186 -0
- package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
- package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
- package/expertise/antipatterns/code/index.md +27 -0
- package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
- package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
- package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
- package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
- package/expertise/antipatterns/design/dark-patterns.md +1121 -0
- package/expertise/antipatterns/design/index.md +22 -0
- package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
- package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
- package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
- package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
- package/expertise/antipatterns/frontend/index.md +23 -0
- package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
- package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
- package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
- package/expertise/antipatterns/index.md +31 -0
- package/expertise/antipatterns/performance/index.md +20 -0
- package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
- package/expertise/antipatterns/performance/premature-optimization.md +623 -0
- package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
- package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
- package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
- package/expertise/antipatterns/process/index.md +23 -0
- package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
- package/expertise/antipatterns/security/index.md +20 -0
- package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
- package/expertise/antipatterns/security/security-theater.md +843 -0
- package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
- package/expertise/architecture/PROGRESS.md +70 -0
- package/expertise/architecture/data/caching-architecture.md +671 -0
- package/expertise/architecture/data/data-consistency.md +574 -0
- package/expertise/architecture/data/data-modeling.md +536 -0
- package/expertise/architecture/data/event-streams-and-queues.md +634 -0
- package/expertise/architecture/data/index.md +25 -0
- package/expertise/architecture/data/search-architecture.md +663 -0
- package/expertise/architecture/data/sql-vs-nosql.md +708 -0
- package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
- package/expertise/architecture/decisions/build-vs-buy.md +616 -0
- package/expertise/architecture/decisions/index.md +23 -0
- package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
- package/expertise/architecture/decisions/technology-selection.md +616 -0
- package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
- package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
- package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
- package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
- package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
- package/expertise/architecture/distributed/index.md +25 -0
- package/expertise/architecture/distributed/saga-pattern.md +797 -0
- package/expertise/architecture/foundations/architectural-thinking.md +460 -0
- package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
- package/expertise/architecture/foundations/design-principles-solid.md +649 -0
- package/expertise/architecture/foundations/domain-driven-design.md +719 -0
- package/expertise/architecture/foundations/index.md +25 -0
- package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
- package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
- package/expertise/architecture/index.md +34 -0
- package/expertise/architecture/integration/api-design-graphql.md +638 -0
- package/expertise/architecture/integration/api-design-grpc.md +804 -0
- package/expertise/architecture/integration/api-design-rest.md +892 -0
- package/expertise/architecture/integration/index.md +25 -0
- package/expertise/architecture/integration/third-party-integration.md +795 -0
- package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
- package/expertise/architecture/integration/websockets-realtime.md +791 -0
- package/expertise/architecture/mobile-architecture/index.md +22 -0
- package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
- package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
- package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
- package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
- package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
- package/expertise/architecture/patterns/event-driven.md +797 -0
- package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
- package/expertise/architecture/patterns/index.md +27 -0
- package/expertise/architecture/patterns/layered-architecture.md +736 -0
- package/expertise/architecture/patterns/microservices.md +753 -0
- package/expertise/architecture/patterns/modular-monolith.md +692 -0
- package/expertise/architecture/patterns/monolith.md +626 -0
- package/expertise/architecture/patterns/plugin-architecture.md +735 -0
- package/expertise/architecture/patterns/serverless.md +780 -0
- package/expertise/architecture/scaling/database-scaling.md +615 -0
- package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
- package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
- package/expertise/architecture/scaling/index.md +24 -0
- package/expertise/architecture/scaling/multi-tenancy.md +800 -0
- package/expertise/architecture/scaling/stateless-design.md +787 -0
- package/expertise/backend/embedded-firmware.md +625 -0
- package/expertise/backend/go.md +853 -0
- package/expertise/backend/index.md +24 -0
- package/expertise/backend/java-spring.md +448 -0
- package/expertise/backend/node-typescript.md +625 -0
- package/expertise/backend/python-fastapi.md +724 -0
- package/expertise/backend/rust.md +458 -0
- package/expertise/backend/solidity.md +711 -0
- package/expertise/composition-map.yaml +443 -0
- package/expertise/content/foundations/content-modeling.md +395 -0
- package/expertise/content/foundations/editorial-standards.md +449 -0
- package/expertise/content/foundations/index.md +24 -0
- package/expertise/content/foundations/microcopy.md +455 -0
- package/expertise/content/foundations/terminology-governance.md +509 -0
- package/expertise/content/index.md +34 -0
- package/expertise/content/patterns/accessibility-copy.md +518 -0
- package/expertise/content/patterns/index.md +24 -0
- package/expertise/content/patterns/notification-content.md +433 -0
- package/expertise/content/patterns/sample-content.md +486 -0
- package/expertise/content/patterns/state-copy.md +439 -0
- package/expertise/design/PROGRESS.md +58 -0
- package/expertise/design/disciplines/dark-mode-theming.md +577 -0
- package/expertise/design/disciplines/design-systems.md +595 -0
- package/expertise/design/disciplines/index.md +25 -0
- package/expertise/design/disciplines/information-architecture.md +800 -0
- package/expertise/design/disciplines/interaction-design.md +788 -0
- package/expertise/design/disciplines/responsive-design.md +552 -0
- package/expertise/design/disciplines/usability-testing.md +516 -0
- package/expertise/design/disciplines/user-research.md +792 -0
- package/expertise/design/foundations/accessibility-design.md +796 -0
- package/expertise/design/foundations/color-theory.md +797 -0
- package/expertise/design/foundations/iconography.md +795 -0
- package/expertise/design/foundations/index.md +26 -0
- package/expertise/design/foundations/motion-and-animation.md +653 -0
- package/expertise/design/foundations/rtl-design.md +585 -0
- package/expertise/design/foundations/spacing-and-layout.md +607 -0
- package/expertise/design/foundations/typography.md +800 -0
- package/expertise/design/foundations/visual-hierarchy.md +761 -0
- package/expertise/design/index.md +32 -0
- package/expertise/design/patterns/authentication-flows.md +474 -0
- package/expertise/design/patterns/content-consumption.md +789 -0
- package/expertise/design/patterns/data-display.md +618 -0
- package/expertise/design/patterns/e-commerce.md +1494 -0
- package/expertise/design/patterns/feedback-and-states.md +642 -0
- package/expertise/design/patterns/forms-and-input.md +819 -0
- package/expertise/design/patterns/gamification.md +801 -0
- package/expertise/design/patterns/index.md +31 -0
- package/expertise/design/patterns/microinteractions.md +449 -0
- package/expertise/design/patterns/navigation.md +800 -0
- package/expertise/design/patterns/notifications.md +705 -0
- package/expertise/design/patterns/onboarding.md +700 -0
- package/expertise/design/patterns/search-and-filter.md +601 -0
- package/expertise/design/patterns/settings-and-preferences.md +768 -0
- package/expertise/design/patterns/social-and-community.md +748 -0
- package/expertise/design/platforms/desktop-native.md +612 -0
- package/expertise/design/platforms/index.md +25 -0
- package/expertise/design/platforms/mobile-android.md +825 -0
- package/expertise/design/platforms/mobile-cross-platform.md +983 -0
- package/expertise/design/platforms/mobile-ios.md +699 -0
- package/expertise/design/platforms/tablet.md +794 -0
- package/expertise/design/platforms/web-dashboard.md +790 -0
- package/expertise/design/platforms/web-responsive.md +550 -0
- package/expertise/design/psychology/behavioral-nudges.md +449 -0
- package/expertise/design/psychology/cognitive-load.md +1191 -0
- package/expertise/design/psychology/error-psychology.md +778 -0
- package/expertise/design/psychology/index.md +22 -0
- package/expertise/design/psychology/persuasive-design.md +736 -0
- package/expertise/design/psychology/user-mental-models.md +623 -0
- package/expertise/design/tooling/open-pencil.md +266 -0
- package/expertise/frontend/angular.md +1073 -0
- package/expertise/frontend/desktop-electron.md +546 -0
- package/expertise/frontend/flutter.md +782 -0
- package/expertise/frontend/index.md +27 -0
- package/expertise/frontend/native-android.md +409 -0
- package/expertise/frontend/native-ios.md +490 -0
- package/expertise/frontend/react-native.md +1160 -0
- package/expertise/frontend/react.md +808 -0
- package/expertise/frontend/vue.md +1089 -0
- package/expertise/humanize/domain-rules-code.md +79 -0
- package/expertise/humanize/domain-rules-content.md +67 -0
- package/expertise/humanize/domain-rules-technical-docs.md +56 -0
- package/expertise/humanize/index.md +35 -0
- package/expertise/humanize/self-audit-checklist.md +87 -0
- package/expertise/humanize/sentence-patterns.md +218 -0
- package/expertise/humanize/vocabulary-blacklist.md +105 -0
- package/expertise/i18n/PROGRESS.md +65 -0
- package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
- package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
- package/expertise/i18n/advanced/complex-scripts.md +30 -0
- package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
- package/expertise/i18n/advanced/testing-i18n.md +28 -0
- package/expertise/i18n/content/content-adaptation.md +23 -0
- package/expertise/i18n/content/locale-specific-formatting.md +23 -0
- package/expertise/i18n/content/machine-translation-integration.md +28 -0
- package/expertise/i18n/content/translation-management.md +29 -0
- package/expertise/i18n/foundations/date-time-calendars.md +67 -0
- package/expertise/i18n/foundations/i18n-architecture.md +272 -0
- package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
- package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
- package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
- package/expertise/i18n/foundations/string-externalization.md +236 -0
- package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
- package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
- package/expertise/i18n/index.md +38 -0
- package/expertise/i18n/platform/backend-i18n.md +31 -0
- package/expertise/i18n/platform/flutter-i18n.md +148 -0
- package/expertise/i18n/platform/native-android-i18n.md +36 -0
- package/expertise/i18n/platform/native-ios-i18n.md +36 -0
- package/expertise/i18n/platform/react-i18n.md +103 -0
- package/expertise/i18n/platform/web-css-i18n.md +81 -0
- package/expertise/i18n/rtl/arabic-specific.md +175 -0
- package/expertise/i18n/rtl/hebrew-specific.md +149 -0
- package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
- package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
- package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
- package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
- package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
- package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
- package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
- package/expertise/i18n/rtl/rtl-typography.md +160 -0
- package/expertise/index.md +113 -0
- package/expertise/index.yaml +216 -0
- package/expertise/infrastructure/cloud-aws.md +597 -0
- package/expertise/infrastructure/cloud-gcp.md +599 -0
- package/expertise/infrastructure/cybersecurity.md +816 -0
- package/expertise/infrastructure/database-mongodb.md +447 -0
- package/expertise/infrastructure/database-postgres.md +400 -0
- package/expertise/infrastructure/devops-cicd.md +787 -0
- package/expertise/infrastructure/index.md +27 -0
- package/expertise/performance/PROGRESS.md +50 -0
- package/expertise/performance/backend/api-latency.md +1204 -0
- package/expertise/performance/backend/background-jobs.md +506 -0
- package/expertise/performance/backend/connection-pooling.md +1209 -0
- package/expertise/performance/backend/database-query-optimization.md +515 -0
- package/expertise/performance/backend/index.md +23 -0
- package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
- package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
- package/expertise/performance/foundations/caching-strategies.md +489 -0
- package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
- package/expertise/performance/foundations/index.md +24 -0
- package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
- package/expertise/performance/foundations/memory-management.md +964 -0
- package/expertise/performance/foundations/performance-budgets.md +1314 -0
- package/expertise/performance/index.md +31 -0
- package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
- package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
- package/expertise/performance/infrastructure/index.md +22 -0
- package/expertise/performance/infrastructure/load-balancing.md +1081 -0
- package/expertise/performance/infrastructure/observability.md +1079 -0
- package/expertise/performance/mobile/index.md +23 -0
- package/expertise/performance/mobile/mobile-animations.md +544 -0
- package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
- package/expertise/performance/mobile/mobile-network.md +452 -0
- package/expertise/performance/mobile/mobile-rendering.md +599 -0
- package/expertise/performance/mobile/mobile-startup-time.md +505 -0
- package/expertise/performance/platform-specific/flutter-performance.md +647 -0
- package/expertise/performance/platform-specific/index.md +22 -0
- package/expertise/performance/platform-specific/node-performance.md +1307 -0
- package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
- package/expertise/performance/platform-specific/react-performance.md +1403 -0
- package/expertise/performance/web/bundle-optimization.md +1239 -0
- package/expertise/performance/web/image-and-media.md +636 -0
- package/expertise/performance/web/index.md +24 -0
- package/expertise/performance/web/network-optimization.md +1133 -0
- package/expertise/performance/web/rendering-performance.md +1098 -0
- package/expertise/performance/web/ssr-and-hydration.md +918 -0
- package/expertise/performance/web/web-vitals.md +1374 -0
- package/expertise/quality/accessibility.md +985 -0
- package/expertise/quality/evidence-based-verification.md +499 -0
- package/expertise/quality/index.md +24 -0
- package/expertise/quality/ml-model-audit.md +614 -0
- package/expertise/quality/performance.md +600 -0
- package/expertise/quality/testing-api.md +891 -0
- package/expertise/quality/testing-mobile.md +496 -0
- package/expertise/quality/testing-web.md +849 -0
- package/expertise/security/PROGRESS.md +54 -0
- package/expertise/security/agentic-identity.md +540 -0
- package/expertise/security/compliance-frameworks.md +601 -0
- package/expertise/security/data/data-encryption.md +364 -0
- package/expertise/security/data/data-privacy-gdpr.md +692 -0
- package/expertise/security/data/database-security.md +1171 -0
- package/expertise/security/data/index.md +22 -0
- package/expertise/security/data/pii-handling.md +531 -0
- package/expertise/security/foundations/authentication.md +1041 -0
- package/expertise/security/foundations/authorization.md +603 -0
- package/expertise/security/foundations/cryptography.md +1001 -0
- package/expertise/security/foundations/index.md +25 -0
- package/expertise/security/foundations/owasp-top-10.md +1354 -0
- package/expertise/security/foundations/secrets-management.md +1217 -0
- package/expertise/security/foundations/secure-sdlc.md +700 -0
- package/expertise/security/foundations/supply-chain-security.md +698 -0
- package/expertise/security/index.md +31 -0
- package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
- package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
- package/expertise/security/infrastructure/container-security.md +721 -0
- package/expertise/security/infrastructure/incident-response.md +1295 -0
- package/expertise/security/infrastructure/index.md +24 -0
- package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
- package/expertise/security/infrastructure/network-security.md +1337 -0
- package/expertise/security/mobile/index.md +23 -0
- package/expertise/security/mobile/mobile-android-security.md +1218 -0
- package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
- package/expertise/security/mobile/mobile-data-storage.md +1265 -0
- package/expertise/security/mobile/mobile-ios-security.md +1401 -0
- package/expertise/security/mobile/mobile-network-security.md +1520 -0
- package/expertise/security/smart-contract-security.md +594 -0
- package/expertise/security/testing/index.md +22 -0
- package/expertise/security/testing/penetration-testing.md +1258 -0
- package/expertise/security/testing/security-code-review.md +1765 -0
- package/expertise/security/testing/threat-modeling.md +1074 -0
- package/expertise/security/testing/vulnerability-scanning.md +1062 -0
- package/expertise/security/web/api-security.md +586 -0
- package/expertise/security/web/cors-and-headers.md +433 -0
- package/expertise/security/web/csrf.md +562 -0
- package/expertise/security/web/file-upload.md +1477 -0
- package/expertise/security/web/index.md +25 -0
- package/expertise/security/web/injection.md +1375 -0
- package/expertise/security/web/session-management.md +1101 -0
- package/expertise/security/web/xss.md +1158 -0
- package/exports/README.md +17 -0
- package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
- package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
- package/exports/hosts/claude/.claude/agents/designer.md +55 -0
- package/exports/hosts/claude/.claude/agents/executor.md +55 -0
- package/exports/hosts/claude/.claude/agents/learner.md +51 -0
- package/exports/hosts/claude/.claude/agents/planner.md +53 -0
- package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
- package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
- package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
- package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
- package/exports/hosts/claude/.claude/commands/author.md +42 -0
- package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
- package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
- package/exports/hosts/claude/.claude/commands/design.md +44 -0
- package/exports/hosts/claude/.claude/commands/discover.md +37 -0
- package/exports/hosts/claude/.claude/commands/execute.md +48 -0
- package/exports/hosts/claude/.claude/commands/learn.md +38 -0
- package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
- package/exports/hosts/claude/.claude/commands/plan.md +39 -0
- package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
- package/exports/hosts/claude/.claude/commands/review.md +40 -0
- package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
- package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
- package/exports/hosts/claude/.claude/commands/specify.md +38 -0
- package/exports/hosts/claude/.claude/commands/verify.md +37 -0
- package/exports/hosts/claude/.claude/settings.json +34 -0
- package/exports/hosts/claude/CLAUDE.md +19 -0
- package/exports/hosts/claude/export.manifest.json +38 -0
- package/exports/hosts/claude/host-package.json +67 -0
- package/exports/hosts/codex/AGENTS.md +19 -0
- package/exports/hosts/codex/export.manifest.json +38 -0
- package/exports/hosts/codex/host-package.json +41 -0
- package/exports/hosts/cursor/.cursor/hooks.json +16 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
- package/exports/hosts/cursor/export.manifest.json +38 -0
- package/exports/hosts/cursor/host-package.json +42 -0
- package/exports/hosts/gemini/GEMINI.md +19 -0
- package/exports/hosts/gemini/export.manifest.json +38 -0
- package/exports/hosts/gemini/host-package.json +41 -0
- package/hooks/README.md +18 -0
- package/hooks/definitions/loop_cap_guard.yaml +21 -0
- package/hooks/definitions/post_tool_capture.yaml +24 -0
- package/hooks/definitions/pre_compact_summary.yaml +19 -0
- package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
- package/hooks/definitions/protected_path_write_guard.yaml +19 -0
- package/hooks/definitions/session_start.yaml +19 -0
- package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
- package/hooks/loop-cap-guard +17 -0
- package/hooks/post-tool-lint +36 -0
- package/hooks/protected-path-write-guard +17 -0
- package/hooks/session-start +41 -0
- package/llms-full.txt +2355 -0
- package/llms.txt +43 -0
- package/package.json +79 -0
- package/roles/README.md +20 -0
- package/roles/clarifier.md +42 -0
- package/roles/content-author.md +63 -0
- package/roles/designer.md +55 -0
- package/roles/executor.md +55 -0
- package/roles/learner.md +51 -0
- package/roles/planner.md +53 -0
- package/roles/researcher.md +43 -0
- package/roles/reviewer.md +54 -0
- package/roles/specifier.md +47 -0
- package/roles/verifier.md +71 -0
- package/schemas/README.md +24 -0
- package/schemas/accepted-learning.schema.json +20 -0
- package/schemas/author-artifact.schema.json +156 -0
- package/schemas/clarification.schema.json +19 -0
- package/schemas/design-artifact.schema.json +80 -0
- package/schemas/docs-claim.schema.json +18 -0
- package/schemas/export-manifest.schema.json +20 -0
- package/schemas/hook.schema.json +67 -0
- package/schemas/host-export-package.schema.json +18 -0
- package/schemas/implementation-plan.schema.json +19 -0
- package/schemas/proposed-learning.schema.json +19 -0
- package/schemas/research.schema.json +18 -0
- package/schemas/review.schema.json +29 -0
- package/schemas/run-manifest.schema.json +18 -0
- package/schemas/spec-challenge.schema.json +18 -0
- package/schemas/spec.schema.json +20 -0
- package/schemas/usage.schema.json +102 -0
- package/schemas/verification-proof.schema.json +29 -0
- package/schemas/wazir-manifest.schema.json +173 -0
- package/skills/README.md +40 -0
- package/skills/brainstorming/SKILL.md +77 -0
- package/skills/debugging/SKILL.md +50 -0
- package/skills/design/SKILL.md +61 -0
- package/skills/dispatching-parallel-agents/SKILL.md +128 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +169 -0
- package/skills/humanize/SKILL.md +123 -0
- package/skills/init-pipeline/SKILL.md +124 -0
- package/skills/prepare-next/SKILL.md +20 -0
- package/skills/receiving-code-review/SKILL.md +123 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +108 -0
- package/skills/run-audit/SKILL.md +197 -0
- package/skills/scan-project/SKILL.md +41 -0
- package/skills/self-audit/SKILL.md +153 -0
- package/skills/subagent-driven-development/SKILL.md +154 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +102 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/tdd/SKILL.md +23 -0
- package/skills/using-git-worktrees/SKILL.md +163 -0
- package/skills/using-skills/SKILL.md +95 -0
- package/skills/verification/SKILL.md +22 -0
- package/skills/wazir/SKILL.md +463 -0
- package/skills/writing-plans/SKILL.md +30 -0
- package/skills/writing-skills/SKILL.md +157 -0
- package/skills/writing-skills/anthropic-best-practices.md +122 -0
- package/skills/writing-skills/persuasion-principles.md +50 -0
- package/templates/README.md +20 -0
- package/templates/artifacts/README.md +10 -0
- package/templates/artifacts/accepted-learning.md +19 -0
- package/templates/artifacts/accepted-learning.template.json +12 -0
- package/templates/artifacts/author.md +74 -0
- package/templates/artifacts/author.template.json +19 -0
- package/templates/artifacts/clarification.md +21 -0
- package/templates/artifacts/clarification.template.json +12 -0
- package/templates/artifacts/execute-notes.md +19 -0
- package/templates/artifacts/implementation-plan.md +21 -0
- package/templates/artifacts/implementation-plan.template.json +11 -0
- package/templates/artifacts/learning-proposal.md +19 -0
- package/templates/artifacts/next-run-handoff.md +21 -0
- package/templates/artifacts/plan-review.md +19 -0
- package/templates/artifacts/proposed-learning.template.json +12 -0
- package/templates/artifacts/research.md +21 -0
- package/templates/artifacts/research.template.json +12 -0
- package/templates/artifacts/review-findings.md +19 -0
- package/templates/artifacts/review.template.json +11 -0
- package/templates/artifacts/run-manifest.template.json +8 -0
- package/templates/artifacts/spec-challenge.md +19 -0
- package/templates/artifacts/spec-challenge.template.json +11 -0
- package/templates/artifacts/spec.md +21 -0
- package/templates/artifacts/spec.template.json +12 -0
- package/templates/artifacts/verification-proof.md +19 -0
- package/templates/artifacts/verification-proof.template.json +11 -0
- package/templates/examples/accepted-learning.example.json +14 -0
- package/templates/examples/author.example.json +152 -0
- package/templates/examples/clarification.example.json +15 -0
- package/templates/examples/docs-claim.example.json +8 -0
- package/templates/examples/export-manifest.example.json +7 -0
- package/templates/examples/host-export-package.example.json +11 -0
- package/templates/examples/implementation-plan.example.json +17 -0
- package/templates/examples/proposed-learning.example.json +13 -0
- package/templates/examples/research.example.json +15 -0
- package/templates/examples/research.example.md +6 -0
- package/templates/examples/review.example.json +17 -0
- package/templates/examples/run-manifest.example.json +9 -0
- package/templates/examples/spec-challenge.example.json +14 -0
- package/templates/examples/spec.example.json +21 -0
- package/templates/examples/verification-proof.example.json +21 -0
- package/templates/examples/wazir-manifest.example.yaml +65 -0
- package/templates/task-definition-schema.md +99 -0
- package/tooling/README.md +20 -0
- package/tooling/src/adapters/context-mode.js +50 -0
- package/tooling/src/capture/command.js +376 -0
- package/tooling/src/capture/store.js +99 -0
- package/tooling/src/capture/usage.js +270 -0
- package/tooling/src/checks/branches.js +50 -0
- package/tooling/src/checks/brand-truth.js +110 -0
- package/tooling/src/checks/changelog.js +231 -0
- package/tooling/src/checks/command-registry.js +36 -0
- package/tooling/src/checks/commits.js +102 -0
- package/tooling/src/checks/docs-drift.js +103 -0
- package/tooling/src/checks/docs-truth.js +201 -0
- package/tooling/src/checks/runtime-surface.js +156 -0
- package/tooling/src/cli.js +116 -0
- package/tooling/src/command-options.js +56 -0
- package/tooling/src/commands/validate.js +320 -0
- package/tooling/src/doctor/command.js +91 -0
- package/tooling/src/export/command.js +77 -0
- package/tooling/src/export/compiler.js +498 -0
- package/tooling/src/guards/loop-cap-guard.js +52 -0
- package/tooling/src/guards/protected-path-write-guard.js +67 -0
- package/tooling/src/index/command.js +152 -0
- package/tooling/src/index/storage.js +1061 -0
- package/tooling/src/index/summarizers.js +261 -0
- package/tooling/src/loaders.js +18 -0
- package/tooling/src/project-root.js +22 -0
- package/tooling/src/recall/command.js +225 -0
- package/tooling/src/schema-validator.js +30 -0
- package/tooling/src/state-root.js +40 -0
- package/tooling/src/status/command.js +71 -0
- package/wazir.manifest.yaml +135 -0
- package/workflows/README.md +19 -0
- package/workflows/author.md +42 -0
- package/workflows/clarify.md +38 -0
- package/workflows/design-review.md +46 -0
- package/workflows/design.md +44 -0
- package/workflows/discover.md +37 -0
- package/workflows/execute.md +48 -0
- package/workflows/learn.md +38 -0
- package/workflows/plan-review.md +42 -0
- package/workflows/plan.md +39 -0
- package/workflows/prepare-next.md +37 -0
- package/workflows/review.md +40 -0
- package/workflows/run-audit.md +41 -0
- package/workflows/spec-challenge.md +41 -0
- package/workflows/specify.md +38 -0
- package/workflows/verify.md +37 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# RTL Forms and Input — i18n/RTL Expertise Module
|
|
2
|
+
|
|
3
|
+
> Form layout, label placement, input alignment, and validation messages in RTL. Labels at start of input, text alignment follows direction, placeholders and icons positioned correctly.
|
|
4
|
+
|
|
5
|
+
> **Category:** RTL
|
|
6
|
+
> **Applies to:** Mobile, Web
|
|
7
|
+
> **Key standards:** W3C, Material Design
|
|
8
|
+
> **RTL impact:** Critical — forms are high-frequency touchpoints
|
|
9
|
+
|
|
10
|
+
## 1. The Rules
|
|
11
|
+
|
|
12
|
+
### Label Placement
|
|
13
|
+
|
|
14
|
+
| Layout | LTR | RTL |
|
|
15
|
+
|--------|-----|-----|
|
|
16
|
+
| **Inline (label + input)** | Label left of input | Label right of input |
|
|
17
|
+
| **Top-aligned** | Label above input | Same (no mirror) |
|
|
18
|
+
| **Floating label** | Label at start of input | Label at start (right in RTL) |
|
|
19
|
+
|
|
20
|
+
**Rule:** Label is always at the **start** of the input (inline axis). In RTL, start = right.
|
|
21
|
+
|
|
22
|
+
### Input Text Alignment
|
|
23
|
+
|
|
24
|
+
- **LTR:** `text-align: start` → left
|
|
25
|
+
- **RTL:** `text-align: start` → right
|
|
26
|
+
- **Numbers in input:** May stay LTR (e.g., phone, credit card); use `dir="ltr"` on input if needed
|
|
27
|
+
- **Mixed content:** Use `dir="auto"` for user-generated text
|
|
28
|
+
|
|
29
|
+
### Input Icons
|
|
30
|
+
|
|
31
|
+
| Icon position | LTR | RTL |
|
|
32
|
+
|---------------|-----|-----|
|
|
33
|
+
| **Leading (search icon)** | Left of input | Right of input |
|
|
34
|
+
| **Trailing (clear, visibility)** | Right of input | Left of input |
|
|
35
|
+
| **Inside input** | `padding-inline-start` for leading icon space | Same (logical) |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. Platform Implementation
|
|
40
|
+
|
|
41
|
+
### Web (CSS)
|
|
42
|
+
|
|
43
|
+
```css
|
|
44
|
+
.form-group {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-direction: row; /* or column for top-aligned */
|
|
47
|
+
gap: 0.5rem;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
label {
|
|
51
|
+
flex-shrink: 0;
|
|
52
|
+
/* Inline: label at start; flex order handles it when dir=rtl */
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
input, textarea {
|
|
56
|
+
text-align: start;
|
|
57
|
+
padding-inline-start: 1rem;
|
|
58
|
+
padding-inline-end: 1rem;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Leading icon */
|
|
62
|
+
.input-with-icon {
|
|
63
|
+
padding-inline-start: 2.5rem;
|
|
64
|
+
}
|
|
65
|
+
.input-with-icon[dir="rtl"] {
|
|
66
|
+
padding-inline-end: 2.5rem;
|
|
67
|
+
padding-inline-start: 1rem;
|
|
68
|
+
}
|
|
69
|
+
/* Or use logical: padding-inline-start with icon positioned at start */
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Flutter
|
|
73
|
+
|
|
74
|
+
```dart
|
|
75
|
+
TextField(
|
|
76
|
+
textDirection: TextDirection.rtl, // or from Directionality
|
|
77
|
+
textAlign: TextAlign.start,
|
|
78
|
+
decoration: InputDecoration(
|
|
79
|
+
labelText: '...',
|
|
80
|
+
// Flutter handles RTL for icon placement when Directionality is set
|
|
81
|
+
prefixIcon: Icon(Icons.search), // At start
|
|
82
|
+
suffixIcon: Icon(Icons.clear), // At end
|
|
83
|
+
),
|
|
84
|
+
)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Android
|
|
88
|
+
|
|
89
|
+
```xml
|
|
90
|
+
<EditText
|
|
91
|
+
android:layoutDirection="locale"
|
|
92
|
+
android:textAlignment="viewStart"
|
|
93
|
+
android:gravity="start"
|
|
94
|
+
... />
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### iOS
|
|
98
|
+
|
|
99
|
+
- Use leading/trailing constraints for label and input
|
|
100
|
+
- `NSTextAlignment.natural` for text alignment
|
|
101
|
+
- `semanticContentAttribute` for RTL
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 3. Special Cases
|
|
106
|
+
|
|
107
|
+
### Number Inputs
|
|
108
|
+
|
|
109
|
+
- Phone numbers, credit cards: often LTR
|
|
110
|
+
- Use `dir="ltr"` on the input or `inputmode` + `inputmode="numeric"`
|
|
111
|
+
- Or let `dir="auto"` resolve from first character
|
|
112
|
+
|
|
113
|
+
### Search Input
|
|
114
|
+
|
|
115
|
+
- Magnifier icon at start (right in RTL)
|
|
116
|
+
- Clear button at end (left in RTL)
|
|
117
|
+
|
|
118
|
+
### Validation Messages
|
|
119
|
+
|
|
120
|
+
- Position at start of input (below or inline)
|
|
121
|
+
- Use logical properties for placement
|
|
122
|
+
|
|
123
|
+
### Placeholder Text
|
|
124
|
+
|
|
125
|
+
- `text-align: start` so placeholder aligns with input
|
|
126
|
+
- Placeholder direction follows input `dir`
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 4. Anti-Patterns
|
|
131
|
+
|
|
132
|
+
1. **Label on wrong side** — Using `float: left` or `margin-left`; use logical
|
|
133
|
+
2. **Input text-align: left** — Use `text-align: start`
|
|
134
|
+
3. **Icon padding physical** — `padding-left` for leading icon; use `padding-inline-start`
|
|
135
|
+
4. **Fixed width for label** — Labels vary in length; use flex or min-width
|
|
136
|
+
5. **Validation message position** — Using `left`; use `inline-start`
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 5. QA Checklist
|
|
141
|
+
|
|
142
|
+
- [ ] Labels at start of input
|
|
143
|
+
- [ ] Input text aligns to start
|
|
144
|
+
- [ ] Leading/trailing icons in correct positions
|
|
145
|
+
- [ ] Placeholder aligns with input
|
|
146
|
+
- [ ] Number inputs (phone, etc.) handled (LTR or as needed)
|
|
147
|
+
- [ ] Validation messages at start
|
|
148
|
+
- [ ] Focus ring/outline uses logical inset
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Quick Reference Checklist
|
|
153
|
+
|
|
154
|
+
- [ ] Label at start (right in RTL for inline layout)
|
|
155
|
+
- [ ] `text-align: start` on inputs
|
|
156
|
+
- [ ] Icon padding uses `padding-inline-*`
|
|
157
|
+
- [ ] Test with long labels (e.g., German)
|
|
158
|
+
- [ ] Test number and mixed-content inputs
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
*Researched: 2026-03-08 | Sources: CSS-Tricks forms, Bootstrap RTL, Stack Overflow RTL forms*
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# RTL Fundamentals — i18n/RTL Expertise Module
|
|
2
|
+
|
|
3
|
+
> The core rules of right-to-left layout: what mirrors, what doesn't, and why "just flip the layout" is wrong. RTL is a fundamental change in reading direction, interaction patterns, and visual hierarchy—not a CSS transform.
|
|
4
|
+
|
|
5
|
+
> **Category:** RTL
|
|
6
|
+
> **Applies to:** Mobile, Web
|
|
7
|
+
> **Key standards:** W3C BiDi, Material Design RTL, Apple HIG RTL
|
|
8
|
+
> **RTL impact:** Critical — this is the entry point for all RTL work
|
|
9
|
+
|
|
10
|
+
## 1. The Rules
|
|
11
|
+
|
|
12
|
+
### What Mirrors (Layout and Directional Elements)
|
|
13
|
+
|
|
14
|
+
| Element | LTR | RTL | Why |
|
|
15
|
+
|---------|-----|-----|-----|
|
|
16
|
+
| **Layout flow** | Content starts left, flows right | Content starts right, flows left | Reading direction |
|
|
17
|
+
| **Navigation** | Items ordered left→right | Items ordered right→left | Reading order |
|
|
18
|
+
| **Back arrow** | ← (points left) | → (points right) | "Back" = toward start |
|
|
19
|
+
| **Forward arrow** | → (points right) | ← (points left) | "Forward" = toward end |
|
|
20
|
+
| **Sidebar** | Left side | Right side | Start edge |
|
|
21
|
+
| **Padding/margins** | `padding-left` = start | `padding-inline-start` = start | Logical = auto-mirror |
|
|
22
|
+
| **Text alignment** | `text-align: left` | `text-align: start` | Start = reading start |
|
|
23
|
+
| **Progress bar fill** | Fills left→right | Fills right→left | Direction of progress |
|
|
24
|
+
| **Tabs** | First tab on left | First tab on right | Start edge |
|
|
25
|
+
| **Form labels** | Label left of input | Label right of input | Start-before-end |
|
|
26
|
+
| **Icons with direction** | Back, forward, chevron | Mirrored | Convey direction |
|
|
27
|
+
|
|
28
|
+
### What Does NOT Mirror
|
|
29
|
+
|
|
30
|
+
| Element | Reason |
|
|
31
|
+
|---------|--------|
|
|
32
|
+
| **Checkmark (✓)** | No inherent direction; same in all locales |
|
|
33
|
+
| **Play button (▶)** | Represents play action, not reading direction |
|
|
34
|
+
| **Media timeline** | Time flows left→right universally |
|
|
35
|
+
| **Charts and graphs** | X-axis = time/quantity; convention is LTR |
|
|
36
|
+
| **Maps** | Geographic; north is up, east is right |
|
|
37
|
+
| **Clocks** | 12 at top is universal |
|
|
38
|
+
| **Numbers** | 123 stays 123 (Western Arabic numerals) |
|
|
39
|
+
| **Phone numbers** | Always LTR |
|
|
40
|
+
| **URLs, email** | Always LTR |
|
|
41
|
+
| **Brand logos** | Do not mirror |
|
|
42
|
+
| **Music notation** | Universal convention |
|
|
43
|
+
| **Video playhead** | Represents time; moves left→right |
|
|
44
|
+
|
|
45
|
+
### The #1 Rule: Physical vs Logical
|
|
46
|
+
|
|
47
|
+
**Physical:** `left`, `right`, `margin-left`, `padding-right` — fixed in space.
|
|
48
|
+
|
|
49
|
+
**Logical:** `start`, `end`, `inline-start`, `inline-end`, `margin-inline-start` — follow reading direction.
|
|
50
|
+
|
|
51
|
+
Using logical properties prevents ~60% of RTL bugs. Every layout decision should ask: "Is this physical or logical?"
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 2. Visual Examples (Described in Detail)
|
|
56
|
+
|
|
57
|
+
### Back Arrow
|
|
58
|
+
|
|
59
|
+
- **LTR:** Back arrow points left (←). User taps to go "back" = toward the start of the navigation stack.
|
|
60
|
+
- **RTL:** Back arrow points right (→). "Back" still means toward the start—but in RTL, start is on the right. The arrow mirrors so it points toward the right edge, where the user "came from."
|
|
61
|
+
|
|
62
|
+
### Progress Bar
|
|
63
|
+
|
|
64
|
+
- **LTR:** Bar fills from left to right. Empty on the left, full on the right.
|
|
65
|
+
- **RTL:** Bar fills from right to left. Empty on the right, full on the left. Progress direction follows reading direction.
|
|
66
|
+
|
|
67
|
+
### Media Playhead
|
|
68
|
+
|
|
69
|
+
- **LTR and RTL:** Playhead moves left→right. Time is universal; 0:00 is left, end is right. Do NOT mirror.
|
|
70
|
+
|
|
71
|
+
### List with Leading Icon
|
|
72
|
+
|
|
73
|
+
- **LTR:** Icon on left, text on right. `[icon] Item text`
|
|
74
|
+
- **RTL:** Icon on right, text on left. `Item text [icon]` — icon stays at the start (which is now right).
|
|
75
|
+
|
|
76
|
+
### Form: Label + Input
|
|
77
|
+
|
|
78
|
+
- **LTR:** Label to the left of the input. `Name: [________]`
|
|
79
|
+
- **RTL:** Label to the right of the input. `[________] :Name` — label at start, input at end.
|
|
80
|
+
|
|
81
|
+
### Mixed Content: "Hello العربية"
|
|
82
|
+
|
|
83
|
+
- **LTR paragraph:** "Hello" LTR, "العربية" RTL (reversed visually), both in one line.
|
|
84
|
+
- **RTL paragraph:** "العربية" RTL, "Hello" LTR (embedded), order depends on BiDi algorithm.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 3. Platform Implementation
|
|
89
|
+
|
|
90
|
+
### Web (CSS Logical Properties)
|
|
91
|
+
|
|
92
|
+
```css
|
|
93
|
+
/* Physical (avoid for layout) */
|
|
94
|
+
margin-left: 16px;
|
|
95
|
+
padding-right: 8px;
|
|
96
|
+
text-align: left;
|
|
97
|
+
|
|
98
|
+
/* Logical (RTL-safe) */
|
|
99
|
+
margin-inline-start: 16px;
|
|
100
|
+
padding-inline-end: 8px;
|
|
101
|
+
text-align: start;
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Transform that does NOT auto-mirror:**
|
|
105
|
+
```css
|
|
106
|
+
/* BAD: translateX is physical */
|
|
107
|
+
transform: translateX(10px);
|
|
108
|
+
|
|
109
|
+
/* GOOD: use direction multiplier or logical equivalent */
|
|
110
|
+
transform: translateX(calc(10px * var(--dir, 1))); /* dir = -1 for RTL */
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Flutter
|
|
114
|
+
|
|
115
|
+
```dart
|
|
116
|
+
// Use Directionality
|
|
117
|
+
Directionality(
|
|
118
|
+
textDirection: TextDirection.rtl,
|
|
119
|
+
child: Row(
|
|
120
|
+
children: [...],
|
|
121
|
+
),
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
// Use EdgeInsetsDirectional, not EdgeInsets
|
|
125
|
+
EdgeInsetsDirectional.only(start: 16, end: 8)
|
|
126
|
+
|
|
127
|
+
// Icons: Icon with semanticLabel; use RTL-aware icons
|
|
128
|
+
Icon(Icons.arrow_back) // Flutter mirrors automatically when Directionality is RTL
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### iOS (Auto Layout)
|
|
132
|
+
|
|
133
|
+
- Use `leading` and `trailing` constraints, not `left` and `right`
|
|
134
|
+
- `UIView.semanticContentAttribute = .forceRightToLeft` for RTL
|
|
135
|
+
- SF Symbols: many auto-mirror; use `symbolConfiguration` for custom behavior
|
|
136
|
+
|
|
137
|
+
### Android
|
|
138
|
+
|
|
139
|
+
- `android:layoutDirection="rtl"` on root or `View`
|
|
140
|
+
- `start`/`end` in XML layouts instead of `left`/`right`
|
|
141
|
+
- `getLayoutDirectionFromLocale()` for system locale
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 4. Mixed Content Handling
|
|
146
|
+
|
|
147
|
+
### LTR Inside RTL
|
|
148
|
+
|
|
149
|
+
- English brand names, URLs, code: wrap in `dir="ltr"` or equivalent
|
|
150
|
+
- Numbers (Western): often LTR; may need LRM in edge cases
|
|
151
|
+
|
|
152
|
+
### RTL Inside LTR
|
|
153
|
+
|
|
154
|
+
- Arabic/Hebrew names in English UI: wrap in `dir="rtl"` or `dir="auto"`
|
|
155
|
+
- Use `<bdi>` when direction is unknown
|
|
156
|
+
|
|
157
|
+
### Phone Numbers, Email, URLs
|
|
158
|
+
|
|
159
|
+
- Always LTR; do not mirror
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 5. Common RTL Bugs
|
|
164
|
+
|
|
165
|
+
1. **Shadows and gradients** — `box-shadow` with `left` offset doesn't mirror; use `inset-inline-start` or direction-aware values.
|
|
166
|
+
2. **Swipe gestures** — Swipe-to-go-back: in RTL, "back" swipe should be from the right edge.
|
|
167
|
+
3. **Text alignment** — `text-align: left` on mixed content; use `text-align: start`.
|
|
168
|
+
4. **Padding/margin** — Using `padding-left`; use `padding-inline-start`.
|
|
169
|
+
5. **Icons that should mirror** — Back, forward, chevrons; ensure they flip.
|
|
170
|
+
6. **Icons that shouldn't** — Checkmark, play, share; do not mirror.
|
|
171
|
+
7. **Progress bar** — Filling wrong direction; should fill start→end.
|
|
172
|
+
8. **Transform** — `translateX(10px)` doesn't mirror; use logical or direction multiplier.
|
|
173
|
+
9. **Absolute positioning** — `left: 0`; use `inset-inline-start: 0`.
|
|
174
|
+
10. **Border radius** — `border-top-left-radius`; consider `border-start-start-radius` if asymmetric.
|
|
175
|
+
11. **Flexbox** — `flex-direction: row` is logical; `row-reverse` for RTL is usually wrong—prefer logical props.
|
|
176
|
+
12. **Scroll position** — Horizontal scroll may start from right in RTL.
|
|
177
|
+
13. **Tab order** — Focus order should follow visual order in RTL.
|
|
178
|
+
14. **Truncation** — `text-overflow: ellipsis`; ellipsis should appear at end (inline-end).
|
|
179
|
+
15. **Z-index and overlay** — Overlays from "start" side; in RTL, start is right.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 6. QA Checklist
|
|
184
|
+
|
|
185
|
+
- [ ] Layout mirrors: navigation, sidebars, tabs
|
|
186
|
+
- [ ] Back/forward arrows mirror
|
|
187
|
+
- [ ] Progress bars fill correct direction
|
|
188
|
+
- [ ] Media timeline and playhead do NOT mirror
|
|
189
|
+
- [ ] Forms: labels at start of input
|
|
190
|
+
- [ ] No physical properties (left/right) for layout
|
|
191
|
+
- [ ] Shadows/gradients correct in RTL
|
|
192
|
+
- [ ] Swipe gestures match direction
|
|
193
|
+
- [ ] Mixed content (Arabic in English, etc.) displays correctly
|
|
194
|
+
- [ ] Phone numbers, URLs, email stay LTR
|
|
195
|
+
- [ ] Focus order follows visual order
|
|
196
|
+
- [ ] Truncation and ellipsis at correct edge
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Quick Reference Checklist
|
|
201
|
+
|
|
202
|
+
- [ ] Use logical properties (start/end, inline-start/end)
|
|
203
|
+
- [ ] Mirror directional icons (back, forward, chevrons)
|
|
204
|
+
- [ ] Do NOT mirror: play, checkmark, media timeline, maps, numbers
|
|
205
|
+
- [ ] Progress bar fills start→end
|
|
206
|
+
- [ ] Test with real Arabic (العربية) and Hebrew (עברית)
|
|
207
|
+
- [ ] Verify shadows, transforms, and absolute positioning
|
|
208
|
+
- [ ] Swipe gestures match RTL expectations
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
*Researched: 2026-03-08 | Sources: W3C BiDi, Material Design RTL, Apple HIG RTL, MDN logical properties, RTL guidelines (GitHub)*
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# RTL Icons and Images — i18n/RTL Expertise Module
|
|
2
|
+
|
|
3
|
+
> Which icons and images mirror in RTL, and which don't. Directional elements (arrows, chevrons, progress) flip; content (photos, logos, checkmarks) stays. Platform APIs and implementation patterns.
|
|
4
|
+
|
|
5
|
+
> **Category:** RTL
|
|
6
|
+
> **Applies to:** Mobile, Web
|
|
7
|
+
> **Key standards:** Material Design RTL, Apple HIG
|
|
8
|
+
> **RTL impact:** Critical — wrong icon direction confuses users
|
|
9
|
+
|
|
10
|
+
## 1. The Rules
|
|
11
|
+
|
|
12
|
+
### Icons That MIRROR (Directional)
|
|
13
|
+
|
|
14
|
+
| Icon | LTR | RTL | Why |
|
|
15
|
+
|------|-----|-----|-----|
|
|
16
|
+
| Back/previous | ← | → | "Back" = toward start; start is right in RTL |
|
|
17
|
+
| Forward/next | → | ← | "Forward" = toward end |
|
|
18
|
+
| Chevron (expand/collapse) | > | < | Points to content; content moves |
|
|
19
|
+
| Caret (dropdown) | ▼ or > | Same or mirrored | Depends on placement |
|
|
20
|
+
| Text alignment left | ∟ | Mirrored | Aligns with "start" |
|
|
21
|
+
| Text alignment right | ⊣ | Mirrored | Aligns with "end" |
|
|
22
|
+
| Indent/outdent | Directional | Mirrored | Text flow direction |
|
|
23
|
+
| List bullet/arrow | → | ← | Indicates flow |
|
|
24
|
+
| Progress/stepper arrow | → | ← | Direction of progress |
|
|
25
|
+
| Sidebar expand | > | < | Expand toward content |
|
|
26
|
+
|
|
27
|
+
### Icons That Do NOT Mirror
|
|
28
|
+
|
|
29
|
+
| Icon | Reason |
|
|
30
|
+
|------|--------|
|
|
31
|
+
| Checkmark (✓) | No inherent direction |
|
|
32
|
+
| Play (▶) | Universal "play" symbol |
|
|
33
|
+
| Pause (⏸) | No direction |
|
|
34
|
+
| Stop (⏹) | No direction |
|
|
35
|
+
| Camera | No direction |
|
|
36
|
+
| Settings (gear) | No direction |
|
|
37
|
+
| Search (magnifier) | No direction |
|
|
38
|
+
| Heart, star, bookmark | No direction |
|
|
39
|
+
| Share | No direction (unless arrow indicates target) |
|
|
40
|
+
| Trash/delete | No direction |
|
|
41
|
+
| Edit (pencil) | No direction |
|
|
42
|
+
| Lock, key | No direction |
|
|
43
|
+
|
|
44
|
+
### Images: Mirror or Not?
|
|
45
|
+
|
|
46
|
+
| Type | Mirror? | Examples |
|
|
47
|
+
|------|---------|----------|
|
|
48
|
+
| **Photos** | No | User avatars, product images |
|
|
49
|
+
| **Logos** | No | Brand identity |
|
|
50
|
+
| **Maps** | No | Geographic |
|
|
51
|
+
| **Charts/graphs** | No | Data visualization |
|
|
52
|
+
| **Illustrations with direction** | Yes | Person pointing, arrow in illustration |
|
|
53
|
+
| **UI controls (custom)** | Depends | If directional, mirror |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Platform Implementation
|
|
58
|
+
|
|
59
|
+
### Web (CSS)
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
/* Manual mirror for directional icons */
|
|
63
|
+
[dir="rtl"] .icon-back {
|
|
64
|
+
transform: scaleX(-1);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Or use dir attribute on icon container */
|
|
68
|
+
.icon-back {
|
|
69
|
+
transform: scaleX(var(--dir, 1));
|
|
70
|
+
}
|
|
71
|
+
[dir="rtl"] {
|
|
72
|
+
--dir: -1;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Flutter
|
|
77
|
+
|
|
78
|
+
```dart
|
|
79
|
+
// Flutter mirrors many directional icons automatically when Directionality is RTL
|
|
80
|
+
Icon(Icons.arrow_back) // Auto-mirrors
|
|
81
|
+
|
|
82
|
+
// Manual mirror when needed
|
|
83
|
+
Transform(
|
|
84
|
+
alignment: Alignment.center,
|
|
85
|
+
transform: Matrix4.identity()..scale(-1.0, 1.0),
|
|
86
|
+
child: Icon(Icons.arrow_forward),
|
|
87
|
+
)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Android (Jetpack Compose)
|
|
91
|
+
|
|
92
|
+
```kotlin
|
|
93
|
+
// AutoMirrored icons flip automatically
|
|
94
|
+
Icon(Icons.AutoMirrored.Filled.ArrowBack)
|
|
95
|
+
|
|
96
|
+
// Manual for custom drawables
|
|
97
|
+
Icon(
|
|
98
|
+
painter = painterResource(R.drawable.arrow_back),
|
|
99
|
+
contentDescription = "...",
|
|
100
|
+
modifier = Modifier.graphicsLayer {
|
|
101
|
+
scaleX = if (LocalLayoutDirection.current == LayoutDirection.Rtl) -1f else 1f
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Android (XML)
|
|
107
|
+
|
|
108
|
+
```xml
|
|
109
|
+
<ImageView
|
|
110
|
+
android:autoMirrored="true"
|
|
111
|
+
android:src="@drawable/ic_arrow_back" />
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### iOS
|
|
115
|
+
|
|
116
|
+
```swift
|
|
117
|
+
// SF Symbols: many auto-mirror with semanticContentAttribute
|
|
118
|
+
imageView.image = UIImage(systemName: "chevron.left")
|
|
119
|
+
imageView.semanticContentAttribute = .forceRightToLeftLayoutDirection
|
|
120
|
+
|
|
121
|
+
// Or: imageFlippedForRightToLeftLayoutDirection()
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 3. Visual Examples (Described in Detail)
|
|
127
|
+
|
|
128
|
+
### Back Button
|
|
129
|
+
|
|
130
|
+
- **LTR:** Arrow points left (←). User taps to go "back" = toward the start of the navigation stack (left).
|
|
131
|
+
- **RTL:** Arrow points right (→). "Back" = toward start, which is now on the right. Icon mirrors.
|
|
132
|
+
|
|
133
|
+
### Chevron in List Item
|
|
134
|
+
|
|
135
|
+
- **LTR:** Chevron (>) on the right indicates "more content to the right."
|
|
136
|
+
- **RTL:** Chevron (<) on the left indicates "more content to the left." Icon mirrors.
|
|
137
|
+
|
|
138
|
+
### Play Button in Media Player
|
|
139
|
+
|
|
140
|
+
- **LTR and RTL:** Play (▶) does NOT mirror. "Play" is a universal action; the triangle direction is not reading-direction-dependent.
|
|
141
|
+
|
|
142
|
+
### Progress Stepper
|
|
143
|
+
|
|
144
|
+
- **LTR:** Steps flow left → right. Arrow between steps points right.
|
|
145
|
+
- **RTL:** Steps flow right → left. Arrow between steps points left. Arrows mirror.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 4. Common RTL Icon Bugs
|
|
150
|
+
|
|
151
|
+
1. **Back arrow doesn't mirror** — User expects it to point toward "back" (start)
|
|
152
|
+
2. **Chevron doesn't mirror** — Points wrong way for "more" or "expand"
|
|
153
|
+
3. **Checkmark mirrored** — Wrong; checkmark has no direction
|
|
154
|
+
4. **Play button mirrored** — Wrong; play is universal
|
|
155
|
+
5. **Share icon mirrored** — Usually wrong unless it's an arrow indicating direction
|
|
156
|
+
6. **Custom SVG not mirroring** — Add `transform: scaleX(-1)` for directional icons in RTL
|
|
157
|
+
7. **Icon in wrong position** — Use logical properties for placement; icon asset may still need mirror
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 5. QA Checklist
|
|
162
|
+
|
|
163
|
+
- [ ] Back/forward arrows mirror
|
|
164
|
+
- [ ] Chevrons mirror where they indicate direction
|
|
165
|
+
- [ ] Checkmark, play, settings do NOT mirror
|
|
166
|
+
- [ ] Logos and photos do NOT mirror
|
|
167
|
+
- [ ] Custom directional icons have RTL variant or transform
|
|
168
|
+
- [ ] Icon position uses start/end, not left/right
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Quick Reference Checklist
|
|
173
|
+
|
|
174
|
+
- [ ] Mirror: back, forward, chevrons, alignment icons, progress arrows
|
|
175
|
+
- [ ] Do NOT mirror: checkmark, play, pause, camera, settings, logos, photos
|
|
176
|
+
- [ ] Use platform auto-mirror APIs when available (Flutter, Compose AutoMirrored)
|
|
177
|
+
- [ ] Manual `scaleX(-1)` or equivalent for custom directional icons
|
|
178
|
+
- [ ] Test all icon types in RTL
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
*Researched: 2026-03-08 | Sources: Material Design bidirectionality, Android AutoMirrored, Qt RTL docs*
|