Skip to content

Automated Rule Port Agent #67

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 147 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
e346bd9
stash
ScriptedAlchemy Jul 24, 2025
7f386d6
feat: ts to go agent
ScriptedAlchemy Jul 24, 2025
32b6146
feat: ts to go agent
ScriptedAlchemy Jul 25, 2025
5c35aea
feat: ts to go agent
ScriptedAlchemy Jul 25, 2025
e988128
feat: ts to go agent
ScriptedAlchemy Jul 25, 2025
1d1108d
feat: ts to go agent
ScriptedAlchemy Jul 25, 2025
76b3ba1
feat: ts to go agent
ScriptedAlchemy Jul 25, 2025
6d0f4b8
feat: enhance eslint-to-go-porter with complete workflow
ScriptedAlchemy Jul 25, 2025
062492b
fix: make rules argument optional when using --all flag
ScriptedAlchemy Jul 25, 2025
9c4672f
fix: add progress output for -p flag
ScriptedAlchemy Jul 25, 2025
7cf85c8
fix: remove raw stream debug output from progress mode
ScriptedAlchemy Jul 25, 2025
3cc4091
fix: redesign porter to work with Claude as autonomous agent
ScriptedAlchemy Jul 25, 2025
2a57453
feat: add adjacent-overload-signatures rule
ScriptedAlchemy Jul 25, 2025
d23ff65
feat: ts to go agent
ScriptedAlchemy Jul 25, 2025
36fab45
feat: add ban-tslint-comment rule
ScriptedAlchemy Jul 25, 2025
fb4341b
feat: add class-methods-use-this rule
ScriptedAlchemy Jul 25, 2025
bda48d8
feat: add consistent-generic-constructors rule
ScriptedAlchemy Jul 25, 2025
707f83f
Merge remote-tracking branch 'origin/main' into autoporter
ScriptedAlchemy Jul 25, 2025
c4e6ce8
feat: expose message IDs in diagnostics and update rule count
ScriptedAlchemy Jul 25, 2025
d4adabc
fix: resolve critical rule configuration and test failures
ScriptedAlchemy Jul 25, 2025
0cf604f
feat: add consistent-type-exports rule
ScriptedAlchemy Jul 26, 2025
98cd623
feat: add consistent-type-imports rule
ScriptedAlchemy Jul 26, 2025
cf3a297
feat: add default-param-last rule
ScriptedAlchemy Jul 26, 2025
8c8952a
fix: update automation prompts with recent project discoveries
ScriptedAlchemy Jul 26, 2025
c393eb1
fix: resolve critical rule configuration and test failures
ScriptedAlchemy Jul 26, 2025
101a22c
fix: correct porter working directory and remove @typescript-eslint i…
ScriptedAlchemy Jul 26, 2025
9afe449
stash
ScriptedAlchemy Jul 26, 2025
ec91ba4
stash
ScriptedAlchemy Jul 26, 2025
f416b33
stash
ScriptedAlchemy Jul 26, 2025
f417471
chore: add .idea directory to .gitignore and remove tracked IDE files
ScriptedAlchemy Jul 26, 2025
92a4938
chore: improve progress logging in automation script
ScriptedAlchemy Jul 26, 2025
cf0260b
chore: enhance automation script with detailed progress tracking
ScriptedAlchemy Jul 26, 2025
c179728
Merge remote-tracking branch 'refs/remotes/origin/main' into autoporter
ScriptedAlchemy Jul 26, 2025
f262fba
stash
ScriptedAlchemy Jul 26, 2025
cfc35b5
fix: critical linter bug and rule fixes for 94/96 passing tests
ScriptedAlchemy Jul 27, 2025
8544fa8
fix: improve circular reference detection in consistent-indexed-objec…
ScriptedAlchemy Jul 27, 2025
38f3ca3
fix: optimize ban-ts-comment and consistent-type-exports for performance
ScriptedAlchemy Jul 27, 2025
41b009b
fix: resolve IPC timeout issues in TypeScript tests
ScriptedAlchemy Jul 27, 2025
caba58a
fix: restore unreachable code detection in ban-ts-comment rule
ScriptedAlchemy Jul 27, 2025
dba99fd
fix: add missing rule registrations to IPC handler
ScriptedAlchemy Jul 28, 2025
b6e8194
fix: correct malformed ruleTester.run calls in test files
ScriptedAlchemy Jul 28, 2025
6f2c655
fix: comprehensive TypeScript-ESLint rule compatibility improvements
ScriptedAlchemy Jul 28, 2025
f04b8e4
Resolve merge conflicts from origin/main
ScriptedAlchemy Jul 28, 2025
468a9c2
Complete merge: resolve final API conflict
ScriptedAlchemy Jul 28, 2025
a7250a8
Fix merge conflict in cmd.go
ScriptedAlchemy Jul 28, 2025
e7a2806
Fix consistent_type_imports: re-enable type parameter shadowing detec…
ScriptedAlchemy Jul 29, 2025
b19a763
Fix ban-ts-comment and consistent-indexed-object-style rules, update …
ScriptedAlchemy Jul 29, 2025
2527617
Clean up API and remove debug files
ScriptedAlchemy Jul 29, 2025
6cc7f7e
fix: restore original IPC types and enhance rule configuration support
ScriptedAlchemy Jul 29, 2025
60ff22c
fix: resolve ban_ts_comment test failure and clean up porter directory
ScriptedAlchemy Jul 29, 2025
21aba61
refactor: remove --api flag to align with main branch
ScriptedAlchemy Jul 29, 2025
2f8594f
feat: register adjacent-overload-signatures rule
ScriptedAlchemy Jul 29, 2025
6aa4660
xx
ScriptedAlchemy Jul 30, 2025
ce911ac
Merge remote-tracking branch 'origin/main' into autoporter
ScriptedAlchemy Jul 30, 2025
fe40931
fix: add missing gobwas/glob dependency
ScriptedAlchemy Jul 30, 2025
86056af
chore: update typescript-go submodule reference
ScriptedAlchemy Jul 30, 2025
a6bc36a
fix: regenerate pnpm-lock.yaml with npm registry
ScriptedAlchemy Jul 30, 2025
6bbcdc0
fix: resolve TypeScript errors in test tools
ScriptedAlchemy Jul 30, 2025
93615c9
fix: temporarily exclude problematic test files from TypeScript checking
ScriptedAlchemy Jul 30, 2025
16c0332
fix: resolve remaining TypeScript errors in test files
ScriptedAlchemy Jul 30, 2025
f72c479
fix: properly handle test file imports and module declarations
ScriptedAlchemy Jul 30, 2025
da0f694
fix: use original test files with minimal import changes
ScriptedAlchemy Jul 30, 2025
c409d4b
fix: remove @typescript-eslint/types import from no-useless-construct…
ScriptedAlchemy Jul 30, 2025
aa73b0a
fix: add explicit .js extensions for module imports in fixtures
ScriptedAlchemy Jul 30, 2025
909f3d7
style: apply prettier formatting to all files
ScriptedAlchemy Jul 30, 2025
1a2db04
fix: remove describe usage from consistent-type-imports test
ScriptedAlchemy Jul 30, 2025
86a5263
style: format consistent-type-imports test file
ScriptedAlchemy Jul 30, 2025
cea3354
fix: improve IPC mode rule handling and add --ipc flag support
ScriptedAlchemy Jul 30, 2025
f0dfae2
fix: add messageId support and fix test framework
ScriptedAlchemy Jul 30, 2025
e5497b5
fix: add messageId to Diagnostic TypeScript interface
ScriptedAlchemy Jul 30, 2025
0d707d3
style: format code with prettier
ScriptedAlchemy Jul 30, 2025
2e697aa
fix: update test snapshots for virtual file system
ScriptedAlchemy Jul 30, 2025
494cb50
fix: improve IPC error handling in Node.js service
ScriptedAlchemy Jul 30, 2025
dae5610
feat: integrate original TypeScript-ESLint test files with RSLint inf…
ScriptedAlchemy Jul 30, 2025
ecde96c
fix: add global type declarations for TypeScript-ESLint compatibility
ScriptedAlchemy Jul 30, 2025
90cdd3e
fix: exclude consistent-return.test.ts from TypeScript compilation
ScriptedAlchemy Jul 30, 2025
74fc495
fix: remove AST_NODE_TYPES usage from consistent-return test
ScriptedAlchemy Jul 30, 2025
10f2fcb
fix: exclude consistent-type-assertions.test.ts from TypeScript compi…
ScriptedAlchemy Jul 30, 2025
2f83274
style: apply prettier formatting to all files
ScriptedAlchemy Jul 30, 2025
3cdb607
fix: enable config file rules in IPC mode and update API test snapshots
ScriptedAlchemy Jul 30, 2025
faec37a
fix: improve TypeScript-ESLint rule detection and update test snapshots
ScriptedAlchemy Jul 30, 2025
d898946
style: fix formatting in RuleTester.ts
ScriptedAlchemy Jul 30, 2025
88062e7
fix: remove problematic timeouts from RuleTester and increase test ti…
ScriptedAlchemy Jul 30, 2025
3150446
feat: adapt downloaded TypeScript-ESLint test files to RSLint framework
ScriptedAlchemy Jul 31, 2025
ee1c17a
fix: adapt ban-ts-comment test structure to use single rule name
ScriptedAlchemy Jul 31, 2025
668ba52
fix: remove syntax error and test debug files
ScriptedAlchemy Jul 31, 2025
f4d00e9
fix: improve consistent-indexed-object-style circular reference detec…
ScriptedAlchemy Jul 31, 2025
3904948
fix: implement decorator detection in consistent-type-imports rule
ScriptedAlchemy Jul 31, 2025
a2880de
chore: clean up temporary test files
ScriptedAlchemy Jul 31, 2025
d8125f7
fix: handle self-referential interfaces in consistent-indexed-object-…
ScriptedAlchemy Jul 31, 2025
94d9715
fix: resolve IPC communication crashes with Unicode content
ScriptedAlchemy Jul 31, 2025
3217c3a
fix: implement missing rule registration functions
ScriptedAlchemy Jul 31, 2025
a8786fd
fix: resolve TypeScript compilation errors in RuleTester
ScriptedAlchemy Jul 31, 2025
3e18467
fix: apply prettier formatting
ScriptedAlchemy Jul 31, 2025
de45513
fix(consistent-indexed-object-style): improve circular reference dete…
ScriptedAlchemy Jul 31, 2025
8059463
fix: update consistent-indexed-object-style rule to match TypeScript-…
ScriptedAlchemy Jul 31, 2025
550e19a
fix: allow TypeScript syntax errors in program creation
ScriptedAlchemy Jul 31, 2025
f179f42
fix: correct TypeScript-ESLint test imports and remove unsupported pr…
ScriptedAlchemy Jul 31, 2025
0cd3feb
fix: apply code formatting with Prettier
ScriptedAlchemy Jul 31, 2025
771e147
fix: resolve AST panic in type assertion handling
ScriptedAlchemy Aug 1, 2025
07d4a16
fix: apply prettier formatting to test files
ScriptedAlchemy Aug 1, 2025
44f1be5
fix: remove unused encoding/json import
ScriptedAlchemy Aug 1, 2025
de9a86a
fix: update test files from TypeScript-ESLint and add missing globals
ScriptedAlchemy Aug 1, 2025
0f78417
fix: add missing RuleTester options parameter
ScriptedAlchemy Aug 1, 2025
bc8f920
Merge branch 'main' into autoporter
ScriptedAlchemy Aug 1, 2025
6594bdc
fix: resolve RSLint configuration and testing issues
ScriptedAlchemy Aug 1, 2025
a4ff8d5
fix: multiple test framework and rule fixes
ScriptedAlchemy Aug 1, 2025
85bf750
fix: resolve RSLint test failures and column position mismatches
ScriptedAlchemy Aug 1, 2025
69b0eab
fix: resolve TypeScript compilation errors in test files
ScriptedAlchemy Aug 1, 2025
c209c37
fix: ban-ts-comment rule failing tests
ScriptedAlchemy Aug 1, 2025
944a334
fix: fix 24 TypeScript-ESLint rule test failures using parallel sub-a…
ScriptedAlchemy Aug 2, 2025
da711b6
fix: complete remaining rule fixes and infrastructure updates
ScriptedAlchemy Aug 2, 2025
6a56b9d
Merge branch 'main' into autoporter
ScriptedAlchemy Aug 2, 2025
a5e3de1
Merge remote-tracking branch 'origin/autoporter' into autoporter
ScriptedAlchemy Aug 2, 2025
79ff257
fix: convert all TypeScript-ESLint rule tests to rstest framework
ScriptedAlchemy Aug 2, 2025
9d4bac6
fix: implement missing rule functionality and fix test failures
ScriptedAlchemy Aug 2, 2025
391e508
fix: format rslint.jsonc with prettier
ScriptedAlchemy Aug 2, 2025
e629001
Merge branch 'main' into autoporter
ScriptedAlchemy Aug 2, 2025
2adfb9a
fix: update import paths to github.com/web-infra-dev/rslint and add m…
ScriptedAlchemy Aug 2, 2025
608c993
chore: remove backup file
ScriptedAlchemy Aug 2, 2025
16b67fc
fix: resolve all Go linting issues (go vet, go fmt)
ScriptedAlchemy Aug 2, 2025
f6dbac0
fix: resolve TypeScript variable redeclaration errors
ScriptedAlchemy Aug 2, 2025
455f862
fix: consistent_indexed_object_style circular reference detection
ScriptedAlchemy Aug 2, 2025
94f20bc
fix: explicit_member_accessibility rule position and suggestions issues
ScriptedAlchemy Aug 2, 2025
ec3b0eb
fix: resolve all TypeScript-ESLint rule test failures and VS Code ext…
ScriptedAlchemy Aug 2, 2025
ffd99fc
Work in progress: simplifying no_unused_vars usage detection
ScriptedAlchemy Aug 2, 2025
399467c
fix(explicit-module-boundary-types): comprehensive rule implementation
ScriptedAlchemy Aug 3, 2025
fbc2574
fix(no_unused_vars): correctly handle function parameter reporting
ScriptedAlchemy Aug 3, 2025
bd6d829
debug: add ls command to verify binary is created in CI
ScriptedAlchemy Aug 3, 2025
0151222
debug: add logging to understand binary path resolution
ScriptedAlchemy Aug 3, 2025
d4ff444
fix: TypeScript error in catch block
ScriptedAlchemy Aug 3, 2025
2953552
debug: add more detailed binary diagnostics
ScriptedAlchemy Aug 3, 2025
a241e1d
fix: use shell when spawning rslint binary
ScriptedAlchemy Aug 3, 2025
2d0cc70
fix: use Node.js wrapper script to spawn rslint
ScriptedAlchemy Aug 3, 2025
57cd7f4
fix: explicitly set GOOS and GOARCH for Linux builds in CI
ScriptedAlchemy Aug 3, 2025
0985062
fix: include rslint binary in package files
ScriptedAlchemy Aug 3, 2025
c9f5e3e
fix: use CJS wrapper to spawn rslint for better compatibility
ScriptedAlchemy Aug 3, 2025
8741cf5
fix: revert service.ts to main branch version
ScriptedAlchemy Aug 3, 2025
b3b63e0
fix: align service binary resolution with CLI tests
ScriptedAlchemy Aug 3, 2025
667741f
fix: use 'node' instead of process.execPath and format Go files
ScriptedAlchemy Aug 3, 2025
f045cd5
fix: prioritize direct binary over CJS wrapper for better CI compatib…
ScriptedAlchemy Aug 3, 2025
0ebd5ce
fix: include binary in package files to ensure CI availability
ScriptedAlchemy Aug 3, 2025
91d3a9b
fix: always use CJS wrapper approach for RSLint binary spawn
ScriptedAlchemy Aug 3, 2025
0217ce7
fix: use 'node' command directly for CI compatibility
ScriptedAlchemy Aug 3, 2025
265dd05
fix: spawn CJS wrapper directly like CLI tests
ScriptedAlchemy Aug 3, 2025
e25bd37
fix: use direct binary instead of CJS wrapper for service
ScriptedAlchemy Aug 3, 2025
5ad1d87
fix: implement robust binary resolution with multiple fallbacks
ScriptedAlchemy Aug 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,5 @@ vite.config.ts.timestamp-*
npm/*/rslint
npm/*/rslint.exe

.idea
# IntelliJ IDEA
.idea/
310 changes: 310 additions & 0 deletions AUTOMATED_PORTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
# RSLint Automated Rule Porting

This document describes the `automated-port.js` script that automatically ports missing TypeScript-ESLint rules to Go for RSLint.

## Overview

The `automated-port.js` script is designed to automatically discover and port TypeScript-ESLint rules that haven't been implemented in RSLint yet. It uses Claude CLI to analyze the original TypeScript implementations and create equivalent Go versions following RSLint's patterns.

**IMPORTANT**: This script **ONLY creates and edits files**. It does **NOT run tests or builds**. After porting rules, use `/Users/bytedance/dev/rslint/automate-build-test.js` to test the newly created rules.

## Features

- **Automatic Rule Discovery**: Compares TypeScript-ESLint's rules with existing RSLint rules to identify missing ones
- **Source Context Fetching**: Downloads original TypeScript rule and test files for accurate porting
- **Concurrent Processing**: Supports parallel porting with configurable worker count
- **Claude CLI Integration**: Uses Claude to analyze and port rules with proper context
- **Progress Tracking**: Real-time progress monitoring and detailed logging
- **Retry Logic**: Automatic retry on failures with exponential backoff
- **File Locking**: Prevents conflicts during concurrent execution

## Prerequisites

1. **Claude CLI**: Must be installed and configured
2. **Settings File**: Uses `.claude/settings.local.json` for configuration
3. **Node.js**: Script requires Node.js runtime
4. **Network Access**: Needs access to GitHub for fetching TypeScript-ESLint sources

## Usage

### Basic Commands

```bash
# List missing rules (no porting)
node automated-port.js --list

# Show current porting status
node automated-port.js --status

# Port all missing rules sequentially
node automated-port.js

# Port with concurrent processing (3 workers)
node automated-port.js --concurrent --workers=3
```

### Command Line Options

| Option | Description | Default |
| -------------- | ------------------------------------ | ---------- |
| `--list` | List missing rules only (no porting) | - |
| `--status` | Show porting status and progress | - |
| `--concurrent` | Enable parallel processing | Sequential |
| `--workers=N` | Number of concurrent workers | 3 |
| `--help, -h` | Show help message | - |

### Examples

```bash
# Quick status check
node automated-port.js --status

# See what needs to be ported
node automated-port.js --list

# Start porting (recommended for first run)
node automated-port.js

# Fast parallel porting (for experienced users)
node automated-port.js --concurrent --workers=5
```

## How It Works

### 1. Rule Discovery Process

The script automatically:

1. Fetches the complete list of TypeScript-ESLint rules from GitHub
2. Scans existing RSLint rules in `internal/rules/`
3. Identifies missing rules that need to be ported
4. Prioritizes rules for porting

### 2. Porting Process

For each missing rule, the script:

1. **Fetches Sources**: Downloads the original TypeScript rule and test files
2. **Analyzes Rule**: Uses Claude to understand the rule's behavior and requirements
3. **Creates Go Implementation**: Ports the rule to Go following RSLint patterns
4. **Transforms Tests**: Adapts TypeScript tests to RSLint's test framework
5. **Registers Rule**: Adds the rule to appropriate configuration files

**Note**: The script stops here - it does NOT run tests or builds. Testing is handled by the separate `automate-build-test.js` script.

### 3. File Structure

The script creates files in these locations:

```
/Users/bytedance/dev/rslint/
├── internal/rules/
│ └── rule_name/
│ ├── rule_name.go # Go rule implementation
│ └── rule_name_test.go # Go tests
└── packages/rslint-test-tools/tests/typescript-eslint/rules/
└── rule-name.test.ts # TypeScript test file
```

## Progress Monitoring

### Sequential Mode

```
[14:30:15] → Starting rule porting with 42 missing rules
[14:30:16] 🔄 Porting adjacent-overload-signatures (attempt 1/3)
[14:30:17] → Fetching original sources from GitHub...
[14:30:18] ✓ Original sources fetched (rule: yes, test: yes)
[14:30:19] 🔄 Claude: Analyzing TypeScript-ESLint rule structure...
[14:30:45] ✓ Successfully ported adjacent-overload-signatures in 29s
```

### Concurrent Mode

```
[14:30:15] → Starting rule porting with 42 missing rules
[14:30:15] → Starting worker 1: porter_0_a1b2c3d4
[14:30:15] → Starting worker 2: porter_1_e5f6g7h8
[14:30:15] → Starting worker 3: porter_2_i9j0k1l2
[14:30:30] ◆ Progress: 3/42 (7% success) - 2 ported, 0 failed, 1 in progress
```

## Configuration

### Claude Settings

The script uses the existing `.claude/settings.local.json` configuration:

- Same permissions as `automate-build-test.js`
- File locking hooks for concurrent safety
- Streaming JSON output format

### Timeout Settings

- **Per Rule**: 10 minutes maximum
- **Retry Attempts**: 3 attempts per rule
- **Retry Delay**: 10 seconds between attempts
- **Rate Limiting**: 3 seconds between rules

## Error Handling

### Common Issues and Solutions

#### 1. Network Errors

```
✗ Failed to fetch rule sources from GitHub
```

**Solution**: Check internet connection and GitHub availability

#### 2. Claude CLI Errors

```
✗ Claude CLI failed (exit code 1)
```

**Solution**: Verify Claude CLI is installed and configured properly

#### 3. Permission Errors

```
✗ Could not acquire file lock
```

**Solution**: Ensure no other instances are running, or reduce worker count

#### 4. Timeout Errors

```
✗ Rule timed out after 10 minutes
```

**Solution**: Rule may be complex; will retry automatically

### Retry Logic

- Rules are retried up to 3 times on failure
- Each retry includes fresh source fetching
- Exponential backoff prevents API rate limiting
- Failed rules are reported in final summary

## Output and Results

### Success Indicators

- ✅ New Go rule files created in `internal/rules/`
- ✅ Test files created in `packages/rslint-test-tools/tests/`
- ✅ Rules registered in configuration files
- ✅ Files created without errors

**Note**: Build and test success must be verified separately using `automate-build-test.js`

### Final Summary

```
=== Porting Summary ===

✓ Successfully ported 38 rules:
- adjacent-overload-signatures
- array-type
- await-thenable
...

✗ Failed to port 4 rules:
- complex-rule-1: Parse error in TypeScript source
- complex-rule-2: Timeout after 3 attempts
...
```

## Best Practices

### When to Use Sequential Mode

- **First time** running the script
- **Debugging** specific rule issues
- **Limited resources** or slow network
- **Learning** how the porting process works

### When to Use Concurrent Mode

- **Large batches** of rules to port
- **Fast network** and powerful machine
- **Experienced** with the porting process
- **Time-sensitive** porting needs

### Recommended Workflow

1. Start with `--status` to see scope
2. Use `--list` to review missing rules
3. Run sequentially first time: `node automated-port.js`
4. Use concurrent for subsequent runs: `node automated-port.js --concurrent`
5. **Test the ported rules**: `node automate-build-test.js` (separate script)
6. **Fix any issues**: Use `automate-build-test.js` with Claude to fix test failures

## Troubleshooting

### Script Won't Start

1. Check Node.js is installed: `node --version`
2. Verify Claude CLI: `claude --version`
3. Check settings file exists: `.claude/settings.local.json`

### Rules Failing to Port

1. Check GitHub connectivity
2. Verify Claude CLI authentication
3. Review error messages in output
4. Try single rule porting first

### Concurrent Issues

1. Reduce worker count: `--workers=1`
2. Check file system permissions
3. Ensure no other automation running
4. Clear tmp directory if needed

### Performance Issues

1. Use `--concurrent` for speed
2. Increase worker count: `--workers=5`
3. Check network bandwidth
4. Monitor system resources

## Integration with Existing Workflow

This script complements the existing `automate-build-test.js`:

1. **Port Rules**: Use `automated-port.js` to create new rules (file creation only)
2. **Test Rules**: Use `automate-build-test.js` to verify they work (builds and tests)
3. **Fix Issues**: Use `automate-build-test.js` with Claude to fix any test failures
4. **Build System**: Integrate both into CI/CD pipeline

**Key Separation**: `automated-port.js` creates files, `automate-build-test.js` runs tests and builds.

## Contributing

When modifying the script:

1. Follow same patterns as `automate-build-test.js`
2. Test with both sequential and concurrent modes
3. Verify error handling works correctly
4. Update this documentation

## Support

For issues or questions:

1. Check existing RSLint documentation
2. Review Claude CLI documentation
3. Examine `automate-build-test.js` for patterns
4. Test with simple rules first

---

**Related Files:**

- `automate-build-test.js` - Test automation script
- `.claude/settings.local.json` - Claude CLI configuration
- `eslint-to-go-porter/` - Alternative porting tool
- `internal/rules/` - Existing Go rule implementations
Loading
Loading