anysearch-cli
AGENTS.md0 starsChanged 4 days agoApache-2.0View on GitHub
AnySearch is an agent CLI (ans) that works inside one domain only. It keeps retrieval results tied to their sources, filters them against a strict domain allowlist, and says there is nothing to answer when no results pass the domain filter. Answers that a provider generates itself (for example Exa or Tavily answer mode) do not pass through this filter and are marked unverified. GLOSSARY.md is the only place to look up what a term means. The rule is kept…
- Installs packages
- Commits and pushes
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repositoryOne other file it gives its agents.
- anysearchSkill
The file
We split this AGENTS.md into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 16
Before every merge, run the full pnpm test locally and wait for it to pass.
- Very specific: line 27
All version control goes through GitButler (but).
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md — anysearch-cli
AnySearch is an agent CLI (ans) that works inside one domain only. It keeps retrieval results tied to their sources, filters them against a strict domain allowlist, and says there is nothing to answer when no results pass the domain filter. Answers that a provider generates itself (for example Exa or Tavily answer mode) do not pass through this filter and are marked unverified. GLOSSARY.md is the only place to look up what a term means.
How to run
pnpm install --ignore-scripts— install dependencies. better-sqlite3 ships a prebuilt binary, so no node-gyp.pnpm -r check/pnpm -r test/pnpm -r build— run the same task in every package (turbo).node scripts/ship-gate.mjs— release smoke check. It runs checks, build, packaging, a real install and a real start, and its answer decides whether the release is good.pnpm -C packages/store eval --offline— offline run of the fixed memory test set.cp scripts/hooks/pre-commit-user .git/hooks/pre-commit-user && cp scripts/hooks/pre-push-user .git/hooks/pre-push && chmod +x .git/hooks/pre-commit-user .git/hooks/pre-push— install the test gates. Both run the full workspace test suite.git pushandbut pushrun the pre-push hook; a plaingit commitruns pre-commit.but commitruns no git hooks at all, so the push gate is the last one that really runs.
Merge gate (#58 direction — decided, see #59)
The rule is kept by discipline, not by a machine. Branch protection is not available (private repo on GitHub Free returns 403), --no-verify can skip the pre-push hook, and a delete may skip the hook entirely. So:
- Before every merge, run the full
pnpm testlocally and wait for it to pass. A red CI tells you something, but it does not block anything. pre-pushis the last real gate, because it is the only hook that runs on a real push. It is still not a guarantee. A push that passed the hook never replaces a full green run before the merge.- We do not make the repo public and do not upgrade the GitHub plan. That option was rejected in #58 and recorded in #59.
- #67 showed, by pushing a commit that was meant to fail, that the pre-push hook really does block a push unless you pass
--no-verify. Proof: the closeout comment on #67.
Directory conventions
packages/{kernel,store,retriever,embedding}are shared libraries.apps/{cli,mcp,plugin,dsh-plugin}are the four ways users run the tool.GLOSSARY.mdis the word list.docs/agents/holds notes for agents.
Gotchas (not visible in the code)
- better-sqlite3@13 loads a prebuilt
.nodefile.allowBuilds: falsein pnpm-workspace.yaml is on purpose. Turning it on would need MSBuild + ClangCL. Leave it. - pnpm is pinned to 11.24.0 with
pmOnFail: error. A version mismatch stops at once and never rewrites the lockfile. Change both pinned fields in one commit. - All version control goes through GitButler (
but). Never push without an explicit order. - Each host's hook format has its own trap. Codex accepts only the
hookSpecificOutputshape. Antigravity sends camelCase JSON on stdin, and onPreToolUsean empty{}means DENY. The rest are listed indocs/*-integration.mdand in the comments underapps/plugin/src/hooks/adapters/.
Agent skills
Issue tracker
Issues live in GitHub Issues. Use the gh CLI for everything. See docs/agents/issue-tracker.md.
Triage labels
There are five triage roles, and each label string is the role name itself. See docs/agents/triage-labels.md.
Domain docs
This repo has one context: a single GLOSSARY.md at the root. See docs/agents/domain.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

