Skip to content

The generated project

What you get depends on your answers. This page describes the default All-in-one Framework project; the other presets and answers add, replace or leave out pieces, as Feature options describes.

obsidian-my-tool/
.create-obsidian-plugin.json # your answers and the hashes an update compares against
.github/
FUNDING.yml # with a funding platform
ISSUE_TEMPLATE/ # with the issue forms
workflows/ # CI, release on tag push, and the yearly LICENSE bump
.husky/ # commit-msg and pre-commit hooks, with commit linting
demo-vault/ # the plugin's documentation, as a real vault
scripts/ # one small script per npm script
src/
main.ts # the entry point Obsidian loads
plugin.ts # the plugin class: commands, settings tab, command handlers
plugin-settings.ts # the settings and their defaults
plugin-settings-component.ts
plugin-settings-tab.ts
styles/main.scss
*.test.ts # unit tests beside the code they test
.env # OBSIDIAN_CONFIG_FOLDER, the vault each build copies the plugin into
CONTRIBUTING.md # how to set up, build, test and release
manifest.json
package.json
README.md
versions.json

Beside them sit the configuration files of the tools you chose: tsconfig.json, eslint.config.mts, dprint.json, cspell.json, .markdownlint-cli2.mjs, vitest.config.ts, commitlint.config.ts, .nano-staged.mjs and so on. Each root config is a thin wrapper; the logic it needs lives in scripts/.

On the framework presets the scripts call @mnaoumov/obsidian-dev-toolkit and @mnaoumov/typescript-dev-toolkit, and the plugin code builds on @mnaoumov/obsidian-lib. So npm update brings improvements to the build, lint, test and release steps without regenerating anything. The Standalone preset inlines every script instead and depends on no @mnaoumov package.

Script What it does
npm run dev Build in watch mode, and copy the plugin into the vault named in .env
npm run build Production build into dist/
npm run gate Every check the release runs: format, spelling, Markdown, build, lint and tests. Run it before committing
npm run lint, npm run lint:fix Lint, or lint and fix
npm run format, npm run format:check Format the code, or check it is formatted
npm run spellcheck Check spelling
npm run lint:md, npm run lint:md:fix Lint Markdown files
npm test, npm run test:watch, npm run test:coverage Run the unit tests once, on every change, or with coverage
npm run test:integration Run the integration suites a fresh machine can run: the demo-vault checks. test:integration:desktop and test:integration:android each run on their own, once a desktop Obsidian or an Android emulator is set up
npm run version Bump the version, update manifest.json and versions.json, and archive the demo vault into the release
npm run commit Commit with a guided Conventional Commits prompt

Which of them a project has follows the answers: a project with no spell checker has no spellcheck, and npm run gate skips the checks a project does not have.

src/plugin.test.ts imports the plugin and checks it loads; src/main.test.ts checks the entry point exports it. They run against obsidian-test-mocks, with no Obsidian installed. .svelte and .vue components are stubbed in unit tests, so render them in an integration test instead.

The screenshot harness of the real plugins is left out, and npm run test:integration leaves out the desktop and Android suites: they need a provisioned Obsidian or emulator, so a fresh project would fail tests nothing on the machine can run.

On the framework presets, demo-vault/ is the plugin’s documentation: a real Obsidian vault whose notes explain each feature and demonstrate it with buttons run by CodeScript Toolkit. Start at demo-vault/00 Start.md.

npm run version archives it into each GitHub release, with the freshly built plugin added, and the plugin’s Open demo vault command downloads and opens that copy. Two suites check it: npm run test:integration:no-app reads the notes without launching Obsidian, and npm run test:integration:demo-vault clicks every button in a real one.

The Standalone preset has no release flow to archive the vault into, so it has no demo vault.

There is no AGENTS.md. A scaffolded one could only restate the README about code nobody has written yet. See Notes for AI agents for what the project does carry for them.