{"id":13469632,"url":"https://github.com/nicoespeon/abracadabra","last_synced_at":"2025-05-15T01:08:09.930Z","repository":{"id":37502651,"uuid":"188333271","full_name":"nicoespeon/abracadabra","owner":"nicoespeon","description":"Automated refactorings for VS Code (JS \u0026 TS) ✨ It's magic ✨","archived":false,"fork":false,"pushed_at":"2025-05-09T14:40:35.000Z","size":82256,"stargazers_count":837,"open_issues_count":22,"forks_count":48,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-09T15:27:03.049Z","etag":null,"topics":["javascript","legacy-code","magic","refactoring","typescript","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=nicoespeon.abracadabra","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicoespeon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["nicoespeon"]}},"created_at":"2019-05-24T01:45:09.000Z","updated_at":"2025-05-09T14:36:47.000Z","dependencies_parsed_at":"2023-10-11T13:53:55.265Z","dependency_job_id":"2e7edb0c-e560-44a0-9ee3-5e7e9405e753","html_url":"https://github.com/nicoespeon/abracadabra","commit_stats":{"total_commits":3076,"total_committers":37,"mean_commits":83.13513513513513,"dds":0.3784135240572172,"last_synced_commit":"61a662b501bd067b8c2120d5444a05178a053695"},"previous_names":[],"tags_count":121,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoespeon%2Fabracadabra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoespeon%2Fabracadabra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoespeon%2Fabracadabra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoespeon%2Fabracadabra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicoespeon","download_url":"https://codeload.github.com/nicoespeon/abracadabra/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254042,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","legacy-code","magic","refactoring","typescript","vscode-extension"],"created_at":"2024-07-31T15:01:47.867Z","updated_at":"2025-05-15T01:08:04.920Z","avatar_url":"https://github.com/nicoespeon.png","language":"TypeScript","funding_links":["https://github.com/sponsors/nicoespeon"],"categories":["TypeScript","javascript","vscode-extension","typescript"],"sub_categories":[],"readme":"# 🧙‍ Abracadabra\n\n\u003e **Refactoring** (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.\n\u003e\n\u003e — _\"Refactoring: Improving the Design of Existing Code\" by Martin Fowler_\n\n![][logo-abracadabra]\n\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-67-orange.svg?style=flat-square)](#contributors)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n[![CodeScene Code Health](https://codescene.io/projects/54478/status-badges/code-health)](https://codescene.io/projects/54478) ![](https://img.shields.io/badge/it%27s-magic-purple.svg)\n\nWith Abracadabra, **you can quickly and safely refactor existing code in VS Code**.\n\nVS Code ships with [a few basic refactorings][vscode-refactorings]. Abracadabra supercharges your editor with:\n\n- 🎁 Much, much more refactorings\n- ⚡ Shortcuts to trigger the most useful ones in no-time\n- 💡 Quick Fixes to suggest refactorings when appropriate\n- 🛠 Options to customize the UX to your needs\n- 💬 Refactorings that work with `.js`, `.jsx`, `.ts`, `.tsx`, `.vue` and `.svelte` files\n\nRefactor Legacy Code in a snap! 👌\n\n![Abracadabra in action][demo-abracadabra]\n\n## Installation\n\n1. Click on the Extensions icon (usually on the left-hand side of your editor).\n1. Search for \"Abracadabra\".\n1. Find the extension in the list and click the install button.\n\n## List of available refactorings\n\nWe have 40+ automated refactorings such as Extract Variable, Extract Type, Flip If/Else, etc.\n\n**👉 [Here's the full catalog of refactorings available][all-refactorings]**\n\nAll refactorings are available through the [Command Palette][command-palette].\n\n![][demo-command-palette]\n\nSome refactorings have default keybindings configured, but [you can change that][change-keybindings].\n\nAll other refactorings are available through [VS Code Quick Fixes][vscode-quick-fixes]. You can access them by clicking on the lightbulb that appear next to the code 💡 or use the default shortcut `Alt ↵`.\n\nPro Tip: You can also disable the Quick Fixes you never use in [VS Code settings][vscode-settings] 🔥 (look for _Abracadabra_)\n\n## Features that support refactorings\n\nBesides refactorings, Abracadabra also gives you some extra features that are here to support refactoring work.\n\n### Highlight Identifiers\n\n![][demo-toggle-highlights]\n\nWhen working with Legacy Code, a very useful refactoring consists in extracting pure logic out of the I/O code that is hard to test (eg. HTTP calls).\n\nTo help you spot all the I/O bits in a chunk of code, Abracadabra can highlight them for you!\n\n| Feature               | Keybinding               | On Mac  |\n| :-------------------- | :----------------------- | :------ |\n| Toggle Highlight      | `Ctrl + Alt + H`         | `⌃ H`   |\n| Refresh Highlights    | `Shift + Alt + H`        | `⌃ ⌥ H` |\n| Remove All Highlights | `Ctrl + Shift + Alt + H` | `⇧ ⌃ H` |\n\n1. Put your cursor over an Identifier you want to highlight\n2. Press `Ctrl + Alt + H`\n\nAll references to this Identifier will be highlighted. The highlight will persist even when you modify the code.\n\nTo remove, either:\n\n- Put your cursor over a highlighted reference and press `Ctrl + Alt + H` again\n- Press `Ctrl + Shift + Alt + H` from anywhere, to remove all highlights\n\nThis is handy for marking I/O code when refactoring, but you can use it to highlight any interesting Identifier and its references. Here are a few typical use cases:\n\n- Mark all usages of a variable, to help you regroup them\n- Identify variables that are always passed together in function calls\n\n#### Does it highlights new references automatically?\n\nSay you have highlighted a variable. Now you add some more code that refers to the same variable.\n\nIt won't be _automatically_ highlighted.\n\nWe could. But a naive implementation of this would constantly parse the AST of the code you are working with, which would probably affect your editor performances (not good).\n\nOne way to do it would be to toggle highlight over the reference once to remove the old highlight, then again to get the new reference! But that's annoying!\n\nThat's why you have a \"Refresh Highlights\" command. Hit `Shift + Alt + H` and references will be recomputed again for you!\n\n## Configuration\n\n| Setting                                    | Description                                                                          | Default                 |\n| ------------------------------------------ | ------------------------------------------------------------------------------------ | ----------------------- |\n| `abracadabra.ignoredFolders`               | Folders where it won't propose refactorings                                          | `[\"node_modules\"]`      |\n| `abracadabra.ignoredPatterns`              | Glob patterns where it won't propose refactorings                                    | `[\"dist/*\", \"build/*\"]` |\n| `abracadabra.maxFileLinesCount`            | Don't propose refactorings on files that have more lines of code than this threshold | `10.000`                |\n| `abracadabra.getMaxFileSizeKb`             | Don't propose refactorings on files that bigger than this threshold (in kB)          | `250`                   |\n| `abracadabra.autoConvertToTemplateLiteral` | Automatically convert a string into a template literal when you insert `${}`         | `true`                  |\n\nFor the glob patterns, read [glob's documentation](https://github.com/isaacs/node-glob/blob/f5a57d3d6e19b324522a3fa5bdd5075fd1aa79d1/README.md#glob-primer) to see what you can filter out.\n\nAll refactorings that appear in Quick Fix suggestions can also be disabled in [your VS Code settings][vscode-settings] 🔥 (look for _Abracadabra_)\n\n## Release Notes\n\n[Have a look at our CHANGELOG][changelog] to get the details of all changes between versions.\n\n### Versioning\n\nWe follow [SemVer][semver] convention for versioning.\n\nThat means our releases use the following format:\n\n```\n\u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e\n```\n\n- Breaking changes bump `\u003cmajor\u003e` (and reset `\u003cminor\u003e` \u0026 `\u003cpatch\u003e`)\n- Backward compatible changes bump `\u003cminor\u003e` (and reset `\u003cpatch\u003e`)\n- Bug fixes bump `\u003cpatch\u003e`\n\n## Contributing\n\n### [Contributing Guide][contributing]\n\nRead our [contributing guide][contributing] to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to Abracadabra.\n\n### [Good First Issues][good-first-issues]\n\nTo help you get your feet wet and become familiar with our contribution process, we have a list of [good first issues][good-first-issues] that contains things with a relatively limited scope. This is a great place to get started!\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-emoji]):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nicoespeon.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1094774?v=4?s=100\" width=\"100px;\" alt=\"Nicolas Carlo\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNicolas Carlo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-nicoespeon\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=nicoespeon\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=nicoespeon\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/pulls?q=is%3Apr+reviewed-by%3Anicoespeon\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#question-nicoespeon\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://fabien0102.com/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1761469?v=4?s=100\" width=\"100px;\" alt=\"Fabien BERNARD\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFabien BERNARD\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-fabien0102\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=fabien0102\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-fabien0102\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.elsewebdevelopment.com/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/12832280?v=4?s=100\" width=\"100px;\" alt=\"David\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDavid\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3ADavid-Else\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/HEYGUL\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/2989532?v=4?s=100\" width=\"100px;\" alt=\"GUL\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGUL\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-HEYGUL\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=HEYGUL\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/visusnet\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1219124?v=4?s=100\" width=\"100px;\" alt=\"Alexander Rose\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexander Rose\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-visusnet\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=visusnet\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/timvancleef\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/7040078?v=4?s=100\" width=\"100px;\" alt=\"Tim van Cleef\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTim van Cleef\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=timvancleef\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=timvancleef\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/automatensalat\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/26285169?v=4?s=100\" width=\"100px;\" alt=\"Tobias Hann\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTobias Hann\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aautomatensalat\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=automatensalat\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=automatensalat\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://twitter.com/capajj\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1305378?v=4?s=100\" width=\"100px;\" alt=\"Jiri Spac\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJiri Spac\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Acapaj\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.lyreal666.com/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/41773861?v=4?s=100\" width=\"100px;\" alt=\"YuTengjing\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYuTengjing\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Atjx666\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#infra-tjx666\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=tjx666\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/delaaxe\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1091900?v=4?s=100\" width=\"100px;\" alt=\"delaaxe\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003edelaaxe\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-delaaxe\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=delaaxe\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jrnail23\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/392612?v=4?s=100\" width=\"100px;\" alt=\"James Nail\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames Nail\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Ajrnail23\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nickebbitt.github.io/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/5111725?v=4?s=100\" width=\"100px;\" alt=\"Nick Ebbitt\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNick Ebbitt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-nickebbitt\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=nickebbitt\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=nickebbitt\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://oliverjash.me/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/921609?v=4?s=100\" width=\"100px;\" alt=\"Oliver Joseph Ash\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOliver Joseph Ash\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-OliverJAsh\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3AOliverJAsh\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=OliverJAsh\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=OliverJAsh\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.linkedin.com/in/albertoxamin\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6067659?v=4?s=100\" width=\"100px;\" alt=\"Alberto Xamin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlberto Xamin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-albertoxamin\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sluukkonen\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/39655?v=4?s=100\" width=\"100px;\" alt=\"Sakumatti Luukkonen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSakumatti Luukkonen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Asluukkonen\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-sluukkonen\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/justerest\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/24754883?v=4?s=100\" width=\"100px;\" alt=\"Sergey Klevakin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSergey Klevakin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-justerest\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=justerest\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ajanian\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/99716?v=4?s=100\" width=\"100px;\" alt=\"Andrew Janian\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAndrew Janian\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aajanian\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/leosdad\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/7026091?v=4?s=100\" width=\"100px;\" alt=\"leosdad\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eleosdad\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-leosdad\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aleosdad\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/iulspop\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/53665722?v=4?s=100\" width=\"100px;\" alt=\"Iuliu Pop\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIuliu Pop\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=iulspop\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=iulspop\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aiulspop\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/chrstnbrn\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11138584?v=4?s=100\" width=\"100px;\" alt=\"Christina Braun\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChristina Braun\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=chrstnbrn\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Achrstnbrn\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://zakmiller.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18072671?v=4?s=100\" width=\"100px;\" alt=\"Zak Miller\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZak Miller\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3AZakMiller\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=ZakMiller\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-ZakMiller\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/chipbite\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/559199?v=4?s=100\" width=\"100px;\" alt=\"Marcus\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarcus\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Achipbite\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://jonboiser.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10248067?v=4?s=100\" width=\"100px;\" alt=\"Jonathan Boiser\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJonathan Boiser\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Ajonboiser\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://gurdiga.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/53922?v=4?s=100\" width=\"100px;\" alt=\"Vlad GURDIGA\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVlad GURDIGA\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Agurdiga\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/SamHasler\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/54277?v=4?s=100\" width=\"100px;\" alt=\"Sam Hasler\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSam Hasler\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-SamHasler\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://re.kv.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7276?v=4?s=100\" width=\"100px;\" alt=\"Nicolas Favre-Felix\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNicolas Favre-Felix\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Anicolasff\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/wmertens\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/54934?v=4?s=100\" width=\"100px;\" alt=\"Wout Mertens\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWout Mertens\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-wmertens\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://lukemiles.org\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10591373?v=4?s=100\" width=\"100px;\" alt=\"Luke Harold Miles\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLuke Harold Miles\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aqpwo\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-qpwo\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://bandism.net/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22633385?v=4?s=100\" width=\"100px;\" alt=\"Ikko Ashimine\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIkko Ashimine\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=eltociear\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/vfonic\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/67437?v=4?s=100\" width=\"100px;\" alt=\"Viktor\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eViktor\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-vfonic\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sumbatx15\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28981577?v=4?s=100\" width=\"100px;\" alt=\"sumbatx15\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esumbatx15\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Asumbatx15\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=sumbatx15\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/j4k0xb\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/55899582?v=4?s=100\" width=\"100px;\" alt=\"j4k0xb\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ej4k0xb\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aj4k0xb\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=j4k0xb\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-j4k0xb\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://ianobermiller.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/897931?v=4?s=100\" width=\"100px;\" alt=\"Ian Obermiller\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIan Obermiller\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=ianobermiller\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=ianobermiller\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-ianobermiller\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://forivall.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/760204?v=4?s=100\" width=\"100px;\" alt=\"Emily Marigold Klassen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEmily Marigold Klassen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=forivall\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://zardoy.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46503702?v=4?s=100\" width=\"100px;\" alt=\"Vitaly\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVitaly\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=zardoy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-zardoy\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#ideas-zardoy\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://stalefri.es\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/383725?v=4?s=100\" width=\"100px;\" alt=\"Alan Hussey\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlan Hussey\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aalanhussey\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kevintechie\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10410717?v=4?s=100\" width=\"100px;\" alt=\"Kevin Coleman\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKevin Coleman\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Akevintechie\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rsxdalv\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6757283?v=4?s=100\" width=\"100px;\" alt=\"Roberts Slisans\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRoberts Slisans\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Arsxdalv\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/joshjm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/21700579?v=4?s=100\" width=\"100px;\" alt=\"Josh\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJosh\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-joshjm\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/brunnerh\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/834235?v=4?s=100\" width=\"100px;\" alt=\"brunnerh\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebrunnerh\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-brunnerh\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://twitter.com/11joselu\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/8685132?v=4?s=100\" width=\"100px;\" alt=\"Jose Cabrera\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJose Cabrera\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-11joselu\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=11joselu\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://app.element.io/#/user/@BuZZ-dEE:matrix.org\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/125954?v=4?s=100\" width=\"100px;\" alt=\"Sebastian Schlatow\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSebastian Schlatow\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3ABuZZ-dEE\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jtwigg\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1237233?v=4?s=100\" width=\"100px;\" alt=\"jtwigg\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejtwigg\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Ajtwigg\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.andypatterns.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11467530?v=4?s=100\" width=\"100px;\" alt=\"Andy Bulka\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAndy Bulka\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aabulka\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.andrewash.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/357170?v=4?s=100\" width=\"100px;\" alt=\"Andrew Ash\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAndrew Ash\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=ash211\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/azhiv\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/32125472?v=4?s=100\" width=\"100px;\" alt=\"Artem Zhivoderov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArtem Zhivoderov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-azhiv\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=azhiv\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/srsholmes\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3579905?v=4?s=100\" width=\"100px;\" alt=\"Simon Holmes\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSimon Holmes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-srsholmes\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=srsholmes\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ramunsk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/514899?v=4?s=100\" width=\"100px;\" alt=\"Ramunas\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRamunas\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-ramunsk\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/yume-chan\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1330321?v=4?s=100\" width=\"100px;\" alt=\"Simon Chan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSimon Chan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Ayume-chan\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://byroni.us\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/495404?v=4?s=100\" width=\"100px;\" alt=\"byron wall\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebyron wall\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Abyronwall\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jerone\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/55841?v=4?s=100\" width=\"100px;\" alt=\"Jeroen van Warmerdam\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJeroen van Warmerdam\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=jerone\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://blog.hand-net.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/184604?v=4?s=100\" width=\"100px;\" alt=\"Steve Beaugé\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSteve Beaugé\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Astevebeauge\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/SamB\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13903?v=4?s=100\" width=\"100px;\" alt=\"Samuel Bronson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSamuel Bronson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3ASamB\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/timonjurschitsch/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/103483059?v=4?s=100\" width=\"100px;\" alt=\"Timon Jurschitsch\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTimon Jurschitsch\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=DerTimonius\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://dribbble.com/leodriesch\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/39763575?v=4?s=100\" width=\"100px;\" alt=\"Leo Driesch\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLeo Driesch\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-leodr\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://about.me/romainguerin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/285534?v=4?s=100\" width=\"100px;\" alt=\"Romain Guerin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRomain Guerin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Apomeh\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/victor-homyakov\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/121449?v=4?s=100\" width=\"100px;\" alt=\"Victor Homyakov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVictor Homyakov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Avictor-homyakov\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/xixixao\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1473433?v=4?s=100\" width=\"100px;\" alt=\"Michal Srb\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichal Srb\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Axixixao\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/waltergalvao\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1367578?v=4?s=100\" width=\"100px;\" alt=\"Walter Galvao\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWalter Galvao\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Awaltergalvao\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jaresty\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1313844?v=4?s=100\" width=\"100px;\" alt=\"Schwa Aresty\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSchwa Aresty\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-jaresty\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.youtube.com/channel/UCML02pamUSxtbwAcrUdVmXg\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/755842?v=4?s=100\" width=\"100px;\" alt=\"Pokey Rule\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePokey Rule\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-pokey\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://ipanasenko.me\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/576152?v=4?s=100\" width=\"100px;\" alt=\"Illia Panasenko\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIllia Panasenko\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=ipanasenko\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-ipanasenko\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/montoner0\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13542804?v=4?s=100\" width=\"100px;\" alt=\"montoner0\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emontoner0\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Amontoner0\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/yinluobing\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5945624?v=4?s=100\" width=\"100px;\" alt=\"yinluobing\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyinluobing\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Ayinluobing\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/acabreragnz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6330366?v=4?s=100\" width=\"100px;\" alt=\"Toni Cabrera\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eToni Cabrera\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Aacabreragnz\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://marabesi.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2129872?v=4?s=100\" width=\"100px;\" alt=\"Matheus Marabesi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatheus Marabesi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Amarabesi\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/zoodogood\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/52154209?v=4?s=100\" width=\"100px;\" alt=\"zoodogood\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ezoodogood\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nicoespeon/abracadabra/issues?q=author%3Azoodogood\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/nicoespeon/abracadabra/commits?author=zoodogood\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors][all-contributors] specification.\n\nContributions of any kind are welcome!\n\n## Alternatives\n\nBuilding automated refactoring for JavaScript is not easy, and it takes time. Since this is a side-project, it doesn't get as much time as it should to cover everything you need.\n\nIf Abracadabra doesn't fit your need for something, here are the other extensions I recommend you check:\n\n- [JS CodeFormer](https://marketplace.visualstudio.com/items?itemName=cmstead.js-codeformer) which is built by [Chris Stead](https://twitter.com/cm_stead). Chris built the first JS refactorings extension in VS Code back in the days, so he knows his stuff 👍\n- [P42 JavaScript assistant](https://marketplace.visualstudio.com/items?itemName=p42ai.refactor) is an impressive tool built by [Lars Grammel](https://twitter.com/lgrammel). It is not maintained anymore, but it may have refactorings that Abracadabra doesn't.\n- [JavaScript Booster](https://marketplace.visualstudio.com/items?itemName=sburg.vscode-javascript-booster) is a popular extension that mimics Webstorm's UX for refactoring—which was a source of inspiration for Abracadabra. Worth having a look.\n\nThere are some things I think Abracadabra does better. Other things Abracadabra does worse. The goal with this extension is to provide automated refactorings that are easy to use and VS Code misses. If others are implementing them, I'm more than happy to recommend (and use) their tool!\n\nHave a look, give them a try, use a combination of tools that work best for you.\n\n---\n\n![](https://github.com/nicoespeon/abracadabra/blob/main/docs/demo/magic.gif?raw=true)\n\n## License\n\n💁 [MIT][license]\n\n\u003c!-- Links --\u003e\n\n[hocus-pocus]: https://marketplace.visualstudio.com/items?itemName=nicoespeon.hocus-pocus\n[command-palette]: https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette\n[change-keybindings]: https://code.visualstudio.com/docs/getstarted/keybindings\n[vscode-refactorings]: https://code.visualstudio.com/docs/editor/refactoring\n[vscode-quick-fixes]: https://code.visualstudio.com/docs/editor/refactoring#_code-actions-quick-fixes-and-refactorings\n[vscode-settings]: https://code.visualstudio.com/docs/getstarted/settings\n[js-refactor]: https://marketplace.visualstudio.com/items?itemName=cmstead.jsrefactor\n[js-booster]: https://marketplace.visualstudio.com/items?itemName=sburg.vscode-javascript-booster\n[changelog]: https://github.com/nicoespeon/abracadabra/blob/main/CHANGELOG.md\n[all-refactorings]: https://github.com/nicoespeon/abracadabra/blob/main/REFACTORINGS.md\n[contributing]: https://github.com/nicoespeon/abracadabra/blob/main/CONTRIBUTING.md\n[license]: https://github.com/nicoespeon/abracadabra/blob/main/LICENSE.md\n[good-first-issues]: https://github.com/nicoespeon/abracadabra/issues?q=is%3Aissue+is%3Aopen+label%3A%22%3Awave%3A+Good+first+issue%22\n[semver]: http://semver.org/\n[all-contributors]: https://allcontributors.org\n[all-contributors-emoji]: https://allcontributors.org/docs/en/emoji-key\n\n\u003c!-- Demo images --\u003e\n\n[demo-toggle-highlights]: https://github.com/nicoespeon/abracadabra/blob/main/docs/demo/toggle-highlights.gif?raw=true\n[demo-command-palette]: https://github.com/nicoespeon/abracadabra/blob/main/docs/demo/command-palette.png?raw=true\n[demo-abracadabra]: https://github.com/nicoespeon/abracadabra/blob/main/docs/demo/extract-variable-multiple-occurrences.gif?raw=true\n\n\u003c!-- Logo --\u003e\n\n[logo-abracadabra]: https://github.com/nicoespeon/abracadabra/blob/main/docs/logo/abracadabra-logo.png?raw=true\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicoespeon%2Fabracadabra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicoespeon%2Fabracadabra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicoespeon%2Fabracadabra/lists"}