@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,196 @@
|
|
|
1
|
+
# Bash Coding Standards
|
|
2
|
+
|
|
3
|
+
Comprehensive Bash coding standards for professional, maintainable, and secure Bash scripts.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This module provides AI-driven guidance for writing high-quality Bash scripts across diverse project types. It includes universal best practices that apply to all Bash code, plus category-specific rules for automation, CI/CD, CLI tools, configuration, data processing, system administration, and cross-platform development.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
### With CLI (Future)
|
|
12
|
+
```bash
|
|
13
|
+
augx link coding-standards/bash
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Manual Setup
|
|
17
|
+
1. Copy this module to your project's `.augment/` folder
|
|
18
|
+
2. Create `.augment/bash-config.json` to configure categories
|
|
19
|
+
3. Reference rules in your project documentation
|
|
20
|
+
|
|
21
|
+
## Directory Structure
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
augment-extensions/coding-standards/bash/
|
|
25
|
+
├── module.json # Module metadata
|
|
26
|
+
├── README.md # This file
|
|
27
|
+
├── rules/
|
|
28
|
+
│ ├── universal-standards.md # Cross-cutting standards
|
|
29
|
+
│ ├── naming-conventions.md # Variables, functions, constants
|
|
30
|
+
│ ├── error-handling.md # set -euo pipefail, traps
|
|
31
|
+
│ ├── security-practices.md # Input sanitization, injection prevention
|
|
32
|
+
│ ├── performance-optimization.md # Subshells, loops, pipes
|
|
33
|
+
│ ├── testing-guidelines.md # Bats, shunit2 integration
|
|
34
|
+
│ ├── automation-scripts.md # Category: Automation
|
|
35
|
+
│ ├── cicd-pipelines.md # Category: CI/CD
|
|
36
|
+
│ ├── cli-tools.md # Category: Command-line tools
|
|
37
|
+
│ ├── configuration-files.md # Category: Configuration
|
|
38
|
+
│ ├── data-processing.md # Category: Data processing
|
|
39
|
+
│ ├── system-administration.md # Category: System administration
|
|
40
|
+
│ └── cross-platform.md # Category: Cross-platform
|
|
41
|
+
└── examples/
|
|
42
|
+
├── automation-example.sh
|
|
43
|
+
├── cicd-example.sh
|
|
44
|
+
├── cli-example.sh
|
|
45
|
+
├── config-example.sh
|
|
46
|
+
├── data-processing-example.sh
|
|
47
|
+
├── sysadmin-example.sh
|
|
48
|
+
└── cross-platform-example.sh
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Core Guidelines
|
|
52
|
+
|
|
53
|
+
### Universal Standards
|
|
54
|
+
- **Shebang**: `#!/usr/bin/env bash` (portable) or `#!/bin/bash` (system-specific)
|
|
55
|
+
- **Strict Mode**: `set -euo pipefail` (exit on error, undefined variables, pipe failures)
|
|
56
|
+
- **Quoting**: Always quote variables: `"$var"` not `$var`
|
|
57
|
+
- **Functions**: Modularize code into functions
|
|
58
|
+
- **Error Handling**: Use traps for cleanup, check exit codes
|
|
59
|
+
- **Logging**: Include timestamps and severity levels
|
|
60
|
+
|
|
61
|
+
### Naming Conventions
|
|
62
|
+
```bash
|
|
63
|
+
# Variables: lowercase with underscores
|
|
64
|
+
user_name="john"
|
|
65
|
+
file_path="/tmp/data.txt"
|
|
66
|
+
|
|
67
|
+
# Constants: UPPERCASE with underscores
|
|
68
|
+
readonly MAX_RETRIES=3
|
|
69
|
+
readonly API_URL="https://api.example.com"
|
|
70
|
+
|
|
71
|
+
# Functions: lowercase with underscores
|
|
72
|
+
function process_data() {
|
|
73
|
+
local input="$1"
|
|
74
|
+
# ...
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Error Handling
|
|
79
|
+
```bash
|
|
80
|
+
#!/usr/bin/env bash
|
|
81
|
+
set -euo pipefail
|
|
82
|
+
|
|
83
|
+
# Trap for cleanup
|
|
84
|
+
trap 'cleanup' EXIT ERR
|
|
85
|
+
|
|
86
|
+
function cleanup() {
|
|
87
|
+
rm -f "$temp_file"
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# Check command success
|
|
91
|
+
if ! command -v jq &> /dev/null; then
|
|
92
|
+
echo "Error: jq is required" >&2
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Security
|
|
98
|
+
```bash
|
|
99
|
+
# Input validation
|
|
100
|
+
if [[ ! "$user_input" =~ ^[a-zA-Z0-9_-]+$ ]]; then
|
|
101
|
+
echo "Error: Invalid input" >&2
|
|
102
|
+
exit 1
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# Avoid command injection
|
|
106
|
+
# ❌ Bad: eval "ls $user_input"
|
|
107
|
+
# ✅ Good: Use arrays and proper quoting
|
|
108
|
+
files=("$user_input"/*.txt)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Configuration
|
|
112
|
+
|
|
113
|
+
Create `.augment/bash-config.json`:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"bash_categories": ["automation", "cicd"],
|
|
118
|
+
"bash_version": "4.0",
|
|
119
|
+
"strict_mode": true,
|
|
120
|
+
"static_analysis": {
|
|
121
|
+
"tool": "shellcheck",
|
|
122
|
+
"severity": "warning"
|
|
123
|
+
},
|
|
124
|
+
"testing": {
|
|
125
|
+
"framework": "bats",
|
|
126
|
+
"version": "1.x"
|
|
127
|
+
},
|
|
128
|
+
"posix_compliance": false
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Categories
|
|
133
|
+
|
|
134
|
+
### Automation Scripts
|
|
135
|
+
- Idempotency patterns
|
|
136
|
+
- Dry-run mode
|
|
137
|
+
- Task scheduling integration
|
|
138
|
+
- Atomic operations
|
|
139
|
+
|
|
140
|
+
### CI/CD Pipelines
|
|
141
|
+
- Environment variable validation
|
|
142
|
+
- Secret management
|
|
143
|
+
- Debugging with `set -x`
|
|
144
|
+
- Rollback on failure
|
|
145
|
+
|
|
146
|
+
### CLI Tools
|
|
147
|
+
- Argument parsing with `getopts`
|
|
148
|
+
- Help output formatting
|
|
149
|
+
- Exit status management
|
|
150
|
+
- Input validation
|
|
151
|
+
|
|
152
|
+
### Configuration Files
|
|
153
|
+
- Sourcing mechanisms
|
|
154
|
+
- Conditional loading
|
|
155
|
+
- Alias and function definitions
|
|
156
|
+
- No side effects
|
|
157
|
+
|
|
158
|
+
### Data Processing
|
|
159
|
+
- Stream processing for large files
|
|
160
|
+
- awk, sed, grep patterns
|
|
161
|
+
- Special character escaping
|
|
162
|
+
- Memory-efficient operations
|
|
163
|
+
|
|
164
|
+
### System Administration
|
|
165
|
+
- Privilege checks
|
|
166
|
+
- User/group management
|
|
167
|
+
- Service control
|
|
168
|
+
- Logging and auditing
|
|
169
|
+
|
|
170
|
+
### Cross-Platform
|
|
171
|
+
- OS detection
|
|
172
|
+
- Portable command usage
|
|
173
|
+
- Path handling differences
|
|
174
|
+
- Fallback mechanisms
|
|
175
|
+
|
|
176
|
+
## Character Count
|
|
177
|
+
|
|
178
|
+
**Total**: ~TBD characters
|
|
179
|
+
|
|
180
|
+
## Contents
|
|
181
|
+
|
|
182
|
+
- 6 universal rule files
|
|
183
|
+
- 7 category-specific rule files
|
|
184
|
+
- 7 code examples
|
|
185
|
+
- Configuration schema
|
|
186
|
+
- shellcheck integration guide
|
|
187
|
+
- Bats testing framework guide
|
|
188
|
+
|
|
189
|
+
## References
|
|
190
|
+
|
|
191
|
+
- [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)
|
|
192
|
+
- [Bash Pitfalls](https://mywiki.wooledge.org/BashPitfalls)
|
|
193
|
+
- [OWASP Shell Injection Prevention](https://cheatsheetseries.owasp.org/cheatsheets/OS_Command_Injection_Defense_Cheat_Sheet.html)
|
|
194
|
+
- [shellcheck](https://www.shellcheck.net/)
|
|
195
|
+
- [Bats](https://github.com/bats-core/bats-core)
|
|
196
|
+
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bash-standards",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"displayName": "Bash Coding Standards",
|
|
5
|
+
"description": "Comprehensive Bash coding standards for professional, maintainable, and secure Bash scripts across automation, CI/CD, CLI tools, configuration, data processing, system administration, and cross-platform development.",
|
|
6
|
+
"type": "coding-standards",
|
|
7
|
+
"author": "Augment Extensions",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"bash",
|
|
11
|
+
"shell",
|
|
12
|
+
"coding-standards",
|
|
13
|
+
"automation",
|
|
14
|
+
"cicd",
|
|
15
|
+
"cli",
|
|
16
|
+
"shellcheck",
|
|
17
|
+
"bats",
|
|
18
|
+
"security",
|
|
19
|
+
"performance",
|
|
20
|
+
"cross-platform"
|
|
21
|
+
],
|
|
22
|
+
"augment": {
|
|
23
|
+
"characterCount": 0,
|
|
24
|
+
"priority": "high",
|
|
25
|
+
"category": "coding-standards",
|
|
26
|
+
"language": "bash",
|
|
27
|
+
"tags": ["bash", "shell-scripting", "automation", "devops"],
|
|
28
|
+
"categories": {
|
|
29
|
+
"automation": {
|
|
30
|
+
"description": "Automation scripts (backups, scheduled tasks)",
|
|
31
|
+
"rules": ["automation-scripts.md"],
|
|
32
|
+
"examples": ["automation-example.sh"]
|
|
33
|
+
},
|
|
34
|
+
"cicd": {
|
|
35
|
+
"description": "CI/CD pipeline scripts",
|
|
36
|
+
"rules": ["cicd-pipelines.md"],
|
|
37
|
+
"examples": ["cicd-example.sh"]
|
|
38
|
+
},
|
|
39
|
+
"cli": {
|
|
40
|
+
"description": "Command-line tools and utilities",
|
|
41
|
+
"rules": ["cli-tools.md"],
|
|
42
|
+
"examples": ["cli-example.sh"]
|
|
43
|
+
},
|
|
44
|
+
"config": {
|
|
45
|
+
"description": "Configuration files (.bashrc, .profile)",
|
|
46
|
+
"rules": ["configuration-files.md"],
|
|
47
|
+
"examples": ["config-example.sh"]
|
|
48
|
+
},
|
|
49
|
+
"data": {
|
|
50
|
+
"description": "Data processing scripts",
|
|
51
|
+
"rules": ["data-processing.md"],
|
|
52
|
+
"examples": ["data-processing-example.sh"]
|
|
53
|
+
},
|
|
54
|
+
"sysadmin": {
|
|
55
|
+
"description": "System administration tasks",
|
|
56
|
+
"rules": ["system-administration.md"],
|
|
57
|
+
"examples": ["sysadmin-example.sh"]
|
|
58
|
+
},
|
|
59
|
+
"crossplatform": {
|
|
60
|
+
"description": "Cross-platform scripts (macOS, Linux)",
|
|
61
|
+
"rules": ["cross-platform.md"],
|
|
62
|
+
"examples": ["cross-platform-example.sh"]
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"universalRules": [
|
|
66
|
+
"universal-standards.md",
|
|
67
|
+
"naming-conventions.md",
|
|
68
|
+
"error-handling.md",
|
|
69
|
+
"security-practices.md",
|
|
70
|
+
"performance-optimization.md",
|
|
71
|
+
"testing-guidelines.md"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"installation": {
|
|
75
|
+
"required": false,
|
|
76
|
+
"instructions": "This module is automatically loaded when working with Bash files. Configure categories in .augment/bash-config.json"
|
|
77
|
+
},
|
|
78
|
+
"configuration": {
|
|
79
|
+
"file": ".augment/bash-config.json",
|
|
80
|
+
"schema": {
|
|
81
|
+
"bash_categories": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"items": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"enum": ["automation", "cicd", "cli", "config", "data", "sysadmin", "crossplatform"]
|
|
86
|
+
},
|
|
87
|
+
"description": "Project categories to apply"
|
|
88
|
+
},
|
|
89
|
+
"bash_version": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"description": "Minimum Bash version",
|
|
92
|
+
"default": "4.0"
|
|
93
|
+
},
|
|
94
|
+
"strict_mode": {
|
|
95
|
+
"type": "boolean",
|
|
96
|
+
"description": "Enforce set -euo pipefail",
|
|
97
|
+
"default": true
|
|
98
|
+
},
|
|
99
|
+
"static_analysis": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"properties": {
|
|
102
|
+
"tool": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"enum": ["shellcheck"]
|
|
105
|
+
},
|
|
106
|
+
"severity": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"enum": ["error", "warning", "info", "style"]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"testing": {
|
|
113
|
+
"type": "object",
|
|
114
|
+
"properties": {
|
|
115
|
+
"framework": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"enum": ["bats", "shunit2"]
|
|
118
|
+
},
|
|
119
|
+
"version": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"default": "1.x"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"posix_compliance": {
|
|
126
|
+
"type": "boolean",
|
|
127
|
+
"description": "Enforce POSIX compliance",
|
|
128
|
+
"default": false
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"dependencies": {
|
|
133
|
+
"external": {
|
|
134
|
+
"shellcheck": ">=0.8.0",
|
|
135
|
+
"bats": ">=1.0.0"
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"contents": [
|
|
139
|
+
"module.json",
|
|
140
|
+
"README.md",
|
|
141
|
+
"rules/universal-standards.md",
|
|
142
|
+
"rules/naming-conventions.md",
|
|
143
|
+
"rules/error-handling.md",
|
|
144
|
+
"rules/security-practices.md",
|
|
145
|
+
"rules/performance-optimization.md",
|
|
146
|
+
"rules/testing-guidelines.md",
|
|
147
|
+
"rules/automation-scripts.md",
|
|
148
|
+
"rules/cicd-pipelines.md",
|
|
149
|
+
"rules/cli-tools.md",
|
|
150
|
+
"rules/configuration-files.md",
|
|
151
|
+
"rules/data-processing.md",
|
|
152
|
+
"rules/system-administration.md",
|
|
153
|
+
"rules/cross-platform.md",
|
|
154
|
+
"examples/automation-example.sh",
|
|
155
|
+
"examples/cicd-example.sh",
|
|
156
|
+
"examples/cli-example.sh",
|
|
157
|
+
"examples/config-example.sh",
|
|
158
|
+
"examples/data-processing-example.sh",
|
|
159
|
+
"examples/sysadmin-example.sh",
|
|
160
|
+
"examples/cross-platform-example.sh"
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
# Bash Naming Conventions
|
|
2
|
+
|
|
3
|
+
Comprehensive naming standards for Bash code following Google Shell Style Guide and industry best practices.
|
|
4
|
+
|
|
5
|
+
## Variables
|
|
6
|
+
|
|
7
|
+
### Standard Variables
|
|
8
|
+
|
|
9
|
+
**Use lowercase with underscores** (snake_case):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# ✅ Correct
|
|
13
|
+
user_name="john_doe"
|
|
14
|
+
file_path="/tmp/data.txt"
|
|
15
|
+
max_retry_count=3
|
|
16
|
+
is_enabled=true
|
|
17
|
+
|
|
18
|
+
# ❌ Incorrect
|
|
19
|
+
userName="john_doe" # camelCase
|
|
20
|
+
file-path="/tmp/data.txt" # kebab-case
|
|
21
|
+
MAXRETRYCOUNT=3 # ALL CAPS (reserved for constants)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Constants and Environment Variables
|
|
25
|
+
|
|
26
|
+
**Use UPPERCASE with underscores**:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Constants
|
|
30
|
+
readonly MAX_RETRIES=5
|
|
31
|
+
readonly DEFAULT_TIMEOUT=30
|
|
32
|
+
readonly API_BASE_URL="https://api.example.com"
|
|
33
|
+
|
|
34
|
+
# Environment variables
|
|
35
|
+
export PATH="/usr/local/bin:$PATH"
|
|
36
|
+
export DATABASE_URL="postgresql://localhost/mydb"
|
|
37
|
+
export LOG_LEVEL="INFO"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Boolean Variables
|
|
41
|
+
|
|
42
|
+
Prefix with `is_`, `has_`, `should_`, `can_`:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
is_valid=true
|
|
46
|
+
has_permission=false
|
|
47
|
+
should_continue=true
|
|
48
|
+
can_write=false
|
|
49
|
+
|
|
50
|
+
# Usage in conditionals
|
|
51
|
+
if [[ "$is_valid" == "true" ]]; then
|
|
52
|
+
echo "Valid"
|
|
53
|
+
fi
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Loop Variables
|
|
57
|
+
|
|
58
|
+
Use descriptive names, even for simple loops:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# ✅ Good
|
|
62
|
+
for file in *.txt; do
|
|
63
|
+
echo "$file"
|
|
64
|
+
done
|
|
65
|
+
|
|
66
|
+
for user in "${users[@]}"; do
|
|
67
|
+
echo "$user"
|
|
68
|
+
done
|
|
69
|
+
|
|
70
|
+
# ❌ Avoid single letters (except for very short loops)
|
|
71
|
+
for i in {1..10}; do # OK for numeric iteration
|
|
72
|
+
echo "$i"
|
|
73
|
+
done
|
|
74
|
+
|
|
75
|
+
for f in *.txt; do # Avoid - use 'file' instead
|
|
76
|
+
echo "$f"
|
|
77
|
+
done
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Temporary Variables
|
|
81
|
+
|
|
82
|
+
Prefix with `tmp_` or `temp_`:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
tmp_file="/tmp/data_$$.txt"
|
|
86
|
+
temp_dir="$(mktemp -d)"
|
|
87
|
+
tmp_result=""
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Functions
|
|
91
|
+
|
|
92
|
+
### Function Names
|
|
93
|
+
|
|
94
|
+
**Use lowercase with underscores** (snake_case):
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# ✅ Correct
|
|
98
|
+
function process_data() {
|
|
99
|
+
# ...
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function validate_input() {
|
|
103
|
+
# ...
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function get_user_info() {
|
|
107
|
+
# ...
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# ❌ Incorrect
|
|
111
|
+
function processData() { # camelCase
|
|
112
|
+
# ...
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function Process-Data() { # PascalCase
|
|
116
|
+
# ...
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Verb-Noun Pattern
|
|
121
|
+
|
|
122
|
+
Use descriptive verb-noun combinations:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# ✅ Good verbs
|
|
126
|
+
get_user_data()
|
|
127
|
+
set_configuration()
|
|
128
|
+
validate_email()
|
|
129
|
+
parse_json()
|
|
130
|
+
format_output()
|
|
131
|
+
check_permissions()
|
|
132
|
+
create_backup()
|
|
133
|
+
delete_temp_files()
|
|
134
|
+
update_database()
|
|
135
|
+
send_notification()
|
|
136
|
+
|
|
137
|
+
# ❌ Vague names
|
|
138
|
+
do_stuff()
|
|
139
|
+
handle()
|
|
140
|
+
process()
|
|
141
|
+
run()
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Private/Internal Functions
|
|
145
|
+
|
|
146
|
+
Prefix with underscore `_`:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Public function
|
|
150
|
+
function deploy_application() {
|
|
151
|
+
_validate_environment
|
|
152
|
+
_build_artifacts
|
|
153
|
+
_upload_to_server
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
# Private helper functions
|
|
157
|
+
function _validate_environment() {
|
|
158
|
+
# ...
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function _build_artifacts() {
|
|
162
|
+
# ...
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function _upload_to_server() {
|
|
166
|
+
# ...
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Arrays
|
|
171
|
+
|
|
172
|
+
### Array Names
|
|
173
|
+
|
|
174
|
+
Use plural nouns:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# ✅ Correct
|
|
178
|
+
files=()
|
|
179
|
+
users=("alice" "bob" "charlie")
|
|
180
|
+
error_messages=()
|
|
181
|
+
config_options=()
|
|
182
|
+
|
|
183
|
+
# ❌ Incorrect
|
|
184
|
+
file=() # Singular
|
|
185
|
+
user_list=("alice" "bob") # Redundant 'list'
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Associative Arrays
|
|
189
|
+
|
|
190
|
+
Use descriptive names with `_map` or `_dict` suffix (optional):
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
declare -A user_map
|
|
194
|
+
user_map["alice"]="admin"
|
|
195
|
+
user_map["bob"]="user"
|
|
196
|
+
|
|
197
|
+
declare -A config
|
|
198
|
+
config["host"]="localhost"
|
|
199
|
+
config["port"]="5432"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## File and Directory Names
|
|
203
|
+
|
|
204
|
+
### Script Files
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# ✅ Good
|
|
208
|
+
backup_database.sh
|
|
209
|
+
deploy_application.sh
|
|
210
|
+
process_logs.sh
|
|
211
|
+
validate_config.sh
|
|
212
|
+
|
|
213
|
+
# ❌ Avoid
|
|
214
|
+
BackupDatabase.sh # PascalCase
|
|
215
|
+
backup-database.sh # kebab-case (harder to source)
|
|
216
|
+
bkup_db.sh # Abbreviations
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Configuration Files
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# ✅ Good
|
|
223
|
+
.bashrc
|
|
224
|
+
.bash_profile
|
|
225
|
+
config.sh
|
|
226
|
+
settings.conf
|
|
227
|
+
|
|
228
|
+
# ❌ Avoid
|
|
229
|
+
Config.sh
|
|
230
|
+
SETTINGS.CONF
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Special Variables
|
|
234
|
+
|
|
235
|
+
### Positional Parameters
|
|
236
|
+
|
|
237
|
+
Document clearly:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
function process_file() {
|
|
241
|
+
local input_file="$1"
|
|
242
|
+
local output_file="$2"
|
|
243
|
+
local options="${3:-}" # Optional parameter with default
|
|
244
|
+
|
|
245
|
+
# Use descriptive names, not $1, $2, $3
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Special Shell Variables
|
|
250
|
+
|
|
251
|
+
Know and use appropriately:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Process ID
|
|
255
|
+
echo "$$"
|
|
256
|
+
|
|
257
|
+
# Last background process ID
|
|
258
|
+
echo "$!"
|
|
259
|
+
|
|
260
|
+
# Exit status of last command
|
|
261
|
+
echo "$?"
|
|
262
|
+
|
|
263
|
+
# Number of arguments
|
|
264
|
+
echo "$#"
|
|
265
|
+
|
|
266
|
+
# All arguments as separate words
|
|
267
|
+
echo "$@"
|
|
268
|
+
|
|
269
|
+
# All arguments as single word
|
|
270
|
+
echo "$*"
|
|
271
|
+
|
|
272
|
+
# Script name
|
|
273
|
+
echo "$0"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Naming Anti-Patterns
|
|
277
|
+
|
|
278
|
+
### Avoid
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# ❌ Single letter variables (except loop counters)
|
|
282
|
+
a="value"
|
|
283
|
+
x=10
|
|
284
|
+
|
|
285
|
+
# ❌ Abbreviations
|
|
286
|
+
usr_nm="john"
|
|
287
|
+
cfg_pth="/etc/config"
|
|
288
|
+
tmp_fl="/tmp/file"
|
|
289
|
+
|
|
290
|
+
# ❌ Hungarian notation
|
|
291
|
+
str_name="john"
|
|
292
|
+
int_count=5
|
|
293
|
+
bool_is_valid=true
|
|
294
|
+
|
|
295
|
+
# ❌ Redundant prefixes
|
|
296
|
+
var_user_name="john"
|
|
297
|
+
func_process_data() { }
|
|
298
|
+
|
|
299
|
+
# ❌ Inconsistent naming
|
|
300
|
+
userName="john"
|
|
301
|
+
file_path="/tmp"
|
|
302
|
+
MAX-RETRIES=3
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Use Instead
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# ✅ Descriptive names
|
|
309
|
+
user_name="john"
|
|
310
|
+
config_path="/etc/config"
|
|
311
|
+
temp_file="/tmp/file"
|
|
312
|
+
|
|
313
|
+
# ✅ Clear types from context
|
|
314
|
+
name="john"
|
|
315
|
+
count=5
|
|
316
|
+
is_valid=true
|
|
317
|
+
|
|
318
|
+
# ✅ Consistent style
|
|
319
|
+
user_name="john"
|
|
320
|
+
file_path="/tmp"
|
|
321
|
+
MAX_RETRIES=3
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Best Practices Summary
|
|
325
|
+
|
|
326
|
+
1. **Variables**: lowercase_with_underscores
|
|
327
|
+
2. **Constants**: UPPERCASE_WITH_UNDERSCORES
|
|
328
|
+
3. **Functions**: lowercase_with_underscores (verb_noun pattern)
|
|
329
|
+
4. **Arrays**: plural_nouns
|
|
330
|
+
5. **Booleans**: is_/has_/should_/can_ prefix
|
|
331
|
+
6. **Private functions**: _leading_underscore
|
|
332
|
+
7. **Temporary variables**: tmp_/temp_ prefix
|
|
333
|
+
8. **Be descriptive**: Avoid abbreviations
|
|
334
|
+
9. **Be consistent**: Same style throughout
|
|
335
|
+
10. **Document parameters**: Use local variables with clear names
|
|
336
|
+
|