Skip to content

feat: community conductor (the Voice) — listen + respond to user issues #119

Description

@Jammy2211

Overview

Birth the community conductor — "the Voice" — the PyAutoBrain agent that listens to and communicates with external users and the community. Today a user-filed GitHub issue is handled ad-hoc (paste the link into an agent chat). This task formalises the loop: discover issues raised by non-Jammy humans across all repos, assess each issue's context sufficiency, draft every outward reply for human approval, route actionable work into the existing dev workflow, and keep reporters updated. It also gives /wake_up a community sensory leg so the day starts with "who is waiting on us?".

Plan

  • Create agents/conductors/community/ in PyAutoBrain, following the hygiene conductor birth template (feat(hygiene): hygiene conductor — phase 1 scaffold + boundaries (#87) #88). The AGENTS.md first line carries the organism analogy: "the Voice — the organism's language faculty (Broca + Wernicke): it hears the community and speaks back."
  • Deterministic CLI modes: scan (gh sweep of every repos.yaml repo for open issues/comments from non-Jammy humans awaiting a response, ranked, --json) and triage <issue-ref> (one issue → CommunityDecision: context sufficient? work-type? route or clarify). Default = scan worklist. triage may ship v1-lite (staged, like hygiene's phase-1 modes).
  • The conversation layer is the /community skill body (judgment tier): read the issue, assess context, draft the full reply or clarifying question — every outward message is presented to the human before posting. Actionable work routes into the existing /start_dev_for_user (which already owns receipt/plan/milestone comments and the clarification gate).
  • No new state: conversation state lives on GitHub (labels, e.g. needs-info) plus the existing user-facing: true entries in PyAutoMind/active.md.
  • /wake_up sensory leg: new step in the gh-API "Everywhere" section running pyauto-brain community scan, plus a 💬 Community digest category — mobile-safe, listed for the human, never auto-replied.
  • Register the verb everywhere the hygiene birth did: bin/pyauto-brain dispatch/usage/CONDUCTOR_ORDER, skills/community/{SKILL.md,community.md}, skills/COMMANDS.md, PyAutoBrain AGENTS.md tables; scaffold tests; bin/install.sh.
Detailed implementation plan

Affected Repositories

  • PyAutoBrain (primary, only)

Branch Survey

Repository Current Branch Dirty?
./PyAutoBrain main 1 modified (agents/conductors/intake/_intake.py, other session)

Suggested branch: feature/community-voice-agent
Worktree root: ~/Code/PyAutoLabs-wt/community-voice-agent/
Blocked by: workspace-agent (PyAutoBrain#116) — claims PyAutoBrain and touches the same registration files (bin/pyauto-brain, AGENTS.md, skills/COMMANDS.md). Start after it ships.

Implementation Steps

  1. agents/conductors/community/AGENTS.md — opens with the Tier: conductor blockquote whose first line is the analogy: "the Voice — the organism's language faculty (Broca + Wernicke): it hears the community and speaks back." Sections mirroring hygiene: Modes table (scan / triage / default), Fundamental principles (draft-for-approval — the conductor never posts to GitHub; GitHub + active.md are the state, the conductor owns none; stdlib/bash only), Boundaries (vs intake — community converses with an external reporter and routes; intake files prompts from the developer's raw ideas; vs start_dev_for_user — community is discovery + conversation + routing, start_dev_for_user is the dev entry it delegates to; vs wake_up — wake_up composes the scan, owns nothing here; vs health/hygiene — no verdicts, no upkeep), Capability audit (gh search/issues API, issue labels, start_dev_for_user, update_issue).
  2. agents/conductors/community/community.sh + _community.py (stdlib-only) — scan: enumerate repos from PyAutoMind/repos.yaml (org PyAutoLabs + the three Jammy2211-owned), gh api search/issues for open issues where the author is not Jammy2211/bots, plus open issues whose last comment is not ours (awaiting-response detection); rank by age/waiting-time; emit CommunityDecision with --json. triage <ref>: fetch one issue, surface title/body/author/labels/comment-tail + a context-sufficiency checklist for the skill layer; v1-lite acceptable (deterministic surface, judgment stays in the session).
  3. bin/pyauto-brain — dispatch map entry, one-line description, usage block, CONDUCTOR_ORDER.
  4. skills/community/{SKILL.md,community.md} — the /community door. Flow: scan → pick issue → triage surface → session assesses context → EITHER draft clarifying question (present to human → post → needs-info label) OR draft receipt+route into /start_dev_for_user → ongoing updates via /update_issue cadence (~5 milestones bugs, 4 features). Every comment body presented for review before posting.
  5. skills/COMMANDS.md/community veneer row (tier-1 conductor table).
  6. PyAutoBrain/AGENTS.md — Conductors section entry + command-surface table row.
  7. skills/wake_up/wake_up.md — new step in "Everywhere (gh-API)" section: Communitybin/pyauto-brain community scan; digest gains 💬 Community category ("N users waiting on a response, oldest X days"). Update the digest card list.
  8. Tests — scaffold tests mirroring the hygiene conductor's (decision emission, --json shape, repos.yaml enumeration, author filtering with fixture JSON; no live gh calls).
  9. bin/install.sh — run to install the /community command; verify the symlink lands.

Key Files

Original Prompt

Click to expand starting prompt

PyAutoMind prompt: draft/feature/pyautobrain/community_communication_agent_listen_and_respond.md (moves to active/ on issue creation)

I need to think about how I communicate with users and people who put up github issues with requests for new features,
bugs, etc.

Currently, I would just put the GitHub link into a agent chat and go from there but we can formalism this.

First, the wake up skill should give a summary of whether other users (e.g. not me) have raised issues across
any repos so I can then rspond to them.

Do we need a dedicated brain agent for listening to and communicating with users and the community? I dont see why not,
I'm not exactly gonna go to GitHub adn do this myself. I think the agent would be incharge of routing the task,
finding the right brain agent to implement it, and giving the poster updates on whats going on. The point is this
agent knows its communicating with someone else and thus in a conversation, and should really read their github
issue and assess if what theyve provided is enough context or if it should ask for more. so it should pretty much
draft the whole response, assess the issue itself and only real on me to guide it.

This agent could be called ears? listed? but it also talks to the user, so communicate? Think about the brain
conductor organ analogy.

Intake review decisions (2026-07-16): name /community alias "the Voice" (description first line carries the analogy); one prompt, two legs (wake_up summary + conductor); autonomy human-required — outward messages are drafts gated on the human; anchors on start_dev_for_user, /wake_up, the user-facing-issue update cadence; difficulty medium.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions