flashforge-python-api 1.0.0__tar.gz → 1.0.2__tar.gz

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.
Files changed (87) hide show
  1. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/.claude/settings.local.json +3 -1
  2. flashforge_python_api-1.0.2/.claude/skills/readme-generator/SKILL.md +241 -0
  3. flashforge_python_api-1.0.2/.claude/skills/readme-generator/references/badge-patterns.md +277 -0
  4. flashforge_python_api-1.0.2/.claude/skills/readme-generator/references/section-templates.md +288 -0
  5. flashforge_python_api-1.0.2/.claude/skills/readme-generator/scripts/package.py +110 -0
  6. flashforge_python_api-1.0.2/.claude/skills/readme-generator/scripts/validate_readme.py +169 -0
  7. flashforge_python_api-1.0.2/.github/workflows/publish.yml +102 -0
  8. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/.gitignore +3 -0
  9. flashforge_python_api-1.0.2/CHANGELOG.md +67 -0
  10. flashforge_python_api-1.0.2/CLAUDE.md +291 -0
  11. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/LICENSE +21 -21
  12. flashforge_python_api-1.0.2/PKG-INFO +284 -0
  13. flashforge_python_api-1.0.2/README.md +235 -0
  14. flashforge_python_api-1.0.2/docs/README.md +200 -0
  15. flashforge_python_api-1.0.2/docs/advanced.md +93 -0
  16. flashforge_python_api-1.0.2/docs/api_reference.md +75 -0
  17. flashforge_python_api-1.0.2/docs/client.md +123 -0
  18. flashforge_python_api-1.0.2/docs/models.md +91 -0
  19. flashforge_python_api-1.0.2/docs/protocols.md +63 -0
  20. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/controls/files.py +19 -3
  21. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/controls/info.py +2 -2
  22. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/client.py +1 -0
  23. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/models/machine_info.py +2 -2
  24. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/pyproject.toml +1 -1
  25. flashforge_python_api-1.0.2/tests/fixtures/printer_responses.py +145 -0
  26. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/printer_config.py +22 -1
  27. flashforge_python_api-1.0.2/tests/test_5m_pro_live_integration.py +80 -0
  28. flashforge_python_api-1.0.2/tests/test_additional_parsers.py +87 -0
  29. flashforge_python_api-1.0.2/tests/test_client.py +182 -0
  30. flashforge_python_api-1.0.2/tests/test_control.py +128 -0
  31. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/test_discovery.py +116 -11
  32. flashforge_python_api-1.0.2/tests/test_files.py +217 -0
  33. flashforge_python_api-1.0.2/tests/test_info.py +102 -0
  34. flashforge_python_api-1.0.2/tests/test_job_control.py +199 -0
  35. flashforge_python_api-1.0.2/tests/test_tcp_client.py +156 -0
  36. flashforge_python_api-1.0.2/tests/test_temp_control.py +111 -0
  37. flashforge_python_api-1.0.0/CHANGELOG.md +0 -34
  38. flashforge_python_api-1.0.0/PKG-INFO +0 -123
  39. flashforge_python_api-1.0.0/README.md +0 -74
  40. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/.claude/commands/push.md +0 -0
  41. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/ai_specs/TEST_COVERAGE_SPEC.md +0 -0
  42. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/examples/complete_feature_demo.py +0 -0
  43. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/examples/discovery_example.py +0 -0
  44. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/examples/tcp_client_example.py +0 -0
  45. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/examples/unified_client_example.py +0 -0
  46. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/__init__.py +0 -0
  47. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/__init__.py +0 -0
  48. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/constants/__init__.py +0 -0
  49. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/constants/commands.py +0 -0
  50. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/constants/endpoints.py +0 -0
  51. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/controls/__init__.py +0 -0
  52. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/controls/control.py +0 -0
  53. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/controls/job_control.py +0 -0
  54. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/controls/temp_control.py +0 -0
  55. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/filament/__init__.py +0 -0
  56. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/filament/filament.py +0 -0
  57. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/misc/__init__.py +0 -0
  58. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/misc/scientific_notation.py +0 -0
  59. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/misc/temperature.py +0 -0
  60. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/network/__init__.py +0 -0
  61. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/network/fnet_code.py +0 -0
  62. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/api/network/utils.py +0 -0
  63. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/discovery/__init__.py +0 -0
  64. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/discovery/discovery.py +0 -0
  65. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/models/__init__.py +0 -0
  66. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/models/responses.py +0 -0
  67. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/__init__.py +0 -0
  68. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/ff_client.py +0 -0
  69. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/gcode/__init__.py +0 -0
  70. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/gcode/gcode_controller.py +0 -0
  71. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/gcode/gcodes.py +0 -0
  72. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/__init__.py +0 -0
  73. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/endstop_status.py +0 -0
  74. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/location_info.py +0 -0
  75. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/print_status.py +0 -0
  76. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/printer_info.py +0 -0
  77. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/temp_info.py +0 -0
  78. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/parsers/thumbnail_info.py +0 -0
  79. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/flashforge/tcp/tcp_client.py +0 -0
  80. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/__init__.py +0 -0
  81. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/conftest.py +0 -0
  82. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/run_tests.py +0 -0
  83. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/test_ad5x_job_control.py +0 -0
  84. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/test_ad5x_live_integration.py +0 -0
  85. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/test_ad5x_models.py +0 -0
  86. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/test_parsers.py +0 -0
  87. {flashforge_python_api-1.0.0 → flashforge_python_api-1.0.2}/tests/test_utility_classes.py +0 -0
@@ -6,7 +6,9 @@
6
6
  "Bash(python -c:*)",
7
7
  "Bash(python -m pytest:*)",
8
8
  "Bash(python:*)",
9
- "Bash(find:*)"
9
+ "Bash(find:*)",
10
+ "Skill(readme-generator)",
11
+ "Bash(git tag:*)"
10
12
  ],
11
13
  "deny": [],
12
14
  "ask": []
@@ -0,0 +1,241 @@
1
+ ---
2
+ name: readme-generator
3
+ description: Generate professionally formatted README.md files following a specific centered table-based structure. Use when creating or reformatting README files for GitHub repositories, particularly for Ghost's projects across 48hour-solutions, Automotive-9, LLMTooling, MCDxAI, Orbital-8, Parallel-7, and GhostTypes organizations. Triggers include "create a readme", "reformat this readme", "update the readme", or any request to document a repository.
4
+ ---
5
+
6
+ # README Generator
7
+
8
+ This skill generates README.md files following a specific centered, table-based structure with strict formatting rules.
9
+
10
+ ## Core Layout Structure
11
+
12
+ Every README follows this exact top section structure:
13
+
14
+ ```markdown
15
+ <div align="center">
16
+
17
+ # Project Title
18
+
19
+ ![Icon](icon-url-here)
20
+ _if icon available_
21
+
22
+ **One-line summary/tagline describing the project**
23
+
24
+ ![Badge1](shield-url) ![Badge2](shield-url) ![Badge3](shield-url)
25
+
26
+ **Bold statement highlighting the core value proposition**
27
+
28
+ </div>
29
+ ```
30
+
31
+ ## Strict Formatting Rules
32
+
33
+ ### NEVER USE
34
+ - ❌ Emojis (anywhere in the document)
35
+ - ❌ Standalone bulleted lists (bullets within table cells are OK)
36
+
37
+ ### ALWAYS USE
38
+ - ✓ Centered layout for all elements except standalone code blocks
39
+ - ✓ Tables for all feature lists, steps, workflows, and organized content
40
+ - ✓ Markdown formatting within table cells
41
+ - ✓ shields.io badges with appropriate colors matching the tech stack
42
+
43
+ ### Special Rules for Code Blocks
44
+
45
+ **CRITICAL**: Markdown code blocks CANNOT be placed inside `<div align="center">` tags as it breaks GitHub rendering.
46
+
47
+ - If a code block is needed outside a table → place it WITHOUT center tags
48
+ - All other elements → MUST be centered
49
+ - Code blocks within table cells → perfectly fine
50
+
51
+ ## Badge Generation
52
+
53
+ ### Always Use shields.io
54
+
55
+ Format: `https://img.shields.io/badge/{LABEL}-{MESSAGE}-{COLOR}?style=flat`
56
+
57
+ ### Color Selection Strategy
58
+
59
+ Match colors to the technology/library branding:
60
+ - **Status badges**: `purple` for preview/beta, `brightgreen` for stable, `yellow` for experimental
61
+ - **Minecraft**: `0ea5e9` (light blue)
62
+ - **Fabric Loader**: `f59e0b` (amber)
63
+ - **Java**: `orange` or `007396`
64
+ - **Python**: `3776ab` or `yellow`
65
+ - **TypeScript**: `3178c6`
66
+ - **Node.js**: `339933`
67
+ - **Vue**: `4fc08d`
68
+ - **React**: `61dafb`
69
+
70
+ ### Version Discovery Process
71
+
72
+ **REQUIRED**: Before generating badges, examine the codebase:
73
+
74
+ 1. **JavaScript/TypeScript projects**: Check `package.json` for dependencies
75
+ 2. **Java projects**: Check `build.gradle`, `build.gradle.kts`, `pom.xml`
76
+ 3. **Python projects**: Check `pyproject.toml`, `requirements.txt`, `setup.py`
77
+ 4. **Other languages**: Look for standard dependency files
78
+
79
+ **If you cannot find version information → ASK before generating the README**
80
+
81
+ Use actual version numbers when found, or "latest" as fallback only if user confirms.
82
+
83
+ ## Content Structure
84
+
85
+ All content sections use clean, centered tables with two columns:
86
+
87
+ ```markdown
88
+ <div align="center">
89
+
90
+ | Category/Label | Details/Description |
91
+ | --- | --- |
92
+ | **First Item** | Detailed information with **markdown** and `code` |
93
+ | **Second Item** | More details • Sub-bullets OK here • Another point |
94
+
95
+ </div>
96
+ ```
97
+
98
+ ### Standard Section Pattern
99
+
100
+ Follow this structure closely (based on meteor-client-webgui):
101
+
102
+ 1. **Feature Highlights** - Key capabilities in table format
103
+ 2. **Quick Start** - Installation and setup steps in table format
104
+ 3. **Development Workflow** - Commands and development info in table format
105
+
106
+ ### Table Design Guidelines
107
+
108
+ - **Left column**: Short, bold labels or categories (1-3 words)
109
+ - **Right column**: Detailed information with full markdown support
110
+ - **Within cells**: Use `•` for sub-points, `**bold**` for emphasis, `` `code` `` for commands
111
+ - **Multi-line content**: Perfectly fine within cells
112
+ - **Code blocks in cells**: Use triple backticks with language identifier
113
+
114
+ Example of rich table cell content:
115
+
116
+ ```markdown
117
+ | **Installation** | 1. Download the latest `.jar` from releases<br>2. Copy to `.minecraft/mods/`<br>3. Launch with Fabric profile |
118
+ ```
119
+
120
+ ## Codebase Analysis Process
121
+
122
+ ### When NO existing README exists
123
+
124
+ **REQUIRED**: Thoroughly analyze the codebase before writing:
125
+
126
+ 1. **Identify the project type** (library, application, tool, addon, etc.)
127
+ 2. **Find the tech stack** (languages, frameworks, dependencies)
128
+ 3. **Discover features** by examining:
129
+ - Main source files and their public APIs
130
+ - Configuration files and what they configure
131
+ - Build scripts and what they produce
132
+ - Documentation comments in code
133
+ - Example/test files showing usage
134
+ 4. **Extract version information** from dependency files
135
+ 5. **Identify setup requirements** (install steps, dependencies, system requirements)
136
+ 6. **Note any special considerations** (permissions, compatibility, known issues)
137
+
138
+ **Never guess or hallucinate features** - only document what's actually in the code.
139
+
140
+ ### When existing README exists
141
+
142
+ **Default behavior**: Reformat to the centered table structure while preserving factual content
143
+
144
+ Process:
145
+ 1. Extract all factual information (features, versions, installation steps, etc.)
146
+ 2. Strip out emojis completely
147
+ 3. Convert bulleted lists to centered tables
148
+ 4. Reorganize into the standard section structure
149
+ 5. Update badge formatting to shields.io style
150
+ 6. Ensure all elements are properly centered (except standalone code blocks)
151
+ 7. Keep the same level of technical detail
152
+
153
+ **Exception**: If user says "rewrite" or indicates content changes needed, then also revise the content itself.
154
+
155
+ ## Section Guidelines
156
+
157
+ ### Features/Highlights Section
158
+
159
+ Format as a table with specific feature areas:
160
+
161
+ ```markdown
162
+ <div align="center">
163
+
164
+ | Capability | Details |
165
+ | --- | --- |
166
+ | **Feature Name** | Clear description of what it does and why it matters |
167
+ | **Another Feature** | Technical details with code examples if needed |
168
+
169
+ </div>
170
+ ```
171
+
172
+ ### Quick Start Section
173
+
174
+ Format as a table with numbered steps or clear categories:
175
+
176
+ ```markdown
177
+ <div align="center">
178
+
179
+ | Step | Instructions |
180
+ | --- | --- |
181
+ | **1. Requirements** | List dependencies • version requirements • system requirements |
182
+ | **2. Installation** | Download, install, setup commands |
183
+ | **3. First Run** | How to verify it works |
184
+
185
+ </div>
186
+ ```
187
+
188
+ ### Development Workflow Section
189
+
190
+ Format as a table organizing by component or task:
191
+
192
+ ```markdown
193
+ <div align="center">
194
+
195
+ | Component | Commands / Actions |
196
+ | --- | --- |
197
+ | **Build** | `./gradlew build` – Compiles and packages |
198
+ | **Test** | `npm test` – Runs test suite |
199
+ | **Dev Server** | `npm run dev` – Hot reload on localhost:3000 |
200
+
201
+ </div>
202
+ ```
203
+
204
+ ## Tone and Style
205
+
206
+ - **Professional and technical**: Direct, clear, factual
207
+ - **No fluff**: Every sentence should provide value
208
+ - **Scannable**: Users should quickly find what they need
209
+ - **Complete but concise**: Include necessary details without verbosity
210
+
211
+ ## Contributing Section
212
+
213
+ **DO NOT INCLUDE** a Contributing section unless explicitly requested.
214
+
215
+ Ghost adds this manually when needed.
216
+
217
+ ## Example Reference
218
+
219
+ Reference implementation: https://github.com/MCDxAI/meteor-client-webgui/blob/main/README.md
220
+
221
+ Study this README closely for:
222
+ - Exact centering approach
223
+ - Table structure and formatting
224
+ - Badge selection and colors
225
+ - Section organization
226
+ - Markdown within tables
227
+ - Professional technical tone
228
+
229
+ ## Validation Checklist
230
+
231
+ Before presenting the README, verify:
232
+
233
+ - [ ] All elements centered (except standalone code blocks)
234
+ - [ ] Zero emojis anywhere
235
+ - [ ] No standalone bulleted lists
236
+ - [ ] All features/steps in table format
237
+ - [ ] Badges use shields.io with appropriate colors
238
+ - [ ] Version numbers are real (from codebase) or confirmed with user
239
+ - [ ] Code blocks outside tables are NOT in center tags
240
+ - [ ] Professional, technical tone maintained
241
+ - [ ] Contributing section NOT included
@@ -0,0 +1,277 @@
1
+ # Badge Patterns Reference
2
+
3
+ Common shields.io badge patterns organized by technology and use case.
4
+
5
+ ## Badge Format
6
+
7
+ ```
8
+ https://img.shields.io/badge/{LABEL}-{MESSAGE}-{COLOR}?style=flat
9
+ ```
10
+
11
+ **Encoding rules:**
12
+ - Spaces → `%20` or `-`
13
+ - Dashes in message → `--` (double dash)
14
+ - Underscores remain as `_`
15
+
16
+ ## Status Badges
17
+
18
+ ```markdown
19
+ ![Status](https://img.shields.io/badge/Status-Stable-brightgreen?style=flat)
20
+ ![Status](https://img.shields.io/badge/Status-Beta-yellow?style=flat)
21
+ ![Status](https://img.shields.io/badge/Status-Alpha-orange?style=flat)
22
+ ![Status](https://img.shields.io/badge/Status-Preview-purple?style=flat)
23
+ ![Status](https://img.shields.io/badge/Status-Experimental-red?style=flat)
24
+ ![Status](https://img.shields.io/badge/Status-Deprecated-lightgrey?style=flat)
25
+ ![Status](https://img.shields.io/badge/Status-Archived-inactive?style=flat)
26
+ ```
27
+
28
+ ## Minecraft Ecosystem
29
+
30
+ ### Minecraft Versions
31
+
32
+ ```markdown
33
+ ![Minecraft](https://img.shields.io/badge/Minecraft-1.21.10-0ea5e9?style=flat)
34
+ ![Minecraft](https://img.shields.io/badge/Minecraft-1.20.1-0ea5e9?style=flat)
35
+ ![Minecraft](https://img.shields.io/badge/Minecraft-1.19.4-0ea5e9?style=flat)
36
+ ```
37
+
38
+ ### Fabric
39
+
40
+ ```markdown
41
+ ![Fabric Loader](https://img.shields.io/badge/Fabric%20Loader-0.17.3+-f59e0b?style=flat)
42
+ ![Fabric API](https://img.shields.io/badge/Fabric%20API-0.100.0+-f59e0b?style=flat)
43
+ ```
44
+
45
+ ### Forge
46
+
47
+ ```markdown
48
+ ![Forge](https://img.shields.io/badge/Forge-47.0.0+-1976d2?style=flat)
49
+ ```
50
+
51
+ ### Minecraft Dependencies
52
+
53
+ ```markdown
54
+ ![Meteor Client](https://img.shields.io/badge/Meteor%20Client-1.21.10--32-ec4899?style=flat)
55
+ ![Sodium](https://img.shields.io/badge/Sodium-0.5.0+-6366f1?style=flat)
56
+ ![Iris](https://img.shields.io/badge/Iris-1.6.0+-5b21b6?style=flat)
57
+ ```
58
+
59
+ ## Programming Languages
60
+
61
+ ### Java
62
+
63
+ ```markdown
64
+ ![Java](https://img.shields.io/badge/Java-21-orange?style=flat)
65
+ ![Java](https://img.shields.io/badge/Java-17+-007396?style=flat)
66
+ ![Java](https://img.shields.io/badge/Java-11-orange?style=flat)
67
+ ```
68
+
69
+ ### JavaScript/TypeScript
70
+
71
+ ```markdown
72
+ ![Node.js](https://img.shields.io/badge/Node.js-18+-339933?style=flat)
73
+ ![Node.js](https://img.shields.io/badge/Node.js-20.0.0-339933?style=flat)
74
+ ![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178c6?style=flat)
75
+ ![JavaScript](https://img.shields.io/badge/JavaScript-ES2020-f7df1e?style=flat)
76
+ ```
77
+
78
+ ### Python
79
+
80
+ ```markdown
81
+ ![Python](https://img.shields.io/badge/Python-3.11+-3776ab?style=flat)
82
+ ![Python](https://img.shields.io/badge/Python-3.9%7C3.10%7C3.11-3776ab?style=flat)
83
+ ```
84
+
85
+ ### C/C++
86
+
87
+ ```markdown
88
+ ![C++](https://img.shields.io/badge/C++-17-00599c?style=flat)
89
+ ![C](https://img.shields.io/badge/C-99-a8b9cc?style=flat)
90
+ ```
91
+
92
+ ### Rust
93
+
94
+ ```markdown
95
+ ![Rust](https://img.shields.io/badge/Rust-1.70+-ce422b?style=flat)
96
+ ```
97
+
98
+ ### Go
99
+
100
+ ```markdown
101
+ ![Go](https://img.shields.io/badge/Go-1.21+-00add8?style=flat)
102
+ ```
103
+
104
+ ### C#
105
+
106
+ ```markdown
107
+ ![C#](https://img.shields.io/badge/C%23-12-239120?style=flat)
108
+ ![.NET](https://img.shields.io/badge/.NET-8.0-512bd4?style=flat)
109
+ ```
110
+
111
+ ## Frameworks & Libraries
112
+
113
+ ### Frontend Frameworks
114
+
115
+ ```markdown
116
+ ![React](https://img.shields.io/badge/React-18.0+-61dafb?style=flat)
117
+ ![Vue](https://img.shields.io/badge/Vue-3.0+-4fc08d?style=flat)
118
+ ![Angular](https://img.shields.io/badge/Angular-17+-dd0031?style=flat)
119
+ ![Svelte](https://img.shields.io/badge/Svelte-4.0+-ff3e00?style=flat)
120
+ ```
121
+
122
+ ### Build Tools
123
+
124
+ ```markdown
125
+ ![Vite](https://img.shields.io/badge/Vite-5.0+-646cff?style=flat)
126
+ ![Webpack](https://img.shields.io/badge/Webpack-5.0+-8dd6f9?style=flat)
127
+ ![Gradle](https://img.shields.io/badge/Gradle-8.0+-02303a?style=flat)
128
+ ![Maven](https://img.shields.io/badge/Maven-3.9+-c71a36?style=flat)
129
+ ```
130
+
131
+ ### Backend Frameworks
132
+
133
+ ```markdown
134
+ ![Express](https://img.shields.io/badge/Express-4.18+-000000?style=flat)
135
+ ![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-009688?style=flat)
136
+ ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.0+-6db33f?style=flat)
137
+ ```
138
+
139
+ ### Electron
140
+
141
+ ```markdown
142
+ ![Electron](https://img.shields.io/badge/Electron-28.0+-47848f?style=flat)
143
+ ```
144
+
145
+ ## Databases
146
+
147
+ ```markdown
148
+ ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-336791?style=flat)
149
+ ![MongoDB](https://img.shields.io/badge/MongoDB-7.0+-47a248?style=flat)
150
+ ![Redis](https://img.shields.io/badge/Redis-7.0+-dc382d?style=flat)
151
+ ![SQLite](https://img.shields.io/badge/SQLite-3.40+-003b57?style=flat)
152
+ ```
153
+
154
+ ## Platforms
155
+
156
+ ### Operating Systems
157
+
158
+ ```markdown
159
+ ![Windows](https://img.shields.io/badge/Windows-10+-0078d4?style=flat)
160
+ ![macOS](https://img.shields.io/badge/macOS-11+-000000?style=flat)
161
+ ![Linux](https://img.shields.io/badge/Linux-Ubuntu%2020.04+-dd4814?style=flat)
162
+ ```
163
+
164
+ ### Cloud Platforms
165
+
166
+ ```markdown
167
+ ![AWS](https://img.shields.io/badge/AWS-Lambda-ff9900?style=flat)
168
+ ![Google Cloud](https://img.shields.io/badge/Google%20Cloud-Run-4285f4?style=flat)
169
+ ![Azure](https://img.shields.io/badge/Azure-Functions-0078d4?style=flat)
170
+ ```
171
+
172
+ ## Testing
173
+
174
+ ```markdown
175
+ ![Jest](https://img.shields.io/badge/Jest-29.0+-c21325?style=flat)
176
+ ![Pytest](https://img.shields.io/badge/Pytest-7.0+-0a9edc?style=flat)
177
+ ![JUnit](https://img.shields.io/badge/JUnit-5-25a162?style=flat)
178
+ ![Vitest](https://img.shields.io/badge/Vitest-1.0+-6e9f18?style=flat)
179
+ ```
180
+
181
+ ## Licenses
182
+
183
+ ```markdown
184
+ ![License](https://img.shields.io/badge/License-MIT-blue?style=flat)
185
+ ![License](https://img.shields.io/badge/License-Apache%202.0-blue?style=flat)
186
+ ![License](https://img.shields.io/badge/License-GPL%203.0-blue?style=flat)
187
+ ![License](https://img.shields.io/badge/License-BSD%203--Clause-blue?style=flat)
188
+ ```
189
+
190
+ ## Custom Badges
191
+
192
+ ### Dependencies
193
+
194
+ ```markdown
195
+ ![Requires](https://img.shields.io/badge/Requires-ModName-color?style=flat)
196
+ ![Uses](https://img.shields.io/badge/Uses-LibraryName-color?style=flat)
197
+ ![Supports](https://img.shields.io/badge/Supports-PluginName-color?style=flat)
198
+ ```
199
+
200
+ ### Features
201
+
202
+ ```markdown
203
+ ![Real-time](https://img.shields.io/badge/Real--time-WebSocket-purple?style=flat)
204
+ ![Async](https://img.shields.io/badge/Async-Enabled-brightgreen?style=flat)
205
+ ![Type-Safe](https://img.shields.io/badge/Type--Safe-TypeScript-3178c6?style=flat)
206
+ ```
207
+
208
+ ### Compatibility
209
+
210
+ ```markdown
211
+ ![Cross-Platform](https://img.shields.io/badge/Cross--Platform-Win%7CMac%7CLinux-brightgreen?style=flat)
212
+ ![Browser](https://img.shields.io/badge/Browser-Chrome%7CFirefox%7CSafari-orange?style=flat)
213
+ ```
214
+
215
+ ## Version Badge Patterns
216
+
217
+ When extracting versions from dependency files:
218
+
219
+ ### package.json
220
+ ```json
221
+ {
222
+ "engines": {
223
+ "node": ">=18.0.0"
224
+ },
225
+ "dependencies": {
226
+ "react": "^18.2.0",
227
+ "typescript": "~5.0.4"
228
+ }
229
+ }
230
+ ```
231
+ → `![Node.js](https://img.shields.io/badge/Node.js-18+-339933?style=flat)`
232
+ → `![React](https://img.shields.io/badge/React-18.2+-61dafb?style=flat)`
233
+ → `![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178c6?style=flat)`
234
+
235
+ ### build.gradle.kts
236
+ ```kotlin
237
+ java {
238
+ toolchain {
239
+ languageVersion.set(JavaLanguageVersion.of(21))
240
+ }
241
+ }
242
+ ```
243
+ → `![Java](https://img.shields.io/badge/Java-21-orange?style=flat)`
244
+
245
+ ### pyproject.toml
246
+ ```toml
247
+ [project]
248
+ requires-python = ">=3.11"
249
+ ```
250
+ → `![Python](https://img.shields.io/badge/Python-3.11+-3776ab?style=flat)`
251
+
252
+ ## Color Palette Guide
253
+
254
+ | Color Name | Hex Code | Best For |
255
+ | --- | --- | --- |
256
+ | `brightgreen` | `#44cc11` | Stable status, passing tests |
257
+ | `green` | `#97ca00` | Success, enabled features |
258
+ | `yellowgreen` | `#a4a61d` | Active development |
259
+ | `yellow` | `#dfb317` | Beta, warnings, in progress |
260
+ | `orange` | `#fe7d37` | Alpha, Java |
261
+ | `red` | `#e05d44` | Experimental, critical |
262
+ | `blue` | `#007ec6` | Licenses, info |
263
+ | `lightgrey` | `#9f9f9f` | Deprecated, inactive |
264
+ | `purple` | `#9b59b6` | Preview, custom features |
265
+
266
+ ### Tech-Specific Colors
267
+
268
+ | Technology | Color Code | Badge Example |
269
+ | --- | --- | --- |
270
+ | Minecraft | `0ea5e9` | Light blue |
271
+ | Fabric | `f59e0b` | Amber/orange |
272
+ | Node.js | `339933` | Green |
273
+ | TypeScript | `3178c6` | Blue |
274
+ | Python | `3776ab` | Dark blue |
275
+ | React | `61dafb` | Cyan |
276
+ | Vue | `4fc08d` | Green |
277
+ | Java | `orange` or `007396` | Orange or blue |