event4u-app/agent-config

corpus-grounding

Shared corpus-grounding engine — BM25 + structured filters + decision rules over CSV corpora via a domain manifest. Use when a skill needs grounded pre-action option-space constraints.

96Collecting
See how to use itView GitHub source
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/corpus-grounding"
Automated source guideData analysisDeep source

Source checked Jul 28, 2026·Refresh due Oct 26, 2026

Reorganized from the pinned upstream SKILL.md

Source-grounded data guide: corpus-grounding

The reusable grounding layer from ADR-061: one pure-stdlib engine (BM25 retrieval + structured pre-filters + decision-rule evaluation) that any domain plugs into via a manifest — frontend design is its first consumer (design-intelligence). A corpus grounds (pre-action, constrain…

npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/corpus-grounding"
Check the pinned source

The pinned source contains enough sections and task detail for a source-grounded deep guide; automated content is still not an independent test.

961 source words · 9 usable sections

Best fit

  • A skill needs pre-action selection grounded in curated knowledge
  • You are authoring a new domain corpus — write a manifest + CSVs,
  • You need stack-scoped Do/Don't guidance (--stack react …).

Analysis outputs

  • Modules + public names — bm25search.{BM25, loadcsv, applyfilters,
  • CLI — the grounding CLI (ground {search|ground|validate} via
  • Result shape — search: {domain|stack, query, file, count, results,

Analysis workflow

Read corpus-grounding through these 5 source sections

Sections are extracted automatically from the pinned SKILL.md and link back to the source.

01

Procedure: Consult a corpus

1. Locate the domain manifest (/data/manifest.json). 2. Run search (one domain / stack axis) or ground (reasoning plan). 3. Read confidence + evidencegap before trusting any row. 4. Propose grounded options; the human confirms (Tier-1 default).

SKILL.md · Procedure: Consult a corpus
Locate the domain manifest (/data/manifest.json).Run search (one domain / stack axis) or ground (reasoning plan).Read confidence + evidencegap before trusting any row.
02

Procedure: Author a new domain corpus

1. Pass the qualification rubric (ADR-061 §5): decision-rule utility beats row count; grounding must happen before action; "fits in 5 lines → it's a rule, not a corpus". 2. Write data/manifest.json + CSVs in your domain skill; run the grounding CLI (ground validate via ./scripts…

SKILL.md · Procedure: Author a new domain corpus
Pass the qualification rubric (ADR-061 §5): decision-rule utility beatsWrite data/manifest.json + CSVs in your domain skill; runName an owner + refresh cadence in the manifest, pin the upstream SHA.
03

Runtime-safety review (Step 1.6 record)

Read-only by default — the engine opens corpus CSVs under the

SKILL.md · Runtime-safety review (Step 1.6 record)
Read-only by default — the engine opens corpus CSVs under theSingle write surface — --persist DIR (opt-in) writes markdownNo network, no subprocess, no secrets — pure stdlib; embeddings /
04

When to use

A skill needs pre-action selection grounded in curated knowledge

SKILL.md · When to use
A skill needs pre-action selection grounded in curated knowledgeYou are authoring a new domain corpus — write a manifest + CSVs,You need stack-scoped Do/Don't guidance (--stack react …).
05

Do NOT

Do NOT use the corpus for mid-task fact lookup — that is reference

SKILL.md · Do NOT
Do NOT use the corpus for mid-task fact lookup — that is referenceDo NOT use it for output validation — write a rule/linter.Do NOT build a corpus that fits in 5 lines of an always-on rule.

SkillSignal prompt templates

Provide the task, context, and acceptance criteria

These prompts were written by SkillSignal from the source structure; they are not upstream text.

Source-grounded prompt

Use for a data-analysis task while explicitly checking the source sections.

Use corpus-grounding for this data-analysis task: [task]. Inputs and constraints: [details]. Work through these pinned SKILL.md sections: “Procedure: Consult a corpus”, “Procedure: Author a new domain corpus”, “Runtime-safety review (Step 1.6 record)”, “When to use”, “Do NOT”. Cite the concrete requirements that shape each step, do not invent capabilities absent from the source, and verify the result against: [acceptance criteria].

Analysis checklist

Verify each item before delivery

The source section “Procedure: Consult a corpus” has been checked.

The source section “Procedure: Author a new domain corpus” has been checked.

The source section “Runtime-safety review (Step 1.6 record)” has been checked.

The source section “When to use” has been checked.

Source output checked: Modules + public names — bm25search.{BM25, loadcsv, applyfilters,

Source output checked: CLI — the grounding CLI (ground {search|ground|validate} via

Choose a different workflow

When another Skill is the better fit

dask

Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

A separate implementation from K-Dense-AI/scientific-agent-skills; compare its source, maintenance signals, and permission requirements.

Open source detail

scanpy

Standard single-cell RNA-seq analysis pipeline. Use for QC, normalization, dimensionality reduction (PCA/UMAP/t-SNE), clustering, differential expression, visualization, and converting R-friendly single-cell formats such as Seurat or SingleCellExperiment RDS files into h5ad for Scanpy. Best for exploratory scRNA-seq analysis with established workflows. For deep learning models use scvi-tools; for data format questions use anndata.

A separate implementation from K-Dense-AI/scientific-agent-skills; compare its source, maintenance signals, and permission requirements.

Open source detail

analytics

When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "Mixpanel," "Segment," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure m

A separate implementation from coreyhaines31/marketingskills; compare its source, maintenance signals, and permission requirements.

Open source detail

FAQ

What does the corpus-grounding source document cover?

The reusable grounding layer from ADR-061: one pure-stdlib engine (BM25 retrieval + structured pre-filters + decision-rule evaluation) that any domain plugs into via a manifest — frontend design is its first consumer (design-intelligence). A corpus grounds (pre-action, constrain…

How do I install corpus-grounding?

The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/corpus-grounding". Inspect the command and pinned source before running it.

Repository stars
7
Repository forks
1
Quality
96/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

96/100
Documentation28/30
Specificity23/25
Maintenance20/20
Trust signals25/25

Compare before choosing

Related Agent Skills and source variants

These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.

dask by k-dense-ai

Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

scanpy by k-dense-ai

Standard single-cell RNA-seq analysis pipeline. Use for QC, normalization, dimensionality reduction (PCA/UMAP/t-SNE), clustering, differential expression, visualization, and converting R-friendly single-cell formats such as Seurat or SingleCellExperiment RDS files into h5ad for Scanpy. Best for exploratory scRNA-seq analysis with established workflows. For deep learning models use scvi-tools; for data format questions use anndata.

analytics by coreyhaines31

When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "Mixpanel," "Segment," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure m

attribution by coreyhaines31

When the user wants to figure out which marketing actually drives conversions and revenue, choose or interpret an attribution model, or reconcile conflicting numbers across tools. Also use when the user mentions "attribution," "attribution model," "first-touch vs last-touch," "multi-touch," "which channel drives revenue," "what's my real CAC," "my dashboards disagree," "Google/Meta says X but GA says Y," "media mix model," "MMM," "incrementality," "geo lift," "holdout test," "how did you hear ab

polars-bio by k-dense-ai

High-performance genomic interval operations and bioinformatics file I/O on Polars DataFrames. Overlap, nearest, merge, coverage, complement, subtract for BED/VCF/BAM/GFF intervals. Streaming, cloud-native, faster bioframe alternative.

View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 5 min

corpus-grounding

The reusable grounding layer from ADR-061: one pure-stdlib engine (BM25 retrieval + structured pre-filters + decision-rule evaluation) that any domain plugs into via a manifest — frontend design is its first consumer (design-intelligence). A corpus grounds (pre-action, constrains the option space); it never replaces mid-action reference (RAG), post-action validation (rules), or the method itself (a framework skill).

Engine provenance: ported from nextlevelbuilder/ui-ux-pro-max-skill @ b7e3af80f6e331f6fb456667b82b12cade7c9d35 (MIT, last checked 2026-06-07) — BM25 de-duplicated, slide-only paths stripped, every frontend-hardcoded axis moved into the manifest. Full license obligations: design-intelligence/ATTRIBUTION.md.

When to use

  • A skill needs pre-action selection grounded in curated knowledge ("which layout pattern / threat class / index strategy applies here").
  • You are authoring a new domain corpus — write a manifest + CSVs, validate with the grounding CLI (ground validate via ./scripts-run), never fork the engine.
  • You need stack-scoped Do/Don't guidance (--stack react …).

Do NOT

  • Do NOT use the corpus for mid-task fact lookup — that is reference (references/ docs / RAG).
  • Do NOT use it for output validation — write a rule/linter.
  • Do NOT build a corpus that fits in 5 lines of an always-on rule.
  • Do NOT fork the engine per domain — plug in via a manifest.
  • Do NOT merge a manifest without owner + refresh cadence (validator refuses it anyway).

Procedure: Consult a corpus

  1. Locate the domain manifest (<domain-skill>/data/manifest.json).
  2. Run search (one domain / stack axis) or ground (reasoning plan).
  3. Read confidence + evidence_gap before trusting any row.
  4. Propose grounded options; the human confirms (Tier-1 default).

Invocation (consumer runtime)

Scripts resolve all paths skill-relative (per docs/contracts/skill-bundled-assets.md) — they work from any cwd:

./scripts-run <skills-root>/corpus-grounding/scripts/ground search \
  --manifest <skills-root>/<domain-skill>/data/manifest.json \
  "fintech dashboard" [--domain style] [--stack react] \
  [--filter "Severity=HIGH"] [--max-results 3] [--json]

./scripts-run <skills-root>/corpus-grounding/scripts/ground ground \
  --manifest <skills-root>/<domain-skill>/data/manifest.json \
  "luxury e-commerce" [--context '{"data_heavy": true}'] [--persist DIR]

./scripts-run <skills-root>/corpus-grounding/scripts/ground validate --manifest …

<skills-root> is wherever skills are deployed (~/.claude/skills/ for Claude Code installs; src/skills/ inside this repo).

Output format

Interface contract v1 — stability promise. Per ADR-061 §2 ("Opus condition"), this interface is versioned; domains may depend on it. Breaking any item below requires a major bump (manifest_version: 2), a migration note here, and updates to every consuming skill in the same PR. Additive fields are allowed anytime.

Stable v1 surface:

  1. Modules + public namesbm25_search.{BM25, load_csv, apply_filters, search_rows, RETRIEVERS}, decision_engine.{detect_domain, search_domain, search_stack, evaluate_rules, ground, persist_grounding}, schema_validator.{load_manifest, validate_manifest, resolve_data_path, ManifestError, MANIFEST_VERSION, TIERS}.
  2. CLI — the grounding CLI (ground {search|ground|validate} via ./scripts-run) with the flags shown above.
  3. Result shape — search: {domain|stack, query, file, count, results, scores, filtered_from, confidence{label,score}, evidence_gap[]}; ground: {domain, query, category, rule, rules_evaluation{matched, unmatched}, selections{<domain>: {best, alternatives, confidence}}, confidence{label,score}, evidence_gap[]}.
  4. Contract invariants — every output carries confidence and evidence_gap; retrievers are name-selected (bm25 default, structured, hybrid); no network, no subprocess, read-only except the opt-in --persist DIR.

Manifest contract (schema-agnostic plug-in)

Each domain ships data/manifest.json beside its CSVs — declaring its own axes; the engine never assumes the frontend schema:

{
  "manifest_version": 1,
  "domain": "frontend-design",
  "tier": "conditional-grounding",
  "data_dir": ".",
  "retriever": "bm25",
  "default_domain": "style",
  "domains": {
    "style": {
      "file": "styles.csv",
      "search_cols": ["Style Category", "Keywords"],
      "output_cols": ["Style Category", "Best For"],
      "max_results": 3,
      "filters": {}
    }
  },
  "detect": { "style": ["minimalism", "glassmorphism"] },
  "stacks": { "react": "stacks/react.csv" },
  "stack_cols": { "search_cols": ["…"], "output_cols": ["…"] },
  "reasoning": {
    "file": "ui-reasoning.csv",
    "category_domain": "product",
    "category_column": "Product Type",
    "match_column": "UI_Category",
    "rules_column": "Decision_Rules",
    "priority_column": "Style_Priority",
    "priority_domain": "style",
    "name_columns": { "style": "Style Category" },
    "plan": { "style": 3, "color": 2 },
    "rules_module": "rules.ts"
  },
  "owner": "package-maintainer",
  "refresh_cadence": "quarterly",
  "upstream": { "repo": "…", "sha": "…", "last_checked": "YYYY-MM-DD" }
}
  • tierlookup-only | conditional-grounding | constraint-emission; reasoning is only legal above lookup-only.
  • owner, refresh_cadence, upstream{repo,sha,last_checked} are required — provenance discipline per ADR-061 §6; an unowned corpus is not merged.
  • rules_module (optional TypeScript escape hatch where JSON rules cap out — a module exposing evaluate(rules, query, context); a legacy .py name in a manifest is remapped to its .ts/.js twin) must live beside the manifest — absolute paths and .. are refused.
  • Decision rules are surfaced as matched and unmatched — the full rule space stays auditable, never a hidden gate.

Procedure: Author a new domain corpus

  1. Pass the qualification rubric (ADR-061 §5): decision-rule utility beats row count; grounding must happen before action; "fits in 5 lines → it's a rule, not a corpus".
  2. Write data/manifest.json + CSVs in your domain skill; run the grounding CLI (ground validate via ./scripts-run).
  3. Name an owner + refresh cadence in the manifest, pin the upstream SHA.
  4. Cite this skill from your domain skill; consult via the CLI (Tier-1 consultation default — propose grounded options, human confirms).

Gotchas

  • An empty result is a legitimate outcome — surface the evidence gap and proceed on priors; never silently widen filters to force a hit.
  • The structured filters pre-filter matches case-insensitive substrings; an over-specific value silently filters everything out — check filtered_from vs count when results look thin.
  • detect keyword routing falls back to default_domain; product-shaped queries route best ("fintech dashboard"), generic words land on the default.
  • BM25 tokenizer drops tokens ≤2 chars — "UI", "a11y" style queries need longer companions.

Runtime-safety review (Step 1.6 record)

  • Read-only by default — the engine opens corpus CSVs under the manifest's directory only (resolve_data_path refuses absolute paths and .. escapes).
  • Single write surface--persist DIR (opt-in) writes markdown under the caller-chosen DIR; nothing else writes.
  • No network, no subprocess, no secrets — pure stdlib; embeddings / remote retrievers are intentionally not implemented (ADR-061 §2).
  • rules_module executes a manifest-adjacent TypeScript module (dynamic import()) — same trust domain as the skill that ships the manifest; containment enforced by resolve_data_path.

See also

Skill path
src/skills/corpus-grounding/SKILL.md
Commit SHA
0adf49a8ae84
Repository license
MIT
Data collected