Product Full-Text Search
lobehub/lobehub
Guides work on LobeHub's own product search: the shared search repository, provider choice, Elasticsearch mappings, change syncing and reindexing.
Query, aggregate, patch, or paginate Exceptionless data through its Elasticsearch repository abstractions.
$ npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install exceptionless/Exceptionless foundatio-repositories --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/exceptionless/Exceptionless.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/foundatio-repositories .claude/skills/foundatio-repositories && rm -rf skills-srcUse ~/.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/
Install the "foundatio-repositories" agent skill from https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositories into .claude/skills/foundatio-repositories/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "foundatio-repositories", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositoriesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install exceptionless/Exceptionless foundatio-repositories --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/exceptionless/Exceptionless.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/foundatio-repositories .agents/skills/foundatio-repositories && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "foundatio-repositories" agent skill from https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositories into .agents/skills/foundatio-repositories/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "foundatio-repositories", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install exceptionless/Exceptionless foundatio-repositories --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/exceptionless/Exceptionless.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/foundatio-repositories .cursor/skills/foundatio-repositories && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "foundatio-repositories" agent skill from https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositories into .cursor/skills/foundatio-repositories/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "foundatio-repositories", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/exceptionless/Exceptionless.git --path .agents/skills/foundatio-repositories--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install exceptionless/Exceptionless foundatio-repositories --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/exceptionless/Exceptionless.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/foundatio-repositories .gemini/skills/foundatio-repositories && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "foundatio-repositories" agent skill from https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositories into .gemini/skills/foundatio-repositories/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "foundatio-repositories", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install exceptionless/Exceptionless foundatio-repositoriesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/exceptionless/Exceptionless.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/foundatio-repositories .github/skills/foundatio-repositories && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "foundatio-repositories" agent skill from https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositories into .github/skills/foundatio-repositories/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "foundatio-repositories", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install exceptionless/Exceptionless foundatio-repositories --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/exceptionless/Exceptionless.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/foundatio-repositories .opencode/skills/foundatio-repositories && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "foundatio-repositories" agent skill from https://github.com/exceptionless/Exceptionless/tree/main/.agents/skills/foundatio-repositories into .opencode/skills/foundatio-repositories/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "foundatio-repositories", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
foundatio-repositoriesQuery, aggregate, patch, or paginate Exceptionless data through its Elasticsearch repository abstractions.
Foundatio Repositories is an agent skill from exceptionless/Exceptionless. Query, aggregate, patch, or paginate Exceptionless data through its Elasticsearch repository abstractions.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Search implementation. It works with Elasticsearch. The repository describes itself as: Exceptionless application. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 300e8ca. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
repositories.foundatio.devparsers.foundatio.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Foundatio Repositories loads about 1.9k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 383 words of instructions outside code blocks.
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.
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); files beside SKILL.md are not scanned.
The full file from exceptionless/Exceptionless at commit 300e8ca, republished under its Apache-2.0 licence (© exceptionless). 383 words, ~1,872 tokens.
.claude/skills/foundatio-repositories/SKILL.md (or your agent's skills folder).Foundatio.Repositories provides a high-level Elasticsearch abstraction. Use repository methods for normal query, count, patch, and pagination work. Reserve raw IElasticClient for migrations or index maintenance that cannot be expressed through repositories.
Documentation: https://repositories.foundatio.dev / https://parsers.foundatio.dev
IRepository<T> — CRUD, Patch, Remove
└─ ISearchableRepository<T> — FindAsync, CountAsync, aggregations
└─ IRepositoryOwnedByOrganization<T>
└─ IRepositoryOwnedByProject<T>
└─ IRepositoryOwnedByOrganizationAndProject<T>| Interface | Entity | Index Type |
|---|---|---|
IEventRepository | PersistentEvent | DailyIndex (date-partitioned) |
IStackRepository | Stack | VersionedIndex (single index) |
IProjectRepository | Project | VersionedIndex |
IOrganizationRepository | Organization | VersionedIndex |
IUserRepository | User | VersionedIndex |
ITokenRepository | Token | VersionedIndex |
IMigrationStateRepository | MigrationState | VersionedIndex |
Important: .Index(start, end) only routes to correct daily shards for DailyIndex (events). It is a no-op for VersionedIndex.
CountAsync returns a CountResult with .Total (long) and .Aggregations (AggregationsHelper).
| Expression | Meaning |
|---|---|
cardinality:field | Distinct count |
terms:field | Terms aggregation |
terms:(field~SIZE) | Terms with bucket size limit |
terms:(field~SIZE sub_agg) | Terms with nested aggregation |
terms:(field @include:VALUE) | Terms with include filter |
date:field | Date histogram (auto interval) |
date:field~1d | Date histogram, daily interval |
date:field~1M | Date histogram, monthly interval |
date:(field sub_agg) | Date histogram with nested agg |
sum:field~DEFAULT | Sum with default value |
min:field / max:field | Min/Max aggregation |
avg:field | Average aggregation |
-sum:field~1 | Sort descending by this agg (prefix -) |
Multiple aggregations are space-separated: "cardinality:stack_id terms:type sum:count~1"
Naming convention: {type}_{field} — the aggregation type prefix + underscore + field name.
result.Aggregations.Cardinality("cardinality_stack_id").Value
result.Aggregations.Terms<string>("terms_type").Buckets // .Key, .Total
result.Aggregations.DateHistogram("date_date").Buckets // .Date, .Total
result.Aggregations.Sum("sum_count").Value
result.Aggregations.Min<DateTime>("min_date").Value
result.Aggregations.Max<DateTime>("max_date").Value
result.Aggregations.Average("avg_value").Value
// Nested aggs inside buckets
foreach (var bucket in result.Aggregations.Terms<string>("terms_stack_id").Buckets)
bucket.Aggregations.Cardinality("cardinality_user").Value;FilterExpression accepts Lucene query syntax parsed by Foundatio Parsers:
.FilterExpression("type:error (status:open OR status:regressed)")
.FilterExpression($"project:{projectId}")
.FilterExpression($"stack:{stackId}")
.FilterExpression($"signature_hash:{signature}")
.FilterExpression("is_deleted:false")Building OR filters from collections:
string filter = String.Join(" OR ", stackIds.Select(id => $"stack:{id}"));| Method | Purpose | File |
|---|---|---|
.Organization(id) | Filter by organization_id | OrganizationQuery.cs |
.Organization(ids) | Filter by multiple org IDs | OrganizationQuery.cs |
.Project(id) | Filter by project_id | ProjectQuery.cs |
.Stack(id) / .Stack(ids) | Filter by stack_id | StackQuery.cs |
.ExcludeStack(id) | Exclude stack_id | StackQuery.cs |
.AppFilter(sf) | Apply app-level system filter | AppFilterQuery.cs |
.SystemFilter(query) | Chain a pre-built query | Foundatio built-in |
.EnforceEventStackFilter() | Resolve stack filters to event IDs | EventStackFilterQuery.cs |
.DateRange(start, end, field) | Date range filter | Foundatio built-in |
.Index(start, end) | Route to daily shards (events only) | Foundatio built-in |
.FieldEquals(expr, value) | Exact field match | Foundatio built-in |
.SortExpression(sort) | Sort expression | Foundatio built-in |
Use SearchAfterPaging() for deep pagination (never offset-based). NextPageAsync() returns Task<bool> and mutates results in-place.
var results = await _repository.GetAllAsync(o => o.SearchAfterPaging().PageLimit(500));
do
{
foreach (var doc in results.Documents)
{
// process document
}
} while (!cancellationToken.IsCancellationRequested && await results.NextPageAsync());Key rules:
while(true) { ... break; } — use do/while or while(condition)CancellationToken in the loop conditionUse PartialPatch for field-level updates, ScriptPatch for Painless scripts. Pass o => o.ImmediateConsistency() when write-then-read consistency is needed (tests). Use o => o.Notifications(false) to suppress change notifications.
await _tokenRepository.PatchAllAsync(
q => q.Organization(orgId).FieldEquals(t => t.IsSuspended, false),
new PartialPatch(new { is_suspended = true }),
o => o.ImmediateConsistency());Avoid these in normal repository/query work:
_elasticClient.SearchAsync<T>(...) — use CountAsync or FindAsync_elasticClient.MultiGetAsync(...) — use GetByIdsAsync_elasticClient.DeleteByQueryAsync<T>(...) — use RemoveAllAsync_elasticClient.UpdateByQueryAsync<T>(...) — use PatchAllAsync_elasticClient.Indices.RefreshAsync(...) — use o => o.ImmediateConsistency()while(true) { ... break; } for pagination — use do/while or while(condition)© exceptionless, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/foundatio-repositories of exceptionless/Exceptionless.
Open the folder on GitHubat commit 300e8ca
Foundatio Repositories 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Foundatio Repositories this skillexceptionless/Exceptionless | 2.5k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Product Full-Text Searchlobehub/lobehub | 83k | — | ~4.1k | Automated safety check: Pass | Custom licence | |
| Elasticsearch Authnaspectrr/deer | 405 | — | ~1.2k | Automated safety check: Notes | MIT | |
| Elasticsearch Authzaspectrr/deer | 405 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Elasticsearch File Ingestaspectrr/deer | 405 | — | ~684 | Automated safety check: Pass | MIT | |
| Elasticsearch Security Troubleshootingaspectrr/deer | 405 | — | ~4.9k | Automated safety check: Pass | MIT |
lobehub/lobehub
Guides work on LobeHub's own product search: the shared search repository, provider choice, Elasticsearch mappings, change syncing and reindexing.
aspectrr/deer
Authenticate to Elasticsearch using native, file-based, LDAP/AD, SAML, OIDC, Kerberos, JWT, or certificate realms.
aspectrr/deer
Manage Elasticsearch RBAC: native users, roles, role mappings, document- and field-level security.
aspectrr/deer
Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
aspectrr/deer
Diagnose and resolve Elasticsearch security errors: 401/403 failures, TLS problems, expired API keys, role mapping mismatches, and Kibana login issues.
Kilo-Org/kilo-marketplace
Ingest and transform data files (CSV/JSON/Parquet/Arrow IPC) into Elasticsearch with stream processing and custom transforms.
exceptionless/Exceptionless
This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.
exceptionless/Exceptionless
Manages shadcn-svelte components and projects — adding, updating, fixing, debugging, styling, and composing UI.
exceptionless/Exceptionless
Systematically dogfood Exceptionless locally. An agent skill from exceptionless/Exceptionless.
exceptionless/Exceptionless
Inspect local Aspire resource health, logs, traces, and browser telemetry.
exceptionless/Exceptionless
Evaluate semantic-version impact and generate formatted changelogs from git history since the last release tag.
exceptionless/Exceptionless
Build Svelte forms with TanStack Form, Zod validation, and API error mapping.
Works with
Categories
Query, aggregate, patch, or paginate Exceptionless data through its Elasticsearch repository abstractions. Foundatio Repositories is an agent skill from exceptionless/Exceptionless. Query, aggregate, patch, or paginate Exceptionless data through its Elasticsearch repository abstractions.
Foundatio Repositories fits situations like: tasks that involve Search implementation.
Run `npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a claude-code`. Or copy the skill folder (.agents/skills/foundatio-repositories in exceptionless/Exceptionless) into .claude/skills/foundatio-repositories in your project. Claude Code loads it when a task matches its description.
Run `npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a codex`. Or copy the skill folder (.agents/skills/foundatio-repositories in exceptionless/Exceptionless) into .agents/skills/foundatio-repositories in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add exceptionless/Exceptionless --skill foundatio-repositories -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/foundatio-repositories, .gemini/skills/foundatio-repositories, .github/skills/foundatio-repositories and .opencode/skills/foundatio-repositories in your project.
SKILL.md names no scripts, command-line tools or credentials: Foundatio Repositories is instructions for the agent only.
SKILL.md names 2 domains. As links in the text: repositories.foundatio.dev and parsers.foundatio.dev. This is read from the text; nothing was executed.
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. Review the folder before installing.
Foundatio Repositories is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Foundatio Repositories: Product Full-Text Search (lobehub/lobehub, 83k stars), Elasticsearch Authn (aspectrr/deer, 405 stars), Elasticsearch Authz (aspectrr/deer, 405 stars) and Elasticsearch File Ingest (aspectrr/deer, 405 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
exceptionless (a GitHub organization) maintains it in exceptionless/Exceptionless, which has 2,456 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 8, 2026.
Source: exceptionless/Exceptionless on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.