Squick
Pre-computed, LLM-targeted code context for AI coding agents.
Squick scans a codebase, extracts structural facts (call graph, imports, symbols, framework markers, HTTP endpoints, content-type schemas, route patterns, dependency manifests), and emits a small set of artifacts that AI agents read instead of re-scanning the repository on every prompt.
Why
AI coding agents currently spend tokens "looking around" the repository before answering even simple questions. Squick inverts that cost: do the analysis once at file save, save tokens on every prompt thereafter.
Install
# npm (recommended for AI-agent users - works with `npx -y` too)
# PyPI
# crates.io
# Direct binary (Unix)
|
# Direct binary (Windows)
|
All channels install the same binary, exposed on PATH as squick.
Quick start
Writes a small set of artifacts to .squick/:
conventions.md- detected stack, library choices, repository layout, API surface. Attach this to your AI chat when asking about architecture or library usage.schemas.md- extracted data schemas (Strapi content types) and HTTP endpoints. Attach this to your AI chat for backend, data, or API questions.context.md- tiny index pointing at the two files above.
For programmatic consumers (MCP servers, scripts) add --full:
This additionally writes context.ndjson (one JSON fact per line) and
graph.txt (subject-predicate-object triples).
What gets extracted
- Structure (Tree-sitter): symbols, imports, JSX components, doc comments, references.
- Heuristics: function-name verbs, suffixes, Python dunders, framework markers.
- Dictionaries (YAML): conventional routes, file roles, framework affinity.
- Manifests:
package.json,pyproject.toml- identity, dependencies, scripts, framework detection. - Endpoints: FastAPI/Flask decorators, Django urlpatterns, Express member-calls, Next.js App Router file layout.
- Data schemas: Strapi content types (kind, names, attributes, relations).
Supported languages
TypeScript / TSX / JavaScript / JSX / Python.
Supported frameworks (out of the box)
Backend: Strapi, Django, Django REST Framework, FastAPI, Flask, Express, Koa, Fastify, NestJS, Sanity, Payload CMS, WordPress (file roles).
Frontend: Next.js (App Router + Pages Router), React, Tailwind.
Add a YAML file under dictionaries/frameworks/ to teach Squick a new
framework. No Rust changes required for most additions.
CLI
squick scan [root] One-shot scan into .squick/
--format markdown|json Output format (default: markdown)
--out PATH Override output path
--dict-dir PATH Override dictionary directory
--include GLOB Repeatable. Only scan matching paths
--exclude GLOB Repeatable. Skip matching paths
--no-schemas Skip .squick/schemas.md
--full Also emit context.ndjson + graph.txt
squick watch [root] Re-scan on file save (same flags)
squick init [root] Create empty .squick/ directory
squick mcp Start an MCP server on stdio
--dict-dir PATH Override dictionary directory
MCP server (for AI agents)
Squick speaks the Model Context Protocol on stdio. Any MCP-aware host can invoke its tools to pull project context on demand rather than re-reading source files.
Tools exposed:
squick_scan(root)- the conventions summary (most useful default).squick_get_conventions(root)- explicit conventions content.squick_get_schemas(root)- data schemas as JSON.squick_get_endpoints(root)- HTTP endpoints as JSON.squick_get_file_context(root, file)- context for one file only.squick_get_ndjson(root)- full project context as NDJSON.squick_get_graph(root)- RDF-style triples for graph traversal.
Configure Claude Code
For zero-install invocation (no global package needed):
The same shape works for Cursor (.cursor/mcp.json), Cline, Continue,
and any other MCP-aware host.
Dictionary format
Dictionaries are YAML files under dictionaries/<category>/<name>.yaml:
name: frameworks/example
description: One-line description of what this dictionary recognises.
entries:
- pattern: "models.py"
match: filename
tag: data-models
confidence: high
kind: literal
note: "Optional context for reviewers."
Globs accept * and ?. Regex uses Rust syntax. Literal matches are
case-insensitive.
Workspace layout
squick/
crates/
squick-core/ Types, scanner, AST extraction, resolver, manifests
squick-dict/ YAML dictionary engine
squick-format/ Output emitters (markdown / JSON / NDJSON / triples / conventions)
squick-watch/ Debounced file watcher
squick-cli/ `squick` binary
bindings/
node/ napi-rs bindings (npm distribution)
python/ PyO3 bindings (PyPI distribution)
extensions/
vscode/ VS Code extension
dictionaries/ YAML pattern catalogues
Built by Horizon LLC
Squick is built and maintained by Horizon LLC - we design and build custom AI developer tooling, MCP integrations, and agent infrastructure for engineering teams.
Need custom AI tooling for your team? Get in touch via pixelhorizon.dev.
License
Squick is distributed under the Apache License 2.0. Copyright 2026 Horizon LLC, Sharjah, United Arab Emirates.
Trademarks
"Squick" and the Squick logo are trademarks of Horizon LLC. The Apache License 2.0 grants no rights in the trademarks. See TRADEMARKS.md.
Contributing
Contributions to source code, dictionaries, and documentation are welcome under the terms of the Apache License 2.0. By submitting a contribution, you agree that it is licensed under the same terms as the project itself.
Run the test suite before submitting: