@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,289 @@
|
|
|
1
|
+
# Bash Universal Standards
|
|
2
|
+
|
|
3
|
+
Cross-cutting standards that apply to ALL Bash code regardless of project category.
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
### 1. Readability First
|
|
8
|
+
- Code is read more often than written
|
|
9
|
+
- Optimize for maintainability over cleverness
|
|
10
|
+
- Use descriptive names over comments when possible
|
|
11
|
+
|
|
12
|
+
### 2. Fail Fast
|
|
13
|
+
- Exit immediately on errors
|
|
14
|
+
- Validate inputs early
|
|
15
|
+
- Check command availability before use
|
|
16
|
+
|
|
17
|
+
### 3. Explicit Over Implicit
|
|
18
|
+
- Quote all variables
|
|
19
|
+
- Use full command paths for critical operations
|
|
20
|
+
- Declare function parameters explicitly
|
|
21
|
+
|
|
22
|
+
## Script Header
|
|
23
|
+
|
|
24
|
+
### Shebang
|
|
25
|
+
|
|
26
|
+
**Portable** (recommended):
|
|
27
|
+
```bash
|
|
28
|
+
#!/usr/bin/env bash
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**System-specific** (when you need specific Bash location):
|
|
32
|
+
```bash
|
|
33
|
+
#!/bin/bash
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**NEVER use**:
|
|
37
|
+
```bash
|
|
38
|
+
#!/bin/sh # This is POSIX shell, not Bash
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Strict Mode
|
|
42
|
+
|
|
43
|
+
**ALWAYS** enable strict mode at the beginning of scripts:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
#!/usr/bin/env bash
|
|
47
|
+
set -euo pipefail
|
|
48
|
+
|
|
49
|
+
# -e: Exit on error
|
|
50
|
+
# -u: Exit on undefined variable
|
|
51
|
+
# -o pipefail: Exit on pipe failure
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Script Header Template
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
#!/usr/bin/env bash
|
|
58
|
+
set -euo pipefail
|
|
59
|
+
|
|
60
|
+
#######################################
|
|
61
|
+
# Brief description of what the script does
|
|
62
|
+
# Globals:
|
|
63
|
+
# GLOBAL_VAR
|
|
64
|
+
# Arguments:
|
|
65
|
+
# $1: Description of first argument
|
|
66
|
+
# $2: Description of second argument
|
|
67
|
+
# Outputs:
|
|
68
|
+
# Writes progress to stdout
|
|
69
|
+
# Returns:
|
|
70
|
+
# 0 on success, non-zero on error
|
|
71
|
+
#######################################
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Indentation and Formatting
|
|
75
|
+
|
|
76
|
+
### Indentation
|
|
77
|
+
- **2 spaces** (Google Style Guide) or **4 spaces** (common alternative)
|
|
78
|
+
- **NO TABS**
|
|
79
|
+
- Be consistent throughout the file
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# ✅ Correct (2 spaces)
|
|
83
|
+
if [[ "$status" == "active" ]]; then
|
|
84
|
+
echo "Processing..."
|
|
85
|
+
process_data "$file"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# ❌ Incorrect (mixed tabs and spaces)
|
|
89
|
+
if [[ "$status" == "active" ]]; then
|
|
90
|
+
echo "Processing..."
|
|
91
|
+
process_data "$file"
|
|
92
|
+
fi
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Line Length
|
|
96
|
+
- **Maximum 80 characters** (strict)
|
|
97
|
+
- **Maximum 100 characters** (relaxed)
|
|
98
|
+
- Break long lines with backslash `\`
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# ✅ Good
|
|
102
|
+
long_command \
|
|
103
|
+
--option1 value1 \
|
|
104
|
+
--option2 value2 \
|
|
105
|
+
--option3 value3
|
|
106
|
+
|
|
107
|
+
# ❌ Bad (too long)
|
|
108
|
+
long_command --option1 value1 --option2 value2 --option3 value3 --option4 value4 --option5 value5
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Quoting
|
|
112
|
+
|
|
113
|
+
### Always Quote Variables
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# ✅ Correct
|
|
117
|
+
echo "$user_name"
|
|
118
|
+
rm -f "$temp_file"
|
|
119
|
+
cd "$project_dir" || exit 1
|
|
120
|
+
|
|
121
|
+
# ❌ Incorrect (word splitting and globbing issues)
|
|
122
|
+
echo $user_name
|
|
123
|
+
rm -f $temp_file
|
|
124
|
+
cd $project_dir
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Quote Command Substitutions
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# ✅ Correct
|
|
131
|
+
current_date="$(date +%Y-%m-%d)"
|
|
132
|
+
file_count="$(find . -type f | wc -l)"
|
|
133
|
+
|
|
134
|
+
# ❌ Incorrect
|
|
135
|
+
current_date=$(date +%Y-%m-%d)
|
|
136
|
+
file_count=$(find . -type f | wc -l)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### When NOT to Quote
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Intentional word splitting
|
|
143
|
+
files=(*.txt) # Array assignment
|
|
144
|
+
for file in *.txt; do # Glob expansion
|
|
145
|
+
echo "$file"
|
|
146
|
+
done
|
|
147
|
+
|
|
148
|
+
# Arithmetic expansion
|
|
149
|
+
count=$((count + 1))
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Functions
|
|
153
|
+
|
|
154
|
+
### Function Declaration
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# ✅ Preferred (explicit function keyword)
|
|
158
|
+
function process_file() {
|
|
159
|
+
local file="$1"
|
|
160
|
+
# ...
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
# ✅ Also acceptable (POSIX style)
|
|
164
|
+
process_file() {
|
|
165
|
+
local file="$1"
|
|
166
|
+
# ...
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Local Variables
|
|
171
|
+
|
|
172
|
+
**ALWAYS** declare function variables as `local`:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
function calculate_sum() {
|
|
176
|
+
local num1="$1"
|
|
177
|
+
local num2="$2"
|
|
178
|
+
local result=$((num1 + num2))
|
|
179
|
+
echo "$result"
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Return Values
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Return status code (0-255)
|
|
187
|
+
function check_file() {
|
|
188
|
+
local file="$1"
|
|
189
|
+
if [[ -f "$file" ]]; then
|
|
190
|
+
return 0 # Success
|
|
191
|
+
else
|
|
192
|
+
return 1 # Failure
|
|
193
|
+
fi
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
# Return data via stdout
|
|
197
|
+
function get_timestamp() {
|
|
198
|
+
date +%Y-%m-%d_%H-%M-%S
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
# Capture return value
|
|
202
|
+
timestamp="$(get_timestamp)"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Error Handling
|
|
206
|
+
|
|
207
|
+
### Check Command Availability
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# ✅ Check before use
|
|
211
|
+
if ! command -v jq &> /dev/null; then
|
|
212
|
+
echo "Error: jq is required but not installed" >&2
|
|
213
|
+
exit 1
|
|
214
|
+
fi
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Check Command Success
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# ✅ Method 1: if statement
|
|
221
|
+
if ! mkdir -p "$output_dir"; then
|
|
222
|
+
echo "Error: Failed to create directory" >&2
|
|
223
|
+
exit 1
|
|
224
|
+
fi
|
|
225
|
+
|
|
226
|
+
# ✅ Method 2: || operator
|
|
227
|
+
mkdir -p "$output_dir" || {
|
|
228
|
+
echo "Error: Failed to create directory" >&2
|
|
229
|
+
exit 1
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
# ✅ Method 3: set -e with explicit check
|
|
233
|
+
cd "$project_dir" || exit 1
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Comments
|
|
237
|
+
|
|
238
|
+
### When to Comment
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# ✅ Good: Explain WHY, not WHAT
|
|
242
|
+
# Retry 3 times because API is flaky
|
|
243
|
+
for i in {1..3}; do
|
|
244
|
+
if curl -s "$api_url"; then
|
|
245
|
+
break
|
|
246
|
+
fi
|
|
247
|
+
sleep 2
|
|
248
|
+
done
|
|
249
|
+
|
|
250
|
+
# ❌ Bad: Obvious comment
|
|
251
|
+
# Loop from 1 to 3
|
|
252
|
+
for i in {1..3}; do
|
|
253
|
+
# ...
|
|
254
|
+
done
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Function Documentation
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
#######################################
|
|
261
|
+
# Downloads file from URL with retry logic
|
|
262
|
+
# Globals:
|
|
263
|
+
# MAX_RETRIES
|
|
264
|
+
# Arguments:
|
|
265
|
+
# $1: URL to download
|
|
266
|
+
# $2: Output file path
|
|
267
|
+
# Outputs:
|
|
268
|
+
# Progress messages to stdout
|
|
269
|
+
# Returns:
|
|
270
|
+
# 0 on success, 1 on failure
|
|
271
|
+
#######################################
|
|
272
|
+
function download_file() {
|
|
273
|
+
# ...
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Best Practices Summary
|
|
278
|
+
|
|
279
|
+
1. **Use strict mode**: `set -euo pipefail`
|
|
280
|
+
2. **Quote all variables**: `"$var"` not `$var`
|
|
281
|
+
3. **Use local variables**: `local var="value"`
|
|
282
|
+
4. **Check command availability**: `command -v cmd`
|
|
283
|
+
5. **Handle errors explicitly**: `|| exit 1`
|
|
284
|
+
6. **Use functions**: Modularize code
|
|
285
|
+
7. **Document functions**: Use comment headers
|
|
286
|
+
8. **Consistent indentation**: 2 or 4 spaces, no tabs
|
|
287
|
+
9. **Limit line length**: 80-100 characters
|
|
288
|
+
10. **Meaningful names**: `user_name` not `un`
|
|
289
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# CSS Standards
|
|
2
|
+
|
|
3
|
+
Comprehensive CSS coding standards for modern web development.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This module provides detailed guidelines for writing maintainable, performant, and modern CSS code.
|
|
8
|
+
|
|
9
|
+
## Key Benefits
|
|
10
|
+
|
|
11
|
+
- **Modern CSS**: CSS Grid, Flexbox, Custom Properties
|
|
12
|
+
- **Responsive Design**: Mobile-first approach
|
|
13
|
+
- **Preprocessors**: Sass and Less best practices
|
|
14
|
+
- **Performance**: Optimization techniques
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
augx link coding-standards/css
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Contents
|
|
23
|
+
|
|
24
|
+
### Rules
|
|
25
|
+
|
|
26
|
+
- `css-standards.md` - Core CSS coding standards
|
|
27
|
+
- `css-modern-features.md` - Modern CSS features and techniques
|
|
28
|
+
|
|
29
|
+
### Examples
|
|
30
|
+
|
|
31
|
+
- `css-examples.css` - Common CSS patterns
|
|
32
|
+
|
|
33
|
+
## Character Count
|
|
34
|
+
|
|
35
|
+
~17,375 characters
|
|
36
|
+
|
|
37
|
+
## Version
|
|
38
|
+
|
|
39
|
+
1.0.0
|
|
40
|
+
|