Use when creating GitHub issues, adding tasks to backlog, or when unsure which repo/project an issue belongs to. Triggers on "создай задачу", "issue", "добавь в бэклог", "task routing", "куда положить задачу".
Scanned 5/27/2026
Install via CLI
openskills install serejaris/ris-claude-code---
name: task-routing
description: Use when creating GitHub issues, adding tasks to backlog, or when unsure which repo/project an issue belongs to. Triggers on "создай задачу", "issue", "добавь в бэклог", "task routing", "куда положить задачу".
---
# Task Routing
Route issues to the correct repo using the routing config from CLAUDE.md. Part of the Personal Corp framework: `project-init` → **`task-routing`** → `weekly-planning` / `weekly-retro`.
## How It Works
```dot
digraph routing {
"New task" -> "Read routing config from CLAUDE.md";
"Read routing config from CLAUDE.md" -> "Match keywords → target repo";
"Match keywords → target repo" -> "Check duplicates in target repo";
"Check duplicates in target repo" -> "Duplicate found?" [shape=diamond];
"Duplicate found?" -> "Update existing issue" [label="yes"];
"Duplicate found?" -> "Check W-label exists in target repo" [label="no"];
"Check W-label exists in target repo" -> "Create issue in target repo";
}
```
## Step 1: Read Routing Config
Find the `### Task Routing` section in CLAUDE.md of the **current project** (or the HQ repo if running from there):
```yaml
### Task Routing (which issues go where)
routing:
- pattern: "bot, broadcast, onboarding"
repo: owner/bot-repo
- pattern: "content, lessons"
repo: owner/content-repo
- pattern: "strategy, cross-cutting"
repo: owner/main-repo
```
This config is created by `project-init`. If it doesn't exist — STOP and tell the user to run `project-init` first.
## Step 2: Match Pattern
Match the task description against routing patterns. Rules:
- Match by **keywords in the task**, not by where you happen to be running
- If multiple patterns match, pick the most specific
- If no pattern matches, ask the user: "This doesn't match any routing pattern. Which repo?"
- **Never default to the current repo** — routing must be explicit
## Step 3: Check Duplicates
```bash
# Check target repo
gh issue list -R {target_repo} -s open --json number,title --jq '.[].title'
# Check unified project (if configured)
gh project item-list {project_id} --owner {owner} --format json | \
python3 -c "import json,sys; [print(i['title']) for i in json.load(sys.stdin)['items']]"
```
If a similar issue exists → update it instead of creating a duplicate.
## Step 4: Check W-label
W-labels (`W13`, `W14`...) are created by `weekly-planning`, not manually.
```bash
# Check if current week label exists in target repo
gh label list -R {target_repo} | grep "W[0-9]"
```
- If W-label exists → use it
- If W-label does NOT exist → **do not create it**. Create the issue without a W-label. It will get labeled during next `weekly-planning` run.
## Step 5: Create Issue
```bash
gh issue create -R {target_repo} \
-t "prefix: title" \
-l "{w_label_if_exists}" \
--body "..."
```
Issue title prefixes follow conventional commits:
- `ops:` — operational task
- `feat:` — new feature
- `fix:` — bug fix
- `content:` — content creation
- `research:` — research task
- `menti:` — mentoring related
## Red Flags — STOP
| You're about to... | Instead... |
|---------------------|-----------|
| Create issue in current repo without checking routing | Read CLAUDE.md routing config first |
| Add W-label that doesn't exist in target repo | Skip label — weekly-planning will add it |
| Add to Project #4 because "it's the main one" | Check which project the target repo uses. Or let GitHub auto-add handle it |
| Create issue without checking duplicates | Search target repo AND unified project |
| Guess the target repo | Ask the user if no pattern matches |
| Create retro:W{NN} label | Only weekly-retro creates these |
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Issue about bot created in school-brain | Check routing: "bot" → hsl-mozg |
| W14 label created manually | W-labels come from weekly-planning only |
| Duplicate issue across repos | Search unified project before creating |
| No routing config found | Run project-init first |
| Added to wrong GitHub Project | Let GitHub auto-add handle project assignment |
## Minimal Example
```bash
# 1. Read routing from CLAUDE.md
# routing says: "bot, broadcast" → owner/hsl-mozg
# 2. User says: "создай задачу — рассылка по alumni"
# Keywords: "рассылка" matches "broadcast" → target = owner/hsl-mozg
# 3. Check duplicates
gh issue list -R owner/hsl-mozg -s open --json title --jq '.[].title' | grep -i alumni
# 4. Check W-label
gh label list -R owner/hsl-mozg | grep "W13"
# Found → use it
# 5. Create
gh issue create -R owner/hsl-mozg -t "ops: рассылка по alumni" -l "W13"
```
No comments yet. Be the first to comment!