Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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 README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div align="center">
<img src="https://raw.githubusercontent.com/github/spec-kit/main/media/logo_large.webp" alt="Spec Kit Logo" width="200" height="200"/>
<img src="https://raw.githubusercontent.com/justinbrenton/spec-kit/main/media/logo_small.webp" alt="Spec Kit Logo" width="200" height="200"/>
<h1>🌱 Spec Kit</h1>
<h3><em>Build with a spec, fix a bug, or assess an idea — with your coding agent.</em></h3>
</div>
Expand Down
46 changes: 42 additions & 4 deletions bundles/catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"updated_at": "2026-09-10T00:00:00Z",
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/bundles/catalog.json",
"updated_at": "2026-10-23T00:00:00Z",
"catalog_url": "https://raw.githubusercontent.com/justinbrenton/spec-kit/main/bundles/catalog.json",
"bundles": {
"bugfix": {
"id": "bugfix",
Expand All @@ -22,7 +22,12 @@
"steps": 0,
"workflows": 1
},
"tags": ["bug", "triage", "workflow", "qa"],
"tags": [
"bug",
"triage",
"workflow",
"qa"
],
"verified": true
},
"assess": {
Expand All @@ -44,8 +49,41 @@
"steps": 0,
"workflows": 1
},
"tags": ["assessment", "discovery", "triage", "product"],
"tags": [
"assessment",
"discovery",
"triage",
"product"
],
"verified": true
},
"hermes-desktop": {
"id": "hermes-desktop",
"name": "Hermes Desktop Integration",
"version": "0.1.0",
"role": "developer",
"description": "Interactive Spec-Kit for Hermes Desktop \u2014 SpecBuilder, TaskBoard, ConstitutionWizard with Kanban sync and round-trip file sync",
"author": "Justin Brenton",
"license": "MIT",
"download_url": "https://raw.githubusercontent.com/justinbrenton/spec-kit/main/bundles/hermes-desktop/bundle.yml",
"repository": "https://github.com/justinbrenton/spec-kit",
"requires": {
"speckit_version": ">=0.16.0"
},
"provides": {
"extensions": 1,
"presets": 1,
"steps": 0,
"workflows": 1
},
"tags": [
"hermes",
"desktop",
"interactive",
"kanban",
"constitution"
],
"verified": false
}
}
}
20 changes: 20 additions & 0 deletions bundles/hermes-desktop/bundle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: hermes-desktop
version: 0.1.0
description: Base Hermes Desktop integration bundle
author: Justin Brenton
license: MIT
homepage: https://github.com/justinbrenton/spec-kit
speckit_version: "^0.16.0"
provides:
presets:
- hermes-desktop
extensions:
- hermes-desktop
workflows:
- hermes-desktop
tags:
- hermes
- desktop
- interactive
- kanban
- constitution
1,343 changes: 1,343 additions & 0 deletions docs/hermes-integration/design.html

Large diffs are not rendered by default.

1,341 changes: 1,341 additions & 0 deletions docs/hermes-integration/design.md

Large diffs are not rendered by default.

21 changes: 19 additions & 2 deletions extensions/catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"updated_at": "2026-09-28T16:20:28Z",
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.json",
"updated_at": "2026-10-23T00:00:00Z",
"catalog_url": "https://raw.githubusercontent.com/justinbrenton/spec-kit/main/extensions/catalog.json",
"extensions": {
"agent-context": {
"name": "Coding Agent Context",
Expand Down Expand Up @@ -76,6 +76,23 @@
"issues",
"integration"
]
},
"hermes-desktop": {
"name": "Hermes Desktop Hooks",
"id": "hermes-desktop",
"version": "0.1.0",
"description": "Extension hooks for Hermes Desktop \u2014 git branch creation, constitution check, auto-convergence, PR preparation",
"author": "Justin Brenton",
"repository": "https://github.com/justinbrenton/spec-kit",
"bundled": false,
"tags": [
"hermes",
"desktop",
"hooks",
"git",
"constitution",
"convergence"
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# /speckit.constitution.check

Validate specification against project constitution.

## Trigger

Runs before `/speckit.plan` via extension hook.

## Usage

```bash
/speckit.constitution.check <feature_name> [--strict]
```

## Options

- `--strict` — Fail on any violation (default: warn)

## Checks

1. **Purpose Alignment** — Feature serves declared project purpose
2. **Principle Compliance** — No violation of core principles
3. **Architecture Fit** — Consistent with chosen patterns
4. **Governance** — Changes follow review process

## Output

```json
{
"passed": true,
"warnings": [],
"violations": []
}
```

## On Failure

Blocks `/speckit.plan` until resolved.

40 changes: 40 additions & 0 deletions extensions/hermes-desktop/commands/speckit.converge.auto.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# /speckit.converge.auto

Automatically run convergence check after implementation.

## Trigger

Runs after `/speckit.implement` via extension hook.

## Usage

```bash
/speckit.converge.auto <feature_name> [--checklist] [--fail-on-gap]
```

## Options

- `--checklist` — Run full convergence checklist
- `--fail-on-gap` — Exit non-zero if gaps found

## Process

1. Read spec.md, plan.md, tasks.md
2. Compare implementation against requirements
3. Run convergence checklist
4. Report gaps

## Output

```json
{
"converged": true,
"gaps": [],
"checklist": {
"passed": 6,
"failed": 0,
"items": [...]
}
}
```

34 changes: 34 additions & 0 deletions extensions/hermes-desktop/commands/speckit.git.create-branch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# /speckit.git.create-branch

Create a feature branch for the new specification.

## Trigger

Runs before `/speckit.specify` via extension hook.

## Usage

```bash
/speckit.git.create-branch <feature_name> [--prefix=feat/]
```

## Options

- `--prefix` — Branch prefix (default: feat/)

## Process

1. Generate branch name: `<prefix><feature_name>` (kebab-case)
2. Create branch from main/trunk
3. Switch to new branch
4. Output branch name for subsequent commands

## Output

```json
{
"branch": "feat/user-authentication",
"base": "main"
}
```

49 changes: 49 additions & 0 deletions extensions/hermes-desktop/commands/speckit.pr.prepare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# /speckit.pr.prepare

Prepare pull request with spec-kit context.

## Trigger

Runs after `/speckit.converge` via extension hook.

## Usage

```bash
/speckit.pr.prepare <feature_name> [--repo=<owner/repo>] [--draft]
```

## Options

- `--repo` — Target repository
- `--draft` — Create as draft PR

## PR Template

```markdown
# {{feature_name}}

## Specification
- Spec: `.specify/specs/{{feature_name}}/spec.md`
- Plan: `.specify/specs/{{feature_name}}/plan.md`
- Tasks: `.specify/specs/{{feature_name}}/tasks.md`

## Convergence
- All FRs implemented: ✅
- All scenarios tested: ✅
- Constitution gates: ✅
- Checklist: ✅

## Changes
- {{file_1}}: {{description}}
- {{file_2}}: {{description}}

## Testing
- Unit: {{coverage}}%
- Integration: {{coverage}}%
- E2E: {{coverage}}%
```

## Hermes Desktop Integration

In Hermes Desktop, available as "Create PR" in TaskBoard convergence column.

25 changes: 25 additions & 0 deletions extensions/hermes-desktop/extension.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: hermes-desktop
version: 0.1.0
description: Hermes Desktop integration hooks for Spec-Kit
author: Justin Brenton
license: MIT
homepage: https://github.com/justinbrenton/spec-kit
requires:
speckit: ">=0.16.0"
hooks:
before_specify:
command: speckit.git.create-branch
optional: true
description: Create feature branch before specification
before_plan:
command: speckit.constitution.check
optional: true
description: Validate spec against constitution before planning
after_implement:
command: speckit.converge.auto
optional: true
description: Auto-run convergence check after implementation
after_converge:
command: speckit.pr.prepare
optional: true
description: Prepare PR with spec-kit context after convergence
48 changes: 48 additions & 0 deletions hermes-desktop-plugin-spec-kit/plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: "spec-kit-hermes"
version: "0.1.0"
description: "Spec-Kit integration for Hermes Desktop — SpecBuilder, TaskBoard, ConstitutionWizard"
author: "Justin Brenton"
license: "MIT"
homepage: "https://github.com/justinbrenton/spec-kit"
kind: "standalone"
requires_hermes: ">=0.22.0"
provides_tools: []
provides_hooks: []
config_schema:
specKitCatalogUrl:
type: string
default: "https://raw.githubusercontent.com/justinbrenton/spec-kit/main/presets/catalog.json"
description: "Preset catalog URL for hermes-desktop preset"
specKitBundleUrl:
type: string
default: "https://raw.githubusercontent.com/justinbrenton/spec-kit/main/bundles/catalog.json"
description: "Bundle catalog URL for hermes-desktop bundles"
specKitProfilePath:
type: string
default: ""
description: "Profile-specific config path (optional)"

panes:
- id: spec-builder
title: "Spec Builder"
data:
placement: "right"
width: "400px"
- id: task-board
title: "Task Board"
data:
placement: "right"
width: "400px"
- id: constitution-wizard
title: "Constitution Wizard"
data:
placement: "right"
width: "400px"

commands:
- id: spec-kit-init
label: "Initialize Spec-Kit Project"
description: "Run specify init with hermes-desktop preset and bundle"
- id: spec-kit-sync
label: "Sync Spec-Kit"
description: "Bidirectional pane ↔ .specify/ sync"
Loading