Fast SQLite-based vault search using FTS5 full-text search index
Scanned 9/9/2026
Install to Claude Code
npx -y skills add DavidROliverBA/ArchitectKB --skill q --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Q?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/davidroliverba-architectkb)More formats (shields.io, HTML) on the badges page.
---
description: Fast SQLite-based vault search using FTS5 full-text search index
context: normal
model: haiku
---
# /q - Quick SQLite Search
Fast vault search using the SQLite FTS5 index. Returns results in milliseconds instead of seconds.
## Prerequisites
The SQLite index must be built first:
```bash
npm run vault:index
```
## Usage Patterns
### Full-text Search
```bash
/q architecture patterns
/q "event driven" # Phrase search
/q kafka integration # Multiple terms (AND)
```
### Type Filter
```bash
/q type:Adr # All ADRs
/q type:Project status:active
/q type:Task priority:high
```
### Tag Search
```bash
/q tag:technology/aws
/q tag:project/your-project
```
### Recent Notes
```bash
/q recent # Modified in last 7 days
/q recent:30 # Modified in last 30 days
```
### Backlinks
```bash
/q backlinks:"Project - Your Project"
/q backlinks:"System - Your System"
```
### Orphans
```bash
/q orphans # Notes with no backlinks
```
## Implementation
Execute the appropriate SQLite query based on the search pattern.
### Full-text Search Query
```bash
sqlite3 .data/vault.db -markdown "
SELECT n.path, snippet(fts_content,1,'→','←','...',40) as match
FROM fts_content
JOIN notes n ON fts_content.rowid = n.id
WHERE fts_content MATCH '<search_terms>'
ORDER BY rank
LIMIT 20
"
```
### Type Filter Query
```bash
sqlite3 .data/vault.db -markdown "
SELECT path, title, status, priority
FROM notes
WHERE type = '<Type>'
ORDER BY modified DESC
LIMIT 20
"
```
### Tag Search Query
```bash
sqlite3 .data/vault.db -markdown "
SELECT n.path, n.title, n.type
FROM notes n
JOIN tags t ON n.id = t.note_id
WHERE t.tag = '<tag>'
ORDER BY n.modified DESC
LIMIT 20
"
```
### Recent Notes Query
```bash
sqlite3 .data/vault.db -markdown "
SELECT path, title, type, modified
FROM notes
WHERE modified >= date('now', '-<days> days')
ORDER BY modified DESC
LIMIT 30
"
```
### Backlinks Query
```bash
sqlite3 .data/vault.db -markdown "
SELECT n.path, n.title, n.type
FROM notes n
JOIN links l ON n.id = l.source_id
WHERE l.target_path LIKE '%<note_name>%'
ORDER BY n.modified DESC
"
```
### Orphans Query
```bash
sqlite3 .data/vault.db -markdown "
SELECT n.path, n.title, n.type
FROM notes n
LEFT JOIN links l ON n.id = l.target_id
WHERE l.target_id IS NULL
AND n.type NOT IN ('DailyNote', 'MOC', 'Dashboard', 'Query')
ORDER BY n.modified DESC
"
```
## Performance
| Query Type | Grep/Glob | SQLite | Improvement |
| ----------- | --------- | ------ | ----------- |
| Full-text | 5-15 sec | 0.01s | ~1000x |
| Type filter | 3-5 sec | 0.007s | ~500x |
| Tag search | 2-5 sec | 0.007s | ~500x |
| Backlinks | 10+ sec | 0.01s | ~1000x |
## Rebuilding the Index
The index should be rebuilt when vault content changes significantly:
```bash
npm run vault:index # Full rebuild
npm run vault:stats # View current statistics
```
## Tips
1. **Combine filters**: `/q type:Adr status:proposed technology/aws`
2. **Use phrases**: `/q "data platform"` for exact matches
3. **Wildcards**: SQLite FTS5 supports `*` wildcards: `/q architect*`
4. **Present results**: Format output as markdown table for readability
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!