--- # Pick the tracker your project uses. Symphony does not care which — # it asks the project's CLAUDE.md how to talk to it. # # github — `gh` CLI # gitea — gitea MCP server # tracker — local `.tracker/` CLI (see tracker-usage skill) # linear — Linear MCP / GraphQL # — anything, as long as your CLAUDE.md documents it tracker: kind: github active_states: [open] terminal_states: [closed] polling: interval_ms: 60000 workspace: root: ~/.symphony/workspaces hooks: after_create: | git fetch origin git checkout -b "{{ issue.branch_name | default: issue.identifier }}" before_run: | # project-specific install/setup test -f package.json && npm install --silent || true test -f pyproject.toml && uv sync || true after_run: | # advisory — never blocks the tick true timeout_ms: 120000 agent: max_concurrent_agents: 3 max_turns: 30 max_retry_backoff_ms: 600000 max_concurrent_agents_by_state: "in progress": 2 --- You are working on issue **{{ issue.identifier }}** — {{ issue.title }}. {% if attempt %}This is retry attempt {{ attempt }}. Review prior worktree commits and pick up where the last attempt stopped.{% endif %} ## Issue body {{ issue.description }} ## Labels {{ issue.labels | join: ", " }} ## Your job 1. Implement the change on branch `{{ issue.branch_name | default: issue.identifier }}`. 2. Add or update tests covering the new behavior. Run them. 3. Commit referencing `{{ issue.identifier }}`. 4. Push the branch and open a PR. 5. Comment on the issue with the PR link, then transition the issue to a "review" state. Use the commands documented in this project's CLAUDE.md under the issue tracker section — the plugin does not know your tracker's quirks. If you cannot finish in your turn budget, leave a status comment on the issue summarizing progress and stop. Do not transition state.