Automatically generate structured summary documents from SpecKit workflow artifacts, reducing human review time with clear, easy-to-scan digests.
The Digest extension hooks into every step of the SpecKit workflow
(constitution → specify → clarify → plan → tasks → implement → analyze) and
automatically generates a Markdown summary document after each step. It supports:
- Multi-language output (English by default, extensible)
- Digest changelog — archives previous versions before each re-generation
- Manual commands — re-generate any digest on demand
- Agent-agnostic — works with GitHub Copilot, Claude Code, Gemini CLI, and others
# From local directory (development / private use)
specify extension add --dev /path/to/digest
# After publishing to a catalog
specify extension add digestOnce installed, configure the extension by editing:
.specify/extensions/digest/digest-config.yml
| Field | Type | Default | Description |
|---|---|---|---|
languages |
list | [en] |
Languages for digest generation (any valid BCP 47 code) |
changelog.enabled |
bool | true |
Enable/disable archiving of old versions |
changelog.max_history |
int | 10 |
Maximum number of archived versions per step |
Example .specify/extensions/digest/digest-config.yml:
languages:
- fr
- en
changelog:
enabled: true
max_history: 10Language rules:
- If a language is unsupported, the extension falls back to
enand adds a warning in the digest header - If
languagesis empty or absent, defaults to[en]
All commands are prefixed with /speckit.digest. when invoked via your AI agent.
| Command | Description |
|---|---|
/speckit.digest.all |
Re-generate all available digests for the current feature |
/speckit.digest.constitution |
Digest for the constitution step |
/speckit.digest.specify |
Digest for the specify step |
/speckit.digest.clarify |
Digest for the clarify step |
/speckit.digest.plan |
Digest for the plan step |
/speckit.digest.tasks |
Digest for the tasks step |
/speckit.digest.implement |
Digest for the implement step |
/speckit.digest.analyze |
Digest for the analyze step |
/speckit.digest.history <step> |
Display the version history for the given step |
The extension hooks into SpecKit lifecycle events to generate digests automatically.
These hooks always fire after the corresponding step (optional: false).
| Hook | Trigger | Optional |
|---|---|---|
after_constitution |
/speckit.constitution |
Yes |
after_specify |
/speckit.specify |
No |
after_clarify |
/speckit.clarify |
No |
after_plan |
/speckit.plan |
No |
after_tasks |
/speckit.tasks |
No |
after_analyze |
/speckit.analyze |
No |
after_implement |
/speckit.implement |
Yes |
| Hook | Trigger | Manual fallback |
|---|---|---|
after_constitution |
/speckit.constitution |
/speckit.digest.constitution |
after_implement |
/speckit.implement |
/speckit.digest.implement |
Note: For optional hooks, if the hook does not fire automatically, use the corresponding manual command as a fallback.
Generated digests are written into the current feature folder:
.specify/
├── digest/ # Project-wide digests (constitution)
│ ├── fr/
│ │ └── digest-constitution.md
│ └── en/
│ └── digest-constitution.md
└── features/<feature-name>/
└── digest/ # Feature-specific digests
├── fr/
│ ├── digest-specify.md
│ ├── digest-clarify.md
│ ├── digest-plan.md
│ ├── digest-tasks.md
│ ├── digest-implement.md
│ ├── digest-analyze.md
│ └── history/ # Only if changelog.enabled: true
│ ├── specify/
│ │ ├── digest-specify-2026-04-21_17-45-00.md
│ │ └── digest-specify-2026-04-22_09-10-00.md
│ └── plan/
│ └── digest-plan-2026-04-21_18-00-00.md
└── en/
├── digest-specify.md
├── ...
└── history/
Constitution note: The constitution digest is project-wide and stored at
.specify/memory/digest/<lang>/, not inside a feature folder. Its header clearly states this scope.
Every generated digest contains:
---
Source document(s): [link(s) to analyzed artifact(s)]
Estimated reading time (source): ~X min
Estimated reading time (this digest): ~Y min
Generated: YYYY-MM-DD HH:MM
Language: English
---
See the table below for the content of each step.
| Step | Content |
|---|---|
| constitution | Non-negotiable principles, tech stack, dev guidelines, points of vigilance |
| specify | Functional need summary, scope (in/out), acceptance criteria, assumptions |
| clarify | Identified ambiguities + resolutions, decisions, open points, spec impact |
| plan | Technical architecture, impacted components, data model/API, technical choices |
| tasks | Task count, phase breakdown, critical/blocking tasks, execution order |
| implement | What was implemented, created/modified files, technical notes, remaining work |
| analyze | Coherence analysis results, detected incoherences, recommendations, quality score |
A Version History table listing all archived versions with their dates.
When changelog.enabled: true:
- Before each re-generation, the existing digest is archived to
history/<step>/digest-<step>-<YYYY-MM-DD_HH-MM-SS>.md - If the archive count exceeds
max_history, the oldest archives are deleted - The current digest file is never deleted — only archived copies beyond the limit
- Each digest ends with a Version History table showing all archived versions
When changelog.enabled: false:
- The existing digest is simply overwritten
- No
history/folder is created - No Version History section is appended
digest/
├── extension.yml # Extension manifest
├── digest-config.yml # Configuration template
├── README.md # This file
├── templates/
│ └── commands/
│ ├── digest-all.md # /speckit.digest.all
│ ├── digest-constitution.md
│ ├── digest-specify.md
│ ├── digest-clarify.md
│ ├── digest-plan.md
│ ├── digest-tasks.md
│ ├── digest-implement.md
│ ├── digest-analyze.md
│ └── digest-history.md
└── hooks/
├── post-constitution.md
├── post-specify.md
├── post-clarify.md
├── post-plan.md
├── post-tasks.md
├── post-implement.md
└── post-analyze.md
- SpecKit:
>=0.8.2 - AI Agents: GitHub Copilot, Claude Code, Gemini CLI (agent-agnostic templates)