---
url: 'https://adk.nht.io/api/@nhtio/adk/batteries/skills/interfaces/SkillSource.md'
description: >-
  Runtime-neutral source seam for discovery, metadata, body bytes, and bundled
  files.
---

# Interface: SkillSource

Defined in: [src/batteries/skills/contracts.ts:62](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L62)

Runtime-neutral source seam for discovery, metadata, body bytes, and bundled files.

## Properties

| Property                      | Modifier   | Type     | Description                                                                              | Defined in                                                                                                                        |
| ----------------------------- | ---------- | -------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|  `id` | `readonly` | `string` | Stable provenance label; the manager rejects duplicate source ids at configuration time. | [src/batteries/skills/contracts.ts:64](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L64) |

## Methods

### descriptor()

```ts
descriptor(ref: SkillRef, o?: {
  signal?: AbortSignal;
}): Promise<unknown>;
```

Defined in: [src/batteries/skills/contracts.ts:68](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L68)

Resolves the live descriptor and tools only when a manager operation loads the skill.

#### Parameters

| Parameter   | Type                                      |
| ----------- | ----------------------------------------- |
| `ref`       | [`SkillRef`](../type-aliases/SkillRef.md) |
| `o?`        | { `signal?`: `AbortSignal`; }           |
| `o.signal?` | `AbortSignal`                             |

#### Returns

`Promise`<`unknown`>

***

### discover()

```ts
discover(o?: {
  signal?: AbortSignal;
}): AsyncIterable<DiscoveredSkill>;
```

Defined in: [src/batteries/skills/contracts.ts:66](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L66)

Asynchronously yields discovery metadata; protocol conformance is checked by the suite, not the duck-guard.

#### Parameters

| Parameter   | Type                            |
| ----------- | ------------------------------- |
| `o?`        | { `signal?`: `AbortSignal`; } |
| `o.signal?` | `AbortSignal`                   |

#### Returns

`AsyncIterable`<[`DiscoveredSkill`](DiscoveredSkill.md)>

***

### list()?

```ts
optional list(ref: SkillRef): Promise<readonly string[]>;
```

Defined in: [src/batteries/skills/contracts.ts:84](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L84)

Enumerate bundled files for materialization.
MUST include every path named by a `SkillScriptSpec`, and MUST NOT include the body.

#### Parameters

| Parameter | Type                                      |
| --------- | ----------------------------------------- |
| `ref`     | [`SkillRef`](../type-aliases/SkillRef.md) |

#### Returns

`Promise`\<readonly `string`\[]>

***

### read()

```ts
read(
   ref: SkillRef,
   path?: string,
   o?: {
  signal?: AbortSignal;
}): Promise<ReadableStream<Uint8Array<ArrayBufferLike>>>;
```

Defined in: [src/batteries/skills/contracts.ts:73](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L73)

Read a file from the skill. **An omitted `path` means the skill BODY** — the `SKILL.md`
equivalent — whatever the source calls it internally. Every channel needs the body.

#### Parameters

| Parameter   | Type                                      |
| ----------- | ----------------------------------------- |
| `ref`       | [`SkillRef`](../type-aliases/SkillRef.md) |
| `path?`     | `string`                                  |
| `o?`        | { `signal?`: `AbortSignal`; }           |
| `o.signal?` | `AbortSignal`                             |

#### Returns

`Promise`<`ReadableStream`<`Uint8Array`<`ArrayBufferLike`>>>

***

### stat()

```ts
stat(ref: SkillRef, path?: string): Promise<{
  size: number;
  version: string;
}>;
```

Defined in: [src/batteries/skills/contracts.ts:79](https://github.com/NHTIO/ADK/blob/v1.20260911.0/src/src/batteries/skills/contracts.ts#L79)

Returns source size and version for a body or bundled file without returning its bytes.

#### Parameters

| Parameter | Type                                      |
| --------- | ----------------------------------------- |
| `ref`     | [`SkillRef`](../type-aliases/SkillRef.md) |
| `path?`   | `string`                                  |

#### Returns

`Promise`<{
`size`: `number`;
`version`: `string`;
}>
