Skip to content
/

Spek

spek · kewang/spek · ★ 21 · last commit 2026-05-22

Give developers a read-only, multi-IDE viewer for OpenSpec content with git worktree aggregation for parallel AI agent workflows.

Best whenIn the AI-agent era a spec viewer must aggregate across all git worktrees simultaneously, not just the current directory.
vs seeds
openspeccontent; spek fills this gap with web app, VS Code extension, IntelliJ plugin, and GitHub Action delivery. The closest s…
Primitive shape 4 total
Commands 3 Skills 1
00

Summary

Spek — Summary

Spek is a lightweight, read-only viewer for OpenSpec content available in three distinct delivery forms: a local web app (Express + React), a VS Code extension (Activity Bar icon + Webview Panel + sidebar TreeView), and an IntelliJ IDEA plugin (JCEF-based Tool Window). All three variants are strictly read-only and local-only — no data leaves the machine. The key differentiating feature is git worktree aggregation: spek discovers every git worktree of a repository via git worktree list and merges their in-flight OpenSpec changes into one unified view, making it purpose-built for the AI-agent era of parallel worktrees. It also functions as a GitHub Action to generate static OpenSpec sites for CI pipelines. Spek ships one Claude Code skill (for its own development) but no prompts, hooks, or orchestration — it is a pure UI/tooling layer.

differs_from_seeds: Unlike any of the 11 seed frameworks, spek adds no workflow logic, hooks, or prompts — its closest analog is the specboard dashboard in this batch (also an OpenSpec viewer), but spek is more featureful (BDD syntax highlighting, Gantt timeline, full-text search, VS Code extension, IntelliJ plugin, GitHub Action) and distinctly read-only across all forms. No seed framework provides multi-IDE viewing of OpenSpec content.

01

Overview

Spek — Overview

Origin

Spek (v1.3.0) is authored by kewang (with one additional contributor). It is a monorepo with packages for web, VS Code extension, and IntelliJ plugin. Published 2026 alongside the rise of AI-agent parallel worktree development patterns.

Philosophy

From the README: "spek turns your local OpenSpec directory into a navigable, searchable interface. Instead of reading raw Markdown files in a text editor, spek provides structured browsing with BDD syntax highlighting, task progress tracking, and full-text search."

The project explicitly frames its git worktree aggregation as the core innovation: "In the AI-agent era, a single repository often has several git worktrees in flight at once — each agent, or each parallel task, working on its own branch in its own worktree. The OpenSpec changes for that work scatter across those worktrees, and pointing a viewer at any one directory shows only a fraction of what's happening."

Manifesto-style statements

  • "All are read-only and local-only. No server deployment, no authentication, no data leaves your machine."
  • "spek discovers every worktree of a repository (via git worktree list) and aggregates their in-flight changes into one view."
  • "Built for the AI-agent era of parallel worktrees"

Target user

Developers and teams using OpenSpec with parallel AI agents running in multiple git worktrees. Available from VS Code Marketplace and JetBrains Marketplace.

02

Architecture

Spek — Architecture

Distribution

Three forms:

  1. Web app: Clone + npm install && npm run dev → localhost:5173
  2. VS Code Extension: VS Code Marketplace (kewang.spek-vscode)
  3. IntelliJ Plugin: JetBrains Marketplace (plugin ID: 30600-spek--openspec-viewer)
  4. GitHub Action: kewang/spek@v1 (generates static site in CI)

Install methods

# Web app
git clone https://github.com/kewang/spek.git && cd spek && npm install && npm run dev

# VS Code Extension
# Install from VS Code Marketplace (search "spek")

# IntelliJ Plugin  
# Install from JetBrains Marketplace (Settings > Plugins > Marketplace, search "spek")

# GitHub Action
- uses: kewang/spek@v1
  with:
    title: "My Project - OpenSpec"

Tech stack (monorepo)

packages/
├── core/       # @spek/core — scanner, tasks parser, types (pure Node.js)
├── web/        # @spek/web — Express.js + React 19 + Vite + TypeScript + Tailwind CSS v4
│   ├── server/ # Express REST API (reads local filesystem)
│   └── src/    # React SPA + API adapters
├── vscode/     # spek-vscode — VS Code Extension
│   ├── src/    # extension.ts, panel.ts, handler.ts
│   └── webview/ # Vite build output (from web build:webview)
└── intellij/   # spek-intellij — IntelliJ Platform Plugin
    ├── src/main/kotlin/  # Kotlin source
    └── src/main/resources/webview/  # Vite build output (from web build:intellij)

Required runtime

  • Node.js (for web app + build tooling)
  • npm
  • For IntelliJ plugin build: Java 21 JDK
  • For VS Code extension: VS Code 1.x+
  • For IntelliJ plugin: IntelliJ IDEA 2024.2+

Target AI tools

None — spek does not invoke any AI model. It is a passive viewer.

Web app port

5173 (Vite dev server) + Express backend on 3001

VS Code activation

Activates automatically when workspace contains openspec/config.yaml

03

Components

Spek — Components

frontend-design

  • Format: SKILL.md
  • Purpose: Create distinctive, production-grade frontend interfaces with high design quality. Used internally for spek's own development. This is the superpowers frontend-design skill redistributed/linked.

electron (skill group)

  • Listed under .claude/skills/electron — exact content not fetched but likely build guidance for Electron integration

release (skill group)

  • Listed under .claude/skills/release — release process guidance

Web app features

  • Dashboard — specs count, changes count, task completion rates, lifecycle stats
  • Specs Browser — alphabetical listing with detail view and revision history
  • Changes Browser — active and archived with tabbed views (Proposal / Design / Tasks / Specs)
  • Timeline — horizontal Gantt-style chart of change lifecycles
  • BDD Syntax Highlighting — WHEN/GIVEN (blue), THEN (green), AND (gray), MUST/SHALL (red)
  • Task Progress — checkbox parsing with section-grouped progress bars
  • Full-text Search — Cmd+K / Ctrl+K across all specs and changes
  • Dark / Light Theme — toggle
  • Git Worktree Aggregation — discovers all worktrees via git worktree list, merges in-flight changes
  • Spec History — git-based timestamp tracking

VS Code extension features

  • Activity Bar icon with TreeView sidebar
  • Webview Panel (full spek UI in VS Code)
  • Commands:
    • spek: Open spek — open viewer panel
    • spek: Search OpenSpec — open search dialog
    • spek: Open Dashboard — open dashboard from sidebar

IntelliJ plugin features

  • Right sidebar Tool Window (JCEF-based)
  • Action: Tools > Open spek

GitHub Action

  • Input: title
  • Output: static HTML site from OpenSpec directory, deployable to GitHub Pages
  • fetch-depth: 0 recommended for accurate change timestamps

No hooks, commands (AI-facing), agents, or MCP servers

05

Prompts

Spek — Prompts

Spek ships one AI-facing skill in its own development repository: the frontend-design skill used to guide Claude Code when building spek's own UI.

Verbatim excerpt 1: frontend-design SKILL.md (from .agents/skills/frontend-design/SKILL.md)

---
name: frontend-design
description: Create distinctive, production-grade frontend interfaces with high design quality.
  Use this skill when the user asks to build web components, pages, artifacts, posters, or
  applications (examples include websites, landing pages, dashboards, React components,
  HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished
  code and UI design that avoids generic AI aesthetics.
---

This skill guides creation of distinctive, production-grade frontend interfaces that avoid
generic "AI slop" aesthetics. Implement real working code with exceptional attention to
aesthetic details and creative choices.

...

## Design Thinking

Before coding, understand the context and commit to a BOLD aesthetic direction:
- **Purpose**: What problem does this interface solve? Who uses it?
- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural,
  luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel,
  industrial/utilitarian, etc.
...

NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts),
cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component
patterns, and cookie-cutter design that lacks context-specific character.

Prompting technique: Anti-pattern prohibition + aesthetic commitment forcing + design vocabulary injection. The skill is borrowed from the superpowers ecosystem (same content as the frontend-design skill in Claude Code plugins) and included here for spek's own internal development.

End-user prompts

Spek ships no prompts for end-users. The frontend-design skill above is for spek's maintainers.

Summary

One internal skill; zero user-facing prompts. This is consistent with spek being a pure viewer tool.

09

Uniqueness

Spek — Uniqueness & Positioning

differs_from_seeds

None of the 11 seed frameworks provides a multi-IDE viewer for OpenSpec content. Spek is the most comprehensively cross-platform OpenSpec viewer in the ecosystem: web app, VS Code extension, IntelliJ plugin, and GitHub Action — all read-only, all local. The closest seed in spirit is openspec (which ships its own web UI via openspecui), but openspecui is a workflow execution surface, not a pure viewer. Spek explicitly avoids any workflow or orchestration role; its differentiating technical contribution is git worktree aggregation — merging OpenSpec changes from all parallel worktrees into a single view, which no seed framework attempts.

Positioning

  • Category: OpenSpec ecosystem — multi-platform read-only viewer
  • User: Developers and teams who want to inspect OpenSpec content without leaving their IDE
  • Integration: Passive overlay on top of any OpenSpec project; requires no configuration changes to the project
  • Value: BDD syntax highlighting, Gantt timeline, full-text search, and git worktree aggregation in three IDE contexts

Observable failure modes

  1. VS Code extension requires openspec/config.yaml to activate — projects without this exact file don't trigger auto-activation
  2. Worktree aggregation uses git worktree list — bare repositories or unusual worktree setups may produce incorrect results
  3. IntelliJ plugin requires Java 21 JDK for building from source — higher barrier than typical npm tools
  4. Read-only limitation: Some users may want to create/edit specs from the viewer — spek explicitly does not support this
  5. Web app is not installable globally — no npm global install or CLI binary

Cross-references

  • Closely related to specboard (this batch) — both are OpenSpec viewers, but spek is IDE-integrated and read-only while specboard is standalone with kanban and write access for Manual QA
  • intellij-openspec (this batch) is a separate, heavier IntelliJ plugin for the full OpenSpec workflow (propose, generate, archive) — spek's IntelliJ plugin is view-only
  • Spek uses the frontend-design skill from the superpowers plugin ecosystem for its own development
04

Workflow

Spek — Workflow

Spek does not define or enforce any development workflow. It is a viewer. The workflow it enables is human inspection of OpenSpec content generated by other tools.

User workflow

Step Actor Action Artifact
1 Human Open spek (web/VS Code/IntelliJ) Dashboard rendered
2 Spek Run git worktree list to discover worktrees Aggregated worktree list
3 Spek Scan openspec/ in each worktree Merged specs + changes view
4 Human Browse specs, changes, tasks Read-only display
5 Human Use search (Cmd+K) Search results across all content
6 Human View timeline Gantt chart of change lifecycles

CI workflow (GitHub Action)

Step Actor Action Artifact
1 CI actions/checkout@v4 with fetch-depth: 0 Full git history
2 CI kewang/spek@v1 Static HTML site in output path
3 CI Deploy to GitHub Pages Publicly accessible spek site

Approval gates

None.

Phase-to-artifact map

Phase Artifact
Web app startup Express server + React SPA at localhost:5173
VS Code activation Webview panel + sidebar TreeView
IntelliJ activation JCEF Tool Window
GitHub Action Static site output

Key invariant

Spek never writes to the OpenSpec directory. It is strictly read-only.

06

Memory Context

Spek — Memory & Context

State storage

Spek stores no persistent state in databases or JSON files. The server holds transient in-memory state for:

  • The current repo path (set at startup or via path input in UI)
  • Cached git worktree list (refreshed on demand)
  • In-memory OpenSpec data (re-read from filesystem on each request or path change)

Git-based history

The Spec History feature uses git blame/log to track when spec files were last modified. This is the only "memory" spek has — and it is derived from the existing git history, not from any spek-specific store.

Persistence

None. Spek is stateless — restarting the server loses nothing because all data derives from the filesystem and git.

Cross-session handoff

Not applicable. Spek is a viewer, not an agent.

Context compaction

Not applicable. No LLM context is managed.

Filesystem reads (live mode)

  • openspec/config.yaml — for activation detection
  • openspec/specs/ — all spec files
  • openspec/changes/ — active change directories
  • openspec/changes/archive/ — archived changes
  • git worktree list output — to discover parallel worktrees
07

Orchestration

Spek — Orchestration

Multi-agent support

None. Spek is a passive viewer.

Orchestration pattern

None.

Isolation mechanism

None. Spek reads files in-place without creating worktrees, branches, or containers. Notably, it reads existing git worktrees but does not create them.

Multi-model support

None.

Execution mode

Interactive (user opens the viewer and browses). The GitHub Action variant is one-shot (CI invoked).

Subagents

None.

Consensus mechanism

None.

Crash recovery

Not applicable.

Key architectural note

The git worktree aggregation in spek is purely read-side: it calls git worktree list to enumerate existing worktrees, then reads OpenSpec data from each. It does not create, delete, or manage worktrees. This makes it safe to use alongside any number of running AI agents without risk of interference.

08

Ui Cli Surface

Spek — UI & CLI Surface

CLI binary

None. Spek is not invoked as a CLI tool. The web variant is started with npm run dev (standard npm script).

Local web dashboard (web variant)

  • Type: Local web app
  • Port: 5173 (Vite dev server) + Express backend on 3001
  • Tech stack: React 19 + Vite + TypeScript + Tailwind CSS v4 (frontend); Express.js + Node.js (backend)
  • Features:
    • Dashboard overview (specs count, changes count, task completion rates, lifecycle stats)
    • Specs Browser (alphabetical listing, revision history)
    • Changes Browser (active + archived, tabbed: Proposal / Design / Tasks / Specs)
    • Timeline (Gantt-style, status filters, spec-topic grouping)
    • BDD Syntax Highlighting (WHEN/GIVEN, THEN, AND, MUST/SHALL)
    • Task Progress (checkbox parsing, section-grouped progress bars)
    • Full-text Search (Cmd+K / Ctrl+K)
    • Dark / Light theme toggle
    • Git Worktree Aggregation (auto-on when multiple worktrees detected)
    • Spec History (git-based timestamps)
    • Live Demo at kewang.github.io/spek/demo.html

VS Code Extension

  • Extension ID: kewang.spek-vscode
  • Activation: Automatic when workspace has openspec/config.yaml
  • Type: VS Code extension with Webview Panel + sidebar TreeView
  • Features: Full spek UI in Webview + Activity Bar icon + sidebar specs/changes tree
  • Commands:
    • spek: Open spek
    • spek: Search OpenSpec
    • spek: Open Dashboard
  • Supports: Git worktree aggregation (same as web)

IntelliJ Plugin

  • Marketplace ID: 30600-spek--openspec-viewer
  • Type: JetBrains IDE plugin (IntelliJ IDEA 2024.2+)
  • Tech stack: Kotlin + JCEF (Chromium Embedded Framework) for webview
  • Activation: Automatic when project has openspec/ directory
  • Features: Right-sidebar Tool Window with full spek UI
  • Action: Tools > Open spek

GitHub Action

  • Registry: GitHub Marketplace
  • Input: title (optional)
  • Output: static HTML site for GitHub Pages deployment
  • Trigger: push to configured branch

Observability

  • No structured logging
  • No audit trail
  • No replay capability

Summary

Spek has the widest UI surface in this batch: web app, VS Code extension, IntelliJ plugin, and GitHub Action — all exposing the same core spek viewer in different delivery contexts. The multi-IDE strategy and git-worktree aggregation are its most distinctive technical contributions.

Related frameworks

same archetype · same primary tool · same memory type

Goose (Block/AAIF) ★ 46k

General-purpose AI agent (not just code) with security-first tool inspection, recipe-based shareable configurations, and 15+ LLM…

Vibe Kanban ★ 27k

Eliminate the overhead of planning, switching between agent terminals, and reviewing diffs by providing a single web dashboard…

1Code ★ 5.5k

Cursor-like desktop experience for Claude Code and Codex with cloud background agents, event-driven automations, and a full…

Crystal (stravu) ★ 3.1k

Manage multiple parallel AI coding sessions in isolated git worktrees from a single desktop GUI.

Maestro (RunMaestro) ★ 3.0k

Orchestrate unlimited parallel AI agent sessions with a keyboard-first desktop app including Group Chat coordination and Auto Run…

AgentsMesh ★ 2.1k

Multi-tenant workforce platform that gives every team member a squad of AI coding agents coordinated through channels, pod…