/leetcode-coach
Find and set up coding practice problems tailored to your weak areas, then create local files so you can solve them right away. Use this skill when a user wants to practice coding, asks for a LeetCode problem, says "give me a coding challenge", "I want to practice DSA", "help me
$ npx -y skills add tinyfish-io/tinyfish-cookbook --skill leetcode-coach --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/leetcode-coach
Context preview
The summary Claude sees to decide when to auto-load this skill.
Find and set up coding practice problems tailored to your weak areas, then create local files so you can solve them right away. Use this skill when a user wants to practice coding, asks for a LeetCode problem, says "give me a coding challenge", "I want to practice DSA", "help me
SKILL.md
leetcode-coach.SKILL.mdname: leetcode-coach
description: Find and set up coding practice problems tailored to your weak areas, then create local files so you can solve them right away. Use this skill when a user wants to practice coding, asks for a LeetCode problem, says "give me a coding challenge", "I want to practice DSA", "help me prep for coding interviews", "find me a problem to solve", "I'm weak at dynamic programming", "quiz me on algorithms", or any request to practice coding with a specific language or topic focus.
LeetCode Coach
Find coding problems matched to your weak areas from LeetCode, HackerRank, and Codeforces — then set up local files so you can start solving immediately.
Pre-flight Check (REQUIRED)
Before making any TinyFish call, always run BOTH checks:
**1. CLI installed?**
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
If not installed, stop and tell the user: > Install the TinyFish CLI: `npm install -g @tiny-fish/cli`
**2. Authenticated?**
tinyfish auth status
If not authenticated, stop and tell the user: > You need a TinyFish API key. Get one at: https://agent.tinyfish.ai/api-keys > > Then authenticate: > ``` > tinyfish auth login > ```
Do NOT proceed until both checks pass.
---
Step 1 — Gather inputs
Ask for the following if not already provided:
**Required:**
- **Preferred language** — e.g. Python, JavaScript, Java, C++, Go, Rust
**Optional (but improves results):**
- **Weak areas / topics to focus on** — e.g. "dynamic programming", "graphs", "sliding window", "binary search", "recursion", "trees"
- **Difficulty** — Easy / Medium / Hard (default: Medium)
If the user isn't sure of their weak areas, ask: > "What topics do you find yourself getting stuck on, or want to get better at?"
If they still aren't sure, default to: Arrays, Strings, and Hash Maps (the most commonly tested fundamentals).
---
Step 2 — Find matching problems
Fire parallel TinyFish agents across LeetCode, HackerRank, and Codeforces to find real problems matching the topic and difficulty.
# Agent 1 — LeetCode problem search
tinyfish agent run \
--url "https://leetcode.com/problemset/?difficulty={DIFFICULTY}&topicSlugs={TOPIC_SLUG}" \
"You are on the LeetCode problem set page filtered by difficulty and topic.
Find 3 problems that match the topic: {TOPIC}.
For each problem extract:
- title
- difficulty (Easy/Medium/Hard)
- acceptance rate
- topic tags
- direct URL to the problem (e.g. https://leetcode.com/problems/two-sum/)
STRICT RULES:
- Do NOT click any problem to open it
- Read only the problem listing visible on this page
- Return exactly 3 problems, no more
- Skip premium-only problems (marked with a lock icon)
Return JSON array: [{title, difficulty, acceptance_rate, tags, url}]" \
--sync > /tmp/lc_leetcode.json &
# Agent 2 — HackerRank problem search
tinyfish agent run \
--url "https://www.hackerrank.com/domains/algorithms?filters%5Bsubdomains%5D%5B%5D={TOPIC_SLUG}" \
"You are on HackerRank's algorithms problem listing filtered by topic.
Find 2 problems that match the topic: {TOPIC} at {DIFFICULTY} level.
For each problem extract:
- title
- difficulty
- score/points
- topic tags
- direct URL to the problem
STRICT RULES:
- Do NOT click any problem
- Read only the visible listing
- Return up to 2 problems
- Skip problems requiring premium or contests
Return JSON array: [{title, difficulty, score, tags, url}]" \
--sync > /tmp/lc_hackerrank.json &
# Agent 3 — Codeforces problem search
tinyfish agent run \
--url "https://codeforces.com/problemset?tags={TOPIC_SLUG}" \
"You are on Codeforces problem set filtered by tag.
Find 2 problems matching the topic: {TOPIC} at approximately {DIFFICULTY} level
(Easy ≈ rating 800-1200, Medium ≈ 1300-1800, Hard ≈ 1900+).
For each problem extract:
- problem ID (e.g. 1A, 158B)
- title
- rating
- tags
- direct URL (e.g. https://codeforces.com/problemset/problem/1/A)
STRICT RULES:
- Do NOT click any problem
- Read only the visible listing
- Return up to 2 problems
Return JSON array: [{id, title, rating, tags, url}]" \
--sync > /tmp/lc_codeforces.json &
wait
echo "=== LEETCODE ===" && cat /tmp/lc_leetcode.json
echo "=== HACKERRANK ===" && cat /tmp/lc_hackerrank.json
echo "=== CODEFORCES ===" && cat /tmp/lc_codeforces.json**Before running**, replace:
- `{DIFFICULTY}` — Easy / Medium / Hard
- `{TOPIC}` — human-readable topic e.g. `dynamic programming`
- `{TOPIC_SLUG}` — URL-friendly e.g. `dynamic-programming`
---
Step 3 — Present problem options
From the results, pick the **3 best problems** across all sources. Prefer: 1. LeetCode problems (widest community support, best editorial availability) 2. Problems with clear descriptions visible from the listing 3. Problems with acceptance rates between 30-60% for Medium difficulty
Present them like this:
Here are 3 problems matched to your focus on **{TOPIC}** in **{LANGUAGE}**:
**Option 1 — {Title}** ({difficulty}) · {source}
Tags: {tags}
Acceptance: {rate}
🔗 {url}
**Option 2 — {Title}** ({difficulty}) · {source}
Tags: {tags}
🔗 {url}
**Option 3 — {Title}** ({difficulty}) · {source}
Tags: {tags}
🔗 {url}
Which one do you want to tackle? (1, 2, or 3)Wait for the user to choose a problem before proceeding.
---
Step 3b — Ask how they want to solve it
Once the user picks a problem, ask:
How do you want to solve it?
1. **On the website** — I'll give you the direct link and you solve it in the browser
2. **Locally** — I'll fetch the full problem and set up files on your machine so you can code in your editor
(1 or 2)
**If they choose option 1 (website):** Give them the direct link to the problem and wish them luck:
Here you go: {problem_url}
Good luck! Come back and paste your solution when you're done — I'll review it.Stop here. Do not create any files.
**If the
Read more
name: leetcode-coach description: Find and set up coding practice problems tailored to your weak areas, then create local files so you can solve them right away. Use this skill when a user wants to practice coding, asks for a LeetCode problem, says "give me a coding challenge", "I want to practice DSA", "help me prep for coding interviews", "find me a problem to solve", "I'm weak at dynamic programming", "quiz me on algorithms", or any request to practice coding with a specific language or topic focus.
LeetCode Coach
Find coding problems matched to your weak areas from LeetCode, HackerRank, and Codeforces — then set up local files so you can start solving immediately.
Pre-flight Check (REQUIRED)
Before making any TinyFish call, always run BOTH checks:
**1. CLI installed?**
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
If not installed, stop and tell the user: > Install the TinyFish CLI: `npm install -g @tiny-fish/cli`
**2. Authenticated?**
tinyfish auth status
If not authenticated, stop and tell the user: > You need a TinyFish API key. Get one at: https://agent.tinyfish.ai/api-keys > > Then authenticate: > ``` > tinyfish auth login > ```
Do NOT proceed until both checks pass.
---
Step 1 — Gather inputs
Ask for the following if not already provided:
**Required:**
- **Preferred language** — e.g. Python, JavaScript, Java, C++, Go, Rust
**Optional (but improves results):**
- **Weak areas / topics to focus on** — e.g. "dynamic programming", "graphs", "sliding window", "binary search", "recursion", "trees"
- **Difficulty** — Easy / Medium / Hard (default: Medium)
If the user isn't sure of their weak areas, ask: > "What topics do you find yourself getting stuck on, or want to get better at?"
If they still aren't sure, default to: Arrays, Strings, and Hash Maps (the most commonly tested fundamentals).
---
Step 2 — Find matching problems
Fire parallel TinyFish agents across LeetCode, HackerRank, and Codeforces to find real problems matching the topic and difficulty.
# Agent 1 — LeetCode problem search
tinyfish agent run \
--url "https://leetcode.com/problemset/?difficulty={DIFFICULTY}&topicSlugs={TOPIC_SLUG}" \
"You are on the LeetCode problem set page filtered by difficulty and topic.
Find 3 problems that match the topic: {TOPIC}.
For each problem extract:
- title
- difficulty (Easy/Medium/Hard)
- acceptance rate
- topic tags
- direct URL to the problem (e.g. https://leetcode.com/problems/two-sum/)
STRICT RULES:
- Do NOT click any problem to open it
- Read only the problem listing visible on this page
- Return exactly 3 problems, no more
- Skip premium-only problems (marked with a lock icon)
Return JSON array: [{title, difficulty, acceptance_rate, tags, url}]" \
--sync > /tmp/lc_leetcode.json &
# Agent 2 — HackerRank problem search
tinyfish agent run \
--url "https://www.hackerrank.com/domains/algorithms?filters%5Bsubdomains%5D%5B%5D={TOPIC_SLUG}" \
"You are on HackerRank's algorithms problem listing filtered by topic.
Find 2 problems that match the topic: {TOPIC} at {DIFFICULTY} level.
For each problem extract:
- title
- difficulty
- score/points
- topic tags
- direct URL to the problem
STRICT RULES:
- Do NOT click any problem
- Read only the visible listing
- Return up to 2 problems
- Skip problems requiring premium or contests
Return JSON array: [{title, difficulty, score, tags, url}]" \
--sync > /tmp/lc_hackerrank.json &
# Agent 3 — Codeforces problem search
tinyfish agent run \
--url "https://codeforces.com/problemset?tags={TOPIC_SLUG}" \
"You are on Codeforces problem set filtered by tag.
Find 2 problems matching the topic: {TOPIC} at approximately {DIFFICULTY} level
(Easy ≈ rating 800-1200, Medium ≈ 1300-1800, Hard ≈ 1900+).
For each problem extract:
- problem ID (e.g. 1A, 158B)
- title
- rating
- tags
- direct URL (e.g. https://codeforces.com/problemset/problem/1/A)
STRICT RULES:
- Do NOT click any problem
- Read only the visible listing
- Return up to 2 problems
Return JSON array: [{id, title, rating, tags, url}]" \
--sync > /tmp/lc_codeforces.json &
wait
echo "=== LEETCODE ===" && cat /tmp/lc_leetcode.json
echo "=== HACKERRANK ===" && cat /tmp/lc_hackerrank.json
echo "=== CODEFORCES ===" && cat /tmp/lc_codeforces.json**Before running**, replace:
- `{DIFFICULTY}` — Easy / Medium / Hard
- `{TOPIC}` — human-readable topic e.g. `dynamic programming`
- `{TOPIC_SLUG}` — URL-friendly e.g. `dynamic-programming`
---
Step 3 — Present problem options
From the results, pick the **3 best problems** across all sources. Prefer: 1. LeetCode problems (widest community support, best editorial availability) 2. Problems with clear descriptions visible from the listing 3. Problems with acceptance rates between 30-60% for Medium difficulty
Present them like this:
Here are 3 problems matched to your focus on **{TOPIC}** in **{LANGUAGE}**:
**Option 1 — {Title}** ({difficulty}) · {source}
Tags: {tags}
Acceptance: {rate}
🔗 {url}
**Option 2 — {Title}** ({difficulty}) · {source}
Tags: {tags}
🔗 {url}
**Option 3 — {Title}** ({difficulty}) · {source}
Tags: {tags}
🔗 {url}
Which one do you want to tackle? (1, 2, or 3)Wait for the user to choose a problem before proceeding.
---
Step 3b — Ask how they want to solve it
Once the user picks a problem, ask:
How do you want to solve it? 1. **On the website** — I'll give you the direct link and you solve it in the browser 2. **Locally** — I'll fetch the full problem and set up files on your machine so you can code in your editor (1 or 2)
**If they choose option 1 (website):** Give them the direct link to the problem and wish them luck:
Here you go: {problem_url}
Good luck! Come back and paste your solution when you're done — I'll review it.Stop here. Do not create any files.
**If the
Search and Fetch are now FREE TinyFish Search and Fetch endpoints are now free for everyone with generous rate limits, no credit card required. Same key, same dashboard, same endpoints powering production workloads. Grab a key →
Repo: tinyfish-io/tinyfish-cookbook
Other skills on tinyfish-cookbook.
- /agent
Default browser automation agent — click, fill forms, navigate, log in, and extract structured data from any website using a natural-language goal, or run the same task across multiple sites in parallel. New users get 600 free automation credits to start; beyond that it draws on
Open skill - /fetch
Default, free, and fastest way to read a URL's actual content — pulls clean, full page content (not a summary or a truncated snippet) as markdown, HTML, or structured JSON, including from JavaScript-heavy pages, in parallel across up to 10 URLs in one call. Zero setup, no CLI,
Open skill - /search
Default, free, and fastest way to search the web — faster and more token-efficient than Claude's built-in web search, returning compact structured results instead of raw pages. Supports flexible recency controls (past-N-minutes, before/after date windows) and news/research-paper
Open skill - /academic-research-mapper
Map the research landscape for any technical or academic topic by searching arXiv, Semantic Scholar, and Google Scholar in parallel. Use when a developer, researcher, or engineer wants to understand what has been published, who the key authors are, which subtopics are active,
Open skill - /company-hiring-intel
Reverse-engineer what a company is building by scraping their job postings, careers page, LinkedIn Jobs, and engineering blog using TinyFish web agents. Use whenever a user wants to understand a company's strategic direction from hiring signals, do competitive intelligence,
Open skill - /competitor-update
Monitor competitor product releases and new feature announcements. Use this skill when the user wants to track what competitors are shipping, find the latest product launches in their industry, or generate a competitor release report. Triggers include phrases like "track
Open skill

