actualNoteContentPart: # 🤓 Intermediate-to-advanced plugin development for proficient developers
  While it is possible to build a plugin completely within Amplenote, there are some significant benefits to using a programming IDE like Visual Studio Code or Webstorm to build your Amplenote plugin:
  **Instant visibility of syntax errors**. In contrast to developing plugins within the note, an [IDE will be much more explicit if you have made a syntax error in how you define your plugin object](https://images.amplenote.com/b456a2e4-d93b-11ed-b6ce-f2e3384d8128/f7c28bee-2cbf-4a0d-bcd6-7c9d1d8363da.png) . 
  **Faster iteration (**[**BIG DEAL**]() **)**. New and intermediate developers habitually underestimate the cumulative impact of a [slow iteration loop]() . Within the core Amplenote Dev team, there is no value we hold more sacred than "fast iteration times" ([why do we care so much?]() ). By writing tests, you can repeatedly invoke your plugin in milliseconds, rather than waiting for the Amplenote editor to reload the plugin, then revisit the note where you want to invoke your command and check what happens.
  **Step through code in a debugger (also Big Deal)**. An IDE with tests makes it possible to interactively inspect the state of your plugin as it executes code. Examples below.
  **More stability**. By writing tests, you can ensure that later changes do not break earlier code that had worked.
  The drawback is that, if you're not already a programmer, you will need to do some programmer stuff: choose and download an IDE, and utilize git to grab and commit code. Configuring an IDE and using git is outside the scope of this help article, but there are helpful developers you can find lurking in the [Discord](https://discord.gg/nAj4wp4sJm)  plugin channel. I hear Google can help with that sort of thing?
  
  ## Getting started: Example repo
  You can jump start your IDE plugin development by starting from [**Amplenote Plugin Template repo**](https://github.com/alloy-org/plugin-template) **.** From there, you can create files like the [plugin.test.js file](https://github.com/alloy-org/yappy/blob/main/lib/plugin.test.js)  from the Yappy plugin, which has examples of utilizing a mocked plugin and app object in order to run an Amplenote plugin in your editor:
  
  
  
  
  
  ## Running the tests with breakpoints
  If you're [using an IDE like Webstorm, you can set breakpoints within a test and see specifics of the state of the plugin](https://public.amplenote.com/GPTbAGiRYddSCLtuTXGS1tSo) :
  
  
  
  
  
  
  ## Moving back to Amplenote
  Chances are that if you have worked on a plugin for more than a couple hours, copying/pasting from your IDE to your note's code block will get old fast. That's why [**we strongly recommend using the Github->Amplenote plugin**](https://www.amplenote.com/plugins/FZf22PXCKTRTB1tJwta1Nepq)  if you plan to develop your plugin for more than a couple hours. It will let you specify a public GitHub repo, and it will automatically aggregate your source file(s), bundle them together into a single code block, and paste that code block into the note from which you invoked the plugin. ✨
  
  If you want to go low-tech, yes: you can just copy your plugin code from IDE back to Amplenote. But you have to highlight the object within plugin.js, absent the initial variable declaration, and the export at the bottom, and paste it into your code block, which gets old for those that recognize the primacy of a fast iteration loop on a "more enjoyable programming experience."
processedNoteContent: ---
  title: Guide to Building/Developing Plugins (Beginner ...
  headers: # 🤓 Intermediate-to-advanced plugin development for proficien...
  ---
  🤓 Intermediate-to-advanced plugin development for proficient developers
  While it is possible to build a plugin completely within Amplenote, there are some significant benefits to using a programming IDE like Visual Studio Code or Webstorm to build your Amplenote plugin:
  Instant visibility of syntax errors
  . In contrast to developing plugins within the note, an [IDE will be much more explicit if you have made a syntax error in how you define your plugin object](https://images.amplenote.com)`
   .
  Faster iteration (
  [BIG DEAL]()
   )
  . New and intermediate developers habitually underestimate the cumulative impact of a [slow iteration loop]()
   . Within the core Amplenote Dev team, there is no value we hold more sacred than "fast iteration times" ( [why do we care so much?]()
   ). By writing tests, you can repeatedly invoke your plugin in milliseconds, rather than waiting for the Amplenote editor to reload the plugin, then revisit the note where you want to invoke your command and check what happens.
  Step through code in a debugger (also Big Deal)
  . An IDE with tests makes it possible to interactively inspect the state of your plugin as it executes code. Examples below.
  More stability
  . By writing tests, you can ensure that later changes do not break earlier code that had worked.
  The drawback is that, if you're not already a programmer, you will need to do some programmer stuff: choose and download an IDE, and utilize git to grab and commit code. Configuring an IDE and using git is outside the scope of this help article, but there are helpful developers you can find lurking in the [Discord](https://discord.gg)`
    plugin channel. I hear Google can help with that sort of thing? 
  Getting started: Example repo
  You can jump start your IDE plugin development by starting from [Amplenote Plugin Template repo](https://github.com)`
   .
   From there, you can create files like the [plugin.test.js file](https://github.com)`
    from the Yappy plugin, which has examples of utilizing a mocked plugin and app object in order to run an Amplenote plugin in your editor: 
  Running the tests with breakpoints
  If you're [using an IDE like Webstorm, you can set breakpoints within a test and see specifics of the state of the plugin](https://public.amplenote.com)`
   : 
  Moving back to Amplenote
  Chances are that if you have worked on a plugin for more than a couple hours, copying/pasting from your IDE to your note's code block will get old fast. That's why [we strongly recommend using the Github->Amplenote plugin](https://www.amplenote.com)`
    if you plan to develop your plugin for more than a couple hours. It will let you specify a public GitHub repo, and it will automatically aggregate your source file(s), bundle them together into a single code block, and paste that code block into the note from which you invoked the plugin. ✨ If you want to go low-tech, yes: you can just copy your plugin code from IDE back to Amplenote. But you have to highlight the object within plugin.js, absent the initial variable declaration, and the export at the bottom, and paste it into your code block, which gets old for those that recognize the primacy of a fast iteration loop on a "more enjoyable programming experience."
noteTitle: Guide to Building/Developing Plugins (Beginner to Advanced)