41554 blogs · [ { "id": "01a08c5c-efa0-73f6-8389-4a326a25713d", "title": "framesmith 2.2: not everything is a dashboard", "url": "https://victorvelazquez.dev/blog/framesmith-2-2-not-everything-is-a-dashboard/", "published_at": "2026-09-03T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326adfe4b8", "title": "Graph engineering, minus the buzzword", "url": "https://victorvelazquez.dev/blog/graph-engineering-minus-the-buzzword/", "published_at": "2026-08-21T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326bb9f28e", "title": "framesmith 2.0: don't ask the model for taste", "url": "https://victorvelazquez.dev/blog/framesmith-2-0-design-quality-without-an-api-key/", "published_at": "2026-08-10T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326ca09c82", "title": "framesmith 1.10: approvals that can be proven wrong", "url": "https://victorvelazquez.dev/blog/framesmith-1-10-approvals-that-can-be-wrong/", "published_at": "2026-07-27T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326cf43d7e", "title": "The most valuable spec-kit command is the optional one", "url": "https://victorvelazquez.dev/blog/the-most-valuable-spec-kit-command-is-the-optional-one/", "published_at": "2026-07-24T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326cfdd61b", "title": "framesmith 1.9: built for product screens", "url": "https://victorvelazquez.dev/blog/framesmith-1-9-built-for-product-screens/", "published_at": "2026-07-20T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326d2c8aea", "title": "Your subagents are zombie processes", "url": "https://victorvelazquez.dev/blog/your-subagents-are-zombie-processes/", "published_at": "2026-07-06T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326dad0642", "title": "framesmith 1.8: click the design, tell the agent", "url": "https://victorvelazquez.dev/blog/framesmith-1-8-point-and-tell-feedback/", "published_at": "2026-07-02T00:00:00+00:00" }, { "id": "01a08c5c-efa0-73f6-8389-4a326e366c86", "title": "framesmith 1.7: teaching an agent when a design is done", "url": "https://victorvelazquez.dev/blog/framesmith-1-7-knowing-when-a-design-is-done/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe1cc4e82", "title": "Loop engineering, after the noise", "url": "https://victorvelazquez.dev/blog/loop-engineering-after-the-noise/", "published_at": "2026-06-17T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe24318d3", "title": "A wrong reconstruction is worse than an honest stack", "url": "https://victorvelazquez.dev/blog/a-wrong-reconstruction-is-worse-than-an-honest-stack/", "published_at": "2026-06-16T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe2fb757a", "title": "MCP tool descriptions are the API: lessons from a Rails server", "url": "https://victorvelazquez.dev/blog/mcp-tool-descriptions-are-the-api/", "published_at": "2026-06-03T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe3e0ee31", "title": "Inheriting a legacy Rails app in 2026: do this, not that", "url": "https://victorvelazquez.dev/blog/inheriting-a-legacy-rails-app-in-2026/", "published_at": "2026-05-30T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe3fca71f", "title": "AI is a force multiplier for whatever habit you bring to it", "url": "https://victorvelazquez.dev/blog/ai-is-a-force-multiplier/", "published_at": "2026-05-29T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe4e7257f", "title": "Why I renamed canvas-mcp to framesmith", "url": "https://victorvelazquez.dev/blog/why-i-renamed-canvas-mcp-to-framesmith/", "published_at": "2026-05-29T00:00:00+00:00" }, { "id": "01a08c5c-efa1-73b2-8b42-46ffe5418604", "title": "The 1024-token prompt cache trap", "url": "https://victorvelazquez.dev/blog/the-1024-token-prompt-cache-trap/", "published_at": "2026-05-28T00:00:00+00:00" } ] posts Claim your blog
Back to victorvelazquez.dev
Blog · corpus.blog/blogs/victorvelazquez.dev/posts

victorvelazquez.dev

victorvelazquez.dev

2026