Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
18e7615
docs(api): regenerate references; cover Flux TTS inline controls, Flu…
dg-coreylweathers Oct 1, 2026
7a955a8
docs(text-to-speech): Flux TTS inline controls, Interrupt offsets, NE…
dg-coreylweathers Oct 1, 2026
931216f
docs(speech-to-text): numerals on Configure, redact values, SDK sendC…
dg-coreylweathers Oct 1, 2026
1145da1
docs(voice-agent): reusable agent configurations, FunctionCallCancell…
dg-coreylweathers Oct 1, 2026
c584f12
docs(cli,setup-mcp): track deepctl 0.3.1; align upgrade advice; warn …
dg-coreylweathers Oct 1, 2026
41ed61e
docs: sweep self-hosted references, examples, recipes, starters, and …
dg-coreylweathers Oct 1, 2026
7a3bdd9
chore: bump version to 1.7.0 and update changelog
dg-coreylweathers Oct 1, 2026
9a4319e
docs(api,voice-agent): remove em dashes from edited lines; drop sourc…
dg-coreylweathers Oct 1, 2026
6e6010b
docs(voice-agent): enumerate reasoning_mode values; changelog: six so…
dg-coreylweathers Oct 1, 2026
606c55d
docs: second October sweep across the 14 skills after a three-pass re…
dg-coreylweathers Oct 1, 2026
7b04e15
docs: address PR 21 review (B1-B3, S1, S2)
dg-coreylweathers Oct 2, 2026
5cc8a01
docs: devrel review round 1 fixes
dg-coreylweathers Oct 2, 2026
a4a07d0
docs: devrel review round 2 fixes
dg-coreylweathers Oct 2, 2026
bb144b9
docs: devrel review round 3 fixes
dg-coreylweathers Oct 2, 2026
c6e1a83
docs: devrel review round 3 fixes (list punctuation)
dg-coreylweathers Oct 2, 2026
a5774f3
docs(self-hosted): drop em dash from edited uuid bullet
dg-coreylweathers Oct 2, 2026
bb9195d
chore: date the 1.7.0 changelog entry for release
dg-coreylweathers Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
},
"metadata": {
"description": "Deepgram skills for AI coding tools",
"version": "1.6.0"
"version": "1.7.0"
},
"plugins": [
{
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/spec-drift.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ name: API Spec Drift
# (`bun run scripts/fetch-specs.ts … && bun run scripts/generate-skills.ts`), and an
# auto-commit would land unreviewed API copy in a skill agents read as reference.
#
# Known limitation: `generate-skills.ts` overwrites the reference files it emits but does
# not prune ones it no longer emits, so a reference file for a *removed* endpoint group
# shows up as no drift here. Additions and edits are detected. This job is deliberately
# tolerant of that — it reports what it can see rather than asserting the tree is clean.
# `generate-skills.ts` deletes any reference file it did not emit on the run, so a
# reference file for a *removed* endpoint group shows up here as a deletion. Additions,
# edits, and removals are all detected; the `git add -A` in the report step is what makes
# new and deleted files visible to the diff.

on:
schedule:
Expand Down
19 changes: 14 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ voice agent, and audio intelligence APIs correctly.
|------|---------|
| `skills/` | The 14 shipped skills: `api`, `audio-intelligence`, `browser-agent`, `cli`, `docs`, `examples`, `recipes`, `self-hosted`, `setup-mcp`, `speech-to-text`, `starters`, `text-intelligence`, `text-to-speech`, `voice-agent`. `api` and `self-hosted` are the only two that carry a `references/` folder, and only `api`'s is generated |
| `template/` | Starting point for a new skill (`SKILL.md` with YAML frontmatter) |
| `scripts/` | `fetch-specs.ts` and `generate-skills.ts` — regenerate the `api` skill from the public OpenAPI and AsyncAPI specs |
| `scripts/` | `fetch-specs.ts` and `generate-skills.ts` regenerate the `api` skill from the public OpenAPI and AsyncAPI specs; `validate-skills.ts` parses every `SKILL.md` frontmatter with the YAML parser the `skills` installer uses and diffs `.claude-plugin/marketplace.json` against the filesystem (`--remote` also checks the SDK plugins' skill paths through `gh api`) |
| `.claude-plugin/` | Claude Code plugin-marketplace manifest — `metadata.version` is the released version, and `plugins[0].skills` is the list the installer reads |
| `CHANGELOG.md` | Keep a Changelog / SemVer record; every release has an entry |
| `package.json`, `bun.lock` | the single `yaml` dependency the generator needs |
| `.github/workflows/` | `context7.yml` only — refreshes Context7 on a published release |
| `.github/workflows/` | `context7.yml` refreshes Context7 on a published release; `spec-drift.yml` regenerates the `api` references from the live specs every Monday and opens or comments on a `spec-drift` issue when they differ, committing nothing; `validate-skills.yml` runs `validate-skills.ts` on every pull request and push to `main`, plus a report-only remote check of the SDK plugin skill paths and a ci-tools lint that skips until a `CI_TOOLS_READ_TOKEN` secret exists |

## Install (consumer side)

Expand All @@ -36,20 +36,27 @@ npx skills add deepgram/skills --agent claude-code -y # one agent, every skill
npx skills add deepgram/skills --skill api -y # one skill
```

`npx skills add` clones the repository with `git`. On an image without it (a
bare `node:22-alpine`, for example) every target fails with `Failed to clone
...: Error: spawn git ENOENT` and exits 1 with nothing installed. Install
`git` first, and check for the `SKILL.md` files after any headless install.

Claude Code plugin route: `/plugin marketplace add deepgram/skills`, then
`/plugin install deepgram@deepgram-agent-skills`.

## Regenerate and check headlessly (maintainer side)

Requires [bun](https://bun.sh). There is no test suite; regeneration
completing and a clean `git diff` (or an intended one) is the check.
completing, a clean `git diff` (or an intended one), and `validate-skills.ts`
printing every skill as valid are the checks.

```bash
bun run scripts/fetch-specs.ts https://dpgr.am/openapi.yml https://dpgr.am/asyncapi.yml
bun install && bun run scripts/generate-skills.ts
bun run scripts/validate-skills.ts
```

## Versions and conventions (as of 2026-09-18)
## Versions and conventions (as of 2026-10-01)

- The generated `api` skill tracks the hourly-mirrored public specs at
`https://dpgr.am/openapi.yml` and `https://dpgr.am/asyncapi.yml`.
Expand All @@ -73,13 +80,15 @@ two files together and then ships a tag:
triggers `.github/workflows/context7.yml`.

Adding a skill also means adding its path to `plugins[0].skills` in
`.claude-plugin/marketplace.json`, or the installer will not offer it.
`.claude-plugin/marketplace.json`, or the installer will not offer it, and a
row to the skills table in `README.md`.

## Common failure modes

| Symptom | Cause | Fix |
|---------|-------|-----|
| `npx skills add deepgram/<repo>` fails with a not-found or auth error | the target repository is private or does not exist | only the six public SDK repositories listed in README.md carry installable skills |
| every target fails with `spawn git ENOENT`, exit code 1, nothing installed | `git` is absent from the container or CI image; `npx skills add` shells out to it | install `git` (`apk add git` on Alpine) before running the installer |
| `bun: command not found` | bun not installed | install from https://bun.sh; the generation scripts are bun-only |
| `ENOENT ... specs/openapi.yml` from `generate-skills.ts` | `fetch-specs.ts` was not run first; `specs/` is gitignored, so it is absent in a fresh clone | run both regeneration commands in order |
| Regenerated `api` skill shows unexpected churn | the upstream specs moved | inspect the spec diff first; the specs are the source of truth |
Expand Down
Loading
Loading