These prompts are from my development and learning chats, edited for clarity while preserving the requests. Expand a card to read the full prompt.
01 / The reason
Moving files was slowing down testing.
One project needed frequent testing across several systems. Each iteration meant moving files to and from Google Drive and copying notes through Google Keep. Those repeated handoffs were taking enough time that I started looking for another solution.
I looked at CrossPaste and Remote Clipboard. What mattered to me was an automatic workflow: copy text or a small file on one computer, then paste on another. I wanted a small app shaped around that interaction, with no separate send step.
My prompt · The starting pointExpandCollapseI want to create a cross-platform program that works on Mac, Windows, and Linux. Its core functionality is to automatically sync clipboard contents across devices on a local network. There are programs that do something similar, such as CrossPaste and Remote Clipboard. The most important thing for my use case is automatic updating: I want to copy something on my Mac and paste it on my Windows machine right away, without a separate step to send the item to the other clipboard. It would also be nice to support small file transfers this way. I'd like to copy a file smaller than five megabytes so I can quickly move small ZIP files between computers. For device pairing and discovery, we can use an approach similar to CrossPaste's device connection flow: https://crosspaste.com/en/tutorial/devices The UI should be minimal and show the ten most recent clipboard items. Clicking an older item should put it back into the clipboard on that device. That list should be accessible from the tray: a menu-bar item at the top of the screen on Mac and an icon in the system tray on Windows. I'm less familiar with Linux, but I'd like an equivalent experience there. The UI only needs to handle connecting devices and managing the clipboard. I'd like to use Zig because of its cross-platform compilation support.
02 / Build, then test
Prove the basic interaction.
I chose Zig for cross-platform builds and kept the scope small: automatic text and small-file transfers, device pairing, and ten recent copies in a tray menu.
Running it on my Mac and Windows machine exposed the gaps. Both could discover each other, but pairing failed. Later, only one side showed a paired device. Local history updated while the other computer received nothing.
Reporting those specific observations helped the agent narrow down the failures. My acceptance test became simple: both computers must agree they're paired, and copying in either direction must work. A successful build alone couldn't establish that.
03 / Follow the friction
Measure problems. Limit the fixes.
Once syncing worked, Windows-to-Mac copies sometimes took three seconds. I asked for timing logs instead of more UI. They showed the wait happened before sending; writing the Mac clipboard took milliseconds. That led to a fix for reconnecting after inactivity—and a test covering the pause between copies.
Daily use guided the polish: shorter previews, six-digit pairing codes, clearer menu labels, and launching directly into the tray.
VoiceInk also used the clipboard for dictation I didn't want to share. I set a limit on the solution:
My prompt · A boundary on extra workExpandCollapseI'm not sure whether this is possible, but my preferred outcome would be to avoid sending VoiceInk transcripts to the other computer. Those transcripts are usually just me talking to you here, and I have no intention or need to paste them onto another device. It isn't worth building elaborate detection for this. I'd only want to do it if it's something like a one-line fix.
VoiceInk already marked those automatic pastes, so we could skip them with a small change. Choosing what not to build was part of keeping the app useful.
04 / Improve my prompting
Could I have asked for this better?
Some bugs made me question my instructions. The app could display a pairing code while preventing the connection work needed to use it. Coming from web development, I wondered whether my unfamiliarity with desktop concurrency had caused the problem.
I opened a separate learning chat to ask for feedback on my approach.
My prompt · Learning from the processExpandCollapseI want to look back at the process we used to reach the application's current state. I'd like to understand where our instructions, goals, or implementation led to the challenges we faced. How can I give better instructions to navigate or avoid similar complications in future projects?
My prompt · My follow-up on desktop developmentExpandCollapseI didn't see the Mac tray performance issue covered in the retrospective. What led to it? How should I approach software development with low-level languages? I'm mostly used to building web apps, so concurrency and threading are new to me. I'd also like to understand how the application could display a pairing code while being unable to handle the connection at the same time.
The feedback separated implementation mistakes from opportunities to improve my prompts. What I'd called thread locking was work stopping while a window stayed open. I could ask for the required behavior without prescribing a threading solution.
Three questions I'll carry into future projects:
- What could stop the app making progress? Include open menus and dialogs.
- Which real-world scenarios will we test? Include idle periods, restarts, and failures.
- What has actually been verified? Distinguish compilation, automated tests, and use on real devices.
I used the agent to examine my process as well as the code. The goal was better questions and clearer expectations, without needing to anticipate every technical bug.
05 / Get another review
Have another agent check the work.
I asked Astra to review code quality and security. It reproduced six issues that our existing tests hadn't caught:
- Old messages could be accepted again.
- A fake device announcement could interrupt syncing.
- Untrusted connections could crowd out real transfers.
- A temporarily busy clipboard could lose an update.
- Offline devices couldn't always be forgotten.
- Some valid filenames were mistaken for app commands.
I then asked Claude to validate the findings and implement the fixes. Having a different agent check concrete findings caught real problems beyond my everyday testing. It was a useful review process, though not a formal security audit.
06 / Try it
Clipboard Sync 0.2.9
Development builds. Install the same version on both computers and connect over your local network.
Mac: ad-hoc signed, not notarized. Windows: unsigned. Your OS may warn before opening. See Apple's guidance on opening downloaded apps.
No rich text, folders, or multi-file copies. Linux support is in the source; these downloads are for Mac and Windows. See the repository for compatibility and troubleshooting.