{"id":24,"date":"2025-03-01T18:00:00","date_gmt":"2025-03-01T18:00:00","guid":{"rendered":"https:\/\/codegenblog.kinsta.cloud\/?p=24"},"modified":"2025-08-26T18:40:00","modified_gmt":"2025-08-26T18:40:00","slug":"swe-agents-are-better-with-codemods","status":"publish","type":"post","link":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/","title":{"rendered":"SWE Agents are Better with Codemods"},"content":{"rendered":"\n<p><strong>Coding assistants like Cursor have brought us into a new era of programming.<\/strong><br>But there&#8217;s a class of programming tasks that remain outside their reach: large-scale, systematic modifications across large codebases. You wouldn&#8217;t ask an AI to delete all your dead code or reorganize your entire component hierarchy\u2014the tooling just isn&#8217;t there.<\/p>\n\n\n\n<p>That\u2019s where&nbsp;<strong>codemods<\/strong>&nbsp;come in.<\/p>\n\n\n\n<p>A codemod is a program that operates on a codebase, and when you give an AI agent the ability to write and execute them, these platform-level tasks fall below the high-water mark of AI capabilities.<\/p>\n\n\n\n<p><strong>Here\u2019s a real example:<\/strong><br>We asked&nbsp;<a href=\"https:\/\/docs.devin.ai\/get-started\/devin-intro\">Devin<\/a>&nbsp;(an autonomous SWE agent) to&nbsp;<em>&#8220;delete all dead code&#8221;<\/em>&nbsp;from our codebase. Instead of making hundreds of individual edits, Devin&nbsp;<a href=\"https:\/\/github.com\/codegen-sh\/codegen\/pull\/660\/files#diff-199b0c459adf1639f664fed248fa48bb640412aeacbe61cd89475d6598284b5f\">wrote and debugged a program<\/a>&nbsp;that systematically removed unused code while handling edge cases like tests, decorators, and indirect references.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/codegen-sh\/codegen\/pull\/660\">View the PR<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/app.devin.ai\/sessions\/a49eac87da644fa9ac1144fe130b847e\">View on Devin<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"248\" src=\"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1024x248.webp\" alt=\"\" class=\"wp-image-26\" srcset=\"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1024x248.webp 1024w, https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-300x73.webp 300w, https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-768x186.webp 768w, https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1536x372.webp 1536w, https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-710x172.webp 710w, https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image.webp 1686w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">This modifies over 40 files and correctly removes old code, passes lint and tests, etc.<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-made-this-work\">What made this work?<\/h3>\n\n\n\n<p>Devin operates like a state machine: write a codemod \u2192 run it through the linter \u2192 analyze failures \u2192 refine.<\/p>\n\n\n\n<p>Each iteration adds handling for new edge cases until the codemod successfully transforms the codebase.<\/p>\n\n\n\n<p>This mirrors the same cycle developers use for large-scale refactors\u2014just automated.<\/p>\n\n\n\n<p>The best part?&nbsp;<strong>You don\u2019t have to blindly trust the AI.<\/strong><\/p>\n\n\n\n<p>The codemod is a program you can review, run, and verify with linter and test output. You can edit it to add exceptions or improve coverage\u2014much better than reviewing hundreds of individual diffs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-try-it-yourself\">Try it yourself<\/h2>\n\n\n\n<p>Want to try this with your own Devin instance?<\/p>\n\n\n\n<p>Install the Codegen CLI:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>uv tool install codegen --python 3.13<\/code><\/pre>\n\n\n\n<p>Then use this prompt:<br><a href=\"https:\/\/gist.github.com\/jayhack\/d742b701a38a5b5274517afce2d253c2\">Download Dead Code Deletion Prompt<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-supported-codemods-with-codegen\">Supported Codemods with Codegen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Convert Promises to async\/await:<\/strong><br>Automatically convert Promise chains to async\/await syntax across your codebase.<\/li>\n\n\n\n<li><strong>Organize Codebase:<\/strong><br>Move and reorganize code safely with automatic import and dependency handling.<\/li>\n\n\n\n<li><strong>Modernize React:<\/strong><br>Convert class components to hooks, standardize props, and organize components.<\/li>\n\n\n\n<li><strong>Migrate Tests to Pytest:<\/strong><br>Convert unittest test suites to modern pytest style.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>We\u2019d love to hear how it works for you.<br>Join our&nbsp;<a href=\"https:\/\/community.codegen.com\/\">community<\/a>&nbsp;and share your experience developing codemods with Devin or other code assistants.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coding assistants like Cursor have brought us into a new era of programming.But there&#8217;s a class of programming tasks that remain outside their reach: large-scale, systematic modifications across large codebases. You wouldn&#8217;t ask an AI to delete all your dead code or reorganize your entire component hierarchy\u2014the tooling just isn&#8217;t there. That\u2019s where&nbsp;codemods&nbsp;come in. A [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5,8],"tags":[],"class_list":["post-24","post","type-post","status-publish","format-standard","hentry","category-codemods-and-refactoring","category-engineering-insights"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SWE Agents are Better with Codemods - The Codegen Blog<\/title>\n<meta name=\"description\" content=\"Learn how to delete dead code with AI and simplify your codebase using advanced codemods and programming techniques.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SWE Agents are Better with Codemods\" \/>\n<meta property=\"og:description\" content=\"Learn how to delete dead code with AI and simplify your codebase using advanced codemods and programming techniques.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codegen Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-01T18:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-26T18:40:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1686\" \/>\n\t<meta property=\"og:image:height\" content=\"408\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Codegen Technical Staff\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@codegen\" \/>\n<meta name=\"twitter:site\" content=\"@codegen\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Codegen Technical Staff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/\"},\"author\":{\"name\":\"Codegen Technical Staff\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/person\\\/d11d8bf8745420c643fcb0f3213aa92f\"},\"headline\":\"SWE Agents are Better with Codemods\",\"datePublished\":\"2025-03-01T18:00:00+00:00\",\"dateModified\":\"2025-08-26T18:40:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/\"},\"wordCount\":383,\"publisher\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/image-1024x248.webp\",\"articleSection\":[\"Codemods &amp; Refactoring\",\"Engineering Insights\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/\",\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/\",\"name\":\"SWE Agents are Better with Codemods - The Codegen Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/image-1024x248.webp\",\"datePublished\":\"2025-03-01T18:00:00+00:00\",\"dateModified\":\"2025-08-26T18:40:00+00:00\",\"description\":\"Learn how to delete dead code with AI and simplify your codebase using advanced codemods and programming techniques.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#primaryimage\",\"url\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/image-1024x248.webp\",\"contentUrl\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/image-1024x248.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/swe-agents-are-better-with-codemods\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/codegen.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SWE Agents are Better with Codemods\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/\",\"name\":\"The Codegen Blog\",\"description\":\"What we\u2019re building, how we\u2019re building it, and what we\u2019re learning along the way.\",\"publisher\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/codegen.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#organization\",\"name\":\"Codegen\",\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Codegen_Lockup-Black-1024h-scaled.png\",\"contentUrl\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Codegen_Lockup-Black-1024h-scaled.png\",\"width\":2560,\"height\":528,\"caption\":\"Codegen\"},\"image\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/codegen\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/person\\\/d11d8bf8745420c643fcb0f3213aa92f\",\"name\":\"Codegen Technical Staff\",\"sameAs\":[\"https:\\\/\\\/codegenblog.kinsta.cloud\"],\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/author\\\/cg-admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SWE Agents are Better with Codemods - The Codegen Blog","description":"Learn how to delete dead code with AI and simplify your codebase using advanced codemods and programming techniques.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/","og_locale":"en_US","og_type":"article","og_title":"SWE Agents are Better with Codemods","og_description":"Learn how to delete dead code with AI and simplify your codebase using advanced codemods and programming techniques.","og_url":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/","og_site_name":"The Codegen Blog","article_published_time":"2025-03-01T18:00:00+00:00","article_modified_time":"2025-08-26T18:40:00+00:00","og_image":[{"width":1686,"height":408,"url":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image.webp","type":"image\/webp"}],"author":"Codegen Technical Staff","twitter_card":"summary_large_image","twitter_creator":"@codegen","twitter_site":"@codegen","twitter_misc":{"Written by":"Codegen Technical Staff","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#article","isPartOf":{"@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/"},"author":{"name":"Codegen Technical Staff","@id":"https:\/\/codegen.com\/blog\/#\/schema\/person\/d11d8bf8745420c643fcb0f3213aa92f"},"headline":"SWE Agents are Better with Codemods","datePublished":"2025-03-01T18:00:00+00:00","dateModified":"2025-08-26T18:40:00+00:00","mainEntityOfPage":{"@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/"},"wordCount":383,"publisher":{"@id":"https:\/\/codegen.com\/blog\/#organization"},"image":{"@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#primaryimage"},"thumbnailUrl":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1024x248.webp","articleSection":["Codemods &amp; Refactoring","Engineering Insights"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/","url":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/","name":"SWE Agents are Better with Codemods - The Codegen Blog","isPartOf":{"@id":"https:\/\/codegen.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#primaryimage"},"image":{"@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#primaryimage"},"thumbnailUrl":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1024x248.webp","datePublished":"2025-03-01T18:00:00+00:00","dateModified":"2025-08-26T18:40:00+00:00","description":"Learn how to delete dead code with AI and simplify your codebase using advanced codemods and programming techniques.","breadcrumb":{"@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#primaryimage","url":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1024x248.webp","contentUrl":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/image-1024x248.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/codegen.com\/blog\/swe-agents-are-better-with-codemods\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codegen.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SWE Agents are Better with Codemods"}]},{"@type":"WebSite","@id":"https:\/\/codegen.com\/blog\/#website","url":"https:\/\/codegen.com\/blog\/","name":"The Codegen Blog","description":"What we\u2019re building, how we\u2019re building it, and what we\u2019re learning along the way.","publisher":{"@id":"https:\/\/codegen.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codegen.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codegen.com\/blog\/#organization","name":"Codegen","url":"https:\/\/codegen.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codegen.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/Codegen_Lockup-Black-1024h-scaled.png","contentUrl":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/Codegen_Lockup-Black-1024h-scaled.png","width":2560,"height":528,"caption":"Codegen"},"image":{"@id":"https:\/\/codegen.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/codegen"]},{"@type":"Person","@id":"https:\/\/codegen.com\/blog\/#\/schema\/person\/d11d8bf8745420c643fcb0f3213aa92f","name":"Codegen Technical Staff","sameAs":["https:\/\/codegenblog.kinsta.cloud"],"url":"https:\/\/codegen.com\/blog\/author\/cg-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":4,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"predecessor-version":[{"id":21770,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions\/21770"}],"wp:attachment":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}