## Summary
- Fix critical typo in playwright MCP server configuration
- Change @playright/mcp to @playwright/mcp in setup/components/mcp.py
- Prevents MCP installation failures due to package not found errors
## Test plan
- [x] Verify package name is correctly spelled as @playwright/mcp
- [x] Confirm no other playwright typos exist in codebase
- [x] Test MCP installation process works with corrected package name
🤖 Generated with [Claude Code](https://claude.ai/code)
# Fix Windows user directory validation for aliased usernames
## 🐛 Problem Description
The current security validation in `setup/utils/security.py` fails when
Windows users have an alias username that doesn't match their profile
directory name. This occurs because the validation constructs the
expected path using `%USERNAME%` but compares it against the actual
profile directory path.
### Issue Details
- **Error**: `Installation must be in current user's directory (A)`
- **Root Cause**: Username alias `A` != profile directory `User`
- **Affected Code**: `SecurityValidator.validate_installation_target()`
line ~390
### Example Scenario
```
USERNAME=A
USERPROFILE=C:\Users\User
Target Path=C:\Users\User\.claude
Expected by validation: \users\a\
Actual path contains: \users\user\
Result: Validation fails
```
## 🔧 Proposed Solution
Replace the username-based path construction with actual home directory
comparison
## 📋Changes Made
File: `setup/utils/security.py`
Lines ~385-395 in `validate_installation_target()` method:**
## ✅ Benefits
1. **Fixes alias username issue**: Works with any username/profile
directory combination
2. **More accurate validation**: Uses actual filesystem paths instead of
environment variables
3. **Maintains security**: Still prevents installation outside user
directory
4. **Better error messages**: Shows actual username when available
5. **Cross-platform compatibility**: `Path.home()` works on all
platforms
## 🧪 Test Cases
### Test Case 1: Alias Username (Current Bug)
```python
# Environment
USERNAME=A
USERPROFILE=C:\Users\User
# Test
target = Path("C:/Users/User/.claude")
result, errors = SecurityValidator.validate_installation_target(target)
# (currently fails)
assert result == True, "Expected success"
```
### Test Case 2: Matching Username (Currently Works)
```python
# Environment
USERNAME=User
USERPROFILE=C:\Users\User
# Test
target = Path("C:/Users/User/.claude")
result, errors = SecurityValidator.validate_installation_target(target)
assert result == True, "Expected success"
```
### Test Case 3: Outside User Directory (Should Fail)
```python
# Test
target = Path("C:/Users/OtherUser/.claude")
result, errors = SecurityValidator.validate_installation_target(target)
# Expected: Failure
assert result == False
assert "current user's directory" in errors[0]
```
## Related Issues
#190
The sys module was imported twice - once at line 14 with other standard
imports and again at line 22. The second import is redundant since sys
is already available from the first import.
Fix typo in playwright MCP server configuration where @playright/mcp
was incorrectly specified instead of @playwright/mcp, which would
cause installation failures.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
# summary
* this pr refactors superclaude’s install system to boost
maintainability, cut duplicate code, and most important fixes a bunch of
issues that ppl are having when trying to install v3
Fixes: #172#182#189#193#201#202#206#207
## key changes:
### architecture improvements
* moved shared logic to a base component class to reduce duplication.
* shifted config, file, and settings managers to a managers/ module for
better organization.
* streamlined installer logic by removing duplicate code patterns.
### component system refactoring
* unified install flow with custom hooks (_install(), _post_install()).
* components now auto-discover files, no hardcoding (sub)path names.
* centralized error handling and logging.
* security validation moved to base class for consistency.
### code organization
* simplified component files by leveraging base class logic.
* eliminated repetitive validation, install, and file management code.
* cleaned up imports after module restructure.
### loc impact
* 554 insertions, 863 deletions.
* net: 309 lines cut, with added functionality.
## next steps
### e2e tests
* test migration from v2: use an invalid `.claude/settings.json` with
superclaude config (i.e fields like `framework`, `components`) and
verify it migrates to the new metadata json.
### cleanup and chores
* there's still bits of dead code from the initial v3 commit that i've
noticed while refactoring this shit
* update documentation
* add guardrails (maybe use github actions?) so we can't push stuff that
breaks users envs onto master
* Consolidate installation check logic using SettingsManager methods
* Simplify component retrieval by delegating to SettingsManager
* Add 'all' components shorthand support in installer
* Component Base Class:
* Add constructor parameter for component subdirectory
* Move file discovery utilities to base class to avoid repetition in subclasses
* Same for validate_prerequisites, get_files_to_install, get_settings_modifications methods
* Split install method into _install and _post_install for better separation of concerns
* Add error handling wrapper around _install method
* All Component Subclasses:
* Remove duplicate code now handled by base class
* Use shared file discovery and installation logic
* Simplify metadata updates using base class methods
* Leverage base class file handling and validation
* Hooks Component:
* Fix the logic for handling both placeholder and actual hooks scenarios
* MCP Component:
* Fix npm package names and installation commands
* Move ConfigManager, SettingsManager, and FileManager from setup/core to setup/managers with new init.py for cleaner organization.
* Update SettingsManager with enhanced metadata handling methods and installation detection utilities.
While installing on my windows machine, I was getting error
```
python -m SuperClaude install
Traceback (most recent call last):
File "<frozen runpy>", line 189, in _run_module_as_main
File "<frozen runpy>", line 148, in _get_module_details
File "<frozen runpy>", line 159, in _get_module_details
File "<frozen importlib._bootstrap_external>", line 1160, in get_code
File "<frozen importlib._bootstrap_external>", line 1090, in source_to_code
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "D:\prac_repo\AI\SuperClaude\SuperClaude\__main__.py", line 206
^
SyntaxError: invalid non-printable character U+00A0
```
* refactor: pyproject.toml to use Hatchling as the build backend and update project metadata
- Changed build backend from setuptools to hatchling.
- Updated project name, description, authors, and dependencies.
- Added project URLs and scripts section for SuperClaude.
- Configured versioning and build targets for wheel and sdist.
* feat: Update installation instructions in README.md to reflect new package management commands using 'uv' instead of 'pip'.
* feat: Add uv.lock file to manage package dependencies and versions for SuperClaude
* fix: Update library usage guidelines in RULES.md to reference pyproject.toml instead of requirements.txt
docs: revise installation instructions in README.md to clarify the two-step process for SuperClaude setup, including detailed steps for package installation and running the installer.