html-tools — html-tools install html-tools, my-claude-skills, community, html-tools install, ide skills, single-file application development, client-side data processing tools, offline-enabled web applications, Claude Code, Cursor, Windsurf

v1.0.0
GitHub

About this Skill

Ideal for Client-Side Agents needing rapid prototyping and offline functionality with HTML, CSS, and JavaScript html-tools is a technique for building single-file applications that deliver useful functionality without requiring build steps, frameworks, or servers.

Features

Combines HTML, CSS, and JavaScript for single-file applications
Enables client-side data processing and visualization
Supports offline functionality and easy sharing
Allows for rapid prototyping and development
Eliminates the need for build steps, frameworks, or servers
Follows patterns from building 150+ single-file tools

# Core Topics

rohunvora rohunvora
[0]
[0]
Updated: 3/8/2026

Agent Capability Analysis

The html-tools skill by rohunvora is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance. Optimized for html-tools install, single-file application development, client-side data processing tools.

Ideal Agent Persona

Ideal for Client-Side Agents needing rapid prototyping and offline functionality with HTML, CSS, and JavaScript

Core Value

Empowers agents to build single-file applications with client-side data processing, offline tools, and rapid prototyping capabilities using HTML, CSS, and JavaScript without requiring build steps or servers, perfect for delivering useful functionality via client-side data visualization

Capabilities Granted for html-tools

Building offline-capable tools for data processing
Creating rapid prototypes for web applications
Developing single-file applications for easy sharing and deployment

! Prerequisites & Limits

  • Apps requiring a server or backend functionality are not suitable
  • Limited to client-side data processing and offline functionality
Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

html-tools

Install html-tools, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly

HTML Tools

Build single-file applications combining HTML, CSS, and JavaScript that deliver useful functionality without build steps, frameworks, or servers.

Based on Simon Willison's patterns from building 150+ such tools.

When to Use

  • "Build me a tool that..."
  • "Create a simple app to..."
  • "Make a utility for..."
  • Client-side data processing or visualization
  • Tools that should work offline or be easily shared
  • Prototypes that need to ship fast

When to Skip

  • Apps requiring authentication or persistent server storage
  • Complex state management across many components
  • Projects where React/Vue ecosystem benefits outweigh simplicity

Core Principles

  1. Single file — Inline CSS and JavaScript. One HTML file = complete tool.
  2. No React — Vanilla JS or lightweight libraries only. Explicitly prompt "No React."
  3. No build step — Load dependencies from CDNs, not npm.
  4. Small codebase — Target a few hundred lines. If larger, reconsider scope.

Development Workflow

Starting a New Tool

  1. Begin with Claude Artifacts, ChatGPT Canvas, or similar for rapid prototyping
  2. Prompt explicitly: "Build this as a single HTML file. No React. No build steps."
  3. For complex tools, use Claude Code or similar coding agents
  4. Host on GitHub Pages for permanence

Iterating

  1. Remix existing tools as starting points
  2. Record LLM transcripts in commit messages for documentation
  3. Build debugging tools (clipboard viewer, CORS tester) to understand browser capabilities

State Persistence Patterns

Store configuration in URL hash or query params. Users can bookmark or share exact state.

javascript
1// Save state to URL 2function saveState(state) { 3 const params = new URLSearchParams(state); 4 history.replaceState(null, '', '?' + params.toString()); 5} 6 7// Load state from URL 8function loadState() { 9 return Object.fromEntries(new URLSearchParams(location.search)); 10} 11 12// On page load 13const state = loadState(); 14if (state.color) applyColor(state.color);

localStorage (for secrets and large data)

Store API keys and user preferences without server exposure.

javascript
1// Store API key securely (never in URL) 2localStorage.setItem('openai_api_key', key); 3 4// Retrieve 5const key = localStorage.getItem('openai_api_key'); 6 7// Prompt user if missing 8if (!key) { 9 key = prompt('Enter your OpenAI API key:'); 10 localStorage.setItem('openai_api_key', key); 11}

Data Input/Output Patterns

Copy-Paste as Data Transfer

Treat clipboard as the universal data bus. Always include "Copy to clipboard" buttons.

javascript
1async function copyToClipboard(text) { 2 await navigator.clipboard.writeText(text); 3 showToast('Copied!'); 4} 5 6// Rich clipboard (multiple formats) 7async function copyRich(html, text) { 8 const blob = new Blob([html], { type: 'text/html' }); 9 const item = new ClipboardItem({ 10 'text/html': blob, 11 'text/plain': new Blob([text], { type: 'text/plain' }) 12 }); 13 await navigator.clipboard.write([item]); 14}

File Input Without Server

Accept file uploads that process entirely client-side.

html
1<input type="file" id="fileInput" accept=".json,.csv,.txt"> 2 3<script> 4document.getElementById('fileInput').addEventListener('change', async (e) => { 5 const file = e.target.files[0]; 6 const text = await file.text(); 7 processFile(text, file.name); 8}); 9</script>

File Download Without Server

Generate and download files entirely in browser.

javascript
1function downloadFile(content, filename, mimeType = 'text/plain') { 2 const blob = new Blob([content], { type: mimeType }); 3 const url = URL.createObjectURL(blob); 4 const a = document.createElement('a'); 5 a.href = url; 6 a.download = filename; 7 a.click(); 8 URL.revokeObjectURL(url); 9} 10 11// Usage 12downloadFile(JSON.stringify(data, null, 2), 'export.json', 'application/json');

API Integration

CORS-Enabled APIs (call directly from browser)

These APIs allow direct browser requests without a proxy:

APIUse Case
GitHub APIRepos, gists, issues
PyPIPackage metadata
iNaturalistSpecies observations
BlueskySocial data
MastodonFediverse data
OpenAI/AnthropicLLM calls (with user's key)

LLM API Pattern

Call LLM APIs directly using localStorage-stored keys.

javascript
1async function callClaude(prompt) { 2 const key = localStorage.getItem('anthropic_api_key'); 3 if (!key) throw new Error('No API key'); 4 5 const response = await fetch('https://api.anthropic.com/v1/messages', { 6 method: 'POST', 7 headers: { 8 'Content-Type': 'application/json', 9 'x-api-key': key, 10 'anthropic-version': '2023-06-01', 11 'anthropic-dangerous-direct-browser-access': 'true' 12 }, 13 body: JSON.stringify({ 14 model: 'claude-sonnet-4-20250514', 15 max_tokens: 1024, 16 messages: [{ role: 'user', content: prompt }] 17 }) 18 }); 19 20 return response.json(); 21}

GitHub Gists for Persistent State

Use gists as a free, CORS-friendly database.

javascript
1async function saveToGist(gistId, filename, content, token) { 2 await fetch(`https://api.github.com/gists/${gistId}`, { 3 method: 'PATCH', 4 headers: { 5 'Authorization': `token ${token}`, 6 'Content-Type': 'application/json' 7 }, 8 body: JSON.stringify({ 9 files: { [filename]: { content: JSON.stringify(content) } } 10 }) 11 }); 12}

Advanced Capabilities

Pyodide (Python in Browser)

Run Python, pandas, matplotlib entirely client-side.

html
1<script src="https://cdn.jsdelivr.net/pyodide/v0.24.1/full/pyodide.js"></script> 2<script> 3async function runPython(code) { 4 const pyodide = await loadPyodide(); 5 await pyodide.loadPackage(['pandas', 'matplotlib']); 6 return pyodide.runPython(code); 7} 8</script>

WebAssembly Libraries

Run compiled libraries in browser:

  • Tesseract.js — OCR for images and PDFs
  • FFmpeg.wasm — Video/audio processing
  • sql.js — SQLite in browser
html
1<!-- Tesseract OCR example --> 2<script src="https://cdn.jsdelivr.net/npm/tesseract.js@4/dist/tesseract.min.js"></script> 3<script> 4async function ocr(imageUrl) { 5 const result = await Tesseract.recognize(imageUrl, 'eng'); 6 return result.data.text; 7} 8</script>

Output Format

When building an HTML tool, deliver:

HTML TOOL: [name]

[Complete single-file HTML with inline CSS and JavaScript]

FEATURES:
- [Key capability 1]
- [Key capability 2]

USAGE:
[Brief instructions]

HOST: Save as .html and open in browser, or deploy to GitHub Pages.

Reference

Useful patterns for building HTML tools — Simon Willison

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is html-tools?

Ideal for Client-Side Agents needing rapid prototyping and offline functionality with HTML, CSS, and JavaScript html-tools is a technique for building single-file applications that deliver useful functionality without requiring build steps, frameworks, or servers.

How do I install html-tools?

Run the command: npx killer-skills add rohunvora/my-claude-skills/html-tools. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for html-tools?

Key use cases include: Building offline-capable tools for data processing, Creating rapid prototypes for web applications, Developing single-file applications for easy sharing and deployment.

Which IDEs are compatible with html-tools?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for html-tools?

Apps requiring a server or backend functionality are not suitable. Limited to client-side data processing and offline functionality.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add rohunvora/my-claude-skills/html-tools. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use html-tools immediately in the current project.

Related Skills

Looking for an alternative to html-tools or another community skill for your workflow? Explore these related open-source skills.

View All

widget-generator

Logo of f
f

f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.

149.6k
0
AI

flags

Logo of vercel
vercel

flags is a Next.js feature management skill that enables developers to efficiently add or modify framework feature flags, streamlining React application development.

138.4k
0
Browser

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI