threadlight-ground
GROUND leg: assesses ACL/citation/refusal probe evidence into a threadlight.ground/v1 manifest (GRD-001..004: ACL, citation, refusal…
Skill by aiappsgbb
Chalk Labs
Need help deploying threadlight-ground?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/aiappsgbb-threadlight-ground
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, testing, writing, research
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 2, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/threadlight-ground
What's inside
- Skill name
threadlight-ground- Description
- GROUND leg: assesses ACL/citation/refusal probe evidence into a threadlight.ground/v1 manifest (GRD-001..004: ACL, citation, refusal, freshness/coverage/baseline). Each SPEC knowledge_source's enabled control must be evidenced under its own source_id, never inferred across sources. expected_entitled is required (no name heuristic); missing/ambiguous evidence -> not-verified, never guessed; a proven leak (an unentitled principal handed a document outside its allowed_document_ids) -> must-fix. Malformed evidence raises GroundEvidenceError before any output. Persists only source metadata, principal/document IDs and allowlisted detail - never content, prompts, completions, tokens/credentials, or payloads. Manual handoff - threadlight-auto never runs probes. USE FOR: grounding evidence, ACL leak detection, citation validation, refusal checks, ground-manifest, knowledge_sources gate. DO NOT USE FOR: Foundry IQ retrieval, quality scoring, live probes, cross-leg readiness gating.
- License
- MIT
- Metadata
- version: 0.1.0
- Instructions
- 205 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (4)
- SKILL.md
- ground-manifest.schema.json · references/
- ground.py · scripts/
- test_ground.py · tests/
SKILL.md (first lines)
# Threadlight Ground — prove the retrieval is safe, not just plausible
The **GROUND** leg: the step that turns "the agent cited something" into "the
citation is provably grounded, access-controlled, and honest about what it
doesn't know." `threadlight-ground` is a **coordinator**, not a retrieval or
evaluation engine — it never calls Foundry IQ, never issues a retrieval
query, and never runs an evaluator. It only ingests probe *results* an
operator already captured (an ACL probe run, a citation validation run, a
refusal probe run) and turns them into four findings.
> **Why "coordinator."** Provisioning and query planning stay with
> `foundry-iq` (Azure AI Search Knowledge Agent); quality/relevance scoring
> stays with `threadlight-evals`. This leg's job is narrower and stricter:
> given evidence someone already gathered, does it *prove* the knowledge
> source is safe to ground answers on? This is a **manual, live handoff** —
> `threadlight-auto` does not run live ACL/citation/refusal probes against a
> real agent for you. Running those probes against production or pilot data
> is an operator decision; this script only assesses evidence the operator
> already captured and supplies.
## What this skill does and does not do
- **Does:** sanitize a SPEC `knowledge_sources` declaration (whitelist-only —
see `references/ground-manifest.schema.json`), assess ACL enforcement,
citation grounding, and refusal behavior from caller-supplied probe runs,
compute source freshness/coverage, and emit a schema-validated,
atomically-written `specs/ground-manifest.json`.
- **Does NOT** call Foundry IQ, run a retrieval query, or invoke an
evaluator. Every finding here is computed from evidence the caller already
captured — a live probe is the operator's responsibility, not this
script's.
- **Does NOT** score answer quality/relevance (`threadlight-evals`) or
aggregate findings across every leg into a single go/no-go
(`threadlight-production-ready` consumes GRD-001..004 for that).
## The four findings
| ID | Checks | `not-verified` when | `must-fix` when |
|---|---|---|---|
| `GRD-001` | ACL enforcement | no `permission_model: acl` source declared → trivial `pass`; an ACL source has **no runs carrying its `source_id`** (uncovered); fewer than two distinct principals; no explicit `expected_entitled` on a run (ambiguous); no entitled *and* unentitled probe for a source; a source's declared `acl_probe_principals` are not all probed | an **explicit** unentitled principal received **any** document outside its explicit `allowed_document_ids` — a subset is enough, and no allowlist means nothing is allowed. **A proven leak takes precedence over a coexisting coverage gap:** the finding is `must-fix` even when another run is ambiguous or a declared principal is unprobed, and a sibling source's `not-verified` never erases it |
| `GRD-002` | Citation grounding | a `citation_required` source has no non-vacuous citation evidence carrying its `source_id` — it needs at least one citation and at least one retrieved ID | any citation falls outside its run's retrieved set (`missing_from_retrieval`, sorted, de-duplicated) |
| `GRD-003` | Refusal behavior | a `refuse_when_unsupported` source has no refusal runs carrying its `source_id` (uncovered) | an executed probe for an unsupported query was **answered** instead of refused |
| `GRD-004` | Source freshness / coverage / baseline | no sources declared → trivial `pass`; a declared source has no covering run; a covered source's runs carry no valid RFC3339 `captured_at` (freshness unverifiable); no `retrieval_quality_baseline` was supplied | never `must-fix` — caps at `should-fix` (a covered source's oldest evidence is stale relative to its own `refresh_cadence`) |
`GRD-001..003` can reach `pass`, `must-fix`, or `not-verified`. `GRD-004` can
reach `pass`, `should-fix`, or `not-verified` — freshness/coverage gaps are
never escalated past `should-fix`, reserving `must-fix` for a *proven*
control failure. The manifest `status` is `partial` exactly when required
evidence is genuinely missing: a `not-verified` finding, an uncovered /
freshness-unverifiable source hidden behind an aggregated must-fix, or a
`must-fix` proven against **incomplete** ACL coverage (see below). An
**executed** `must-fix`/`should-fix` with **complete coverage** is still
complete evidence and never downgrades `status` on its own.
> **Negative evidence is never erased by a coverage gap.** `GRD-001` computes
> a proven leak from the **explicit** unentitled runs first, so an ambiguous
> run (no `expected_entitled`), too few principals, or an unprobed declared
> principal cannot suppress a leak proven elsewhere in the same source — and
> across sources the worst per-source status wins, so one source's
> `not-verified` never downgrades another source's `must-fix`. The coexisting
> gap is not discarded: it is preserved in a schema-safe `coverage_complete:
> false` detail flag (alongside `missing_principals` where available) so the
> envelope `status` is still `partial`. A `must-fix` with **complete**
> coverage omits the flag and remains `complete`.
> **Malformed shapes raise, they are never `not-verified`.** A missing/empty
> `source_id`, a `source_id` not in the declared inventory, a missing
> `document_ids`/`citations`/`retrieved_ids`/`query_id`, a non-string element,
> a non-boolean `expected_entitled`/`refused`, or a negative/non-finite
> telemetry value all raise `GroundEvidenceError` **before** any manifest is
> built, returned, or written. `not-verified` is reserved for genuinely
> *absent* evidence (an uncovered source, an ambiguous entitlement), never a
> *malformed* run.
## Source inventory is authoritative — coverage is never inferred
The `sources` argument **is** the SPEC-derived `knowledge_sources[]` input
contract (see `threadlight-design/references/speckit-template.md`), not
anything the CLI's `--project-root` supplies. Every declared source's
*enabled* control must be covered by evidence that carries **that source's
`source_id`**: ACL evidence when `permission_model == "acl"`, citation
evidence when `citation_required`, refusal evidence when
`refuse_when_unsupported`. Coverage for one source is never inferred from
another source's runs. A source that declares `acl_probe_principals` must
have every one of those principals probed. Every declared source id must be
**unique**: a duplicate id (e.g. a public twin that would otherwise mask an
ACL-protected source under the same id) raises `GroundEvidenceError` before
any grouping, assessment, or output.
## Explicit `expected_entitled` is required — no name heuristic
`assess_acl` classifies each ACL run only by an **explicit**
`expected_entitled` (or `entitled`) boolean on the run. There is no name
heuristic: a run without an explicit signal is *ambiguous* and yields
`not-verified`, never a guessed pass or fail. A source's ACL runs must
include at least one entitled (`true`) and one unentitled (`false`) probe.
An unentitled principal's `allowed_document_ids` is its allowlist of
legitimately-visible (e.g. public) documents; receiving anything outside it —
including a subset — is a `must-fix` leak, and **no allowlist means nothing
is allowed**. Only **explicit** unentitled runs contribute a leak, so an
ambiguous run never fabricates one — but neither can it hide a leak proven by
another run in the same source.
## Evidence shapes
```jsonc
// acl_runs[] — one per principal probed against a source. source_id and an
// explicit expected_entitled are REQUIRED; allowed_document_ids is the
// unentitled principal's allowlist (public docs it may legitimately receive).
{"principal": "entitled-analyst", "document_ids": ["doc-1", "doc-2"], "source_id": "policy-library",
"expected_entitled": true, "captured_at": "2026-08-17T09:00:00+00:00"}
{"principal": "unentitled-guest", "document_ids": ["public-1"], "source_id": "policy-library",
"expected_entitled": false, "allowed_document_ids": ["public-1"], "captured_at": "2026-08-17T09:00:00+00:00"}
// citation_runs[] — one per answer's citations vs. what was actually retrieved
{"citations": ["doc-1"], "retrieved_ids": ["doc-1", "doc-2"], "source_id": "policy-library",
"captured_at": "2026-08-17T09:00:00+00:00"}
// refusal_runs[] — one per unsupported-query probeFrom aiappsgbb/threadlight-skills, MIT.
More from aiappsgbb/threadlight-skills
- 0.603score
threadlight-cicd
aiappsgbb
Use when a Threadlight pilot must reach production through a CI/CD pipeline instead of the agent running `azd up` directly — prod deploys run under a…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-governed-actions
aiappsgbb
Use when a pilot needs consequential-action runtime implementation or evidence: selected native hooks, gateway effect closure, action inventory, pre-deploy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-govern
aiappsgbb
Use when a Threadlight pilot needs native ACS/Rego policy, SAFE business invariants, selected tool or lifecycle bindings, approval requirements, signed policy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-evals
aiappsgbb
Threadlight evals leg: offline batch quality, Foundry Continuous Evaluation and champion-challenger gates.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-consumption-iq
aiappsgbb
Project Azure cost from deployed Bicep + SPEC § 12, compare viable SKUs, and emit cost-projection.md + cost-manifest.json after safe-check.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-connect
aiappsgbb
CONNECT-leg: evidence-based swap of a scaffolded mock Foundry tool for a real endpoint.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
threadlight-demo-data-factory
aiappsgbb
Generate per-domain Faker-style synthetic data + Cosmos seed/reset scripts for a threadlight process.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
threadlight-customize
aiappsgbb
Use when an SE or a customer's platform team needs to FORK the Threadlight pipeline and adapt it to one customer's environment — landing zones, identity…
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
threadlight-citadel-hub
aiappsgbb
Threadlight-owned port (from awesome-gbb's Citadel hub skill): deploy the AI Citadel Governance Hub (Layer 1) for a Threadlight pilot, using an APIM gateway…
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-citadel-spoke
aiappsgbb
Threadlight-owned port (from awesome-gbb's Citadel spoke skill): onboard a Threadlight pilot's Foundry project as a spoke of an existing AI Citadel Governance…
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-auto
aiappsgbb
Full-auto driver for the Threadlight pilot pipeline.
SkillAFreshness: A★ 2Claude Code +9 - 0.590score
threadlight-deploy
aiappsgbb
Generate deployment artifacts for a designed Threadlight project on Microsoft Foundry Hosted Agents: container.py, Dockerfile, pyproject.toml, an azd project…
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 5
- Open issues
- 5
- Last commit (this folder)
- Aug 19, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 0.1.0
- License
- MIT
- Repository
- github.com/aiappsgbb/threadlight-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from aiappsgbb
- 0.603score
threadlight-evals
aiappsgbb
Threadlight evals leg: offline batch quality, Foundry Continuous Evaluation and champion-challenger gates.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-govern
aiappsgbb
Use when a Threadlight pilot needs native ACS/Rego policy, SAFE business invariants, selected tool or lifecycle bindings, approval requirements, signed policy…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-connect
aiappsgbb
CONNECT-leg: evidence-based swap of a scaffolded mock Foundry tool for a real endpoint.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-cicd
aiappsgbb
Use when a Threadlight pilot must reach production through a CI/CD pipeline instead of the agent running `azd up` directly — prod deploys run under a…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-consumption-iq
aiappsgbb
Project Azure cost from deployed Bicep + SPEC § 12, compare viable SKUs, and emit cost-projection.md + cost-manifest.json after safe-check.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
threadlight-governed-actions
aiappsgbb
Use when a pilot needs consequential-action runtime implementation or evidence: selected native hooks, gateway effect closure, action inventory, pre-deploy…
SkillAFreshness: A★ 2Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get threadlight-ground running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
threadlight-ground skill. Agent Mart. https://agentmart.dev/skills/aiappsgbb-threadlight-ground (last updated 2026-10-24)