@yeyuan98/opencode-bioresearcher-plugin 1.4.0 → 1.5.0-alpha.0

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 (72) hide show
  1. package/README.md +35 -20
  2. package/dist/db-tools/backends/index.d.ts +11 -0
  3. package/dist/db-tools/backends/index.js +48 -0
  4. package/dist/db-tools/backends/mongodb/backend.d.ts +15 -0
  5. package/dist/db-tools/backends/mongodb/backend.js +76 -0
  6. package/dist/db-tools/backends/mongodb/connection.d.ts +27 -0
  7. package/dist/db-tools/backends/mongodb/connection.js +107 -0
  8. package/dist/db-tools/backends/mongodb/index.d.ts +4 -0
  9. package/dist/db-tools/backends/mongodb/index.js +3 -0
  10. package/dist/db-tools/backends/mongodb/translator.d.ts +30 -0
  11. package/dist/db-tools/backends/mongodb/translator.js +407 -0
  12. package/dist/db-tools/backends/mysql/backend.d.ts +15 -0
  13. package/dist/db-tools/backends/mysql/backend.js +57 -0
  14. package/dist/db-tools/backends/mysql/connection.d.ts +25 -0
  15. package/dist/db-tools/backends/mysql/connection.js +83 -0
  16. package/dist/db-tools/backends/mysql/index.d.ts +3 -0
  17. package/dist/db-tools/backends/mysql/index.js +2 -0
  18. package/dist/db-tools/backends/mysql/translator.d.ts +7 -0
  19. package/dist/db-tools/backends/mysql/translator.js +67 -0
  20. package/dist/db-tools/core/base.d.ts +17 -0
  21. package/dist/db-tools/core/base.js +51 -0
  22. package/dist/db-tools/core/config-loader.d.ts +3 -0
  23. package/dist/db-tools/core/config-loader.js +46 -0
  24. package/dist/db-tools/core/index.d.ts +2 -0
  25. package/dist/db-tools/core/index.js +2 -0
  26. package/dist/db-tools/core/jsonc-parser.d.ts +2 -0
  27. package/dist/db-tools/core/jsonc-parser.js +77 -0
  28. package/dist/db-tools/core/validator.d.ts +16 -0
  29. package/dist/db-tools/core/validator.js +118 -0
  30. package/dist/db-tools/executor.d.ts +13 -0
  31. package/dist/db-tools/executor.js +54 -0
  32. package/dist/db-tools/index.d.ts +51 -0
  33. package/dist/db-tools/index.js +27 -0
  34. package/dist/db-tools/interface/backend.d.ts +24 -0
  35. package/dist/db-tools/interface/backend.js +1 -0
  36. package/dist/db-tools/interface/connection.d.ts +21 -0
  37. package/dist/db-tools/interface/connection.js +11 -0
  38. package/dist/db-tools/interface/index.d.ts +4 -0
  39. package/dist/db-tools/interface/index.js +4 -0
  40. package/dist/db-tools/interface/query.d.ts +60 -0
  41. package/dist/db-tools/interface/query.js +1 -0
  42. package/dist/db-tools/interface/schema.d.ts +22 -0
  43. package/dist/db-tools/interface/schema.js +1 -0
  44. package/dist/db-tools/pool.d.ts +8 -0
  45. package/dist/db-tools/pool.js +49 -0
  46. package/dist/db-tools/tools/index.d.ts +27 -0
  47. package/dist/db-tools/tools/index.js +191 -0
  48. package/dist/db-tools/tools.d.ts +27 -0
  49. package/dist/db-tools/tools.js +111 -0
  50. package/dist/db-tools/types.d.ts +94 -0
  51. package/dist/db-tools/types.js +40 -0
  52. package/dist/db-tools/utils.d.ts +33 -0
  53. package/dist/db-tools/utils.js +94 -0
  54. package/dist/index.js +2 -0
  55. package/dist/skills/bioresearcher-core/README.md +210 -210
  56. package/dist/skills/bioresearcher-core/SKILL.md +128 -128
  57. package/dist/skills/bioresearcher-core/examples/contexts.json +29 -29
  58. package/dist/skills/bioresearcher-core/examples/data-exchange-example.md +303 -303
  59. package/dist/skills/bioresearcher-core/examples/template.md +49 -49
  60. package/dist/skills/bioresearcher-core/patterns/calculator.md +215 -215
  61. package/dist/skills/bioresearcher-core/patterns/data-exchange.md +406 -406
  62. package/dist/skills/bioresearcher-core/patterns/json-tools.md +263 -263
  63. package/dist/skills/bioresearcher-core/patterns/progress.md +127 -127
  64. package/dist/skills/bioresearcher-core/patterns/retry.md +110 -110
  65. package/dist/skills/bioresearcher-core/patterns/shell-commands.md +79 -79
  66. package/dist/skills/bioresearcher-core/patterns/subagent-waves.md +186 -186
  67. package/dist/skills/bioresearcher-core/patterns/table-tools.md +260 -260
  68. package/dist/skills/bioresearcher-core/patterns/user-confirmation.md +187 -187
  69. package/dist/skills/bioresearcher-core/python/template.md +273 -273
  70. package/dist/skills/bioresearcher-core/python/template.py +323 -323
  71. package/dist/skills/env-jsonc-setup/SKILL.md +206 -0
  72. package/package.json +3 -1
@@ -1,127 +1,127 @@
1
- # Progress Pattern
2
-
3
- Track and report progress at configurable intervals during batch operations.
4
-
5
- ## Overview
6
-
7
- Use this pattern when processing multiple items to provide user feedback on completion status.
8
-
9
- ## Pattern Algorithm
10
-
11
- ```
12
- 1. Initialize: total = N, completed = 0, report_interval = M
13
- 2. For each item:
14
- a. Process item
15
- b. completed += 1
16
- c. If completed % report_interval == 0 OR completed == total:
17
- - Use calculator: percent = (completed / total) * 100
18
- - Report: "Progress: X/Y (Z%)"
19
- ```
20
-
21
- ## Parameters
22
-
23
- | Parameter | Default | Description |
24
- |-----------|---------|-------------|
25
- | `total` | Required | Total number of items to process |
26
- | `completed` | 0 | Items processed so far |
27
- | `report_interval` | 3 | Report every N items |
28
-
29
- ## Tool: calculator
30
-
31
- ```
32
- calculator(formula: string, precision: number = 3)
33
- ```
34
-
35
- - Supported: +, -, *, /, ^, brackets, scientific notation
36
- - **MUST** use explicit * for multiplication: `2*(3)` not `2(3)`
37
-
38
- ## Example: Batch Processing Progress
39
-
40
- ```
41
- # Configuration
42
- total = 100
43
- completed = 0
44
- report_interval = 10
45
-
46
- # Processing loop
47
- for item in items:
48
- process(item)
49
- completed += 1
50
-
51
- if completed % report_interval == 0 or completed == total:
52
- percent = calculator(formula="(completed / total) * 100", precision=1)
53
- report("Progress: {completed}/{total} ({percent}%)")
54
- ```
55
-
56
- ## Example: Wave-Based Progress
57
-
58
- For subagent waves (3 subagents per wave):
59
-
60
- ```
61
- # Configuration
62
- total_waves = 4
63
- completed_waves = 0
64
- total_batches = 12
65
- completed_batches = 0
66
-
67
- # After each wave completes
68
- completed_waves += 1
69
- completed_batches += 3
70
- percent = calculator(formula="({completed_batches} / {total_batches}) * 100")
71
-
72
- report("Progress: {completed_batches}/{total_batches} batches ({percent}%)")
73
- ```
74
-
75
- ## Progress Report Format
76
-
77
- Standard format for consistency:
78
-
79
- ```
80
- Progress: X/Y batches completed (Z%)
81
- ```
82
-
83
- Examples:
84
- - "Progress: 3/10 batches completed (30%)"
85
- - "Progress: 6/10 batches completed (60%)"
86
- - "Progress: 10/10 batches completed (100%)"
87
-
88
- ## Percentage Calculation
89
-
90
- Use the calculator tool:
91
-
92
- ```
93
- calculator(formula="(45 / 100) * 100", precision=1)
94
- # Returns: { "formula": "(45 / 100) * 100", "result": 45 }
95
- ```
96
-
97
- ## Example: Time Estimation
98
-
99
- ```
100
- # Track start time and items per minute
101
- start_time = current_time()
102
- items_per_minute = 10
103
-
104
- # Calculate remaining time
105
- remaining_items = total - completed
106
- remaining_minutes = calculator(
107
- formula="remaining_items / items_per_minute",
108
- precision=0
109
- )
110
-
111
- report("Progress: {completed}/{total} ({percent}%) - ~{remaining_minutes} min remaining")
112
- ```
113
-
114
- ## Integration with Other Patterns
115
-
116
- | Pattern | Integration |
117
- |---------|-------------|
118
- | `retry.md` | Count retries in progress |
119
- | `subagent-waves.md` | Report after each wave |
120
- | `calculator.md` | Calculate percentages |
121
-
122
- ## Best Practices
123
-
124
- 1. **Report at meaningful intervals**: Not too frequent (spam) or too sparse (silent)
125
- 2. **Include totals**: Always show X/Y format
126
- 3. **Round percentages**: Use precision=0 or precision=1
127
- 4. **Final report**: Always report 100% completion
1
+ # Progress Pattern
2
+
3
+ Track and report progress at configurable intervals during batch operations.
4
+
5
+ ## Overview
6
+
7
+ Use this pattern when processing multiple items to provide user feedback on completion status.
8
+
9
+ ## Pattern Algorithm
10
+
11
+ ```
12
+ 1. Initialize: total = N, completed = 0, report_interval = M
13
+ 2. For each item:
14
+ a. Process item
15
+ b. completed += 1
16
+ c. If completed % report_interval == 0 OR completed == total:
17
+ - Use calculator: percent = (completed / total) * 100
18
+ - Report: "Progress: X/Y (Z%)"
19
+ ```
20
+
21
+ ## Parameters
22
+
23
+ | Parameter | Default | Description |
24
+ |-----------|---------|-------------|
25
+ | `total` | Required | Total number of items to process |
26
+ | `completed` | 0 | Items processed so far |
27
+ | `report_interval` | 3 | Report every N items |
28
+
29
+ ## Tool: calculator
30
+
31
+ ```
32
+ calculator(formula: string, precision: number = 3)
33
+ ```
34
+
35
+ - Supported: +, -, *, /, ^, brackets, scientific notation
36
+ - **MUST** use explicit * for multiplication: `2*(3)` not `2(3)`
37
+
38
+ ## Example: Batch Processing Progress
39
+
40
+ ```
41
+ # Configuration
42
+ total = 100
43
+ completed = 0
44
+ report_interval = 10
45
+
46
+ # Processing loop
47
+ for item in items:
48
+ process(item)
49
+ completed += 1
50
+
51
+ if completed % report_interval == 0 or completed == total:
52
+ percent = calculator(formula="(completed / total) * 100", precision=1)
53
+ report("Progress: {completed}/{total} ({percent}%)")
54
+ ```
55
+
56
+ ## Example: Wave-Based Progress
57
+
58
+ For subagent waves (3 subagents per wave):
59
+
60
+ ```
61
+ # Configuration
62
+ total_waves = 4
63
+ completed_waves = 0
64
+ total_batches = 12
65
+ completed_batches = 0
66
+
67
+ # After each wave completes
68
+ completed_waves += 1
69
+ completed_batches += 3
70
+ percent = calculator(formula="({completed_batches} / {total_batches}) * 100")
71
+
72
+ report("Progress: {completed_batches}/{total_batches} batches ({percent}%)")
73
+ ```
74
+
75
+ ## Progress Report Format
76
+
77
+ Standard format for consistency:
78
+
79
+ ```
80
+ Progress: X/Y batches completed (Z%)
81
+ ```
82
+
83
+ Examples:
84
+ - "Progress: 3/10 batches completed (30%)"
85
+ - "Progress: 6/10 batches completed (60%)"
86
+ - "Progress: 10/10 batches completed (100%)"
87
+
88
+ ## Percentage Calculation
89
+
90
+ Use the calculator tool:
91
+
92
+ ```
93
+ calculator(formula="(45 / 100) * 100", precision=1)
94
+ # Returns: { "formula": "(45 / 100) * 100", "result": 45 }
95
+ ```
96
+
97
+ ## Example: Time Estimation
98
+
99
+ ```
100
+ # Track start time and items per minute
101
+ start_time = current_time()
102
+ items_per_minute = 10
103
+
104
+ # Calculate remaining time
105
+ remaining_items = total - completed
106
+ remaining_minutes = calculator(
107
+ formula="remaining_items / items_per_minute",
108
+ precision=0
109
+ )
110
+
111
+ report("Progress: {completed}/{total} ({percent}%) - ~{remaining_minutes} min remaining")
112
+ ```
113
+
114
+ ## Integration with Other Patterns
115
+
116
+ | Pattern | Integration |
117
+ |---------|-------------|
118
+ | `retry.md` | Count retries in progress |
119
+ | `subagent-waves.md` | Report after each wave |
120
+ | `calculator.md` | Calculate percentages |
121
+
122
+ ## Best Practices
123
+
124
+ 1. **Report at meaningful intervals**: Not too frequent (spam) or too sparse (silent)
125
+ 2. **Include totals**: Always show X/Y format
126
+ 3. **Round percentages**: Use precision=0 or precision=1
127
+ 4. **Final report**: Always report 100% completion
@@ -1,110 +1,110 @@
1
- # Retry Pattern
2
-
3
- Retry failed operations with configurable delays and backoff.
4
-
5
- ## Overview
6
-
7
- Use this pattern when operations may fail transiently (network issues, API rate limits, temporary resource unavailability).
8
-
9
- ## Pattern Algorithm
10
-
11
- ```
12
- 1. Initialize: attempts = 0, max_attempts = N, delay = D, backoff_factor = B
13
- 2. Attempt operation
14
- 3. If success -> continue with workflow
15
- 4. If failure:
16
- a. attempts += 1
17
- b. If attempts < max_attempts:
18
- - Use blockingTimer(delay=D)
19
- - delay = delay * backoff_factor
20
- - Retry from step 2
21
- c. If attempts >= max_attempts:
22
- - Report failure or ask user via question tool
23
- ```
24
-
25
- ## Parameters
26
-
27
- | Parameter | Default | Description |
28
- |-----------|---------|-------------|
29
- | `max_attempts` | 3 | Maximum retry attempts |
30
- | `delay` | 2 | Initial wait time in seconds |
31
- | `backoff_factor` | 1 | Multiply delay after each failure (1 = constant delay) |
32
-
33
- ## Tool: blockingTimer
34
-
35
- ```
36
- blockingTimer(delay: number)
37
- ```
38
-
39
- - Maximum delay: 300 seconds
40
- - Returns: "Timer completed: waited X seconds (actual elapsed: Ys)"
41
-
42
- ## Example: Constant Delay Retry
43
-
44
- ```
45
- # Retry configuration
46
- max_attempts = 3
47
- delay = 2
48
- attempts = 0
49
-
50
- # Attempt loop
51
- while attempts < max_attempts:
52
- result = attempt_operation()
53
- if result.success:
54
- break
55
- attempts += 1
56
- if attempts < max_attempts:
57
- blockingTimer(delay=2) # Wait 2 seconds
58
- ```
59
-
60
- ## Example: Exponential Backoff Retry
61
-
62
- ```
63
- # Retry configuration
64
- max_attempts = 4
65
- delay = 1
66
- backoff_factor = 2
67
- attempts = 0
68
-
69
- # Attempt loop
70
- while attempts < max_attempts:
71
- result = attempt_operation()
72
- if result.success:
73
- break
74
- attempts += 1
75
- if attempts < max_attempts:
76
- blockingTimer(delay=delay)
77
- delay = delay * backoff_factor # 1, 2, 4, 8...
78
- ```
79
-
80
- ## When to Use
81
-
82
- | Scenario | delay | backoff_factor | max_attempts |
83
- |----------|-------|----------------|--------------|
84
- | Network timeout | 2 | 1 | 3 |
85
- | API rate limit | 5 | 2 | 4 |
86
- | File lock | 1 | 1 | 5 |
87
- | Resource unavailable | 2 | 2 | 4 |
88
-
89
- ## User Notification on Persistent Failure
90
-
91
- After all retries exhausted, use `question` tool:
92
-
93
- ```
94
- question(questions=[{
95
- "header": "Retry failed",
96
- "question": "Operation failed after 3 attempts. How would you like to proceed?",
97
- "options": [
98
- {"label": "Retry now", "description": "Try one more time immediately"},
99
- {"label": "Skip", "description": "Skip this item and continue"},
100
- {"label": "Abort", "description": "Stop the entire workflow"}
101
- ]
102
- }])
103
- ```
104
-
105
- ## Important Notes
106
-
107
- 1. **Maximum delay**: blockingTimer caps at 300 seconds
108
- 2. **Backoff calculation**: Use `calculator` tool if needed
109
- 3. **State tracking**: Track attempts in your workflow state
110
- 4. **Error logging**: Log failure reasons for debugging
1
+ # Retry Pattern
2
+
3
+ Retry failed operations with configurable delays and backoff.
4
+
5
+ ## Overview
6
+
7
+ Use this pattern when operations may fail transiently (network issues, API rate limits, temporary resource unavailability).
8
+
9
+ ## Pattern Algorithm
10
+
11
+ ```
12
+ 1. Initialize: attempts = 0, max_attempts = N, delay = D, backoff_factor = B
13
+ 2. Attempt operation
14
+ 3. If success -> continue with workflow
15
+ 4. If failure:
16
+ a. attempts += 1
17
+ b. If attempts < max_attempts:
18
+ - Use blockingTimer(delay=D)
19
+ - delay = delay * backoff_factor
20
+ - Retry from step 2
21
+ c. If attempts >= max_attempts:
22
+ - Report failure or ask user via question tool
23
+ ```
24
+
25
+ ## Parameters
26
+
27
+ | Parameter | Default | Description |
28
+ |-----------|---------|-------------|
29
+ | `max_attempts` | 3 | Maximum retry attempts |
30
+ | `delay` | 2 | Initial wait time in seconds |
31
+ | `backoff_factor` | 1 | Multiply delay after each failure (1 = constant delay) |
32
+
33
+ ## Tool: blockingTimer
34
+
35
+ ```
36
+ blockingTimer(delay: number)
37
+ ```
38
+
39
+ - Maximum delay: 300 seconds
40
+ - Returns: "Timer completed: waited X seconds (actual elapsed: Ys)"
41
+
42
+ ## Example: Constant Delay Retry
43
+
44
+ ```
45
+ # Retry configuration
46
+ max_attempts = 3
47
+ delay = 2
48
+ attempts = 0
49
+
50
+ # Attempt loop
51
+ while attempts < max_attempts:
52
+ result = attempt_operation()
53
+ if result.success:
54
+ break
55
+ attempts += 1
56
+ if attempts < max_attempts:
57
+ blockingTimer(delay=2) # Wait 2 seconds
58
+ ```
59
+
60
+ ## Example: Exponential Backoff Retry
61
+
62
+ ```
63
+ # Retry configuration
64
+ max_attempts = 4
65
+ delay = 1
66
+ backoff_factor = 2
67
+ attempts = 0
68
+
69
+ # Attempt loop
70
+ while attempts < max_attempts:
71
+ result = attempt_operation()
72
+ if result.success:
73
+ break
74
+ attempts += 1
75
+ if attempts < max_attempts:
76
+ blockingTimer(delay=delay)
77
+ delay = delay * backoff_factor # 1, 2, 4, 8...
78
+ ```
79
+
80
+ ## When to Use
81
+
82
+ | Scenario | delay | backoff_factor | max_attempts |
83
+ |----------|-------|----------------|--------------|
84
+ | Network timeout | 2 | 1 | 3 |
85
+ | API rate limit | 5 | 2 | 4 |
86
+ | File lock | 1 | 1 | 5 |
87
+ | Resource unavailable | 2 | 2 | 4 |
88
+
89
+ ## User Notification on Persistent Failure
90
+
91
+ After all retries exhausted, use `question` tool:
92
+
93
+ ```
94
+ question(questions=[{
95
+ "header": "Retry failed",
96
+ "question": "Operation failed after 3 attempts. How would you like to proceed?",
97
+ "options": [
98
+ {"label": "Retry now", "description": "Try one more time immediately"},
99
+ {"label": "Skip", "description": "Skip this item and continue"},
100
+ {"label": "Abort", "description": "Stop the entire workflow"}
101
+ ]
102
+ }])
103
+ ```
104
+
105
+ ## Important Notes
106
+
107
+ 1. **Maximum delay**: blockingTimer caps at 300 seconds
108
+ 2. **Backoff calculation**: Use `calculator` tool if needed
109
+ 3. **State tracking**: Track attempts in your workflow state
110
+ 4. **Error logging**: Log failure reasons for debugging
@@ -1,79 +1,79 @@
1
- # Shell Commands Pattern
2
-
3
- Generate shell commands using forward slashes for cross-platform compatibility.
4
-
5
- ## Overview
6
-
7
- Forward slashes (`/`) work on all major platforms:
8
- - Unix-like (Linux, macOS): Native support
9
- - Windows (Git Bash): Native support
10
- - Windows (Python): Native support via `os.path`
11
- - Windows (cmd.exe): Supported in most contexts
12
-
13
- ## Recommendation
14
-
15
- **Use forward slashes (`/`) universally** for maximum compatibility.
16
-
17
- ## Examples
18
-
19
- ### Python Script Execution
20
- ```bash
21
- uv run python <skill_path>/script.py --input ./data/file.csv --output ./results/output.xlsx
22
- ```
23
-
24
- ### Directory Creation
25
- ```bash
26
- mkdir -p .work/subdir1 .work/subdir2
27
- ```
28
-
29
- ### File Listing
30
- ```bash
31
- ls -la ./work/outputs/
32
- ```
33
-
34
- ### For Loop
35
- ```bash
36
- for file in file1.txt file2.txt file3.txt; do
37
- uv run python <skill_path>/process.py "$file"
38
- done
39
- ```
40
-
41
- ### JSON String Arguments
42
- ```bash
43
- uv run python script.py --data '{"key": "value"}'
44
- ```
45
-
46
- ### Environment Variables
47
- ```bash
48
- export MY_VAR=value
49
- uv run python script.py
50
- ```
51
-
52
- ## Windows Edge Cases
53
-
54
- In rare cases, Windows cmd.exe may not support forward slashes:
55
-
56
- | Command | Forward Slash | Alternative |
57
- |---------|---------------|-------------|
58
- | `dir` | Works | `dir ./folder` |
59
- | `mkdir` | `mkdir -p` fails | Use Python: `python -c "import os; os.makedirs('./folder', exist_ok=True)"` |
60
- | `copy` | Works | `copy ./src/file.txt ./dest/` |
61
- | `del` | Works | `del ./folder/file.txt` |
62
-
63
- > **Note:** If using pure cmd.exe (not Git Bash), the `-p` flag for `mkdir` is not supported. Use Python's `os.makedirs()` instead.
64
-
65
- ## Path Handling Guidelines
66
-
67
- 1. **Always use forward slashes** (`/`) in paths
68
- 2. **Quote paths with spaces** in all contexts
69
- 3. **Use relative paths** from project root when possible
70
- 4. **Python paths**: Forward slashes work on all platforms
71
- 5. **Skill path placeholder**: Replace `<skill_path>` with actual path from skill tool output
72
-
73
- ## Best Practices
74
-
75
- 1. **Default to forward slashes** - works 99% of the time
76
- 2. **Test on target platform** if edge cases suspected
77
- 3. **Use Python alternatives** for complex file operations
78
- 4. **Quote all paths** to handle spaces safely
79
- 5. **Avoid cmd.exe-specific syntax** (like `^` line continuation)
1
+ # Shell Commands Pattern
2
+
3
+ Generate shell commands using forward slashes for cross-platform compatibility.
4
+
5
+ ## Overview
6
+
7
+ Forward slashes (`/`) work on all major platforms:
8
+ - Unix-like (Linux, macOS): Native support
9
+ - Windows (Git Bash): Native support
10
+ - Windows (Python): Native support via `os.path`
11
+ - Windows (cmd.exe): Supported in most contexts
12
+
13
+ ## Recommendation
14
+
15
+ **Use forward slashes (`/`) universally** for maximum compatibility.
16
+
17
+ ## Examples
18
+
19
+ ### Python Script Execution
20
+ ```bash
21
+ uv run python <skill_path>/script.py --input ./data/file.csv --output ./results/output.xlsx
22
+ ```
23
+
24
+ ### Directory Creation
25
+ ```bash
26
+ mkdir -p .work/subdir1 .work/subdir2
27
+ ```
28
+
29
+ ### File Listing
30
+ ```bash
31
+ ls -la ./work/outputs/
32
+ ```
33
+
34
+ ### For Loop
35
+ ```bash
36
+ for file in file1.txt file2.txt file3.txt; do
37
+ uv run python <skill_path>/process.py "$file"
38
+ done
39
+ ```
40
+
41
+ ### JSON String Arguments
42
+ ```bash
43
+ uv run python script.py --data '{"key": "value"}'
44
+ ```
45
+
46
+ ### Environment Variables
47
+ ```bash
48
+ export MY_VAR=value
49
+ uv run python script.py
50
+ ```
51
+
52
+ ## Windows Edge Cases
53
+
54
+ In rare cases, Windows cmd.exe may not support forward slashes:
55
+
56
+ | Command | Forward Slash | Alternative |
57
+ |---------|---------------|-------------|
58
+ | `dir` | Works | `dir ./folder` |
59
+ | `mkdir` | `mkdir -p` fails | Use Python: `python -c "import os; os.makedirs('./folder', exist_ok=True)"` |
60
+ | `copy` | Works | `copy ./src/file.txt ./dest/` |
61
+ | `del` | Works | `del ./folder/file.txt` |
62
+
63
+ > **Note:** If using pure cmd.exe (not Git Bash), the `-p` flag for `mkdir` is not supported. Use Python's `os.makedirs()` instead.
64
+
65
+ ## Path Handling Guidelines
66
+
67
+ 1. **Always use forward slashes** (`/`) in paths
68
+ 2. **Quote paths with spaces** in all contexts
69
+ 3. **Use relative paths** from project root when possible
70
+ 4. **Python paths**: Forward slashes work on all platforms
71
+ 5. **Skill path placeholder**: Replace `<skill_path>` with actual path from skill tool output
72
+
73
+ ## Best Practices
74
+
75
+ 1. **Default to forward slashes** - works 99% of the time
76
+ 2. **Test on target platform** if edge cases suspected
77
+ 3. **Use Python alternatives** for complex file operations
78
+ 4. **Quote all paths** to handle spaces safely
79
+ 5. **Avoid cmd.exe-specific syntax** (like `^` line continuation)