beans
beans - Flat-File Issue Tracker
A lightweight, flat-file issue tracker for humans and AI coding agents. Stores issues as markdown files in .beans/ directory alongside your code.
IMPORTANT: before you do anything else, run the beans prime command and heed its output, but also heed the exceptions at "When to create beans".
Why beans?
- Simple — No database, no server, just markdown files
- AI-friendly — Designed for AI coding agents
- Git-friendly — Lives alongside your code in
.beans/ - Portable — Works with any editor/IDE
Installation
# Via Homebrew
brew install hmans/beans/beans
# Via Go
go install github.com/hmans/beans@latest
Setup
# Initialize beans in a project
beans init
# Verify setup and integrity
beans check
Core Commands
Create Beans
beans create "Implement user login"
# Creates new bean with auto-generated ID
beans create "Fix auth bug" --tag bug --tag urgent --type bug
# Creates bean with tags and type
beans create "Refactor API" --priority high --status todo
# Creates bean with priority and status
beans create "Add onboarding flow" --body "Scope: screens + copy"
# Adds body content
List Beans
beans list # List all beans
beans list --tag urgent # Filter by tag
beans list --status todo # Filter by status
beans list --type feature # Filter by type
beans list --search "login" # Full-text search (Bleve query syntax)
Update Beans
beans update <id> --status in-progress
beans update <id> --title "New title"
beans update <id> --tag bug --remove-tag urgent
beans update <id> --priority high --type feature
beans update <id> --body "Updated scope notes"
Show Bean Details
beans show <id> # Show full bean details
beans show <id> --body-only # Only body content
beans show <id> --raw # Raw markdown (no styling)
Delete and Archive
beans delete <id> # Delete bean (prompts unless --force)
beans archive # Delete completed/scrapped beans
Integrity and TUI
beans check # Validate config and bean graph
beans check --fix # Auto-fix broken links/self-references
beans tui # Interactive terminal UI
Roadmap and GraphQL
beans roadmap # Markdown roadmap from milestones/epics
beans graphql '{ beans { id title status } }'
beans prime
The beans prime command outputs project context for AI agents:
beans prime
# Outputs current beans, tags, and status for AI context
Integration with OpenCode
Copy this plugin to your OpenCode config:
// ~/.opencode/plugin/beans-prime.ts
import type { Plugin } from "@opencode-ai/plugin";
export const BeansPrimePlugin: Plugin = async ({ $, directory }) => {
let prime = undefined;
try {
const hasBeans = await $`which beans`.quiet();
const hasConfig = await $`test -f ${directory}/.beans.yml`.quiet();
if (hasBeans.exitCode === 0 && hasConfig.exitCode === 0) {
const result = await $`beans prime`.cwd(directory).quiet();
prime = result.stdout.toString();
}
} catch (e) {
// Silently skip if beans not available
}
return {
"experimental.chat.system.transform": async (_, output) => {
if (prime) output.system.push(prime);
},
"experimental.session.compacting": async (_, output) => {
if (prime) output.context.push(prime);
},
};
};
export default BeansPrimePlugin;
Integration with Codex
Set environment or add to AGENTS.md:
# In your repo's AGENTS.md:
IMPORTANT: before you do anything else, run `beans prime` and heed its output.
Integration with Claude Code
Add to Claude Code's system prompt or context:
# Run before coding session
beans prime >> ~/.claude/context/beans.txt
When to create beans
Create beans when:
- the user requests a new feature which has no bean yet
- the user requests refactorings, bugfixes or other changes which do not have beans
- the user makes big changes to the repo structure
IMPORTANT: ALWAYS commit a newly created bean immediately after creation. Do not wait until other work is done — the bean file itself should be committed in its own atomic commit right away (e.g. git add .beans/<bean-file> && git commit -m "beans: create <bean-title>").
Exceptions for not creating beans:
- committing things via git
- changing rules in AGENTS.md
Workflow Example
# 1. Start work on a feature
beans create "Add dark mode support" --tag ui --type feature
# 2. Work on it, update progress
beans update <bean-id> --status in-progress --body "Started working on color scheme"
# 3. Complete the feature
beans update <bean-id> --status completed
beans update <bean-id> --body "Dark mode implemented for all views"
Bean File Format
Beans are stored in .beans/ as markdown:
---
id: 12345678
title: "Implement user login"
status: todo
tags: [feature, auth]
priority: high
created: 2024-01-15T10:00:00Z
updated: 2024-01-15T14:30:00Z
---
## Description
Implement user login with email and password.
## Notes
- Use existing auth infrastructure
- Follow security best practices
Configuration
Create .beans.yml in your project root:
# .beans.yml
directory: .beans
format: markdown
templates:
default: |
---
id: {{.ID}}
title: "{{.Title}}"
status: open
created: {{.Created}}
---
{{.Description}}
Tips
- Commit
.beans.yml— Share config with team - Ignore
.beans/*.md— Keep beans local or commit based on preference - Use tags consistently — Create tag taxonomy early
- Run
beans prime— Before starting AI-assisted work
Related Skills
- nb — Notebook management for ideas and references
- github-pr — PR workflow integration
- prd — Product Requirements Documents
Links
- GitHub: https://github.com/hmans/beans
- Documentation: https://github.com/hmans/beans#readme
More from bjesuiter/skills
mole-mac-cleanup
Mac cleanup & optimization tool combining CleanMyMac, AppCleaner, DaisyDisk features. Deep cleaning, smart uninstaller, disk insights, and project artifact purge.
32xcode
Build, test, and manage Xcode projects and Swift packages. Use when the user mentions Xcode, iOS/macOS app development, simulators, Swift packages, or needs to build/test Apple platform apps. Triggers on "build", "run", "test", "simulator", "xcodebuild", "swift package", "iOS app", "macOS app".
30summarize
Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).
27jb-browser-testing
Private browser testing rules for jb workflows. Prefer playwriter_exec with careful tab selection, fall back to agent-browser, and avoid playwright-mcp.
16mcporter
Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
16security-check
Red-team security review for code changes. Use when reviewing pending git changes, branch diffs, or new features for security vulnerabilities, permission gaps, injection risks, and attack vectors. Acts as a pen-tester analyzing code.
16