Agent skill

Text Search

by w-winter in w-winter/dot314

Search indexed text corpora with qmd. An agent skill from w-winter/dot314.

MITAuto-check passed

Install Text Search

skills CLI
$ npx skills add w-winter/dot314 --skill text-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install w-winter/dot314 text-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/w-winter/dot314.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/text-search .claude/skills/text-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
text-search
GitHub stars
139
Token cost
~3.1k tokens
SKILL.md length
1,027 words
Files
8 (incl. scripts)
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Search indexed text corpora with qmd. An agent skill from w-winter/dot314.

  • Works in 3 steps: Discover candidate sessions with qmd or… → Inspect the session transcript with qmd… → Recover exact raw-session details only…
  • SKILL.md covers First checks, Core rule, Choose the right qmd command and Build better queries, plus 9 more sections
  • Runs Python and Shell scripts from its folder; calls npm

What it does

Text Search is an agent skill from w-winter/dot314. Search indexed text corpora with qmd. For indexed content, prefer qmd over grep.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `scripts/analyze-sessions.sh`, `scripts/claude-session-extract-with-tools.py` and `scripts/codex-session-extract-with-tools.py`).

The licence is MIT.

Example prompts

  • “/text-search”

Requirements

  • Python 3
  • Node.js
  • A Bash shell

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Discover candidate sessions with qmd or analyze-sessions.sh
  2. Inspect the session transcript with qmd get
  3. Recover exact raw-session details only when needed via original_session + session_ask or session-view --include-tool-calls

What it can do on your machine

Read from SKILL.md and the folder at commit 0c6bbc7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 7 files in scripts/ (Python and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Text Search loads about 3.1k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 1,027 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from w-winter/dot314 at commit 0c6bbc7, republished under its MIT licence (© w-winter). 1,027 words, ~3,141 tokens.

Download SKILL.mdSave it as .claude/skills/text-search/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
text-search
description
Search indexed text corpora with qmd. For indexed content, prefer qmd over grep.
disable-model-invocation
true

Use qmd to search indexed text corpora such as session logs, notes, docs, and logs. For indexed content, use qmd for discovery instead of raw grep.

First checks

Before searching, confirm what is indexed:

bash
qmd status
qmd collection list
qmd context list

Do not assume collection names, paths, or contexts.

Core rule

For indexed corpora, use qmd for discovery.

Do not use grep/find/jq/cat directly on indexed files to search for meaning. This is especially important for session JSONL, which is noisy and hard to interpret raw.

Shell usage is still fine for:

  • filtering tool output after discovery
  • housekeeping and file targeting
  • non-indexed content
  • helper scripts in this skill

Choose the right qmd command

For exact clues, start with qmd search.

  • Use qmd search for exact clues: tool names, error strings, repo names, JSON fields, literal phrases
  • Use qmd query when lexical search is weak, the request is conceptual, or you want hybrid retrieval + reranking
  • Use qmd vsearch only when you specifically want pure semantic similarity
bash
qmd search '"toolName":"rp_exec"'
qmd search 'apply_edits'
qmd query "OAuth redirect flow"
qmd vsearch "the session where we changed direction"

Operational notes:

  • qmd query may trigger local model startup or model downloads, so it is not always the fastest first step
  • For session discovery, prefer --files first so you get compact path output instead of long snippets

Build better queries

Use --intent when the request is ambiguous

intent is a steering hint. Use it when the same words could refer to multiple things or when the user remembers the topic better than the exact wording.

bash
qmd query --intent "Pi/Codex/Claude agent sessions about repo editing failures" \
  -c sessions \
  "apply_edits error"
Use structured query documents for important searches

Multi-line query documents are useful when you have both exact clues and fuzzy memory.

  • lex: exact terms, phrases, identifiers, JSON fields
  • vec: natural-language meaning
  • hyde: what the answer likely looked like
  • intent: optional steering context
bash
qmd query $'intent: agent sessions about RepoPrompt edits and patch failures
lex: apply_edits rp_exec "search block not found"
vec: debugging failed file edits in agent sessions
hyde: The agent tried to edit a file several times, the edit did not match, and it switched to a narrower or different approach'

Operational details:

  • The first typed query gets 2x fusion weight, so put the strongest signal first
  • expand: must stand alone; do not mix it with typed lines
  • lex queries support quoted phrases and exclusions such as -sports or -"test data"
Useful output and tuning flags
bash
qmd query --files -n 20 "agent session about flaky tests"
qmd query --json -n 10 "session where we redesigned the search flow"
qmd query --json --explain -c sessions "apply_edits error"
qmd query -C 20 --min-score 0.3 -c sessions "OAuth redirect flow"

Use:

  • --files for compact discovery output and path-based follow-up
  • --json for structured inspection when you need scores/snippets
  • --explain when ranking looks wrong
  • -C, --candidate-limit to reduce reranking work
  • --min-score to drop weak matches
  • -c, --collection to scope the search

For session hunting, --files is usually the best first output mode.

Retrieval commands

bash
qmd get "#abc123"
qmd multi-get "docs/*.md" --json
qmd ls sessions
qmd ls sessions/claude

Use get, multi-get, and ls to retrieve or browse content after discovery.

For session discovery, use this inspection path:

bash
# 1. Discover a session transcript
qmd search -c sessions --files 'apply_edits' -n 5

# 2. Read the session transcript directly
qmd get "qmd://sessions/path/to/session-transcript.md" --full

Each session transcript includes original_session metadata in frontmatter. When exact commands, SQL, edits, or ad-hoc code matter, recover them from the original session JSONL with session_ask or session-view --include-tool-calls. Add --include-tool-results only when tool outputs are evidence.

If qmd is missing

bash
npm install -g @tobilu/qmd
qmd --version
qmd status

Sessions

Agent session transcripts are indexed as the sessions collection.

The sessions collection is a corpus of agent session transcripts generated from session JSONL via session-view. It is optimized for readable search. Very large sessions may be split across multiple transcript documents; use the original_session metadata when you need exact raw-session recovery.

Required workflow

Use this three-step process:

  1. Discover candidate sessions with qmd or analyze-sessions.sh
  2. Inspect the session transcript with qmd get
  3. Recover exact raw-session details only when needed via original_session + session_ask or session-view --include-tool-calls

Do not try to understand a session from raw JSONL snippets alone.

Inspecting session transcript paths

Use one reliable inspection path:

bash
# Read the session transcript directly
qmd get "qmd://sessions/path/to/session-transcript.md" --full

If the transcript is enough, stop there.

If exact raw-session details matter:

bash
# 1. Read the transcript and note its `original_session` frontmatter
qmd get "qmd://sessions/path/to/session-transcript.md" --full

# 2. Recover exact tool-call details from the original session
session-view --include-tool-calls /absolute/path/to/original/session.jsonl

Or use session_ask against that original_session path when you want targeted recovery without reading the whole session.

Show full SKILL.md (457 more words)Show less
If original_session is missing or stale

A session transcript's original_session frontmatter may point to a materialized indexing path rather than the live Pi session JSONL. If that path does not exist, use relative_session plus Pi's configured session directory.

For Pi sessions:

  • relative_session: pi/<session-path>.jsonl
  • live path: <PI session dir>/<session-path>.jsonl

Resolve the Pi session dir using Pi's documented precedence:

  1. --session-dir if known from the command/session context
  2. PI_CODING_AGENT_SESSION_DIR if set
  3. sessionDir in Pi settings
  4. default: ~/.pi/agent/sessions

Example:

text
relative_session: pi/--Users-ww-project--/session-id.jsonl

with the default session dir maps to:

text
~/.pi/agent/sessions/--Users-ww-project--/session-id.jsonl

If the effective session dir cannot be determined, try the default path first, then ask the user for their Pi session directory rather than assuming the qmd original_session path is still valid.

Filtering transcript output is fine:

bash
qmd get "qmd://sessions/path/to/session-transcript.md" --full | grep -iE 'USER:.*(error|bug|regression)'

Session search playbook

Ask for narrowing clues when memory is vague

If the request is fuzzy, ask for:

  • approximate timeframe
  • which agent/tool produced the session
  • repo or project involved
  • remembered phrase, error text, or tool name

After 2-3 bad searches, stop iterating blindly and ask for more context.

Start here when you have hard clues. Use --files first to avoid wasting tokens on snippets. If lexical search returns an obvious hit, inspect it immediately instead of escalating to query.

bash
qmd search -c sessions --files 'rp_exec' -n 20
qmd search -c sessions --files 'apply_edits' -n 20
qmd search -c sessions --files 'git rebase' -n 20
qmd search -c sessions --files 'search block not found' -n 20

If lexical search returns many same-score candidates because the clue is broad or common, do not keep repeating broad lexical searches. Tighten the query with a more distinctive phrase, tool name, error string, or timeframe clue, or switch to qmd query --intent ....

Escalate when lexical search is weak

Use query, add intent, and scope to sessions when exact search is weak or the request is conceptual. Keep --files on unless you specifically need snippets.

bash
qmd query --intent "Pi/Codex/Claude agent sessions about git trouble during implementation work" \
  -c sessions \
  --files \
  -n 10 \
  "git rebase gone wrong"
bash
qmd query -c sessions --files $'intent: agent sessions about broken code edits in RepoPrompt workflows
lex: apply_edits rp_exec "oldText" "search block not found"
vec: session where file edits failed repeatedly and the agent had to retry'
Browse after narrowing
bash
qmd ls sessions
qmd ls sessions/claude
qmd ls sessions/pi

Inspect with session-view

session-view lives at ~/.pi/agent/skills/text-search/scripts/session-view.

Use it when a session transcript points you at an original_session and you need exact raw-session details. It also accepts RepoPrompt AgentSession-*.json files when you want the compressed RP-side view plus its codexRolloutPath. For Codex sessions, session-view strips the leading injected AGENTS/environment preamble through </environment_context> before rendering the transcript.

bash
# Default: prose-only; omit tool calls and tool result/output blocks
session-view /absolute/path/to/original/session.jsonl

# Opt-in: include assistant tool invocations with full arguments
session-view --include-tool-calls /absolute/path/to/original/session.jsonl

# Escalate only when tool outputs are evidence
session-view --include-tool-calls --include-tool-results /absolute/path/to/original/session.jsonl

# RepoPrompt AgentSession JSON
session-view ~/Library/Application\ Support/RepoPrompt/Workspaces/.../AgentSessions/AgentSession-ABC123.json

You can also inspect the latest local session directly:

bash
# Default: prose-only; omit tool calls and tool result/output blocks
session-view --latest pi
session-view --latest codex
session-view --latest claude
session-view --latest rp

# Opt-in: include full tool-call arguments
session-view --include-tool-calls --latest pi

Default rendered output looks like this:

text
USER: message

ASSISTANT: response text

With --include-tool-calls, assistant tool invocations are rendered with full JSON arguments:

text
ASSISTANT:
  [tool_name]
    {
      "path": "file.txt"
    }

If you opt in to tool results with --include-tool-results, you'll also see bounded output blocks:

text
TOOL [name]: ✓ truncated_output

Example workflows

Find a specific session with hard clues
bash
# 1. Start with lexical search and compact path output
qmd search -c sessions --files 'git rebase' -n 20

# 2. Inspect the transcript
qmd get "qmd://sessions/path/to/session-transcript.md" --full

# 3. If exact details matter, recover full tool calls from original_session
session-view --include-tool-calls /absolute/path/to/original/session.jsonl
Escalate when lexical search is weak
bash
qmd query --intent "Pi/Codex/Claude sessions about git trouble during coding work" \
  -c sessions \
  --files \
  -n 20 \
  "git rebase gone wrong"

Supplemental helper: analyze-sessions.sh

Location: ~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh

Use it for time-windowed or operational reporting rather than ranked corpus search.

bash
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 24 --report
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 48 --pattern "apply_edits|rp_exec"
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 36 --edit-diagnostics
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 48 --tool-errors
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 24 --tool-stats
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 72 --report --project pi-mono
~/.pi/agent/skills/text-search/scripts/analyze-sessions.sh --hours 72 --tool-stats --tool rp_exec

Use qmd for ranked discovery across the corpus. Use analyze-sessions.sh for recent-window reports and regex-style operational triage.

Session JSONL structure reference

Each JSONL line has a type field:

TypeKey fields
messagerole, content, toolCall
toolResulttoolName, isError, content
customcustomType, data

© w-winter, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (scripts) in skills/text-search of w-winter/dot314.

  • SKILL.md
  • scripts/analyze-sessions.sh
  • scripts/claude-session-extract-with-tools.py
  • scripts/codex-session-extract-with-tools.py
  • scripts/pi-session-extract-with-tools.py
  • scripts/rebuild-qmd-sessions-rendered.sh
  • scripts/repoprompt-agent-session-extract.py
  • scripts/session-view

Open the folder on GitHubat commit 0c6bbc7

Compare with similar skills

Text Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Text Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Text Search this skillw-winter/dot314139—~3.1kAutomated safety check: PassMIT
Indexabilitythedaviddias/Front-End-Checklist74k—~814Automated safety check: PassMIT
Indexability Conflictsthedaviddias/Front-End-Checklist74k—~876Automated safety check: PassMIT
Qmdbreferrari/obsidian-mind5k—~1.7kAutomated safety check: PassMIT
Index Refreshpaperclipai/paperclip99k—~994Automated safety check: PassMIT
Qmdcompozy/compozy2.8k—~1kAutomated safety check: PassMIT

Similar skills

  • Indexability

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing a site for accidental noindex directives, investigating why important pages are not appearing in Google Search, or reviewing CMS settings that control indexing…

    74k GitHub stars~814 tokensUpdated 2 days ago
    Marketing & SEOAuto-check passed
  • Indexability Conflicts

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing a site for indexability issues, investigating why pages appear in Google's index that should be excluded (or vice versa), or reviewing robots.txt and meta…

    74k GitHub stars~876 tokensUpdated 2 days ago
    Marketing & SEOAuto-check passed
  • Qmd

    breferrari/obsidian-mind

    Search the vault using QMD semantic search. An agent skill from breferrari/obsidian-mind.

    5k GitHub stars~1.7k tokensUpdated 3 days ago
    Agent WorkflowsAuto-check passed
  • Index Refresh

    paperclipai/paperclip

    A skill your agent uses when an LLM Wiki operation issue requests an index refresh.

    99k GitHub stars~994 tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Qmd

    compozy/compozy

    Search markdown knowledge bases, notes, and documentation using QMD.

    2.8k GitHub stars~1k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Adr Index

    ruvnet/ruflo

    Build or rebuild the ADR index + dependency graph by running scripts/import.mjs (handles v3-style and plugin-style ADR formats; one Bash call vs hundreds of MCP round-trips)

    74k GitHub stars~861 tokensUpdated today
    DevelopmentAuto-check: notes

More from w-winter/dot314

  • Refresh RepoPrompt tool guidance when the CLI/MCP surface changes.

    139 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Deep X Research

    w-winter/dot314

    Deep, exhaustive research on a topic across X (Twitter) by driving Grok (x.com/i/grok) through surf.

    139 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Prose Review

    w-winter/dot314

    Review prose written for others (e.g., user-facing documentation, prompts for other LLMs, reports, plans, inline comments, docstrings) for local jargon leakage, orphaned references, missing…

    139 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check passed
  • Rp

    w-winter/dot314

    Always read this skill when the user mentions "rp" or "repoprompt", or before accessing a repository outside the current RepoPrompt workspace.

    139 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Surf

    w-winter/dot314

    Control Chrome browser via CLI for testing, automation, and debugging.

    139 GitHub stars~7.6k tokensUpdated yesterday
    Auto-check: warnings
  • Xcodebuildmcp

    w-winter/dot314

    Build/test Xcode projects via the XcodeBuildMCP MCP server using a local CLI wrapper for pi (no MCP support).

    139 GitHub stars~196 tokensUpdated yesterday
    Auto-check passed

Questions about Text Search

What does Text Search do?

Search indexed text corpora with qmd. An agent skill from w-winter/dot314. Text Search is an agent skill from w-winter/dot314. Search indexed text corpora with qmd.

How do I install Text Search in Claude Code?

Run `npx skills add w-winter/dot314 --skill text-search -a claude-code`. Or copy the skill folder (skills/text-search in w-winter/dot314) into .claude/skills/text-search in your project. Claude Code loads it when a task matches its description.

How do I install Text Search in Codex?

Run `npx skills add w-winter/dot314 --skill text-search -a codex`. Or copy the skill folder (skills/text-search in w-winter/dot314) into .agents/skills/text-search in your project. Codex loads it when a task matches its description.

Can I use Text Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add w-winter/dot314 --skill text-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/text-search, .gemini/skills/text-search, .github/skills/text-search and .opencode/skills/text-search in your project.

What does Text Search need to run?

Going by SKILL.md and its folder, Text Search needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (npm). Our summary lists: Python 3; Node.js; A Bash shell.

Does Text Search access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Text Search safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Text Search use?

Text Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Text Search use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Text Search?

Skills that share tags, products or a category with Text Search: Indexability (thedaviddias/Front-End-Checklist, 74k stars), Indexability Conflicts (thedaviddias/Front-End-Checklist, 74k stars), Qmd (breferrari/obsidian-mind, 5k stars) and Index Refresh (paperclipai/paperclip, 99k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Text Search?

w-winter (a GitHub user) maintains it in w-winter/dot314, which has 139 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 7, 2026.

Source: w-winter/dot314 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.