Skip to content
Back to skills

Save Skill

ASecurity

Save or replay a MosoFin analysis skill after results exist. Use when the user wants to keep a workflow, list saved skills, replay a named skill, or says save this to MosoFin or locally.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 6, 2026
ai-agentsgoapi

Works with

  • claude code
  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add MosoFin/mosofin-mcp-plugin --skill save-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Save Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Save Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mosofin-save-skill/badge)](https://www.skillsdirectory.com/skills/mosofin-save-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: save-skill
description: Save or replay a MosoFin analysis skill after results exist. Use when the user wants to keep a workflow, list saved skills, replay a named skill, or says save this to MosoFin or locally.
allowed-tools:
  - mcp__plugin_mosofin_mosofin__list_workspaces
  - mcp__plugin_mosofin_mosofin__get_skills
  - mcp__plugin_mosofin_mosofin__get_my_skill
  - mcp__plugin_mosofin_mosofin__create_skill
  - mcp__plugin_mosofin_local__list_workspaces
  - mcp__plugin_mosofin_local__get_skills
  - mcp__plugin_mosofin_local__get_my_skill
  - mcp__plugin_mosofin_local__create_skill
---

# Save or replay a MosoFin skill

Additive-write path. Never persist a skill until the user has seen the results
and explicitly says yes **again** (a blanket "run it and save it" earlier in
the chat does not count). Full per-tool spec: `docs/mcp-tool-spec.md`.
Short contract: `docs/plugin-contract.md`.

Host-namespaced tool ids (Claude Code / Grok Build; plugin `mosofin`, server `mosofin`):

- `mcp__plugin_mosofin_mosofin__list_workspaces`
- `mcp__plugin_mosofin_mosofin__get_skills`
- `mcp__plugin_mosofin_mosofin__get_my_skill`
- `mcp__plugin_mosofin_mosofin__create_skill`

The plugin's `local` helper exposes the same tools as
`mcp__plugin_mosofin_local__…` once signed in. Use whichever route works; one
is enough. A Claude connector may name them differently (`mcp__MosoFin__…`).

Do **not** call parked tools: `update_skill`, `get_agents`, or any goal-session
tool (`start_goal`, `clarify_goal`, `generate_goal_brief`, `confirm_completion`).

Native consent pickers may not appear. Ask in chat, then pass
`confirmed="yes"` only after an explicit yes.

## If MosoFin tools are missing

If MosoFin tools are absent, a call returns `Unknown tool`, or MosoFin reports
that sign-in is required: the user is not signed in to MosoFin in this host
(this is not a company-file reconnect). Keep their request and follow
`/mosofin:connect` (`skills/connect/SKILL.md`) to get them signed in from this
conversation, then continue. Never say "refresh/reconnect". Do not invent a
saved skill — never claim one was saved.

## Workspace first

If this chat has not confirmed a workspace, call `list_workspaces` and confirm
by name (`workspace_ids` + `mode`) before any skill tool. Use the opaque
workspace handles exactly as returned.

## Replay an existing skill

1. Call `get_skills` for the confirmed workspace.
2. Match by `name` / `description`. If nothing matches, say so and stop (or
   send the user to `/mosofin:query-workspace` to answer directly).
3. Present the candidate **by name**. Wait for an explicit yes. Never auto-replay.
4. Only then call `get_my_skill(skill_id, confirmed="yes", workspace_id=…)`.
   The response inlines `skill_md` and the manifest; files marked
   `content_omitted: true` need a re-call with `paths=[…]` and
   `confirmed="yes"` again.
5. If `references/run-recipe.json` exists, ask each `inputs[].ask` question
   **verbatim** — never silently default dates. For a `type: "data_source"`
   input, list companies by `display_name` (via query-workspace) and pass the
   chosen `data_source_id` into every step that has the
   `"{data_source_id}"` placeholder; a literal id in the recipe is pinned.
6. Execute steps in order (same `parallel_group` may batch), substituting
   `{workspace_id}` and collected inputs. Replay data only via the
   query-workspace skill (`invoke_datasource_api_tool`), never by inventing
   numbers.
7. Ignore `dashboard_slug` — it is legacy. Never route to `show_*` tools.

## Save a new skill

Prerequisites: a proven workflow already ran in this conversation (invoke
results exist) **and** the user explicitly asked to save after seeing those
results.

1. Ask where to save: `mosofin` (library), `claude` (bundle to install in this client),
   or `both`. Do not default.
2. Call `create_skill` with:
   - `name` — one verb + one financial object, kebab-case
     (`reconcile-vendor-expenses`), never a persona (`finance assistant`)
   - `description` — ~100 words, "use when the user asks for …"
   - `destination` — the choice from step 1
   - `confirmed` — `"yes"` only after the post-results yes
   - `workspace_id` — confirmed opaque handle
   - `datasources` — comma-separated ids actually invoked (required if the
     workflow called `invoke_datasource_api_tool`)
   - `files` — JSON object string of the bundle. Must include `SKILL.md` at
     the root with YAML frontmatter. If the workflow read a datasource, also
     include `references/run-recipe.json` (one step per invoke, exact params,
     `{workspace_id}` placeholder, run-time date inputs declared). No
     `.html` / `.css` / `.svg`. Limits: ≤50 files, ≤1MB/file, ≤5MB total.
3. If the tool refuses confirmation, ask again in chat and retry with
   `confirmed="yes"`. Do not set `confirmed="yes"` without a fresh yes.

Notes:

- `name` must be ≥3 chars; `description` ≥10 chars.
- A `destination` including `mosofin` runs a blocking upload (up to ~45s). On
  failure nothing is saved — report the structured error; do not claim success.
- If `claude` is among the destinations, the response includes a
  `claude_bundle` for local install — surface it to the user.
- Report the saved skill **by name** and that a new version was created.

`create_skill` is additive: it creates a new retained version. It does not
overwrite an existing skill version.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.