@futdevpro/dynamo-eslint 1.15.25 → 1.20.2

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 (146) hide show
  1. package/.c8rc.json +26 -26
  2. package/.cursor/rules/__assistant_guide.mdc +30 -30
  3. package/.cursor/rules/__main.mdc +64 -64
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_debug.mdc +7 -7
  7. package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -372
  8. package/.cursor/rules/_ag_file-refactoring.mdc +113 -113
  9. package/.cursor/rules/_ag_fixes_rules.mdc +5 -5
  10. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  11. package/.cursor/rules/_ag_frontend.mdc +39 -39
  12. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  13. package/.cursor/rules/_ag_naming.mdc +115 -115
  14. package/.cursor/rules/_ag_running_commands.mdc +4 -4
  15. package/.cursor/rules/_ag_server-controller.mdc +5 -5
  16. package/.cursor/rules/_ag_should-be.mdc +6 -6
  17. package/.cursor/rules/_ag_swearing.mdc +47 -47
  18. package/.cursor/rules/ai_development_guide.md +60 -60
  19. package/.cursor/rules/ai_directives.md +114 -114
  20. package/.cursor/rules/cursor-rules.md +160 -160
  21. package/.cursor/rules/default-command.mdc +464 -464
  22. package/.cursor/rules/error_code_pattern.md +39 -39
  23. package/.cursor/rules/saved rule mcp server use.md +15 -15
  24. package/.dynamo/pipeline.cicd.config.json +184 -184
  25. package/.dynamo/version-bump.config.json +5 -5
  26. package/.eslintrc.json +4 -4
  27. package/.github/workflows/main.yml +436 -436
  28. package/.husky/pre-commit +2 -2
  29. package/.vscode/settings.json +11 -11
  30. package/README.md +312 -315
  31. package/__documentations/2026-04-18-ccap-review-integration.md +173 -173
  32. package/__documentations/2026-08-18-bfr-ctm-005-eslint9-validator-report.md +45 -0
  33. package/__documentations/2026-08-22-angular-20-phase2-release.md +79 -0
  34. package/build/configs/base.d.ts +1 -2
  35. package/build/configs/base.d.ts.map +1 -1
  36. package/build/configs/base.js +3 -4
  37. package/build/configs/base.js.map +1 -1
  38. package/build/configs/ngx.d.ts +1 -3
  39. package/build/configs/ngx.d.ts.map +1 -1
  40. package/build/configs/ngx.js +4 -7
  41. package/build/configs/ngx.js.map +1 -1
  42. package/build/plugin/index.d.ts +24 -24
  43. package/build/plugin/rules/no-getter-logic.js +1 -1
  44. package/build/plugin/rules/no-getter-logic.js.map +1 -1
  45. package/build/plugin/rules/prefer-enum-over-string-union.js +7 -7
  46. package/build/plugin/rules/prefer-enum-over-string-union.js.map +1 -1
  47. package/build/plugin/rules/prefer-interface-over-duplicate-types.js +2 -2
  48. package/build/plugin/rules/prefer-interface-over-duplicate-types.js.map +1 -1
  49. package/build/plugin/rules/require-jsdoc-description.js +7 -7
  50. package/build/plugin/rules/require-jsdoc-description.js.map +1 -1
  51. package/build/scripts/dynamo-fix.js +1 -1
  52. package/build/scripts/dynamo-fix.js.map +1 -1
  53. package/build/scripts/fix-return-types.d.ts.map +1 -1
  54. package/build/scripts/fix-return-types.js.map +1 -1
  55. package/build/scripts/validate-imports.js +51 -27
  56. package/build/scripts/validate-imports.js.map +1 -1
  57. package/build/scripts/validate-naming.js +49 -10
  58. package/build/scripts/validate-naming.js.map +1 -1
  59. package/eslint.config.js +15 -15
  60. package/package.json +27 -28
  61. package/pnpm-workspace.yaml +2 -0
  62. package/samples/.vscode/settings.json +13 -13
  63. package/samples/base/.eslintrc.json +6 -6
  64. package/samples/base/eslint.config.js +3 -3
  65. package/samples/fsm/.eslintrc.json +4 -4
  66. package/samples/fsm/eslint.config.js +3 -3
  67. package/samples/ngx/.eslintrc.json +6 -6
  68. package/samples/ngx/eslint.config.js +3 -3
  69. package/samples/ngx-package/.eslintrc.json +4 -4
  70. package/samples/ngx-package/eslint.config.js +3 -3
  71. package/samples/nts/.eslintrc.json +6 -6
  72. package/samples/nts/eslint.config.js +3 -3
  73. package/samples/nts-package/.eslintrc.json +4 -4
  74. package/samples/nts-package/eslint.config.js +3 -3
  75. package/samples/package.json.example +22 -26
  76. package/samples/poc-sample.ts +38 -38
  77. package/samples/poc-violations.ts +54 -54
  78. package/scripts/run-coverage-tests.js +24 -24
  79. package/spec/support/helpers/ts-node-helper.js +9 -9
  80. package/spec/support/jasmine.coverage.json +23 -23
  81. package/spec/support/jasmine.json +24 -24
  82. package/src/configs/angular20-compatibility.spec.ts +62 -0
  83. package/src/configs/base.ts +156 -157
  84. package/src/configs/fsm.ts +10 -10
  85. package/src/configs/ngx-package.ts +10 -10
  86. package/src/configs/ngx.ts +92 -95
  87. package/src/configs/nts-package.ts +20 -20
  88. package/src/configs/nts.ts +34 -34
  89. package/src/index.ts +4 -4
  90. package/src/plugin/index.ts +86 -86
  91. package/src/plugin/rules/angular/angular-for-track-logic.spec.ts +44 -44
  92. package/src/plugin/rules/angular/angular-for-track-logic.ts +88 -88
  93. package/src/plugin/rules/angular/effect-signal-loop.spec.ts +89 -89
  94. package/src/plugin/rules/angular/effect-signal-loop.ts +125 -125
  95. package/src/plugin/rules/angular/no-async-ngoninit.spec.ts +50 -50
  96. package/src/plugin/rules/angular/no-async-ngoninit.ts +43 -43
  97. package/src/plugin/rules/angular/no-component-direct-api.spec.ts +78 -78
  98. package/src/plugin/rules/angular/no-component-direct-api.ts +82 -82
  99. package/src/plugin/rules/angular/no-method-call-in-template.spec.ts +63 -63
  100. package/src/plugin/rules/angular/no-method-call-in-template.ts +89 -89
  101. package/src/plugin/rules/angular/no-ngfor-directive.spec.ts +44 -44
  102. package/src/plugin/rules/angular/no-ngfor-directive.ts +62 -62
  103. package/src/plugin/rules/angular/no-ngif-directive.spec.ts +44 -44
  104. package/src/plugin/rules/angular/no-ngif-directive.ts +62 -62
  105. package/src/plugin/rules/explicit-types.spec.ts +190 -190
  106. package/src/plugin/rules/explicit-types.ts +186 -186
  107. package/src/plugin/rules/import/import-order.spec.ts +219 -219
  108. package/src/plugin/rules/import/import-order.ts +197 -197
  109. package/src/plugin/rules/import/no-import-type.spec.ts +69 -69
  110. package/src/plugin/rules/import/no-import-type.ts +46 -46
  111. package/src/plugin/rules/import/no-js-import.spec.ts +82 -82
  112. package/src/plugin/rules/import/no-js-import.ts +45 -45
  113. package/src/plugin/rules/naming-patterns.spec.ts +189 -189
  114. package/src/plugin/rules/naming-patterns.ts +426 -426
  115. package/src/plugin/rules/no-getter-logic.spec.ts +591 -591
  116. package/src/plugin/rules/no-getter-logic.ts +220 -220
  117. package/src/plugin/rules/prefer-enum-over-string-union.spec.ts +583 -583
  118. package/src/plugin/rules/prefer-enum-over-string-union.ts +333 -334
  119. package/src/plugin/rules/prefer-interface-over-duplicate-types.spec.ts +404 -404
  120. package/src/plugin/rules/prefer-interface-over-duplicate-types.ts +314 -314
  121. package/src/plugin/rules/require-jsdoc-description.spec.ts +779 -779
  122. package/src/plugin/rules/require-jsdoc-description.ts +572 -572
  123. package/src/plugin/rules/require-test-description-prefix.spec.ts +459 -459
  124. package/src/plugin/rules/require-test-description-prefix.ts +154 -154
  125. package/src/plugin/rules/ts/data-model-extends.spec.ts +84 -84
  126. package/src/plugin/rules/ts/data-model-extends.ts +100 -100
  127. package/src/plugin/rules/ts/no-any-type.spec.ts +28 -28
  128. package/src/plugin/rules/ts/no-any-type.ts +36 -36
  129. package/src/plugin/rules/ts/no-as-cast.spec.ts +51 -51
  130. package/src/plugin/rules/ts/no-as-cast.ts +51 -51
  131. package/src/plugin/rules/ts/no-dynamic-imports.spec.ts +54 -54
  132. package/src/plugin/rules/ts/no-dynamic-imports.ts +49 -49
  133. package/src/plugin/rules/ts/no-native-browser-dialogs.spec.ts +54 -54
  134. package/src/plugin/rules/ts/no-native-browser-dialogs.ts +84 -84
  135. package/src/plugin/rules/ts/no-plain-function-export.spec.ts +72 -72
  136. package/src/plugin/rules/ts/no-plain-function-export.ts +73 -73
  137. package/src/plugin/rules/ts/one-export-per-file.spec.ts +64 -64
  138. package/src/plugin/rules/ts/one-export-per-file.ts +77 -77
  139. package/src/scripts/dynamo-fix.ts +172 -172
  140. package/src/scripts/eslintrc-audit.ts +116 -116
  141. package/src/scripts/fix-return-types.spec.ts +65 -65
  142. package/src/scripts/fix-return-types.ts +286 -285
  143. package/src/scripts/validate-imports.ts +288 -257
  144. package/src/scripts/validate-naming.ts +209 -183
  145. package/src/scripts/validator-cli.integration.spec.ts +99 -0
  146. package/tsconfig.json +31 -31
@@ -1,372 +1,372 @@
1
- ---
2
- description: When creating documentations
3
- alwaysApply: false
4
- ---
5
- # Documentation Writing Rules
6
-
7
- ## Core Rules
8
- 1. Documentation language:
9
- - For FDP documentations: write the documentation in Hungarian
10
- - In Hungarian documentation, use English words for technical terms and programming concepts to maintain clarity and consistency with code implementation
11
- - For Dynamo documentations: write the documentation in English
12
- 2. Focus on behavior, not implementation
13
- 3. Write from user's perspective
14
- - In FDP: the user is the webSite/webApp user
15
- - In Dynamo: the user is the developer
16
- 4. Keep language clear and simple
17
- - Use active voice
18
- - Avoid technical jargon unless necessary
19
- 5. Follow the template structure
20
- 6. Keep it short and informative
21
- 7. Documentation Validation Process:
22
- - Before adding new content to the documentation:
23
- 1. Locate the implementation file
24
- 2. Verify the new information matches the implementation
25
- 3. Add the verified information to documentation
26
- - Before removing content from the documentation:
27
- 1. Locate the implementation file
28
- 2. Confirm the information is no longer valid
29
- 3. Remove the outdated information from documentation
30
- 8. Don't add sections that is not reqiured, requested, or specially needed
31
- 9. **Always** read linked implementation files before
32
- 10. AI-Specific Considerations:
33
- - Use explicit file paths and references
34
- - Include clear context markers
35
- - Maintain consistent ID patterns
36
- - Document tool-specific requirements
37
- - Use proper markdown formatting for better AI parsing
38
- - Include clear section boundaries
39
- - Use explicit type annotations where possible
40
- 11. **Never** change paths
41
-
42
- ## Documentation IDs
43
- - All documentation IDs follow a hierarchical structure from system-level to feature-level documentation.
44
- - Never use in reference documentation or higher-level documentation
45
- - Only use at the exact detailed documentation and where the feature is implemented
46
- - Never change existing IDs, only highlight it if its incorrect
47
-
48
- ### System IDs
49
- - Used ONLY for system/project-level documentation
50
- - Format: [System]
51
- - System: Usually three-letter, code of the project/package
52
- - Must be unique at the system level
53
- - [Prefix] = [System]
54
- - Parent is:
55
- - For System: FDP or Dynamo
56
- - For Module: a System
57
- - For Section_Group: a Module
58
- - For Section: a Module
59
-
60
- ### Module IDs
61
- - Used ONLY for module-level documentation
62
- - Format: [System]-[Module]
63
- - System: Inherits from System ID
64
- - Module: Usually three-letter, code of the module
65
- - Must be unique at the module level
66
-
67
- ### Feature IDs
68
- - Used ONLY for low-level design documentation
69
- - But never on Sections or Section Groups
70
- - Format: [System]-[Module]-[SHORTCUT]
71
- - System: Inherits from System ID
72
- - Module: Inherits from Module ID
73
- - SHORTCUT: First letters of the function/class/ect extended to make it unique
74
- - Examples: DMS (DataManagementSystem), UIF (UserInterfaceFactory)
75
- - Must be unique at the feature level
76
-
77
- ### Section IDs
78
- - Used ONLY for sections
79
- - Format: [Section] OR [Section-Group]
80
- - Sections should never have ID other than [Section] OR [Section-Group]
81
- - Sections should always have the [Section] flag
82
- - Section Groups should always have the [Section-Group] flag
83
-
84
- ## Quick Checklist
85
- - [ ] Written in the required language (Hungarian for FDP, English for Dynamo) [REQUIRED]
86
- - [ ] Written from correct user perspective (end-user for FDP, developer for Dynamo) [REQUIRED]
87
- - [ ] Uses clear and simple language [REQUIRED]
88
- - [ ] Follows template structure [REQUIRED]
89
- - [ ] Has valid Documentation ID [REQUIRED]
90
- - [ ] Focuses on behavior, not implementation details [RECOMMENDED]
91
- - [ ] All content has been validated against implementation [REQUIRED]
92
- - [ ] Uses proper {File Main_Name} format (not filenames with extensions) [REQUIRED]
93
- - [ ] Table of contents uses proper component names, not filenames [REQUIRED]
94
- - [ ] Markdown links should work in ToC, dont miss "_"s and "pefix_"s
95
-
96
- ## Basic Template
97
- - If there is a specific Documentation Template for your type use that, otherwise use this:
98
- ```markdown
99
- #{Name of the Documentation} [{ID(optional)}]
100
- (Use System-ID [SYSTEM] for system-level documentation)
101
- (Use Module-ID [SYSTEM]-[MODULE] for module-level documentation)
102
- (Use Section/SectionGroup-ID [SYSTEM]-[MODULE]-[SHORTCUT] for low-level design documentation ONLY)
103
-
104
- ## Overview (Required)
105
- (
106
- - Purpose: Brief description of what this documentation covers
107
- - Main Features: List of key features or capabilities in this documentation
108
- - Brief summary, focused on usability/tools based on the content
109
- - Only create overview when the content is ready to be summarized (use: "[TODO]" while its not filled)
110
- )
111
-
112
- ### Key Features
113
- [TODO] (List key features, focused on usability/tools)
114
-
115
- ## Table of Contents (Required)
116
- (Links for each section, member and children)
117
-
118
- ## {Contents} (Required)
119
- (Detailed informations about the subjects)
120
-
121
- (link back)
122
- ```
123
-
124
- ## Documentation File Hierarchy
125
-
126
- ### For Project/Package Documentation Structure
127
- - Use the following hierarchy template:
128
- - {system-code}.md
129
- - {module1}
130
- - {Prefix}-{module1}_{section1}.md
131
- - {Prefix}-{module1}_{section2}.md
132
- - {Prefix}-{module1}-module.md
133
- - {module2}
134
- - {Prefix}-{module2}_{section1}.md
135
- - {Prefix}-{module2}_{section2}.md
136
- - {Prefix}-{module2}-module.md
137
- - {Prefix}-{module2}_{section-group1}
138
- - {Prefix}-{module2}-{section-group1}_{section1}.md
139
- - {Prefix}-{module2}-{section-group1}_{section2}.md
140
- - {Prefix}-{module2}-{section-group1}.md
141
- ...
142
- - RULES:
143
- 1. Low-level elements should contain only title and Overview section with [TODO]
144
- 2. Keep file names lowercase but use proper capitalization in titles and content
145
- 3. File naming patterns:
146
- - Package files: {package-name}.md
147
- - Module files: {Prefix}-{module-name}-module.md
148
- - Section files: {Prefix}-{module-name}_{section}.md
149
- - Code prefixes: {CODE_Prefix}_{MODULE}_
150
- - Import paths: {IMPORT_PATH}/{module}
151
-
152
- #### Creating Project/Package Documentation File Hierarchy
153
- - Use the following template for each new section element:
154
- ```markdown
155
- # {SYSTEM_NAME} {Module Name} {Section}
156
-
157
- ## Overview
158
- [TODO]
159
- ```
160
-
161
- ## Documentation Read
162
- - You can define the Documentation type using the [Documentation IDs](#Documentation-IDs)
163
-
164
- ## Documentation Templates
165
- - RELATIVE_PATH: path to the local implementation file, using relative path from the md file
166
- - AI Agents won't be able to use this, but the IDE will be
167
- - ABSOLUTE_PATH: path to the local implementation file, using absolute path from root
168
- - The IDE won't be able to use this, but the AI Agents will be
169
-
170
- ### For Project/Package
171
- - Use the following template for creating a Package Documentation:
172
- ```markdown
173
- # {System_Name} [{System-ID}]
174
- **Package:** `{package-code}`
175
- **Code prefix:** {CODE_Prefix_}
176
- **Import:** `{IMPORT_PATH}`
177
- **Dependencies:** {List of dependencies in FDP hierarchy}
178
- **Link:** [package.json]({RELATIVE_PATH})
179
- **Base location** {ABSOLUTE_PATH}
180
-
181
- ## Overview
182
- (Base templates for System_Name Projects.)
183
-
184
- ### Key Features
185
- [TODO] (List key features, focused on usability/tools)
186
-
187
- ## Description
188
- [TODO] (Base templates for System_Name Systems providing modular architecture for various project types.)
189
-
190
- ## Table of Contents
191
- 1. [Main Module](#{main-module})
192
- 2. [{Module1 Name}](#{module1-name}-module)
193
- 3. [{Module2 Name}](#{module2-name}-module)
194
-
195
- ## Modules
196
-
197
- ### [Main Module](main/{Prefix}-main-module.md)
198
- [TODO] (Exported members)
199
-
200
- ### [{Module1 Name}]({module1-name}/{Prefix}-module1-name-module.md)
201
- [TODO] (Exported members)
202
-
203
- ## Exported Members
204
-
205
- ### {Section1 Name}
206
- - [`{Exported_Member1}`]({module1-name}/{Prefix}-module1-name-module.md/#Exported_Member1) short description
207
-
208
- [Back to {Parent Name}](../{parent-documentation-name}.md)
209
- ```
210
-
211
- ### For Module
212
- - Use the following template for creating a Module Documentation:
213
- ```markdown
214
- # {System_Name} {Module_Name} Module Documentation [{Module-ID}]
215
- **Import:** `{IMPORT_PATH}/{module-path}`
216
- **Link:** [index]({RELATIVE_PATH to the index})
217
- **Base location** {ABSOLUTE_PATH to the index}
218
-
219
- ## Overview
220
- [TODO] (Module description)
221
-
222
- ### Key Features
223
- [TODO] (List key features)
224
-
225
- ## Table of Contents (ONLY if the Sections are in different files)
226
- 1. [{Section1_Name}]({Prefix}-{module-name}_{section1}.md)
227
- 2. [{Section2_Name}]({Prefix}-{module-name}_{section2}.md)
228
- 3. [{Section_Group1}]({Prefix}-{module-name}_{section1-group}/[{Prefix}-{module-name}_{section1-group}.md)
229
- - [{Section1_Name}]({Prefix}-{module-name}_{section1-group}/{Prefix}-{module-name}-{section1-group}_{section1}.md)
230
- - [{Section2_Name}]({Prefix}-{module-name}_{section1-group}/{Prefix}-{module-name}-{section1-group}_{section2}.md)
231
-
232
- ## Table of Contents (ONLY if the Files/Features are here in this file)
233
- 1. [{Section_Group1}](#{Section-Group1-Name})
234
- - [{File1 Main_Name}](#{file1-main_name})
235
- - [{File2 Main_Name}](#{file2-main_name})
236
-
237
- ## Detailed Documentation (ONLY if the Sections are in different files)
238
- [TODO] (Exported members)
239
-
240
- ## {Section Group1 Name} (ONLY if the Files/Features are here in this file)
241
-
242
- ### [{File1 Main_Name}]({path to the implementation file1})
243
- {Package Project File1/Feature}
244
-
245
- ### [{File2 Main_Name}]({path to the implementation file2})
246
- {Package Project File2/Feature}
247
-
248
- ...
249
-
250
- [Back to {System_Name}](../{package-code}.md)
251
- ```
252
-
253
- ### For Section Group
254
- - Use the following template for creating a Documentation Section Group:
255
- ```markdown
256
- # {System_Name} {Module_Name} {Section_Group_Name} Documentations [Section-Group]
257
-
258
- ## Overview
259
- [TODO] Section Group description
260
-
261
- ### Key Features
262
- [TODO] (List key features)
263
-
264
- ## Table of Contents
265
- 1. [{Section1_Name}]({Prefix}-{module-name}_{section1}.md)
266
- 2. [{Section2_Name}]({Prefix}-{module-name}_{section2}.md)
267
-
268
- ## Detailed Documentation
269
- [TODO] (Exported members)
270
-
271
- [Back to {Module_Name}](../{Prefix}-{module-name}-module.md)
272
- ```
273
-
274
- ### For Section
275
- - Use the following template for creating a Documentation Section:
276
- ```markdown
277
- # {System_Name} {Module_Name} {Section_Name} Documentation [Section]
278
-
279
- ## Overview
280
- [TODO] {Section description}
281
-
282
- ### Key Features
283
- [TODO] List key features
284
-
285
- ## Table of Contents
286
- 1. [{Sub Section1 Name}](#{Sub-Section1-Name})
287
- - [{File1 Main_Name}](#{File1-Main_Name})
288
- - [{File2 Main_Name}](#{File2-Main_Name})
289
- 2. [{Sub Section2 Name}](#{Sub-Section1-Name})
290
- - [{File1 Main_Name}](#{File3-Main_Name})
291
- - [{File2 Main_Name}](#{File4-Main_Name})
292
-
293
- ## {Sub Section1 Name} (required and based on File Types)
294
-
295
- ### [{File1 Main_Name}]({path to the implementation file1})
296
- [Package Project File1]
297
-
298
- ### [{File2 Main_Name}]({path to the implementation file2})
299
- [Package Project File2]
300
-
301
- ...
302
-
303
- [Back to {Module_Name or Section_Group_Name}]({Prefix}-{module-name}-module.md)
304
- ```
305
- - Sub Sections generated based on the file types: somehting.{file-type}.ts
306
- - E.g.:
307
- - Enums for *.enum.ts
308
- - Constants for *.const.ts
309
-
310
- ### For Package Project File/Feature
311
- - Use the following template for each file/feature documented:
312
- ```markdown
313
- ### [`{Main_Name}`]({RELATIVE_PATH to the implementation file})
314
- - **Code:** [{Feature-ID}]
315
- - **Base Location:** `{ABSOLUTE_PATH}`
316
- - **Description(only for multiple Exported Members):** {short description about the main concept of the members}
317
- - **Exported Members(required):**
318
- - `{exportedMember}`: {short description}
319
- - **Aliases(optional):** `{exportedMember1Alias1}`, `{exportedMember1Alias2}`
320
- - **Extending(optional):** [{ExtendedMemberName}]({RELATIVE_PATH to extending type documentation or "MISSING LINK"}
321
- - **Properties(optional):**
322
- - `{property}`: {short description}
323
- - **Methods(optional):**
324
- - `{method}`: {short description}
325
- - **Type(optional: CONST ONLY):** {type and link if it is available in documentation}
326
- - **Values(optional: ENUM ONLY):**
327
- - `{value}`: {short description}
328
- - **Features(optional):**
329
- - {feature}
330
- ```
331
- - File/Feature Documentations should be on level3:###
332
-
333
- #### STRICT RULES for {Main_Name}:
334
- - **NEVER** use the actual filename with extensions (e.g., do not use "token.control-model.ts")
335
- - **ALWAYS** Read the linked file and then:
336
- - For files with a single exported member:
337
- - Use the **exact same name** of the exported member (e.g., FDP_Token)
338
- - For files with multiple exported members:
339
- - If there is a significant exported member, use its **exact same name**
340
- - If there is no significant exported member, use a short, descriptive name that clearly represents the file's content (e.g., Token Control Models)
341
- - These rules apply to both the Table of Contents section and the headers for each file
342
-
343
- #### STRICT RULES for {route in the local project hierarchy to the implementation file}:
344
- - **NEVER CHANGE** "route in the local project hierarchy to the implementation file"
345
-
346
- #### STRICT RULES for Aliases and Exported members:
347
- - Never add aliases as exported members, but always add them as Aliases
348
-
349
- #### RULES for extensions
350
- - Extension Links:
351
- - Always gather the extensions
352
- - Link to the parent documentation when available
353
- - Use "MISSING LINK" when parent documentation is not found
354
-
355
- ## Formatting Rules
356
- - Use backticks (`) for:
357
- - Code references
358
- - File names
359
- - Function names
360
- - Class names
361
- - Property names
362
- - Method names
363
- - Enum values
364
- - Use bold (**) for:
365
- - Section headers
366
- - Important terms
367
- - Required fields
368
- - Use italics (*) for:
369
- - Optional fields
370
- - Notes
371
- - Warnings
372
-
1
+ ---
2
+ description: When creating documentations
3
+ alwaysApply: false
4
+ ---
5
+ # Documentation Writing Rules
6
+
7
+ ## Core Rules
8
+ 1. Documentation language:
9
+ - For FDP documentations: write the documentation in Hungarian
10
+ - In Hungarian documentation, use English words for technical terms and programming concepts to maintain clarity and consistency with code implementation
11
+ - For Dynamo documentations: write the documentation in English
12
+ 2. Focus on behavior, not implementation
13
+ 3. Write from user's perspective
14
+ - In FDP: the user is the webSite/webApp user
15
+ - In Dynamo: the user is the developer
16
+ 4. Keep language clear and simple
17
+ - Use active voice
18
+ - Avoid technical jargon unless necessary
19
+ 5. Follow the template structure
20
+ 6. Keep it short and informative
21
+ 7. Documentation Validation Process:
22
+ - Before adding new content to the documentation:
23
+ 1. Locate the implementation file
24
+ 2. Verify the new information matches the implementation
25
+ 3. Add the verified information to documentation
26
+ - Before removing content from the documentation:
27
+ 1. Locate the implementation file
28
+ 2. Confirm the information is no longer valid
29
+ 3. Remove the outdated information from documentation
30
+ 8. Don't add sections that is not reqiured, requested, or specially needed
31
+ 9. **Always** read linked implementation files before
32
+ 10. AI-Specific Considerations:
33
+ - Use explicit file paths and references
34
+ - Include clear context markers
35
+ - Maintain consistent ID patterns
36
+ - Document tool-specific requirements
37
+ - Use proper markdown formatting for better AI parsing
38
+ - Include clear section boundaries
39
+ - Use explicit type annotations where possible
40
+ 11. **Never** change paths
41
+
42
+ ## Documentation IDs
43
+ - All documentation IDs follow a hierarchical structure from system-level to feature-level documentation.
44
+ - Never use in reference documentation or higher-level documentation
45
+ - Only use at the exact detailed documentation and where the feature is implemented
46
+ - Never change existing IDs, only highlight it if its incorrect
47
+
48
+ ### System IDs
49
+ - Used ONLY for system/project-level documentation
50
+ - Format: [System]
51
+ - System: Usually three-letter, code of the project/package
52
+ - Must be unique at the system level
53
+ - [Prefix] = [System]
54
+ - Parent is:
55
+ - For System: FDP or Dynamo
56
+ - For Module: a System
57
+ - For Section_Group: a Module
58
+ - For Section: a Module
59
+
60
+ ### Module IDs
61
+ - Used ONLY for module-level documentation
62
+ - Format: [System]-[Module]
63
+ - System: Inherits from System ID
64
+ - Module: Usually three-letter, code of the module
65
+ - Must be unique at the module level
66
+
67
+ ### Feature IDs
68
+ - Used ONLY for low-level design documentation
69
+ - But never on Sections or Section Groups
70
+ - Format: [System]-[Module]-[SHORTCUT]
71
+ - System: Inherits from System ID
72
+ - Module: Inherits from Module ID
73
+ - SHORTCUT: First letters of the function/class/ect extended to make it unique
74
+ - Examples: DMS (DataManagementSystem), UIF (UserInterfaceFactory)
75
+ - Must be unique at the feature level
76
+
77
+ ### Section IDs
78
+ - Used ONLY for sections
79
+ - Format: [Section] OR [Section-Group]
80
+ - Sections should never have ID other than [Section] OR [Section-Group]
81
+ - Sections should always have the [Section] flag
82
+ - Section Groups should always have the [Section-Group] flag
83
+
84
+ ## Quick Checklist
85
+ - [ ] Written in the required language (Hungarian for FDP, English for Dynamo) [REQUIRED]
86
+ - [ ] Written from correct user perspective (end-user for FDP, developer for Dynamo) [REQUIRED]
87
+ - [ ] Uses clear and simple language [REQUIRED]
88
+ - [ ] Follows template structure [REQUIRED]
89
+ - [ ] Has valid Documentation ID [REQUIRED]
90
+ - [ ] Focuses on behavior, not implementation details [RECOMMENDED]
91
+ - [ ] All content has been validated against implementation [REQUIRED]
92
+ - [ ] Uses proper {File Main_Name} format (not filenames with extensions) [REQUIRED]
93
+ - [ ] Table of contents uses proper component names, not filenames [REQUIRED]
94
+ - [ ] Markdown links should work in ToC, dont miss "_"s and "pefix_"s
95
+
96
+ ## Basic Template
97
+ - If there is a specific Documentation Template for your type use that, otherwise use this:
98
+ ```markdown
99
+ #{Name of the Documentation} [{ID(optional)}]
100
+ (Use System-ID [SYSTEM] for system-level documentation)
101
+ (Use Module-ID [SYSTEM]-[MODULE] for module-level documentation)
102
+ (Use Section/SectionGroup-ID [SYSTEM]-[MODULE]-[SHORTCUT] for low-level design documentation ONLY)
103
+
104
+ ## Overview (Required)
105
+ (
106
+ - Purpose: Brief description of what this documentation covers
107
+ - Main Features: List of key features or capabilities in this documentation
108
+ - Brief summary, focused on usability/tools based on the content
109
+ - Only create overview when the content is ready to be summarized (use: "[TODO]" while its not filled)
110
+ )
111
+
112
+ ### Key Features
113
+ [TODO] (List key features, focused on usability/tools)
114
+
115
+ ## Table of Contents (Required)
116
+ (Links for each section, member and children)
117
+
118
+ ## {Contents} (Required)
119
+ (Detailed informations about the subjects)
120
+
121
+ (link back)
122
+ ```
123
+
124
+ ## Documentation File Hierarchy
125
+
126
+ ### For Project/Package Documentation Structure
127
+ - Use the following hierarchy template:
128
+ - {system-code}.md
129
+ - {module1}
130
+ - {Prefix}-{module1}_{section1}.md
131
+ - {Prefix}-{module1}_{section2}.md
132
+ - {Prefix}-{module1}-module.md
133
+ - {module2}
134
+ - {Prefix}-{module2}_{section1}.md
135
+ - {Prefix}-{module2}_{section2}.md
136
+ - {Prefix}-{module2}-module.md
137
+ - {Prefix}-{module2}_{section-group1}
138
+ - {Prefix}-{module2}-{section-group1}_{section1}.md
139
+ - {Prefix}-{module2}-{section-group1}_{section2}.md
140
+ - {Prefix}-{module2}-{section-group1}.md
141
+ ...
142
+ - RULES:
143
+ 1. Low-level elements should contain only title and Overview section with [TODO]
144
+ 2. Keep file names lowercase but use proper capitalization in titles and content
145
+ 3. File naming patterns:
146
+ - Package files: {package-name}.md
147
+ - Module files: {Prefix}-{module-name}-module.md
148
+ - Section files: {Prefix}-{module-name}_{section}.md
149
+ - Code prefixes: {CODE_Prefix}_{MODULE}_
150
+ - Import paths: {IMPORT_PATH}/{module}
151
+
152
+ #### Creating Project/Package Documentation File Hierarchy
153
+ - Use the following template for each new section element:
154
+ ```markdown
155
+ # {SYSTEM_NAME} {Module Name} {Section}
156
+
157
+ ## Overview
158
+ [TODO]
159
+ ```
160
+
161
+ ## Documentation Read
162
+ - You can define the Documentation type using the [Documentation IDs](#Documentation-IDs)
163
+
164
+ ## Documentation Templates
165
+ - RELATIVE_PATH: path to the local implementation file, using relative path from the md file
166
+ - AI Agents won't be able to use this, but the IDE will be
167
+ - ABSOLUTE_PATH: path to the local implementation file, using absolute path from root
168
+ - The IDE won't be able to use this, but the AI Agents will be
169
+
170
+ ### For Project/Package
171
+ - Use the following template for creating a Package Documentation:
172
+ ```markdown
173
+ # {System_Name} [{System-ID}]
174
+ **Package:** `{package-code}`
175
+ **Code prefix:** {CODE_Prefix_}
176
+ **Import:** `{IMPORT_PATH}`
177
+ **Dependencies:** {List of dependencies in FDP hierarchy}
178
+ **Link:** [package.json]({RELATIVE_PATH})
179
+ **Base location** {ABSOLUTE_PATH}
180
+
181
+ ## Overview
182
+ (Base templates for System_Name Projects.)
183
+
184
+ ### Key Features
185
+ [TODO] (List key features, focused on usability/tools)
186
+
187
+ ## Description
188
+ [TODO] (Base templates for System_Name Systems providing modular architecture for various project types.)
189
+
190
+ ## Table of Contents
191
+ 1. [Main Module](#{main-module})
192
+ 2. [{Module1 Name}](#{module1-name}-module)
193
+ 3. [{Module2 Name}](#{module2-name}-module)
194
+
195
+ ## Modules
196
+
197
+ ### [Main Module](main/{Prefix}-main-module.md)
198
+ [TODO] (Exported members)
199
+
200
+ ### [{Module1 Name}]({module1-name}/{Prefix}-module1-name-module.md)
201
+ [TODO] (Exported members)
202
+
203
+ ## Exported Members
204
+
205
+ ### {Section1 Name}
206
+ - [`{Exported_Member1}`]({module1-name}/{Prefix}-module1-name-module.md/#Exported_Member1) short description
207
+
208
+ [Back to {Parent Name}](../{parent-documentation-name}.md)
209
+ ```
210
+
211
+ ### For Module
212
+ - Use the following template for creating a Module Documentation:
213
+ ```markdown
214
+ # {System_Name} {Module_Name} Module Documentation [{Module-ID}]
215
+ **Import:** `{IMPORT_PATH}/{module-path}`
216
+ **Link:** [index]({RELATIVE_PATH to the index})
217
+ **Base location** {ABSOLUTE_PATH to the index}
218
+
219
+ ## Overview
220
+ [TODO] (Module description)
221
+
222
+ ### Key Features
223
+ [TODO] (List key features)
224
+
225
+ ## Table of Contents (ONLY if the Sections are in different files)
226
+ 1. [{Section1_Name}]({Prefix}-{module-name}_{section1}.md)
227
+ 2. [{Section2_Name}]({Prefix}-{module-name}_{section2}.md)
228
+ 3. [{Section_Group1}]({Prefix}-{module-name}_{section1-group}/[{Prefix}-{module-name}_{section1-group}.md)
229
+ - [{Section1_Name}]({Prefix}-{module-name}_{section1-group}/{Prefix}-{module-name}-{section1-group}_{section1}.md)
230
+ - [{Section2_Name}]({Prefix}-{module-name}_{section1-group}/{Prefix}-{module-name}-{section1-group}_{section2}.md)
231
+
232
+ ## Table of Contents (ONLY if the Files/Features are here in this file)
233
+ 1. [{Section_Group1}](#{Section-Group1-Name})
234
+ - [{File1 Main_Name}](#{file1-main_name})
235
+ - [{File2 Main_Name}](#{file2-main_name})
236
+
237
+ ## Detailed Documentation (ONLY if the Sections are in different files)
238
+ [TODO] (Exported members)
239
+
240
+ ## {Section Group1 Name} (ONLY if the Files/Features are here in this file)
241
+
242
+ ### [{File1 Main_Name}]({path to the implementation file1})
243
+ {Package Project File1/Feature}
244
+
245
+ ### [{File2 Main_Name}]({path to the implementation file2})
246
+ {Package Project File2/Feature}
247
+
248
+ ...
249
+
250
+ [Back to {System_Name}](../{package-code}.md)
251
+ ```
252
+
253
+ ### For Section Group
254
+ - Use the following template for creating a Documentation Section Group:
255
+ ```markdown
256
+ # {System_Name} {Module_Name} {Section_Group_Name} Documentations [Section-Group]
257
+
258
+ ## Overview
259
+ [TODO] Section Group description
260
+
261
+ ### Key Features
262
+ [TODO] (List key features)
263
+
264
+ ## Table of Contents
265
+ 1. [{Section1_Name}]({Prefix}-{module-name}_{section1}.md)
266
+ 2. [{Section2_Name}]({Prefix}-{module-name}_{section2}.md)
267
+
268
+ ## Detailed Documentation
269
+ [TODO] (Exported members)
270
+
271
+ [Back to {Module_Name}](../{Prefix}-{module-name}-module.md)
272
+ ```
273
+
274
+ ### For Section
275
+ - Use the following template for creating a Documentation Section:
276
+ ```markdown
277
+ # {System_Name} {Module_Name} {Section_Name} Documentation [Section]
278
+
279
+ ## Overview
280
+ [TODO] {Section description}
281
+
282
+ ### Key Features
283
+ [TODO] List key features
284
+
285
+ ## Table of Contents
286
+ 1. [{Sub Section1 Name}](#{Sub-Section1-Name})
287
+ - [{File1 Main_Name}](#{File1-Main_Name})
288
+ - [{File2 Main_Name}](#{File2-Main_Name})
289
+ 2. [{Sub Section2 Name}](#{Sub-Section1-Name})
290
+ - [{File1 Main_Name}](#{File3-Main_Name})
291
+ - [{File2 Main_Name}](#{File4-Main_Name})
292
+
293
+ ## {Sub Section1 Name} (required and based on File Types)
294
+
295
+ ### [{File1 Main_Name}]({path to the implementation file1})
296
+ [Package Project File1]
297
+
298
+ ### [{File2 Main_Name}]({path to the implementation file2})
299
+ [Package Project File2]
300
+
301
+ ...
302
+
303
+ [Back to {Module_Name or Section_Group_Name}]({Prefix}-{module-name}-module.md)
304
+ ```
305
+ - Sub Sections generated based on the file types: somehting.{file-type}.ts
306
+ - E.g.:
307
+ - Enums for *.enum.ts
308
+ - Constants for *.const.ts
309
+
310
+ ### For Package Project File/Feature
311
+ - Use the following template for each file/feature documented:
312
+ ```markdown
313
+ ### [`{Main_Name}`]({RELATIVE_PATH to the implementation file})
314
+ - **Code:** [{Feature-ID}]
315
+ - **Base Location:** `{ABSOLUTE_PATH}`
316
+ - **Description(only for multiple Exported Members):** {short description about the main concept of the members}
317
+ - **Exported Members(required):**
318
+ - `{exportedMember}`: {short description}
319
+ - **Aliases(optional):** `{exportedMember1Alias1}`, `{exportedMember1Alias2}`
320
+ - **Extending(optional):** [{ExtendedMemberName}]({RELATIVE_PATH to extending type documentation or "MISSING LINK"}
321
+ - **Properties(optional):**
322
+ - `{property}`: {short description}
323
+ - **Methods(optional):**
324
+ - `{method}`: {short description}
325
+ - **Type(optional: CONST ONLY):** {type and link if it is available in documentation}
326
+ - **Values(optional: ENUM ONLY):**
327
+ - `{value}`: {short description}
328
+ - **Features(optional):**
329
+ - {feature}
330
+ ```
331
+ - File/Feature Documentations should be on level3:###
332
+
333
+ #### STRICT RULES for {Main_Name}:
334
+ - **NEVER** use the actual filename with extensions (e.g., do not use "token.control-model.ts")
335
+ - **ALWAYS** Read the linked file and then:
336
+ - For files with a single exported member:
337
+ - Use the **exact same name** of the exported member (e.g., FDP_Token)
338
+ - For files with multiple exported members:
339
+ - If there is a significant exported member, use its **exact same name**
340
+ - If there is no significant exported member, use a short, descriptive name that clearly represents the file's content (e.g., Token Control Models)
341
+ - These rules apply to both the Table of Contents section and the headers for each file
342
+
343
+ #### STRICT RULES for {route in the local project hierarchy to the implementation file}:
344
+ - **NEVER CHANGE** "route in the local project hierarchy to the implementation file"
345
+
346
+ #### STRICT RULES for Aliases and Exported members:
347
+ - Never add aliases as exported members, but always add them as Aliases
348
+
349
+ #### RULES for extensions
350
+ - Extension Links:
351
+ - Always gather the extensions
352
+ - Link to the parent documentation when available
353
+ - Use "MISSING LINK" when parent documentation is not found
354
+
355
+ ## Formatting Rules
356
+ - Use backticks (`) for:
357
+ - Code references
358
+ - File names
359
+ - Function names
360
+ - Class names
361
+ - Property names
362
+ - Method names
363
+ - Enum values
364
+ - Use bold (**) for:
365
+ - Section headers
366
+ - Important terms
367
+ - Required fields
368
+ - Use italics (*) for:
369
+ - Optional fields
370
+ - Notes
371
+ - Warnings
372
+