@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,748 @@
|
|
|
1
|
+
# Social and Community Patterns — Design Expertise Module
|
|
2
|
+
|
|
3
|
+
> A social and community design specialist architects the interaction systems that connect people: profiles, feeds, messaging, reactions, groups, and moderation. The scope spans real-time and asynchronous communication, identity and privacy, content creation and consumption, community governance, and the ethical responsibilities that accompany platforms designed to capture human attention. This module codifies patterns drawn from the best (and worst) practices across Discord, Slack, Reddit, Instagram, LinkedIn, and Mastodon.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Pattern Anatomy
|
|
8
|
+
|
|
9
|
+
### 1.1 Profiles
|
|
10
|
+
|
|
11
|
+
The profile is the atomic unit of social identity. Every interaction in a community traces back to a profile.
|
|
12
|
+
|
|
13
|
+
**Core components:**
|
|
14
|
+
- **Avatar / photo** — circular crop (40-64 px in lists, 96-128 px on profile page), with a fallback to initials or a generated identicon.
|
|
15
|
+
- **Display name** — the human-readable label; distinct from the unique handle/username.
|
|
16
|
+
- **Handle / username** — unique, immutable or change-limited identifier (e.g., `@username`). Used for mentions and deep links.
|
|
17
|
+
- **Bio / about** — 160-300 character limit is standard (Twitter: 160, Instagram: 150, LinkedIn: 2600). Keep the input a textarea, not a single-line field.
|
|
18
|
+
- **Status indicator** — online/offline/away/DND (Discord, Slack). Use color plus icon, never color alone (WCAG 1.4.1).
|
|
19
|
+
- **Metadata row** — follower/following counts, join date, location, links. NNG advises against over-emphasizing vanity metrics; show them but do not make them the visual focal point.
|
|
20
|
+
- **Activity feed / content tab** — posts, comments, or contributions authored by the user.
|
|
21
|
+
- **Action buttons** — Follow, Message, Block, Report. Primary action (Follow/Connect) uses a filled button; destructive actions (Block/Report) sit behind a "more" overflow menu.
|
|
22
|
+
|
|
23
|
+
**Profile privacy tiers:**
|
|
24
|
+
| Tier | Visibility | Use case |
|
|
25
|
+
|------|-----------|----------|
|
|
26
|
+
| Public | Anyone can view full profile | Open communities, creator platforms |
|
|
27
|
+
| Semi-private | Bio visible; content requires follow approval | Instagram private accounts |
|
|
28
|
+
| Private | Visible only to approved connections | LinkedIn connection-gated profiles |
|
|
29
|
+
| Anonymous | Pseudonymous handle, no real identity required | Reddit, Mastodon |
|
|
30
|
+
|
|
31
|
+
### 1.2 Feeds
|
|
32
|
+
|
|
33
|
+
The feed is the central content consumption surface. Its design directly shapes engagement, time-on-platform, and user well-being.
|
|
34
|
+
|
|
35
|
+
**Feed architectures:**
|
|
36
|
+
- **Reverse-chronological** — newest first. Predictable, transparent, user-controlled. Used by Mastodon, early Twitter, and as a toggle in Instagram. NNG recommends offering this as a default or prominent option because users report higher trust when they understand ordering.
|
|
37
|
+
- **Algorithmic / ranked** — scored by engagement signals, relationship strength, content type. Used by Instagram Explore, LinkedIn, TikTok For You. Higher engagement but lower user agency.
|
|
38
|
+
- **Hybrid** — algorithmic with a "Latest" toggle or "Following" tab (Instagram 2023+, X/Twitter).
|
|
39
|
+
|
|
40
|
+
**Feed item anatomy:**
|
|
41
|
+
```
|
|
42
|
+
┌─────────────────────────────────────────┐
|
|
43
|
+
│ [Avatar] Display Name · @handle · 2h │ ← Author row
|
|
44
|
+
│ │
|
|
45
|
+
│ Post body text or media content │ ← Content area
|
|
46
|
+
│ [Image / Video / Link Preview / Poll] │
|
|
47
|
+
│ │
|
|
48
|
+
│ 💬 12 🔁 4 ❤️ 89 📤 Share │ ← Action bar
|
|
49
|
+
│─────────────────────────────────────────│
|
|
50
|
+
│ Top comment preview (collapsed) │ ← Engagement hook
|
|
51
|
+
└─────────────────────────────────────────┘
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Feed performance rules:**
|
|
55
|
+
- Initial load: 10-20 items. Lazy-load subsequent batches on scroll or via a "Load more" button.
|
|
56
|
+
- Skeleton screens during load (not spinners) — NNG research shows skeleton screens reduce perceived wait time.
|
|
57
|
+
- Virtualized rendering for lists exceeding 100 items (react-window, RecyclerView, UICollectionView).
|
|
58
|
+
- New content indicator: "X new posts" pill at top; never auto-inject content and shift the user's scroll position.
|
|
59
|
+
|
|
60
|
+
### 1.3 Comments and Threads
|
|
61
|
+
|
|
62
|
+
**Threading models:**
|
|
63
|
+
- **Flat** — all comments at the same level, sorted by time or votes (early YouTube, simple forums).
|
|
64
|
+
- **Nested / threaded** — replies indent under parent comments (Reddit, Hacker News). Limit nesting depth to 4-6 levels on mobile to prevent horizontal overflow.
|
|
65
|
+
- **Linear with quotes** — flat list but replies quote the parent (Discord, Slack threads). Preserves chronological flow while maintaining context.
|
|
66
|
+
|
|
67
|
+
**Implementation guidance:**
|
|
68
|
+
- Show reply count and a "View replies" expander for collapsed threads.
|
|
69
|
+
- Provide a "Jump to parent" link when viewing deeply nested replies.
|
|
70
|
+
- Render a vertical connector line between parent and children for visual continuity.
|
|
71
|
+
- Limit initial comment display to 3-5 top-level comments; use "View all N comments" to expand.
|
|
72
|
+
- Support rich text (bold, italic, links, code blocks) but sanitize all HTML to prevent XSS.
|
|
73
|
+
|
|
74
|
+
### 1.4 Reactions and Likes
|
|
75
|
+
|
|
76
|
+
**Reaction spectrum:**
|
|
77
|
+
| Type | Example | Pros | Cons |
|
|
78
|
+
|------|---------|------|------|
|
|
79
|
+
| Binary like | Instagram heart, Twitter/X like | Simple, low friction | No nuance |
|
|
80
|
+
| Emoji reactions | Slack, Discord, Facebook | Expressive, lightweight | Can clutter |
|
|
81
|
+
| Upvote/downvote | Reddit, Stack Overflow | Community curation | Downvote discourages participation |
|
|
82
|
+
| Custom reactions | Discord server emojis | Community identity | Moderation complexity |
|
|
83
|
+
|
|
84
|
+
**Design rules:**
|
|
85
|
+
- The tap target for reaction buttons must be at least 44x44 CSS pixels (WCAG 2.5.5 AAA) or minimum 24x24 (WCAG 2.5.8 AA).
|
|
86
|
+
- Show aggregate count next to each reaction. Group identical reactions: "👍 12 ❤️ 5" rather than listing each individually.
|
|
87
|
+
- Animate the transition from un-reacted to reacted state (see Micro-Interactions, Section 5).
|
|
88
|
+
- Allow users to see who reacted (member list on hover/tap) unless the community is anonymous.
|
|
89
|
+
- Never auto-react or pre-select a reaction on behalf of the user.
|
|
90
|
+
|
|
91
|
+
### 1.5 Messaging and Chat
|
|
92
|
+
|
|
93
|
+
**Messaging paradigms:** DMs (1:1), Group DMs (2-10 participants, ad hoc), Channels/rooms (persistent, topic-based — Slack, Discord), and Threads within channels (branched side conversations).
|
|
94
|
+
|
|
95
|
+
**Chat UI essentials:**
|
|
96
|
+
- Message input anchored to bottom. Auto-grow textarea up to 4-6 lines, then scroll internally.
|
|
97
|
+
- Timestamp grouping with date separators; collapse timestamps for messages within 5 minutes.
|
|
98
|
+
- Sender grouping: consecutive same-sender messages collapse avatar/name.
|
|
99
|
+
- Unread divider line at first unread message.
|
|
100
|
+
- Message actions on hover (web) or long-press (mobile): Reply, React, Edit, Delete, Pin, Copy Link.
|
|
101
|
+
|
|
102
|
+
### 1.6 Groups and Channels
|
|
103
|
+
|
|
104
|
+
**Hierarchy:** Community/Server > Category (grouping label) > Channel (text, voice, forum, announcement, stage). Discord exemplifies this with categories grouping channels, voice channels for real-time audio, and forum channels for structured async discussion.
|
|
105
|
+
|
|
106
|
+
**Channel types:** Text (persistent, searchable), Voice (real-time audio/video/screenshare), Forum (threaded topics with titles — Discord Forum, Discourse), Announcement (admin-only posting, thread-based discussion), Stage (structured audio events with speakers/audience).
|
|
107
|
+
|
|
108
|
+
**Group governance:**
|
|
109
|
+
- Role-based access control (RBAC): Owner > Admin > Moderator > Member > Guest.
|
|
110
|
+
- Channel-level permission overrides for restricting posting to specific roles.
|
|
111
|
+
- Membership models: invite-only, open join, or approval-required.
|
|
112
|
+
|
|
113
|
+
### 1.7 Follow and Friend
|
|
114
|
+
|
|
115
|
+
**Relationship models:** Asymmetric follow (Twitter, Instagram, Mastodon — low friction, no reciprocation needed), Symmetric friend (Facebook, LinkedIn — mutual required, higher trust), Hybrid (LinkedIn follow vs. connect — asymmetric follow plus symmetric connection).
|
|
116
|
+
|
|
117
|
+
**UX rules:**
|
|
118
|
+
- Follow button provides immediate visual feedback (filled state, label change to "Following").
|
|
119
|
+
- Unfollow requires confirmation or toggle, not a destructive one-tap action.
|
|
120
|
+
- Offer "Mute" to hide content while preserving the follow relationship (less socially costly than unfollowing).
|
|
121
|
+
|
|
122
|
+
### 1.8 Mentions and Tagging
|
|
123
|
+
|
|
124
|
+
**Mention types:** User (`@username` — triggers notification, autocomplete after 1-2 chars), Channel (`#channel-name` — clickable link), Group/role (`@everyone`, `@moderators` — permission-gated to prevent spam), Hashtags (`#topic` — categorization/discovery), Photo tags (user profile linked to image region — requires consent settings).
|
|
125
|
+
|
|
126
|
+
**Autocomplete requirements:** Fuzzy matching on display name and username, avatar thumbnail for disambiguation, keyboard navigable (arrow keys + Enter), limited to 5-8 suggestions.
|
|
127
|
+
|
|
128
|
+
### 1.9 Content Creation and Posting
|
|
129
|
+
|
|
130
|
+
**Content composer anatomy:**
|
|
131
|
+
```
|
|
132
|
+
┌─────────────────────────────────────────┐
|
|
133
|
+
│ [Avatar] What's on your mind? │ ← Prompt / placeholder
|
|
134
|
+
│ │
|
|
135
|
+
│ [Rich text area with formatting toolbar]│
|
|
136
|
+
│ │
|
|
137
|
+
│ [Attached media preview strip] │
|
|
138
|
+
│ │
|
|
139
|
+
│ ┌────┬────┬────┬────┬─────────┬──────┐ │
|
|
140
|
+
│ │ 📷 │ 🎥 │ 📎 │ 📊 │ Audience│ Post │ │ ← Attachment + audience + submit
|
|
141
|
+
│ └────┴────┴────┴────┴─────────┴──────┘ │
|
|
142
|
+
└─────────────────────────────────────────┘
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Content types:** Text (rich formatting), Images (single or carousel), Video (upload/embed with auto-captions), Link previews (Open Graph), Polls (2-4 options, configurable duration), Stories (24-hour ephemeral, full-screen vertical).
|
|
146
|
+
|
|
147
|
+
**Creation flow best practices:**
|
|
148
|
+
- Auto-save drafts every 30 seconds or on blur.
|
|
149
|
+
- Character count visible at 80% of limit. Alt text prompt for attached images (W3C ATAG requirement).
|
|
150
|
+
- Audience selector defaults to user's last-used setting.
|
|
151
|
+
- Preview mode before publishing. Edit window: 5-15 min or indefinitely with visible history (Mastodon, Slack).
|
|
152
|
+
|
|
153
|
+
### 1.10 Moderation
|
|
154
|
+
|
|
155
|
+
**Moderation layers (defense in depth):**
|
|
156
|
+
1. **Automated pre-moderation** — content scanned before publishing (spam filters, NSFW detection, keyword blocklists).
|
|
157
|
+
2. **Community reporting** — users flag content via a structured report flow (see User Flow Mapping, Section 4).
|
|
158
|
+
3. **Human moderator review** — queued reports triaged by severity; moderators see context (post, reporter, history).
|
|
159
|
+
4. **Appeals process** — users can contest moderation decisions through a clear, discoverable flow.
|
|
160
|
+
|
|
161
|
+
**Moderation actions (tiered consequences):**
|
|
162
|
+
| Severity | Action | Example trigger |
|
|
163
|
+
|----------|--------|----------------|
|
|
164
|
+
| Low | Warning / content label | Borderline language |
|
|
165
|
+
| Medium | Content removal + notice | Policy violation |
|
|
166
|
+
| High | Temporary mute/ban (1-30 days) | Repeated violations |
|
|
167
|
+
| Critical | Permanent ban + content purge | Hate speech, threats, illegal content |
|
|
168
|
+
|
|
169
|
+
**Moderation UX principles:** Guidelines in plain language shown during onboarding (Arena, 2025). Report flows under 4 taps. Reporter feedback on outcomes. Moderator dashboards with full context (flagged content, conversation, user history). Transparency reports for community trust.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 2. Best-in-Class Examples
|
|
174
|
+
|
|
175
|
+
### 2.1 Discord
|
|
176
|
+
|
|
177
|
+
**Strengths:** Server/channel hierarchy with fine-grained RBAC per channel. Colored roles as both access control and visual identity. Always-on voice channels lower the barrier to real-time conversation. Forum channels bridge chat and threaded discussion. Custom emoji per server foster community identity. Server-level onboarding with rules acceptance, role selection, and channel opt-in.
|
|
178
|
+
|
|
179
|
+
**Weaknesses:** Limited server discoverability (no federated search). Threading in text channels is bolted-on vs. first-class. Accessibility gaps in voice controls and screen reader navigation.
|
|
180
|
+
|
|
181
|
+
### 2.2 Slack
|
|
182
|
+
|
|
183
|
+
**Strengths:** First-class threaded conversations keep main channel clean. Best-in-class search with filters (`from:`, `in:`, `has:`, `before:`). Rich integration/bot ecosystem with interactive message blocks. Huddles bridge sync and async communication. Channel topics and bookmarks for persistent orientation.
|
|
184
|
+
|
|
185
|
+
**Weaknesses:** Information architecture degrades at scale (hundreds of channels cause discovery paralysis). Free tier limits message history. No built-in community moderation tools (designed for workplaces).
|
|
186
|
+
|
|
187
|
+
### 2.3 Reddit
|
|
188
|
+
|
|
189
|
+
**Strengths:** Definitive nested comment threading with expand/collapse. Upvote/downvote for community-driven content curation. Subreddit autonomy (own rules, flair, theme). Post and user flair system for categorization and identity. Multiple interface paradigms (Old/New Reddit) prove value of separating content architecture from presentation.
|
|
190
|
+
|
|
191
|
+
**Weaknesses:** Downvote routinely misused for disagreement vs. quality. Inconsistent moderator tooling; volunteer burden. Anonymous culture enables toxicity in poorly moderated subreddits.
|
|
192
|
+
|
|
193
|
+
### 2.4 Instagram
|
|
194
|
+
|
|
195
|
+
**Strengths:** Visual-first feed with full-bleed images/video. Stories format (ephemeral, interactive stickers) pioneered low-stakes sharing. Carousel posts for multi-image narratives. Close Friends for audience segmentation. Seamless shopping integration via product tags.
|
|
196
|
+
|
|
197
|
+
**Weaknesses:** Algorithmic feed opacity frustrates creators. Optional like-count hiding is inconsistently implemented. Flat-only comments limit discussion depth. Heavy reliance on dark patterns for engagement (see Section 6).
|
|
198
|
+
|
|
199
|
+
### 2.5 LinkedIn
|
|
200
|
+
|
|
201
|
+
**Strengths:** Profiles as structured resumes (experience, education, skills, endorsements). Network distance transparency ("2nd degree"). Unified feed, job listings, and messaging. Written recommendations as social proof.
|
|
202
|
+
|
|
203
|
+
**Weaknesses:** Feed algorithm rewards engagement bait over substance. InMail spam from recruiters. Complex, scattered privacy controls. Extreme notification overload from aggressive defaults.
|
|
204
|
+
|
|
205
|
+
### 2.6 Mastodon
|
|
206
|
+
|
|
207
|
+
**Strengths:** Federated/decentralized via ActivityPub — users choose value-aligned instances. Antiviral design: no quote-tweets, no algorithmic amplification, no engagement metrics in feeds (UX Collective). First-class content warnings (CW) with click-to-reveal. Edit with public history for accountability. Chronological Home/Local/Federated timelines. Per-post privacy (Public, Unlisted, Followers-only, Direct).
|
|
208
|
+
|
|
209
|
+
**Weaknesses:** High-friction onboarding (instance selection confuses newcomers). Cross-instance discovery limited by design. UI polish lags behind commercial platforms.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 3. User Flow Mapping
|
|
214
|
+
|
|
215
|
+
### 3.1 Sign Up to First Value
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
Landing Page → Sign Up (Email/OAuth) → Email Verification (code/magic link)
|
|
219
|
+
→ Profile Setup (avatar, display name, bio, interests)
|
|
220
|
+
→ Discovery (suggested people, communities, trending content)
|
|
221
|
+
→ First Follow/Join (3-5 accounts, 1-2 communities)
|
|
222
|
+
→ Populated Feed → First Engagement (like → comment → create post)
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Key metrics:** Time to first value (TTFV) under 3 minutes. Activation rate: % performing one engagement within 24h. NNG recommends progressive disclosure: minimal upfront info, contextual profile completion prompts.
|
|
226
|
+
|
|
227
|
+
### 3.2 Content Creation and Editing
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
Compose Trigger (FAB mobile / prompt web / Cmd+N desktop)
|
|
231
|
+
→ Composer (text + formatting, media buttons, audience selector, auto-save)
|
|
232
|
+
→ Authoring (char count at 80%, alt text on images, @mention/#hashtag autocomplete, link preview)
|
|
233
|
+
→ Pre-publish Review (preview, confirm audience, optional schedule)
|
|
234
|
+
→ Publish (optimistic UI: appears immediately)
|
|
235
|
+
→ Post-publish (edit within window, delete with confirmation, view metrics)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### 3.3 Moderation Flow — Reporting
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
Kebab menu (⋯) → "Report" → Choose reason (Spam, Harassment, Hate speech,
|
|
242
|
+
Misinformation, Nudity, Violence, IP violation, Other)
|
|
243
|
+
→ Optional context (free-text) → Submit → Confirmation message
|
|
244
|
+
→ Offer self-help ("Block/Mute this user?")
|
|
245
|
+
→ [Internal] Moderation queue (auto-categorized, AI pre-scored, human review)
|
|
246
|
+
→ Action taken → Reporter notified
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 3.4 Blocking and Muting
|
|
250
|
+
|
|
251
|
+
**Block flow:** Profile overflow menu > "Block @username" > Confirmation dialog explaining consequences ("They won't see your profile or message you. You won't see their content. They won't be notified.") > Blocked state: content mutually hidden, DM history hidden (not deleted), managed in Settings > Privacy > Blocked accounts.
|
|
252
|
+
|
|
253
|
+
**Mute flow:** Profile overflow menu > "Mute @username" > Mute options (posts, stories, notifications) with duration selector (24h / 7 days / indefinite) > Muted state: follow relationship preserved, content silently hidden, user NOT notified.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 4. Micro-Interactions
|
|
258
|
+
|
|
259
|
+
### 4.1 Like / Reaction Animation
|
|
260
|
+
|
|
261
|
+
The like animation is the most-replicated micro-interaction in social design. Its purpose is to provide satisfying feedback that reinforces engagement.
|
|
262
|
+
|
|
263
|
+
**Implementation pattern:**
|
|
264
|
+
1. **Trigger** — tap/click the heart/like icon.
|
|
265
|
+
2. **State change** — icon fills with color (gray outline to red filled heart). Transition: 200-300ms ease-out scale transform (1.0 -> 1.3 -> 1.0).
|
|
266
|
+
3. **Particle effect** (optional) — small burst of particles or confetti radiating from the icon. Keep duration under 400ms.
|
|
267
|
+
4. **Count increment** — number beside the icon increments. Use a vertical slide animation for the digit change.
|
|
268
|
+
5. **Haptic feedback** (mobile) — light haptic tap on iOS (UIImpactFeedbackGenerator.light), short vibration on Android.
|
|
269
|
+
|
|
270
|
+
**Double-tap to like (Instagram pattern):**
|
|
271
|
+
- Large heart icon animates at the center of the image (scale 0 -> 1.2 -> 1.0, opacity 0 -> 1 -> 0 over 800ms).
|
|
272
|
+
- Must not be the only way to like; the icon button must also work (accessibility requirement).
|
|
273
|
+
|
|
274
|
+
### 4.2 Typing Indicator
|
|
275
|
+
|
|
276
|
+
**Design:**
|
|
277
|
+
- Three animated dots ("...") in a speech bubble, displayed in the chat area at the position where the next message will appear.
|
|
278
|
+
- Animation: dots pulse or bounce sequentially (150ms stagger between each dot, 600ms total cycle).
|
|
279
|
+
- Show the typing user's avatar or name alongside the indicator in group chats.
|
|
280
|
+
- Debounce: start showing after 500ms of continuous typing; hide after 3-5 seconds of inactivity.
|
|
281
|
+
|
|
282
|
+
**Privacy consideration:** Some users find typing indicators anxiety-inducing. Offer a toggle in settings to disable sending (not receiving) typing status. Mastodon does not implement typing indicators by design.
|
|
283
|
+
|
|
284
|
+
### 4.3 Read Receipts
|
|
285
|
+
|
|
286
|
+
**Implementation patterns:**
|
|
287
|
+
- **Check marks** (WhatsApp model): single check = sent, double check = delivered, blue double check = read.
|
|
288
|
+
- **Avatar stack** (Discord model): small avatars of users who have read the message appear below the message.
|
|
289
|
+
- **"Seen by" label** (Facebook Messenger): "Seen at 2:34 PM" below the last message.
|
|
290
|
+
|
|
291
|
+
**Critical UX rules:**
|
|
292
|
+
- Always provide a setting to disable read receipts (sending them). This is a privacy expectation.
|
|
293
|
+
- In group chats, show aggregate read status ("Seen by 4 of 6") rather than individual timestamps.
|
|
294
|
+
- Never use read receipts to create social pressure (e.g., highlighting "unread" messages to recipients).
|
|
295
|
+
|
|
296
|
+
### 4.4 Reaction Picker
|
|
297
|
+
|
|
298
|
+
**Interaction flow:**
|
|
299
|
+
1. **Trigger** — long-press (mobile) or hover + click the smiley icon (web) on a message.
|
|
300
|
+
2. **Picker appearance** — floating panel appears above or below the message with a row of 6-8 frequently used reactions.
|
|
301
|
+
3. **Expanded picker** — a "+" icon opens the full emoji picker with search and categories.
|
|
302
|
+
4. **Selection** — tap an emoji; the picker dismisses and the reaction appears beneath the message with a scale-in animation (0 -> 1.0 over 150ms).
|
|
303
|
+
5. **De-selection** — tapping the same reaction again removes it (toggle behavior).
|
|
304
|
+
|
|
305
|
+
**Design details:**
|
|
306
|
+
- The quick-reaction row should be customizable by the user (let them pick their 6 most-used emoji).
|
|
307
|
+
- Show a subtle bounce or pop animation on the selected emoji before it moves to the message.
|
|
308
|
+
- On web, support keyboard navigation within the picker (arrow keys, Enter to select, Escape to dismiss).
|
|
309
|
+
|
|
310
|
+
### 4.5 Comment Threading Expansion
|
|
311
|
+
|
|
312
|
+
**Interaction flow:**
|
|
313
|
+
1. **Collapsed state** — "View 12 replies" link below a parent comment with a vertical thread line.
|
|
314
|
+
2. **Tap to expand** — replies slide in with a staggered fade-in animation (50ms delay between each reply, max 5 visible initially).
|
|
315
|
+
3. **Load more** — if more than 5 replies exist, show "Load N more replies" at the bottom of the thread.
|
|
316
|
+
4. **Collapse** — tapping the thread line or a "Collapse" button slides replies out and returns to the collapsed state.
|
|
317
|
+
5. **Scroll anchor** — when expanding, the parent comment must remain visible; do not scroll the parent off-screen.
|
|
318
|
+
|
|
319
|
+
### 4.6 Message Send Animation
|
|
320
|
+
|
|
321
|
+
**Sequence:**
|
|
322
|
+
1. **Input submission** — message text clears from the input field.
|
|
323
|
+
2. **Optimistic render** — message bubble appears in the chat list immediately, styled with reduced opacity or a "sending" indicator.
|
|
324
|
+
3. **Confirmation** — when server confirms delivery, the bubble transitions to full opacity and the "sending" indicator is replaced by a timestamp or delivery check.
|
|
325
|
+
4. **Failure state** — if delivery fails, show a red exclamation mark with a "Retry" tap target. Never silently swallow send failures.
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## 5. Anti-Patterns
|
|
330
|
+
|
|
331
|
+
### 5.1 Vanity Metrics Obsession
|
|
332
|
+
|
|
333
|
+
**Problem:** Platforms that make follower counts, like counts, and view counts the most prominent profile elements encourage performative behavior over genuine connection. Users optimize for metrics rather than meaningful engagement.
|
|
334
|
+
|
|
335
|
+
**Harm:** Anxiety, self-worth tied to numbers, content homogenization toward what "performs well."
|
|
336
|
+
|
|
337
|
+
**Solution:** De-emphasize counts (Instagram's optional like hiding), show them only to the content creator, or replace with qualitative signals ("Your post sparked a conversation" instead of "47 likes"). NNG advises designing for meaningful engagement metrics (comments, saves, shares) rather than passive ones (views, likes).
|
|
338
|
+
|
|
339
|
+
### 5.2 Infinite Scroll Without Boundaries
|
|
340
|
+
|
|
341
|
+
**Problem:** Feeds that load content endlessly with no natural stopping point exploit the human tendency to continue an activity that has no clear endpoint (Zeigarnik effect).
|
|
342
|
+
|
|
343
|
+
**Harm:** Users report losing track of time, spending more time than intended, and feeling worse after extended scrolling sessions.
|
|
344
|
+
|
|
345
|
+
**Solution:** Insert natural break points ("You're all caught up" — Instagram), daily usage dashboards, configurable time reminders ("You've been scrolling for 30 minutes"), or pagination with explicit "Load more" actions.
|
|
346
|
+
|
|
347
|
+
### 5.3 Notification Overload
|
|
348
|
+
|
|
349
|
+
**Problem:** Default notification settings that enable all notification types across email, push, and in-app simultaneously. Every like, follow, comment, and algorithmic suggestion triggers a notification.
|
|
350
|
+
|
|
351
|
+
**Harm:** Notification fatigue leads to users either disabling all notifications (losing important ones) or being constantly interrupted.
|
|
352
|
+
|
|
353
|
+
**Solution:** Conservative defaults (only DMs and mentions as push notifications). Batch non-urgent notifications into a daily digest. Provide granular notification settings grouped by category (interactions, follows, system, marketing). LinkedIn is a notable offender; Mastodon's minimal-by-default approach is exemplary.
|
|
354
|
+
|
|
355
|
+
### 5.4 Dark Patterns for Engagement
|
|
356
|
+
|
|
357
|
+
**Problem:** Deliberate design manipulation — pull-to-refresh mimicking slot machines, red badges creating clearing compulsion, "Someone viewed your profile" lure-back notifications, autoplay video inflating view counts, streak mechanics (Snapchat) punishing disengagement.
|
|
358
|
+
|
|
359
|
+
**Regulatory context:** EU Digital Services Act (2024) and EDPB explicitly name dark patterns as violations. California CPRA similarly restricts deceptive design.
|
|
360
|
+
|
|
361
|
+
### 5.5 Unclear Privacy Controls
|
|
362
|
+
|
|
363
|
+
**Problem:** Settings buried in deep hierarchies, using jargon, with defaults maximizing data exposure. Most users never change defaults.
|
|
364
|
+
|
|
365
|
+
**Solution:** Privacy settings one tap from profile. Plain-language descriptions. Quarterly privacy audit prompts. Default to most restrictive, let users opt into broader sharing.
|
|
366
|
+
|
|
367
|
+
### 5.6 No Content Moderation Infrastructure
|
|
368
|
+
|
|
369
|
+
**Problem:** Launching without moderation tooling. Toxic content drives away positive contributors ("evaporative cooling" effect) — a small number of bad actors destroy community culture.
|
|
370
|
+
|
|
371
|
+
**Solution:** Build moderation tooling before launch: automated pre-screening, moderator dashboards, clear guidelines, structured report/appeal flows (Section 3.3).
|
|
372
|
+
|
|
373
|
+
### 5.7 Algorithmic Filter Bubble
|
|
374
|
+
|
|
375
|
+
**Problem:** Engagement-optimized algorithms create echo chambers. Users are unaware their feed is curated, mistaking it for a representative view. Leads to polarization and reduced exposure to diverse perspectives.
|
|
376
|
+
|
|
377
|
+
**Solution:** Algorithmic transparency ("Why am I seeing this?"), chronological feed options, intentionally surface diverse perspectives, allow users to control and reset algorithmic preferences.
|
|
378
|
+
|
|
379
|
+
### 5.8 Forced Public Defaults
|
|
380
|
+
|
|
381
|
+
**Problem:** New posts, profiles, or activity default to "Public" visibility when a more restrictive default would better serve user interests.
|
|
382
|
+
|
|
383
|
+
**Harm:** Users accidentally share content with unintended audiences. Especially harmful for younger users or those in vulnerable situations.
|
|
384
|
+
|
|
385
|
+
**Solution:** Default to the most recently used privacy setting, or to "Followers Only" for new users. Show a clear privacy indicator on the compose screen. Require explicit confirmation when posting publicly for the first time.
|
|
386
|
+
|
|
387
|
+
### 5.9 Engagement Bait Amplification
|
|
388
|
+
|
|
389
|
+
**Problem:** Algorithms that reward posts with high engagement amplify controversial, outrageous, or emotionally manipulative content because it generates more reactions and comments.
|
|
390
|
+
|
|
391
|
+
**Harm:** Degrades content quality, rewards bad-faith participation, and creates a race to the bottom.
|
|
392
|
+
|
|
393
|
+
**Solution:** Weight engagement quality (comments, saves, shares) over quantity (likes, views). Penalize content flagged as "rage bait" or clickbait. Reddit's upvote/downvote plus time-decay algorithm is a reasonable (though imperfect) model.
|
|
394
|
+
|
|
395
|
+
### 5.10 Irreversible Actions Without Confirmation
|
|
396
|
+
|
|
397
|
+
**Problem:** Destructive actions (delete post, leave group, block user, send message) that execute immediately without confirmation or undo capability.
|
|
398
|
+
|
|
399
|
+
**Harm:** Accidental deletions, premature sends, unintended blocks.
|
|
400
|
+
|
|
401
|
+
**Solution:** Implement undo windows for soft-destructive actions (Gmail's "Undo Send" pattern — 5-10 second window). For hard-destructive actions (delete account, purge content), require re-authentication and a cooling-off period.
|
|
402
|
+
|
|
403
|
+
### 5.11 Hostile Onboarding
|
|
404
|
+
|
|
405
|
+
**Problem:** Excessive required information, contacts access, or engagement commitments before showing value. Users who grant contacts access regret it when the platform spams contacts.
|
|
406
|
+
|
|
407
|
+
**Solution:** Minimal required fields (email/OAuth + display name). Optional contacts import with clear data usage explanation. Content preview before requiring account creation (Reddit's lurker-friendly model).
|
|
408
|
+
|
|
409
|
+
### 5.12 Zombie Notifications
|
|
410
|
+
|
|
411
|
+
**Problem:** Notifications for non-events to re-engage lapsed users ("You haven't posted in a while!", "A post you might like"). Users perceive these as spam, eroding trust in all platform notifications.
|
|
412
|
+
|
|
413
|
+
**Solution:** Only notify about events the user expressed interest in. Never fabricate urgency. Respect frequency caps. One re-engagement email after 30 days is acceptable; daily push is not.
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## 6. Accessibility
|
|
418
|
+
|
|
419
|
+
### 6.1 Alt Text for User-Generated Content
|
|
420
|
+
|
|
421
|
+
W3C ATAG requires authoring tools (including social media platforms) to assist users in providing accessible content.
|
|
422
|
+
|
|
423
|
+
**Requirements:**
|
|
424
|
+
- Inline alt text prompt when uploading images (not buried in settings).
|
|
425
|
+
- AI-generated alt text suggestions as starting point, user-editable (Instagram, X do this).
|
|
426
|
+
- "ALT" badge indicator on images with descriptions.
|
|
427
|
+
- Option to mark decorative images (empty alt attribute).
|
|
428
|
+
- Alt text stored as structured metadata, updatable independently of the image.
|
|
429
|
+
|
|
430
|
+
**WCAG:** SC 1.1.1 (Non-text Content, Level A).
|
|
431
|
+
|
|
432
|
+
### 6.2 Keyboard Navigation in Feeds
|
|
433
|
+
|
|
434
|
+
**Requirements:**
|
|
435
|
+
- Feed items reachable via Tab/arrow keys (`role="feed"` + `role="article"` — WAI-ARIA 1.2).
|
|
436
|
+
- Action buttons (like, comment, share) focusable and operable with Enter/Space.
|
|
437
|
+
- Page Down/Up triggers lazy loading. Skip link bypasses navigation/sidebar.
|
|
438
|
+
- New content loading must not move focus or disrupt scroll position.
|
|
439
|
+
|
|
440
|
+
**WCAG:** SC 2.1.1 (Keyboard, A), SC 2.4.1 (Bypass Blocks, A), SC 2.4.3 (Focus Order, A).
|
|
441
|
+
|
|
442
|
+
### 6.3 Screen Reader Support for Reactions
|
|
443
|
+
|
|
444
|
+
**Requirements:**
|
|
445
|
+
- Accessible labels on reaction buttons: `aria-label="Like, 47 likes"`.
|
|
446
|
+
- State changes announced via `aria-live="polite"` or `role="status"`.
|
|
447
|
+
- Reaction summaries as text: "Reactions: thumbs up 12, heart 5" — not raw emoji.
|
|
448
|
+
- Custom emoji (Discord, Slack) must include text name as accessible label.
|
|
449
|
+
- Reaction picker navigable by screen reader with named emoji, announced categories, and search.
|
|
450
|
+
|
|
451
|
+
**WCAG:** SC 4.1.2 (Name, Role, Value, A), SC 1.1.1 (Non-text Content, A).
|
|
452
|
+
|
|
453
|
+
### 6.4 Accessible Chat and Messaging
|
|
454
|
+
|
|
455
|
+
**Requirements:**
|
|
456
|
+
- New messages announced via `aria-live="polite"` (not "assertive" — avoids interrupting user).
|
|
457
|
+
- Message input labeled: `aria-label="Message #channel-name"`.
|
|
458
|
+
- Timestamps, sender, and content programmatically associated ("Jane Doe, 2:34 PM: Hello everyone").
|
|
459
|
+
- Typing indicators conveyed via `aria-live="polite"`: "Jane is typing."
|
|
460
|
+
- Custom emoji need `aria-label` (native Unicode handled by most screen readers).
|
|
461
|
+
- File attachments and media require accessible descriptions. Voice/video calls need captions.
|
|
462
|
+
|
|
463
|
+
**WCAG:** SC 1.3.1 (Info and Relationships, A), SC 4.1.3 (Status Messages, AA).
|
|
464
|
+
|
|
465
|
+
### 6.5 Accessible Forms in Social Features
|
|
466
|
+
|
|
467
|
+
- Visible labels on all inputs (not placeholder-only — SC 3.3.2). Error messages via `aria-describedby`.
|
|
468
|
+
- Multi-step flows indicate progress ("Step 2 of 4") visually and programmatically.
|
|
469
|
+
- Autocomplete dropdowns use `role="listbox"` + `role="option"` with `aria-activedescendant`.
|
|
470
|
+
- Touch targets minimum 24x24 px (SC 2.5.8, AA).
|
|
471
|
+
|
|
472
|
+
### 6.6 Cognitive Accessibility
|
|
473
|
+
|
|
474
|
+
- Clear, simple language for all UI text. Consistent navigation/layout across screens (SC 3.2.3, 3.2.4).
|
|
475
|
+
- Warn 60s before session timeout, allow extension (SC 2.2.1). Text resizable to 200% (SC 1.4.4).
|
|
476
|
+
- No autoplay media without immediately accessible pause/stop control.
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## 7. Cross-Platform Adaptation
|
|
481
|
+
|
|
482
|
+
### 7.1 Mobile (iOS and Android)
|
|
483
|
+
|
|
484
|
+
**Navigation:** Bottom tab bar (max 5: Feed, Search, Create, Notifications, Profile). Swipe gestures for tab/content navigation. Pull-to-refresh for feeds.
|
|
485
|
+
|
|
486
|
+
**Content creation:** FAB for post creation (Android Material Design). Camera integration for Stories. Full-screen composer with auto-grow text area.
|
|
487
|
+
|
|
488
|
+
**Chat:** Message input anchored above keyboard. Swipe-to-reply on messages. Haptic feedback on send, reactions, long-press.
|
|
489
|
+
|
|
490
|
+
**Platform-specific:** iOS — SF Symbols, Dynamic Type, VoiceOver. Android — Material Design 3, TalkBack, edge-to-edge layout with system bar insets.
|
|
491
|
+
|
|
492
|
+
### 7.2 Web (Desktop and Responsive)
|
|
493
|
+
|
|
494
|
+
**Layout:** Three-column (left nav, center feed/chat, right details). Keyboard shortcuts via "?" modal (`J`/`K` navigate, `L` like, `R` reply, `N` new post).
|
|
495
|
+
|
|
496
|
+
**Responsive breakpoints:**
|
|
497
|
+
| Breakpoint | Layout | Sidebar behavior |
|
|
498
|
+
|-----------|--------|-----------------|
|
|
499
|
+
| > 1280px | 3-column | Both sidebars visible |
|
|
500
|
+
| 1024-1280px | 2-column | Right sidebar collapsed |
|
|
501
|
+
| 768-1024px | 2-column | Left sidebar collapsed to icons |
|
|
502
|
+
| < 768px | 1-column | Bottom tab navigation |
|
|
503
|
+
|
|
504
|
+
**Web-specific:** Drag-and-drop file upload. Multi-window/tab support (pop-out conversations). Browser Notification API for push. URL-driven state: every profile, post, channel, thread has a shareable permalink.
|
|
505
|
+
|
|
506
|
+
### 7.3 Desktop Apps (Electron / Native)
|
|
507
|
+
|
|
508
|
+
**Advantages over web:** System tray/menu bar for background notifications. Global keyboard shortcuts (Cmd+Shift+M to mute in Discord). Deeper OS integration (Finder/Explorer drag-and-drop, screen sharing, audio routing). Offline support with sync-on-reconnect.
|
|
509
|
+
|
|
510
|
+
### 7.4 Cross-Platform Consistency Principles
|
|
511
|
+
|
|
512
|
+
- **Core interactions identical** across platforms (like, comment, follow, message, create).
|
|
513
|
+
- **Adapt to platform conventions** (bottom tabs mobile, sidebar desktop; swipe mobile, hover desktop).
|
|
514
|
+
- **Synchronized state** in real time — dismissed notifications, read status, drafts, settings.
|
|
515
|
+
- **Shared design tokens** — colors, typography, spacing, radii defined in cross-platform design system.
|
|
516
|
+
- **Feature parity as goal, not rule** — camera stories on mobile, keyboard shortcuts on desktop are acceptable divergences.
|
|
517
|
+
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
## 8. Decision Tree
|
|
521
|
+
|
|
522
|
+
### 8.1 Real-Time vs. Asynchronous Communication
|
|
523
|
+
|
|
524
|
+
```
|
|
525
|
+
What is the primary use case?
|
|
526
|
+
│
|
|
527
|
+
├── Urgent coordination, live events, casual social hangout
|
|
528
|
+
│ └── REAL-TIME (chat, voice, video)
|
|
529
|
+
│ ├── Channels with live message flow (Discord, Slack)
|
|
530
|
+
│ ├── Voice channels / huddles
|
|
531
|
+
│ ├── Typing indicators and presence (online/offline)
|
|
532
|
+
│ └── Expectation: responses within minutes
|
|
533
|
+
│
|
|
534
|
+
├── Thoughtful discussion, knowledge sharing, documentation
|
|
535
|
+
│ └── ASYNCHRONOUS (forums, threads, posts)
|
|
536
|
+
│ ├── Threaded discussions with nested replies (Reddit, Discourse)
|
|
537
|
+
│ ├── Long-form posts with rich formatting
|
|
538
|
+
│ ├── No typing indicators or presence
|
|
539
|
+
│ └── Expectation: responses within hours or days
|
|
540
|
+
│
|
|
541
|
+
└── Both needed
|
|
542
|
+
└── HYBRID
|
|
543
|
+
├── Chat channels + thread branching (Slack model)
|
|
544
|
+
├── Feed posts + real-time comments (Instagram Live)
|
|
545
|
+
├── Forum channels within a chat server (Discord Forum)
|
|
546
|
+
└── Key: clearly separate sync and async spaces in the UI
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
**Design implications:**
|
|
550
|
+
- Real-time: invest in presence indicators, typing state, read receipts, push notifications, low-latency infrastructure (WebSockets).
|
|
551
|
+
- Async: invest in rich text editing, search, threading depth, email notification digests, content permanence.
|
|
552
|
+
|
|
553
|
+
### 8.2 Anonymous vs. Identified
|
|
554
|
+
|
|
555
|
+
```
|
|
556
|
+
What identity model serves your community?
|
|
557
|
+
│
|
|
558
|
+
├── Full real identity (legal name, photo, credentials)
|
|
559
|
+
│ └── IDENTIFIED
|
|
560
|
+
│ ├── Use case: professional networking, healthcare, finance
|
|
561
|
+
│ ├── Benefits: accountability, trust, professional credibility
|
|
562
|
+
│ ├── Risks: chilling effect on honest feedback, privacy concerns
|
|
563
|
+
│ ├── Examples: LinkedIn, workplace Slack
|
|
564
|
+
│ └── Design: verification badges, real-name policy, profile validation
|
|
565
|
+
│
|
|
566
|
+
├── Pseudonymous (consistent handle, no real identity required)
|
|
567
|
+
│ └── PSEUDONYMOUS
|
|
568
|
+
│ ├── Use case: most online communities, hobbyist forums, social media
|
|
569
|
+
│ ├── Benefits: creative freedom, reputation building without personal exposure
|
|
570
|
+
│ ├── Risks: sockpuppets, ban evasion, reduced accountability
|
|
571
|
+
│ ├── Examples: Reddit, Discord, Mastodon, most forums
|
|
572
|
+
│ └── Design: persistent identity, reputation systems, karma/trust levels
|
|
573
|
+
│
|
|
574
|
+
├── Fully anonymous (no persistent identity)
|
|
575
|
+
│ └── ANONYMOUS
|
|
576
|
+
│ ├── Use case: whistleblowing, sensitive support groups, confessions
|
|
577
|
+
│ ├── Benefits: maximum freedom of expression, safety for vulnerable users
|
|
578
|
+
│ ├── Risks: trolling, no accountability, difficult to moderate
|
|
579
|
+
│ ├── Examples: 4chan, anonymous feedback tools, some support forums
|
|
580
|
+
│ └── Design: strong moderation, rate limiting, IP-based restrictions
|
|
581
|
+
│
|
|
582
|
+
└── Layered (verified to platform, pseudonymous to community)
|
|
583
|
+
└── HYBRID IDENTITY
|
|
584
|
+
├── Platform knows real identity; community sees pseudonym
|
|
585
|
+
├── Benefits: accountability (can be banned) + privacy (community doesn't know who you are)
|
|
586
|
+
├── Examples: some gaming platforms, verified-but-pseudonymous services
|
|
587
|
+
└── Design: verification at sign-up, display name/handle system, reveal-on-mod-request
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
### 8.3 Open vs. Closed Community
|
|
591
|
+
|
|
592
|
+
```
|
|
593
|
+
Who should be able to join and participate?
|
|
594
|
+
│
|
|
595
|
+
├── Anyone can join, anyone can post
|
|
596
|
+
│ └── OPEN
|
|
597
|
+
│ ├── Use case: public forums, social media, open-source communities
|
|
598
|
+
│ ├── Benefits: maximum growth, diverse perspectives, low friction
|
|
599
|
+
│ ├── Risks: spam, trolling, low signal-to-noise ratio
|
|
600
|
+
│ ├── Moderation need: HIGH (automated + human)
|
|
601
|
+
│ ├── Examples: Reddit (public subreddits), Twitter/X, Mastodon (public instances)
|
|
602
|
+
│ └── Design: robust moderation tools, spam filters, community voting
|
|
603
|
+
│
|
|
604
|
+
├── Anyone can view, membership required to post
|
|
605
|
+
│ └── SEMI-OPEN
|
|
606
|
+
│ ├── Use case: knowledge communities, Q&A sites, news comment sections
|
|
607
|
+
│ ├── Benefits: lurkers can learn; contributors are accountable
|
|
608
|
+
│ ├── Risks: barrier may discourage participation
|
|
609
|
+
│ ├── Moderation need: MEDIUM
|
|
610
|
+
│ ├── Examples: Stack Overflow, GitHub Discussions
|
|
611
|
+
│ └── Design: clear "Join to participate" CTA, guest-viewable content
|
|
612
|
+
│
|
|
613
|
+
├── Approval required to join; content visible only to members
|
|
614
|
+
│ └── CLOSED
|
|
615
|
+
│ ├── Use case: private groups, paid communities, internal teams
|
|
616
|
+
│ ├── Benefits: high trust, curated membership, safe spaces
|
|
617
|
+
│ ├── Risks: echo chamber, slower growth, exclusionary dynamics
|
|
618
|
+
│ ├── Moderation need: LOW to MEDIUM
|
|
619
|
+
│ ├── Examples: Private Facebook Groups, paid Discord servers, Slack workspaces
|
|
620
|
+
│ └── Design: application/invite flow, member directory, onboarding rules acceptance
|
|
621
|
+
│
|
|
622
|
+
└── Invitation only, no public visibility
|
|
623
|
+
└── PRIVATE
|
|
624
|
+
├── Use case: executive teams, sensitive working groups, family groups
|
|
625
|
+
├── Benefits: maximum privacy and trust
|
|
626
|
+
├── Risks: very limited growth, potential for insular thinking
|
|
627
|
+
├── Moderation need: LOW
|
|
628
|
+
├── Examples: Private Slack channels, WhatsApp groups, Signal groups
|
|
629
|
+
└── Design: invite link management, member limit, end-to-end encryption
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
## 9. Quick Reference Checklist
|
|
635
|
+
|
|
636
|
+
Use this checklist when designing or auditing a social/community feature.
|
|
637
|
+
|
|
638
|
+
### Profiles
|
|
639
|
+
- [ ] Avatar with fallback (initials or identicon)
|
|
640
|
+
- [ ] Display name and unique handle/username
|
|
641
|
+
- [ ] Bio with character limit and clear affordance
|
|
642
|
+
- [ ] Privacy tiers (public/semi-private/private)
|
|
643
|
+
- [ ] Status indicator uses color + icon, not color alone
|
|
644
|
+
- [ ] Follow/Connect button with clear state change
|
|
645
|
+
- [ ] Block and Report accessible from profile (via overflow menu)
|
|
646
|
+
|
|
647
|
+
### Feeds
|
|
648
|
+
- [ ] Chronological option available (not solely algorithmic)
|
|
649
|
+
- [ ] Skeleton loading states (not spinners)
|
|
650
|
+
- [ ] "You're all caught up" boundary or natural stopping point
|
|
651
|
+
- [ ] New content indicator without auto-scrolling ("3 new posts" pill)
|
|
652
|
+
- [ ] Feed items are keyboard navigable (`role="feed"` + `role="article"`)
|
|
653
|
+
- [ ] Virtualized rendering for long lists
|
|
654
|
+
|
|
655
|
+
### Comments and Threading
|
|
656
|
+
- [ ] Reply threading with visual connector lines
|
|
657
|
+
- [ ] Collapse/expand for nested threads
|
|
658
|
+
- [ ] "View N replies" lazy loading
|
|
659
|
+
- [ ] Rich text support with HTML sanitization
|
|
660
|
+
- [ ] Jump-to-parent link for deep threads
|
|
661
|
+
|
|
662
|
+
### Reactions
|
|
663
|
+
- [ ] Tap targets meet WCAG 2.5.8 minimum (24x24 px)
|
|
664
|
+
- [ ] Accessible labels on reaction buttons (`aria-label`)
|
|
665
|
+
- [ ] Reaction state change announced to screen readers
|
|
666
|
+
- [ ] Aggregate count displayed; who-reacted list available
|
|
667
|
+
- [ ] Animation duration under 400ms
|
|
668
|
+
|
|
669
|
+
### Messaging
|
|
670
|
+
- [ ] Unread message indicator with divider line
|
|
671
|
+
- [ ] Timestamp grouping and sender collapsing
|
|
672
|
+
- [ ] New messages announced via `aria-live="polite"`
|
|
673
|
+
- [ ] Typing indicator with privacy toggle
|
|
674
|
+
- [ ] Read receipts with opt-out setting
|
|
675
|
+
- [ ] Retry mechanism for failed sends with visible error state
|
|
676
|
+
|
|
677
|
+
### Content Creation
|
|
678
|
+
- [ ] Auto-save drafts
|
|
679
|
+
- [ ] Alt text prompt for attached images (ATAG compliance)
|
|
680
|
+
- [ ] Audience/visibility selector with clear labels
|
|
681
|
+
- [ ] Character count at 80% threshold
|
|
682
|
+
- [ ] Preview before publish
|
|
683
|
+
- [ ] Edit capability (with history or time-limited window)
|
|
684
|
+
|
|
685
|
+
### Moderation
|
|
686
|
+
- [ ] Community guidelines visible during onboarding and always accessible
|
|
687
|
+
- [ ] Report flow completable in fewer than 4 taps
|
|
688
|
+
- [ ] Structured report reasons (not just free-text)
|
|
689
|
+
- [ ] Reporter receives outcome notification
|
|
690
|
+
- [ ] Moderator dashboard with context (post, conversation, user history)
|
|
691
|
+
- [ ] Appeals process discoverable from moderation notice
|
|
692
|
+
- [ ] Tiered consequences documented and applied consistently
|
|
693
|
+
|
|
694
|
+
### Notifications
|
|
695
|
+
- [ ] Conservative defaults (DMs and mentions only for push)
|
|
696
|
+
- [ ] Granular settings by notification type
|
|
697
|
+
- [ ] Batch/digest option for non-urgent notifications
|
|
698
|
+
- [ ] No zombie notifications or fabricated urgency
|
|
699
|
+
- [ ] Synchronized dismissal across platforms
|
|
700
|
+
|
|
701
|
+
### Privacy
|
|
702
|
+
- [ ] Privacy settings reachable within 2 taps from profile
|
|
703
|
+
- [ ] Plain-language descriptions for all settings
|
|
704
|
+
- [ ] Default to most restrictive sharing option
|
|
705
|
+
- [ ] Periodic privacy audit prompt
|
|
706
|
+
- [ ] Transparent algorithmic feed controls ("Why am I seeing this?")
|
|
707
|
+
|
|
708
|
+
### Accessibility
|
|
709
|
+
- [ ] All interactive elements keyboard accessible
|
|
710
|
+
- [ ] Skip links for bypassing navigation
|
|
711
|
+
- [ ] Screen reader labels on all icons, buttons, and custom controls
|
|
712
|
+
- [ ] Alt text prompts for user-uploaded images
|
|
713
|
+
- [ ] Support for text resizing up to 200%
|
|
714
|
+
- [ ] Touch targets minimum 24x24 px (44x44 px recommended)
|
|
715
|
+
- [ ] No autoplay media without pause/stop control
|
|
716
|
+
- [ ] Color is never the sole indicator of state
|
|
717
|
+
|
|
718
|
+
### Cross-Platform
|
|
719
|
+
- [ ] Core interactions identical across platforms
|
|
720
|
+
- [ ] Platform-specific navigation conventions respected
|
|
721
|
+
- [ ] State synchronized in real time (read status, notifications, drafts)
|
|
722
|
+
- [ ] Design tokens shared via cross-platform design system
|
|
723
|
+
- [ ] Every view has a shareable permalink (web)
|
|
724
|
+
|
|
725
|
+
---
|
|
726
|
+
|
|
727
|
+
## References and Sources
|
|
728
|
+
|
|
729
|
+
- [Nielsen Norman Group — Social Media UX: User-Centered Social Strategies](https://www.nngroup.com/reports/social-media-user-experience/)
|
|
730
|
+
- [Nielsen Norman Group — Design Patterns Topic](https://www.nngroup.com/topic/design-patterns/)
|
|
731
|
+
- [Nielsen Norman Group — State of UX 2026](https://www.nngroup.com/articles/state-of-ux-2026/)
|
|
732
|
+
- [W3C WAI — Guidelines to Make Your Social Media Platform Accessible (ATAG)](https://www.w3.org/WAI/standards-guidelines/atag/social-media/)
|
|
733
|
+
- [W3C WAI — Authoring Tool Accessibility Guidelines (ATAG) Overview](https://www.w3.org/WAI/standards-guidelines/atag/)
|
|
734
|
+
- [W3C WAI — WCAG 2.2 Overview](https://www.w3.org/WAI/standards-guidelines/wcag/)
|
|
735
|
+
- [Ethics of UX Design in Social Media — USC Viterbi](https://vce.usc.edu/semester/fall-2025/ethics-of-ux-design-in-social-media/)
|
|
736
|
+
- [Dark Patterns in 2025 — commonUX](https://www.commonux.org/ux-ethics/dark-patterns-in-2025-manipulation-by-design-or-design-for-manipulation/)
|
|
737
|
+
- [Algorithmic Addiction by Design — arXiv (2025)](https://arxiv.org/abs/2505.00054)
|
|
738
|
+
- [Content Moderation Best Practices for 2025 — Arena](https://arena.im/uncategorized/content-moderation-best-practices-for-2025/)
|
|
739
|
+
- [Content Moderation and Community Standards: Policy vs. User Experiences — Wiley (2025)](https://onlinelibrary.wiley.com/doi/abs/10.1002/poi3.70006)
|
|
740
|
+
- [Mastodon Antiviral Design — UX Collective](https://uxdesign.cc/mastodon-is-antiviral-design-42f090ab8d51)
|
|
741
|
+
- [Social Media Accessibility Best Practices — AccessibilityChecker.org](https://www.accessibilitychecker.org/blog/social-media-accessibility/)
|
|
742
|
+
- [Digital Accessibility in 2025: A Screen Reader User's Honest Take — UsableNet](https://blog.usablenet.com/a-screen-reader-users-honest-take)
|
|
743
|
+
- [Micro-interactions in UX — Interaction Design Foundation](https://ixdf.org/literature/article/micro-interactions-ux)
|
|
744
|
+
- [Profile Page Design Examples — Eleken](https://www.eleken.co/blog-posts/profile-page-design)
|
|
745
|
+
- [Breaking Down the UX of Social Media Platforms — Niamh O'Shea (2025)](https://niamh-oshea.medium.com/breaking-down-the-ux-of-social-media-platforms-1a966408dc4b)
|
|
746
|
+
- [Cross-Platform Design: Creating Seamless Experiences — TMDesign](https://medium.com/theymakedesign/cross-platform-design-creating-seamless-experiences-cadd77dba317)
|
|
747
|
+
- [Apple Human Interface Guidelines — Design for iOS](https://developer.apple.com/design/human-interface-guidelines/)
|
|
748
|
+
- [Google Material Design 3](https://m3.material.io/)
|