@lvlup-sw/exarchos 2.0.1

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 (153) hide show
  1. package/.claude-plugin/marketplace.json +22 -0
  2. package/.claude-plugin/plugin.json +17 -0
  3. package/.mcp.json +17 -0
  4. package/AGENTS.md +59 -0
  5. package/CLAUDE.md.template +62 -0
  6. package/LICENSE +202 -0
  7. package/README.md +258 -0
  8. package/commands/autocompact.md +37 -0
  9. package/commands/checkpoint.md +85 -0
  10. package/commands/cleanup.md +99 -0
  11. package/commands/debug.md +145 -0
  12. package/commands/delegate.md +56 -0
  13. package/commands/ideate.md +82 -0
  14. package/commands/plan.md +150 -0
  15. package/commands/refactor.md +139 -0
  16. package/commands/reload.md +37 -0
  17. package/commands/resume.md +130 -0
  18. package/commands/review.md +51 -0
  19. package/commands/sync-schemas.md +74 -0
  20. package/commands/synthesize.md +122 -0
  21. package/commands/tdd.md +58 -0
  22. package/dist/exarchos-cli.js +8828 -0
  23. package/dist/exarchos-mcp.js +50 -0
  24. package/hooks/hooks.json +53 -0
  25. package/package.json +59 -0
  26. package/rules/coding-standards.md +46 -0
  27. package/rules/mcp-tool-guidance.md +26 -0
  28. package/rules/pr-descriptions.md +12 -0
  29. package/rules/rm-safety.md +9 -0
  30. package/rules/skill-path-resolution.md +10 -0
  31. package/rules/tdd.md +41 -0
  32. package/rules/telemetry-awareness.md +9 -0
  33. package/scripts/assess-refactor-scope.sh +239 -0
  34. package/scripts/check-benchmark-regression.sh +229 -0
  35. package/scripts/check-coderabbit.sh +288 -0
  36. package/scripts/check-coverage-thresholds.sh +194 -0
  37. package/scripts/check-polish-scope.sh +245 -0
  38. package/scripts/check-property-tests.sh +167 -0
  39. package/scripts/check-tdd-compliance.sh +265 -0
  40. package/scripts/coderabbit-review-gate.sh +518 -0
  41. package/scripts/debug-review-gate.sh +201 -0
  42. package/scripts/extract-fix-tasks.sh +179 -0
  43. package/scripts/extract-task.sh +67 -0
  44. package/scripts/generate-traceability.sh +209 -0
  45. package/scripts/investigation-timer.sh +171 -0
  46. package/scripts/needs-schema-sync.sh +174 -0
  47. package/scripts/new-project.sh +103 -0
  48. package/scripts/post-delegation-check.sh +317 -0
  49. package/scripts/pre-synthesis-check.sh +440 -0
  50. package/scripts/reconcile-state.sh +346 -0
  51. package/scripts/reconstruct-stack.sh +432 -0
  52. package/scripts/review-diff.sh +63 -0
  53. package/scripts/review-verdict.sh +169 -0
  54. package/scripts/security-scan.sh +248 -0
  55. package/scripts/select-debug-track.sh +186 -0
  56. package/scripts/setup-worktree.sh +323 -0
  57. package/scripts/spec-coverage-check.sh +230 -0
  58. package/scripts/static-analysis-gate.sh +236 -0
  59. package/scripts/sync-labels.sh +122 -0
  60. package/scripts/validate-companion.sh +161 -0
  61. package/scripts/validate-dotnet-standards.sh +267 -0
  62. package/scripts/validate-installation.sh +101 -0
  63. package/scripts/validate-plugin.sh +223 -0
  64. package/scripts/validate-refactor.sh +234 -0
  65. package/scripts/validate-rm.sh +93 -0
  66. package/scripts/verify-delegation-saga.sh +240 -0
  67. package/scripts/verify-doc-links.sh +211 -0
  68. package/scripts/verify-ideate-artifacts.sh +296 -0
  69. package/scripts/verify-plan-coverage.sh +228 -0
  70. package/scripts/verify-review-triage.sh +219 -0
  71. package/scripts/verify-worktree-baseline.sh +159 -0
  72. package/scripts/verify-worktree.sh +84 -0
  73. package/settings.json +47 -0
  74. package/skills/brainstorming/SKILL.md +127 -0
  75. package/skills/brainstorming/references/design-template.md +65 -0
  76. package/skills/cleanup/SKILL.md +147 -0
  77. package/skills/cleanup/references/merge-verification.md +40 -0
  78. package/skills/debug/SKILL.md +204 -0
  79. package/skills/debug/references/hotfix-track.md +134 -0
  80. package/skills/debug/references/investigation-checklist.md +217 -0
  81. package/skills/debug/references/rca-template.md +150 -0
  82. package/skills/debug/references/state-schema.md +294 -0
  83. package/skills/debug/references/thorough-track.md +194 -0
  84. package/skills/debug/references/triage-questions.md +155 -0
  85. package/skills/debug/references/troubleshooting.md +47 -0
  86. package/skills/delegation/SKILL.md +150 -0
  87. package/skills/delegation/references/adaptive-orchestration.md +31 -0
  88. package/skills/delegation/references/agent-teams-saga.md +248 -0
  89. package/skills/delegation/references/fix-mode.md +74 -0
  90. package/skills/delegation/references/fixer-prompt.md +162 -0
  91. package/skills/delegation/references/implementer-prompt.md +322 -0
  92. package/skills/delegation/references/parallel-strategy.md +124 -0
  93. package/skills/delegation/references/pbt-patterns.md +172 -0
  94. package/skills/delegation/references/pr-fixes-mode.md +154 -0
  95. package/skills/delegation/references/state-management.md +51 -0
  96. package/skills/delegation/references/testing-patterns.md +129 -0
  97. package/skills/delegation/references/troubleshooting.md +33 -0
  98. package/skills/delegation/references/workflow-steps.md +127 -0
  99. package/skills/delegation/references/worktree-enforcement.md +64 -0
  100. package/skills/dotnet-standards/SKILL.md +269 -0
  101. package/skills/dotnet-standards/references/csharp-standards.md +120 -0
  102. package/skills/dotnet-standards/templates/.editorconfig +366 -0
  103. package/skills/dotnet-standards/templates/Directory.Build.props +56 -0
  104. package/skills/dotnet-standards/templates/Directory.Packages.props +69 -0
  105. package/skills/dotnet-standards/templates/global.json +6 -0
  106. package/skills/dotnet-standards/templates/nuget.config +9 -0
  107. package/skills/dotnet-standards/templates/stylecop.json +37 -0
  108. package/skills/git-worktrees/SKILL.md +255 -0
  109. package/skills/implementation-planning/SKILL.md +233 -0
  110. package/skills/implementation-planning/references/plan-document-template.md +42 -0
  111. package/skills/implementation-planning/references/spec-tracing-guide.md +51 -0
  112. package/skills/implementation-planning/references/task-template.md +43 -0
  113. package/skills/implementation-planning/references/testing-strategy-guide.md +88 -0
  114. package/skills/quality-review/SKILL.md +278 -0
  115. package/skills/quality-review/references/code-quality-checklist.md +159 -0
  116. package/skills/quality-review/references/review-report-template.md +65 -0
  117. package/skills/quality-review/references/security-checklist.md +79 -0
  118. package/skills/quality-review/references/typescript-standards.md +24 -0
  119. package/skills/refactor/COMMAND.md +67 -0
  120. package/skills/refactor/SKILL.md +198 -0
  121. package/skills/refactor/phases/auto-chain.md +262 -0
  122. package/skills/refactor/phases/brief.md +176 -0
  123. package/skills/refactor/phases/explore.md +132 -0
  124. package/skills/refactor/phases/overhaul-delegate.md +136 -0
  125. package/skills/refactor/phases/overhaul-plan.md +312 -0
  126. package/skills/refactor/phases/overhaul-review.md +304 -0
  127. package/skills/refactor/phases/polish-implement.md +349 -0
  128. package/skills/refactor/phases/polish-validate.md +218 -0
  129. package/skills/refactor/phases/update-docs.md +234 -0
  130. package/skills/refactor/references/brief-template.md +81 -0
  131. package/skills/refactor/references/doc-update-checklist.md +110 -0
  132. package/skills/refactor/references/explore-checklist.md +73 -0
  133. package/skills/refactor/references/overhaul-track.md +215 -0
  134. package/skills/refactor/references/polish-track.md +170 -0
  135. package/skills/shared/prompts/context-reading.md +58 -0
  136. package/skills/shared/prompts/report-format.md +54 -0
  137. package/skills/shared/prompts/tdd-requirements.md +39 -0
  138. package/skills/shepherd/SKILL.md +264 -0
  139. package/skills/shepherd/references/assess-checklist.md +124 -0
  140. package/skills/shepherd/references/fix-strategies.md +191 -0
  141. package/skills/spec-review/SKILL.md +229 -0
  142. package/skills/spec-review/references/review-checklist.md +60 -0
  143. package/skills/sync-schemas/SKILL.md +114 -0
  144. package/skills/sync-schemas/references/configuration.md +73 -0
  145. package/skills/synthesis/SKILL.md +129 -0
  146. package/skills/synthesis/references/pr-descriptions.md +87 -0
  147. package/skills/synthesis/references/synthesis-steps.md +109 -0
  148. package/skills/synthesis/references/troubleshooting.md +115 -0
  149. package/skills/validate-all-skills.sh +57 -0
  150. package/skills/validate-frontmatter.sh +237 -0
  151. package/skills/workflow-state/SKILL.md +210 -0
  152. package/skills/workflow-state/references/mcp-tool-reference.md +111 -0
  153. package/skills/workflow-state/references/phase-transitions.md +141 -0
@@ -0,0 +1,366 @@
1
+ # Levelup Software .NET EditorConfig Template
2
+ # Version: 1.0.0
3
+ #
4
+ # This file defines code style standards for all Levelup Software C# projects.
5
+ # Do not modify rules above the PROJECT-LOCAL marker. Add overrides below it.
6
+
7
+ root = true
8
+
9
+ #-----------------------------------------------------------------------
10
+ # Global Settings
11
+ #-----------------------------------------------------------------------
12
+ [*]
13
+ charset = utf-8
14
+ end_of_line = crlf
15
+ indent_style = space
16
+ indent_size = 4
17
+ tab_width = 4
18
+ trim_trailing_whitespace = true
19
+ insert_final_newline = false
20
+ max_line_length = 120
21
+
22
+ [*.xml]
23
+ indent_size = 2
24
+
25
+ [*.json]
26
+ indent_size = 2
27
+
28
+ [*.yml]
29
+ indent_size = 2
30
+
31
+ [*.yaml]
32
+ indent_size = 2
33
+
34
+ #-----------------------------------------------------------------------
35
+ # .NET Code Style Settings
36
+ #-----------------------------------------------------------------------
37
+ [*.{cs,vb}]
38
+
39
+ # Organize usings
40
+ dotnet_separate_import_directive_groups = true
41
+ dotnet_sort_system_directives_first = true
42
+ file_header_template = unset
43
+
44
+ # Qualification preferences (no 'this.' prefix)
45
+ dotnet_style_qualification_for_field = false:silent
46
+ dotnet_style_qualification_for_property = false:silent
47
+ dotnet_style_qualification_for_method = false:silent
48
+ dotnet_style_qualification_for_event = false:silent
49
+
50
+ # Language keywords vs BCL types (prefer 'int' over 'Int32')
51
+ dotnet_style_predefined_type_for_locals_parameters_members = true:silent
52
+ dotnet_style_predefined_type_for_member_access = true:silent
53
+
54
+ # Parentheses preferences
55
+ dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
56
+ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
57
+ dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
58
+ dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
59
+ dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
60
+
61
+ # Expression-level preferences
62
+ dotnet_style_coalesce_expression = true:suggestion
63
+ dotnet_style_null_propagation = true:suggestion
64
+ dotnet_style_object_initializer = true:suggestion
65
+ dotnet_style_collection_initializer = true:suggestion
66
+ dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
67
+ dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
68
+ dotnet_style_prefer_compound_assignment = true:suggestion
69
+ dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
70
+ dotnet_style_prefer_conditional_expression_over_return = true:suggestion
71
+ dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
72
+ dotnet_style_prefer_inferred_tuple_names = true:suggestion
73
+ dotnet_style_explicit_tuple_names = true:suggestion
74
+ dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
75
+ dotnet_style_prefer_simplified_interpolation = true:suggestion
76
+ dotnet_style_prefer_auto_properties = true:suggestion
77
+ dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed:suggestion
78
+ dotnet_style_operator_placement_when_wrapping = beginning_of_line
79
+ dotnet_style_namespace_match_folder = true:suggestion
80
+ dotnet_style_readonly_field = true:warning
81
+ dotnet_code_quality_unused_parameters = all:suggestion
82
+
83
+ #-----------------------------------------------------------------------
84
+ # .NET Naming Conventions
85
+ #-----------------------------------------------------------------------
86
+
87
+ # Naming Styles
88
+ dotnet_naming_style.pascal_case.capitalization = pascal_case
89
+ dotnet_naming_style.camel_case.capitalization = camel_case
90
+ dotnet_naming_style.i_pascal_case.required_prefix = I
91
+ dotnet_naming_style.i_pascal_case.capitalization = pascal_case
92
+ dotnet_naming_style.t_pascal_case.required_prefix = T
93
+ dotnet_naming_style.t_pascal_case.capitalization = pascal_case
94
+ dotnet_naming_style.underscore_camel_case.required_prefix = _
95
+ dotnet_naming_style.underscore_camel_case.capitalization = camel_case
96
+ dotnet_naming_style.s_camel_case.required_prefix = s_
97
+ dotnet_naming_style.s_camel_case.capitalization = camel_case
98
+
99
+ # Symbol Specifications
100
+ dotnet_naming_symbols.types_and_namespaces.applicable_kinds = class, struct, interface, enum, delegate, namespace
101
+ dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = *
102
+ dotnet_naming_symbols.interfaces.applicable_kinds = interface
103
+ dotnet_naming_symbols.interfaces.applicable_accessibilities = *
104
+ dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter
105
+ dotnet_naming_symbols.type_parameters.applicable_accessibilities = *
106
+ dotnet_naming_symbols.methods_properties_events.applicable_kinds = method, property, event
107
+ dotnet_naming_symbols.methods_properties_events.applicable_accessibilities = *
108
+ dotnet_naming_symbols.public_internal_fields.applicable_kinds = field
109
+ dotnet_naming_symbols.public_internal_fields.applicable_accessibilities = public, internal, protected_internal
110
+ dotnet_naming_symbols.private_protected_instance_fields.applicable_kinds = field
111
+ dotnet_naming_symbols.private_protected_instance_fields.applicable_accessibilities = private, protected, private_protected
112
+ dotnet_naming_symbols.private_protected_static_fields.applicable_kinds = field
113
+ dotnet_naming_symbols.private_protected_static_fields.applicable_accessibilities = private, protected, private_protected
114
+ dotnet_naming_symbols.private_protected_static_fields.required_modifiers = static
115
+ dotnet_naming_symbols.constant_fields.applicable_kinds = field
116
+ dotnet_naming_symbols.constant_fields.applicable_accessibilities = *
117
+ dotnet_naming_symbols.constant_fields.required_modifiers = const
118
+ dotnet_naming_symbols.static_readonly_fields.applicable_kinds = field
119
+ dotnet_naming_symbols.static_readonly_fields.applicable_accessibilities = *
120
+ dotnet_naming_symbols.static_readonly_fields.required_modifiers = static, readonly
121
+ dotnet_naming_symbols.local_variables.applicable_kinds = local
122
+ dotnet_naming_symbols.local_variables.applicable_accessibilities = local
123
+ dotnet_naming_symbols.parameters.applicable_kinds = parameter
124
+ dotnet_naming_symbols.parameters.applicable_accessibilities = *
125
+ dotnet_naming_symbols.local_functions.applicable_kinds = local_function
126
+ dotnet_naming_symbols.local_functions.applicable_accessibilities = *
127
+
128
+ # Naming Rules
129
+ dotnet_naming_rule.pascal_case_for_most_members.symbols = types_and_namespaces, methods_properties_events, public_internal_fields, constant_fields, static_readonly_fields, local_functions
130
+ dotnet_naming_rule.pascal_case_for_most_members.style = pascal_case
131
+ dotnet_naming_rule.pascal_case_for_most_members.severity = suggestion
132
+
133
+ dotnet_naming_rule.i_pascal_case_for_interfaces.symbols = interfaces
134
+ dotnet_naming_rule.i_pascal_case_for_interfaces.style = i_pascal_case
135
+ dotnet_naming_rule.i_pascal_case_for_interfaces.severity = suggestion
136
+
137
+ dotnet_naming_rule.t_pascal_case_for_type_parameters.symbols = type_parameters
138
+ dotnet_naming_rule.t_pascal_case_for_type_parameters.style = t_pascal_case
139
+ dotnet_naming_rule.t_pascal_case_for_type_parameters.severity = suggestion
140
+
141
+ dotnet_naming_rule.camel_case_for_locals_and_parameters.symbols = local_variables, parameters
142
+ dotnet_naming_rule.camel_case_for_locals_and_parameters.style = camel_case
143
+ dotnet_naming_rule.camel_case_for_locals_and_parameters.severity = suggestion
144
+
145
+ dotnet_naming_rule.underscore_camel_case_for_private_instance_fields.symbols = private_protected_instance_fields
146
+ dotnet_naming_rule.underscore_camel_case_for_private_instance_fields.style = underscore_camel_case
147
+ dotnet_naming_rule.underscore_camel_case_for_private_instance_fields.severity = suggestion
148
+
149
+ dotnet_naming_rule.s_camel_case_for_private_static_fields.symbols = private_protected_static_fields
150
+ dotnet_naming_rule.s_camel_case_for_private_static_fields.style = s_camel_case
151
+ dotnet_naming_rule.s_camel_case_for_private_static_fields.severity = suggestion
152
+
153
+ #-----------------------------------------------------------------------
154
+ # C# Specific Settings
155
+ #-----------------------------------------------------------------------
156
+ [*.cs]
157
+
158
+ # 'var' preferences (prefer explicit types)
159
+ csharp_style_var_for_built_in_types = false:silent
160
+ csharp_style_var_when_type_is_apparent = false:silent
161
+ csharp_style_var_elsewhere = false:silent
162
+
163
+ # Expression-bodied members
164
+ csharp_style_expression_bodied_methods = false:silent
165
+ csharp_style_expression_bodied_constructors = false:silent
166
+ csharp_style_expression_bodied_operators = false:silent
167
+ csharp_style_expression_bodied_properties = true:silent
168
+ csharp_style_expression_bodied_indexers = true:silent
169
+ csharp_style_expression_bodied_accessors = true:silent
170
+ csharp_style_expression_bodied_local_functions = false:silent
171
+ csharp_style_expression_bodied_lambdas = true:suggestion
172
+
173
+ # Pattern matching
174
+ csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
175
+ csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
176
+ csharp_style_prefer_pattern_matching = true:suggestion
177
+ csharp_style_prefer_switch_expression = true:suggestion
178
+ csharp_style_prefer_not_pattern = true:suggestion
179
+ csharp_style_prefer_extended_property_pattern = true:suggestion
180
+
181
+ # Null-checking
182
+ csharp_style_conditional_delegate_call = true:suggestion
183
+
184
+ # Modifiers
185
+ csharp_preferred_modifier_order = public,private,protected,internal,file,const,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion
186
+ csharp_prefer_static_local_function = true:warning
187
+ csharp_prefer_static_anonymous_function = true:suggestion
188
+ csharp_style_prefer_readonly_struct = true:suggestion
189
+ csharp_style_prefer_readonly_struct_member = true:suggestion
190
+
191
+ # Code-block preferences
192
+ csharp_prefer_braces = true:silent
193
+ csharp_style_namespace_declarations = file_scoped:suggestion
194
+ csharp_prefer_simple_using_statement = true:suggestion
195
+ csharp_style_prefer_method_group_conversion = true:silent
196
+ csharp_style_prefer_primary_constructors = true:suggestion
197
+ csharp_style_prefer_top_level_statements = true:silent
198
+
199
+ # Expression-level preferences
200
+ csharp_prefer_simple_default_expression = true:suggestion
201
+ csharp_style_deconstructed_variable_declaration = true:suggestion
202
+ csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
203
+ csharp_style_inlined_variable_declaration = true:suggestion
204
+ csharp_style_prefer_index_operator = true:suggestion
205
+ csharp_style_prefer_range_operator = true:suggestion
206
+ csharp_style_prefer_local_over_anonymous_function = true:suggestion
207
+ csharp_style_prefer_null_check_over_type_check = true:suggestion
208
+ csharp_style_prefer_tuple_swap = true:suggestion
209
+ csharp_style_throw_expression = true:suggestion
210
+ csharp_style_prefer_utf8_string_literals = true:suggestion
211
+ csharp_style_unused_value_assignment_preference = discard_variable:suggestion
212
+ csharp_style_unused_value_expression_statement_preference = discard_variable:silent
213
+
214
+ # 'using' directive preferences
215
+ csharp_using_directive_placement = outside_namespace:warning
216
+ csharp_blank_lines_between_using_directives = 0
217
+
218
+ #-----------------------------------------------------------------------
219
+ # C# Formatting Rules
220
+ #-----------------------------------------------------------------------
221
+
222
+ # New line preferences
223
+ csharp_new_line_before_catch = true:warning
224
+ csharp_new_line_before_else = true:warning
225
+ csharp_new_line_before_finally = true:warning
226
+ csharp_new_line_before_members_in_object_initializers = true:warning
227
+ csharp_new_line_before_members_in_anonymous_types = true:warning
228
+ csharp_new_line_between_query_expression_clauses = true:warning
229
+ csharp_new_line_before_open_brace = all:warning
230
+
231
+ # Indentation
232
+ csharp_indent_block_contents = true:warning
233
+ csharp_indent_braces = false:warning
234
+ csharp_indent_case_contents = true:warning
235
+ csharp_indent_case_contents_when_block = true:warning
236
+ csharp_indent_switch_labels = true:warning
237
+ csharp_indent_labels = one_less_than_current:warning
238
+
239
+ # Spacing
240
+ csharp_space_after_cast = false
241
+ csharp_space_after_colon_in_inheritance_clause = true
242
+ csharp_space_after_comma = true
243
+ csharp_space_after_dot = false
244
+ csharp_space_after_semicolon_in_for_statement = true
245
+ csharp_space_after_keywords_in_control_flow_statements = true
246
+ csharp_space_around_binary_operators = before_and_after
247
+ csharp_space_around_declaration_statements = false
248
+ csharp_space_before_colon_in_inheritance_clause = true
249
+ csharp_space_before_comma = false
250
+ csharp_space_before_dot = false
251
+ csharp_space_before_open_square_brackets = false
252
+ csharp_space_before_semicolon_in_for_statement = false
253
+ csharp_space_between_empty_square_brackets = false
254
+ csharp_space_between_method_call_empty_parameter_list_parentheses = false
255
+ csharp_space_between_method_call_name_and_opening_parenthesis = false
256
+ csharp_space_between_method_call_parameter_list_parentheses = false
257
+ csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
258
+ csharp_space_between_method_declaration_name_and_open_parenthesis = false
259
+ csharp_space_between_method_declaration_parameter_list_parentheses = false
260
+ csharp_space_between_parentheses = false
261
+ csharp_space_between_square_brackets = false
262
+
263
+ # Wrapping
264
+ csharp_preserve_single_line_blocks = true
265
+ csharp_preserve_single_line_statements = true
266
+
267
+ #-----------------------------------------------------------------------
268
+ # Analyzer Rule Severities
269
+ #-----------------------------------------------------------------------
270
+
271
+ # IDE Analyzers
272
+ dotnet_diagnostic.IDE0130.severity = warning
273
+ dotnet_diagnostic.IDE1006.severity = none
274
+ dotnet_diagnostic.IDE0290.severity = none
275
+
276
+ # Code Analysis
277
+ dotnet_diagnostic.CA1860.severity = silent
278
+ dotnet_diagnostic.CA2254.severity = silent
279
+
280
+ # StyleCop - Disabled rules
281
+ dotnet_diagnostic.SA0001.severity = none
282
+ dotnet_diagnostic.SA1000.severity = none
283
+ dotnet_diagnostic.SA1005.severity = none
284
+ dotnet_diagnostic.SA1008.severity = none
285
+ dotnet_diagnostic.SA1009.severity = none
286
+ dotnet_diagnostic.SA1010.severity = none
287
+ dotnet_diagnostic.SA1011.severity = none
288
+ dotnet_diagnostic.SA1013.severity = none
289
+ dotnet_diagnostic.SA1028.severity = none
290
+ dotnet_diagnostic.SA1101.severity = none
291
+ dotnet_diagnostic.SA1116.severity = none
292
+ dotnet_diagnostic.SA1117.severity = none
293
+ dotnet_diagnostic.SA1118.severity = none
294
+ dotnet_diagnostic.SA1122.severity = none
295
+ dotnet_diagnostic.SA1124.severity = none
296
+ dotnet_diagnostic.SA1127.severity = suggestion
297
+ dotnet_diagnostic.SA1200.severity = none
298
+ dotnet_diagnostic.SA1201.severity = none
299
+ dotnet_diagnostic.SA1202.severity = none
300
+ dotnet_diagnostic.SA1203.severity = none
301
+ dotnet_diagnostic.SA1204.severity = none
302
+ dotnet_diagnostic.SA1206.severity = none
303
+ dotnet_diagnostic.SA1207.severity = none
304
+ dotnet_diagnostic.SA1208.severity = none
305
+ dotnet_diagnostic.SA1209.severity = none
306
+ dotnet_diagnostic.SA1210.severity = none
307
+ dotnet_diagnostic.SA1211.severity = none
308
+ dotnet_diagnostic.SA1214.severity = none
309
+ dotnet_diagnostic.SA1216.severity = none
310
+ dotnet_diagnostic.SA1217.severity = none
311
+ dotnet_diagnostic.SA1300.severity = none
312
+ dotnet_diagnostic.SA1302.severity = none
313
+ dotnet_diagnostic.SA1303.severity = none
314
+ dotnet_diagnostic.SA1304.severity = none
315
+ dotnet_diagnostic.SA1306.severity = none
316
+ dotnet_diagnostic.SA1307.severity = none
317
+ dotnet_diagnostic.SA1308.severity = none
318
+ dotnet_diagnostic.SA1309.severity = none
319
+ dotnet_diagnostic.SA1310.severity = none
320
+ dotnet_diagnostic.SA1311.severity = none
321
+ dotnet_diagnostic.SA1312.severity = none
322
+ dotnet_diagnostic.SA1313.severity = none
323
+ dotnet_diagnostic.SA1316.severity = none
324
+ dotnet_diagnostic.SA1400.severity = none
325
+ dotnet_diagnostic.SA1401.severity = suggestion
326
+ dotnet_diagnostic.SA1402.severity = none
327
+ dotnet_diagnostic.SA1403.severity = none
328
+ dotnet_diagnostic.SA1404.severity = none
329
+ dotnet_diagnostic.SA1405.severity = none
330
+ dotnet_diagnostic.SA1406.severity = none
331
+ dotnet_diagnostic.SA1407.severity = none
332
+ dotnet_diagnostic.SA1408.severity = none
333
+ dotnet_diagnostic.SA1410.severity = none
334
+ dotnet_diagnostic.SA1411.severity = none
335
+ dotnet_diagnostic.SA1413.severity = none
336
+ dotnet_diagnostic.SA1502.severity = suggestion
337
+ dotnet_diagnostic.SA1503.severity = suggestion
338
+ dotnet_diagnostic.SA1512.severity = none
339
+ dotnet_diagnostic.SA1515.severity = suggestion
340
+ dotnet_diagnostic.SA1516.severity = suggestion
341
+ dotnet_diagnostic.SA1518.severity = none
342
+ dotnet_diagnostic.SA1649.severity = none
343
+
344
+ # StyleCop - Documentation (warnings)
345
+ dotnet_diagnostic.SA1600.severity = warning
346
+ dotnet_diagnostic.SA1601.severity = warning
347
+ dotnet_diagnostic.SA1602.severity = warning
348
+ dotnet_diagnostic.SA1623.severity = none
349
+ dotnet_diagnostic.SA1633.severity = none
350
+ dotnet_diagnostic.SA1636.severity = none
351
+
352
+ # Visual Studio Threading Analyzers
353
+ dotnet_diagnostic.VSTHRD001.severity = error
354
+ dotnet_diagnostic.VSTHRD002.severity = error
355
+ dotnet_diagnostic.VSTHRD004.severity = error
356
+ dotnet_diagnostic.VSTHRD012.severity = suggestion
357
+ dotnet_diagnostic.VSTHRD101.severity = error
358
+ dotnet_diagnostic.VSTHRD105.severity = warning
359
+ dotnet_diagnostic.VSTHRD111.severity = error
360
+ dotnet_diagnostic.VSTHRD114.severity = error
361
+ dotnet_diagnostic.VSTHRD200.severity = suggestion
362
+
363
+ #-----------------------------------------------------------------------
364
+ # === PROJECT-LOCAL RULES BELOW ===
365
+ # Add project-specific overrides here. This section is preserved during sync.
366
+ #-----------------------------------------------------------------------
@@ -0,0 +1,56 @@
1
+ <!-- Levelup Software Directory.Build.props Template -->
2
+ <!-- Version: 1.0.0 -->
3
+ <!--
4
+ This file defines centralized build settings for all projects in the solution.
5
+ Do not modify settings above the PROJECT-LOCAL marker. Add overrides below it.
6
+ -->
7
+ <Project>
8
+
9
+ <!-- Lvlup.Build meta-package provides analyzers and default settings -->
10
+ <ItemGroup>
11
+ <PackageReference Include="Lvlup.Build" PrivateAssets="all" />
12
+ </ItemGroup>
13
+
14
+ <!-- Project-wide settings -->
15
+ <PropertyGroup>
16
+ <TargetFramework>net10.0</TargetFramework>
17
+ <LangVersion>latest</LangVersion>
18
+ <Nullable>enable</Nullable>
19
+ <ImplicitUsings>enable</ImplicitUsings>
20
+ <Company>{{COMPANY_NAME}}</Company>
21
+ <Copyright>Copyright (c) {{COMPANY_NAME}}. All rights reserved.</Copyright>
22
+ </PropertyGroup>
23
+
24
+ <!-- Analyzer settings -->
25
+ <PropertyGroup>
26
+ <EnableNETAnalyzers>true</EnableNETAnalyzers>
27
+ <AnalysisLevel>latest</AnalysisLevel>
28
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
29
+ <RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
30
+ </PropertyGroup>
31
+
32
+ <!-- Code coverage settings -->
33
+ <PropertyGroup>
34
+ <CollectCoverage>true</CollectCoverage>
35
+ <CoverletOutputFormat>cobertura</CoverletOutputFormat>
36
+ <ThresholdType>line,branch,method</ThresholdType>
37
+ <Threshold>80</Threshold>
38
+ </PropertyGroup>
39
+
40
+ <!-- Test project detection and settings -->
41
+ <PropertyGroup Condition="$(MSBuildProjectName.EndsWith('.Tests'))">
42
+ <IsPackable>false</IsPackable>
43
+ <IsPublishable>false</IsPublishable>
44
+ </PropertyGroup>
45
+
46
+ <!--
47
+ StyleCop configuration is provided by Lvlup.Build package.
48
+ To override company name, add a local stylecop.json in this directory.
49
+ -->
50
+
51
+ <!-- =========================================================================== -->
52
+ <!-- === PROJECT-LOCAL OVERRIDES BELOW === -->
53
+ <!-- Add project-specific settings here. This section is preserved during sync. -->
54
+ <!-- =========================================================================== -->
55
+
56
+ </Project>
@@ -0,0 +1,69 @@
1
+ <!-- Levelup Software Directory.Packages.props Template -->
2
+ <!-- Version: 1.0.0 -->
3
+ <!--
4
+ Central Package Management (CPM) - All package versions are defined here.
5
+ Never specify versions in individual .csproj files.
6
+ Do not modify packages above the PROJECT-LOCAL marker. Add overrides below it.
7
+ -->
8
+ <Project>
9
+
10
+ <PropertyGroup>
11
+ <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
12
+ </PropertyGroup>
13
+
14
+ <ItemGroup>
15
+ <!-- ===================================================================== -->
16
+ <!-- Build Tooling (via Lvlup.Build meta-package) -->
17
+ <!-- ===================================================================== -->
18
+ <PackageVersion Include="Lvlup.Build" Version="1.2.1" />
19
+
20
+ <!-- ===================================================================== -->
21
+ <!-- Testing -->
22
+ <!-- ===================================================================== -->
23
+ <PackageVersion Include="TUnit" Version="0.15.0" />
24
+ <PackageVersion Include="NSubstitute" Version="5.3.0" />
25
+ <PackageVersion Include="coverlet.collector" Version="6.0.4" />
26
+
27
+ <!-- ===================================================================== -->
28
+ <!-- Microsoft Extensions -->
29
+ <!-- ===================================================================== -->
30
+ <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
31
+ <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.3" />
32
+ <PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.3" />
33
+ <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
34
+ <PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.3" />
35
+ <PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.3" />
36
+ <PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.3" />
37
+ <PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.3" />
38
+ <PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.3" />
39
+ <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.3" />
40
+ <PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.3" />
41
+
42
+ <!-- ===================================================================== -->
43
+ <!-- ASP.NET Core -->
44
+ <!-- ===================================================================== -->
45
+ <!-- ASP.NET Core packages use framework reference, no explicit versions needed -->
46
+
47
+ <!-- ===================================================================== -->
48
+ <!-- Resilience -->
49
+ <!-- ===================================================================== -->
50
+ <PackageVersion Include="Polly" Version="8.6.0" />
51
+ <PackageVersion Include="Polly.Core" Version="8.6.0" />
52
+ <PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.3.0" />
53
+
54
+ <!-- ===================================================================== -->
55
+ <!-- Serialization -->
56
+ <!-- ===================================================================== -->
57
+ <PackageVersion Include="System.Text.Json" Version="10.0.3" />
58
+
59
+ </ItemGroup>
60
+
61
+ <!-- =========================================================================== -->
62
+ <!-- === PROJECT-LOCAL PACKAGES BELOW === -->
63
+ <!-- Add project-specific package versions here. Preserved during sync. -->
64
+ <!-- =========================================================================== -->
65
+ <ItemGroup>
66
+
67
+ </ItemGroup>
68
+
69
+ </Project>
@@ -0,0 +1,6 @@
1
+ {
2
+ "sdk": {
3
+ "version": "10.0.103",
4
+ "rollForward": "latestFeature"
5
+ }
6
+ }
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Levelup Software NuGet Configuration Template -->
3
+ <!-- Version: 1.1.0 -->
4
+ <configuration>
5
+ <packageSources>
6
+ <clear />
7
+ <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
8
+ </packageSources>
9
+ </configuration>
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
3
+ "settings": {
4
+ "documentationRules": {
5
+ "companyName": "{{COMPANY_NAME}}",
6
+ "copyrightText": "Copyright (c) {companyName}. All rights reserved.",
7
+ "headerDecoration": "=====================================================================",
8
+ "documentExposedElements": true,
9
+ "documentInternalElements": false,
10
+ "documentPrivateElements": false,
11
+ "documentInterfaces": true,
12
+ "documentPrivateFields": false
13
+ },
14
+ "orderingRules": {
15
+ "usingDirectivesPlacement": "outsideNamespace",
16
+ "systemUsingDirectivesFirst": true,
17
+ "blankLinesBetweenUsingGroups": "omit"
18
+ },
19
+ "namingRules": {
20
+ "includeInferredTupleElementNames": false,
21
+ "tupleElementNameCasing": "camelCase"
22
+ },
23
+ "maintainabilityRules": {
24
+ "topLevelTypes": ["class", "interface", "struct", "enum", "delegate"]
25
+ },
26
+ "layoutRules": {
27
+ "newlineAtEndOfFile": "omit",
28
+ "allowConsecutiveUsings": true
29
+ },
30
+ "readabilityRules": {
31
+ "allowBuiltInTypeAliases": true
32
+ },
33
+ "spacingRules": {
34
+ "allowLineEndingComment": true
35
+ }
36
+ }
37
+ }