Skip to content

workbench-codes/workbench

workbench

CI npm JSR License: MIT

Getting Started

1. Prerequisites

  • Bun installed
  • gh CLI installed and authenticated (gh auth login)

2. Install the CLI

Choose to install the CLI from the package manager or the source code.

2.1 Install from the package manager (recommended)

Install the package from npm or JSR.

For example:

npm install -g @workbench-codes/workbench

2.2 Install from the cloned repo

If you have cloned the repo and you don't want to install the package from npm (or other sources) then this is how you install the package.

cd packages/workbench-cli
bun install
bun link

See packages/workbench-cli/README.md for full CLI documentation.

3. Initialize your workbench

Important

Run the following command in a folder where workbench folder should be created.

workbench --init

This launches an interactive flow to fork, clone, and wire up your repositories.

A generic development workbench for setting up and maintaining multiple projects from a single repository.

The repository acts as a hub: engineers fork it, configure their code and resource repositories as submodules, and get a consistent environment across the team.

Folder structure

Folder Purpose
.opencode/ Slash commands, workflow sub-agents, skills, and MCP configuration
packages/workbench-cli/ The workbench CLI tool (TypeScript, Bun)
projects/ Git submodules for code repositories
resources/ Git submodules for documentation/resource repositories
scripts/ Placeholder for helper scripts
thoughts/ Planning notes, research, and ticket documentation (Not checked in)

Working on issues with OpenCode

Note

At the moment only OpenCode is supported. Support for ClaudeCode will be added soon.

Once your workbench is set up, the primary way to work on issues is through OpenCode using the built-in slash commands. These commands implement a structured flow from issue analysis through to review.

Prerequisites

The development flow

/implement

/implement is the end-to-end orchestrator. It resumes from the issue's current status label and runs the remaining commands automatically. Each /implement run also creates a PM document with an implementation report.

Manual flow remains available:

/ticket → /research → /plan → /execute → /review → /commit

Each command takes an issue ID as its argument and is best run in a fresh OpenCode session:

Command What it does
/ticket {issue-id} Structures an issue for development
/research {issue-id} Researches the codebase in context of the issue
/plan {issue-id} Creates a detailed implementation plan
/execute {issue-id} Implements the plan
/review {issue-id} Reviews the execution against the plan
/implement {issue-id} [ticket|research|plan|execute|review|commit] Orchestrates all remaining workflow steps, optionally bounded to a stop-step
/commit Commits the changes in atomic commits, ready for review

How it works

Under the hood, each slash command is powered by a dedicated sub-agent:

  • ticketer — powered by /ticket. Handles interactive Q&A, scope boundary exploration, and ticket writing.
  • researcher — powered by /research. Runs a multi-phase pipeline to locate, pattern-match, and analyze relevant code in the codebase.
  • planner — powered by /plan. Interacts on design decisions and writes detailed phased implementation plans.
  • executer — powered by /execute. Implements phases sequentially, tracks deviations from the plan, and writes execution notes.
  • reviewer — powered by /review. Validates the implementation against plan specifications and writes review reports.
  • committer — powered by /commit. Creates atomic git commits with conventional messages and issue trailers.

/implement orchestrates these sub-agents automatically, advancing through the workflow based on the issue's current status label.

Example

# Manual flow
/ticket PAP-1234
/research PAP-1234
/plan PAP-1234
/execute PAP-1234
/review PAP-1234
/commit

# Orchestrated flow
/implement PAP-1234

# ONLY for GitHub Issues we also need to pass the {owner}/{repo}
# Thisis needed because GitHub issues are unique in scope of a repository
/implement 54 workbench-codes/workbench
# or up to a stage
/implement 54 plan workbench-codes/workbench

# Orchestrated flow with optional stop-step bound
/implement PAP-1234 research

/implement accepts an optional stop-step (ticket|research|plan|execute|review|commit). Input is case-insensitive, normalized to lowercase, and must not be earlier than the issue's current status progression.

The commands are defined in .opencode/command/ and can be customised for your own workflow.

Project Management

The workbench supports multiple project management backends. The active backend is configured in .workbench/settings.yml via the project_management field:

project_management: github-issues

Supported PM tools are:

  • Linear (linear)
  • GitHub Issues (github-issues)

Authentication and setup instructions vary by backend — refer to the relevant PM tool's documentation for authentication steps.

Code indexing with ck

The setup wizard optionally indexes your repositories with ck — a hybrid code search tool by BeaconBay that fuses lexical (BM25/grep) precision with embedding-based recall, so you can find the right code even when the exact keywords aren't there.

Syncing Your Workbench

The workbench is periodically updated with improvements to slash commands, skills, schemas, and documentation. To fetch the latest managed files from the source repository, run workbench --sync from your workbench root:

workbench --sync

Sync clones the source, applies the configured file paths (.opencode/, .workbench/schemas/, README.md), and auto-commits changes with a chore message. An interactive confirmation prompt lets you review and abort before any files are overwritten.

Sync requires an initialized workbench (created via workbench --init) and a clean working tree. Run periodically to stay updated.

See packages/workbench-cli/README.md for full flag documentation and troubleshooting.

Development Setup

To set up the workbench CLI for local development:

cd packages/workbench-cli
bun install
bun tsc --noEmit

This installs dependencies and runs the TypeScript type checker. See CONTRIBUTING.md for the full development workflow, build commands, and PR submission guide.

Acknowledgements

workbench is inspired by Cluster444/agentic, which pioneered the idea of a structured agentic development workflow using slash commands.

Contributing

Contributions are welcome. See CONTRIBUTING.md for setup instructions, the development workflow, and how to submit a PR.

Please read our Code of Conduct before participating.

License

MIT — see LICENSE.

About

This repository includes a workbench that can be used to work on requirements, features or bugs in different projects.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors