<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog — Tom Girou</title><description>Notes from the trenches on PHP, Symfony, PrestaShop, CI/CD, and shipping production software — by Tom Girou, Senior Lead Dev.</description><link>https://tom-girou.dev/</link><language>en</language><item><title>Letting Non-Technical PMs Query the Codebase in Plain Language</title><link>https://tom-girou.dev/blog/ai-codebase-portal-for-pms/</link><guid isPermaLink="true">https://tom-girou.dev/blog/ai-codebase-portal-for-pms/</guid><description>Why I built a read-only AI analyst that lets project managers ask questions about a codebase and have a Jira ticket filed for them automatically — and why the whole thing only works because the AI can read but never write.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>Claude</category><category>Agent SDK</category><category>Developer Tools</category><category>Jira</category><category>PrestaShop</category></item><item><title>Adding AI Code Review to a Self-Hosted GitLab — Without Handing It the Keys</title><link>https://tom-girou.dev/blog/claude-gitlab-ai-review/</link><guid isPermaLink="true">https://tom-girou.dev/blog/claude-gitlab-ai-review/</guid><description>How I wired Claude into the merge-request pipeline of an old, self-hosted GitLab, and why the whole design hangs on never letting the AI both read an untrusted diff and hold a token at the same time.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>CI/CD</category><category>GitLab</category><category>Claude</category><category>Code Review</category><category>Security</category></item></channel></rss>