@voodocs/cli 2.2.1 → 2.2.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 (53) hide show
  1. package/CHANGELOG.md +38 -215
  2. package/LICENSE +1 -1
  3. package/PRIVACY.md +10 -10
  4. package/README.md +35 -39
  5. package/USAGE.md +27 -50
  6. package/examples/.cursorrules +9 -9
  7. package/examples/instructions/.claude/instructions.md +65 -77
  8. package/examples/instructions/.cursorrules +9 -9
  9. package/examples/instructions/.windsurfrules +9 -9
  10. package/examples/instructions/VOODOCS_INSTRUCTIONS.md +62 -74
  11. package/examples/math_example.py +1 -1
  12. package/examples/phase2_test.py +1 -1
  13. package/examples/test_function_invariants.py +1 -1
  14. package/lib/cli/__init__.py +3 -3
  15. package/lib/cli/benchmark.py +3 -3
  16. package/lib/cli/context.py +1 -1
  17. package/lib/cli/fix.py +1 -1
  18. package/lib/cli/generate.py +1 -1
  19. package/lib/cli/init.py +10 -10
  20. package/lib/cli/instruct.py +1 -1
  21. package/lib/cli/validate.py +3 -3
  22. package/lib/darkarts/annotations/DARKARTS_SYMBOLS.md +95 -110
  23. package/lib/darkarts/annotations/TRANSFORMATION_EXAMPLES.md +27 -29
  24. package/lib/darkarts/annotations/parser.py +215 -36
  25. package/lib/darkarts/cli_darkarts.py +5 -5
  26. package/lib/darkarts/context/ai_instructions.py +12 -12
  27. package/lib/darkarts/context/ai_integrations.py +16 -16
  28. package/lib/darkarts/context/commands.py +4 -4
  29. package/lib/darkarts/context/errors.py +1 -1
  30. package/lib/darkarts/context/models.py +1 -1
  31. package/lib/darkarts/context/ui.py +4 -4
  32. package/lib/darkarts/context/yaml_utils.py +3 -3
  33. package/lib/darkarts/core/loader.py +1 -1
  34. package/lib/darkarts/exceptions.py +3 -3
  35. package/lib/darkarts/parsers/typescript/dist/parser.d.ts +16 -0
  36. package/lib/darkarts/parsers/typescript/dist/parser.d.ts.map +1 -1
  37. package/lib/darkarts/parsers/typescript/dist/parser.js +64 -0
  38. package/lib/darkarts/parsers/typescript/dist/parser.js.map +1 -1
  39. package/lib/darkarts/parsers/typescript/src/parser.ts +68 -0
  40. package/lib/darkarts/plugins/voodocs/ai_native_plugin.py +1 -1
  41. package/lib/darkarts/plugins/voodocs/annotation_validator.py +2 -2
  42. package/lib/darkarts/plugins/voodocs/documentation_generator.py +3 -3
  43. package/lib/darkarts/plugins/voodocs/html_exporter.py +4 -4
  44. package/lib/darkarts/plugins/voodocs/instruction_generator.py +10 -10
  45. package/lib/darkarts/plugins/voodocs/pdf_exporter.py +1 -1
  46. package/lib/darkarts/plugins/voodocs/test_generator.py +1 -1
  47. package/lib/darkarts/telemetry.py +5 -5
  48. package/lib/darkarts/validation/README.md +3 -6
  49. package/package.json +1 -1
  50. package/requirements.txt +2 -2
  51. package/templates/ci/github-actions.yml +64 -64
  52. package/templates/ci/pre-commit-hook.sh +4 -4
  53. package/voodocs_cli.py +1 -1
@@ -1,17 +1,16 @@
1
- # Voodocs Instructions for Claude Code / Cline
1
+ # VooDocs Instructions for Claude Code / Cline
2
2
 
3
- **Project**: Voodocs Example Project
4
- **Generated**: Automatically by Voodocs
3
+ **Project**: VooDocs Example Project
4
+ **Generated**: Automatically by VooDocs
5
5
  **Purpose**: Guide AI assistants to document code using @voodocs annotations
6
6
 
7
7
  ---
8
8
 
9
9
  ## Overview
10
10
 
11
- Voodocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
11
+ VooDocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
12
12
 
13
13
  **Key Benefits:**
14
-
15
14
  - Document in AI's native language (mathematical notation)
16
15
  - Automatic generation of comprehensive tests
17
16
  - Property-based testing with Hypothesis
@@ -23,7 +22,7 @@ As an AI coding assistant, you should add `@voodocs` annotations to **every sign
23
22
 
24
23
  ## Core Principles
25
24
 
26
- When writing code with Voodocs annotations, follow these principles:
25
+ When writing code with VooDocs annotations, follow these principles:
27
26
 
28
27
  1. **Annotate as you code** - Add `@voodocs` annotations immediately when creating functions/classes
29
28
  2. **Be precise** - Use mathematical notation for exact specifications
@@ -44,7 +43,7 @@ complexity: "O(1)"
44
43
  security_implications: ["Requires authentication", "Validates account ownership"]
45
44
  */
46
45
  function withdraw(account: Account, amount: number): boolean {
47
- // Implementation
46
+ // Implementation
48
47
  }
49
48
  ```
50
49
 
@@ -56,7 +55,7 @@ class_invariants: ["this.balance >= 0", "this.transactions.length >= 0"]
56
55
  state_transitions: ["PENDING → ACTIVE", "ACTIVE → SUSPENDED", "SUSPENDED → CLOSED"]
57
56
  */
58
57
  class BankAccount {
59
- // Implementation
58
+ // Implementation
60
59
  }
61
60
  ```
62
61
 
@@ -64,33 +63,33 @@ class BankAccount {
64
63
 
65
64
  ### For Functions/Methods
66
65
 
67
- | Field | Required | Description | Example |
68
- | ----------------------- | ----------- | --------------------------------------------- | -------------------------------------------------------------- |
69
- | `preconditions` | Recommended | Conditions that must be true before execution | `["x > 0", "user is authenticated"]` |
70
- | `postconditions` | Recommended | Conditions guaranteed after execution | `["result > 0", "database updated"]` |
71
- | `complexity` | Recommended | Time/space complexity | `"O(n log n)"` or `"O(n)"` |
72
- | `invariants` | Optional | Properties that remain unchanged | `["∀ x: x ∈ original_set ⇒ x ∈ result_set"]` |
73
- | `error_cases` | Optional | Error conditions and exceptions | `["x < 0 → ValueError", "file not found → FileNotFoundError"]` |
74
- | `side_effects` | Optional | External changes made | `["Writes to database", "Sends email"]` |
75
- | `security_implications` | Optional | Security considerations | `["Requires admin role", "Rate limited"]` |
76
- | `assumptions` | Optional | Environmental assumptions | `["Database is available", "Network is stable"]` |
66
+ | Field | Required | Description | Example |
67
+ |-------|----------|-------------|---------|
68
+ | `preconditions` | Recommended | Conditions that must be true before execution | `["x > 0", "user is authenticated"]` |
69
+ | `postconditions` | Recommended | Conditions guaranteed after execution | `["result > 0", "database updated"]` |
70
+ | `complexity` | Recommended | Time/space complexity | `"O(n log n)"` or `"O(n)"` |
71
+ | `invariants` | Optional | Properties that remain unchanged | `["∀ x: x ∈ original_set ⇒ x ∈ result_set"]` |
72
+ | `error_cases` | Optional | Error conditions and exceptions | `["x < 0 → ValueError", "file not found → FileNotFoundError"]` |
73
+ | `side_effects` | Optional | External changes made | `["Writes to database", "Sends email"]` |
74
+ | `security_implications` | Optional | Security considerations | `["Requires admin role", "Rate limited"]` |
75
+ | `assumptions` | Optional | Environmental assumptions | `["Database is available", "Network is stable"]` |
77
76
 
78
77
  ### For Classes
79
78
 
80
- | Field | Description | Example |
81
- | ------------------- | --------------------------- | -------------------------------------------------- |
82
- | `class_invariants` | Properties that always hold | `["∀ item ∈ queue: item.status ∈ VALID_STATUSES"]` |
83
- | `state_transitions` | Valid state changes | `["IDLE → PROCESSING", "PROCESSING → COMPLETE"]` |
84
- | `thread_safety` | Concurrency safety | `"Thread-safe with mutex"` or `"Not thread-safe"` |
79
+ | Field | Description | Example |
80
+ |-------|-------------|---------|
81
+ | `class_invariants` | Properties that always hold | `["∀ item ∈ queue: item.status ∈ VALID_STATUSES"]` |
82
+ | `state_transitions` | Valid state changes | `["IDLE → PROCESSING", "PROCESSING → COMPLETE"]` |
83
+ | `thread_safety` | Concurrency safety | `"Thread-safe with mutex"` or `"Not thread-safe"` |
85
84
 
86
85
  ### For Modules
87
86
 
88
- | Field | Description | Example |
89
- | ---------------- | ----------------------------- | --------------------------------------------- |
90
- | `module_purpose` | High-level module description | `"User authentication and authorization"` |
91
- | `dependencies` | External dependencies | `["@supabase/supabase-js", "bcrypt"]` |
92
- | `assumptions` | Module-level assumptions | `["Database schema v2.0", "Redis available"]` |
93
- | `security_model` | Overall security approach | `"Defense in depth - fails closed"` |
87
+ | Field | Description | Example |
88
+ |-------|-------------|---------|
89
+ | `module_purpose` | High-level module description | `"User authentication and authorization"` |
90
+ | `dependencies` | External dependencies | `["@supabase/supabase-js", "bcrypt"]` |
91
+ | `assumptions` | Module-level assumptions | `["Database schema v2.0", "Redis available"]` |
92
+ | `security_model` | Overall security approach | `"Defense in depth - fails closed"` |
94
93
 
95
94
  ## DarkArts Language Guide
96
95
 
@@ -98,49 +97,49 @@ DarkArts is a mathematical notation language for precise specifications. Use the
98
97
 
99
98
  ### Logical Operators
100
99
 
101
- | Symbol | Meaning | Example |
102
- | ------ | -------------- | ------------------------------ |
103
- | `∧` | AND | `x > 0 ∧ y > 0` |
104
- | `∨` | OR | `x = 0 ∨ y = 0` |
105
- | `¬` | NOT | `¬(x < 0)` |
106
- | `⇒` | IMPLIES | `x > 0 ⇒ result > 0` |
107
- | `⇔` | IF AND ONLY IF | `result = true ⇔ user.isAdmin` |
100
+ | Symbol | Meaning | Example |
101
+ |--------|---------|---------|
102
+ | `∧` | AND | `x > 0 ∧ y > 0` |
103
+ | `∨` | OR | `x = 0 ∨ y = 0` |
104
+ | `¬` | NOT | `¬(x < 0)` |
105
+ | `⇒` | IMPLIES | `x > 0 ⇒ result > 0` |
106
+ | `⇔` | IF AND ONLY IF | `result = true ⇔ user.isAdmin` |
108
107
 
109
108
  ### Quantifiers
110
109
 
111
- | Symbol | Meaning | Example |
112
- | ------ | ------------ | ------------------------- |
113
- | `∀` | FOR ALL | `∀ x ∈ items: x > 0` |
114
- | `∃` | THERE EXISTS | `∃ x ∈ items: x = target` |
110
+ | Symbol | Meaning | Example |
111
+ |--------|---------|---------|
112
+ | `∀` | FOR ALL | `∀ x ∈ items: x > 0` |
113
+ | `∃` | THERE EXISTS | `∃ x ∈ items: x = target` |
115
114
 
116
115
  ### Set Operations
117
116
 
118
- | Symbol | Meaning | Example |
119
- | ------ | --------------- | ---------------------- |
120
- | `∈` | IN / ELEMENT OF | `x ∈ valid_values` |
121
- | `∉` | NOT IN | `x ∉ blacklist` |
122
- | `⊆` | SUBSET OF | `result ⊆ input` |
123
- | `∪` | UNION | `result = set1 ∪ set2` |
124
- | `∩` | INTERSECTION | `common = set1 ∩ set2` |
117
+ | Symbol | Meaning | Example |
118
+ |--------|---------|---------|
119
+ | `∈` | IN / ELEMENT OF | `x ∈ valid_values` |
120
+ | `∉` | NOT IN | `x ∉ blacklist` |
121
+ | `⊆` | SUBSET OF | `result ⊆ input` |
122
+ | `∪` | UNION | `result = set1 ∪ set2` |
123
+ | `∩` | INTERSECTION | `common = set1 ∩ set2` |
125
124
 
126
125
  ### Comparisons
127
126
 
128
- | Symbol | Meaning | Example |
129
- | ------ | --------------------- | ------------------- |
130
- | `≥` | GREATER THAN OR EQUAL | `x ≥ 0` |
131
- | `≤` | LESS THAN OR EQUAL | `x ≤ 100` |
132
- | `≠` | NOT EQUAL | `x ≠ 0` |
133
- | `≈` | APPROXIMATELY EQUAL | `result ≈ expected` |
127
+ | Symbol | Meaning | Example |
128
+ |--------|---------|---------|
129
+ | `≥` | GREATER THAN OR EQUAL | `x ≥ 0` |
130
+ | `≤` | LESS THAN OR EQUAL | `x ≤ 100` |
131
+ | `≠` | NOT EQUAL | `x ≠ 0` |
132
+ | `≈` | APPROXIMATELY EQUAL | `result ≈ expected` |
134
133
 
135
134
  ### Number Sets
136
135
 
137
- | Symbol | Meaning | Example |
138
- | ------ | ------------------------------ | ------- |
139
- | `ℕ` | Natural numbers (0, 1, 2, ...) | `n ∈ ℕ` |
140
- | `ℤ` | Integers (..., -1, 0, 1, ...) | `x ∈ ℤ` |
141
- | `ℝ` | Real numbers | `x ∈ ℝ` |
136
+ | Symbol | Meaning | Example |
137
+ |--------|---------|---------|
138
+ | `ℕ` | Natural numbers (0, 1, 2, ...) | `n ∈ ℕ` |
139
+ | `ℤ` | Integers (..., -1, 0, 1, ...) | `x ∈ ℤ` |
140
+ | `ℝ` | Real numbers | `x ∈ ℝ` |
142
141
 
143
- **Tip**: You can use plain English too! Voodocs understands both mathematical notation and natural language. Mix them for clarity.
142
+ **Tip**: You can use plain English too! VooDocs understands both mathematical notation and natural language. Mix them for clarity.
144
143
 
145
144
  ## Examples
146
145
 
@@ -173,10 +172,10 @@ side_effects: [
173
172
  complexity: "O(1)"
174
173
  */
175
174
  async function transferMoney(
176
- request: Request,
177
- response: Response
175
+ request: Request,
176
+ response: Response
178
177
  ): Promise<void> {
179
- // Implementation
178
+ // Implementation
180
179
  }
181
180
  ```
182
181
 
@@ -199,7 +198,7 @@ assumptions: [
199
198
  complexity: "O(n) where n = props.items.length"
200
199
  */
201
200
  function ItemList({ items, onSelect }: ItemListProps) {
202
- // Implementation
201
+ // Implementation
203
202
  }
204
203
  ```
205
204
 
@@ -250,7 +249,7 @@ complexity: "O(1)"
250
249
  """
251
250
  ```
252
251
 
253
- Voodocs generates:
252
+ VooDocs generates:
254
253
 
255
254
  ```python
256
255
  # Generated test
@@ -268,7 +267,6 @@ def test_property_based_add(x, y):
268
267
  ### 1. Be Specific with Preconditions
269
268
 
270
269
  **Good:**
271
-
272
270
  ```python
273
271
  preconditions: [
274
272
  "amount > 0",
@@ -278,7 +276,6 @@ preconditions: [
278
276
  ```
279
277
 
280
278
  **Avoid:**
281
-
282
279
  ```python
283
280
  preconditions: ["valid input"] # Too vague
284
281
  ```
@@ -286,7 +283,6 @@ preconditions: ["valid input"] # Too vague
286
283
  ### 2. Use Mathematical Notation for Precision
287
284
 
288
285
  **Good:**
289
-
290
286
  ```python
291
287
  postconditions: [
292
288
  "∀ x ∈ result: x ∈ input", # All results are from input
@@ -295,7 +291,6 @@ postconditions: [
295
291
  ```
296
292
 
297
293
  **Avoid:**
298
-
299
294
  ```python
300
295
  postconditions: ["returns filtered list"] # Imprecise
301
296
  ```
@@ -303,21 +298,18 @@ postconditions: ["returns filtered list"] # Imprecise
303
298
  ### 3. Always Specify Complexity
304
299
 
305
300
  **Good:**
306
-
307
301
  ```python
308
302
  complexity: "O(n log n)"
309
303
  ```
310
304
 
311
305
  **Also Good:**
312
-
313
306
  ```python
314
- complexity: "O(n)" # Voodocs infers space as O(1)
307
+ complexity: "O(n)" # VooDocs infers space as O(1)
315
308
  ```
316
309
 
317
310
  ### 4. Document Security Implications
318
311
 
319
312
  **Good:**
320
-
321
313
  ```python
322
314
  security_implications: [
323
315
  "Requires admin role",
@@ -329,7 +321,6 @@ security_implications: [
329
321
  ### 5. Specify Error Cases
330
322
 
331
323
  **Good:**
332
-
333
324
  ```python
334
325
  error_cases: [
335
326
  "amount <= 0 → ValueError",
@@ -341,7 +332,6 @@ error_cases: [
341
332
  ### 6. Use Invariants for Loops and Recursion
342
333
 
343
334
  **Good:**
344
-
345
335
  ```python
346
336
  invariants: [
347
337
  "∀ iteration: 0 <= i < len(arr)",
@@ -352,7 +342,6 @@ invariants: [
352
342
  ### 7. Document Side Effects
353
343
 
354
344
  **Good:**
355
-
356
345
  ```python
357
346
  side_effects: [
358
347
  "Writes to database",
@@ -362,7 +351,6 @@ side_effects: [
362
351
  ```
363
352
 
364
353
  **Avoid:**
365
-
366
354
  ```python
367
355
  side_effects: ["Does stuff"] # Too vague
368
356
  ```
@@ -381,4 +369,4 @@ side_effects: ["Does stuff"] # Too vague
381
369
 
382
370
  By documenting in DarkArts language, you're not just writing comments - you're creating a **formal specification** that generates tests, documentation, and API specs automatically.
383
371
 
384
- **Generated by Voodocs** - AI-native documentation for modern development.
372
+ **Generated by VooDocs** - AI-native documentation for modern development.
@@ -1,14 +1,14 @@
1
- # Voodocs Instructions for Cursor
1
+ # VooDocs Instructions for Cursor
2
2
 
3
- **Project**: Voodocs Example Project
4
- **Generated**: Automatically by Voodocs
3
+ **Project**: VooDocs Example Project
4
+ **Generated**: Automatically by VooDocs
5
5
  **Purpose**: Guide AI assistants to document code using @voodocs annotations
6
6
 
7
7
  ---
8
8
 
9
9
  ## Overview
10
10
 
11
- Voodocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
11
+ VooDocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
12
12
 
13
13
  **Key Benefits:**
14
14
  - Document in AI's native language (mathematical notation)
@@ -22,7 +22,7 @@ As an AI coding assistant, you should add `@voodocs` annotations to **every sign
22
22
 
23
23
  ## Core Principles
24
24
 
25
- When writing code with Voodocs annotations, follow these principles:
25
+ When writing code with VooDocs annotations, follow these principles:
26
26
 
27
27
  1. **Annotate as you code** - Add `@voodocs` annotations immediately when creating functions/classes
28
28
  2. **Be precise** - Use mathematical notation for exact specifications
@@ -137,7 +137,7 @@ DarkArts is a mathematical notation language for precise specifications. Use the
137
137
  | `ℤ` | Integers (..., -1, 0, 1, ...) | `x ∈ ℤ` |
138
138
  | `ℝ` | Real numbers | `x ∈ ℝ` |
139
139
 
140
- **Tip**: You can use plain English too! Voodocs understands both mathematical notation and natural language. Mix them for clarity.
140
+ **Tip**: You can use plain English too! VooDocs understands both mathematical notation and natural language. Mix them for clarity.
141
141
 
142
142
  ## Examples
143
143
 
@@ -314,7 +314,7 @@ complexity: "O(1)"
314
314
  """
315
315
  ```
316
316
 
317
- Voodocs generates:
317
+ VooDocs generates:
318
318
 
319
319
  ```python
320
320
  # Generated test
@@ -369,7 +369,7 @@ complexity: "O(n log n)"
369
369
 
370
370
  **Also Good:**
371
371
  ```python
372
- complexity: "O(n)" # Voodocs infers space as O(1)
372
+ complexity: "O(n)" # VooDocs infers space as O(1)
373
373
  ```
374
374
 
375
375
  ### 4. Document Security Implications
@@ -434,4 +434,4 @@ side_effects: ["Does stuff"] # Too vague
434
434
 
435
435
  By documenting in DarkArts language, you're not just writing comments - you're creating a **formal specification** that generates tests, documentation, and API specs automatically.
436
436
 
437
- **Generated by Voodocs** - AI-native documentation for modern development.
437
+ **Generated by VooDocs** - AI-native documentation for modern development.
@@ -1,14 +1,14 @@
1
- # Voodocs Instructions for Windsurf
1
+ # VooDocs Instructions for Windsurf
2
2
 
3
- **Project**: Voodocs Example Project
4
- **Generated**: Automatically by Voodocs
3
+ **Project**: VooDocs Example Project
4
+ **Generated**: Automatically by VooDocs
5
5
  **Purpose**: Guide AI assistants to document code using @voodocs annotations
6
6
 
7
7
  ---
8
8
 
9
9
  ## Overview
10
10
 
11
- Voodocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
11
+ VooDocs is an AI-native documentation system that allows you to document code in **DarkArts language** - a mathematical and logical notation that AI naturally understands. Your annotations will be automatically translated into human-readable documentation, property-based tests, and API specifications.
12
12
 
13
13
  **Key Benefits:**
14
14
  - Document in AI's native language (mathematical notation)
@@ -22,7 +22,7 @@ As an AI coding assistant, you should add `@voodocs` annotations to **every sign
22
22
 
23
23
  ## Core Principles
24
24
 
25
- When writing code with Voodocs annotations, follow these principles:
25
+ When writing code with VooDocs annotations, follow these principles:
26
26
 
27
27
  1. **Annotate as you code** - Add `@voodocs` annotations immediately when creating functions/classes
28
28
  2. **Be precise** - Use mathematical notation for exact specifications
@@ -137,7 +137,7 @@ DarkArts is a mathematical notation language for precise specifications. Use the
137
137
  | `ℤ` | Integers (..., -1, 0, 1, ...) | `x ∈ ℤ` |
138
138
  | `ℝ` | Real numbers | `x ∈ ℝ` |
139
139
 
140
- **Tip**: You can use plain English too! Voodocs understands both mathematical notation and natural language. Mix them for clarity.
140
+ **Tip**: You can use plain English too! VooDocs understands both mathematical notation and natural language. Mix them for clarity.
141
141
 
142
142
  ## Examples
143
143
 
@@ -314,7 +314,7 @@ complexity: "O(1)"
314
314
  """
315
315
  ```
316
316
 
317
- Voodocs generates:
317
+ VooDocs generates:
318
318
 
319
319
  ```python
320
320
  # Generated test
@@ -369,7 +369,7 @@ complexity: "O(n log n)"
369
369
 
370
370
  **Also Good:**
371
371
  ```python
372
- complexity: "O(n)" # Voodocs infers space as O(1)
372
+ complexity: "O(n)" # VooDocs infers space as O(1)
373
373
  ```
374
374
 
375
375
  ### 4. Document Security Implications
@@ -434,4 +434,4 @@ side_effects: ["Does stuff"] # Too vague
434
434
 
435
435
  By documenting in DarkArts language, you're not just writing comments - you're creating a **formal specification** that generates tests, documentation, and API specs automatically.
436
436
 
437
- **Generated by Voodocs** - AI-native documentation for modern development.
437
+ **Generated by VooDocs** - AI-native documentation for modern development.