Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aradotso avatar

Fieldtheory Cli Bookmarks

  • 559 installs
  • 66 repo stars
  • Updated July 9, 2026
  • aradotso/trending-skills

fieldtheory-cli-bookmarks is a Claude Code skill that syncs X/Twitter bookmarks into a local searchable knowledge base via the Field Theory CLI for developers who want agents to query saved links in real time.

About

Field Theory CLI (ft) is a command-line tool that downloads, indexes, classifies, and exposes your X/Twitter bookmarks for use by local AI coding agents. It works by reading your Chrome session on macOS or using OAuth on other platforms, eliminating the need for Twitter API keys. Once synced, you can instantly search thousands of saved posts with natural language, run LLM-powered classification, and let agents like Claude Code pull relevant bookmarks as context during development, research, or content work. The tool is lightweight, stores everything locally, and turns passive bookmarking into an active, queryable second brain that grows with you.

  • Syncs all X/Twitter bookmarks locally without an official API by reading Chrome session
  • Full-text search, auto-classification by category and domain using LLM
  • Exposes bookmarks to Claude Code and other agents via simple shell commands
  • Supports incremental sync, full history crawl, scheduled runs, and OAuth fallback
  • Stores data in ~/.ft-bookmarks/ with terminal dashboard (ft viz)

Fieldtheory Cli Bookmarks by the numbers

  • 559 all-time installs (skills.sh)
  • +13 installs in the week ending Jun 23, 2026 (Skillselion tracking)
  • Ranked #1,632 of 16,659 AI & Agent Building skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 19, 2026 (Skillselion catalog sync)
npx skills add https://github.com/aradotso/trending-skills --skill fieldtheory-cli-bookmarks

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs559
repo stars66
Security audit2 / 3 scanners passed
Last updatedJuly 9, 2026
Repositoryaradotso/trending-skills

How do you search X bookmarks locally?

Turn their personal X/Twitter bookmarks into a local, searchable knowledge base that any coding agent can query in real time.

Who is it for?

Developers who save technical threads on X and want a local, agent-queryable bookmark index via the `ft` CLI during research.

Skip if: Teams needing team-wide Slack or Notion knowledge bases, browser-extension-only bookmarking without CLI sync, or non-X link archives.

When should I use this skill?

A developer asks to sync Twitter bookmarks, search X bookmarks locally, classify saved posts, or schedule `ft sync bookmarks` for agent use.

What you get

Local bookmark index, classified bookmark categories, full-text search results, and agent-queryable shell command output.

  • local bookmark index
  • classified search results

Files

SKILL.mdMarkdownGitHub ↗

Field Theory CLI — X/Twitter Bookmark Manager

Skill by ara.so — Daily 2026 Skills collection.

Field Theory CLI (ft) syncs all your X/Twitter bookmarks locally, indexes them for full-text search, classifies them by category and domain, and exposes them to AI agents via shell commands. No official API required for the default sync mode.

Installation

npm install -g fieldtheory

Requirements:

  • Node.js 20+
  • Google Chrome (logged into X/Twitter) for default sync mode
  • macOS for Chrome session sync; Linux/Windows use OAuth mode

Verify installation:

ft --version
ft status

Quick Start

# Sync bookmarks (reads Chrome session automatically)
ft sync

# Search immediately
ft search "machine learning"

# Explore with terminal dashboard
ft viz

Data is stored at ~/.ft-bookmarks/ by default.

Core Commands

Syncing

# Incremental sync (new bookmarks only)
ft sync

# Sync then auto-classify with LLM
ft sync --classify

# Full history crawl from the beginning
ft sync --full

# Sync via OAuth API (cross-platform, no Chrome needed)
ft sync --api

# Show sync status
ft status

Searching

# Full-text BM25 search
ft search "distributed systems"
ft search "rust async runtime"
ft search "cancer immunotherapy"

# Filter results
ft list --author elonmusk
ft list --category tool
ft list --domain ai
ft list --since 2024-01-01
ft list --category research --domain biology

# Show a single bookmark by ID
ft show 1234567890

Classification

# LLM-powered classification (requires LLM access)
ft classify

# Regex-based classification (no LLM needed, faster)
ft classify --regex

# Rebuild search index (preserves existing classifications)
ft index

Exploration & Stats

# Terminal dashboard with sparklines and charts
ft viz

# Category distribution
ft categories

# Subject domain distribution
ft domains

# Top authors, languages, date range
ft stats

# Print data directory path
ft path

Media

# Download static images from bookmarks
ft fetch-media

OAuth Setup (Cross-Platform / API Mode)

# Interactive OAuth setup
ft auth

# Then sync via API
ft sync --api

OAuth token stored at ~/.ft-bookmarks/oauth-token.json with chmod 600.

Configuration

Custom Data Directory

# Set in shell profile (~/.zshrc or ~/.bashrc)
export FT_DATA_DIR=/path/to/custom/dir

# Or per-command
FT_DATA_DIR=/Volumes/external/bookmarks ft sync

Data File Layout

~/.ft-bookmarks/
  bookmarks.jsonl       # raw bookmarks, one JSON object per line
  bookmarks.db          # SQLite FTS5 search index
  bookmarks-meta.json   # sync cursor and metadata
  oauth-token.json      # OAuth credentials (API mode only)

Scheduling Sync

Add to crontab (crontab -e):

# Sync every morning at 7am
0 7 * * * ft sync

# Sync and classify every morning at 7am
0 7 * * * ft sync --classify

# Full sync every Sunday at midnight
0 0 * * 0 ft sync --full

Categories Reference

CategoryDescription
toolGitHub repos, CLI tools, npm packages, open-source
securityCVEs, vulnerabilities, exploits, supply chain
techniqueTutorials, demos, code patterns, how-to threads
launchProduct launches, announcements, "just shipped"
researchArXiv papers, studies, academic findings
opinionTakes, analysis, commentary, threads
commerceProducts, shopping, physical goods

Working with Bookmark Data (TypeScript/Node.js)

The bookmarks.jsonl file can be consumed directly in scripts:

import { createReadStream } from "fs";
import { createInterface } from "readline";
import { homedir } from "os";
import { join } from "path";

interface Bookmark {
  id: string;
  text: string;
  author: string;
  created_at: string;
  url: string;
  category?: string;
  domain?: string;
  media?: string[];
}

async function loadBookmarks(): Promise<Bookmark[]> {
  const dataDir = process.env.FT_DATA_DIR ?? join(homedir(), ".ft-bookmarks");
  const filePath = join(dataDir, "bookmarks.jsonl");

  const bookmarks: Bookmark[] = [];
  const rl = createInterface({
    input: createReadStream(filePath),
    crlfDelay: Infinity,
  });

  for await (const line of rl) {
    if (line.trim()) {
      bookmarks.push(JSON.parse(line));
    }
  }

  return bookmarks;
}

// Usage
const bookmarks = await loadBookmarks();
const tools = bookmarks.filter((b) => b.category === "tool");
console.log(`Found ${tools.length} tool bookmarks`);

Query SQLite Index Directly

import Database from "better-sqlite3";
import { join } from "path";
import { homedir } from "os";

const dataDir = process.env.FT_DATA_DIR ?? join(homedir(), ".ft-bookmarks");
const db = new Database(join(dataDir, "bookmarks.db"), { readonly: true });

// Full-text search using SQLite FTS5
function searchBookmarks(query: string, limit = 20) {
  const stmt = db.prepare(`
    SELECT id, text, author, created_at, category, domain
    FROM bookmarks
    WHERE bookmarks MATCH ?
    ORDER BY rank
    LIMIT ?
  `);
  return stmt.all(query, limit);
}

// Filter by category
function getByCategory(category: string) {
  const stmt = db.prepare(`
    SELECT * FROM bookmarks WHERE category = ? ORDER BY created_at DESC
  `);
  return stmt.all(category);
}

const results = searchBookmarks("transformer architecture");
console.log(results);

Shell Integration in Agent Scripts

import { execSync } from "child_process";

// Run ft commands from Node.js
function ftSearch(query: string): string {
  return execSync(`ft search "${query}"`, { encoding: "utf8" });
}

function ftList(options: { category?: string; since?: string; author?: string }) {
  const flags = [
    options.category ? `--category ${options.category}` : "",
    options.since ? `--since ${options.since}` : "",
    options.author ? `--author ${options.author}` : "",
  ]
    .filter(Boolean)
    .join(" ");

  return execSync(`ft list ${flags}`, { encoding: "utf8" });
}

// Example: find AI memory tools bookmarked this year
const memoryTools = ftSearch("AI memory");
const recentTools = ftList({ category: "tool", since: "2025-01-01" });

Agent Integration Patterns

Tell your AI agent to use ft directly in natural language:

"Search my bookmarks for distributed tracing tools and summarize the top 5."

"Sync any new X bookmarks, then list all research papers from 2025."

"Find everything I've bookmarked about Rust and categorize it by subtopic."

"Every morning, run ft sync --classify to keep my bookmarks up to date."

Claude Code example prompt:

Use the `ft` CLI to search my bookmarks for "vector database" 
and pick the best open-source option to add to this project.
Run: ft search "vector database" --category tool

Troubleshooting

Chrome session not found

# Ensure Chrome is open and logged into X
# Then retry
ft sync

# If Chrome session still fails, use OAuth mode
ft auth
ft sync --api

Sync stalls or returns 0 bookmarks

# Check sync status and metadata
ft status

# Force full re-crawl
ft sync --full

# Check data directory permissions
ls -la ~/.ft-bookmarks/

Search returns no results

# Rebuild the search index
ft index

# Verify bookmarks exist
ft stats
wc -l ~/.ft-bookmarks/bookmarks.jsonl

Classification not running

# LLM classify requires an LLM — use regex fallback
ft classify --regex

# Or sync with regex classify
ft sync --classify --regex

Reset all data

rm -rf ~/.ft-bookmarks
ft sync

Custom data directory issues

# Confirm the env var is set
echo $FT_DATA_DIR
ft path

# Ensure directory is writable
mkdir -p "$FT_DATA_DIR"
chmod 755 "$FT_DATA_DIR"

Security Notes

  • All data is local only — no telemetry or external calls except to X during sync
  • Chrome cookies are read temporarily for sync and never stored separately
  • OAuth token is stored chmod 600 — treat it like a password
  • Default sync uses X's internal GraphQL API (same as browser); --api uses official v2 API

Platform Support

FeaturemacOSLinuxWindows
ft sync (Chrome session)
ft sync --api (OAuth)
Search, classify, viz

Linux/Windows users must run ft auth first, then use ft sync --api.

Resources

Related skills

How it compares

Pick this skill for personal X bookmark CLI sync; use documentation or Notion MCP skills for team-shared reference libraries.

FAQ

What CLI does fieldtheory-cli-bookmarks use?

fieldtheory-cli-bookmarks uses the Field Theory CLI (`ft`) to sync X/Twitter bookmarks locally, index them for full-text search, classify by category and domain, and return results to agents via shell commands.

Can Claude Code agents query synced bookmarks?

Yes—fieldtheory-cli-bookmarks exposes synced bookmarks through shell commands so Claude Code and other coding agents can search and classify saved X posts in real time without manual copy-paste.

Is Fieldtheory Cli Bookmarks safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.