Documentation-driven development workflow tooling
Project description
Vibe Engineer
Documentation-driven development workflow tooling. Vibe Engineer helps you maintain structured documentation through a workflow where strong documentation leads to confident code implementation and new code brings with it the needed documentation. The end result is vibe coding that still feels like magic on day 2.
Installation
From PyPI
pip install vibe-engineer
Or with UV:
uv tool install vibe-engineer
From Git
Install directly from the repository:
uv tool install git+https://github.com/netguy204/vibe-engineer.git
Or install from a local clone:
git clone https://github.com/netguy204/vibe-engineer.git
cd vibe-engineer
uv tool install .
After installation, the ve command is available from anywhere:
ve --help
ve init
ve chunk create my-feature
To upgrade to the latest version:
uv tool upgrade vibe-engineer
To uninstall:
uv tool uninstall vibe-engineer
Usage (Building with the Vibe Engineering workflow)
Initialize a Project
Set up the vibe-engineer document structure in your project:
ve init
This creates the docs/trunk/ directory with template documentation files.
Now you should edit your docs/trunk contents so that agents (and humans) understand what your project is for and the big rules for working in it. The docs/trunk of this repository provide a strong example to work from.
Working in Chunks
Chunks capture the intent behind your code — the constraints, contracts, and boundaries that should outlive any particular implementation. Not every change needs a chunk; typo fixes, dependency bumps, and mechanical renames bypass the chunk system entirely. The test: does this code need to remember why it exists? If yes, make a chunk. See docs/trunk/CHUNKS.md for the full principles.
Each chunk has a goal and an implementation plan. The goal is where you get clear on what the end value you're trying to achieve is. The plan is where you get clear on how you'll get to that value. The agent writes both of these files and you edit them.
Claude Code Slash Commands
When you run ve init, slash commands are installed to .claude/commands/ for use with Claude Code:
| Command | Description |
|---|---|
/chunk-create |
Create a new current chunk and interactively refine its goal |
/chunk-plan |
Create a technical implementation plan for the current chunk |
/chunk-implement |
Apply the plan to the code |
/chunk-complete |
Update code references and mark the current chunk as complete |
/chunk-commit |
Create a conventional git commit for the just completed chunk |
>>> /chunk-create a way to log points of friction as i encounter them
<<< i've created docs/chunks/friction_log
>>> I think it should be stored in a single file in the trunk area
<<< updated
>>> /clear # note that we can and should clear context regularly to get "fresh eyes" on our work and to avoid overwhelming the agent
>>> /chunk-plan
<<< the plan is ready
>>> /clear
>>> [tweaks in VS Code]
/chunk-implement
>>> oops, you did x instead of y. help me update my testing philosophy so you can avoid that mistake in the future
>>> /clear
>>> /chunk-complete
<<< code back references updated and chunk overlaps resolved
>>> /chunk-commit
CLI Commands
The ve CLI provides the underlying commands used by the slash commands:
# Create a new chunk
ve chunk create my-feature
# Create a chunk with a ticket ID
ve chunk create my-feature TICKET-123
# List all chunks
ve chunk list
# Show only the latest chunk
ve chunk list --latest
# Validate a chunk is ready for completion
ve chunk validate 0001-my-feature
Cross-Repository Work
When engineering work spans multiple repositories, use task directories to coordinate:
# Initialize a task directory with an external chunk repo and participating projects
ve task init --external acme-chunks --project service-a --project service-b
This creates a .ve-task.yaml configuration file that enables task-aware chunk management across repositories.
Requirements:
- All directories must be git repositories
- All directories must be Vibe Engineer initialized (
ve initrun, sodocs/chunks/exists)
Orchestrator
The orchestrator (ve orch) runs FUTURE chunks in parallel across isolated git worktrees. It handles planning, implementation, and completion autonomously — you create the work, and the orchestrator schedules and executes it.
Key Commands
| Command | Purpose |
|---|---|
ve orch inject <chunk> |
Submit a chunk to the orchestrator |
ve orch ps |
List all work units and their status |
ve orch attention |
Show chunks needing operator input |
ve orch answer <chunk> |
Answer a question from a work unit |
Example Workflow
# 1. Create a FUTURE chunk
ve chunk create my_feature --future
# 2. Refine the goal, then commit
git add docs/chunks/my_feature/ && git commit -m "feat(chunks): create my_feature"
# 3. Submit to the orchestrator
ve orch inject my_feature
# 4. Check on progress
ve orch ps
# 5. Handle any attention items (questions, conflicts)
ve orch attention
ve orch answer my_feature "Yes, use the existing auth module"
For the full command reference and advanced topics (worktree retention, batch operations, conflict resolution), see docs/trunk/ORCHESTRATOR.md.
Steward
The steward is a long-lived agent that watches an inbound message channel, triages requests according to a Standard Operating Procedure (SOP), and delegates work to the orchestrator. It turns cross-project messages into chunks and investigations without human intervention.
Setup
Run /steward-setup to create docs/trunk/STEWARD.md via an interactive interview. You'll configure:
- Steward name — a human-readable identifier
- Channel — the inbound channel the steward watches for messages
- Behavior mode — how the steward responds to inbound messages:
autonomous— creates and implements chunks end-to-endqueue— creates work items for human review without implementingcustom— follows freeform operator-defined instructions
The Watch Loop
Once set up, run /steward-watch to start the steward's core lifecycle:
- Read the SOP from
docs/trunk/STEWARD.md - Watch the inbound channel for messages
- Triage and act according to the behavior mode
- Post outcome summaries to the changelog channel
- Re-read the SOP and repeat
The steward runs autonomously until the agent session ends. Editing the SOP mid-session takes effect on the next iteration.
Cross-Project Messaging
Use /steward-send to send a message to another project's steward without context-switching. This lets an operator in Project A request work from Project B's steward directly.
Example Workflow
# 1. Set up the steward (interactive)
/steward-setup
# 2. Start the watch loop
/steward-watch
# 3. From another project, send a request to this steward
/steward-send tool-b-steward "Please add rate limiting to the /api/submit endpoint"
# 4. Watch for the outcome
/steward-changelog
Development Setup (Improving the Vibe Engineering workflow)
Prerequisites
- Python 3.12 or later
- UV package manager
Getting Started
-
Clone the repository:
git clone https://github.com/netguy204/vibe-engineer.git cd vibe-engineer
-
Sync dependencies (creates virtual environment automatically):
uv sync -
Run the CLI in development mode:
uv run ve --help
-
Run tests:
uv run pytest
Project Structure
vibe-engineer/
├── src/
│ ├── ve.py # CLI entry point
│ ├── chunks.py # Chunk management logic
│ ├── project.py # Project initialization
│ ├── models.py # Pydantic models
│ └── templates/ # Document templates
├── tests/ # Pytest test suite
├── docs/
│ ├── trunk/ # Project documentation
│ └── chunks/ # Work chunks
└── pyproject.toml # Project configuration
Releasing
Releases are published to PyPI automatically when a version tag is pushed.
- Update the version in
pyproject.toml - Commit the version bump:
git commit -am "chore: bump version to 0.2.0" - Tag the release:
git tag releases/v0.2.0 - Push the tag:
git push origin releases/v0.2.0
Tags follow the releases/v* pattern; the publish workflow triggers on tags matching that prefix.
GitHub Actions will build the package and publish it to PyPI using trusted publishing (OIDC).
First-time setup: Before the first release, configure a trusted publisher on pypi.org linking the netguy204/vibe-engineer repository and the publish.yml workflow to the vibe-engineer PyPI project. Create a GitHub environment named pypi in the repository settings.
After publishing, users can install with:
pip install vibe-engineer
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vibe_engineer-0.2.0.tar.gz.
File metadata
- Download URL: vibe_engineer-0.2.0.tar.gz
- Upload date:
- Size: 460.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31b012fa9690ccd1b5299422d8fe85fbd0c31522babd435c30613e7ae7deecd0
|
|
| MD5 |
27006451eb70be81498163f8de9ab874
|
|
| BLAKE2b-256 |
2dfbc795468788575baceae561bb3a6cff6bd18506da7727ae3917e8c8a3679b
|
Provenance
The following attestation bundles were made for vibe_engineer-0.2.0.tar.gz:
Publisher:
publish.yml on netguy204/vibe-engineer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibe_engineer-0.2.0.tar.gz -
Subject digest:
31b012fa9690ccd1b5299422d8fe85fbd0c31522babd435c30613e7ae7deecd0 - Sigstore transparency entry: 1392516260
- Sigstore integration time:
-
Permalink:
netguy204/vibe-engineer@19f0f7cbf4b86564edb75041ad5620043c787df7 -
Branch / Tag:
refs/tags/releases/v0.2.0 - Owner: https://github.com/netguy204
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19f0f7cbf4b86564edb75041ad5620043c787df7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file vibe_engineer-0.2.0-py3-none-any.whl.
File metadata
- Download URL: vibe_engineer-0.2.0-py3-none-any.whl
- Upload date:
- Size: 579.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c54fc087fa23ea8c0beb294002095eb1838029eed439e536a8b3ae541ff90d9
|
|
| MD5 |
1e4fbfa54fc6a3a19f65156408cad6af
|
|
| BLAKE2b-256 |
41167263bd87938a3e22a431429c9079c246b595ba39080713aa6217088b67df
|
Provenance
The following attestation bundles were made for vibe_engineer-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on netguy204/vibe-engineer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibe_engineer-0.2.0-py3-none-any.whl -
Subject digest:
7c54fc087fa23ea8c0beb294002095eb1838029eed439e536a8b3ae541ff90d9 - Sigstore transparency entry: 1392516290
- Sigstore integration time:
-
Permalink:
netguy204/vibe-engineer@19f0f7cbf4b86564edb75041ad5620043c787df7 -
Branch / Tag:
refs/tags/releases/v0.2.0 - Owner: https://github.com/netguy204
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19f0f7cbf4b86564edb75041ad5620043c787df7 -
Trigger Event:
push
-
Statement type: