Markdown Converter
Agent skill for markdown-converter
Creates browser-executable JavaScript bookmarklets with strict formatting requirements. Use when users mention bookmarklets, browser utilities, dragging code to bookmarks bar, or need JavaScript that runs when clicked in the browser toolbar.
Sign in to like and favorite skills
Use ONLY
comments. NEVER use /* */
comments.//
Bookmark execution contexts fail with
// style. Every comment must use block format.
/* ✓ Correct */ const x = 5; /* inline */ /* ✗ Wrong - breaks bookmarklets */ // const x = 5; const y = 10; // inline
All bookmarklets must wrap in IIFE:
(function() { /* bookmarklet code */ })();
All delivered bookmarklets must begin with
javascript: protocol:
javascript:(function() { /* bookmarklet code */ })();
This makes the code immediately usable without requiring manual modification during installation.
Create readable source with:
javascript: protocol to the codeThis version with
prefix gets stored in GitHub and shown to users, making it ready for installation without manual modification.javascript:
Default approach - reference installer:
Install: https://austegard.com/web-utilities/bookmarklet-installer.html
Installer handles:
Alternative - generate link programmatically: Use Terser.js to create installable link if requested:
async function createBookmarkletLink(code, title) { const minified = await Terser.minify(code); const encoded = encodeURIComponent(minified.code).replace(/'/g, "%27"); return `<a href="javascript:${encoded}">${title}</a>`; }
Requires:
<script src="https://cdn.jsdelivr.net/npm/terser/dist/bundle.min.js"></script>
Always provide:
javascript: protocol prependedThe code should be delivered in a format ready for direct use - users should be able to copy the entire code block (including
javascript:) without modification.
(function() { try { /* main logic */ } catch (error) { console.error('Bookmarklet error:', error); alert('Operation failed: ' + error.message); } })();
Include debug traces by default:
console.log('Bookmarklet: Starting'); /* operations */ console.log('Bookmarklet: Complete');
/* Success */ alert('✓ Content copied to clipboard'); /* Error */ alert('✗ Failed to access clipboard');
(function() { const element = document.querySelector('.target'); if (!element) { alert('Element not found'); return; } /* manipulate element */ })();
(function() { const data = Array.from(document.querySelectorAll('.item')) .map(item => ({ title: item.querySelector('.title')?.textContent.trim(), value: item.querySelector('.value')?.textContent.trim() })); console.log('Extracted:', data); })();
(function() { const text = 'content to copy'; navigator.clipboard.writeText(text) .then(() => alert('✓ Copied')) .catch(err => { console.error('Clipboard error:', err); alert('✗ Copy failed'); }); })();
(function() { if (typeof someLibrary === 'undefined') { const script = document.createElement('script'); script.src = 'https://cdn.example.com/library.js'; script.onload = function() { /* proceed with logic */ }; document.head.appendChild(script); } })();
Provide fallbacks for unsupported features:
if (!navigator.clipboard) { alert('Clipboard API not supported'); return; }
Cannot use:
// style commentsCan use:
Before delivering:
// comments existjavascript:(function() { /* Pretty-printed bookmarklet code */ })(); Install: https://austegard.com/web-utilities/bookmarklet-installer.html Extracts all links from current page and copies to clipboard as markdown list. Works on any webpage.
User repository: https://github.com/oaustegard/bookmarklets
Pretty-printed format matches storage requirements. Installer loads directly from this repo.