@mytechtoday/augment-extensions 0.7.0 → 1.2.1
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 +265 -232
- package/README.md +956 -771
- package/augment-extensions/coding-standards/bash/README.md +196 -196
- package/augment-extensions/coding-standards/bash/module.json +163 -163
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -336
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -289
- package/augment-extensions/coding-standards/css/README.md +40 -40
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -550
- package/augment-extensions/coding-standards/css/module.json +44 -44
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -448
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -492
- package/augment-extensions/coding-standards/html/README.md +40 -40
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -267
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -505
- package/augment-extensions/coding-standards/html/module.json +44 -44
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -349
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -194
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -487
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -550
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -667
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -267
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -612
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -505
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -48
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -515
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -448
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -492
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -439
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -349
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -486
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -463
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -543
- package/augment-extensions/coding-standards/js/README.md +46 -46
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -487
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -667
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -612
- package/augment-extensions/coding-standards/js/module.json +49 -49
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -515
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -439
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -486
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -463
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -543
- package/augment-extensions/coding-standards/php/README.md +248 -248
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -204
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -206
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -234
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -211
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -215
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -189
- package/augment-extensions/coding-standards/php/module.json +166 -166
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -480
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -332
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -472
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -561
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -402
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -425
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -627
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -336
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -677
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -279
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -392
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -186
- package/augment-extensions/coding-standards/php/rules/security.md +358 -358
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -403
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -331
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -426
- package/augment-extensions/coding-standards/powershell/README.md +154 -154
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -272
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -173
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -243
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -297
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -224
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -340
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -255
- package/augment-extensions/coding-standards/powershell/module.json +165 -165
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -439
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -240
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -384
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -383
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -482
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -296
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -314
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -466
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -244
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -266
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -209
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -314
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -268
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -197
- package/augment-extensions/coding-standards/python/README.md +48 -48
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -373
- package/augment-extensions/coding-standards/python/module.json +30 -30
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -884
- package/augment-extensions/coding-standards/python/rules/best-practices.md +232 -232
- package/augment-extensions/coding-standards/python/rules/code-organization.md +220 -220
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -831
- package/augment-extensions/coding-standards/python/rules/error-handling.md +1008 -1008
- package/augment-extensions/coding-standards/python/rules/naming-conventions.md +172 -172
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -409
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -446
- package/augment-extensions/coding-standards/python/rules/type-hints.md +253 -253
- package/augment-extensions/coding-standards/react/README.md +45 -45
- package/augment-extensions/coding-standards/react/module.json +27 -27
- package/augment-extensions/coding-standards/react/rules/component-patterns.md +214 -214
- package/augment-extensions/coding-standards/react/rules/hooks-best-practices.md +235 -235
- package/augment-extensions/coding-standards/react/rules/performance.md +300 -300
- package/augment-extensions/coding-standards/react/rules/state-management.md +265 -265
- package/augment-extensions/coding-standards/react/rules/typescript-react.md +271 -271
- package/augment-extensions/coding-standards/typescript/README.md +45 -45
- package/augment-extensions/coding-standards/typescript/module.json +27 -27
- package/augment-extensions/coding-standards/typescript/rules/naming-conventions.md +225 -225
- package/augment-extensions/collections/html-css-js/README.md +82 -82
- package/augment-extensions/collections/html-css-js/collection.json +41 -41
- package/augment-extensions/domain-rules/api-design/README.md +41 -41
- package/augment-extensions/domain-rules/api-design/module.json +27 -27
- package/augment-extensions/domain-rules/api-design/rules/authentication.md +263 -263
- package/augment-extensions/domain-rules/api-design/rules/documentation.md +395 -395
- package/augment-extensions/domain-rules/api-design/rules/error-handling.md +290 -290
- package/augment-extensions/domain-rules/api-design/rules/graphql-api.md +313 -313
- package/augment-extensions/domain-rules/api-design/rules/rest-api.md +214 -214
- package/augment-extensions/domain-rules/api-design/rules/versioning.md +268 -268
- package/augment-extensions/domain-rules/database/README.md +161 -161
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -793
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -1132
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -868
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -805
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -621
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -965
- package/augment-extensions/domain-rules/database/module.json +28 -28
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -624
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -588
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -856
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -778
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -963
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -1076
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -697
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -671
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -607
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -907
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -783
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -980
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -485
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -521
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -858
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -934
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -27
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -26
- package/augment-extensions/domain-rules/mcp/README.md +150 -150
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -522
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -520
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -570
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -427
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -435
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -502
- package/augment-extensions/domain-rules/mcp/module.json +49 -49
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -595
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -345
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -687
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -636
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -484
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -360
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -393
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -194
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -625
- package/augment-extensions/domain-rules/security/README.md +41 -41
- package/augment-extensions/domain-rules/security/module.json +28 -28
- package/augment-extensions/domain-rules/security/rules/authentication-security.md +361 -361
- package/augment-extensions/domain-rules/security/rules/encryption.md +208 -208
- package/augment-extensions/domain-rules/security/rules/input-validation.md +294 -294
- package/augment-extensions/domain-rules/security/rules/owasp-top-10.md +339 -339
- package/augment-extensions/domain-rules/security/rules/secure-coding.md +293 -293
- package/augment-extensions/domain-rules/security/rules/web-security.md +268 -268
- package/augment-extensions/domain-rules/seo-sales-marketing/ANNOUNCEMENT.md +143 -0
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/README.md +140 -136
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/SCHEMA-VALIDATION-REPORT.md +216 -216
- package/augment-extensions/domain-rules/seo-sales-marketing/TEST-VALIDATION.md +129 -0
- package/augment-extensions/domain-rules/seo-sales-marketing/USAGE-GUIDES.md +254 -0
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/brand-kit-example.yaml +292 -292
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/campaign-brief-example.yaml +389 -389
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/content-calendar-example.yaml +643 -643
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/email-newsletter-example.md +376 -376
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/landing-page-example.md +934 -934
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/ppc-ad-copy-example.md +301 -301
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/seo-blog-post-example.md +347 -347
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/social-media-campaign-example.md +606 -606
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/module.json +50 -50
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/affiliate-influencer-marketing.md +593 -593
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/asset-management.md +418 -418
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/brand-consistency.md +210 -210
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/content-marketing.md +337 -337
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/conversion-optimization.md +455 -455
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/direct-sales.md +499 -499
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/email-marketing.md +439 -439
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/legal-compliance.md +227 -227
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/ppc-advertising.md +569 -569
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/seo-optimization.md +470 -470
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/social-media-marketing.md +414 -414
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/universal-marketing.md +177 -177
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/asset-inventory.schema.json +247 -247
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/brand-kit.schema.json +326 -326
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/campaign-brief.schema.json +342 -342
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/color-palette.schema.json +223 -223
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/content-template.schema.json +383 -383
- package/augment-extensions/domain-rules/wordpress/README.md +163 -163
- package/augment-extensions/domain-rules/wordpress/module.json +32 -32
- package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -617
- package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -270
- package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -423
- package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -493
- package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -568
- package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -510
- package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -251
- package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -501
- package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -564
- package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -388
- package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -441
- package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -139
- package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -1599
- package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -1727
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -428
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -422
- package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -1623
- package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -1343
- package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -734
- package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -1350
- package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -503
- package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -971
- package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -53
- package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -770
- package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -874
- package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -629
- package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -559
- package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -709
- package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -736
- package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -1057
- package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -463
- package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -478
- package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -818
- package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -416
- package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -667
- package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -878
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -693
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -352
- package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -818
- package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -624
- package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -866
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -1165
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -414
- package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -751
- package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -949
- package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -458
- package/augment-extensions/examples/design-patterns/README.md +37 -37
- package/augment-extensions/examples/design-patterns/examples/behavioral-patterns.md +370 -370
- package/augment-extensions/examples/design-patterns/examples/creational-patterns.md +250 -250
- package/augment-extensions/examples/design-patterns/examples/structural-patterns.md +264 -264
- package/augment-extensions/examples/design-patterns/module.json +27 -27
- package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -101
- package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -428
- package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -40
- package/augment-extensions/examples/rest-api-plugin/README.md +98 -98
- package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -1299
- package/augment-extensions/examples/rest-api-plugin/module.json +40 -40
- package/augment-extensions/examples/woocommerce-extension/README.md +98 -98
- package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -763
- package/augment-extensions/examples/woocommerce-extension/module.json +40 -40
- package/augment-extensions/workflows/beads/README.md +135 -135
- package/augment-extensions/workflows/beads/examples/complete-workflow-example.md +278 -278
- package/augment-extensions/workflows/beads/module.json +55 -55
- package/augment-extensions/workflows/beads/rules/best-practices.md +398 -398
- package/augment-extensions/workflows/beads/rules/file-format.md +327 -327
- package/augment-extensions/workflows/beads/rules/manual-setup.md +315 -315
- package/augment-extensions/workflows/beads/rules/workflow.md +326 -326
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -145
- package/augment-extensions/workflows/beads-integration/README.md +143 -143
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -32
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -140
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -293
- package/augment-extensions/workflows/beads-integration/module.json +75 -75
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -219
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -256
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -607
- package/augment-extensions/workflows/database/README.md +195 -195
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -295
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -498
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -496
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -444
- package/augment-extensions/workflows/database/module.json +42 -42
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -249
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -339
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -352
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -435
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -535
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -305
- package/augment-extensions/workflows/database/rules/workflow.md +458 -458
- package/augment-extensions/workflows/wordpress-plugin/README.md +232 -232
- package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -839
- package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -854
- package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -540
- package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -1083
- package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -669
- package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -597
- package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -925
- package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -752
- package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -773
- package/augment-extensions/workflows/wordpress-plugin/module.json +49 -49
- package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -942
- package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -702
- package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -728
- package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -775
- package/augment-extensions/writing-standards/screenplay/README.md +339 -300
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -121
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -153
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -243
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -213
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -164
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -95
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -116
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -151
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -67
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -142
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -184
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -204
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -181
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -70
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -399
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -407
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -401
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -409
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -268
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -294
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -294
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -289
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -294
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -293
- package/augment-extensions/writing-standards/screenplay/module.json +124 -124
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -339
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -329
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -169
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -437
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -263
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -261
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -315
- package/augment-extensions/writing-standards/screenplay/rules/file-organization.md +213 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -413
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -372
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -374
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -443
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -207
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -444
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -331
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -334
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -299
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -263
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -412
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -370
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -374
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -339
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -277
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -393
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -332
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -247
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -200
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -233
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -245
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -221
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -159
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -1449
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -64
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -520
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -497
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -492
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -509
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -490
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -501
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -498
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -508
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -500
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -158
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -643
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -311
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -562
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -538
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -432
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -637
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -66
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -458
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -490
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -458
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -459
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -491
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -491
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -490
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -464
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -461
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -489
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -494
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -483
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -489
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -496
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -463
- package/augment-extensions/writing-standards/screenplay/utils/__tests__/file-organization.test.ts +169 -0
- package/augment-extensions/writing-standards/screenplay/utils/file-organization.ts +165 -0
- package/cli/MODULES.md +302 -302
- package/cli/dist/cli.js +109 -22
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/gui.d.ts.map +1 -1
- package/cli/dist/commands/gui.js +54 -6
- package/cli/dist/commands/gui.js.map +1 -1
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +76 -23
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/self-remove.d.ts.map +1 -1
- package/cli/dist/commands/self-remove.js +48 -74
- package/cli/dist/commands/self-remove.js.map +1 -1
- package/cli/dist/commands/show.d.ts +11 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +120 -0
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/showCompleted.d.ts +21 -0
- package/cli/dist/commands/showCompleted.d.ts.map +1 -0
- package/cli/dist/commands/showCompleted.js +225 -0
- package/cli/dist/commands/showCompleted.js.map +1 -0
- package/cli/dist/commands/skill.js +88 -88
- package/cli/dist/commands/update.d.ts +2 -0
- package/cli/dist/commands/update.d.ts.map +1 -1
- package/cli/dist/commands/update.js +67 -1
- package/cli/dist/commands/update.js.map +1 -1
- package/cli/dist/utils/beadsCompletedChecker.d.ts +72 -0
- package/cli/dist/utils/beadsCompletedChecker.d.ts.map +1 -0
- package/cli/dist/utils/beadsCompletedChecker.js +198 -0
- package/cli/dist/utils/beadsCompletedChecker.js.map +1 -0
- package/cli/dist/utils/catalog-sync.js +13 -13
- package/cli/dist/utils/extractCommandHelp.d.ts +51 -0
- package/cli/dist/utils/extractCommandHelp.d.ts.map +1 -0
- package/cli/dist/utils/extractCommandHelp.js +250 -0
- package/cli/dist/utils/extractCommandHelp.js.map +1 -0
- package/cli/dist/utils/install-rules.js +55 -55
- package/cli/dist/utils/mcp-integration.js +44 -44
- package/cli/dist/utils/rule-install-hooks.js +8 -8
- package/modules.md +667 -630
- package/package.json +85 -85
|
@@ -1,293 +1,293 @@
|
|
|
1
|
-
# Secure Coding Practices
|
|
2
|
-
|
|
3
|
-
General secure coding practices for building secure applications.
|
|
4
|
-
|
|
5
|
-
## Principle of Least Privilege
|
|
6
|
-
|
|
7
|
-
Grant minimum necessary permissions.
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
// Bad - Overly permissive
|
|
11
|
-
const user = {
|
|
12
|
-
id: '123',
|
|
13
|
-
role: 'admin', // ❌ Everyone is admin
|
|
14
|
-
permissions: ['*'] // ❌ All permissions
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// Good - Specific permissions
|
|
18
|
-
const user = {
|
|
19
|
-
id: '123',
|
|
20
|
-
role: 'editor',
|
|
21
|
-
permissions: ['read:posts', 'write:posts', 'read:users']
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Good - Check specific permission
|
|
25
|
-
const hasPermission = (user: User, permission: string): boolean => {
|
|
26
|
-
return user.permissions.includes(permission);
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
if (!hasPermission(req.user, 'delete:posts')) {
|
|
30
|
-
return res.status(403).json({ error: 'Forbidden' });
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Defense in Depth
|
|
35
|
-
|
|
36
|
-
Implement multiple layers of security.
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
// Layer 1: Input validation
|
|
40
|
-
const schema = z.object({
|
|
41
|
-
email: z.string().email(),
|
|
42
|
-
content: z.string().max(1000)
|
|
43
|
-
});
|
|
44
|
-
const data = schema.parse(req.body);
|
|
45
|
-
|
|
46
|
-
// Layer 2: Authentication
|
|
47
|
-
if (!req.user) {
|
|
48
|
-
return res.status(401).json({ error: 'Unauthorized' });
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Layer 3: Authorization
|
|
52
|
-
if (req.user.id !== post.authorId && req.user.role !== 'admin') {
|
|
53
|
-
return res.status(403).json({ error: 'Forbidden' });
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Layer 4: Rate limiting
|
|
57
|
-
// Layer 5: Sanitization
|
|
58
|
-
const sanitized = DOMPurify.sanitize(data.content);
|
|
59
|
-
|
|
60
|
-
// Layer 6: Logging
|
|
61
|
-
logger.info('Post updated', { userId: req.user.id, postId: post.id });
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Secure Defaults
|
|
65
|
-
|
|
66
|
-
Use secure configurations by default.
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
// Good - Secure defaults
|
|
70
|
-
const config = {
|
|
71
|
-
https: true,
|
|
72
|
-
httpOnly: true,
|
|
73
|
-
sameSite: 'strict',
|
|
74
|
-
secure: true,
|
|
75
|
-
maxAge: 3600000,
|
|
76
|
-
...userConfig // Allow override if needed
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
// Bad - Insecure defaults
|
|
80
|
-
const config = {
|
|
81
|
-
https: false, // ❌
|
|
82
|
-
httpOnly: false, // ❌
|
|
83
|
-
...userConfig
|
|
84
|
-
};
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Fail Securely
|
|
88
|
-
|
|
89
|
-
Handle errors without exposing sensitive information.
|
|
90
|
-
|
|
91
|
-
```typescript
|
|
92
|
-
// Bad - Exposing internal details
|
|
93
|
-
try {
|
|
94
|
-
const user = await db.users.findOne(userId);
|
|
95
|
-
} catch (error) {
|
|
96
|
-
res.status(500).json({
|
|
97
|
-
error: error.message, // ❌ May expose DB details
|
|
98
|
-
stack: error.stack // ❌ Exposes code structure
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Good - Generic error message
|
|
103
|
-
try {
|
|
104
|
-
const user = await db.users.findOne(userId);
|
|
105
|
-
} catch (error) {
|
|
106
|
-
logger.error('Database error', { error, userId }); // Log internally
|
|
107
|
-
res.status(500).json({ error: 'Internal server error' }); // Generic message
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## Don't Trust Client Data
|
|
112
|
-
|
|
113
|
-
Always validate on server side.
|
|
114
|
-
|
|
115
|
-
```typescript
|
|
116
|
-
// Bad - Trusting client
|
|
117
|
-
app.post('/purchase', async (req, res) => {
|
|
118
|
-
const { productId, price } = req.body; // ❌ Client sends price
|
|
119
|
-
await processPayment(price);
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
// Good - Verify on server
|
|
123
|
-
app.post('/purchase', async (req, res) => {
|
|
124
|
-
const { productId } = req.body;
|
|
125
|
-
const product = await db.products.findOne(productId);
|
|
126
|
-
await processPayment(product.price); // ✅ Use server price
|
|
127
|
-
});
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Avoid Security by Obscurity
|
|
131
|
-
|
|
132
|
-
Don't rely on secrecy of implementation.
|
|
133
|
-
|
|
134
|
-
```typescript
|
|
135
|
-
// Bad - Security by obscurity
|
|
136
|
-
const isAdmin = (user) => {
|
|
137
|
-
return user.secretAdminFlag === 'xK9mP2qL'; // ❌ Weak
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
// Good - Proper authorization
|
|
141
|
-
const isAdmin = (user) => {
|
|
142
|
-
return user.role === 'admin' && user.verified === true;
|
|
143
|
-
};
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## Secure Error Messages
|
|
147
|
-
|
|
148
|
-
Don't leak information through error messages.
|
|
149
|
-
|
|
150
|
-
```typescript
|
|
151
|
-
// Bad - Information leakage
|
|
152
|
-
app.post('/login', async (req, res) => {
|
|
153
|
-
const user = await db.users.findOne({ email: req.body.email });
|
|
154
|
-
|
|
155
|
-
if (!user) {
|
|
156
|
-
return res.status(401).json({ error: 'Email not found' }); // ❌ Reveals email exists
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (!await bcrypt.compare(req.body.password, user.password)) {
|
|
160
|
-
return res.status(401).json({ error: 'Incorrect password' }); // ❌ Reveals email exists
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
// Good - Generic error message
|
|
165
|
-
app.post('/login', async (req, res) => {
|
|
166
|
-
const user = await db.users.findOne({ email: req.body.email });
|
|
167
|
-
|
|
168
|
-
if (!user || !await bcrypt.compare(req.body.password, user.password)) {
|
|
169
|
-
return res.status(401).json({ error: 'Invalid credentials' }); // ✅ Generic
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Secure Logging
|
|
175
|
-
|
|
176
|
-
Log security events without exposing sensitive data.
|
|
177
|
-
|
|
178
|
-
```typescript
|
|
179
|
-
// Bad - Logging sensitive data
|
|
180
|
-
logger.info('User login', {
|
|
181
|
-
email: user.email,
|
|
182
|
-
password: req.body.password, // ❌ Never log passwords
|
|
183
|
-
creditCard: user.creditCard // ❌ Never log PII
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
// Good - Log relevant info only
|
|
187
|
-
logger.info('User login', {
|
|
188
|
-
userId: user.id,
|
|
189
|
-
ip: req.ip,
|
|
190
|
-
userAgent: req.headers['user-agent'],
|
|
191
|
-
success: true
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
// Good - Mask sensitive data
|
|
195
|
-
const maskEmail = (email: string) => {
|
|
196
|
-
const [local, domain] = email.split('@');
|
|
197
|
-
return `${local.slice(0, 2)}***@${domain}`;
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
logger.info('Password reset requested', {
|
|
201
|
-
email: maskEmail(user.email),
|
|
202
|
-
ip: req.ip
|
|
203
|
-
});
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
## Dependency Security
|
|
207
|
-
|
|
208
|
-
Keep dependencies updated and secure.
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
# Check for vulnerabilities
|
|
212
|
-
npm audit
|
|
213
|
-
|
|
214
|
-
# Fix vulnerabilities
|
|
215
|
-
npm audit fix
|
|
216
|
-
|
|
217
|
-
# Update dependencies
|
|
218
|
-
npm update
|
|
219
|
-
|
|
220
|
-
# Use lock files
|
|
221
|
-
npm ci # In CI/CD
|
|
222
|
-
|
|
223
|
-
# Monitor dependencies
|
|
224
|
-
# Use Dependabot, Snyk, or similar
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
## Environment Variables
|
|
228
|
-
|
|
229
|
-
Store secrets in environment variables.
|
|
230
|
-
|
|
231
|
-
```typescript
|
|
232
|
-
// Bad - Hardcoded secrets
|
|
233
|
-
const dbPassword = 'mypassword123'; // ❌
|
|
234
|
-
const apiKey = 'sk_live_abc123'; // ❌
|
|
235
|
-
|
|
236
|
-
// Good - Environment variables
|
|
237
|
-
const dbPassword = process.env.DB_PASSWORD;
|
|
238
|
-
const apiKey = process.env.API_KEY;
|
|
239
|
-
|
|
240
|
-
// Good - Validate required env vars
|
|
241
|
-
const requiredEnvVars = ['DB_PASSWORD', 'API_KEY', 'JWT_SECRET'];
|
|
242
|
-
|
|
243
|
-
for (const envVar of requiredEnvVars) {
|
|
244
|
-
if (!process.env[envVar]) {
|
|
245
|
-
throw new Error(`Missing required environment variable: ${envVar}`);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// .env (never commit)
|
|
250
|
-
DB_PASSWORD=strong_password
|
|
251
|
-
API_KEY=sk_live_abc123
|
|
252
|
-
JWT_SECRET=random_secret
|
|
253
|
-
|
|
254
|
-
// .gitignore
|
|
255
|
-
.env
|
|
256
|
-
.env.local
|
|
257
|
-
.env.*.local
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
## Code Review
|
|
261
|
-
|
|
262
|
-
Implement security-focused code reviews.
|
|
263
|
-
|
|
264
|
-
```markdown
|
|
265
|
-
# Security Review Checklist
|
|
266
|
-
|
|
267
|
-
- [ ] Input validation on all user input
|
|
268
|
-
- [ ] Authentication required for protected endpoints
|
|
269
|
-
- [ ] Authorization checks for resource access
|
|
270
|
-
- [ ] Parameterized queries (no SQL injection)
|
|
271
|
-
- [ ] No hardcoded secrets
|
|
272
|
-
- [ ] Sensitive data encrypted
|
|
273
|
-
- [ ] Error messages don't leak information
|
|
274
|
-
- [ ] Rate limiting on sensitive endpoints
|
|
275
|
-
- [ ] HTTPS enforced
|
|
276
|
-
- [ ] Security headers set
|
|
277
|
-
- [ ] Dependencies up to date
|
|
278
|
-
- [ ] Logging doesn't expose sensitive data
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
## Best Practices
|
|
282
|
-
|
|
283
|
-
1. **Least privilege** - Minimum necessary permissions
|
|
284
|
-
2. **Defense in depth** - Multiple security layers
|
|
285
|
-
3. **Secure defaults** - Secure by default
|
|
286
|
-
4. **Fail securely** - Don't expose internals
|
|
287
|
-
5. **Validate server-side** - Never trust client
|
|
288
|
-
6. **Generic errors** - Don't leak information
|
|
289
|
-
7. **Secure logging** - Mask sensitive data
|
|
290
|
-
8. **Update dependencies** - Patch vulnerabilities
|
|
291
|
-
9. **Use env vars** - No hardcoded secrets
|
|
292
|
-
10. **Code review** - Security-focused reviews
|
|
293
|
-
|
|
1
|
+
# Secure Coding Practices
|
|
2
|
+
|
|
3
|
+
General secure coding practices for building secure applications.
|
|
4
|
+
|
|
5
|
+
## Principle of Least Privilege
|
|
6
|
+
|
|
7
|
+
Grant minimum necessary permissions.
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// Bad - Overly permissive
|
|
11
|
+
const user = {
|
|
12
|
+
id: '123',
|
|
13
|
+
role: 'admin', // ❌ Everyone is admin
|
|
14
|
+
permissions: ['*'] // ❌ All permissions
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// Good - Specific permissions
|
|
18
|
+
const user = {
|
|
19
|
+
id: '123',
|
|
20
|
+
role: 'editor',
|
|
21
|
+
permissions: ['read:posts', 'write:posts', 'read:users']
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// Good - Check specific permission
|
|
25
|
+
const hasPermission = (user: User, permission: string): boolean => {
|
|
26
|
+
return user.permissions.includes(permission);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
if (!hasPermission(req.user, 'delete:posts')) {
|
|
30
|
+
return res.status(403).json({ error: 'Forbidden' });
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Defense in Depth
|
|
35
|
+
|
|
36
|
+
Implement multiple layers of security.
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// Layer 1: Input validation
|
|
40
|
+
const schema = z.object({
|
|
41
|
+
email: z.string().email(),
|
|
42
|
+
content: z.string().max(1000)
|
|
43
|
+
});
|
|
44
|
+
const data = schema.parse(req.body);
|
|
45
|
+
|
|
46
|
+
// Layer 2: Authentication
|
|
47
|
+
if (!req.user) {
|
|
48
|
+
return res.status(401).json({ error: 'Unauthorized' });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Layer 3: Authorization
|
|
52
|
+
if (req.user.id !== post.authorId && req.user.role !== 'admin') {
|
|
53
|
+
return res.status(403).json({ error: 'Forbidden' });
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Layer 4: Rate limiting
|
|
57
|
+
// Layer 5: Sanitization
|
|
58
|
+
const sanitized = DOMPurify.sanitize(data.content);
|
|
59
|
+
|
|
60
|
+
// Layer 6: Logging
|
|
61
|
+
logger.info('Post updated', { userId: req.user.id, postId: post.id });
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Secure Defaults
|
|
65
|
+
|
|
66
|
+
Use secure configurations by default.
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// Good - Secure defaults
|
|
70
|
+
const config = {
|
|
71
|
+
https: true,
|
|
72
|
+
httpOnly: true,
|
|
73
|
+
sameSite: 'strict',
|
|
74
|
+
secure: true,
|
|
75
|
+
maxAge: 3600000,
|
|
76
|
+
...userConfig // Allow override if needed
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// Bad - Insecure defaults
|
|
80
|
+
const config = {
|
|
81
|
+
https: false, // ❌
|
|
82
|
+
httpOnly: false, // ❌
|
|
83
|
+
...userConfig
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Fail Securely
|
|
88
|
+
|
|
89
|
+
Handle errors without exposing sensitive information.
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// Bad - Exposing internal details
|
|
93
|
+
try {
|
|
94
|
+
const user = await db.users.findOne(userId);
|
|
95
|
+
} catch (error) {
|
|
96
|
+
res.status(500).json({
|
|
97
|
+
error: error.message, // ❌ May expose DB details
|
|
98
|
+
stack: error.stack // ❌ Exposes code structure
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Good - Generic error message
|
|
103
|
+
try {
|
|
104
|
+
const user = await db.users.findOne(userId);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
logger.error('Database error', { error, userId }); // Log internally
|
|
107
|
+
res.status(500).json({ error: 'Internal server error' }); // Generic message
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Don't Trust Client Data
|
|
112
|
+
|
|
113
|
+
Always validate on server side.
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// Bad - Trusting client
|
|
117
|
+
app.post('/purchase', async (req, res) => {
|
|
118
|
+
const { productId, price } = req.body; // ❌ Client sends price
|
|
119
|
+
await processPayment(price);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Good - Verify on server
|
|
123
|
+
app.post('/purchase', async (req, res) => {
|
|
124
|
+
const { productId } = req.body;
|
|
125
|
+
const product = await db.products.findOne(productId);
|
|
126
|
+
await processPayment(product.price); // ✅ Use server price
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Avoid Security by Obscurity
|
|
131
|
+
|
|
132
|
+
Don't rely on secrecy of implementation.
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Bad - Security by obscurity
|
|
136
|
+
const isAdmin = (user) => {
|
|
137
|
+
return user.secretAdminFlag === 'xK9mP2qL'; // ❌ Weak
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// Good - Proper authorization
|
|
141
|
+
const isAdmin = (user) => {
|
|
142
|
+
return user.role === 'admin' && user.verified === true;
|
|
143
|
+
};
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Secure Error Messages
|
|
147
|
+
|
|
148
|
+
Don't leak information through error messages.
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
// Bad - Information leakage
|
|
152
|
+
app.post('/login', async (req, res) => {
|
|
153
|
+
const user = await db.users.findOne({ email: req.body.email });
|
|
154
|
+
|
|
155
|
+
if (!user) {
|
|
156
|
+
return res.status(401).json({ error: 'Email not found' }); // ❌ Reveals email exists
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (!await bcrypt.compare(req.body.password, user.password)) {
|
|
160
|
+
return res.status(401).json({ error: 'Incorrect password' }); // ❌ Reveals email exists
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// Good - Generic error message
|
|
165
|
+
app.post('/login', async (req, res) => {
|
|
166
|
+
const user = await db.users.findOne({ email: req.body.email });
|
|
167
|
+
|
|
168
|
+
if (!user || !await bcrypt.compare(req.body.password, user.password)) {
|
|
169
|
+
return res.status(401).json({ error: 'Invalid credentials' }); // ✅ Generic
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Secure Logging
|
|
175
|
+
|
|
176
|
+
Log security events without exposing sensitive data.
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// Bad - Logging sensitive data
|
|
180
|
+
logger.info('User login', {
|
|
181
|
+
email: user.email,
|
|
182
|
+
password: req.body.password, // ❌ Never log passwords
|
|
183
|
+
creditCard: user.creditCard // ❌ Never log PII
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Good - Log relevant info only
|
|
187
|
+
logger.info('User login', {
|
|
188
|
+
userId: user.id,
|
|
189
|
+
ip: req.ip,
|
|
190
|
+
userAgent: req.headers['user-agent'],
|
|
191
|
+
success: true
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
// Good - Mask sensitive data
|
|
195
|
+
const maskEmail = (email: string) => {
|
|
196
|
+
const [local, domain] = email.split('@');
|
|
197
|
+
return `${local.slice(0, 2)}***@${domain}`;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
logger.info('Password reset requested', {
|
|
201
|
+
email: maskEmail(user.email),
|
|
202
|
+
ip: req.ip
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Dependency Security
|
|
207
|
+
|
|
208
|
+
Keep dependencies updated and secure.
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Check for vulnerabilities
|
|
212
|
+
npm audit
|
|
213
|
+
|
|
214
|
+
# Fix vulnerabilities
|
|
215
|
+
npm audit fix
|
|
216
|
+
|
|
217
|
+
# Update dependencies
|
|
218
|
+
npm update
|
|
219
|
+
|
|
220
|
+
# Use lock files
|
|
221
|
+
npm ci # In CI/CD
|
|
222
|
+
|
|
223
|
+
# Monitor dependencies
|
|
224
|
+
# Use Dependabot, Snyk, or similar
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Environment Variables
|
|
228
|
+
|
|
229
|
+
Store secrets in environment variables.
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
// Bad - Hardcoded secrets
|
|
233
|
+
const dbPassword = 'mypassword123'; // ❌
|
|
234
|
+
const apiKey = 'sk_live_abc123'; // ❌
|
|
235
|
+
|
|
236
|
+
// Good - Environment variables
|
|
237
|
+
const dbPassword = process.env.DB_PASSWORD;
|
|
238
|
+
const apiKey = process.env.API_KEY;
|
|
239
|
+
|
|
240
|
+
// Good - Validate required env vars
|
|
241
|
+
const requiredEnvVars = ['DB_PASSWORD', 'API_KEY', 'JWT_SECRET'];
|
|
242
|
+
|
|
243
|
+
for (const envVar of requiredEnvVars) {
|
|
244
|
+
if (!process.env[envVar]) {
|
|
245
|
+
throw new Error(`Missing required environment variable: ${envVar}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// .env (never commit)
|
|
250
|
+
DB_PASSWORD=strong_password
|
|
251
|
+
API_KEY=sk_live_abc123
|
|
252
|
+
JWT_SECRET=random_secret
|
|
253
|
+
|
|
254
|
+
// .gitignore
|
|
255
|
+
.env
|
|
256
|
+
.env.local
|
|
257
|
+
.env.*.local
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Code Review
|
|
261
|
+
|
|
262
|
+
Implement security-focused code reviews.
|
|
263
|
+
|
|
264
|
+
```markdown
|
|
265
|
+
# Security Review Checklist
|
|
266
|
+
|
|
267
|
+
- [ ] Input validation on all user input
|
|
268
|
+
- [ ] Authentication required for protected endpoints
|
|
269
|
+
- [ ] Authorization checks for resource access
|
|
270
|
+
- [ ] Parameterized queries (no SQL injection)
|
|
271
|
+
- [ ] No hardcoded secrets
|
|
272
|
+
- [ ] Sensitive data encrypted
|
|
273
|
+
- [ ] Error messages don't leak information
|
|
274
|
+
- [ ] Rate limiting on sensitive endpoints
|
|
275
|
+
- [ ] HTTPS enforced
|
|
276
|
+
- [ ] Security headers set
|
|
277
|
+
- [ ] Dependencies up to date
|
|
278
|
+
- [ ] Logging doesn't expose sensitive data
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Best Practices
|
|
282
|
+
|
|
283
|
+
1. **Least privilege** - Minimum necessary permissions
|
|
284
|
+
2. **Defense in depth** - Multiple security layers
|
|
285
|
+
3. **Secure defaults** - Secure by default
|
|
286
|
+
4. **Fail securely** - Don't expose internals
|
|
287
|
+
5. **Validate server-side** - Never trust client
|
|
288
|
+
6. **Generic errors** - Don't leak information
|
|
289
|
+
7. **Secure logging** - Mask sensitive data
|
|
290
|
+
8. **Update dependencies** - Patch vulnerabilities
|
|
291
|
+
9. **Use env vars** - No hardcoded secrets
|
|
292
|
+
10. **Code review** - Security-focused reviews
|
|
293
|
+
|