By mds
Persist and compound AI context across Claude Code sessions via SQLite database. Boot with historical folder context, git snapshots, decisions, and handoffs; proactively query DB for file status, locked decisions, and open questions before editing code; auto-log enrichments, resolutions, and generate AI handoff notes for seamless continuity.
npx claudepluginhub mds/floatprompt --plugin floatpromptLogs folder-level decisions and open questions from the session
Enriches folder context in float.db — the primary job is writing useful context
Writes .float/handoff.md - the AI-to-AI session note passed between sessions
Updates session handoff entry with title, decision, and rationale
Floats your content for AI — and humans who use it.
One install. Zero config. Every page becomes copyable markdown.
llms.txt and .md files/float/ dashboard to browse and copy any pagenpm install floatprompt
That's it. On install, FloatPrompt adds itself to your build. Every npm run build now generates markdown automatically.
| Framework | Extra Steps | Notes |
|---|---|---|
| Next.js | None | Works automatically |
| Astro | None | Works automatically |
| Gatsby | None | Works automatically |
| Eleventy | None | Works automatically |
| Vite | None | Works automatically |
| Hugo | Add to build command | hugo && floatprompt ./public |
| Jekyll | Add to build command | jekyll build && floatprompt ./_site |
Hugo and Jekyll don't use npm scripts, so add FloatPrompt to your build command manually.
After each build:
out/
├── index.html
├── index.md ← AI-readable
├── about.html
├── about.md ← AI-readable
├── llms.txt ← Site index for LLMs
├── llms-full.txt ← Complete site content
└── float/
└── index.html ← Dashboard for browsing all pages
Want a "Copy as Markdown" button on your live site? Add the widget so visitors can copy any page directly:
import { FloatButton } from 'floatprompt/react'
export default function Layout({ children }) {
return (
<>
{children}
<FloatButton position="bottom-right" />
</>
)
}
Use the core functions with your own buttons:
import { copyPageMarkdown, getPageMarkdown } from 'floatprompt/widget'
// Copy current page to clipboard
document.getElementById('my-copy-btn').onclick = async () => {
await copyPageMarkdown()
}
// Or get the markdown to do something else with it
const markdown = await getPageMarkdown()
FloatPrompt runs after your build and:
llms.txt — a site index following the llms.txt standard/float/ — a dashboard for browsing and copying all pagesNo AI. No API keys. Pure mechanical extraction.
Create floatprompt.config.js for custom settings:
export default {
exclude: ['/admin/**', '/api/**'],
baseUrl: 'https://example.com',
siteTitle: 'My Site',
siteDescription: 'A site that floats its content for AI',
}
| Option | Type | Default | Description |
|---|---|---|---|
input | string | auto-detected | Input directory |
output | string | same as input | Output directory |
exclude | string[] | [] | Glob patterns to exclude |
baseUrl | string | '' | Base URL for the site |
siteTitle | string | from index.html | Site title |
siteDescription | string | — | Site description |
llmsTxt | boolean | true | Generate llms.txt |
llmsFullTxt | boolean | true | Generate llms-full.txt |
dashboard | boolean | true | Generate /float/ dashboard |
If you'd rather run FloatPrompt yourself instead of using the automatic postbuild hook:
floatprompt # auto-detects output directory
floatprompt ./out # explicit path
floatprompt ./out --exclude "/admin/**"
| Flag | Description |
|---|---|
--output <dir> | Output directory (default: same as input) |
--exclude <glob> | Exclude pattern (can use multiple times) |
--base-url <url> | Base URL for the site |
--site-title <title> | Site title |
--no-llms-txt | Skip llms.txt and llms-full.txt |
--no-dashboard | Skip /float/ dashboard |
--verbose | Show detailed output |
import { FloatPrompt } from 'floatprompt'
// Generate for a directory
const result = await FloatPrompt.generate({
input: './out',
exclude: ['/admin/**'],
})
console.log(`Generated ${result.markdownFilesGenerated} files`)
// Extract single page
const markdown = FloatPrompt.extract(htmlString, {
url: '/about',
title: 'About Us',
})
For AI agents: HTML is full of navigation, footers, scripts, and styling. Markdown is just the content. Less noise, better results.
For humans: Visitors can copy any page as markdown and paste directly into Claude, ChatGPT, or any AI tool.
For you: One install. Works on every build. Nothing to maintain.
MIT
Import external documentation locally - bypass AI-blocking sites via Context7, WebFetch, or Playwright
Context management with save and restore capabilities
Pull docs from any URL into Claude Code. Indexes static docs sites in seconds with conditional-GET caching, then exposes them as MCP tools (fetch_url, ensure_docs, list_sources, list_indexed, grep_docs, read_doc, add_source, remove_source). Local, browser-free, no API keys.
Compile scattered markdown knowledge files into a topic-based wiki. Non-destructive, Obsidian-compatible, with staged adoption.
Flexible knowledge base scaffolding: personal KB, project docs, team collaboration with configurable entities, microdatabases, and VitePress portal
Uses power tools
Uses Bash, Write, or Edit tools
Share bugs, ideas, or general feedback.
Persistent memory for Claude Code sessions using Honcho
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claim