an_post_return 0.2.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.
- checksums.yaml +7 -0
- data/.cursor/mcp.json +21 -0
- data/.cursor/rules/cursor_rules.mdc +53 -0
- data/.cursor/rules/dev_workflow.mdc +215 -0
- data/.cursor/rules/self_improve.mdc +73 -0
- data/.cursor/rules/taskmaster.mdc +353 -0
- data/.env.example +14 -0
- data/.rspec +3 -0
- data/.standard.yml +3 -0
- data/.windsurfrules +474 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README-task-master.md +645 -0
- data/README.md +166 -0
- data/Rakefile +10 -0
- data/lib/an_post_return/client.rb +82 -0
- data/lib/an_post_return/configuration.rb +47 -0
- data/lib/an_post_return/errors.rb +21 -0
- data/lib/an_post_return/objects/base.rb +70 -0
- data/lib/an_post_return/objects/return_label.rb +11 -0
- data/lib/an_post_return/resources/return_label_resource.rb +123 -0
- data/lib/an_post_return/sftp/client.rb +132 -0
- data/lib/an_post_return/sftp/errors.rb +12 -0
- data/lib/an_post_return/sftp/tracking_parser.rb +116 -0
- data/lib/an_post_return/tracker.rb +97 -0
- data/lib/an_post_return/version.rb +5 -0
- data/lib/an_post_return.rb +45 -0
- data/scripts/example_prd.txt +47 -0
- data/scripts/prd.txt +147 -0
- data/scripts/sftp_test.rb +185 -0
- data/scripts/task-complexity-report.json +131 -0
- data/sig/anpost_api.rbs +4 -0
- metadata +302 -0
data/.windsurfrules
ADDED
@@ -0,0 +1,474 @@
|
|
1
|
+
Below you will find a variety of important rules spanning:
|
2
|
+
- the dev_workflow
|
3
|
+
- the .windsurfrules document self-improvement workflow
|
4
|
+
- the template to follow when modifying or adding new sections/rules to this document.
|
5
|
+
|
6
|
+
---
|
7
|
+
DEV_WORKFLOW
|
8
|
+
---
|
9
|
+
description: Guide for using meta-development script (scripts/dev.js) to manage task-driven development workflows
|
10
|
+
globs: **/*
|
11
|
+
filesToApplyRule: **/*
|
12
|
+
alwaysApply: true
|
13
|
+
---
|
14
|
+
|
15
|
+
- **Global CLI Commands**
|
16
|
+
- Task Master now provides a global CLI through the `task-master` command
|
17
|
+
- All functionality from `scripts/dev.js` is available through this interface
|
18
|
+
- Install globally with `npm install -g claude-task-master` or use locally via `npx`
|
19
|
+
- Use `task-master <command>` instead of `node scripts/dev.js <command>`
|
20
|
+
- Examples:
|
21
|
+
- `task-master list` instead of `node scripts/dev.js list`
|
22
|
+
- `task-master next` instead of `node scripts/dev.js next`
|
23
|
+
- `task-master expand --id=3` instead of `node scripts/dev.js expand --id=3`
|
24
|
+
- All commands accept the same options as their script equivalents
|
25
|
+
- The CLI provides additional commands like `task-master init` for project setup
|
26
|
+
|
27
|
+
- **Development Workflow Process**
|
28
|
+
- Start new projects by running `task-master init` or `node scripts/dev.js parse-prd --input=<prd-file.txt>` to generate initial tasks.json
|
29
|
+
- Begin coding sessions with `task-master list` to see current tasks, status, and IDs
|
30
|
+
- Analyze task complexity with `task-master analyze-complexity --research` before breaking down tasks
|
31
|
+
- Select tasks based on dependencies (all marked 'done'), priority level, and ID order
|
32
|
+
- Clarify tasks by checking task files in tasks/ directory or asking for user input
|
33
|
+
- View specific task details using `task-master show <id>` to understand implementation requirements
|
34
|
+
- Break down complex tasks using `task-master expand --id=<id>` with appropriate flags
|
35
|
+
- Clear existing subtasks if needed using `task-master clear-subtasks --id=<id>` before regenerating
|
36
|
+
- Implement code following task details, dependencies, and project standards
|
37
|
+
- Verify tasks according to test strategies before marking as complete
|
38
|
+
- Mark completed tasks with `task-master set-status --id=<id> --status=done`
|
39
|
+
- Update dependent tasks when implementation differs from original plan
|
40
|
+
- Generate task files with `task-master generate` after updating tasks.json
|
41
|
+
- Maintain valid dependency structure with `task-master fix-dependencies` when needed
|
42
|
+
- Respect dependency chains and task priorities when selecting work
|
43
|
+
- Report progress regularly using the list command
|
44
|
+
|
45
|
+
- **Task Complexity Analysis**
|
46
|
+
- Run `node scripts/dev.js analyze-complexity --research` for comprehensive analysis
|
47
|
+
- Review complexity report in scripts/task-complexity-report.json
|
48
|
+
- Or use `node scripts/dev.js complexity-report` for a formatted, readable version of the report
|
49
|
+
- Focus on tasks with highest complexity scores (8-10) for detailed breakdown
|
50
|
+
- Use analysis results to determine appropriate subtask allocation
|
51
|
+
- Note that reports are automatically used by the expand command
|
52
|
+
|
53
|
+
- **Task Breakdown Process**
|
54
|
+
- For tasks with complexity analysis, use `node scripts/dev.js expand --id=<id>`
|
55
|
+
- Otherwise use `node scripts/dev.js expand --id=<id> --subtasks=<number>`
|
56
|
+
- Add `--research` flag to leverage Perplexity AI for research-backed expansion
|
57
|
+
- Use `--prompt="<context>"` to provide additional context when needed
|
58
|
+
- Review and adjust generated subtasks as necessary
|
59
|
+
- Use `--all` flag to expand multiple pending tasks at once
|
60
|
+
- If subtasks need regeneration, clear them first with `clear-subtasks` command
|
61
|
+
|
62
|
+
- **Implementation Drift Handling**
|
63
|
+
- When implementation differs significantly from planned approach
|
64
|
+
- When future tasks need modification due to current implementation choices
|
65
|
+
- When new dependencies or requirements emerge
|
66
|
+
- Call `node scripts/dev.js update --from=<futureTaskId> --prompt="<explanation>"` to update tasks.json
|
67
|
+
|
68
|
+
- **Task Status Management**
|
69
|
+
- Use 'pending' for tasks ready to be worked on
|
70
|
+
- Use 'done' for completed and verified tasks
|
71
|
+
- Use 'deferred' for postponed tasks
|
72
|
+
- Add custom status values as needed for project-specific workflows
|
73
|
+
|
74
|
+
- **Task File Format Reference**
|
75
|
+
```
|
76
|
+
# Task ID: <id>
|
77
|
+
# Title: <title>
|
78
|
+
# Status: <status>
|
79
|
+
# Dependencies: <comma-separated list of dependency IDs>
|
80
|
+
# Priority: <priority>
|
81
|
+
# Description: <brief description>
|
82
|
+
# Details:
|
83
|
+
<detailed implementation notes>
|
84
|
+
|
85
|
+
# Test Strategy:
|
86
|
+
<verification approach>
|
87
|
+
```
|
88
|
+
|
89
|
+
- **Command Reference: parse-prd**
|
90
|
+
- Legacy Syntax: `node scripts/dev.js parse-prd --input=<prd-file.txt>`
|
91
|
+
- CLI Syntax: `task-master parse-prd --input=<prd-file.txt>`
|
92
|
+
- Description: Parses a PRD document and generates a tasks.json file with structured tasks
|
93
|
+
- Parameters:
|
94
|
+
- `--input=<file>`: Path to the PRD text file (default: sample-prd.txt)
|
95
|
+
- Example: `task-master parse-prd --input=requirements.txt`
|
96
|
+
- Notes: Will overwrite existing tasks.json file. Use with caution.
|
97
|
+
|
98
|
+
- **Command Reference: update**
|
99
|
+
- Legacy Syntax: `node scripts/dev.js update --from=<id> --prompt="<prompt>"`
|
100
|
+
- CLI Syntax: `task-master update --from=<id> --prompt="<prompt>"`
|
101
|
+
- Description: Updates tasks with ID >= specified ID based on the provided prompt
|
102
|
+
- Parameters:
|
103
|
+
- `--from=<id>`: Task ID from which to start updating (required)
|
104
|
+
- `--prompt="<text>"`: Explanation of changes or new context (required)
|
105
|
+
- Example: `task-master update --from=4 --prompt="Now we are using Express instead of Fastify."`
|
106
|
+
- Notes: Only updates tasks not marked as 'done'. Completed tasks remain unchanged.
|
107
|
+
|
108
|
+
- **Command Reference: generate**
|
109
|
+
- Legacy Syntax: `node scripts/dev.js generate`
|
110
|
+
- CLI Syntax: `task-master generate`
|
111
|
+
- Description: Generates individual task files in tasks/ directory based on tasks.json
|
112
|
+
- Parameters:
|
113
|
+
- `--file=<path>, -f`: Use alternative tasks.json file (default: 'tasks/tasks.json')
|
114
|
+
- `--output=<dir>, -o`: Output directory (default: 'tasks')
|
115
|
+
- Example: `task-master generate`
|
116
|
+
- Notes: Overwrites existing task files. Creates tasks/ directory if needed.
|
117
|
+
|
118
|
+
- **Command Reference: set-status**
|
119
|
+
- Legacy Syntax: `node scripts/dev.js set-status --id=<id> --status=<status>`
|
120
|
+
- CLI Syntax: `task-master set-status --id=<id> --status=<status>`
|
121
|
+
- Description: Updates the status of a specific task in tasks.json
|
122
|
+
- Parameters:
|
123
|
+
- `--id=<id>`: ID of the task to update (required)
|
124
|
+
- `--status=<status>`: New status value (required)
|
125
|
+
- Example: `task-master set-status --id=3 --status=done`
|
126
|
+
- Notes: Common values are 'done', 'pending', and 'deferred', but any string is accepted.
|
127
|
+
|
128
|
+
- **Command Reference: list**
|
129
|
+
- Legacy Syntax: `node scripts/dev.js list`
|
130
|
+
- CLI Syntax: `task-master list`
|
131
|
+
- Description: Lists all tasks in tasks.json with IDs, titles, and status
|
132
|
+
- Parameters:
|
133
|
+
- `--status=<status>, -s`: Filter by status
|
134
|
+
- `--with-subtasks`: Show subtasks for each task
|
135
|
+
- `--file=<path>, -f`: Use alternative tasks.json file (default: 'tasks/tasks.json')
|
136
|
+
- Example: `task-master list`
|
137
|
+
- Notes: Provides quick overview of project progress. Use at start of sessions.
|
138
|
+
|
139
|
+
- **Command Reference: expand**
|
140
|
+
- Legacy Syntax: `node scripts/dev.js expand --id=<id> [--num=<number>] [--research] [--prompt="<context>"]`
|
141
|
+
- CLI Syntax: `task-master expand --id=<id> [--num=<number>] [--research] [--prompt="<context>"]`
|
142
|
+
- Description: Expands a task with subtasks for detailed implementation
|
143
|
+
- Parameters:
|
144
|
+
- `--id=<id>`: ID of task to expand (required unless using --all)
|
145
|
+
- `--all`: Expand all pending tasks, prioritized by complexity
|
146
|
+
- `--num=<number>`: Number of subtasks to generate (default: from complexity report)
|
147
|
+
- `--research`: Use Perplexity AI for research-backed generation
|
148
|
+
- `--prompt="<text>"`: Additional context for subtask generation
|
149
|
+
- `--force`: Regenerate subtasks even for tasks that already have them
|
150
|
+
- Example: `task-master expand --id=3 --num=5 --research --prompt="Focus on security aspects"`
|
151
|
+
- Notes: Uses complexity report recommendations if available.
|
152
|
+
|
153
|
+
- **Command Reference: analyze-complexity**
|
154
|
+
- Legacy Syntax: `node scripts/dev.js analyze-complexity [options]`
|
155
|
+
- CLI Syntax: `task-master analyze-complexity [options]`
|
156
|
+
- Description: Analyzes task complexity and generates expansion recommendations
|
157
|
+
- Parameters:
|
158
|
+
- `--output=<file>, -o`: Output file path (default: scripts/task-complexity-report.json)
|
159
|
+
- `--model=<model>, -m`: Override LLM model to use
|
160
|
+
- `--threshold=<number>, -t`: Minimum score for expansion recommendation (default: 5)
|
161
|
+
- `--file=<path>, -f`: Use alternative tasks.json file
|
162
|
+
- `--research, -r`: Use Perplexity AI for research-backed analysis
|
163
|
+
- Example: `task-master analyze-complexity --research`
|
164
|
+
- Notes: Report includes complexity scores, recommended subtasks, and tailored prompts.
|
165
|
+
|
166
|
+
- **Command Reference: clear-subtasks**
|
167
|
+
- Legacy Syntax: `node scripts/dev.js clear-subtasks --id=<id>`
|
168
|
+
- CLI Syntax: `task-master clear-subtasks --id=<id>`
|
169
|
+
- Description: Removes subtasks from specified tasks to allow regeneration
|
170
|
+
- Parameters:
|
171
|
+
- `--id=<id>`: ID or comma-separated IDs of tasks to clear subtasks from
|
172
|
+
- `--all`: Clear subtasks from all tasks
|
173
|
+
- Examples:
|
174
|
+
- `task-master clear-subtasks --id=3`
|
175
|
+
- `task-master clear-subtasks --id=1,2,3`
|
176
|
+
- `task-master clear-subtasks --all`
|
177
|
+
- Notes:
|
178
|
+
- Task files are automatically regenerated after clearing subtasks
|
179
|
+
- Can be combined with expand command to immediately generate new subtasks
|
180
|
+
- Works with both parent tasks and individual subtasks
|
181
|
+
|
182
|
+
- **Task Structure Fields**
|
183
|
+
- **id**: Unique identifier for the task (Example: `1`)
|
184
|
+
- **title**: Brief, descriptive title (Example: `"Initialize Repo"`)
|
185
|
+
- **description**: Concise summary of what the task involves (Example: `"Create a new repository, set up initial structure."`)
|
186
|
+
- **status**: Current state of the task (Example: `"pending"`, `"done"`, `"deferred"`)
|
187
|
+
- **dependencies**: IDs of prerequisite tasks (Example: `[1, 2]`)
|
188
|
+
- Dependencies are displayed with status indicators (✅ for completed, ⏱️ for pending)
|
189
|
+
- This helps quickly identify which prerequisite tasks are blocking work
|
190
|
+
- **priority**: Importance level (Example: `"high"`, `"medium"`, `"low"`)
|
191
|
+
- **details**: In-depth implementation instructions (Example: `"Use GitHub client ID/secret, handle callback, set session token."`)
|
192
|
+
- **testStrategy**: Verification approach (Example: `"Deploy and call endpoint to confirm 'Hello World' response."`)
|
193
|
+
- **subtasks**: List of smaller, more specific tasks (Example: `[{"id": 1, "title": "Configure OAuth", ...}]`)
|
194
|
+
|
195
|
+
- **Environment Variables Configuration**
|
196
|
+
- **ANTHROPIC_API_KEY** (Required): Your Anthropic API key for Claude (Example: `ANTHROPIC_API_KEY=sk-ant-api03-...`)
|
197
|
+
- **MODEL** (Default: `"claude-3-7-sonnet-20250219"`): Claude model to use (Example: `MODEL=claude-3-opus-20240229`)
|
198
|
+
- **MAX_TOKENS** (Default: `"4000"`): Maximum tokens for responses (Example: `MAX_TOKENS=8000`)
|
199
|
+
- **TEMPERATURE** (Default: `"0.7"`): Temperature for model responses (Example: `TEMPERATURE=0.5`)
|
200
|
+
- **DEBUG** (Default: `"false"`): Enable debug logging (Example: `DEBUG=true`)
|
201
|
+
- **LOG_LEVEL** (Default: `"info"`): Console output level (Example: `LOG_LEVEL=debug`)
|
202
|
+
- **DEFAULT_SUBTASKS** (Default: `"3"`): Default subtask count (Example: `DEFAULT_SUBTASKS=5`)
|
203
|
+
- **DEFAULT_PRIORITY** (Default: `"medium"`): Default priority (Example: `DEFAULT_PRIORITY=high`)
|
204
|
+
- **PROJECT_NAME** (Default: `"MCP SaaS MVP"`): Project name in metadata (Example: `PROJECT_NAME=My Awesome Project`)
|
205
|
+
- **PROJECT_VERSION** (Default: `"1.0.0"`): Version in metadata (Example: `PROJECT_VERSION=2.1.0`)
|
206
|
+
- **PERPLEXITY_API_KEY**: For research-backed features (Example: `PERPLEXITY_API_KEY=pplx-...`)
|
207
|
+
- **PERPLEXITY_MODEL** (Default: `"sonar-medium-online"`): Perplexity model (Example: `PERPLEXITY_MODEL=sonar-large-online`)
|
208
|
+
|
209
|
+
- **Determining the Next Task**
|
210
|
+
- Run `task-master next` to show the next task to work on
|
211
|
+
- The next command identifies tasks with all dependencies satisfied
|
212
|
+
- Tasks are prioritized by priority level, dependency count, and ID
|
213
|
+
- The command shows comprehensive task information including:
|
214
|
+
- Basic task details and description
|
215
|
+
- Implementation details
|
216
|
+
- Subtasks (if they exist)
|
217
|
+
- Contextual suggested actions
|
218
|
+
- Recommended before starting any new development work
|
219
|
+
- Respects your project's dependency structure
|
220
|
+
- Ensures tasks are completed in the appropriate sequence
|
221
|
+
- Provides ready-to-use commands for common task actions
|
222
|
+
|
223
|
+
- **Viewing Specific Task Details**
|
224
|
+
- Run `task-master show <id>` or `task-master show --id=<id>` to view a specific task
|
225
|
+
- Use dot notation for subtasks: `task-master show 1.2` (shows subtask 2 of task 1)
|
226
|
+
- Displays comprehensive information similar to the next command, but for a specific task
|
227
|
+
- For parent tasks, shows all subtasks and their current status
|
228
|
+
- For subtasks, shows parent task information and relationship
|
229
|
+
- Provides contextual suggested actions appropriate for the specific task
|
230
|
+
- Useful for examining task details before implementation or checking status
|
231
|
+
|
232
|
+
- **Managing Task Dependencies**
|
233
|
+
- Use `task-master add-dependency --id=<id> --depends-on=<id>` to add a dependency
|
234
|
+
- Use `task-master remove-dependency --id=<id> --depends-on=<id>` to remove a dependency
|
235
|
+
- The system prevents circular dependencies and duplicate dependency entries
|
236
|
+
- Dependencies are checked for existence before being added or removed
|
237
|
+
- Task files are automatically regenerated after dependency changes
|
238
|
+
- Dependencies are visualized with status indicators in task listings and files
|
239
|
+
|
240
|
+
- **Command Reference: add-dependency**
|
241
|
+
- Legacy Syntax: `node scripts/dev.js add-dependency --id=<id> --depends-on=<id>`
|
242
|
+
- CLI Syntax: `task-master add-dependency --id=<id> --depends-on=<id>`
|
243
|
+
- Description: Adds a dependency relationship between two tasks
|
244
|
+
- Parameters:
|
245
|
+
- `--id=<id>`: ID of task that will depend on another task (required)
|
246
|
+
- `--depends-on=<id>`: ID of task that will become a dependency (required)
|
247
|
+
- Example: `task-master add-dependency --id=22 --depends-on=21`
|
248
|
+
- Notes: Prevents circular dependencies and duplicates; updates task files automatically
|
249
|
+
|
250
|
+
- **Command Reference: remove-dependency**
|
251
|
+
- Legacy Syntax: `node scripts/dev.js remove-dependency --id=<id> --depends-on=<id>`
|
252
|
+
- CLI Syntax: `task-master remove-dependency --id=<id> --depends-on=<id>`
|
253
|
+
- Description: Removes a dependency relationship between two tasks
|
254
|
+
- Parameters:
|
255
|
+
- `--id=<id>`: ID of task to remove dependency from (required)
|
256
|
+
- `--depends-on=<id>`: ID of task to remove as a dependency (required)
|
257
|
+
- Example: `task-master remove-dependency --id=22 --depends-on=21`
|
258
|
+
- Notes: Checks if dependency actually exists; updates task files automatically
|
259
|
+
|
260
|
+
- **Command Reference: validate-dependencies**
|
261
|
+
- Legacy Syntax: `node scripts/dev.js validate-dependencies [options]`
|
262
|
+
- CLI Syntax: `task-master validate-dependencies [options]`
|
263
|
+
- Description: Checks for and identifies invalid dependencies in tasks.json and task files
|
264
|
+
- Parameters:
|
265
|
+
- `--file=<path>, -f`: Use alternative tasks.json file (default: 'tasks/tasks.json')
|
266
|
+
- Example: `task-master validate-dependencies`
|
267
|
+
- Notes:
|
268
|
+
- Reports all non-existent dependencies and self-dependencies without modifying files
|
269
|
+
- Provides detailed statistics on task dependency state
|
270
|
+
- Use before fix-dependencies to audit your task structure
|
271
|
+
|
272
|
+
- **Command Reference: fix-dependencies**
|
273
|
+
- Legacy Syntax: `node scripts/dev.js fix-dependencies [options]`
|
274
|
+
- CLI Syntax: `task-master fix-dependencies [options]`
|
275
|
+
- Description: Finds and fixes all invalid dependencies in tasks.json and task files
|
276
|
+
- Parameters:
|
277
|
+
- `--file=<path>, -f`: Use alternative tasks.json file (default: 'tasks/tasks.json')
|
278
|
+
- Example: `task-master fix-dependencies`
|
279
|
+
- Notes:
|
280
|
+
- Removes references to non-existent tasks and subtasks
|
281
|
+
- Eliminates self-dependencies (tasks depending on themselves)
|
282
|
+
- Regenerates task files with corrected dependencies
|
283
|
+
- Provides detailed report of all fixes made
|
284
|
+
|
285
|
+
- **Command Reference: complexity-report**
|
286
|
+
- Legacy Syntax: `node scripts/dev.js complexity-report [options]`
|
287
|
+
- CLI Syntax: `task-master complexity-report [options]`
|
288
|
+
- Description: Displays the task complexity analysis report in a formatted, easy-to-read way
|
289
|
+
- Parameters:
|
290
|
+
- `--file=<path>, -f`: Path to the complexity report file (default: 'scripts/task-complexity-report.json')
|
291
|
+
- Example: `task-master complexity-report`
|
292
|
+
- Notes:
|
293
|
+
- Shows tasks organized by complexity score with recommended actions
|
294
|
+
- Provides complexity distribution statistics
|
295
|
+
- Displays ready-to-use expansion commands for complex tasks
|
296
|
+
- If no report exists, offers to generate one interactively
|
297
|
+
|
298
|
+
- **Command Reference: add-task**
|
299
|
+
- CLI Syntax: `task-master add-task [options]`
|
300
|
+
- Description: Add a new task to tasks.json using AI
|
301
|
+
- Parameters:
|
302
|
+
- `--file=<path>, -f`: Path to the tasks file (default: 'tasks/tasks.json')
|
303
|
+
- `--prompt=<text>, -p`: Description of the task to add (required)
|
304
|
+
- `--dependencies=<ids>, -d`: Comma-separated list of task IDs this task depends on
|
305
|
+
- `--priority=<priority>`: Task priority (high, medium, low) (default: 'medium')
|
306
|
+
- Example: `task-master add-task --prompt="Create user authentication using Auth0"`
|
307
|
+
- Notes: Uses AI to convert description into structured task with appropriate details
|
308
|
+
|
309
|
+
- **Command Reference: init**
|
310
|
+
- CLI Syntax: `task-master init`
|
311
|
+
- Description: Initialize a new project with Task Master structure
|
312
|
+
- Parameters: None
|
313
|
+
- Example: `task-master init`
|
314
|
+
- Notes:
|
315
|
+
- Creates initial project structure with required files
|
316
|
+
- Prompts for project settings if not provided
|
317
|
+
- Merges with existing files when appropriate
|
318
|
+
- Can be used to bootstrap a new Task Master project quickly
|
319
|
+
|
320
|
+
- **Code Analysis & Refactoring Techniques**
|
321
|
+
- **Top-Level Function Search**
|
322
|
+
- Use grep pattern matching to find all exported functions across the codebase
|
323
|
+
- Command: `grep -E "export (function|const) \w+|function \w+\(|const \w+ = \(|module\.exports" --include="*.js" -r ./`
|
324
|
+
- Benefits:
|
325
|
+
- Quickly identify all public API functions without reading implementation details
|
326
|
+
- Compare functions between files during refactoring (e.g., monolithic to modular structure)
|
327
|
+
- Verify all expected functions exist in refactored modules
|
328
|
+
- Identify duplicate functionality or naming conflicts
|
329
|
+
- Usage examples:
|
330
|
+
- When migrating from `scripts/dev.js` to modular structure: `grep -E "function \w+\(" scripts/dev.js`
|
331
|
+
- Check function exports in a directory: `grep -E "export (function|const)" scripts/modules/`
|
332
|
+
- Find potential naming conflicts: `grep -E "function (get|set|create|update)\w+\(" -r ./`
|
333
|
+
- Variations:
|
334
|
+
- Add `-n` flag to include line numbers
|
335
|
+
- Add `--include="*.ts"` to filter by file extension
|
336
|
+
- Use with `| sort` to alphabetize results
|
337
|
+
- Integration with refactoring workflow:
|
338
|
+
- Start by mapping all functions in the source file
|
339
|
+
- Create target module files based on function grouping
|
340
|
+
- Verify all functions were properly migrated
|
341
|
+
- Check for any unintentional duplications or omissions
|
342
|
+
|
343
|
+
---
|
344
|
+
WINDSURF_RULES
|
345
|
+
---
|
346
|
+
description: Guidelines for creating and maintaining Windsurf rules to ensure consistency and effectiveness.
|
347
|
+
globs: .windsurfrules
|
348
|
+
filesToApplyRule: .windsurfrules
|
349
|
+
alwaysApply: true
|
350
|
+
---
|
351
|
+
The below describes how you should be structuring new rule sections in this document.
|
352
|
+
- **Required Rule Structure:**
|
353
|
+
```markdown
|
354
|
+
---
|
355
|
+
description: Clear, one-line description of what the rule enforces
|
356
|
+
globs: path/to/files/*.ext, other/path/**/*
|
357
|
+
alwaysApply: boolean
|
358
|
+
---
|
359
|
+
|
360
|
+
- **Main Points in Bold**
|
361
|
+
- Sub-points with details
|
362
|
+
- Examples and explanations
|
363
|
+
```
|
364
|
+
|
365
|
+
- **Section References:**
|
366
|
+
- Use `ALL_CAPS_SECTION` to reference files
|
367
|
+
- Example: `WINDSURF_RULES`
|
368
|
+
|
369
|
+
- **Code Examples:**
|
370
|
+
- Use language-specific code blocks
|
371
|
+
```typescript
|
372
|
+
// ✅ DO: Show good examples
|
373
|
+
const goodExample = true;
|
374
|
+
|
375
|
+
// ❌ DON'T: Show anti-patterns
|
376
|
+
const badExample = false;
|
377
|
+
```
|
378
|
+
|
379
|
+
- **Rule Content Guidelines:**
|
380
|
+
- Start with high-level overview
|
381
|
+
- Include specific, actionable requirements
|
382
|
+
- Show examples of correct implementation
|
383
|
+
- Reference existing code when possible
|
384
|
+
- Keep rules DRY by referencing other rules
|
385
|
+
|
386
|
+
- **Rule Maintenance:**
|
387
|
+
- Update rules when new patterns emerge
|
388
|
+
- Add examples from actual codebase
|
389
|
+
- Remove outdated patterns
|
390
|
+
- Cross-reference related rules
|
391
|
+
|
392
|
+
- **Best Practices:**
|
393
|
+
- Use bullet points for clarity
|
394
|
+
- Keep descriptions concise
|
395
|
+
- Include both DO and DON'T examples
|
396
|
+
- Reference actual code over theoretical examples
|
397
|
+
- Use consistent formatting across rules
|
398
|
+
|
399
|
+
---
|
400
|
+
SELF_IMPROVE
|
401
|
+
---
|
402
|
+
description: Guidelines for continuously improving this rules document based on emerging code patterns and best practices.
|
403
|
+
globs: **/*
|
404
|
+
filesToApplyRule: **/*
|
405
|
+
alwaysApply: true
|
406
|
+
---
|
407
|
+
|
408
|
+
- **Rule Improvement Triggers:**
|
409
|
+
- New code patterns not covered by existing rules
|
410
|
+
- Repeated similar implementations across files
|
411
|
+
- Common error patterns that could be prevented
|
412
|
+
- New libraries or tools being used consistently
|
413
|
+
- Emerging best practices in the codebase
|
414
|
+
|
415
|
+
- **Analysis Process:**
|
416
|
+
- Compare new code with existing rules
|
417
|
+
- Identify patterns that should be standardized
|
418
|
+
- Look for references to external documentation
|
419
|
+
- Check for consistent error handling patterns
|
420
|
+
- Monitor test patterns and coverage
|
421
|
+
|
422
|
+
- **Rule Updates:**
|
423
|
+
- **Add New Rules When:**
|
424
|
+
- A new technology/pattern is used in 3+ files
|
425
|
+
- Common bugs could be prevented by a rule
|
426
|
+
- Code reviews repeatedly mention the same feedback
|
427
|
+
- New security or performance patterns emerge
|
428
|
+
|
429
|
+
- **Modify Existing Rules When:**
|
430
|
+
- Better examples exist in the codebase
|
431
|
+
- Additional edge cases are discovered
|
432
|
+
- Related rules have been updated
|
433
|
+
- Implementation details have changed
|
434
|
+
|
435
|
+
- **Example Pattern Recognition:**
|
436
|
+
```typescript
|
437
|
+
// If you see repeated patterns like:
|
438
|
+
const data = await prisma.user.findMany({
|
439
|
+
select: { id: true, email: true },
|
440
|
+
where: { status: 'ACTIVE' }
|
441
|
+
});
|
442
|
+
|
443
|
+
// Consider adding a PRISMA section in the .windsurfrules:
|
444
|
+
// - Standard select fields
|
445
|
+
// - Common where conditions
|
446
|
+
// - Performance optimization patterns
|
447
|
+
```
|
448
|
+
|
449
|
+
- **Rule Quality Checks:**
|
450
|
+
- Rules should be actionable and specific
|
451
|
+
- Examples should come from actual code
|
452
|
+
- References should be up to date
|
453
|
+
- Patterns should be consistently enforced
|
454
|
+
|
455
|
+
- **Continuous Improvement:**
|
456
|
+
- Monitor code review comments
|
457
|
+
- Track common development questions
|
458
|
+
- Update rules after major refactors
|
459
|
+
- Add links to relevant documentation
|
460
|
+
- Cross-reference related rules
|
461
|
+
|
462
|
+
- **Rule Deprecation:**
|
463
|
+
- Mark outdated patterns as deprecated
|
464
|
+
- Remove rules that no longer apply
|
465
|
+
- Update references to deprecated rules
|
466
|
+
- Document migration paths for old patterns
|
467
|
+
|
468
|
+
- **Documentation Updates:**
|
469
|
+
- Keep examples synchronized with code
|
470
|
+
- Update references to external docs
|
471
|
+
- Maintain links between related rules
|
472
|
+
- Document breaking changes
|
473
|
+
|
474
|
+
Follow WINDSURF_RULES for proper rule formatting and structure of windsurf rule sections.
|
data/CHANGELOG.md
ADDED
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
9
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
10
|
+
identity and orientation.
|
11
|
+
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
13
|
+
diverse, inclusive, and healthy community.
|
14
|
+
|
15
|
+
## Our Standards
|
16
|
+
|
17
|
+
Examples of behavior that contributes to a positive environment for our
|
18
|
+
community include:
|
19
|
+
|
20
|
+
* Demonstrating empathy and kindness toward other people
|
21
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
22
|
+
* Giving and gracefully accepting constructive feedback
|
23
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
24
|
+
and learning from the experience
|
25
|
+
* Focusing on what is best not just for us as individuals, but for the overall
|
26
|
+
community
|
27
|
+
|
28
|
+
Examples of unacceptable behavior include:
|
29
|
+
|
30
|
+
* The use of sexualized language or imagery, and sexual attention or advances of
|
31
|
+
any kind
|
32
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
33
|
+
* Public or private harassment
|
34
|
+
* Publishing others' private information, such as a physical or email address,
|
35
|
+
without their explicit permission
|
36
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
37
|
+
professional setting
|
38
|
+
|
39
|
+
## Enforcement Responsibilities
|
40
|
+
|
41
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
42
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
43
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
44
|
+
or harmful.
|
45
|
+
|
46
|
+
Community leaders have the right and responsibility to remove, edit, or reject
|
47
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
48
|
+
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
49
|
+
decisions when appropriate.
|
50
|
+
|
51
|
+
## Scope
|
52
|
+
|
53
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
54
|
+
an individual is officially representing the community in public spaces.
|
55
|
+
Examples of representing our community include using an official email address,
|
56
|
+
posting via an official social media account, or acting as an appointed
|
57
|
+
representative at an online or offline event.
|
58
|
+
|
59
|
+
## Enforcement
|
60
|
+
|
61
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
62
|
+
reported to the community leaders responsible for enforcement at
|
63
|
+
[INSERT CONTACT METHOD].
|
64
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
65
|
+
|
66
|
+
All community leaders are obligated to respect the privacy and security of the
|
67
|
+
reporter of any incident.
|
68
|
+
|
69
|
+
## Enforcement Guidelines
|
70
|
+
|
71
|
+
Community leaders will follow these Community Impact Guidelines in determining
|
72
|
+
the consequences for any action they deem in violation of this Code of Conduct:
|
73
|
+
|
74
|
+
### 1. Correction
|
75
|
+
|
76
|
+
**Community Impact**: Use of inappropriate language or other behavior deemed
|
77
|
+
unprofessional or unwelcome in the community.
|
78
|
+
|
79
|
+
**Consequence**: A private, written warning from community leaders, providing
|
80
|
+
clarity around the nature of the violation and an explanation of why the
|
81
|
+
behavior was inappropriate. A public apology may be requested.
|
82
|
+
|
83
|
+
### 2. Warning
|
84
|
+
|
85
|
+
**Community Impact**: A violation through a single incident or series of
|
86
|
+
actions.
|
87
|
+
|
88
|
+
**Consequence**: A warning with consequences for continued behavior. No
|
89
|
+
interaction with the people involved, including unsolicited interaction with
|
90
|
+
those enforcing the Code of Conduct, for a specified period of time. This
|
91
|
+
includes avoiding interactions in community spaces as well as external channels
|
92
|
+
like social media. Violating these terms may lead to a temporary or permanent
|
93
|
+
ban.
|
94
|
+
|
95
|
+
### 3. Temporary Ban
|
96
|
+
|
97
|
+
**Community Impact**: A serious violation of community standards, including
|
98
|
+
sustained inappropriate behavior.
|
99
|
+
|
100
|
+
**Consequence**: A temporary ban from any sort of interaction or public
|
101
|
+
communication with the community for a specified period of time. No public or
|
102
|
+
private interaction with the people involved, including unsolicited interaction
|
103
|
+
with those enforcing the Code of Conduct, is allowed during this period.
|
104
|
+
Violating these terms may lead to a permanent ban.
|
105
|
+
|
106
|
+
### 4. Permanent Ban
|
107
|
+
|
108
|
+
**Community Impact**: Demonstrating a pattern of violation of community
|
109
|
+
standards, including sustained inappropriate behavior, harassment of an
|
110
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
111
|
+
|
112
|
+
**Consequence**: A permanent ban from any sort of public interaction within the
|
113
|
+
community.
|
114
|
+
|
115
|
+
## Attribution
|
116
|
+
|
117
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
118
|
+
version 2.1, available at
|
119
|
+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
120
|
+
|
121
|
+
Community Impact Guidelines were inspired by
|
122
|
+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
123
|
+
|
124
|
+
For answers to common questions about this code of conduct, see the FAQ at
|
125
|
+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
126
|
+
[https://www.contributor-covenant.org/translations][translations].
|
127
|
+
|
128
|
+
[homepage]: https://www.contributor-covenant.org
|
129
|
+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
130
|
+
[Mozilla CoC]: https://github.com/mozilla/diversity
|
131
|
+
[FAQ]: https://www.contributor-covenant.org/faq
|
132
|
+
[translations]: https://www.contributor-covenant.org/translations
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2025 Andy Chong
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|