@mytechtoday/augment-extensions 0.1.2 → 0.4.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/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/domain-rules/wordpress/README.md +163 -0
- package/augment-extensions/domain-rules/wordpress/module.json +32 -0
- package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
- package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
- package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
- package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
- package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
- package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
- package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
- package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
- package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
- package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
- package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
- package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
- package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
- package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
- package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
- package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
- package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
- package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
- package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
- package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
- package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
- package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
- package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
- package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
- package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
- package/augment-extensions/writing-standards/screenplay/README.md +171 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +142 -9
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +42 -71
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +153 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +528 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +534 -70
- package/package.json +12 -3
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
# DOM Manipulation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This guide provides best practices for DOM queries, element manipulation, and event handling in vanilla JavaScript.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## DOM Queries
|
|
10
|
+
|
|
11
|
+
### Use querySelector and querySelectorAll
|
|
12
|
+
|
|
13
|
+
**RECOMMENDED**: Prefer `querySelector` and `querySelectorAll` over older methods:
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
// ✅ GOOD: Modern selectors
|
|
17
|
+
const header = document.querySelector('.header');
|
|
18
|
+
const buttons = document.querySelectorAll('.btn');
|
|
19
|
+
const firstItem = document.querySelector('#list > li:first-child');
|
|
20
|
+
|
|
21
|
+
// ❌ BAD: Legacy methods
|
|
22
|
+
const header = document.getElementById('header');
|
|
23
|
+
const buttons = document.getElementsByClassName('btn');
|
|
24
|
+
const items = document.getElementsByTagName('li');
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**REASON**: `querySelector` uses CSS selectors and returns static NodeLists.
|
|
28
|
+
|
|
29
|
+
### Cache DOM Queries
|
|
30
|
+
|
|
31
|
+
**RECOMMENDED**: Cache DOM queries when used multiple times:
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
// ✅ GOOD: Cache the query
|
|
35
|
+
const container = document.querySelector('.container');
|
|
36
|
+
container.classList.add('active');
|
|
37
|
+
container.setAttribute('data-loaded', 'true');
|
|
38
|
+
container.appendChild(newElement);
|
|
39
|
+
|
|
40
|
+
// ❌ BAD: Repeated queries
|
|
41
|
+
document.querySelector('.container').classList.add('active');
|
|
42
|
+
document.querySelector('.container').setAttribute('data-loaded', 'true');
|
|
43
|
+
document.querySelector('.container').appendChild(newElement);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Use Data Attributes for JavaScript Hooks
|
|
47
|
+
|
|
48
|
+
**RECOMMENDED**: Use `data-js-*` attributes for JavaScript selectors:
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<!-- HTML -->
|
|
52
|
+
<button class="btn btn-primary" data-js-submit>Submit</button>
|
|
53
|
+
<div class="modal" data-js-modal="user-settings"></div>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
// ✅ GOOD: Separation of concerns
|
|
58
|
+
const submitBtn = document.querySelector('[data-js-submit]');
|
|
59
|
+
const modal = document.querySelector('[data-js-modal="user-settings"]');
|
|
60
|
+
|
|
61
|
+
// ❌ BAD: Coupling with CSS classes
|
|
62
|
+
const submitBtn = document.querySelector('.btn-primary');
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**REASON**: Separates styling concerns from JavaScript behavior.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Element Manipulation
|
|
70
|
+
|
|
71
|
+
### Creating Elements
|
|
72
|
+
|
|
73
|
+
**RECOMMENDED**: Use `createElement` and set properties:
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
// ✅ GOOD: Create and configure
|
|
77
|
+
const button = document.createElement('button');
|
|
78
|
+
button.textContent = 'Click me';
|
|
79
|
+
button.className = 'btn btn-primary';
|
|
80
|
+
button.setAttribute('data-js-action', 'submit');
|
|
81
|
+
|
|
82
|
+
container.appendChild(button);
|
|
83
|
+
|
|
84
|
+
// ✅ ALSO GOOD: Template literals for complex HTML
|
|
85
|
+
const html = `
|
|
86
|
+
<div class="card">
|
|
87
|
+
<h2>${title}</h2>
|
|
88
|
+
<p>${description}</p>
|
|
89
|
+
</div>
|
|
90
|
+
`;
|
|
91
|
+
container.insertAdjacentHTML('beforeend', html);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Modifying Elements
|
|
95
|
+
|
|
96
|
+
**RECOMMENDED**: Use modern DOM APIs:
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
// ✅ GOOD: classList API
|
|
100
|
+
element.classList.add('active');
|
|
101
|
+
element.classList.remove('hidden');
|
|
102
|
+
element.classList.toggle('expanded');
|
|
103
|
+
element.classList.contains('active'); // Check
|
|
104
|
+
|
|
105
|
+
// ❌ BAD: className manipulation
|
|
106
|
+
element.className += ' active';
|
|
107
|
+
element.className = element.className.replace('hidden', '');
|
|
108
|
+
|
|
109
|
+
// ✅ GOOD: dataset API
|
|
110
|
+
element.dataset.userId = '123';
|
|
111
|
+
element.dataset.status = 'active';
|
|
112
|
+
console.log(element.dataset.userId); // '123'
|
|
113
|
+
|
|
114
|
+
// ❌ BAD: setAttribute for data attributes
|
|
115
|
+
element.setAttribute('data-user-id', '123');
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Removing Elements
|
|
119
|
+
|
|
120
|
+
**RECOMMENDED**: Use `remove()` method:
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
// ✅ GOOD: Modern removal
|
|
124
|
+
element.remove();
|
|
125
|
+
|
|
126
|
+
// ❌ BAD: Legacy removal
|
|
127
|
+
element.parentNode.removeChild(element);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Event Handling
|
|
133
|
+
|
|
134
|
+
### Use addEventListener
|
|
135
|
+
|
|
136
|
+
**REQUIRED**: Use `addEventListener` instead of inline handlers:
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
// ✅ GOOD: addEventListener
|
|
140
|
+
const button = document.querySelector('[data-js-submit]');
|
|
141
|
+
button.addEventListener('click', handleSubmit);
|
|
142
|
+
|
|
143
|
+
function handleSubmit(event) {
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
// Handle click
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// ❌ BAD: Inline handler
|
|
149
|
+
// <button onclick="handleSubmit()">Submit</button>
|
|
150
|
+
|
|
151
|
+
// ❌ BAD: Property assignment
|
|
152
|
+
button.onclick = handleSubmit;
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**REASON**: `addEventListener` allows multiple listeners and better control.
|
|
156
|
+
|
|
157
|
+
### Event Delegation
|
|
158
|
+
|
|
159
|
+
**RECOMMENDED**: Use event delegation for dynamic elements:
|
|
160
|
+
|
|
161
|
+
```javascript
|
|
162
|
+
// ✅ GOOD: Event delegation
|
|
163
|
+
const list = document.querySelector('.todo-list');
|
|
164
|
+
|
|
165
|
+
list.addEventListener('click', (event) => {
|
|
166
|
+
if (event.target.matches('[data-js-delete]')) {
|
|
167
|
+
const item = event.target.closest('.todo-item');
|
|
168
|
+
item.remove();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
// ❌ BAD: Individual listeners (memory leak for dynamic items)
|
|
173
|
+
const deleteButtons = document.querySelectorAll('[data-js-delete]');
|
|
174
|
+
deleteButtons.forEach(button => {
|
|
175
|
+
button.addEventListener('click', handleDelete);
|
|
176
|
+
});
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**REASON**: Event delegation works for dynamically added elements and uses less memory.
|
|
180
|
+
|
|
181
|
+
### Remove Event Listeners
|
|
182
|
+
|
|
183
|
+
**RECOMMENDED**: Remove event listeners when no longer needed:
|
|
184
|
+
|
|
185
|
+
```javascript
|
|
186
|
+
// ✅ GOOD: Cleanup
|
|
187
|
+
function setupModal() {
|
|
188
|
+
const closeBtn = document.querySelector('[data-js-close]');
|
|
189
|
+
|
|
190
|
+
function handleClose() {
|
|
191
|
+
modal.classList.remove('open');
|
|
192
|
+
closeBtn.removeEventListener('click', handleClose);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
closeBtn.addEventListener('click', handleClose);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ✅ GOOD: AbortController for cleanup
|
|
199
|
+
const controller = new AbortController();
|
|
200
|
+
|
|
201
|
+
button.addEventListener('click', handleClick, {
|
|
202
|
+
signal: controller.signal
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// Later: Remove all listeners
|
|
206
|
+
controller.abort();
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Passive Event Listeners
|
|
210
|
+
|
|
211
|
+
**RECOMMENDED**: Use passive listeners for scroll/touch events:
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
// ✅ GOOD: Passive listener (better performance)
|
|
215
|
+
document.addEventListener('scroll', handleScroll, { passive: true });
|
|
216
|
+
document.addEventListener('touchstart', handleTouch, { passive: true });
|
|
217
|
+
|
|
218
|
+
// ❌ BAD: Non-passive (can block scrolling)
|
|
219
|
+
document.addEventListener('scroll', handleScroll);
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**REASON**: Passive listeners improve scrolling performance by telling the browser you won't call `preventDefault()`.
|
|
223
|
+
|
|
224
|
+
### Event Object
|
|
225
|
+
|
|
226
|
+
**RECOMMENDED**: Use event object properties:
|
|
227
|
+
|
|
228
|
+
```javascript
|
|
229
|
+
// ✅ GOOD: Use event properties
|
|
230
|
+
button.addEventListener('click', (event) => {
|
|
231
|
+
event.preventDefault(); // Prevent default action
|
|
232
|
+
event.stopPropagation(); // Stop bubbling
|
|
233
|
+
|
|
234
|
+
const target = event.target; // Element that triggered event
|
|
235
|
+
const currentTarget = event.currentTarget; // Element with listener
|
|
236
|
+
|
|
237
|
+
console.log(event.type); // 'click'
|
|
238
|
+
console.log(event.key); // For keyboard events
|
|
239
|
+
});
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## DOM Traversal
|
|
245
|
+
|
|
246
|
+
### Modern Traversal Methods
|
|
247
|
+
|
|
248
|
+
**RECOMMENDED**: Use modern traversal methods:
|
|
249
|
+
|
|
250
|
+
```javascript
|
|
251
|
+
// ✅ GOOD: Modern methods
|
|
252
|
+
const parent = element.closest('.container');
|
|
253
|
+
const next = element.nextElementSibling;
|
|
254
|
+
const prev = element.previousElementSibling;
|
|
255
|
+
const children = element.children; // HTMLCollection
|
|
256
|
+
const firstChild = element.firstElementChild;
|
|
257
|
+
const lastChild = element.lastElementChild;
|
|
258
|
+
|
|
259
|
+
// ❌ BAD: Legacy methods (include text nodes)
|
|
260
|
+
const parent = element.parentNode;
|
|
261
|
+
const next = element.nextSibling;
|
|
262
|
+
const children = element.childNodes;
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Finding Elements
|
|
266
|
+
|
|
267
|
+
**RECOMMENDED**: Use `closest()` for ancestor lookup:
|
|
268
|
+
|
|
269
|
+
```javascript
|
|
270
|
+
// ✅ GOOD: Find ancestor
|
|
271
|
+
button.addEventListener('click', (event) => {
|
|
272
|
+
const card = event.target.closest('.card');
|
|
273
|
+
const cardId = card.dataset.id;
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
// ❌ BAD: Manual traversal
|
|
277
|
+
let card = event.target;
|
|
278
|
+
while (card && !card.classList.contains('card')) {
|
|
279
|
+
card = card.parentElement;
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Performance Best Practices
|
|
286
|
+
|
|
287
|
+
### Batch DOM Updates
|
|
288
|
+
|
|
289
|
+
**RECOMMENDED**: Batch DOM updates to minimize reflows:
|
|
290
|
+
|
|
291
|
+
```javascript
|
|
292
|
+
// ✅ GOOD: Batch updates
|
|
293
|
+
const fragment = document.createDocumentFragment();
|
|
294
|
+
|
|
295
|
+
items.forEach(item => {
|
|
296
|
+
const li = document.createElement('li');
|
|
297
|
+
li.textContent = item.name;
|
|
298
|
+
fragment.appendChild(li);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
list.appendChild(fragment); // Single reflow
|
|
302
|
+
|
|
303
|
+
// ❌ BAD: Multiple reflows
|
|
304
|
+
items.forEach(item => {
|
|
305
|
+
const li = document.createElement('li');
|
|
306
|
+
li.textContent = item.name;
|
|
307
|
+
list.appendChild(li); // Reflow on each append
|
|
308
|
+
});
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Read Then Write
|
|
312
|
+
|
|
313
|
+
**RECOMMENDED**: Batch reads and writes separately:
|
|
314
|
+
|
|
315
|
+
```javascript
|
|
316
|
+
// ✅ GOOD: Read all, then write all
|
|
317
|
+
const heights = elements.map(el => el.offsetHeight); // Read
|
|
318
|
+
elements.forEach((el, i) => {
|
|
319
|
+
el.style.height = `${heights[i] * 2}px`; // Write
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
// ❌ BAD: Interleaved reads and writes (causes layout thrashing)
|
|
323
|
+
elements.forEach(el => {
|
|
324
|
+
const height = el.offsetHeight; // Read (forces layout)
|
|
325
|
+
el.style.height = `${height * 2}px`; // Write
|
|
326
|
+
});
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Debounce Expensive Operations
|
|
330
|
+
|
|
331
|
+
**RECOMMENDED**: Debounce frequent events:
|
|
332
|
+
|
|
333
|
+
```javascript
|
|
334
|
+
// ✅ GOOD: Debounce resize/scroll
|
|
335
|
+
function debounce(func, wait) {
|
|
336
|
+
let timeout;
|
|
337
|
+
return function executedFunction(...args) {
|
|
338
|
+
clearTimeout(timeout);
|
|
339
|
+
timeout = setTimeout(() => func(...args), wait);
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const handleResize = debounce(() => {
|
|
344
|
+
// Expensive operation
|
|
345
|
+
recalculateLayout();
|
|
346
|
+
}, 250);
|
|
347
|
+
|
|
348
|
+
window.addEventListener('resize', handleResize);
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Common Patterns
|
|
354
|
+
|
|
355
|
+
### Toggle Visibility
|
|
356
|
+
|
|
357
|
+
```javascript
|
|
358
|
+
// ✅ GOOD: Toggle with class
|
|
359
|
+
element.classList.toggle('hidden');
|
|
360
|
+
|
|
361
|
+
// CSS
|
|
362
|
+
.hidden {
|
|
363
|
+
display: none;
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Show/Hide Elements
|
|
368
|
+
|
|
369
|
+
```javascript
|
|
370
|
+
// ✅ GOOD: Semantic classes
|
|
371
|
+
function showElement(element) {
|
|
372
|
+
element.classList.remove('hidden');
|
|
373
|
+
element.setAttribute('aria-hidden', 'false');
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
function hideElement(element) {
|
|
377
|
+
element.classList.add('hidden');
|
|
378
|
+
element.setAttribute('aria-hidden', 'true');
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### Form Handling
|
|
383
|
+
|
|
384
|
+
```javascript
|
|
385
|
+
// ✅ GOOD: Form submission
|
|
386
|
+
const form = document.querySelector('[data-js-form]');
|
|
387
|
+
|
|
388
|
+
form.addEventListener('submit', async (event) => {
|
|
389
|
+
event.preventDefault();
|
|
390
|
+
|
|
391
|
+
const formData = new FormData(form);
|
|
392
|
+
const data = Object.fromEntries(formData);
|
|
393
|
+
|
|
394
|
+
try {
|
|
395
|
+
await submitForm(data);
|
|
396
|
+
form.reset();
|
|
397
|
+
} catch (error) {
|
|
398
|
+
showError(error.message);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Dynamic Content Loading
|
|
404
|
+
|
|
405
|
+
```javascript
|
|
406
|
+
// ✅ GOOD: Load and insert content
|
|
407
|
+
async function loadContent(url, container) {
|
|
408
|
+
try {
|
|
409
|
+
const response = await fetch(url);
|
|
410
|
+
const html = await response.text();
|
|
411
|
+
|
|
412
|
+
container.innerHTML = html;
|
|
413
|
+
|
|
414
|
+
// Re-attach event listeners if needed
|
|
415
|
+
initializeEventListeners(container);
|
|
416
|
+
} catch (error) {
|
|
417
|
+
container.innerHTML = '<p>Error loading content</p>';
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Summary
|
|
425
|
+
|
|
426
|
+
**Key Principles**:
|
|
427
|
+
1. Use `querySelector`/`querySelectorAll` for DOM queries
|
|
428
|
+
2. Cache DOM queries when used multiple times
|
|
429
|
+
3. Use `data-js-*` attributes for JavaScript hooks
|
|
430
|
+
4. Use `addEventListener` (never inline handlers)
|
|
431
|
+
5. Use event delegation for dynamic elements
|
|
432
|
+
6. Remove event listeners when no longer needed
|
|
433
|
+
7. Use passive listeners for scroll/touch events
|
|
434
|
+
8. Batch DOM updates to minimize reflows
|
|
435
|
+
9. Use modern DOM APIs (`classList`, `dataset`, `closest`)
|
|
436
|
+
10. Debounce expensive operations
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|