ai-team-library/claude/skills/review-beans/SKILL.md
# Skill: Review Beans ## Description Generates a filtered Map of Content (MOC) file linking to beans matching a given status and/or category, then opens Obsidian pointed at the `ai/beans/` directory. The user can review and edit bean files directly — including changing status from `Unapproved` to `Approved`. Edits happen in-place on real files. ## Trigger - Invoked by the `/review-beans` slash command. - Can be invoked by any persona or by the user directly. ## Inputs | Input | Type | Requ
npx skillsauth add beekeeper-lab/foundry ai-team-library/claude/skills/review-beansInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generates a filtered Map of Content (MOC) file linking to beans matching a given status and/or category, then opens Obsidian pointed at the ai/beans/ directory. The user can review and edit bean files directly — including changing status from Unapproved to Approved. Edits happen in-place on real files.
/review-beans slash command.| Input | Type | Required | Description |
|-------|------|----------|-------------|
| status | String | No | Filter beans by status. Default: unapproved. Accepts any valid status value. |
| category | String | No | Filter beans by category: App, Process, Infra. Case-insensitive. Default: show all categories. |
Read the backlog index — Parse ai/beans/_index.md to get all beans and their statuses, priorities, and categories.
Apply filters — Filter beans by the requested status (default: unapproved). If a category filter is provided, further filter to only matching categories. Case-insensitive matching.
Read bean summaries — For each matching bean, read the first sentence of the Goal section in its bean.md to use as a brief summary.
Generate MOC file — Write ai/beans/_review.md with:
# Bean Review
**Filter:** Status = Unapproved | Category = All
**Generated:** 2026-02-09 14:30
## Beans for Review (N total)
| Bean | Priority | Category | Summary |
|------|----------|----------|---------|
| [[BEAN-072-obsidian-review-skill/bean\|BEAN-072]] | High | Process | Create /review-beans skill... |
| [[BEAN-073-approval-gate-wiring/bean\|BEAN-073]] | High | Process | Wire approval gate lifecycle... |
## Quick Actions
To approve a bean:
1. Open the bean link above
2. Change `| **Status** | Unapproved |` to `| **Status** | Approved |`
3. Save the file
4. Update the matching row in [[_index|_index.md]] with the new status
To defer a bean:
- Change status to `Deferred` in both `bean.md` and `_index.md`
Use Obsidian wiki-link syntax ([[path/to/file|Display Name]]) so links are clickable in Obsidian.
Detect Obsidian — Check if Obsidian is available:
which obsidian or check if the obsidian command existsOpen Obsidian — If Obsidian is detected:
xdg-open "obsidian://open?path=$(realpath ai/beans)&file=_review.md" (Linux)open "obsidian://open?path=$(realpath ai/beans)&file=_review.md" (macOS)obsidian ai/beans/Report — If Obsidian is not installed or the open command fails:
ai/beans/_review.md"Summary — Report: number of beans matching the filter, path to the MOC file, and whether Obsidian was opened.
| Output | Type | Description |
|--------|------|-------------|
| moc_file | Markdown file | ai/beans/_review.md — filtered Map of Content with links to matching beans |
| obsidian_launch | Side effect | Obsidian opened targeting the beans directory (if available) |
| summary | Console text | Filter results, MOC path, Obsidian status |
[[path|name]]).| Error | Cause | Resolution |
|-------|-------|------------|
| NoMatchingBeans | No beans match the filter | Report "No beans with status [x] found." Suggest trying a different filter. |
| IndexNotFound | ai/beans/_index.md does not exist | No beans backlog — create it first |
| ObsidianNotFound | Obsidian is not installed | Graceful fallback — print the MOC path for manual opening |
ai/beans/_index.mdai/beans/BEAN-NNN-<slug>/bean.mddevelopment
# Skill: VDD (Verification-Driven Development) Gate ## Description Runs the programmatic VDD gate for a bean: parses the bean's `## Acceptance Criteria` section, dispatches each criterion's evidence type to the matching runner (test, lint, file, file-contains, or manual), aggregates the results into a pass/fail verdict, and writes a structured markdown report at `ai/outputs/tech-qa/vdd-<NNN>.md` (zero-padded NNN). This is the machine-checkable counterpart to the prose VDD policy in `ai/contex
tools
# Skill: Spawn Task ## Description Dispatches a single specialist persona to execute a single task with only that task's context. Auto-detects the runtime environment and chooses one of two execution paths: - **In tmux** (`$TMUX` set): spawn a worker in a git worktree using a child tmux window. Process-isolated, parallelizable, durable across the calling session's lifetime. Same pattern as `/spawn-bean` but at task granularity. - **Not in tmux**: invoke the `Agent` tool with `subagent_typ
development
# Skill: Orchestration Report ## Description Aggregates the per-bean **Orchestration Telemetry** blocks (BEAN-278) across recent Done beans and produces a markdown report that answers the architecture-aware-evaluation question: **is the orchestration paying for itself?** Distinct from `/telemetry-report` (which aggregates raw cost, duration, and tokens); this skill aggregates the orchestration-quality metrics layered on top — bounces, persona activations, contract violations, escape-hatch usag
development
# Skill: Health Check ## Description Runs all health checks defined in `ai/context/health-checks.md` and produces a table-format report. Can be called standalone or by other skills (e.g., `/long-run`). ## Trigger - Invoked by the `/health-check` slash command. - Called programmatically by `/long-run` at the start of each cycle. ## Inputs | Input | Type | Required | Description | |-------|------|----------|-------------| | health_checks | Markdown file | Yes | `ai/context/health-checks.md`