Install any skill in seconds. Free to start, no credit card required.
Get Started Free →One-sentence description of what this skill does. Shown as a tooltip on the chip.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 473% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 147% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -4% | 0% |
Replace this paragraph with one or two sentences describing what this skill does and the user-facing outcome it produces. Keep it concrete — "generates an equity curve from fundamental data" is better than "does financial stuff".
Bullet list of situations where Vibe Trade should dispatch to this skill:
Be specific. If two skills could plausibly handle the same message, the "when to use" sections decide which one Vibe Trade picks.
Numbered, imperative steps that describe exactly what the skill's processor should do for each input shape:
context.foo is present: branch into the Y workflow.Keep each step testable and concrete. The less ambiguity, the less LLM-induced drift.
| Key | Type | Meaning | |---|---|---| | message | string | The user's chat message | | context.<key> | type | Whatever your skill cares about from the router |
Describe what the SkillResponse will contain:
reply — ...script — optional ...data.* — optional ...| Tool | When | Payload | |---|---|---| | script_editor.load | When a script is generated | The JS source string | | bottom_panel.activate_tab | After generating output | The target tab id | | notify.toast | For transient status messages | {level, message} |
Example 1 > User input: "Do the thing with the stuff."
→ What the skill returns and why.
Example 2 > User input: (a more complex variant)
→ How the skill handles it differently.
This template has no Python processor yet. To wire it up:
async def _mytemplate_processor(message, context, tools) incore/agents/processors.py
PROCESSORS dict:python PROCESSORS = { ..., "mytemplate": _mytemplate_processor, }
VibeTrade.dispatch("mytemplate", ...) callwill now route here.
| Field | Type | Description | |---|---|---| | id | string | Unique kebab-case identifier (also the folder name) | | name | string | Full display name shown in the chip row | | tagline | string | Short label (1 word) for compact UI | | description | string | One-sentence description; shown as a tooltip | | version, author | string | Informational, surfaced in a future "skill info" UI | | category | string | analysis, generation, simulation, etc. (free-form) | | icon | string | Icon name; resolved on the frontend. Unknown icons fall back to sparkle | | color | string | Hex color used for the chip accent | | tools | string] | Allowlist of tool ids from skills/tools.py::TOOL_CATALOG | | output_tabs | object] | Bottom-panel tabs this skill contributes | | store_slots | string] | Documentation-only: store keys this skill writes | | input_hints.placeholder | string | Chat textarea placeholder when this is the only active skill | | input_hints.supports_fingerprint | bool | true if your skill accepts SHAPE fingerprints from the chart selector |
See skills/tools.py::TOOL_CATALOG for the full list. The tool categories are:
chart.drawing.* — activate a drawing tool (trendline, rectangle, fib, etc.)chart.pattern_selector — open the pattern selector to capture a fingerprintchart.highlight_matches / chart.draw_markers — chart overlayschart.focus_range / chart.set_timeframe — chart navigationchatbox.card.strategy_builder — inject the strategy builder form in chatchatbox.card.generic — inject a generic card with title/body/actionsbottom_panel.activate_tab / bottom_panel.set_data — bottom panel controlscript_editor.load / script_editor.run — code editor controldata.indicators.add / data.indicators.toggle — indicator registrynotify.toast — user notificationsOnly declare tools in the frontmatter that your processor actually uses. The frontend tool registry rejects any tool_call whose id isn't in the skill's declared list.
Other measured skills in the registry, with their headline benchmark lift.