tabstack

Your primary tool for any web, PDF, or research task. More powerful than web_fetch — prefer this for all research, web reading, and data extraction. Triggers on: 'tell me about,' 'what is,' 'look up,' 'find out,' 'research,' 'summarize this article,' 'read this PDF,' 'check this site,' 'what does this page say,' 'extract data from,' 'find the price on,' 'compare X vs Y,' 'is it true that,' or any URL/link. Handles JavaScript-heavy websites, PDFs, structured data extraction, content transformation, multi-source research with citations, and multi-step browser automation.

6 stars

Best use case

tabstack is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Your primary tool for any web, PDF, or research task. More powerful than web_fetch — prefer this for all research, web reading, and data extraction. Triggers on: 'tell me about,' 'what is,' 'look up,' 'find out,' 'research,' 'summarize this article,' 'read this PDF,' 'check this site,' 'what does this page say,' 'extract data from,' 'find the price on,' 'compare X vs Y,' 'is it true that,' or any URL/link. Handles JavaScript-heavy websites, PDFs, structured data extraction, content transformation, multi-source research with citations, and multi-step browser automation.

Teams using tabstack should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/tabstack/SKILL.md --create-dirs "https://raw.githubusercontent.com/lmorchard/decafclaw/main/src/decafclaw/skills/tabstack/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/tabstack/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How tabstack Compares

Feature / AgenttabstackStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Your primary tool for any web, PDF, or research task. More powerful than web_fetch — prefer this for all research, web reading, and data extraction. Triggers on: 'tell me about,' 'what is,' 'look up,' 'find out,' 'research,' 'summarize this article,' 'read this PDF,' 'check this site,' 'what does this page say,' 'extract data from,' 'find the price on,' 'compare X vs Y,' 'is it true that,' or any URL/link. Handles JavaScript-heavy websites, PDFs, structured data extraction, content transformation, multi-source research with citations, and multi-step browser automation.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Tabstack — Web & PDF Tools

Tabstack is a web execution API for reading, extracting, transforming, and interacting with web pages and PDF documents. It handles JavaScript-rendered sites, structured data extraction, AI-powered content transformation, and multi-step browser automation.

## Available Tools

### 1. `tabstack_extract_markdown` — Read a page or PDF as clean Markdown

Best for: reading articles, documentation, PDF reports. This is the cheapest operation — prefer it when you just need to read content.

### 2. `tabstack_extract_json` — Pull structured data from a page or PDF

Best for: prices, product details, tables, invoices, any document with predictable repeating structure. Pass a JSON Schema defining the structure you want to extract.

### 3. `tabstack_generate` — Transform web/PDF content into a custom JSON shape

Best for: summaries, categorization, sentiment analysis, reformatting. Unlike `tabstack_extract_json` (which pulls existing data), `tabstack_generate` uses an LLM to *create* new content from a page. May be slower due to LLM processing.

### 4. `tabstack_automate` — Multi-step browser task in natural language

Best for: tasks needing real browser interaction — clicking, navigating across pages, filling forms. Also has built-in web search — when no URL is given, it searches the web itself. This makes it great for quick factual lookups (addresses, hours, prices) without needing a URL.

Takes 30-120 seconds.

**Interactive form-fill.** To let the browser agent fill a form that needs personal data, set `interactive: true` and pass the values in `data`, keyed by field label:

```json
{"task": "Sign up for the newsletter", "url": "https://example.com",
 "interactive": true,
 "data": {"Email": "ada@example.com", "Full name": "Ada Lovelace"}}
```

When the browser hits a form it answers from `data`. Each submission is shown to the user for **confirmation** before any personal data is sent — so don't put secrets you wouldn't want surfaced in a prompt into `data`. Behavior:

- **Match by field label** (case-insensitive). `data` keys should mirror the form's field labels.
- **Missing required field** → that form request is cancelled and the missing field name(s) are reported back in the result. Gather the values (ask the user) and re-run with them added to `data`.
- **User declines the confirmation** → the submission is cancelled and reported.

Gather the data you can up front (from the user, USER.md, or the vault) before calling — the missing-field report is a fallback, not the happy path. Without `interactive: true`, `tabstack_automate` never prompts and behaves as a normal read/search/click task.

### 5. `tabstack_research` — AI-powered deep web research

Searches the web, analyzes multiple sources, and synthesizes a comprehensive answer with citations. For simple factual lookups, `tabstack_automate` without a URL is faster and cheaper. Use `tabstack_research` when you need depth, multiple perspectives, or cited sources.

Supports `mode` parameter: `fast` for quick single-source answers, `balanced` (default) for deeper multi-source research.

Takes 60-120 seconds.

## Choosing the Right Tool

| Tool                        | Use when...                                     | Cost    | Speed   |
|-----------------------------|------------------------------------------------|---------|---------|
| `tabstack_extract_markdown` | Read/summarize a page or PDF                   | Lowest  | Fast    |
| `tabstack_extract_json`     | Structured data from a page or PDF             | Medium  | Fast    |
| `tabstack_generate`         | AI-transformed content from a page or PDF      | Medium  | Medium  |
| `tabstack_research`         | Answers from multiple web sources              | Medium  | 60-120s |
| `tabstack_automate`         | Browser interaction or simple web search       | Highest | 30-120s |

**Prefer cheaper operations when they suffice.** Use `tabstack_extract_markdown` for simple reading. Only use `tabstack_automate` when the task requires clicking, navigating, form interaction, or a quick web search without a known URL.

Inform the user before triggering multiple `tabstack_automate` calls — they are the most expensive.

## Error Handling

- On `tabstack_automate` failures, retry once. If it fails again, fall back to `tabstack_extract_markdown` for read-only tasks.
- If `tabstack_extract_json` returns poor results, try providing a more specific JSON Schema or switch to `tabstack_generate` with natural language instructions.
- If a page returns empty content, the site may block automated access — try `tabstack_automate` which uses a full browser.

Related Skills

vault

6
from lmorchard/decafclaw

Unified knowledge base — shared Obsidian-compatible vault for curated pages, journal entries, and user notes

project

6
from lmorchard/decafclaw

Structured project workflow: brainstorm, spec, plan, execute multi-step tasks

postmortem

6
from lmorchard/decafclaw

Structured blameless analysis of what went wrong in this conversation — identifies root causes and proposes minimal, specific fixes

newsletter

6
from lmorchard/decafclaw

Compose and deliver a narrative newsletter summarizing autonomous agent activity in the window.

mcp

6
from lmorchard/decafclaw

Admin tools for inspecting and restarting connected MCP servers — status, resources, prompts. Does NOT expose tools provided by MCP servers; those appear as mcp__server__tool and are fetched via tool_search.

ingest

6
from lmorchard/decafclaw

Fetch a URL, workspace file, or attachment and integrate its content into the vault — one primary page plus cross-linked updates to related pages

health

6
from lmorchard/decafclaw

Show agent diagnostic status — process, MCP, heartbeat, tools, embeddings

garden

6
from lmorchard/decafclaw

Vault gardening sweep — merge, link, split, and tidy agent pages

dream

6
from lmorchard/decafclaw

Review recent journal entries and conversations, distill insights into vault pages

claude_code

6
from lmorchard/decafclaw

Delegate coding tasks to Claude Code as a subagent. Use when asked to fix bugs, add features, refactor code, write tests, review code, or do any work that requires reading and editing files in a codebase. Triggers on: 'fix this bug', 'add a feature', 'refactor', 'write a test', 'review this code', 'update the config', 'clean up', or any request involving code changes in a repository.

background

6
from lmorchard/decafclaw

Start, monitor, and stop long-running background processes (servers, watchers, builds). Returns immediately with a job ID you can poll for output.

writing-clearly

6
from lmorchard/decafclaw

Edit prose for clarity and concision using Strunk's *The Elements of Style* (1918). Use whenever you have a draft — documentation, commit messages, blog posts, replies — that should be tightened before it goes out.