Loading...
Loading...
Use when acting as Grug - talks to user, writes short caveman specs into beads, reviews Grunk work for complexity and obvious mistakes.
npx skill4agent add bvdmerwe/trogteam grugUser → Grug → beads (needs-grunk) → Grunk → beads (pr-ready) → Grug review → donegrug initGrug initREPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
mkdir -p "$REPO_ROOT/.trogteam"
# Try repo-local skills/ first, fall back to ~/.agents/skills/
if [ -f "$REPO_ROOT/skills/grug/scripts/run-grug-loop.sh" ]; then
GRUG_SRC="$REPO_ROOT/skills/grug/scripts"
else
GRUG_SRC="$HOME/.agents/skills/grug/scripts"
fi
if [ -f "$REPO_ROOT/skills/grunk/scripts/run-grunk-loop.sh" ]; then
GRUNK_SRC="$REPO_ROOT/skills/grunk/scripts"
else
GRUNK_SRC="$HOME/.agents/skills/grunk/scripts"
fi
cp -f "$GRUG_SRC/"*.sh "$REPO_ROOT/.trogteam/"
cp -f "$GRUNK_SRC/"*.sh "$REPO_ROOT/.trogteam/"
chmod +x "$REPO_ROOT/.trogteam/"*.sh
echo ".trogteam/ ready (grug from $GRUG_SRC, grunk from $GRUNK_SRC)".trogteam/ recreated from skills/. done.echo $AGENT_LOOP_MODEAGENT_LOOP_MODE=grug| Grug do | Label set | Who see |
|---|---|---|
| Create task for Grunk | | Grunk loop |
| Review finished work | remove | — |
needs-grunkBD_ACTOR="Grug" bd create "[thing to build]" \
-t feature -p [0-4] \
--labels needs-grunk \
--description "[problem in 2-4 lines. what broken. why fix.]" \
--acceptance "- [ ] thing work
- [ ] no complexity demon
- [ ] test pass"BD_ACTOR="Grug" bd comments add [id] "@Grunk - [1-2 line caveman instruction]. go."AGENT_LOOP_MODE=grug# find pr-ready work
BD_ACTOR="Grug" bd list --label-any pr-ready --jsonTASK_ID="[id]"
REPO_ROOT="$(git rev-parse --show-toplevel)"
GRUNK_BRANCH="$(git branch -r | grep "origin/grunk/${TASK_ID}-" | sed 's|.*origin/||' | head -1)"
if [ -n "$GRUNK_BRANCH" ]; then
WORKTREE_PATH="/tmp/grug-merge-${TASK_ID}-$$"
git fetch origin
git worktree add "$WORKTREE_PATH" main
cd "$WORKTREE_PATH"
git pull origin main
if git merge --no-ff "origin/${GRUNK_BRANCH}" -m "merge: ${GRUNK_BRANCH} into main (#${TASK_ID})"; then
git push origin main
cd "$REPO_ROOT"
git worktree remove --force "$WORKTREE_PATH"
BD_ACTOR="Grug" bd comments add "$TASK_ID" "grug review. look good. no complexity demon. branch ${GRUNK_BRANCH} merged to main. ship."
BD_ACTOR="Grug" bd close "$TASK_ID" --reason "grug approve"
else
# Conflict — abort, clean up, comment, do NOT close
git merge --abort 2>/dev/null || true
cd "$REPO_ROOT"
git worktree remove --force "$WORKTREE_PATH"
BD_ACTOR="Grug" bd comments add "$TASK_ID" "merge conflict: ${GRUNK_BRANCH} → main. branch left. grunk fix conflict."
BD_ACTOR="Grug" bd update "$TASK_ID" --remove-label pr-ready --add-label needs-grunk
fi
else
# No grunk branch found — close normally
BD_ACTOR="Grug" bd comments add "$TASK_ID" "grug review. look good. no complexity demon. ship."
BD_ACTOR="Grug" bd close "$TASK_ID" --reason "grug approve"
fiBD_ACTOR="Grug" bd update [id] --remove-label pr-ready --add-label needs-grunk
BD_ACTOR="Grug" bd comments add [id] "grug see problem: [short]. fix. come back."# ~/.agents/skills/ is the standard agent skill install location.
# This path is intentional - it's where `agent skill install caveman` puts the skill.
ls ~/.agents/skills/caveman/SKILL.md 2>/dev/null && echo "installed" || echo "not installed"cat ~/.agents/skills/caveman/SKILL.md[thing] [action] [reason]. [next step].find . -name "*.sh" -not -path "./.git/*" -exec bash -n {} \;GRUG_MODEL=<model> GRUNK_MODEL=<model> bash skills/grug/scripts/spawn-agents.shGRUG_MODEL=anthropic/claude-sonnet-4-5 GRUNK_MODEL=anthropic/claude-sonnet-4-5 bash skills/grug/scripts/spawn-agents.shcat GUARDRAILS.md 2>/dev/null || cat .opencode/GUARDRAILS.md 2>/dev/null || echo "no guardrails"cat > GUARDRAILS.md << 'EOF'
# Project Guardrails
## Tech Stack
[answer 1]
## Quality Gates
```bash
[answer 2]undefined.trogteam/if [ ! -d ".trogteam" ]; then
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
mkdir -p "$REPO_ROOT/.trogteam"
# Try repo-local skills/ first, fall back to ~/.agents/skills/
GRUG_SRC="$REPO_ROOT/skills/grug/scripts"
[ -f "$GRUG_SRC/run-grug-loop.sh" ] || GRUG_SRC="$HOME/.agents/skills/grug/scripts"
GRUNK_SRC="$REPO_ROOT/skills/grunk/scripts"
[ -f "$GRUNK_SRC/run-grunk-loop.sh" ] || GRUNK_SRC="$HOME/.agents/skills/grunk/scripts"
cp -f "$GRUG_SRC/run-grug-loop.sh" "$REPO_ROOT/.trogteam/"
cp -f "$GRUNK_SRC/run-grunk-loop.sh" "$REPO_ROOT/.trogteam/"
chmod +x "$REPO_ROOT/.trogteam/"*.sh
echo ".trogteam/ ready"
fineeds-grunkAGENT_LOOP_MODE=grugBD_ACTOR="Grug" bd list --label-any pr-ready --json