One-sentence description of what this skill does. Shown as a tooltip on the chip.
Add this skill
npx mdskills install spyderweb47/templateComprehensive template with detailed frontmatter, tool registry, and implementation guidance
1---2# ─── Identity ────────────────────────────────────────────────────────────3id: mytemplate4name: My Template Skill5tagline: Template6description: One-sentence description of what this skill does. Shown as a tooltip on the chip.7version: 0.0.18author: Your Name9category: general10icon: sparkles11color: "#ff6b00"1213# ─── Tools ───────────────────────────────────────────────────────────────14# Every id here MUST exist in skills/tools.py::TOOL_CATALOG. Unknown ids15# print a warning at registry load time. The frontend tool registry16# enforces this allowlist — a skill that emits a tool_call for an id not17# declared here will be rejected with a console warning.18tools:19 - script_editor.load20 - bottom_panel.activate_tab21 - notify.toast2223# ─── Bottom panel tabs ───────────────────────────────────────────────────24# Tabs this skill contributes. `component` must match a key in25# apps/web/src/components/BottomPanel.tsx::BOTTOM_PANEL_COMPONENTS.26output_tabs:27 - id: mytemplate_output28 label: My Output29 component: PatternContent3031# ─── Store slots (documentation only) ────────────────────────────────────32store_slots: []3334# ─── Chat input hints ────────────────────────────────────────────────────35# When this is the only active skill, these override the chatbox UI.36input_hints:37 placeholder: "Describe what you want the template skill to do..."38 supports_fingerprint: false39---4041# My Template Skill4243## Purpose4445Replace this paragraph with one or two sentences describing what this skill46does and the user-facing outcome it produces. Keep it concrete — "generates47an equity curve from fundamental data" is better than "does financial stuff".4849## When to use this skill5051Bullet list of situations where Vibe Trade should dispatch to this skill:5253- When the user asks for ...54- When context contains ...55- When the chart panel provides ...5657Be specific. If two skills could plausibly handle the same message, the58"when to use" sections decide which one Vibe Trade picks.5960## Instructions6162Numbered, imperative steps that describe exactly what the skill's processor63should do for each input shape:64651. **If the message is type A:** do X, emit tool Y, return Z.662. **If `context.foo` is present:** branch into the Y workflow.673. **Otherwise:** default behavior.6869Keep each step testable and concrete. The less ambiguity, the less70LLM-induced drift.7172## Inputs7374| Key | Type | Meaning |75|---|---|---|76| `message` | string | The user's chat message |77| `context.<key>` | *type* | Whatever your skill cares about from the router |7879## Outputs8081Describe what the `SkillResponse` will contain:8283- `reply` — ...84- `script` — optional ...85- `data.*` — optional ...8687## Tools used8889| Tool | When | Payload |90|---|---|---|91| `script_editor.load` | When a script is generated | The JS source string |92| `bottom_panel.activate_tab` | After generating output | The target tab id |93| `notify.toast` | For transient status messages | `{level, message}` |9495## Examples9697**Example 1**98> User input: "Do the thing with the stuff."99100→ What the skill returns and why.101102**Example 2**103> User input: (a more complex variant)104105→ How the skill handles it differently.106107## Underlying implementation108109This template has no Python processor yet. To wire it up:1101111. Add an `async def _mytemplate_processor(message, context, tools)` in112 `core/agents/processors.py`1132. Register it in the `PROCESSORS` dict:114 ```python115 PROCESSORS = {116 ...,117 "mytemplate": _mytemplate_processor,118 }119 ```1203. Restart the backend. The `VibeTrade.dispatch("mytemplate", ...)` call121 will now route here.122123## Frontmatter reference124125| Field | Type | Description |126|---|---|---|127| `id` | string | Unique kebab-case identifier (also the folder name) |128| `name` | string | Full display name shown in the chip row |129| `tagline` | string | Short label (1 word) for compact UI |130| `description` | string | One-sentence description; shown as a tooltip |131| `version`, `author` | string | Informational, surfaced in a future "skill info" UI |132| `category` | string | `analysis`, `generation`, `simulation`, etc. (free-form) |133| `icon` | string | Icon name; resolved on the frontend. Unknown icons fall back to sparkle |134| `color` | string | Hex color used for the chip accent |135| `tools` | string[] | Allowlist of tool ids from `skills/tools.py::TOOL_CATALOG` |136| `output_tabs` | object[] | Bottom-panel tabs this skill contributes |137| `store_slots` | string[] | Documentation-only: store keys this skill writes |138| `input_hints.placeholder` | string | Chat textarea placeholder when this is the only active skill |139| `input_hints.supports_fingerprint` | bool | `true` if your skill accepts SHAPE fingerprints from the chart selector |140141## Available tools142143See `skills/tools.py::TOOL_CATALOG` for the full list. The tool categories144are:145146- **`chart.drawing.*`** — activate a drawing tool (trendline, rectangle, fib, etc.)147- **`chart.pattern_selector`** — open the pattern selector to capture a fingerprint148- **`chart.highlight_matches`** / **`chart.draw_markers`** — chart overlays149- **`chart.focus_range`** / **`chart.set_timeframe`** — chart navigation150- **`chatbox.card.strategy_builder`** — inject the strategy builder form in chat151- **`chatbox.card.generic`** — inject a generic card with title/body/actions152- **`bottom_panel.activate_tab`** / **`bottom_panel.set_data`** — bottom panel control153- **`script_editor.load`** / **`script_editor.run`** — code editor control154- **`data.indicators.add`** / **`data.indicators.toggle`** — indicator registry155- **`notify.toast`** — user notifications156157Only declare tools in the frontmatter that your processor actually uses.158The frontend tool registry rejects any tool_call whose id isn't in the159skill's declared list.160
Full transparency — inspect the skill content before installing.