local-by-flywheel-fix — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited local-by-flywheel-fix (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Uh-oh! Unable to start site.
Error: Command failed:
C:\Users\<USER>\AppData\Roaming\Local\lightning-services\mysql-8...\mysqladmin.exe --host=::1 ping
mysqladmin: connect to server at '::1' failed
error: 'Lost connection to MySQL server at 'reading initial communication packet', system error: 0'This almost always means port conflict in `sites.json`. Local sometimes assigns the same port to two services (e.g., MySQL and nginx both on 10012), and only one of them can actually bind to it.
sites.json| OS | Path |
|---|---|
| Windows | %APPDATA%\Local\sites.json (= C:\Users\<you>\AppData\Roaming\Local\sites.json) |
| macOS | ~/Library/Application Support/Local/sites.json |
| Linux | ~/.config/Local/sites.json |
# Find your site by name
python -c "
import json
with open(r'C:/Users/<you>/AppData/Roaming/Local/sites.json','r',encoding='utf-8') as f:
data = json.load(f)
for site_id, site in data.items():
if 'YOUR-SITE-NAME' in str(site).lower():
print('id:', site_id)
for svc, cfg in site['services'].items():
print(f\" {svc}: ports={cfg.get('ports')}\")
"If two services share a port, that's the bug.
import json
path = r'C:/Users/<you>/AppData/Roaming/Local/sites.json'
with open(path, 'r', encoding='utf-8') as f:
data = json.load(f)
site_id = 'YOUR_SITE_ID' # from the diagnose step
# Pick an unused port in the 10000-10100 range
data[site_id]['services']['mysql']['ports']['MYSQL'] = [10010]
with open(path, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
print('saved')Then fully quit Local (right-click tray icon → Quit), reopen, start the site.
# Windows
netstat -ano -p tcp | findstr "LISTENING"
# macOS / Linux
lsof -iTCP -sTCP:LISTEN -nPAnything in the 10000–10100 range that isn't listed is fair game for Local services.
app/sql/ directory missingSymptom: site exists in Local UI but the data dir is gone — usually after a Windows backup tool or antivirus deleted it.
Fix:
# Stop the site
# Restore from Local's "Time Capsule" backup (Local → site → Snapshots)
# OR if no backup, delete the site and re-import from a `.wpress` exportmysqld.lock fileSymptom: MySQL won't start, error log says "Another instance is running".
Fix:
# Path varies by version
rm "C:/Users/<you>/Local Sites/<sitename>/app/sql/mysqld.lock"Symptom: error references missing lightning-services\<service>-<version>\<binary>.exe.
Fix:
# Folder layout
ls "C:/Users/<you>/AppData/Roaming/Local/lightning-services/"
# Should contain: mailpit-*, mariadb-*, mysql-*, nginx-*, php-*
# Reinstall: Local → Preferences → Advanced → "Reinstall Lightning Services".local domain not resolvingSymptom: test-wordpress-site.local → DNS_PROBE_FINISHED_NXDOMAIN.
Fix on Windows:
# Ensure Local's hosts entries are written
# Local → Preferences → Advanced → "Update hosts file" (requires admin)
# Verify
type C:\Windows\System32\drivers\etc\hosts | findstr localFix on macOS:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponderUsually because wp-config.php was set up for a different environment. Local injects DB credentials automatically — don't override DB_HOST, DB_USER, DB_PASSWORD, DB_NAME in your wp-config.php.
Local's "Site Shell" auto-loads wp-cli. If it doesn't:
# Inside Local's Site Shell
wp --info # should show the path
# If missing, reinstall Local (sometimes fixes broken PATH)| What | Path |
|---|---|
| Site configs | %APPDATA%\Local\sites.json |
| Lightning services | %APPDATA%\Local\lightning-services\ |
| Site files | ~\Local Sites\<sitename>\app\public\ |
| Site SQL data | ~\Local Sites\<sitename>\app\sql\ |
| Site logs (nginx, php) | ~\Local Sites\<sitename>\logs\ |
| Local app preferences | %APPDATA%\Local\preferences.json |
.wpress file from inside the broken Local (Tools → Local Connect or All-in-One Migration plugin if site is reachable)This burns 10 minutes but resolves any issue rooted in stale Local config.
C:\Users\<you>\Local Sites\.Local Sites folder.A developer working on a WordPress site on Local Windows kept hitting:
error: 'Lost connection to MySQL server at 'reading initial communication packet'
Tried: reinstalling Local, restarting Windows, disabling antivirus, deleting and recreating the site. None worked.
Real cause: sites.json had nginx.HTTP: [10012] AND mysql.MYSQL: [10012]. Both services trying to bind the same port. Nginx grabbed it first; MySQL silently failed.
Fix: change mysql.MYSQL to [10010] in sites.json, restart Local. Site started in seconds.
Skill maintained at https://github.com/OmarEltak/wp-rescue-kit
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.