No description
Find a file
2026-07-14 18:54:51 -06:00
.github/workflows Fix CI build: modernize tsconfig (drop deprecated baseUrl + node10 resolution) 2026-07-13 19:33:12 -06:00
src Cross-platform fixes (Windows discovery + launch/Connect) 2026-07-14 18:54:49 -06:00
test Cross-platform fixes (Windows discovery + launch/Connect) 2026-07-14 18:54:49 -06:00
.eslintrc.json baseline: M3 state (pre per-skill harness) 2026-06-17 09:27:37 -06:00
.gitignore Align repo with Obsidian sample-plugin conventions 2026-07-13 18:46:07 -06:00
esbuild.config.mjs Address scorecard findings: activeDocument, CSS specificity, mask→gradient, types 2026-07-13 19:22:49 -06:00
LICENSE baseline: M3 state (pre per-skill harness) 2026-06-17 09:27:37 -06:00
manifest.json Release 0.1.4 2026-07-14 18:54:51 -06:00
package-lock.json Release 0.1.4 2026-07-14 18:54:51 -06:00
package.json Release 0.1.4 2026-07-14 18:54:51 -06:00
README.md Humanize README + descriptions (techdoc/marketing pass) 2026-07-13 21:18:37 -06:00
styles.css Human-oriented README + About; self-registering harness prompt 2026-07-13 21:03:20 -06:00
tsconfig.json Fix CI build: pin typescript to ~5.4.5 (avoids node10/baseUrl deprecation error) 2026-07-13 19:44:23 -06:00
version-bump.mjs Align repo with Obsidian sample-plugin conventions 2026-07-13 18:46:07 -06:00
versions.json Release 0.1.4 2026-07-14 18:54:51 -06:00

Skill and Harness Manager

Consolidate, organize, and manage your AI skills — right inside your vault.

If you've collected AI skills (SKILL.md files), commands, and agents across different tools — .claude/, .codex/, .cursor/, .agents/, marketplace folders, loose notes — they end up scattered and hard to actually use. This plugin gathers them into one place, lets you organize, filter, and tag them, and makes each one runnable with a click.

No bundled model, no inference, no network calls of its own. It finds, organizes, and launches; the actual work runs in whatever AI CLI you point it at (Claude Code, Codex, omnigent, or your own).

What you can do with it

Run AI where you already work:

  • Reformat a markdown note with one click — pin a "clean up markdown" skill to the sidebar and run it on the current file.
  • Process an audio file — right-click a recording and run a transcribe/summarize skill against it.
  • Trigger daily automations — kick off a daily-note or digest skill from a ribbon button.
  • …and anything else you can capture as a skill.

How you launch skills

Skills can be run from wherever is most convenient:

  • Right-click a file in the file explorer → run a skill targeting that file (great for "reformat this note", "transcribe this audio", "summarize this").
  • Sidebar buttons — pin any skill to its own ribbon icon (with a custom Lucide icon) to create one-click launchers for the skills you use most.
  • Command palette — every pinned skill also registers a command.
  • The browser view — open it and launch anything from there.

The browser

A single view (brain-circuit ribbon icon) with tabs:

  • Skills / Commands — everything discovered across your scan roots, grouped into a collapsible source-folder tree, each with its description and tags. Multi-select filters by agent, harness, tag, and access, plus search.
  • Sessions — the launches you've started, with a Connect button that reopens the session in your terminal. Auto-pruned after 12h.
  • Agents / Harnesses — the agents you can run skills as, and the launchers that actually run them.

Harnesses (how skills get run)

A harness is the command that actually executes a skill — usually an AI CLI. omnigent is supported out of the box; you can add your own for Claude Code, Codex, or anything else.

Add one manually: Settings → Skill and Harness ManagerCustom harnesses → give it a name and a one-line command whose first token is the absolute path to the binary and which contains the {prompt} placeholder, e.g.:

/opt/homebrew/bin/claude -p {prompt}

The plugin substitutes the skill's prompt into {prompt} and runs it (no shell, array arguments). Optionally set a Resume command so the Sessions tab's Connect can reopen a session.

Let the model add itself: run this prompt inside your CLI (Claude Code, Codex, omnigent, …) and it will register itself as a harness. The same prompt is available with a copy button in the plugin's settings.

Register yourself as a launch harness in my Obsidian "Skill and Harness Manager" plugin.

1. Open the plugin config JSON at:
   <vault>/.obsidian/plugins/skill-harness-manager/data.json
2. Parse it as JSON and ensure it has a top-level "harnesses" array (create it if missing).
3. Append ONE entry describing how to run YOU non-interactively with a single prompt:
     {
       "id": "<short-kebab-id>",
       "label": "<your product name>",
       "command": ["<absolute path to your CLI>", "<non-interactive flags>", "{prompt}"]
     }
   Rules: command[0] must be an absolute path; exactly one element must contain the
   literal token {prompt}; leave every other key in the file unchanged; write back valid JSON.
   Optional: add "resumeCommand": ["<absolute CLI>", "<resume flags>"] (no {prompt}) to enable
   the Sessions tab's "Connect" button.
4. Tell me to reload the plugin (Settings → Community plugins → toggle it off and on),
   after which the new harness appears in the plugin.

Requirements

Desktop only — it scans folders and launches local CLIs. Launching a skill needs whatever CLI you configure; browsing, organizing, tagging, and filtering work without one.

Install

From Obsidian: Settings → Community plugins → Browse → search "Skill and Harness Manager" → Install → Enable. No Node, no building.

Manual / pre-release: download main.js, manifest.json, and styles.css from the latest release into <vault>/.obsidian/plugins/skill-harness-manager/, then enable it.

Development

npm install
npm run typecheck
npm run lint
npm run smoke
npm run build

Releases are automated: push a tag (git tag 0.1.2 && git push --tags) and .github/workflows/release.yml builds and publishes the assets.

License

MIT