cc-os/plugins/os-backlog/skills/route/references/cross-project-filing.md

40 lines
1.7 KiB
Markdown

# Cross-project filing (file-don't-fix)
When work surfaces that belongs to a DIFFERENT project than the one this session is
working in, do not edit that project — file the work on ITS tracker and continue. The
owning project's own session picks it up with full context.
## Finding the target's tracker
Query the global project index (derived from every `config-write`, at
`~/.cc-os/projects.json`):
```
os-backlog projects # full index as JSON
os-backlog projects <substring> # filter by project name
```
Each row: canonical repo path -> `{name, tracker, remote, updated_at}`. If the target
project has no row, it hasn't been routed yet — tell the user rather than guessing.
## Filing mechanics by tracker kind
- `forgejo:<owner>/<repo>``tea issues create --repo <owner>/<repo> --title "..." --description "..."`
- `github:<owner>/<repo>``gh issue create --repo <owner>/<repo> --title "..." --body "..."`
- `repo:<path>` — append an `NNN-<slug>.md` frontmatter file to the target's `<path>`.
No autonomy or priority label is applied by the filer — that's the receiving project's job,
per its own triage. The one tracker holds both state and specs for the target project too
(ADR-0042) — there is no second surface to route within.
## Discoverer block (append verbatim to the issue description/body)
```
--------
**Discoverer:** <filing repo or path>, session <claude-code-session-id>, <YYYY-MM-DD>. <one-line motivation>
```
Session id source: the SessionStart hook receives it as the `session_id` field of its
stdin JSON; a live session can also find it in its transcript filename. If it is
genuinely unavailable, write `session id unavailable` — never fabricate one.