@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,22 @@
|
|
|
1
|
+
# Directory Purpose
|
|
2
|
+
|
|
3
|
+
The `data` security directory establishes rules for protecting sensitive information, complying with privacy laws, and securing storage layers.
|
|
4
|
+
|
|
5
|
+
# Key Concepts
|
|
6
|
+
|
|
7
|
+
- Data anonymization and masking
|
|
8
|
+
- Managing Personally Identifiable Information (PII)
|
|
9
|
+
- Applying cryptographic standards
|
|
10
|
+
|
|
11
|
+
# File Map
|
|
12
|
+
|
|
13
|
+
- `data-encryption.md` — AES, RSA, key rotation, and encryption at rest
|
|
14
|
+
- `data-privacy-gdpr.md` — consent, right to be forgotten, and privacy by design
|
|
15
|
+
- `database-security.md` — row-level security, least privilege roles, and audits
|
|
16
|
+
- `pii-handling.md` — tokenization, masking, and safe logging of user data
|
|
17
|
+
|
|
18
|
+
# Reading Guide
|
|
19
|
+
|
|
20
|
+
If designing a schema containing user data → read `pii-handling.md`
|
|
21
|
+
If storing passwords or tokens → read `data-encryption.md`
|
|
22
|
+
If configuring database access → read `database-security.md`
|
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
# PII Handling Security Expertise Module
|
|
2
|
+
|
|
3
|
+
> **Purpose:** Guide AI agents and development teams on securely handling Personally Identifiable
|
|
4
|
+
> Information (PII) across the software lifecycle.
|
|
5
|
+
>
|
|
6
|
+
> **Last Updated:** 2026-03-08
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Threat Landscape
|
|
11
|
+
|
|
12
|
+
### 1.1 Scale
|
|
13
|
+
|
|
14
|
+
In 2024, the US recorded 3,158 data breaches affecting 1.35 billion individuals. Over 53% of all
|
|
15
|
+
breaches involve customer PII. The average US breach cost reached $10.22 million -- an all-time
|
|
16
|
+
high. 91% of organizations reported identity-related incidents in the past year (SpyCloud 2025).
|
|
17
|
+
|
|
18
|
+
### 1.2 Major PII Breaches
|
|
19
|
+
|
|
20
|
+
| Breach | Year | Records | Root Cause |
|
|
21
|
+
|--------|------|---------|------------|
|
|
22
|
+
| **Equifax** | 2017 | 147M SSNs | Unpatched Apache Struts (CVE-2017-5638); $700M+ settlement |
|
|
23
|
+
| **Facebook** | 2019 | 540M records | PII on publicly accessible S3 buckets |
|
|
24
|
+
| **National Public Data** | 2024 | 2.9B records, 272M unique SSNs | Inadequate access controls; company bankrupted |
|
|
25
|
+
| **Ticketmaster** | 2024 | 560M | Third-party supply chain compromise |
|
|
26
|
+
| **Dell** | 2024 | 49M | API abuse / scraping |
|
|
27
|
+
| **Prosper Marketplace** | 2025 | 17.6M | Unauthorized system access |
|
|
28
|
+
| **Yale New Haven Health** | 2025 | 5.5M PII+PHI | Ransomware |
|
|
29
|
+
|
|
30
|
+
**Lessons:** Patch management failures (Equifax), default-deny cloud policies (Facebook/S3),
|
|
31
|
+
data broker aggregation risk (NPD), and supply chain due diligence (Ticketmaster) are recurring
|
|
32
|
+
themes. Verizon's 2025 DBIR found a 100% increase in third-party attacks.
|
|
33
|
+
|
|
34
|
+
### 1.3 Common Exposure Vectors
|
|
35
|
+
|
|
36
|
+
- **Logs:** Stack traces and debug logs containing emails, IPs, session tokens
|
|
37
|
+
- **API responses:** Over-fetching full user objects when only a name is needed
|
|
38
|
+
- **Error messages:** Database values or user emails exposed in error pages
|
|
39
|
+
- **URLs/query strings:** PII captured in browser history, server logs, referrer headers
|
|
40
|
+
- **Analytics/telemetry:** User IDs and IPs sent to third parties without masking
|
|
41
|
+
- **Backups:** Unencrypted database backups with overly broad access
|
|
42
|
+
- **Caches:** Redis/Memcached holding PII without TTL or access restrictions
|
|
43
|
+
- **AI prompts:** 8.5% of LLM prompts include PII or credentials (Help Net Security, 2025)
|
|
44
|
+
- **Non-production environments:** Production clones with real PII and weaker controls
|
|
45
|
+
|
|
46
|
+
### 1.4 Enforcement Trends
|
|
47
|
+
|
|
48
|
+
GDPR fines exceed EUR 4.5B cumulatively. Under 2025 rules, penalties for similar breaches face
|
|
49
|
+
doubling. CCPA/CPRA added neural data as sensitive PI in 2025. Credential abuse remains the
|
|
50
|
+
top breach vector (22%), with vulnerability exploitation up 34% year-over-year.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. Core Security Principles
|
|
55
|
+
|
|
56
|
+
### 2.1 Data Minimization
|
|
57
|
+
|
|
58
|
+
Collect only what you need. Store only what you must. Delete when you can. Four pillars:
|
|
59
|
+
**Adequacy** (enough for the purpose), **Relevance** (each field serves a documented purpose),
|
|
60
|
+
**Limitedness** (minimum volume), **Timeliness** (delete when purpose is fulfilled).
|
|
61
|
+
|
|
62
|
+
### 2.2 Purpose Limitation and Storage Limitation
|
|
63
|
+
|
|
64
|
+
PII collected for one purpose cannot be repurposed without consent. Define retention periods
|
|
65
|
+
for every category: session tokens (24h), support tickets (2y), payment records (7y),
|
|
66
|
+
marketing preferences (until withdrawn), account data (30 days post-deletion).
|
|
67
|
+
|
|
68
|
+
### 2.3 PII Classification
|
|
69
|
+
|
|
70
|
+
| Level | Examples | Controls |
|
|
71
|
+
|-------|----------|----------|
|
|
72
|
+
| **L1 Public** | Display name, public profile | Basic access control |
|
|
73
|
+
| **L2 Internal** | Email, phone, employer | Auth required, audit logging |
|
|
74
|
+
| **L3 Confidential** | DOB, home address, IP | Encryption at rest, RBAC |
|
|
75
|
+
| **L4 Restricted** | SSN, passport, biometrics, health records | Field-level encryption, MFA, audit, masking in non-prod |
|
|
76
|
+
|
|
77
|
+
NIST SP 800-122 uses Low/Moderate/High impact levels based on identifiability, quantity,
|
|
78
|
+
sensitivity, context, obligations, and access patterns.
|
|
79
|
+
|
|
80
|
+
### 2.4 Pseudonymization vs. Anonymization
|
|
81
|
+
|
|
82
|
+
**Pseudonymization** (tokenization, hashing, deterministic coding) is reversible and still PII
|
|
83
|
+
under GDPR. Preserves data utility for production use. Mapping tables must be secured separately.
|
|
84
|
+
|
|
85
|
+
**Anonymization** (suppression, generalization, aggregation, k-anonymity, differential privacy)
|
|
86
|
+
is irreversible and falls outside GDPR scope. Lower data utility; suited for research and
|
|
87
|
+
non-production environments.
|
|
88
|
+
|
|
89
|
+
### 2.5 Right to Deletion
|
|
90
|
+
|
|
91
|
+
GDPR Article 17 and CCPA mandate erasure rights. Implementation requires: authenticated request
|
|
92
|
+
intake, identity verification, automated cross-system data discovery, dependency checks (legal
|
|
93
|
+
holds), hard delete or anonymize, propagation to third-party processors, backup handling
|
|
94
|
+
(exclusion from restores or scheduled rotation), confirmation within 30 days (GDPR) or 45 days
|
|
95
|
+
(CCPA), and audit records without the PII itself.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 3. Implementation Patterns
|
|
100
|
+
|
|
101
|
+
### 3.1 PII Field Identification
|
|
102
|
+
|
|
103
|
+
Maintain a centralized PII data dictionary mapping every field, its classification, purpose,
|
|
104
|
+
retention, encryption method, masking strategy, and which systems store it. Tag PII fields in
|
|
105
|
+
database schemas, ORM models, and API schemas for automated policy enforcement.
|
|
106
|
+
|
|
107
|
+
### 3.2 Data Masking in Logs
|
|
108
|
+
|
|
109
|
+
**Never log raw PII.** Enforce at the framework level:
|
|
110
|
+
- Allowlist approach: only log explicitly safe fields; deny by default
|
|
111
|
+
- Pattern-based redaction: regex for emails, SSNs, credit cards, phones, IPs
|
|
112
|
+
- PII-aware serializers: override `toString()`/`toJSON()` to exclude PII
|
|
113
|
+
- Log sink filtering: redaction at Datadog/Splunk/ELK as defense-in-depth
|
|
114
|
+
|
|
115
|
+
### 3.3 Tokenization
|
|
116
|
+
|
|
117
|
+
Replace sensitive PII with vault-backed or format-preserving tokens. **Vaulted:** original in
|
|
118
|
+
secure vault, token is random UUID. **Format-preserving (FPE):** token matches original format.
|
|
119
|
+
**Vaultless:** deterministic encryption, no vault lookup needed. Use for payment cards (PCI DSS),
|
|
120
|
+
SSNs, government IDs, and L4-Restricted fields.
|
|
121
|
+
|
|
122
|
+
### 3.4 Encryption Layers
|
|
123
|
+
|
|
124
|
+
| Layer | Technique | Protects Against |
|
|
125
|
+
|-------|-----------|-----------------|
|
|
126
|
+
| In transit | TLS 1.3 minimum | Network sniffing, MITM |
|
|
127
|
+
| At rest (volume) | AES-256 disk encryption | Physical theft |
|
|
128
|
+
| At rest (field) | AES-256-GCM application-level | DB admin access, SQLi exfiltration, backup exposure |
|
|
129
|
+
| In use | Confidential computing / enclaves | Memory dumps, side-channel |
|
|
130
|
+
|
|
131
|
+
Field-level encryption is critical for L4 data -- volume encryption alone does not protect
|
|
132
|
+
against application-layer attacks.
|
|
133
|
+
|
|
134
|
+
### 3.5 Secure PII APIs
|
|
135
|
+
|
|
136
|
+
- Reject PII in query parameters; use POST bodies
|
|
137
|
+
- Return only authorized PII fields per caller role (allowlist, not denylist)
|
|
138
|
+
- Dedicated `/pii` endpoints with stricter auth, rate limiting, and request-reason headers
|
|
139
|
+
- Set `Cache-Control: no-store` on PII responses
|
|
140
|
+
|
|
141
|
+
### 3.6 PII in Analytics
|
|
142
|
+
|
|
143
|
+
- **K-anonymity:** Each record indistinguishable from k-1 others (k>=5, k>=10 for sensitive)
|
|
144
|
+
- **Differential privacy:** Calibrated noise (Laplace/Gaussian) on query results; epsilon 1-3
|
|
145
|
+
- **Aggregation:** Report on cohorts (50+ users), not individuals
|
|
146
|
+
- **Purpose-built IDs:** Analytics-specific pseudonymous IDs without joinability
|
|
147
|
+
|
|
148
|
+
### 3.7 Retention and RTBF
|
|
149
|
+
|
|
150
|
+
Tag every PII record with creation timestamp and retention category. Run automated
|
|
151
|
+
deletion jobs. Handle cascading deletions across databases, caches, third parties. Maintain
|
|
152
|
+
deletion audit logs (category + timestamp, never the PII). Test that purge jobs actually work
|
|
153
|
+
across all storage layers.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 4. Vulnerability Catalog
|
|
158
|
+
|
|
159
|
+
### V-01: PII in Application Logs
|
|
160
|
+
**Severity: High** | Logs accessible to developers, SREs, log services; retained for years.
|
|
161
|
+
```typescript
|
|
162
|
+
// VULNERABLE
|
|
163
|
+
logger.info('User login', { user: req.user }); // logs email, ssn, etc.
|
|
164
|
+
// SECURE
|
|
165
|
+
logger.info('User login', { userId: req.user.id, action: 'login' });
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### V-02: PII in Error Messages
|
|
169
|
+
```typescript
|
|
170
|
+
// VULNERABLE
|
|
171
|
+
throw new Error(`User ${email} not found`); // returned to client
|
|
172
|
+
// SECURE
|
|
173
|
+
throw new AppError('USER_NOT_FOUND', 'The requested account was not found');
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### V-03: PII in URLs
|
|
177
|
+
URLs logged by servers, proxies, CDNs, browsers, and sent via referrer headers.
|
|
178
|
+
```
|
|
179
|
+
# BAD: GET /api/users?email=john@example.com&ssn=123-45-6789
|
|
180
|
+
# GOOD: POST /api/users/lookup { "email": "..." }
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### V-04: Overly Permissive API Responses
|
|
184
|
+
```typescript
|
|
185
|
+
// VULNERABLE: returns full DB record including ssn, dob, payment info
|
|
186
|
+
res.json(await db.users.findById(id));
|
|
187
|
+
// SECURE: explicit projection by role
|
|
188
|
+
res.json(pick(user, getFieldsByRole(req.auth.role)));
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### V-05: PII in Analytics/Telemetry
|
|
192
|
+
Send hashed anonymous IDs, price ranges, and regions -- never raw emails, names, or addresses.
|
|
193
|
+
|
|
194
|
+
### V-06: Unmasked PII in Non-Production
|
|
195
|
+
Never clone production PII to dev/staging. Use synthetic data (Faker.js, Mimesis), masked
|
|
196
|
+
copies, or subset databases with test accounts only.
|
|
197
|
+
|
|
198
|
+
### V-07: PII in Caches
|
|
199
|
+
Cache only non-PII data. If PII must be cached, encrypt values and use short TTLs (60s).
|
|
200
|
+
|
|
201
|
+
### V-08: PII in Client-Side Storage
|
|
202
|
+
Never store L3/L4 PII in localStorage (XSS surface). Use HttpOnly secure cookies for auth,
|
|
203
|
+
sessionStorage for non-sensitive display data only.
|
|
204
|
+
|
|
205
|
+
### V-09: PII in File Exports
|
|
206
|
+
Apply same field-level access control to exports. Mask by default, watermark, auto-expire
|
|
207
|
+
download links (15-minute TTL).
|
|
208
|
+
|
|
209
|
+
### V-10: PII in Database Backups
|
|
210
|
+
Encrypt all backups (AES-256, KMS-managed keys). Apply same access controls as production.
|
|
211
|
+
For RTBF: rotate backups on schedule or maintain deletion ledgers applied on restore.
|
|
212
|
+
|
|
213
|
+
### V-11: PII in HTTP Headers
|
|
214
|
+
Use opaque identifiers (`X-User-Id: uuid`), never raw emails or phones in custom headers.
|
|
215
|
+
|
|
216
|
+
### V-12: PII in Source Code
|
|
217
|
+
Pre-commit hooks scanning for SSN/email/CC patterns. Use obviously fake data in fixtures.
|
|
218
|
+
|
|
219
|
+
### V-13: PII via GraphQL Introspection
|
|
220
|
+
Disable introspection in production. Use field-level auth directives and persisted queries.
|
|
221
|
+
|
|
222
|
+
### V-14: PII in Message Queues
|
|
223
|
+
Include only opaque user IDs in events. Encrypt PII in payloads if unavoidable. Apply
|
|
224
|
+
topic-level access controls.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 5. Security Checklist
|
|
229
|
+
|
|
230
|
+
- [ ] All PII fields inventoried in a centralized data dictionary with classification (L1-L4)
|
|
231
|
+
- [ ] Every PII field has documented purpose and legal basis for collection
|
|
232
|
+
- [ ] Data flow diagrams map PII through all systems and third parties
|
|
233
|
+
- [ ] Automated PII discovery scans run regularly across all data stores
|
|
234
|
+
- [ ] Collection follows data minimization -- only necessary fields collected
|
|
235
|
+
- [ ] Explicit consent obtained where required (GDPR Art. 6, CCPA opt-out)
|
|
236
|
+
- [ ] L3-L4 PII encrypted at rest (AES-256); L4 uses field-level encryption
|
|
237
|
+
- [ ] All PII encrypted in transit (TLS 1.2+ minimum, TLS 1.3 preferred)
|
|
238
|
+
- [ ] Encryption keys in dedicated KMS with rotation policies
|
|
239
|
+
- [ ] Database backups encrypted and access-controlled
|
|
240
|
+
- [ ] PII access follows least-privilege RBAC; L4 access requires MFA
|
|
241
|
+
- [ ] All PII access audit-logged (user identity, timestamp, purpose)
|
|
242
|
+
- [ ] Production PII never in non-production without masking/anonymization
|
|
243
|
+
- [ ] Application logs never contain raw PII (framework-level redaction enforced)
|
|
244
|
+
- [ ] Error messages never expose PII; PII never in URLs/query params
|
|
245
|
+
- [ ] API responses filtered to authorized fields only (allowlist approach)
|
|
246
|
+
- [ ] PII API endpoints have rate limiting and anomaly detection
|
|
247
|
+
- [ ] Third-party agreements include PII protection requirements
|
|
248
|
+
- [ ] Retention periods defined and enforced via automated deletion jobs
|
|
249
|
+
- [ ] RTBF requests fulfillable within regulatory timelines (30d GDPR / 45d CCPA)
|
|
250
|
+
- [ ] Deletion propagates to all systems: DBs, caches, backups, third parties
|
|
251
|
+
- [ ] PII breach response plan exists and tested annually
|
|
252
|
+
- [ ] Breach notification meets 72-hour GDPR requirement
|
|
253
|
+
- [ ] DSAR processes handle requests within regulatory windows
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 6. Tools and Automation
|
|
258
|
+
|
|
259
|
+
### 6.1 PII Discovery and Scanning
|
|
260
|
+
|
|
261
|
+
| Tool | Type | Best For |
|
|
262
|
+
|------|------|----------|
|
|
263
|
+
| **AWS Macie** | Cloud-native | S3 data lakes; ML-based classification and alerting |
|
|
264
|
+
| **Google Cloud DLP** | Cloud-native | 150+ detectors; multi-cloud structured/unstructured data |
|
|
265
|
+
| **Microsoft Presidio** | Open-source | On-prem; text/image/audio PII detection and anonymization |
|
|
266
|
+
| **Microsoft Purview** | Enterprise | M365/Azure ecosystem; endpoint DLP |
|
|
267
|
+
| **BigID** | Enterprise DSPM | Complex data landscapes; DSAR automation |
|
|
268
|
+
| **Nightfall AI** | SaaS DLP | Slack, GitHub, Jira, email; ML-based real-time detection |
|
|
269
|
+
|
|
270
|
+
### 6.2 Log Redaction
|
|
271
|
+
|
|
272
|
+
Datadog Sensitive Data Scanner, Splunk Data Anonymization, Elastic `redact` ingest processor,
|
|
273
|
+
Fluentd/Fluent Bit filter plugins, and custom application-level middleware (see Section 10).
|
|
274
|
+
|
|
275
|
+
### 6.3 Data Masking
|
|
276
|
+
|
|
277
|
+
Delphix (dynamic/static masking), Informatica Persistent Data Masking, K2View (entity-based),
|
|
278
|
+
Tonic.ai (synthetic data), Faker.js/Mimesis/Bogus (open-source fake data generation).
|
|
279
|
+
|
|
280
|
+
### 6.4 DSAR Automation
|
|
281
|
+
|
|
282
|
+
OneTrust, TrustArc, Securiti.ai, BigID -- automate intake, identity verification, cross-system
|
|
283
|
+
discovery, response generation. Leading platforms reduce DSAR time from weeks to hours.
|
|
284
|
+
|
|
285
|
+
### 6.5 Pre-Commit Scanning
|
|
286
|
+
|
|
287
|
+
GitLeaks, TruffleHog, GitHub Secret Scanning (extendable with PII patterns), custom regex
|
|
288
|
+
hooks for SSN/CC/email detection in staged diffs (see Section 10).
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## 7. Platform-Specific Guidance
|
|
293
|
+
|
|
294
|
+
### 7.1 Web
|
|
295
|
+
|
|
296
|
+
- `autocomplete="off"` on sensitive fields; `type="password"` for SSN/tax ID inputs
|
|
297
|
+
- Never store L3/L4 PII in localStorage/indexedDB; use HttpOnly Secure SameSite=Strict cookies
|
|
298
|
+
- CSP headers prevent PII exfiltration via XSS; SRI on third-party scripts
|
|
299
|
+
- `Referrer-Policy: strict-origin-when-cross-origin` prevents URL PII leaking via Referer
|
|
300
|
+
|
|
301
|
+
### 7.2 Mobile
|
|
302
|
+
|
|
303
|
+
- iOS: Keychain with `kSecAttrAccessibleWhenUnlockedThisDeviceOnly`; Android: EncryptedSharedPreferences
|
|
304
|
+
- Wipe PII from memory on app background; exclude from device backups
|
|
305
|
+
- Audit analytics SDKs (many collect IPs/device IDs by default); disable IP collection
|
|
306
|
+
- Screenshot protection for PII screens; clear clipboard after PII paste; no PII in push payloads
|
|
307
|
+
|
|
308
|
+
### 7.3 Backend
|
|
309
|
+
|
|
310
|
+
- Single logging middleware as the ONLY log emission path; test that PII never appears in output
|
|
311
|
+
- API gateway response filtering (allowlist per endpoint/role) as defense-in-depth
|
|
312
|
+
- `Cache-Control: no-store` on PII responses; parameterized queries only
|
|
313
|
+
- Query-level audit logging for L3/L4 tables; DB views or row-level security by role
|
|
314
|
+
|
|
315
|
+
### 7.4 Cloud
|
|
316
|
+
|
|
317
|
+
- Data residency: configure regions per GDPR/regulatory requirements
|
|
318
|
+
- Default encryption on all storage; block public access at account level
|
|
319
|
+
- Access logging on all PII buckets; pre-signed URLs with short expiry
|
|
320
|
+
- IaC scanning (Checkov, tfsec) for misconfigurations exposing PII
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 8. Incident Patterns
|
|
325
|
+
|
|
326
|
+
### 8.1 Detection
|
|
327
|
+
|
|
328
|
+
Layer multiple detection methods: real-time anomaly monitoring (bulk retrieval, unusual access),
|
|
329
|
+
DLP scanning of stores/logs/traffic, dark web monitoring (SpyCloud, HIBP), bug bounty programs,
|
|
330
|
+
and CI/CD pipeline checks scanning outputs for PII patterns.
|
|
331
|
+
|
|
332
|
+
### 8.2 Breach Notification Requirements
|
|
333
|
+
|
|
334
|
+
| Regulation | Deadline | Who to Notify |
|
|
335
|
+
|------------|----------|---------------|
|
|
336
|
+
| **GDPR Art. 33** | 72 hours from awareness | Supervisory authority (DPA) |
|
|
337
|
+
| **GDPR Art. 34** | Without undue delay | Affected individuals (high risk) |
|
|
338
|
+
| **CCPA/CPRA** | Most expedient time possible | AG (500+ CA residents) + individuals |
|
|
339
|
+
| **HIPAA** | 60 days | HHS + individuals + media (500+) |
|
|
340
|
+
| **PCI DSS** | Immediately | Card brands, acquiring bank |
|
|
341
|
+
|
|
342
|
+
The GDPR 72-hour clock starts at "sufficient awareness," not full technical details. Partial
|
|
343
|
+
notification with follow-up is acceptable.
|
|
344
|
+
|
|
345
|
+
### 8.3 Response Playbook
|
|
346
|
+
|
|
347
|
+
**Phase 1 -- Triage (0-4h):** Confirm breach scope, activate IR team, contain (revoke access,
|
|
348
|
+
isolate systems), preserve evidence, start regulatory clock.
|
|
349
|
+
|
|
350
|
+
**Phase 2 -- Investigate (4-48h):** Determine PII fields/individuals affected, identify vector,
|
|
351
|
+
assess impact by classification level, check jurisdictional obligations.
|
|
352
|
+
|
|
353
|
+
**Phase 3 -- Notify (24-72h):** DPA notification (GDPR 72h), assess individual notification
|
|
354
|
+
requirement, prepare clear communications, notify card brands if applicable.
|
|
355
|
+
|
|
356
|
+
**Phase 4 -- Remediate (72h-30d):** Patch vulnerability, implement additional controls, offer
|
|
357
|
+
credit monitoring, update risk assessments, document lessons learned.
|
|
358
|
+
|
|
359
|
+
**Phase 5 -- Post-Incident (30-90d):** Regulatory follow-up, litigation management, process
|
|
360
|
+
improvement, targeted training, verification of remediation effectiveness.
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## 9. Compliance and Standards
|
|
365
|
+
|
|
366
|
+
### 9.1 GDPR
|
|
367
|
+
|
|
368
|
+
**Art. 5:** Lawfulness, fairness, transparency; purpose limitation; data minimization; accuracy;
|
|
369
|
+
storage limitation; integrity/confidentiality; accountability.
|
|
370
|
+
**Art. 6:** Lawful basis required (consent, contract, legal obligation, vital interests, public
|
|
371
|
+
task, legitimate interests). **Art. 17:** Right to erasure when data unnecessary, consent
|
|
372
|
+
withdrawn, or unlawfully processed. **Art. 32:** Appropriate technical/organizational measures
|
|
373
|
+
including pseudonymization, encryption, confidentiality/integrity/availability assurance,
|
|
374
|
+
resilience, and regular testing.
|
|
375
|
+
|
|
376
|
+
### 9.2 CCPA/CPRA
|
|
377
|
+
|
|
378
|
+
Covers 11 categories: identifiers, protected classifications, commercial info, biometrics,
|
|
379
|
+
internet activity, geolocation, sensory data, professional/employment info, education,
|
|
380
|
+
inferences, and sensitive PI (government IDs, financial data, precise geolocation,
|
|
381
|
+
racial/ethnic origin, biometrics, health, sex life, and neural data as of 2025).
|
|
382
|
+
|
|
383
|
+
### 9.3 HIPAA PHI
|
|
384
|
+
|
|
385
|
+
18 identifiers (names, sub-state geography, dates, phone, fax, email, SSN, medical record
|
|
386
|
+
numbers, health plan IDs, account numbers, license numbers, vehicle/device IDs, URLs, IPs,
|
|
387
|
+
biometrics, photos, other unique IDs). De-identification via Safe Harbor (remove all 18) or
|
|
388
|
+
Expert Determination (statistical re-identification risk certified "very small").
|
|
389
|
+
|
|
390
|
+
### 9.4 PCI DSS 4.0
|
|
391
|
+
|
|
392
|
+
Effective April 2025. PAN must be unreadable when stored. MFA required for all cardholder data
|
|
393
|
+
access. Minimum 12-character passwords. Stronger encryption algorithms mandated. Continuous
|
|
394
|
+
automated monitoring required. Risk-based customized approach replaces rigid checklists.
|
|
395
|
+
Non-compliance: up to $500K fines plus fraud liability.
|
|
396
|
+
|
|
397
|
+
### 9.5 NIST SP 800-122
|
|
398
|
+
|
|
399
|
+
Identify all PII; assign Low/Moderate/High impact levels based on identifiability, quantity,
|
|
400
|
+
sensitivity, context, obligations, and access patterns. Apply proportional safeguards. Minimize
|
|
401
|
+
PII in testing/development. Conduct privacy impact assessments.
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## 10. Code Examples
|
|
406
|
+
|
|
407
|
+
### 10.1 Log Redaction Middleware (TypeScript)
|
|
408
|
+
|
|
409
|
+
```typescript
|
|
410
|
+
const PII_PATTERNS: Record<string, RegExp> = {
|
|
411
|
+
email: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
|
|
412
|
+
ssn: /\b\d{3}-?\d{2}-?\d{4}\b/g,
|
|
413
|
+
creditCard: /\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g,
|
|
414
|
+
phone: /\b(\+?1?[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,
|
|
415
|
+
};
|
|
416
|
+
const REDACTED_FIELDS = new Set([
|
|
417
|
+
'password','ssn','taxId','creditCard','cardNumber','cvv','dob','passport',
|
|
418
|
+
'driversLicense','bankAccount','routingNumber','biometric',
|
|
419
|
+
]);
|
|
420
|
+
|
|
421
|
+
export function redactPII(obj: unknown, depth = 0): unknown {
|
|
422
|
+
if (depth > 10) return '[MAX_DEPTH]';
|
|
423
|
+
if (typeof obj === 'string') {
|
|
424
|
+
let r = obj;
|
|
425
|
+
for (const [name, pat] of Object.entries(PII_PATTERNS))
|
|
426
|
+
r = r.replace(pat, `[REDACTED_${name.toUpperCase()}]`);
|
|
427
|
+
return r;
|
|
428
|
+
}
|
|
429
|
+
if (Array.isArray(obj)) return obj.map(i => redactPII(i, depth + 1));
|
|
430
|
+
if (obj && typeof obj === 'object') {
|
|
431
|
+
const out: Record<string, unknown> = {};
|
|
432
|
+
for (const [k, v] of Object.entries(obj as Record<string, unknown>))
|
|
433
|
+
out[k] = REDACTED_FIELDS.has(k.toLowerCase()) ? '[REDACTED]' : redactPII(v, depth + 1);
|
|
434
|
+
return out;
|
|
435
|
+
}
|
|
436
|
+
return obj;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// Wrap any logger: createPIISafeLogger(winston.createLogger({...}))
|
|
440
|
+
export function createPIISafeLogger(base: any) {
|
|
441
|
+
return Object.fromEntries(
|
|
442
|
+
['info','warn','error','debug'].map(l => [l, (m: string, meta?: object) =>
|
|
443
|
+
base[l](m, meta ? redactPII(meta) : undefined)])
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### 10.2 PII Field Encryption (TypeScript)
|
|
449
|
+
|
|
450
|
+
```typescript
|
|
451
|
+
import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from 'crypto';
|
|
452
|
+
|
|
453
|
+
export class PIIFieldEncryptor {
|
|
454
|
+
private key: Buffer;
|
|
455
|
+
constructor(masterKey: string) {
|
|
456
|
+
this.key = scryptSync(masterKey, process.env.PII_KEY_SALT!, 32);
|
|
457
|
+
}
|
|
458
|
+
encrypt(plaintext: string): string {
|
|
459
|
+
const iv = randomBytes(16);
|
|
460
|
+
const cipher = createCipheriv('aes-256-gcm', this.key, iv);
|
|
461
|
+
const enc = cipher.update(plaintext, 'utf8', 'hex') + cipher.final('hex');
|
|
462
|
+
return `${iv.toString('hex')}:${cipher.getAuthTag().toString('hex')}:${enc}`;
|
|
463
|
+
}
|
|
464
|
+
decrypt(value: string): string {
|
|
465
|
+
const [ivH, tagH, enc] = value.split(':');
|
|
466
|
+
const d = createDecipheriv('aes-256-gcm', this.key, Buffer.from(ivH, 'hex'));
|
|
467
|
+
d.setAuthTag(Buffer.from(tagH, 'hex'));
|
|
468
|
+
return d.update(enc, 'hex', 'utf8') + d.final('utf8');
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
// ORM middleware: encrypt before write, decrypt after read for specified fields
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### 10.3 API Response Filtering (TypeScript)
|
|
475
|
+
|
|
476
|
+
```typescript
|
|
477
|
+
type Role = 'public' | 'user' | 'support' | 'admin' | 'compliance';
|
|
478
|
+
|
|
479
|
+
const FIELD_POLICIES: Record<string, { roles: Role[]; mask?: (v: string) => string }> = {
|
|
480
|
+
id: { roles: ['public','user','support','admin','compliance'] },
|
|
481
|
+
displayName: { roles: ['public','user','support','admin','compliance'] },
|
|
482
|
+
email: { roles: ['user','support','admin','compliance'],
|
|
483
|
+
mask: v => `${v[0]}***@${v.split('@')[1]}` },
|
|
484
|
+
phone: { roles: ['user','admin','compliance'],
|
|
485
|
+
mask: v => `***-***-${v.slice(-4)}` },
|
|
486
|
+
ssn: { roles: ['compliance'], mask: v => `***-**-${v.slice(-4)}` },
|
|
487
|
+
};
|
|
488
|
+
|
|
489
|
+
export function filterResponse(user: Record<string, any>, role: Role) {
|
|
490
|
+
const out: Record<string, any> = {};
|
|
491
|
+
for (const [field, policy] of Object.entries(FIELD_POLICIES)) {
|
|
492
|
+
if (!(field in user) || !policy.roles.includes(role)) continue;
|
|
493
|
+
out[field] = (policy.mask && role !== 'user') ? policy.mask(user[field]) : user[field];
|
|
494
|
+
}
|
|
495
|
+
return out;
|
|
496
|
+
}
|
|
497
|
+
// Express middleware: override res.json to apply filterResponse + Cache-Control: no-store
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### 10.4 Data Masking Utilities (TypeScript)
|
|
501
|
+
|
|
502
|
+
```typescript
|
|
503
|
+
export const mask = {
|
|
504
|
+
email: (v: string) => `${v[0]}${'*'.repeat(v.indexOf('@')-2)}${v.slice(v.indexOf('@')-1)}`,
|
|
505
|
+
phone: (v: string) => `***-***-${v.replace(/\D/g,'').slice(-4)}`,
|
|
506
|
+
ssn: (v: string) => `***-**-${v.replace(/\D/g,'').slice(-4)}`,
|
|
507
|
+
creditCard: (v: string) => `****-****-****-${v.replace(/\D/g,'').slice(-4)}`,
|
|
508
|
+
ip: (v: string) => v.split('.').slice(0,3).join('.') + '.0',
|
|
509
|
+
};
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## References
|
|
515
|
+
|
|
516
|
+
**Breach Reports:** [Secureframe Statistics](https://secureframe.com/blog/data-breach-statistics) |
|
|
517
|
+
[IBM NPD Breach](https://www.ibm.com/think/news/national-public-data-breach-publishes-private-data-billions-us-citizens) |
|
|
518
|
+
[Troy Hunt NPD](https://www.troyhunt.com/inside-the-3-billion-people-national-public-data-breach/) |
|
|
519
|
+
[SpyCloud 2025](https://spycloud.com/resource/report/spycloud-annual-identity-exposure-report-2025/) |
|
|
520
|
+
[PKWARE 2025](https://www.pkware.com/blog/recent-data-breaches)
|
|
521
|
+
|
|
522
|
+
**Regulations:** [GDPR Art. 5](https://gdpr-info.eu/art-5-gdpr/) |
|
|
523
|
+
[CCPA](https://oag.ca.gov/privacy/ccpa) |
|
|
524
|
+
[NIST 800-122](https://csrc.nist.gov/pubs/sp/800/122/final) |
|
|
525
|
+
[HIPAA PHI](https://cphs.berkeley.edu/hipaa/hipaa18.html) |
|
|
526
|
+
[PCI DSS 4.0](https://www.scrut.io/hub/pci-dss/pci-dss-4)
|
|
527
|
+
|
|
528
|
+
**Tools:** [Strac PII Scanners](https://www.strac.io/blog/top-10-data-scanning-tools) |
|
|
529
|
+
[Presidio](https://microsoft.github.io/presidio/) |
|
|
530
|
+
[AWS Macie](https://aws.amazon.com/macie/) |
|
|
531
|
+
[GDPR Breach Guide](https://breachresponsefirms.com/gdpr-breach/)
|