One of my main goals with AI has been to get collaboration right. It’s very easy to withdraw and try to do it all on one’s own so I’ve tried hard to avoid that.
Lately, I’ve been collaborating with @veelenga as much as I can with GitHub - crystal-autobot/autobot: Ultra-efficient personal AI assistant powered by Crystal · GitHub. I’ve been trying not to overwhelm him because, I assume, he’s busy with other things. That said, 5 PRs at a time have been the norm, hehe.
I know I don’t get it right all the time. Many times, he graciously fixes whatever I got wrong and merges, and I thank him and get it as well. In order to keep it practical, it’s better just to fix than to provide feedback. The feedback is in the code, which I value.
On the other hand, I’ve been trying to contribute to the Amber Framework · GitHub repos. @crimson-knight and other collaborators have been practical about it. If the PR works, they keep it and issue feedback; if it’s too broken, they just close it and provide feedback. I like it. We move fast that way and we’ve been able to work some PRs into the projects.
Additionally, I’ve just contributed a few changes to Zawertun’s GitHub - ZaWertun/fedora-copr-crystal: https://copr.fedorainfracloud.org/coprs/zawertun/crystal/ · GitHub repo. Mainly, taking into account some of @straight-shoota’s advice and in pro of my Crystal in Fedora project.
I did a few changes to Crystalline: GitHub - renich/crystalline: A Language Server Protocol implementation for Crystal. 🔮 · GitHub and ended up maintaining a fork. This is exactly what I want to avoid doing. This is the “Tetsuo syndrome” I identified and am weary of. Yet, the author seemed not willing to take any PRs so I’ve decided to try and continue the work there on my own repo.
Lastly, my Jules ↔ crystal project, which I have poorly paid attention to, has a ton of PRs by Jules but it’s frozen in time. I have to allocate some time to rebase it and figure out which of those PRs are valid.
My intention with that project isn’t really to propose useless PRs to the crystal repo but to evaluate if Jules’ proposals are useful at all. A project like that could add up its PRs easily and constantly through time. If they prove to be useful, hey, a well-managed Jules instance can drastically help with “talacha” work in any project. It’s worth looking into.
The Path Forward: A Deterministic Collaboration Protocol
I feel this is one of our greatest challenges. Not because of the quality of our A.I. agents, but because of human nature. Wielding all this power is hard. Code generation has become incredibly cheap, but we are running the risk of making maintenance and code-review catastrophically expensive. Exporting the AI’s probabilistic flaws to upstream maintainers; essentially using them as human compilers; is an architectural failure that leads directly to burnout.
To fix this, I am restructuring my approach to AI collaboration around three strict rules. I’d love the community’s thoughts on this workflow:
1. Context Before Code (The Consensus Engine)
Before an agent writes a single line of Crystal, it must ingest the relevant module’s commit history, closed PRs, and rejected architectural proposals. The agent shouldn’t pitch code first; it should synthesize the architectural consensus and propose a plan that routes around known historical landmines.
2. Invariants First (The Adversarial Shift)
I am stopping the practice of throwing full implementations at maintainers to see what sticks. If an agent like Jules detects a performance or security issue, Phase 1 is to submit a mathematically undeniable, isolated test that fails. Force alignment on the problem (the boundary condition) before ever debating the solution. Once the maintainer agrees the test should pass, Phase 2 is submitting the fix.
3. Strict Ecosystem Compliance (Zero-Friction Integration)
I am treating repository conventions as rigid APIs. My local orchestration must format agent output to be 100% compliant with the project’s idioms, testing macros, and syntax before a PR is opened. The goal is cognitive load minimization. The reviewer should only have to evaluate the logic of the fix, without parsing alien formatting or debating stylistic choices. Furthermore, submissions must align with the maintainer’s operational cadence; no more dropping 5 PRs at once and creating asynchronous bottlenecks.
In short: AI should not be used to flood the ether with implementations. It should be used to absorb the chaos, structure a deterministic plan, and output artifacts that require near-zero cognitive load to review.
I know I don’t have this 100% figured out yet, but this is the protocol I’m building toward. Any feedback or criticism on this workflow is highly appreciated.