Agent skill

Obsidian Prod Checklist

by jeremylongshore in jeremylongshore/tons-of-skills-marketplace

Pre-release plugin verification checklist for Obsidian community plugins.

MITAuto-check passedDevelopment

Install Obsidian Prod Checklist

skills CLI
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-prod-checklist -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jeremylongshore/tons-of-skills-marketplace obsidian-prod-checklist --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/obsidian-prod-checklist .claude/skills/obsidian-prod-checklist && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
obsidian-prod-checklist
GitHub stars
2.8k
Token cost
~2.8k tokens
SKILL.md length
394 words
Files
2 (incl. references)
Skills in repo
3,342
Repo updated
First seen
Licence
MIT

At a glance

Pre-release plugin verification checklist for Obsidian community plugins.

  • Works in 8 steps: Validate manifest.json → Validate versions.json → Production Build Checks → …
  • Preparing to release
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 4 more sections
  • Calls npm and node

What it does

Obsidian Prod Checklist is an agent skill from jeremylongshore/tons-of-skills-marketplace. Pre-release plugin verification checklist for Obsidian community plugins. Use when preparing to release, reviewing before submission, or validating plugin quality before publishing. Trigger with phrases like "obsidian release checklist", "publish obsidian plugin", "obsidian plugin submission", "obsidian prod ready".

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/implementation-guide.md`). Compatibility notes: Designed for Claude Code

It sits in Development, covering Feature launches and release readiness. It works with Obsidian. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.

When your agent uses it

  • Preparing to release
  • Reviewing before submission
  • Validating plugin quality before publishing
  • With phrases like obsidian release checklist

Example prompts

  • “obsidian release checklist”
  • “publish obsidian plugin”
  • “obsidian plugin submission”
  • “/obsidian-prod-checklist”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Designed for Claude Code
  • Pre-approved tools (allowed-tools): Read, Grep, Bash(npm:*)

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Validate manifest.json
  2. Validate versions.json
  3. Production Build Checks
  4. Code Quality — No console.log in Production
  5. Memory Leak Check — Proper onunload Cleanup
  6. Mobile Compatibility
  7. Settings Migration
  8. README and Documentation

What it can do on your machine

Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Bash(npm:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.obsidian.md
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code

    From compatibility in the SKILL.md frontmatter.

Context cost

Obsidian Prod Checklist loads about 2.8k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 85 tokens; SKILL.md has 394 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 394 words, ~2,840 tokens.

Download SKILL.mdSave it as .claude/skills/obsidian-prod-checklist/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
obsidian-prod-checklist
description
Pre-release plugin verification checklist for Obsidian community plugins. Use when preparing to release, reviewing before submission, or validating plugin quality before publishing. Trigger with phrases like "obsidian release checklist", "publish obsidian plugin", "obsidian plugin submission", "obsidian prod ready".
allowed-tools
Read, Grep, Bash(npm:*)
compatibility
Designed for Claude Code
version
1.13.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
saas, obsidian, obsidian-prod

Obsidian Prod Checklist

Overview

Pre-release verification for Obsidian plugins covering manifest validation, production build quality, mobile compatibility, memory leak prevention, settings migration, and community plugin submission readiness.

Prerequisites

  • Completed plugin development with all features working
  • Tested in at least one vault manually
  • GitHub repository with source code committed
  • Node.js build toolchain configured

Instructions

Step 1: Validate manifest.json
javascript
// Run: node -e '<paste this>'
const m = require('./manifest.json');

const required = ['id', 'name', 'version', 'minAppVersion', 'description', 'author'];
const missing = required.filter(f => !m[f]);
if (missing.length) {
  console.error('FAIL: Missing fields:', missing.join(', '));
  process.exit(1);
}

// id must be kebab-case, no spaces
if (!/^[a-z0-9-]+$/.test(m.id)) {
  console.error('FAIL: id must be lowercase alphanumeric with hyphens:', m.id);
  process.exit(1);
}

// minAppVersion should be a recent Obsidian version
const [major, minor] = m.minAppVersion.split('.').map(Number);
if (major < 1 || (major === 1 && minor < 4)) {
  console.warn('WARN: minAppVersion', m.minAppVersion, 'is very old — consider 1.5.0+');
}

console.log('manifest.json OK:', m.id, 'v' + m.version, '(requires Obsidian >=' + m.minAppVersion + ')');
Step 2: Validate versions.json
javascript
// Run: node -e '<paste this>'
const manifest = require('./manifest.json');
const versions = require('./versions.json');
const pkg = require('./package.json');

let fail = false;

// manifest.version should match package.json version
if (manifest.version !== pkg.version) {
  console.error('FAIL: manifest.version (' + manifest.version + ') !== package.json (' + pkg.version + ')');
  fail = true;
}

// versions.json must have an entry for current version
if (!versions[manifest.version]) {
  console.error('FAIL: versions.json missing entry for', manifest.version);
  fail = true;
} else if (versions[manifest.version] !== manifest.minAppVersion) {
  console.error('FAIL: versions.json[' + manifest.version + '] = ' +
    versions[manifest.version] + ' but manifest.minAppVersion = ' + manifest.minAppVersion);
  fail = true;
}

if (fail) process.exit(1);
console.log('versions.json OK: all versions consistent');
Step 3: Production Build Checks
bash
set -euo pipefail
# Clean build
rm -f main.js
npm ci
npm run build

# Verify main.js exists and is reasonable size
test -f main.js || { echo "FAIL: main.js not generated"; exit 1; }
SIZE=$(wc -c < main.js)
echo "main.js: $SIZE bytes"

# No inline source maps in production (increases file size significantly)
if grep -q "sourceMappingURL=data:" main.js; then
  echo "WARN: Inline sourcemaps detected — remove for production"
  echo "  Set sourcemap: false in esbuild.config.mjs"
fi

# No sourcemap file should ship
if [ -f main.js.map ]; then
  echo "WARN: main.js.map exists — exclude from release assets"
fi

# styles.css check
if [ -f styles.css ]; then
  echo "styles.css: $(wc -c < styles.css) bytes — will be included in release"
else
  echo "No styles.css (OK if plugin has no custom styles)"
fi
Step 4: Code Quality — No console.log in Production
bash
set -euo pipefail
# Obsidian reviewers reject plugins with console.log in production code
# Check source files (not the built main.js which may be minified)
HITS=$(grep -rn "console\.log\|console\.warn\|console\.info" src/ --include="*.ts" | grep -v "// DEBUG" | grep -v "\.test\." || true)

if [ -n "$HITS" ]; then
  echo "WARN: console statements found in source (remove or guard with DEBUG flag):"
  echo "$HITS"
else
  echo "OK: No unguarded console statements in src/"
fi

# Check for eval() or Function() constructor — immediate rejection
DANGEROUS=$(grep -rn "eval(\|new Function(" src/ --include="*.ts" || true)
if [ -n "$DANGEROUS" ]; then
  echo "FAIL: eval/Function() found — Obsidian team will reject this:"
  echo "$DANGEROUS"
  exit 1
fi
Step 5: Memory Leak Check — Proper onunload Cleanup

Review your main.ts for proper resource cleanup:

typescript
// GOOD: All resources cleaned up in onunload
export default class MyPlugin extends Plugin {
  private observer: MutationObserver | null = null;
  private intervalId: number | null = null;

  async onload() {
    // Register events via this.registerEvent — auto-cleaned
    this.registerEvent(
      this.app.workspace.on('file-open', this.handleFileOpen.bind(this))
    );

    // Register intervals via this.registerInterval — auto-cleaned
    this.intervalId = window.setInterval(() => this.sync(), 60000);
    this.registerInterval(this.intervalId);

    // DOM observers need manual cleanup
    this.observer = new MutationObserver(this.handleMutation.bind(this));
    this.observer.observe(document.body, { childList: true });
  }

  onunload() {
    // Clean up anything NOT registered via this.register*
    this.observer?.disconnect();
    this.observer = null;
  }
}

Common leak sources to audit:

  • setInterval / setTimeout not using this.registerInterval
  • addEventListener without matching removeEventListener
  • MutationObserver or ResizeObserver without disconnect()
  • WebSocket or EventSource connections without close()
  • Detached DOM nodes held in class properties
Step 6: Mobile Compatibility
typescript
// Check if running on mobile
import { Platform } from 'obsidian';

if (Platform.isMobile) {
  // Disable features that only work on desktop
  // - No child_process or fs access
  // - No Electron APIs (clipboard, shell, dialog)
  // - Touch targets must be >= 44px
}

// If your plugin is desktop-only, set in manifest.json:
// "isDesktopOnly": true

Test on mobile:

  1. Build and release (even a beta via BRAT)
  2. Install on iOS/Android Obsidian
  3. Verify: settings tab renders, commands work, no crashes on open/close
  4. Check touch targets are large enough (44px minimum)
Step 7: Settings Migration
typescript
// Handle upgrades from older settings versions
interface MyPluginSettings {
  version: number;          // Track settings schema version
  greeting: string;
  // v2 added:
  showInStatusBar: boolean;
}

const DEFAULT_SETTINGS: MyPluginSettings = {
  version: 2,
  greeting: 'Hello!',
  showInStatusBar: true,
}

async loadSettings() {
  const saved = await this.loadData();
  this.settings = Object.assign({}, DEFAULT_SETTINGS, saved);

  // Migrate from v1 to v2
  if (!saved?.version || saved.version < 2) {
    this.settings.showInStatusBar = true;  // new default
    this.settings.version = 2;
    await this.saveSettings();
    console.log('Settings migrated to v2');
  }
}
Step 8: README and Documentation

Verify your README includes:

  • Clear description of what the plugin does
  • Installation instructions (community plugins search + manual)
  • Screenshots or GIFs of the plugin in action
  • Configuration options explained
  • Known limitations
bash
set -euo pipefail
# Basic README checks
test -f README.md || { echo "FAIL: No README.md"; exit 1; }

# Check for screenshots (common requirement for discoverability)
if grep -qi "screenshot\|\.png\|\.gif\|\.jpg" README.md; then
  echo "OK: README references images"
else
  echo "WARN: No screenshots in README — strongly recommended for community listing"
fi

echo "README.md: $(wc -l < README.md) lines"

Output

  • Validated manifest.json with all required fields and correct formatting
  • Consistent versions across manifest.json, package.json, and versions.json
  • Production main.js without sourcemaps or debug artifacts
  • Clean source code: no console.log, no eval, no dynamic code loading
  • Verified onunload() cleanup for all registered resources
  • Mobile compatibility confirmed (or isDesktopOnly set)
  • Settings migration for users upgrading from previous versions
  • README with screenshots and installation instructions
Show full SKILL.md (131 more words)Show less

Error Handling

IssueCauseSolution
PR rejected: missing fieldsIncomplete manifest.jsonRun Step 1 validation
PR rejected: console.logDebug logging left inRemove or guard with build-time flag
Plugin crashes on mobileDesktop-only API usedSet isDesktopOnly: true or gate with Platform.isMobile
Settings lost on updateNo migration logicImplement version-based migration (Step 7)
Build includes sourcemapsesbuild configSet sourcemap: false for production
Styles not appliedMissing styles.css in releaseInclude in GitHub release assets
Old settings break new versionSchema changedObject.assign({}, DEFAULT_SETTINGS, saved) handles missing keys

Examples

Quick Pre-Release Validation Script
bash
set -euo pipefail
echo "=== Obsidian Plugin Pre-Release Check ==="

# Build
npm ci && npm run build
test -f main.js || { echo "FAIL: no main.js"; exit 1; }

# Manifest
node -e "const m=require('./manifest.json'); \
  ['id','name','version','minAppVersion','description','author'].forEach(f => { \
    if(!m[f]) { console.error('MISSING:', f); process.exit(1); } \
  }); console.log('Manifest OK:', m.id, 'v'+m.version)"

# Versions
node -e "const m=require('./manifest.json'), v=require('./versions.json'); \
  if(!v[m.version]) { console.error('versions.json missing', m.version); process.exit(1); } \
  console.log('Versions OK')"

# No sourcemaps
grep -q "sourceMappingURL=data:" main.js && echo "WARN: inline sourcemaps" || echo "No sourcemaps OK"

# No console.log
COUNT=$(grep -rc "console\.\(log\|warn\|info\)" src/ --include="*.ts" 2>/dev/null | awk -F: '{s+=$2}END{print s}')
[ "$COUNT" -gt 0 ] && echo "WARN: $COUNT console statements in src/" || echo "No console OK"

echo "=== Done ==="
Checklist Summary Format

After running all checks, produce a summary:

Pre-Release Report: my-plugin v1.2.0
  [x] manifest.json — all fields present, id=my-plugin
  [x] versions.json — 1.2.0 maps to minAppVersion 1.5.0
  [x] Build — main.js 45KB, no sourcemaps
  [x] Code quality — no console.log, no eval
  [x] Cleanup — onunload disconnects observer
  [ ] Mobile — not tested (isDesktopOnly: false)
  [x] README — has screenshots, install instructions
  [x] Settings — migration from v1 implemented

Resources

Next Steps

For version upgrades and breaking changes, see obsidian-upgrade-migration. For CI/CD automation, see obsidian-ci-integration.

© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/.curated/obsidian-prod-checklist of jeremylongshore/tons-of-skills-marketplace.

  • SKILL.md
  • references/implementation-guide.md

Open the folder on GitHubat commit cfae287

Compare with similar skills

Obsidian Prod Checklist next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Obsidian Prod Checklist compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Obsidian Prod Checklist this skilljeremylongshore/tons-of-skills-marketplace2.8k—~2.8kAutomated safety check: PassMIT
Personal Assistant Reviewedonyzpc/personal-assistant147—~3.2kAutomated safety check: PassAGPL-3.0
Herdr Pre-Release Auditherdrdev/herdr43k—~289Automated safety check: PassApache-2.0
Happier Reviewhappier-dev/happier1.9k—~4.5kAutomated safety check: PassMIT
Megaphone ReleaseKuberwastaken/megaphone170—~1.3kAutomated safety check: PassMIT
Create Release Checklistsoftware-mansion/smelter734—~1.9kAutomated safety check: NotesCustom licence

Similar skills

  • Personal Assistant Review

    edonyzpc/personal-assistant

    Review uncommitted or PR diffs in the personal-assistant Obsidian plugin with project-specific risk lanes, second-layer future-risk checks, severity discipline, subagent review routing, and…

    147 GitHub stars~3.2k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Audit herdr release readiness by comparing commits since the base release against next-release changelog and docs. Use when asked to run or apply the repo's…

    43k GitHub stars~289 tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Happier Review

    happier-dev/happier

    Conduct evidence-backed Happier code, plan-completeness, session, worktree, feature, commit, branch, PR, codebase, and release-readiness reviews with affected-corridor analysis, high-confidence…

    1.9k GitHub stars~4.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Megaphone Release

    Kuberwastaken/megaphone

    Prepare, validate, publish, and verify Megaphone releases. An agent skill from Kuberwastaken/megaphone.

    170 GitHub stars~1.3k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Create Release Checklist

    software-mansion/smelter

    Generate a GitHub release-checklist issue for a full (non-RC) release of the Smelter server and/or the TypeScript SDK.

    734 GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Releasing

    OdradekAI/bundles-forge

    A skill your agent uses when releasing a bundle-plugin, bumping versions, fixing version drift across manifests, setting up version sync infrastructure, updating CHANGELOG, publishing to…

    229 GitHub stars~3.3k tokensUpdated 5 mo ago
    DevelopmentAuto-check passed

More from jeremylongshore/tons-of-skills-marketplace

All 3,342 skills in this repo
  • Performing Security Code Review

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.

    2.8k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check: notes
  • Adapting Transfer Learning Models

    jeremylongshore/tons-of-skills-marketplace

    Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Agent Context Loader

    jeremylongshore/tons-of-skills-marketplace

    Execute proactive auto-loading: automatically detects and loads agents.md files.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Aggregating Performance Metrics

    jeremylongshore/tons-of-skills-marketplace

    Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Analyzing Capacity Planning

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.

    2.8k GitHub stars~947 tokensUpdated today
    Auto-check passed
  • Analyzing Database Indexes

    jeremylongshore/tons-of-skills-marketplace

    Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2k tokensUpdated today
    Auto-check passed

Works with

Questions about Obsidian Prod Checklist

What does Obsidian Prod Checklist do?

Pre-release plugin verification checklist for Obsidian community plugins. Obsidian Prod Checklist is an agent skill from jeremylongshore/tons-of-skills-marketplace. Pre-release plugin verification checklist for Obsidian community plugins.

When should I use Obsidian Prod Checklist?

Obsidian Prod Checklist fits situations like: preparing to release; reviewing before submission; validating plugin quality before publishing; with phrases like obsidian release checklist.

How do I install Obsidian Prod Checklist in Claude Code?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-prod-checklist -a claude-code`. Or copy the skill folder (skills/.curated/obsidian-prod-checklist in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/obsidian-prod-checklist in your project. Claude Code loads it when a task matches its description.

How do I install Obsidian Prod Checklist in Codex?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-prod-checklist -a codex`. Or copy the skill folder (skills/.curated/obsidian-prod-checklist in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/obsidian-prod-checklist in your project. Codex loads it when a task matches its description.

Can I use Obsidian Prod Checklist in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-prod-checklist -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/obsidian-prod-checklist, .gemini/skills/obsidian-prod-checklist, .github/skills/obsidian-prod-checklist and .opencode/skills/obsidian-prod-checklist in your project.

What does Obsidian Prod Checklist need to run?

Going by SKILL.md and its folder, Obsidian Prod Checklist needs the command-line tools its instructions call (npm and node). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Grep, Bash(npm:*). Compatibility (from SKILL.md): Designed for Claude Code.

Does Obsidian Prod Checklist access the network?

SKILL.md names 2 domains. As links in the text: docs.obsidian.md and github.com. This is read from the text; nothing was executed.

Is Obsidian Prod Checklist safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Obsidian Prod Checklist use?

Obsidian Prod Checklist is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Obsidian Prod Checklist use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.

What are the alternatives to Obsidian Prod Checklist?

Skills that share tags, products or a category with Obsidian Prod Checklist: Personal Assistant Review (edonyzpc/personal-assistant, 147 stars), Herdr Pre-Release Audit (herdrdev/herdr, 43k stars), Happier Review (happier-dev/happier, 1.9k stars) and Megaphone Release (Kuberwastaken/megaphone, 170 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Obsidian Prod Checklist?

jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.

Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.