Tavily Search API Integration
andrewyng/context-hub
Guides building Tavily integrations for web search, URL extraction, site crawling and AI-assisted research in Python or JavaScript agent and RAG projects.
Creates Turbo Streams, Turbo Frames, and morphing patterns for real-time UI updates.
$ npx skills add dilolabs/nosia --skill turbo-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dilolabs/nosia turbo-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.vibe/skills/turbo-patterns .claude/skills/turbo-patterns && rm -rf skills-srcUse ~/.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/
Install the "turbo-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patterns into .claude/skills/turbo-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "turbo-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dilolabs/nosia --skill turbo-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dilolabs/nosia turbo-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.vibe/skills/turbo-patterns .agents/skills/turbo-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "turbo-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patterns into .agents/skills/turbo-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "turbo-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dilolabs/nosia --skill turbo-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dilolabs/nosia turbo-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.vibe/skills/turbo-patterns .cursor/skills/turbo-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "turbo-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patterns into .cursor/skills/turbo-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "turbo-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dilolabs/nosia.git --path .vibe/skills/turbo-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dilolabs/nosia --skill turbo-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dilolabs/nosia turbo-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.vibe/skills/turbo-patterns .gemini/skills/turbo-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "turbo-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patterns into .gemini/skills/turbo-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "turbo-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dilolabs/nosia turbo-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dilolabs/nosia --skill turbo-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .github/skills && cp -r skills-src/.vibe/skills/turbo-patterns .github/skills/turbo-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "turbo-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patterns into .github/skills/turbo-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "turbo-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dilolabs/nosia --skill turbo-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dilolabs/nosia turbo-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.vibe/skills/turbo-patterns .opencode/skills/turbo-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "turbo-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/turbo-patterns into .opencode/skills/turbo-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "turbo-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
turbo-patternsCreates Turbo Streams, Turbo Frames, and morphing patterns for real-time UI updates.
Turbo Patterns is an agent skill from dilolabs/nosia. Creates Turbo Streams, Turbo Frames, and morphing patterns for real-time UI updates. Use when adding real-time updates, partial page rendering, form submissions, or broadcasting. WHEN NOT: For Stimulus JavaScript controllers (see stimulus-patterns skill). For general view conventions (see rules/views.md).
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/broadcasting.md`, `references/turbo-frames.md` and `references/turbo-streams.md`). Compatibility notes: Ruby 3.3+, Rails 8.0+, Turbo 8+
It sits in AI & LLM Engineering. It works with JavaScript and Ruby on Rails. The repository describes itself as: Self-hosted AI RAG + MCP Platform. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0ef5e5d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlrailsFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ruby 3.3+, Rails 8.0+, Turbo 8+
From compatibility in the SKILL.md frontmatter.
Turbo Patterns loads about 1.6k tokens when it runs, and up to ~4.9k if it reads all its reference files. Until then it costs about 80 tokens; SKILL.md has 366 words of instructions outside code blocks.
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.
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.
The full file from dilolabs/nosia at commit 0ef5e5d, republished under its MIT licence (© dilolabs). 366 words, ~1,579 tokens.
.claude/skills/turbo-patterns/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.You are an expert Hotwire/Turbo architect specializing in building reactive UIs without JavaScript frameworks.
Turbo is plenty. No React, Vue, or Alpine needed. Turbo Streams + Turbo Frames + morphing = rich, reactive UIs with standard Rails views.
Tech Stack: Rails 8.2 (edge), Turbo 8+, Stimulus (for sprinkles), Solid Cable (WebSockets) Pattern: Server-rendered HTML, Turbo for updates, Stimulus for interactions Broadcasting: Database-backed via Solid Cable (no Redis)
curl -H "Accept: text/vnd.turbo-stream.html" http://localhost:3000/cardsbin/dev (starts Rails + CSS/JS build)bin/rails test:systemturbo_stream.append "cards", partial: "cards/card", locals: { card: @card }
turbo_stream.prepend "cards", partial: "cards/card", locals: { card: @card }
turbo_stream.replace @card, partial: "cards/card", locals: { card: @card }
turbo_stream.update @card, partial: "cards/card_content", locals: { card: @card }
turbo_stream.remove @card
turbo_stream.before @card, partial: "cards/new_card_form"
turbo_stream.after @card, partial: "cards/comment", locals: { comment: @comment }
# Bonus: morph (smart replacement, preserves focus/scroll/state)
turbo_stream.morph @card, partial: "cards/card", locals: { card: @card }| Scenario | Use |
|---|---|
| Partial page update from user action | Turbo Stream response |
| Lazy-load content on scroll/visibility | Turbo Frame with loading: :lazy |
| Inline editing | Turbo Frame wrapping show/edit views |
| Real-time update for other users | Turbo Stream broadcast via model |
| Complex update preserving form state | turbo_stream.morph |
| Full page with smooth transition | Turbo Drive (default) |
| Modal/dialog | Turbo Frame with named target |
class Cards::CommentsController < ApplicationController
def create
@comment = @card.comments.create!(comment_params)
respond_to do |format|
format.turbo_stream
format.html { redirect_to @card }
end
end
def destroy
@comment = @card.comments.find(params[:id])
@comment.destroy!
respond_to do |format|
format.turbo_stream
format.html { redirect_to @card }
end
end
end<%# app/views/cards/comments/create.turbo_stream.erb %>
<%= turbo_stream.prepend "comments", partial: "cards/comments/comment", locals: { comment: @comment } %>
<%= turbo_stream.update dom_id(@card, :new_comment), partial: "cards/comments/form", locals: { card: @card } %>
<%= turbo_stream.update dom_id(@card, :comment_count) do %>
<%= pluralize(@card.comments.count, "comment") %>
<% end %>
<%= turbo_stream.prepend "flash" do %>
<div class="flash flash--notice">Comment added</div>
<% end %>Use turbo_stream.morph instead of replace when the element has form inputs, scroll position, or Stimulus controller state to preserve.
<meta name="turbo-refresh-method" content="morph">
<meta name="turbo-refresh-scroll" content="preserve"><div id="<%= dom_id(@card) %>" data-turbo-permanent>
<%# Persists across page loads %>
</div># app/controllers/concerns/turbo_flash.rb
module TurboFlash
extend ActiveSupport::Concern
private
def turbo_notice(message)
turbo_stream.prepend "flash", partial: "shared/flash",
locals: { type: :notice, message: message }
end
end<%= form_with model: @card, data: { turbo_frame: "_top" } %> <%# Full page %>
<%= link_to "Edit", edit_path, data: { turbo_frame: "_self" } %> <%# Current frame %>
<%= link_to "New", new_path, data: { turbo_frame: "modal" } %> <%# Named frame %>turbo_frame_tag "stats", src: path, loading: :lazy# Controller test
test "create returns turbo stream" do
post card_comments_path(@card),
params: { comment: { body: "Test" } },
as: :turbo_stream
assert_response :success
assert_equal "text/vnd.turbo-stream.html", response.media_type
assert_match /turbo-stream/, response.body
end
# System test
test "creating a comment" do
visit card_path(@card)
fill_in "Body", with: "Great card!"
click_button "Add Comment"
assert_text "Great card!" # Turbo Stream inserts without reload
enddom_id for element IDs, provide fallback HTML responses, test Turbo responsesturbo_stream_from subscriptionsreferences/turbo-streams.md -- All stream action examples, custom actions, multiple responsesreferences/turbo-frames.md -- Frame patterns, lazy loading, navigation, nested framesreferences/broadcasting.md -- Model broadcasts, ActionCable setup, Solid Cable, channel patterns© dilolabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .vibe/skills/turbo-patterns of dilolabs/nosia.
Open the folder on GitHubat commit 0ef5e5d
We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dilolabs/nosia, which our catalogue first saw on October 7, 2026.
Turbo Patterns 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Turbo Patterns this skilldilolabs/nosia | 213 | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Tavily Search API Integrationandrewyng/context-hub | 14k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Routerbase API Integrationaiskillstore/marketplace | 430 | — | ~964 | Automated safety check: Pass | None | |
| Compromise NLP Libraryspencermountain/compromise | 12k | — | ~2k | Automated safety check: Pass | MIT | |
| Compromise NLP for JavaScriptspencermountain/compromise | 12k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Gemini API Devgoogle-gemini/gemini-skills | 4.3k | — | ~5.1k | Automated safety check: Pass | Apache-2.0 |
andrewyng/context-hub
Guides building Tavily integrations for web search, URL extraction, site crawling and AI-assisted research in Python or JavaScript agent and RAG projects.
aiskillstore/marketplace
Integrate applications with RouterBase, the OpenAI-compatible model gateway at https://routerbase.com/v1.
spencermountain/compromise
Helps write and debug JavaScript or TypeScript that uses the compromise English NLP library for matching, entity extraction, tagging and sentence transforms.
spencermountain/compromise
Guide for writing correct code with the compromise rule-based NLP library: tagging, match syntax, in-place transforms and common tasks like tense changes and redaction.
google-gemini/gemini-skills
A skill your agent uses when writing code that calls the Gemini API for text generation, multi-turn chat, multimodal understanding, image generation, video generation, speech generation (TTS), voice…
google-gemini/gemini-skills
A skill your agent uses when building real-time, bidirectional streaming applications with the Gemini Live API, or migrating legacy Live models (2.0/2.5/3.1) to Gemini 3.8 Live.
dilolabs/nosia
Builds REST APIs using respondto blocks with Jbuilder templates following the 37signals same-controllers-different-formats philosophy.
dilolabs/nosia
Implements custom passwordless authentication without Devise.
dilolabs/nosia
Implements HTTP caching with ETags, fragment caching, Russian doll caching, and Solid Cache configuration.
dilolabs/nosia
Creates and refactors model and controller concerns for shared behavior.
dilolabs/nosia
Builds event tracking, activity feeds, and webhook systems following 37signals patterns with a generic Event model and Eventable concern.
dilolabs/nosia
Implements shallow background jobs with later/now conventions using Solid Queue.
Works with
Categories
Creates Turbo Streams, Turbo Frames, and morphing patterns for real-time UI updates. Turbo Patterns is an agent skill from dilolabs/nosia. Creates Turbo Streams, Turbo Frames, and morphing patterns for real-time UI updates.
Turbo Patterns fits situations like: adding real-time updates; partial page rendering; form submissions.
Run `npx skills add dilolabs/nosia --skill turbo-patterns -a claude-code`. Or copy the skill folder (.vibe/skills/turbo-patterns in dilolabs/nosia) into .claude/skills/turbo-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dilolabs/nosia --skill turbo-patterns -a codex`. Or copy the skill folder (.vibe/skills/turbo-patterns in dilolabs/nosia) into .agents/skills/turbo-patterns in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dilolabs/nosia --skill turbo-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/turbo-patterns, .gemini/skills/turbo-patterns, .github/skills/turbo-patterns and .opencode/skills/turbo-patterns in your project.
Going by SKILL.md and its folder, Turbo Patterns needs the command-line tools its instructions call (curl and rails). Compatibility (from SKILL.md): Ruby 3.3+, Rails 8.0+, Turbo 8+.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Turbo Patterns is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.3k 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 3.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Turbo Patterns: Tavily Search API Integration (andrewyng/context-hub, 14k stars), Routerbase API Integration (aiskillstore/marketplace, 430 stars), Compromise NLP Library (spencermountain/compromise, 12k stars) and Compromise NLP for JavaScript (spencermountain/compromise, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dilolabs (a GitHub organization) maintains it in dilolabs/nosia, which has 213 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 9, 2026.
Source: dilolabs/nosia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.