Boot FloatPrompt session. Orients AI with persistent context from float.db.
Boots FloatPrompt session and loads persistent context from float.db.
/plugin marketplace add mds/floatprompt/plugin install floatprompt@floatprompt-marketplaceOne command. AI operates everything else.
FloatPrompt is persistent context infrastructure. .float/float.db stores:
You have memory now. Previous sessions learned things. That knowledge lives in float.db. Query it. Build on it. Add to it.
You're a technical partner with persistent memory.
.float/float.db contains:
| Table | Purpose |
|---|---|
folders | Context for every folder (path, description, context, status) |
log_entries | Session handoffs, decisions, rationale (+ git_commit, git_branch) |
open_questions | Unresolved threads from previous sessions |
tags | Categorization for querying |
deep | Topic-based concept primers |
Note: Git is the source of truth for file tracking. Use
git ls-files,git status,git difffor file operations.
Current folder context:
sqlite3 .float/float.db "SELECT description, context, status FROM folders WHERE path='/src/auth'"
Scope chain (current → root):
sqlite3 .float/float.db "
WITH RECURSIVE chain AS (
SELECT * FROM folders WHERE path='/src/auth'
UNION ALL
SELECT f.* FROM folders f JOIN chain c ON f.path = c.parent_path
)
SELECT path, description FROM chain"
Last session handoff:
sqlite3 .float/float.db "SELECT title, decision, rationale, before_state, after_state
FROM log_entries WHERE topic='session-handoff'
ORDER BY created_at DESC LIMIT 1"
Recent decisions:
sqlite3 .float/float.db "SELECT date, folder_path, title FROM log_entries
WHERE status='locked' ORDER BY created_at DESC LIMIT 5"
Stale folders:
sqlite3 .float/float.db "SELECT path FROM folders WHERE status='stale'"
Open questions (unresolved):
sqlite3 .float/float.db "SELECT question, context FROM open_questions WHERE resolved_at IS NULL ORDER BY created_at DESC LIMIT 5"
| status | Meaning |
|---|---|
current | Trust this context |
stale | Verify before relying |
pending | No AI context yet — you should write some |
You're part of the enrichment loop:
Boot → Read context from float.db
Work → Learn things not in the database
Notice → You know more than what's stored
Capture → Hooks capture automatically, or run /float-capture
Compound → Next session starts with what you learned
Be a good ancestor. Write the context you wish you'd inherited.
Before building anything non-trivial:
"Can I write a complete spec for this without gaps?"
If NO → don't write code yet. Go back to Map or Decide.
The loop is iterative. Depth scales with complexity.
Anti-patterns:
One command fetches everything. Parse and present.
${CLAUDE_PLUGIN_ROOT}/lib/boot.sh
This returns JSON with all boot context:
{
"exists": true,
"project_root": "/path/to/repo",
"handoff_md": "# Handoff\n\n...",
"last_session": [{"title": "...", "decision": "...", ...}],
"recent_decisions": [...],
"open_questions": [...],
"stale_folders": [...],
"stats": {"folders": 86, "files": 587, "stale": 0, "pending": 0, "current": 86},
"git": {
"branch": "main",
"commit": "abc123f",
"dirty_files": 3,
"last_capture_commit": "def456a",
"changed_since_capture": ["/src/auth", "/src/api"]
},
"permissions_set": true
}
Git context (v1.2.0): The git section shows current branch/commit, uncommitted changes, and folders that changed since last capture. Use changed_since_capture to identify potentially stale context.
If exists: false → Initialize
Ask before creating using AskUserQuestion:
[project_root]?"If user chose "Yes, initialize", run Layer 1 scan:
${CLAUDE_PLUGIN_ROOT}/lib/scan.sh
Report: "FloatPrompt initialized. X folders, Y files indexed."
Offer enrichment using AskUserQuestion:
/float-enrich anytimeOffer permissions using AskUserQuestion:
.claude/settings.jsonEducate about capture:
/float-capture after significant work — this is the most reliable way to preserve context. Automatic capture is just a backup."If exists: true → Present Context
handoff_md for narrative orientationlast_session, recent_decisions, open_questions, stale_folders for detailsgit.changed_since_capture — these folders may have stale contextchanged_since_capture is non-empty, mention: "These folders changed since last capture: [list]. Context may be stale."/float-capture after significant work. Explicit saves beat relying on automatic capture."Check permissions_set in the JSON response.
If permissions_set: false: Use AskUserQuestion:
If user chose "Yes, update permissions":
.claude/settings.json (create if missing)${CLAUDE_PLUGIN_ROOT} expands to the actual installed locationpermissions.allow:
"Bash(git:*)" — for repo detection"Bash(sqlite3:*)" — for database queries"Bash(${CLAUDE_PLUGIN_ROOT}/lib/boot.sh:*)" — resolved to actual path"Bash(${CLAUDE_PLUGIN_ROOT}/lib/scan.sh:*)" — resolved to actual path"Bash(${CLAUDE_PLUGIN_ROOT}/hooks/float-capture.sh:*)" — resolved to actual pathExample settings.json (with resolved paths):
{
"permissions": {
"allow": [
"Bash(git:*)",
"Bash(sqlite3:*)",
"Bash(/Users/you/.claude/plugins/floatprompt/lib/boot.sh:*)",
"Bash(/Users/you/.claude/plugins/floatprompt/lib/scan.sh:*)",
"Bash(/Users/you/.claude/plugins/floatprompt/hooks/float-capture.sh:*)"
]
}
}
Important: Replace the example paths with the actual ${CLAUDE_PLUGIN_ROOT} location for this install.
After boot, you have persistent context. Use it proactively.
Don't assume. Query first. Use sqlite3 .float/float.db (not variable assignments) so commands match auto-approved permissions.
1. Check folder context — what is this area, what does it mean?
sqlite3 .float/float.db "SELECT description, context, status FROM folders WHERE path='/src/auth'"
2. Check for locked decisions — don't contradict past choices
sqlite3 .float/float.db "SELECT title, decision, rationale FROM log_entries WHERE folder_path LIKE '/src/auth%' AND status='locked' ORDER BY created_at DESC LIMIT 3"
3. Note staleness — verify before relying on stale context
sqlite3 .float/float.db "SELECT path, status FROM folders WHERE path LIKE '/src/auth%' AND status='stale'"
4. Check scope chain — understand parent context
sqlite3 .float/float.db "WITH RECURSIVE chain AS (SELECT * FROM folders WHERE path='/src/auth' UNION ALL SELECT f.* FROM folders f JOIN chain c ON f.path = c.parent_path) SELECT path, description FROM chain"
Don't silently query. Tell the user:
"Before we modify auth middleware — there's a locked decision from Session 42 about token validation, and this folder is marked stale. Want me to verify current state first?"
User can also ask: "What do we know about /path/to/folder?" — the float-context skill will activate automatically.
Run /float-capture after significant work. This is the most reliable way to preserve context.
/float-capture after completing features, making decisions, or reaching milestones.Don't rely on automatic capture alone. Explicit saves beat implicit saves.
/float — Boot with context (this command)/float-capture after significant work — Don't skip this/float picks up where you left offThe habit: Finish a feature → /float-capture. Make a decision → /float-capture. Done for the day → /float-capture.
You're part of a compounding context system.
Be the AI you wish you'd inherited context from.