# Build a plugin
[Official Guide](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)
>[!important] when working on a plugin run `npm run dev` in a command line to keep the file up-to-date
## Process
Downloaded [[Git]]
Downloaded [[Nodedotjs]]
Downloaded [[Visual Studio Code]]
Use a test vault - created "PlugTestVault"
##### STEPS 1-2:
In Windows Command Prompt, typed the following
```
cd C:\Users\toy4t\Documents\PlugTestVault
mkdir .obsidian\plugins
cd .obsidian\plugins
git clone https://github.com/obsidianmd/obsidian-sample-plugin.git
cd obsidian-sample-plugin
npm install
npm run dev
```
Windows Command Prompt now says "[watch] esbuild.config.mjs"
##### STEP 3
Close Obsidian Test Vault and re-open
Open Settings -> Community plugins -> turn on community plugins -> enable Sample Plugin
##### STEP 4
Open "manifest.json" with [[Visual Studio Code]]
Changed `id` from "sample-plugin" to "my-first-sample-plugin"
Changed `name` from "Sample Plugin" to "My First Test Plugin"
Save file
Restart Obsidian Test Vault
Notice plugin name was changed and is no longer enabled
Re-enable the plugin
##### STEP 5
Open "main.ts" with [[Visual Studio Code]]
Changed plugin class from "MyPlugin" to "HelloWorldPlugin" in line 13 ![[Pasted image 20231004154811.png]]
Added following code in after line 78
```
this.addRibbonIcon('dice', 'Greet', () => { new Notice('Hello, world!'); });
```
Save File
Use Command Palette in Obsidian to "Reload app without saving"
Notice another dice symbol on left, click it and see message pop-up on right
Could later: Install the [Hot-Reload](https://github.com/pjeby/hot-reload) plugin to automatically reload your plugin while developing.
##### After
Changed line 117 and 119 from "MyPlugin" to "HelloWorldPlugin" (were showing errors)
Added Python plug-in and downloaded [[Python 3.11]]
Added JavaScript Plugin "JavaScript (ES6) code snippets"
## See Also
[[JSON]]
[[Python 3.11]]
[[Scripting Languages]]
## Helpful Info
[Descriptions/Basic Walkthrough](https://publishkit.dev/doc/plugins/create.html)