@mytechtoday/augment-extensions 0.2.0 → 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/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/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 +29 -99
- 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 +518 -106
- package/package.json +12 -3
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
# Tooling and Code Quality
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This guide provides recommendations for linting, formatting, and browser compatibility tools to maintain code quality in HTML, CSS, and JavaScript projects.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## JavaScript Linting
|
|
10
|
+
|
|
11
|
+
### ESLint
|
|
12
|
+
|
|
13
|
+
**RECOMMENDED**: Use ESLint for JavaScript linting:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Install ESLint
|
|
17
|
+
npm install --save-dev eslint
|
|
18
|
+
|
|
19
|
+
# Initialize configuration
|
|
20
|
+
npx eslint --init
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Configuration** (`.eslintrc.json`):
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"env": {
|
|
28
|
+
"browser": true,
|
|
29
|
+
"es2021": true
|
|
30
|
+
},
|
|
31
|
+
"extends": "eslint:recommended",
|
|
32
|
+
"parserOptions": {
|
|
33
|
+
"ecmaVersion": "latest",
|
|
34
|
+
"sourceType": "module"
|
|
35
|
+
},
|
|
36
|
+
"rules": {
|
|
37
|
+
"no-var": "error",
|
|
38
|
+
"prefer-const": "error",
|
|
39
|
+
"prefer-arrow-callback": "warn",
|
|
40
|
+
"no-console": "warn",
|
|
41
|
+
"eqeqeq": ["error", "always"],
|
|
42
|
+
"curly": ["error", "all"],
|
|
43
|
+
"no-unused-vars": ["error", { "argsIgnorePattern": "^_" }]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Usage**:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Lint files
|
|
52
|
+
npx eslint src/**/*.js
|
|
53
|
+
|
|
54
|
+
# Auto-fix issues
|
|
55
|
+
npx eslint src/**/*.js --fix
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Recommended ESLint Rules
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"rules": {
|
|
63
|
+
// Variables
|
|
64
|
+
"no-var": "error",
|
|
65
|
+
"prefer-const": "error",
|
|
66
|
+
"no-unused-vars": "error",
|
|
67
|
+
|
|
68
|
+
// Best Practices
|
|
69
|
+
"eqeqeq": ["error", "always"],
|
|
70
|
+
"no-eval": "error",
|
|
71
|
+
"no-implied-eval": "error",
|
|
72
|
+
"no-with": "error",
|
|
73
|
+
|
|
74
|
+
// ES6+
|
|
75
|
+
"prefer-arrow-callback": "warn",
|
|
76
|
+
"prefer-template": "warn",
|
|
77
|
+
"prefer-destructuring": "warn",
|
|
78
|
+
"object-shorthand": "warn",
|
|
79
|
+
|
|
80
|
+
// Style
|
|
81
|
+
"curly": ["error", "all"],
|
|
82
|
+
"brace-style": ["error", "1tbs"],
|
|
83
|
+
"comma-dangle": ["error", "never"],
|
|
84
|
+
"quotes": ["error", "single"],
|
|
85
|
+
"semi": ["error", "always"]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Code Formatting
|
|
93
|
+
|
|
94
|
+
### Prettier
|
|
95
|
+
|
|
96
|
+
**RECOMMENDED**: Use Prettier for consistent code formatting:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Install Prettier
|
|
100
|
+
npm install --save-dev prettier
|
|
101
|
+
|
|
102
|
+
# Create configuration
|
|
103
|
+
echo {} > .prettierrc.json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Configuration** (`.prettierrc.json`):
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"semi": true,
|
|
111
|
+
"singleQuote": true,
|
|
112
|
+
"tabWidth": 2,
|
|
113
|
+
"useTabs": false,
|
|
114
|
+
"trailingComma": "es5",
|
|
115
|
+
"printWidth": 80,
|
|
116
|
+
"arrowParens": "avoid",
|
|
117
|
+
"endOfLine": "lf"
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Usage**:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Format files
|
|
125
|
+
npx prettier --write "src/**/*.{js,css,html}"
|
|
126
|
+
|
|
127
|
+
# Check formatting
|
|
128
|
+
npx prettier --check "src/**/*.{js,css,html}"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Prettier + ESLint Integration
|
|
132
|
+
|
|
133
|
+
**RECOMMENDED**: Integrate Prettier with ESLint:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Install integration packages
|
|
137
|
+
npm install --save-dev eslint-config-prettier eslint-plugin-prettier
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**ESLint Configuration**:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"extends": [
|
|
145
|
+
"eslint:recommended",
|
|
146
|
+
"plugin:prettier/recommended"
|
|
147
|
+
],
|
|
148
|
+
"plugins": ["prettier"],
|
|
149
|
+
"rules": {
|
|
150
|
+
"prettier/prettier": "error"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## CSS Linting
|
|
158
|
+
|
|
159
|
+
### Stylelint
|
|
160
|
+
|
|
161
|
+
**RECOMMENDED**: Use Stylelint for CSS linting:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Install Stylelint
|
|
165
|
+
npm install --save-dev stylelint stylelint-config-standard
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Configuration** (`.stylelintrc.json`):
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"extends": "stylelint-config-standard",
|
|
173
|
+
"rules": {
|
|
174
|
+
"selector-class-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
|
|
175
|
+
"max-nesting-depth": 3,
|
|
176
|
+
"no-descending-specificity": true,
|
|
177
|
+
"declaration-no-important": true,
|
|
178
|
+
"color-hex-length": "short",
|
|
179
|
+
"color-named": "never",
|
|
180
|
+
"font-family-name-quotes": "always-where-recommended",
|
|
181
|
+
"function-url-quotes": "always",
|
|
182
|
+
"number-leading-zero": "always",
|
|
183
|
+
"unit-allowed-list": ["px", "em", "rem", "%", "vh", "vw", "s", "ms", "deg"]
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Usage**:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Lint CSS files
|
|
192
|
+
npx stylelint "src/**/*.css"
|
|
193
|
+
|
|
194
|
+
# Auto-fix issues
|
|
195
|
+
npx stylelint "src/**/*.css" --fix
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## HTML Validation
|
|
201
|
+
|
|
202
|
+
### HTMLHint
|
|
203
|
+
|
|
204
|
+
**RECOMMENDED**: Use HTMLHint for HTML validation:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# Install HTMLHint
|
|
208
|
+
npm install --save-dev htmlhint
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Configuration** (`.htmlhintrc`):
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"tagname-lowercase": true,
|
|
216
|
+
"attr-lowercase": true,
|
|
217
|
+
"attr-value-double-quotes": true,
|
|
218
|
+
"doctype-first": true,
|
|
219
|
+
"tag-pair": true,
|
|
220
|
+
"spec-char-escape": true,
|
|
221
|
+
"id-unique": true,
|
|
222
|
+
"src-not-empty": true,
|
|
223
|
+
"attr-no-duplication": true,
|
|
224
|
+
"title-require": true,
|
|
225
|
+
"alt-require": true,
|
|
226
|
+
"doctype-html5": true,
|
|
227
|
+
"id-class-value": "dash",
|
|
228
|
+
"style-disabled": true,
|
|
229
|
+
"inline-style-disabled": true,
|
|
230
|
+
"inline-script-disabled": true,
|
|
231
|
+
"space-tab-mixed-disabled": "space",
|
|
232
|
+
"attr-unsafe-chars": true
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Usage**:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# Validate HTML files
|
|
240
|
+
npx htmlhint "src/**/*.html"
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Browser Compatibility
|
|
246
|
+
|
|
247
|
+
### Feature Detection
|
|
248
|
+
|
|
249
|
+
**RECOMMENDED**: Use feature detection instead of browser detection:
|
|
250
|
+
|
|
251
|
+
```javascript
|
|
252
|
+
// ✅ GOOD: Feature detection
|
|
253
|
+
if ('IntersectionObserver' in window) {
|
|
254
|
+
const observer = new IntersectionObserver(callback);
|
|
255
|
+
observer.observe(element);
|
|
256
|
+
} else {
|
|
257
|
+
// Fallback or polyfill
|
|
258
|
+
loadPolyfill();
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Check for CSS support
|
|
262
|
+
if (CSS.supports('display', 'grid')) {
|
|
263
|
+
element.classList.add('grid-layout');
|
|
264
|
+
} else {
|
|
265
|
+
element.classList.add('flexbox-layout');
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// ❌ BAD: Browser detection
|
|
269
|
+
if (navigator.userAgent.includes('Chrome')) {
|
|
270
|
+
// Unreliable and fragile
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Polyfills
|
|
275
|
+
|
|
276
|
+
**RECOMMENDED**: Provide polyfills for unsupported features:
|
|
277
|
+
|
|
278
|
+
```javascript
|
|
279
|
+
// ✅ GOOD: Conditional polyfill loading
|
|
280
|
+
async function loadPolyfills() {
|
|
281
|
+
const polyfills = [];
|
|
282
|
+
|
|
283
|
+
if (!('fetch' in window)) {
|
|
284
|
+
polyfills.push(import('whatwg-fetch'));
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
if (!('Promise' in window)) {
|
|
288
|
+
polyfills.push(import('promise-polyfill'));
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (!('IntersectionObserver' in window)) {
|
|
292
|
+
polyfills.push(import('intersection-observer'));
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
await Promise.all(polyfills);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Load polyfills before app initialization
|
|
299
|
+
loadPolyfills().then(() => {
|
|
300
|
+
initializeApp();
|
|
301
|
+
});
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Popular Polyfill Services**:
|
|
305
|
+
- [Polyfill.io](https://polyfill.io/) - Automatic polyfills based on user agent
|
|
306
|
+
- [core-js](https://github.com/zloirock/core-js) - Comprehensive polyfills
|
|
307
|
+
|
|
308
|
+
### Graceful Degradation
|
|
309
|
+
|
|
310
|
+
**RECOMMENDED**: Implement graceful degradation:
|
|
311
|
+
|
|
312
|
+
```javascript
|
|
313
|
+
// ✅ GOOD: Graceful degradation
|
|
314
|
+
function setupLazyLoading() {
|
|
315
|
+
if ('IntersectionObserver' in window) {
|
|
316
|
+
// Modern approach
|
|
317
|
+
const observer = new IntersectionObserver((entries) => {
|
|
318
|
+
entries.forEach(entry => {
|
|
319
|
+
if (entry.isIntersecting) {
|
|
320
|
+
loadImage(entry.target);
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
images.forEach(img => observer.observe(img));
|
|
326
|
+
} else {
|
|
327
|
+
// Fallback: Load all images immediately
|
|
328
|
+
images.forEach(img => loadImage(img));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Progressive Enhancement
|
|
334
|
+
|
|
335
|
+
**RECOMMENDED**: Build with progressive enhancement:
|
|
336
|
+
|
|
337
|
+
```html
|
|
338
|
+
<!-- ✅ GOOD: Progressive enhancement -->
|
|
339
|
+
<!-- Base HTML works without JavaScript -->
|
|
340
|
+
<form action="/submit" method="post">
|
|
341
|
+
<input type="text" name="query" required>
|
|
342
|
+
<button type="submit">Search</button>
|
|
343
|
+
</form>
|
|
344
|
+
|
|
345
|
+
<script>
|
|
346
|
+
// Enhance with JavaScript
|
|
347
|
+
const form = document.querySelector('form');
|
|
348
|
+
form.addEventListener('submit', async (e) => {
|
|
349
|
+
e.preventDefault();
|
|
350
|
+
const formData = new FormData(form);
|
|
351
|
+
const results = await searchAPI(formData.get('query'));
|
|
352
|
+
displayResults(results);
|
|
353
|
+
});
|
|
354
|
+
</script>
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Autoprefixer
|
|
358
|
+
|
|
359
|
+
**RECOMMENDED**: Use Autoprefixer for vendor prefixes:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
# Install Autoprefixer
|
|
363
|
+
npm install --save-dev autoprefixer postcss postcss-cli
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**PostCSS Configuration** (`postcss.config.js`):
|
|
367
|
+
|
|
368
|
+
```javascript
|
|
369
|
+
module.exports = {
|
|
370
|
+
plugins: [
|
|
371
|
+
require('autoprefixer')({
|
|
372
|
+
overrideBrowserslist: [
|
|
373
|
+
'last 2 versions',
|
|
374
|
+
'> 1%',
|
|
375
|
+
'not dead'
|
|
376
|
+
]
|
|
377
|
+
})
|
|
378
|
+
]
|
|
379
|
+
};
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Usage**:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
# Process CSS with Autoprefixer
|
|
386
|
+
npx postcss src/styles.css -o dist/styles.css
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**Input**:
|
|
390
|
+
|
|
391
|
+
```css
|
|
392
|
+
.element {
|
|
393
|
+
display: flex;
|
|
394
|
+
user-select: none;
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**Output**:
|
|
399
|
+
|
|
400
|
+
```css
|
|
401
|
+
.element {
|
|
402
|
+
display: -webkit-box;
|
|
403
|
+
display: -ms-flexbox;
|
|
404
|
+
display: flex;
|
|
405
|
+
-webkit-user-select: none;
|
|
406
|
+
-moz-user-select: none;
|
|
407
|
+
-ms-user-select: none;
|
|
408
|
+
user-select: none;
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## Build Tools Integration
|
|
415
|
+
|
|
416
|
+
### Package.json Scripts
|
|
417
|
+
|
|
418
|
+
**RECOMMENDED**: Add scripts for common tasks:
|
|
419
|
+
|
|
420
|
+
```json
|
|
421
|
+
{
|
|
422
|
+
"scripts": {
|
|
423
|
+
"lint": "npm run lint:js && npm run lint:css && npm run lint:html",
|
|
424
|
+
"lint:js": "eslint 'src/**/*.js'",
|
|
425
|
+
"lint:css": "stylelint 'src/**/*.css'",
|
|
426
|
+
"lint:html": "htmlhint 'src/**/*.html'",
|
|
427
|
+
"format": "prettier --write 'src/**/*.{js,css,html}'",
|
|
428
|
+
"format:check": "prettier --check 'src/**/*.{js,css,html}'",
|
|
429
|
+
"fix": "npm run lint:js -- --fix && npm run lint:css -- --fix",
|
|
430
|
+
"validate": "npm run lint && npm run format:check"
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### Pre-commit Hooks
|
|
436
|
+
|
|
437
|
+
**RECOMMENDED**: Use Husky and lint-staged for pre-commit hooks:
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
# Install Husky and lint-staged
|
|
441
|
+
npm install --save-dev husky lint-staged
|
|
442
|
+
npx husky install
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
**Package.json Configuration**:
|
|
446
|
+
|
|
447
|
+
```json
|
|
448
|
+
{
|
|
449
|
+
"lint-staged": {
|
|
450
|
+
"*.js": [
|
|
451
|
+
"eslint --fix",
|
|
452
|
+
"prettier --write"
|
|
453
|
+
],
|
|
454
|
+
"*.css": [
|
|
455
|
+
"stylelint --fix",
|
|
456
|
+
"prettier --write"
|
|
457
|
+
],
|
|
458
|
+
"*.html": [
|
|
459
|
+
"htmlhint",
|
|
460
|
+
"prettier --write"
|
|
461
|
+
]
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
**Husky Hook** (`.husky/pre-commit`):
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
#!/bin/sh
|
|
470
|
+
. "$(dirname "$0")/_/husky.sh"
|
|
471
|
+
|
|
472
|
+
npx lint-staged
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
## Editor Integration
|
|
478
|
+
|
|
479
|
+
### VS Code
|
|
480
|
+
|
|
481
|
+
**RECOMMENDED**: Configure VS Code for automatic linting and formatting:
|
|
482
|
+
|
|
483
|
+
**Extensions**:
|
|
484
|
+
- ESLint
|
|
485
|
+
- Prettier - Code formatter
|
|
486
|
+
- Stylelint
|
|
487
|
+
- HTMLHint
|
|
488
|
+
|
|
489
|
+
**Settings** (`.vscode/settings.json`):
|
|
490
|
+
|
|
491
|
+
```json
|
|
492
|
+
{
|
|
493
|
+
"editor.formatOnSave": true,
|
|
494
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
495
|
+
"editor.codeActionsOnSave": {
|
|
496
|
+
"source.fixAll.eslint": true,
|
|
497
|
+
"source.fixAll.stylelint": true
|
|
498
|
+
},
|
|
499
|
+
"eslint.validate": [
|
|
500
|
+
"javascript",
|
|
501
|
+
"javascriptreact"
|
|
502
|
+
],
|
|
503
|
+
"stylelint.validate": [
|
|
504
|
+
"css",
|
|
505
|
+
"scss"
|
|
506
|
+
]
|
|
507
|
+
}
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## Summary
|
|
513
|
+
|
|
514
|
+
**Key Tools**:
|
|
515
|
+
|
|
516
|
+
1. **ESLint** - JavaScript linting
|
|
517
|
+
2. **Prettier** - Code formatting
|
|
518
|
+
3. **Stylelint** - CSS linting
|
|
519
|
+
4. **HTMLHint** - HTML validation
|
|
520
|
+
5. **Autoprefixer** - Vendor prefixes
|
|
521
|
+
6. **Husky + lint-staged** - Pre-commit hooks
|
|
522
|
+
|
|
523
|
+
**Best Practices**:
|
|
524
|
+
|
|
525
|
+
1. Use **feature detection** over browser detection
|
|
526
|
+
2. Provide **polyfills** for unsupported features
|
|
527
|
+
3. Implement **graceful degradation**
|
|
528
|
+
4. Build with **progressive enhancement**
|
|
529
|
+
5. Use **Autoprefixer** for vendor prefixes
|
|
530
|
+
6. Set up **pre-commit hooks** for code quality
|
|
531
|
+
7. Configure **editor integration** for automatic fixes
|
|
532
|
+
8. Run **validation** in CI/CD pipeline
|
|
533
|
+
|
|
534
|
+
**Workflow**:
|
|
535
|
+
|
|
536
|
+
1. Write code
|
|
537
|
+
2. Editor auto-formats on save (Prettier)
|
|
538
|
+
3. Editor shows linting errors (ESLint, Stylelint)
|
|
539
|
+
4. Pre-commit hook validates and fixes code
|
|
540
|
+
5. CI/CD runs full validation
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# JavaScript Standards
|
|
2
|
+
|
|
3
|
+
Comprehensive JavaScript coding standards for modern web development.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This module provides detailed guidelines for writing clean, efficient, and modern JavaScript code.
|
|
8
|
+
|
|
9
|
+
## Key Benefits
|
|
10
|
+
|
|
11
|
+
- **ES6+ Features**: Modern JavaScript syntax and features
|
|
12
|
+
- **Async Patterns**: Promises, async/await, and error handling
|
|
13
|
+
- **DOM Manipulation**: Best practices for DOM interaction
|
|
14
|
+
- **Performance**: Optimization and profiling techniques
|
|
15
|
+
- **Tooling**: Linting, bundling, and testing
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
augx link coding-standards/js
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Contents
|
|
24
|
+
|
|
25
|
+
### Rules
|
|
26
|
+
|
|
27
|
+
- `javascript-standards.md` - Core JavaScript coding standards
|
|
28
|
+
- `dom-manipulation.md` - DOM interaction best practices
|
|
29
|
+
- `async-patterns.md` - Asynchronous programming patterns
|
|
30
|
+
- `performance.md` - Performance optimization techniques
|
|
31
|
+
- `tooling.md` - Development tools and workflows
|
|
32
|
+
|
|
33
|
+
### Examples
|
|
34
|
+
|
|
35
|
+
- `javascript-examples.js` - Common JavaScript patterns
|
|
36
|
+
- `async-examples.js` - Async/await examples
|
|
37
|
+
- `dom-examples.js` - DOM manipulation examples
|
|
38
|
+
|
|
39
|
+
## Character Count
|
|
40
|
+
|
|
41
|
+
~52,373 characters
|
|
42
|
+
|
|
43
|
+
## Version
|
|
44
|
+
|
|
45
|
+
1.0.0
|
|
46
|
+
|