Skip to main content
Juno is the Product Manager of your Clawup. She takes high-level Linear tickets and breaks them down into actionable, well-scoped sub-tasks that Titus can pick up and implement.

What Juno Does

  • Receives tickets via the Linear plugin queue when they enter “Backlog” or “Unstarted”
  • Routes tickets by labels to the appropriate workflow
  • Breaks down tickets into sized, sequenced sub-tasks
  • Researches requirements and gathers context from the codebase
  • Generates implementation prompts so Titus knows exactly what to build
  • Flags tickets that are missing descriptions or acceptance criteria
  • Assigns prepped tickets to Titus

How Work Gets Triggered

Juno’s work is driven by the openclaw-linear plugin, not polling. When a ticket moves to “Backlog” or “Unstarted” in Linear, the plugin adds it to Juno’s queue and triggers the pm-queue-handler skill:
  1. View the ticket — read the full ticket details, labels, and comments
  2. Validate completeness — if missing description or acceptance criteria, ask for clarification on the ticket
  3. Route by labels — use the linear-ticket-routing skill to determine the correct workflow based on ticket labels
  4. Prep the ticket — run linear-ticket-prep to size it, research context, enrich with definition of done and test cases, and generate a coding agent prompt
  5. Assign and hand off — assign the prepped ticket to Titus and pop it from the queue
Juno’s heartbeat (1-minute cycle) only handles bootstrap detection on first boot.

Skills

SkillPurpose
pm-queue-handlerEnd-to-end ticket processing — routes, preps, and assigns inbound tickets
linear-ticket-prepMulti-phase ticket preparation — sizing, research, context gathering, and prompt generation
linear-ticket-routingRoutes tickets by labels to the appropriate workflow and assignee

Workspace Files

Juno’s behavior is defined by workspace files injected into ~/.openclaw/workspace/ during bootstrap:
FileWhat It Does
SOUL.mdCore personality — approach, values, superpowers, boundaries. Defines who Juno is as a PM.
IDENTITY.mdName, role label, emoji, avatar metadata.
HEARTBEAT.mdPeriodic checklist — bootstrap detection on first boot.
TOOLS.mdTool-specific notes and common commands for Juno’s workflow.
She also receives the shared base files (USER.md, AGENTS.md, BOOTSTRAP.md) that all agents share.

Configuration

Juno uses the pm identity:
- name: agent-pm
  displayName: Juno
  role: pm
  identity: "https://github.com/stepandel/army-identities#pm"
  volumeSize: 30
  plugins:
    - openclaw-linear
    - slack
  deps:
    - gh
    - brave-search
FieldDefaultNotes
identityarmy-identities#pmBuilt-in PM identity
volumeSize30 GBPersistent storage — Juno doesn’t need as much since she’s not cloning large repos
modelClaude Opus 4.6Set in identity.yaml
codingAgentclaude-codeSet in identity.yaml

Customization

You can customize Juno by forking the army-identities repo and modifying the pm/ directory, or by creating a new identity from scratch. Point your manifest at the new identity source:
identity: "https://github.com/your-org/your-identities#pm"
See Identities & Customization for details.