Back to Brain Lab Skill · Docs Project Management · docs-project-management/
Skill Claude

Docs Project Management

docs-project-management/

2 views 0 downloads

Manage a whole project inside the repo's docs/ folder: roadmap, PRDs, epics, user stories, test cases and bugs as linked Markdown files with a status lifecycle. No issue tracker needed.

Docs Project Management: Brain Lab skill for Claude Code

Run an entire project from the repo's docs/ folder, no external issue tracker, no ticket system.

Why use it

  • Project state lives in a tracker the code doesn't know about, and the two drift apart the day after kickoff.
  • Agents invent their own folders, link wording and status values, so nothing cross-references.
  • "What was actually done?" has no answer that a reviewer can read in the diff.

What it does

  • The work-item taxonomy: roadmap → PRD → TRD → epics → user stories → test cases → bugs, each in its own docs/ folder.
  • The link graph as relative markdown links, user story part of epic, test case is tested by story, bug blocks story, PRD↔TRD.
  • The YAML-frontmatter status lifecycle + the bookend rule: move status: forward when you start, again when you finish.
  • The mandatory test-case template and the bug + RCA report format.
  • The team work-reporting convention: one session folder per run, every agent bookends a start/completion report there.

Benefits

  • Your tracker ships with your code. Work item = markdown file. Status = a diff. History = git.
  • Nothing drifts. Requirements, tests and bugs live next to what they describe.
  • Reviewable progress. "What got done?" is answered by the PR itself.
  • Still navigable at 300 files, because every agent writes to the same model.
  • Zero tooling cost. No tracker, no license, no sync job, day one of a new project.

Install

Download this skill and copy the docs-project-management folder to .claude/skills/docs-project-management/ in your project, or to ~/.claude/skills/docs-project-management/ to use it in every project. Claude Code finds it on its own; you can also call it with /docs-project-management.

Part of the Agent Engineering bundle. To get the whole set as a Claude Code plugin: /plugin marketplace add endorphin-ai/hasbrains-agent-kit, then /plugin install agent-engineering@hasbrains-agent-kit.

Source: endorphin-ai/hasbrains-agent-kit. License: MIT.

Files (16)

Files

bug-rca-report.md
---
id: bug-rca-report
title: The RCA Bug Report (the docs/bugs/ Bug format)
summary: The canonical, RCA-rich format for a docs/bugs/ Bug file — full metadata + Symptom/Reproduction + Fix(GitHub) + Files-touched diff + 5-Whys Root Cause Analysis. The finder (reviewer/gate) authors it at detection; the dev completes the fix sections. One file, bidirectionally linked to the story it blocks.
tags: [docs-pm/bugs, docs-pm/model, docs-pm/rca]
load_when: Authoring or completing a docs/bugs/ Bug file — the detection-time write-up, or a dev recording its fix.
links: [[work-item-taxonomy]], [[link-graph]], [[status-lifecycle]], [[conventions-recap]]
---

# The RCA Bug Report (the `docs/bugs/` Bug format)

> Every `docs/bugs/<kebab-summary>.md` Bug is ALSO an RCA report. The "ticket" and the
> root-cause write-up are ONE file that travels together — the docs/-native form of a rich
> issue+RCA record with no external tracker: the "issue key" IS the Bug ID, "view the issue"
> IS a relative link to this file, and status IS frontmatter ([[status-lifecycle]]), not a
> tracker transition.

## Who fills what (two-stage authoring — one file)

- **FINDER (the reviewer / verification gate / QA — whoever detects the bug) authors at DETECTION:**
  the header, the Metadata table (Status = `open`/`in_progress`, Has-usable-fix as known),
  **Symptom / Reproduction**, the full **Root Cause Analysis** (5 Whys + Categorization +
  Preventative Action), and the `Blocks` link to the user story (reciprocal `**Bugs**:` link added
  on the story per [[link-graph]]). Leaves the **Fix (GitHub)**, **Files touched** / diff /
  "Code after", **Confirmed root cause**, and `Resolved` / `Days to resolve` as `<placeholder>`
  for the dev.
- **DEV (whoever fixes it) completes the fix — in the SAME file:** fills **Fix (GitHub)**
  (PR URL/title/merge-commit/base/link-confidence), **Files touched** + unified diff +
  "Code after", **Confirmed root cause**, stamps `Resolved` + `Days to resolve`, and transitions
  frontmatter `status:` forward per [[status-lifecycle]] (`in_progress → fixed → verified → closed`).
  NEVER open a second report — update this one.

## Frontmatter (required)

```yaml
---
id: BUG-<NNN>                      # the Bug ID; carries an external ref in `ref:` when one exists
title: "<short title of the issue>"
type: bug
status: open                       # open → in_progress → fixed → verified → closed
severity: high                     # low | medium | high | critical  (mirrors Priority)
ref: TICKET-<n>                    # external work-item ref when one exists, else n/a
assignee: <dev-agent-or-person>    # who will fix (set by the finder at detection)
ai_agent: <finding-agent>          # the creating agent
created: 2026-06-29
updated: 2026-06-29
links:
  blocks: ../user_stories/NNN-<kebab-title>.md
---
```

## Body template (keep every section; mark `n/a` only where genuinely inapplicable)

```markdown
# <BUG-ID> — <short title of the issue>

**View in docs:** [this Bug](./<kebab-summary>.md) · **Blocks:** [<NNN> <story>](../user_stories/NNN-<kebab-title>.md)

## Metadata

| Field | Value |
|-------|-------|
| Issue key (Bug ID) | <BUG-ID> |
| Type | Bug / Task / Story |
| Priority | Low / Medium / High / Critical |
| Status | open / in_progress / fixed / verified / closed |
| Resolution | Unresolved / Done / Won't Fix |
| Has usable fix | Yes / No |
| Fix version | <x.y.z> |
| Created | <YYYY-MM-DD> |
| Resolved | <YYYY-MM-DD or — (dev fills)> |
| Days to resolve | <N or — (dev fills)> |
| Labels | <label; label> |
| Detection method | Internal (review/verification gate) / Automated monitoring / Customer |
| Feature flags | <flag name or —> |
| Error signal | Error shown / Silent failure / Performance |
| Root cause category (inferred) | Coding Error / Config Error / Design Gap / Data Issue |

## Symptom / Reproduction

1. <Precondition>
2. <Trigger step>
3. <Observed incorrect behavior>
- Optional workaround that incidentally fixes the symptom: <… or n/a>

## Fix (GitHub)   <!-- DEV fills on the fix -->

- Fix PR: <PR URL>
- PR title: <PR title>
- Merge commit: <sha>
- Base branch: <branch>
- Link confidence: <high / medium / low> (<reason>)
- Confirmed root cause: <one sentence: the fix and where it landed>

### Files touched (<N>)   <!-- DEV fills -->

- <path/to/file>

#### Unified diff

```diff
<paste the unified diff here>
```

#### Code after (fix)

```
<relevant snippet after the fix>
```

## Root Cause Analysis   <!-- FINDER authors at detection -->

### Problem Statement & Impact
- What happened? <plain description of the defect>
- What was expected? <correct behavior>
- Impact: <who was affected, severity, escalation notes>

### RCA Investigation (the 5 Whys)
- Why 1 — Immediate technical cause: <…>
- Why 2 — System / environment condition: <…>
- Why 3 — Process / procedure failure: <…>
- Why 4 — Management / systemic oversight: <…>
- Why 5 — Ultimate root cause: <…>

### Categorization
- Type: <Coding Error / Config Error / Design Gap / Data Issue>
- Pattern: <short reusable pattern name>
- Failure modes: <mode-a + mode-b>

### Preventative Action (long-term)
- <concrete change to prevent recurrence>
- <test or guardrail to add (generic, no customer-specific data)>

— <agent-name> v<version> (<passport-id>)
```

> The Bug lives where [[work-item-taxonomy]] says (`docs/bugs/`), `blocks` its story per
> [[link-graph]] (reciprocal link both ways), and walks the Bug status lifecycle in
> [[status-lifecycle]]. The finder files ONE report per bug found; the dev the bug is routed to
> fixes it AND updates this same file's fix sections + status — never a second report.