@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.
- package/CHANGELOG.md +38 -215
- package/LICENSE +1 -1
- package/PRIVACY.md +10 -10
- package/README.md +35 -39
- package/USAGE.md +27 -50
- package/examples/.cursorrules +9 -9
- package/examples/instructions/.claude/instructions.md +65 -77
- package/examples/instructions/.cursorrules +9 -9
- package/examples/instructions/.windsurfrules +9 -9
- package/examples/instructions/VOODOCS_INSTRUCTIONS.md +62 -74
- package/examples/math_example.py +1 -1
- package/examples/phase2_test.py +1 -1
- package/examples/test_function_invariants.py +1 -1
- package/lib/cli/__init__.py +3 -3
- package/lib/cli/benchmark.py +3 -3
- package/lib/cli/context.py +1 -1
- package/lib/cli/fix.py +1 -1
- package/lib/cli/generate.py +1 -1
- package/lib/cli/init.py +10 -10
- package/lib/cli/instruct.py +1 -1
- package/lib/cli/validate.py +3 -3
- package/lib/darkarts/annotations/DARKARTS_SYMBOLS.md +95 -110
- package/lib/darkarts/annotations/TRANSFORMATION_EXAMPLES.md +27 -29
- package/lib/darkarts/annotations/parser.py +215 -36
- package/lib/darkarts/cli_darkarts.py +5 -5
- package/lib/darkarts/context/ai_instructions.py +12 -12
- package/lib/darkarts/context/ai_integrations.py +16 -16
- package/lib/darkarts/context/commands.py +4 -4
- package/lib/darkarts/context/errors.py +1 -1
- package/lib/darkarts/context/models.py +1 -1
- package/lib/darkarts/context/ui.py +4 -4
- package/lib/darkarts/context/yaml_utils.py +3 -3
- package/lib/darkarts/core/loader.py +1 -1
- package/lib/darkarts/exceptions.py +3 -3
- package/lib/darkarts/parsers/typescript/dist/parser.d.ts +16 -0
- package/lib/darkarts/parsers/typescript/dist/parser.d.ts.map +1 -1
- package/lib/darkarts/parsers/typescript/dist/parser.js +64 -0
- package/lib/darkarts/parsers/typescript/dist/parser.js.map +1 -1
- package/lib/darkarts/parsers/typescript/src/parser.ts +68 -0
- package/lib/darkarts/plugins/voodocs/ai_native_plugin.py +1 -1
- package/lib/darkarts/plugins/voodocs/annotation_validator.py +2 -2
- package/lib/darkarts/plugins/voodocs/documentation_generator.py +3 -3
- package/lib/darkarts/plugins/voodocs/html_exporter.py +4 -4
- package/lib/darkarts/plugins/voodocs/instruction_generator.py +10 -10
- package/lib/darkarts/plugins/voodocs/pdf_exporter.py +1 -1
- package/lib/darkarts/plugins/voodocs/test_generator.py +1 -1
- package/lib/darkarts/telemetry.py +5 -5
- package/lib/darkarts/validation/README.md +3 -6
- package/package.json +1 -1
- package/requirements.txt +2 -2
- package/templates/ci/github-actions.yml +64 -64
- package/templates/ci/pre-commit-hook.sh +4 -4
- package/voodocs_cli.py +1 -1
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# VooDocs Instructions for Claude Code / Cline
|
|
2
2
|
|
|
3
|
-
**Project**:
|
|
4
|
-
**Generated**: Automatically by
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
68
|
-
|
|
69
|
-
| `preconditions`
|
|
70
|
-
| `postconditions`
|
|
71
|
-
| `complexity`
|
|
72
|
-
| `invariants`
|
|
73
|
-
| `error_cases`
|
|
74
|
-
| `side_effects`
|
|
75
|
-
| `security_implications` | Optional
|
|
76
|
-
| `assumptions`
|
|
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
|
|
81
|
-
|
|
82
|
-
| `class_invariants`
|
|
83
|
-
| `state_transitions` | Valid state changes
|
|
84
|
-
| `thread_safety`
|
|
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
|
|
89
|
-
|
|
90
|
-
| `module_purpose` | High-level module description | `"User authentication and authorization"`
|
|
91
|
-
| `dependencies`
|
|
92
|
-
| `assumptions`
|
|
93
|
-
| `security_model` | Overall security approach
|
|
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
|
|
102
|
-
|
|
103
|
-
| `∧`
|
|
104
|
-
| `∨`
|
|
105
|
-
| `¬`
|
|
106
|
-
| `⇒`
|
|
107
|
-
| `⇔`
|
|
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
|
|
112
|
-
|
|
113
|
-
| `∀`
|
|
114
|
-
| `∃`
|
|
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
|
|
119
|
-
|
|
120
|
-
| `∈`
|
|
121
|
-
| `∉`
|
|
122
|
-
| `⊆`
|
|
123
|
-
| `∪`
|
|
124
|
-
| `∩`
|
|
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
|
|
129
|
-
|
|
130
|
-
| `≥`
|
|
131
|
-
| `≤`
|
|
132
|
-
| `≠`
|
|
133
|
-
| `≈`
|
|
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
|
|
138
|
-
|
|
139
|
-
| `ℕ`
|
|
140
|
-
| `ℤ`
|
|
141
|
-
| `ℝ`
|
|
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!
|
|
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
|
-
|
|
177
|
-
|
|
175
|
+
request: Request,
|
|
176
|
+
response: Response
|
|
178
177
|
): Promise<void> {
|
|
179
|
-
|
|
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
|
-
|
|
201
|
+
// Implementation
|
|
203
202
|
}
|
|
204
203
|
```
|
|
205
204
|
|
|
@@ -250,7 +249,7 @@ complexity: "O(1)"
|
|
|
250
249
|
"""
|
|
251
250
|
```
|
|
252
251
|
|
|
253
|
-
|
|
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)" #
|
|
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
|
|
372
|
+
**Generated by VooDocs** - AI-native documentation for modern development.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# VooDocs Instructions for Cursor
|
|
2
2
|
|
|
3
|
-
**Project**:
|
|
4
|
-
**Generated**: Automatically by
|
|
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
|
-
|
|
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
|
|
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!
|
|
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
|
-
|
|
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)" #
|
|
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
|
|
437
|
+
**Generated by VooDocs** - AI-native documentation for modern development.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# VooDocs Instructions for Windsurf
|
|
2
2
|
|
|
3
|
-
**Project**:
|
|
4
|
-
**Generated**: Automatically by
|
|
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
|
-
|
|
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
|
|
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!
|
|
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
|
-
|
|
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)" #
|
|
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
|
|
437
|
+
**Generated by VooDocs** - AI-native documentation for modern development.
|