- TypeScript 99.9%
`descript export --resume <path>` ships. Recovers interrupted or partial exports by replaying a prior export-report.json without re-publishing already-published compositions. Implementation follows the design spec at docs/specs/2026-05-21-export-resume-design.md (consensus iteration 2, Architect APPROVE, Critic APPROVE via self-audit during API outage). Test count: 207 -> 234 (+27 net new). - New src/workflows/exportResume.ts module - pure-function reconstruction logic running the semantics table from the spec. reconstructResumeItems, validateRequestedFormatsAgainstReport, buildResumeReport. ExportFormat-aware existsSync checks. - Workflow extensions - ExportPublishedOptions.skipFormats?, ExportPublishedResult.skipped[], ExportBatchItem.skipFormats?, ExportBatchReportItem.skipped[]. ExportBatchOptions.writeReport? for the resume case (so it can write its own resume-report.json shape instead of the standard one). - CLI --resume flag on export. Mutex with positional <project-id>, --projects, --composition-ids. Parse-time validation - file exists, parses, has items array, format-disjoint check. Mutex violations and disjoint formats exit 2 before any API call. - resume-report.json shape - schema_version: 1, command, ok, resumed_from, all_skipped, items. Per-item adds resumed: boolean, reason?: string, skipped: ExportFormat[], partially_resumable?: true. Distinct filename from export-report.json so the prior report is not overwritten. - Per the design spec Row 4 semantics, ok:false items retry only the failed formats via slug. The publish step is skipped because the prior run already produced a slug. The fix that caught a spec deviation: existsSync checking applies only to ok:true items (where files may have been deleted); ok:false items trust the prior report's written[] array per the spec's "only the failed formats" language. - Pre-mortem 3 hardening - getPublishedProjectMetadata returns a fresh signed download URL on every call, which makes the "files deleted, slug-based re-download" path work without republishing. The HTTP layer at src/client/http.ts:53,68-86 retries on 429 via Retry-After. - Deferred per spec - --formats media alias (no audio use case), descript download-published --resume (out of scope, the spec covers export resume only). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .claude-plugin | ||
| bin | ||
| dist | ||
| docs | ||
| scripts/smoke | ||
| skills | ||
| src | ||
| tests | ||
| .gitignore | ||
| .mcp.json | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
descript
Full programmatic access to the Descript API for Claude Code. A Node/TypeScript CLI covering all 11 endpoints plus polling, the three-step signed-URL upload, and a bulk pipeline runner, wrapped by skills and an optional MCP shim.
Install (standalone)
/plugin marketplace add juliandickie/descript-plugin
/plugin install descript@descript
Setup
Create a token in Descript Settings, API tokens, then:
descript config set --token <TOKEN> --profile default
descript status
Or set DESCRIPT_API_TOKEN, or the plugin api_token config.
CLI
descript status, config, import, agent, publish, jobs, projects, published, edit-in-descript, batch
Global flags: --json, --no-wait, --token, --profile.
Skills
descript-setup, descript-import, descript-edit, descript-publish, descript-jobs, descript-batch, descript-api-reference. Edit, publish, and batch are cost-gated.
Tip - Per-cue density for chapter generation
For downstream LLM-driven content generation (YouTube descriptions, chapters, summaries), the API-derived per-cue Markdown transcript is denser and more anchor-rich than Descript's UI export. A 30-minute podcast yields ~750 timestamp anchors via this command vs ~50-100 from the UI's paragraph segmentation - useful when the downstream LLM needs many candidate chapter boundaries.
Relationship to the official Descript CLI
Descript publishes its own CLI as @descript/platform-cli (npm install -g @descript/platform-cli@latest, then descript-api config set api-key). It wraps the same API this plugin wraps, with interactive flows for setup, import, and agent prompting. This plugin is parallel, not a replacement. It adds Claude Code skills, an optional MCP shim, a bulk pipeline runner (descript batch), the export workflow (descript export, descript download-published), the partner-gated edit-in-descript, and the published-metadata reader. The two surfaces overlap on the basics (status, config, import, agent, publish, jobs, projects) and can coexist on the same machine. Use the official CLI for standalone terminal work; use this plugin for Claude-mediated work.
Development
npm install
npm test
npm run build
Zero runtime dependencies.