Skip to main content

M13: Skills Distribution

2026-02-22T08:31:19Z by Showboat 0.6.0

Act 1: Verify SKILL.md has proper YAML frontmatter for OpenClaw skill discovery.

head -14 agents/shared/skills/beads/SKILL.md
---
name: beads
description: Distributed task coordination via the bd CLI
metadata:
openclaw:
emoji: "\U0001F4FF"
requires:
bins:
- bd
env:
- BEADS_DIR
primaryEnv: BEADS_DIR
---
# Beads Skill — bd CLI Quick Reference

Act 2: Verify TOOLS.md files are role-specific (no boilerplate).

echo '=== dev/TOOLS.md ===' && cat agents/dev/TOOLS.md && echo && echo '=== eng-mgr/TOOLS.md ===' && cat agents/eng-mgr/TOOLS.md
=== dev/TOOLS.md ===
# Developer Agent -- Local Setup

## Beads Environment
- BEADS_DIR is set via .envrc (do not hardcode)
- BD_ACTOR is provided in the wake-up message

## Repositories
- Base path: /home/openclaw/b4arena/repos/
- test-calculator: repos/test-calculator
- test-greeter: repos/test-greeter

## Git
- Authentication is pre-configured (GitHub App)
- Branch prefix: fix/, feat/, chore/ (see SOUL.md)

=== eng-mgr/TOOLS.md ===
# Engineering Manager Agent -- Local Setup

## Beads Environment
- BEADS_DIR is set via .envrc (do not hardcode)
- BD_ACTOR is provided in the wake-up message

## Delegation Targets
- dev label -> b4-dev agent (code implementation)
- dev-frontend, dev-backend -> also b4-dev (compound routing)

## Priorities
- P0: critical (production down)
- P1: high (blocking other work)
- P2: medium (normal feature work)
- P3: low (nice-to-have, cleanup)

Act 3: Verify close-bead.sh exists and is executable.

ls -la agents/shared/skills/beads/close-bead.sh && head -12 agents/shared/skills/beads/close-bead.sh
-rwxr-xr-x  1 mhild  staff  3069 Feb 22 09:17 agents/shared/skills/beads/close-bead.sh
#!/usr/bin/env bash
# close-bead.sh -- Close a bead and its linked GitHub issue (if any)
#
# Usage: close-bead.sh <bead-id> <reason> [--repo <owner/repo>]
#
# Extracts GH#<number> from bead title. If found, closes the GitHub issue
# with a comment. Repo can be auto-detected from bead description or
# provided via --repo flag.
#
# Environment:
# BEADS_DIR -- path to beads database (required)
# BD_ACTOR -- actor identity for audit trail (required)

Act 4: Verify deploy-agents.sh has no symlink hack and mutagen.yml syncs skills.

echo '--- deploy-agents.sh symlink check ---' && grep -c 'ln -sfn' scripts/deploy-agents.sh || echo 'No symlinks found (good\!)' && echo && echo '--- mutagen.yml ---' && cat mutagen.yml
--- deploy-agents.sh symlink check ---
0
No symlinks found (good\!)

--- mutagen.yml ---
sync:
agents:
alpha: "agents/"
beta: "openclaw@mimas:/home/openclaw/b4arena/agents/"
mode: "two-way-safe"
ignore:
paths:
- ".git"
- "__pycache__"

Act 5: Run all M13 acceptance tests.

uv run pytest tests/test_m13* -v
============================= test session starts ==============================
platform darwin -- Python 3.12.12, pytest-9.0.2, pluggy-1.6.0 -- /Users/mhild/src/durandom/openclaw/b4arena/.venv/bin/python
cachedir: .pytest_cache
rootdir: /Users/mhild/src/durandom/openclaw/b4arena
configfile: pyproject.toml
collecting ... collected 23 items

tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_skill_file_exists PASSED [ 4%]
tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_has_yaml_frontmatter PASSED [ 8%]
tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_has_name_field PASSED [ 13%]
tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_has_description_field PASSED [ 17%]
tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_requires_bd_binary PASSED [ 21%]
tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_requires_beads_dir_env PASSED [ 26%]
tests/test_m13_skills_distribution.py::TestSkillFrontmatter::test_has_primary_env PASSED [ 30%]
tests/test_m13_skills_distribution.py::TestToolsPerRole::test_dev_tools_mentions_repos PASSED [ 34%]
tests/test_m13_skills_distribution.py::TestToolsPerRole::test_engmgr_tools_mentions_delegation PASSED [ 39%]
tests/test_m13_skills_distribution.py::TestToolsPerRole::test_no_boilerplate[dev] PASSED [ 43%]
tests/test_m13_skills_distribution.py::TestToolsPerRole::test_no_boilerplate[eng-mgr] PASSED [ 47%]
tests/test_m13_skills_distribution.py::TestSkillHelpers::test_close_bead_exists PASSED [ 52%]
tests/test_m13_skills_distribution.py::TestSkillHelpers::test_close_bead_is_executable PASSED [ 56%]
tests/test_m13_skills_distribution.py::TestSkillHelpers::test_close_bead_has_usage PASSED [ 60%]
tests/test_m13_skills_distribution.py::TestSkillHelpers::test_close_bead_has_shebang PASSED [ 65%]
tests/test_m13_skills_distribution.py::TestSkillHelpers::test_close_bead_extracts_gh_number PASSED [ 69%]
tests/test_m13_skills_distribution.py::TestSkillHelpers::test_close_bead_calls_gh_issue_close PASSED [ 73%]
tests/test_m13_skills_distribution.py::TestDeployNoSymlinks::test_no_symlink_command PASSED [ 78%]
tests/test_m13_skills_distribution.py::TestDeployNoSymlinks::test_no_skills_symlink_reference PASSED [ 82%]
tests/test_m13_skills_distribution.py::TestMutagenSyncsSkills::test_skills_not_ignored PASSED [ 86%]
tests/test_m13_skills_distribution.py::TestSkillsDocs::test_docs_file_exists PASSED [ 91%]
tests/test_m13_skills_distribution.py::TestSkillsDocs::test_docs_mentions_extra_dirs PASSED [ 95%]
tests/test_m13_skills_distribution.py::TestSkillsDocs::test_docs_mentions_frontmatter PASSED [100%]

============================== 23 passed in 0.04s ==============================