We’re refactoring pvybutler across 4 tracks: Brand, Security, Performance, Routes/Pipeline.
Each cycle makes incremental progress on ONE task. Don’t batch.
- Read
.pvyai/specs/refactor-v1.md for the full plan
- Run
git log --oneline -5 to see recent progress
- Check
update_plan for current task status
- Find the next incomplete task in the plan
- Do ONE task — implement, test, commit
- Update the plan with the result
- Stop when you hit a natural checkpoint
¶ Track 1: Brand (Accomplish → PVYbutler)
Load the brand-rename-checklist skill first:
skill("brand-rename-checklist")
Tasks (in order):
- Rename package.json names across all workspaces
- Fix import paths after package rename
- Rename environment variables (ACCOMPLISH_* → PVYBUTLER_*)
- Rename display strings (window title, tray, about dialog)
- Rename README files (all language variants)
- Update CI/CD workflow references
- Final verification:
rg -i "accomplish" returns nothing
Commit per task: refactor(brand): <description>
Load the security-scan skill first:
skill("security-scan")
Tasks (in order):
- Audit AES-256-GCM crypto implementation
- Audit Electron context isolation and node integration
- Audit IPC handlers for input validation
- Audit rate limiter for bypass vectors
- Audit secrets handling (logging, command-line, storage)
- Audit subprocess spawning security
- Write security audit report to
docs/security-audit-v1.md
Commit per task: docs(security): audit <area>
Load the perf-profiler skill first:
skill("perf-profiler")
Tasks (in order):
- Build web UI, record bundle size, identify largest chunks
- Profile IPC overhead — identify synchronous handlers
- Measure daemon route latency for all routes
- Analyze scheduler queue and task starvation
- Measure storage migration time
- Check memory usage (main + renderer)
- Analyze task event forwarding (polling vs streaming, backpressure)
- Write perf optimization plan to
docs/perf-optimization-v1.md
Commit per task: docs(perf): profile <area>
Load the routes-api-conformance skill first:
skill("routes-api-conformance")
Tasks (in order):
- Map all daemon routes (method, path, status codes)
- Fix REST conformance violations (one route per commit)
- Add input validation to unvalidated routes
- Standardize error response format
- Clean up task pipeline dead code
- Clean up connector service interface
- Verify health endpoint (readiness vs liveness)
Commit per task: refactor(routes): <description>
Tasks (in order):
- Write unit tests for modified agent-core modules
- Write integration tests for modified IPC handlers
- Write web component tests for modified UI
- Write integration tests for storage migrations
- Write integration tests for rate limiter
- Verify 80%+ coverage on all modified files
Commit per task: test(<scope>): add tests for <module>
- One task per cycle: Don’t batch. Make ONE change, verify, commit.
- Always typecheck:
pnpm typecheck && pnpm lint:eslint after EVERY change
- Always test: Run relevant tests after EVERY change
- Never modify released migrations: They are immutable
- Backwards compatible: Don’t break existing API consumers
- Report blockers: If you can’t proceed, commit a note and stop
- Use update_plan: Track your progress so the next cycle knows where to start
- Commit with conventional commits:
type(scope): description
- All tracks complete and all tests pass
- You hit a test failure you can’t fix (report it, stop)
- You hit an ambiguity that needs human input (report it, stop)
- Natural checkpoint reached (one task done, verified, committed)