KEEL Protocol · Claude Code Plugin

The Project Manager
That Ships Work,
Not Status Updates

A Claude Code plugin that gives any project persistent, cross-session project management. Start every session with claude @proma and Claude works as your project manager for the entire session.

claude — proma
# Every session — one command to activate your PM $ claude @proma ✓ ProMa loaded — resuming WidgetAPI Current state: EPIC-02 API Endpoints in-progress TASK-007 Rate-limit middleware next up IN-003 Auth strategy choice awaiting you # First time? Run these once, then it's @proma forever: 1. /proma:init "MyProject" "one-line description" 2. Answer IN-001 in proma/INBOX.md 3. /proma:boot 4. claude @proma ← every session after this

Features

Everything a PM does.
Running inside your editor.

ProMa handles the operational overhead so you can focus on building. Each session starts exactly where the last one ended.

🗺️

Epic Tracking

Define milestones with verifiable exit criteria. Track progress across sessions. Close with human sign-off — no milestone goes dark.

Two-Queue Task System

Agent queue (TASK) for autonomous work. Human queue (IN) for decisions. Nobody idles — the right item goes to the right actor.

📋

Decision Records

Every non-trivial choice becomes an ADR. No more "why did we do this?" three weeks later. History is always one grep away.

🔄

Daily Sweep

Automatic archival, staleness detection, self-healing. Your project state stays clean and consistent without any manual maintenance.

🔌

CLAUDE.md Injection

Boot once, PM forever. ProMa injects its protocol into your project's constitution so every new session inherits the full context.

📄

Pure Markdown

No databases. No external services. Git-friendly files you can read, diff, version, and understand without any tooling dependency.

One Command Activation — claude @proma

After the one-time setup, every future session starts with a single command: claude @proma. Claude instantly loads your full project context — epics, tasks, decisions, blockers — and picks up exactly where you left off. No boot sequence. No re-explaining. Just open your terminal and get back to work.

How It Works

Set up once.
Then just claude @proma.

No config files. No external accounts. No infra to provision. Do the first-time setup once — every session after is a single command.

1

Install the Plugin (one time)

Clone the repo, then point Claude Code at the plugin directory. That's the entire install. After this, you'll never need to think about setup again.

bash
# Clone ProMa git clone https://github.com/dpraj007/proma.git # Start Claude Code with the plugin loaded claude --plugin-dir ./proma
2

Initialize Your Project

Run /proma:init with your project name and a one-line description. ProMa creates the full proma/ directory, seeds your first epic, first task, and first inbox item.

command
/proma:init "MyProject" "Build a production-ready API"
3

Answer the First Question

ProMa always starts by grounding itself. Open proma/INBOX.md and fill in IN-001. This seeds all future work.

markdown
#### Answer We're building a REST API for widget CRUD operations. Goals: MVP in 2 weeks, full test coverage, deploy to AWS. First milestone: basic CRUD endpoints with validation.
4

Boot the PM

Reads your answer, injects the PM protocol into CLAUDE.md, picks the first task, and starts managing. Every future session loads this context automatically.

command
/proma:boot
5

Work With the PM

A focused command set for every PM action. Nothing you don't need — no sprawl.

commands
Command What it does
/proma:task createAdd a new task to the backlog
/proma:epic createDefine a new milestone with exit criteria
/proma:inbox listSee pending human decisions
/proma:adr createDocument an architectural decision
/proma:tickRun the daily sweep — archive, lint, heal
/proma:statusSee the full project dashboard
6

Every Session After: claude @proma

That's it. One command loads ProMa, reads your project state, checks for stale inbox items, picks the next task, and starts managing. No boot sequence. No re-explaining. ProMa remembers everything — sessions, decisions, blockers — so you don't have to.

every session
claude @proma

Real-World Example

See it in action.
No jargon required.

Here's how a small team uses ProMa to build an app from scratch — from the very first idea to a shipped product.

🧁

Meet Sarah — she runs a bakery

Sarah wants to build an online ordering system for her bakery. She's using Claude Code with ProMa to manage the project. She is not a developer — she just tells the AI what she needs.

Day 1
Monday AM

Sarah runs /proma:init "BakeryApp" "Online ordering for my bakery"

ProMa creates a project folder and immediately asks her the first question: "What are your goals? What does the first milestone look like?"

IN-001 filed → waiting for Sarah's answer
 
Monday PM

Sarah answers the question

She opens the inbox file and types: "I want customers to see my menu, pick items, choose a pickup time, and pay. First milestone: just show the menu with prices. No payment yet."

She runs /proma:boot. ProMa reads her answer, creates EPIC-02 — Menu Display with three exit criteria, breaks it into five tasks, and picks the first one to start working on.

TASK-002 through TASK-006 created
Day 2
Tuesday

ProMa hits a decision point

While building the menu page, ProMa realizes there are two ways to organize menu items: by category (Cakes, Cookies, Bread) or by popularity. Instead of guessing, it files an inbox item asking Sarah.

IN-002 filed → "How should the menu be organized?"

ProMa doesn't wait around — it picks the next unblocked task and keeps working on other parts while Sarah thinks.

Day 3
Wednesday

Daily tick runs automatically

When Sarah opens Claude Code, the daily sweep runs. It reports: 3 tasks done, 1 task blocked (waiting on her menu layout decision), IN-002 is now yellow (unanswered for 2 days). Sarah answers it: "By category please!"

ProMa unblocks the task, documents the choice as ADR-001 — Menu organized by category, and keeps going.

ADR-001 created
Day 5
Friday

First milestone complete!

All exit criteria for EPIC-02 are met. ProMa files a sign-off request: "Menu display is done — shows all items with photos, prices, and categories. Ready for your review."

Sarah reviews, approves, and ProMa automatically archives the completed tasks and advances to EPIC-03 — Shopping Cart & Checkout.

EPIC-02 closed → EPIC-03 activated
Day 5
Dashboard

Sarah checks /proma:status

The dashboard shows: 1 epic complete, 1 in progress, 6 tasks done, 1 decision recorded, 0 stale inbox items. The project is on track — and everything is documented in plain text files she can read anytime.

💡 What Sarah never had to do

  • Write a project plan — ProMa created the roadmap, tasks, and timeline from her one-sentence description
  • Remember where things left off — every session resumes exactly where the last one stopped
  • Chase down decisions — unanswered questions automatically escalate with yellow/red flags
  • Organize files — state, tasks, decisions, and archives are managed by ProMa, not by Sarah
  • Learn any tool — she just answered questions in plain English and approved milestones

Architecture

Simple by design.
Powerful at scale.

The KEEL protocol uses a flat directory of markdown files. No moving parts. No sync conflicts. No lock-in.

State Directory

your-project/ └── proma/ ├── STATE.md ← Live session cache ├── ROADMAP.md ← EPIC-NN entries ├── BACKLOG.md ← TASK-NNN queue ├── INBOX.md ← IN-NNN human decisions ├── decisions/ ← ADR-NNN records ├── archive/ ← Daily sweep storage ├── TODO.md ← Rendered task view └── PROGRESS.md ← Rendered progress view

ID Scheme

Prefix Meaning Example
EPIC-NN Milestone EPIC-01 — MVP Launch
TASK-NNN Agent work item TASK-003 — Validation
IN-NNN Human inbox IN-002 — API schema
ADR-NNN Decision record ADR-001 — REST vs gql

Behavioral Rules

Six rules.
No exceptions.

ProMa enforces a strict operating contract. These rules prevent the most common ways agentic project management goes wrong.

1

No task without scope

Every TASK must belong to an open EPIC. No orphaned work items, no scope creep disguised as "misc" tasks.

2

Force ADRs on ambiguity

When a non-trivial choice arises, open an ADR before proceeding. Decisions are documented, not assumed.

3

Cut scope, don't push harder

When a milestone is at risk, reduce scope and document the cut. Never silently extend timelines or hide blockers.

4

Escalate stale inbox items

Human decisions age: yellow at 3 days, red at 7. Unresolved blockers surface visibly — they can't be buried.

5

Sync views atomically

TODO.md and PROGRESS.md are always re-rendered together. No stale views — what you read is always current.

6

Batch human asks

Multiple questions are consolidated into a single inbox item. No interruption storm — decisions arrive in batches.

Get Started

Ready to ship?

Install once, then start every session with claude @proma. Your PM loads instantly — no re-explaining, no lost context, no dropped balls.

Start every session with

$ claude @proma

Loads your entire project context in seconds

bash — one-time setup
# 1. Clone ProMa git clone https://github.com/dpraj007/proma.git # 2. Start with the plugin and initialize your project claude --plugin-dir ./proma # → /proma:init "MyProject" "description" # → answer IN-001 in proma/INBOX.md # → /proma:boot # Every session after — just this: claude @proma