> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clawup.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Juno — Product Manager

> How Juno breaks down tickets, prepares implementation prompts, and keeps the team unblocked

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](/integrations/linear#linear-plugin) 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

| Skill                   | Purpose                                                                                     |
| ----------------------- | ------------------------------------------------------------------------------------------- |
| `pm-queue-handler`      | End-to-end ticket processing — routes, preps, and assigns inbound tickets                   |
| `linear-ticket-prep`    | Multi-phase ticket preparation — sizing, research, context gathering, and prompt generation |
| `linear-ticket-routing` | Routes 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:

| File           | What It Does                                                                                 |
| -------------- | -------------------------------------------------------------------------------------------- |
| `SOUL.md`      | Core personality — approach, values, superpowers, boundaries. Defines who Juno *is* as a PM. |
| `IDENTITY.md`  | Name, role label, emoji, avatar metadata.                                                    |
| `HEARTBEAT.md` | Periodic checklist — bootstrap detection on first boot.                                      |
| `TOOLS.md`     | Tool-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:

```yaml theme={null}
- 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
```

| Field         | Default              | Notes                                                                              |
| ------------- | -------------------- | ---------------------------------------------------------------------------------- |
| `identity`    | `army-identities#pm` | Built-in PM identity                                                               |
| `volumeSize`  | 30 GB                | Persistent storage — Juno doesn't need as much since she's not cloning large repos |
| `model`       | Claude Opus 4.6      | Set in `identity.yaml`                                                             |
| `codingAgent` | `claude-code`        | Set in `identity.yaml`                                                             |

## Customization

You can customize Juno by forking the [army-identities](https://github.com/stepandel/army-identities) repo and modifying the `pm/` directory, or by creating a new identity from scratch with [`army-create`](https://github.com/stepandel/army-create) (`npx army-create`). Point your manifest at the new identity source:

```yaml theme={null}
identity: "https://github.com/your-org/your-identities#pm"
```

See [Identities & Customization](/architecture/identities) for details.
