linear-project-workflowlisted
Install: claude install-skill myksyut/pev-harness
# linear-project-workflow
Linear の workspace > team > **project** > issue 階層において、 project は「**機能・ユーザーストーリー単位の Why/What 容器**」。 issue は project の child 作業単位。
この skill は AI agent が project を **読む / 書く / 更新する** ときの規約と template を提供する。
## When to Use
起動すべき場面:
- 機能・ユーザーストーリー単位の Linear Project を起票する時
- ユーザーが「Project を作って」と明示した時
- 複数 issue を束ねる必要が見えた時 (例: 1 機能に対し backend / frontend / test の 3 issue がぶら下がる)
- 既存 project を読んで PEV pipeline の context にする時
- project の完了条件 checkbox を更新する時
起動すべきでない場面:
- 1 issue で完結する作業 (例: typo 修正、 1 関数追加) → `linear-issue-workflow`
- 既存 project の status 遷移を「進捗監視として」判断する時 → `linear-project-tracker` (主責任)
- PEV pipeline と Linear Issue の sync → `pev-linear-sync`
## Preflight check (v1.3.0+ 必須)
skill 起動直後、 以下の preflight を実行する。 不整合があれば silent corruption を防ぐため早期に止める:
1. **`.linear-config.yml` 存在確認**
- 不在: warning + Read 系操作は degraded fallback (workspace/team.id 不在で機能制限) / Write 系操作は **hard fail** (configなしで Linear に書くと workspace 混在のリスク)
2. **team.id 整合性検査** (Write 系操作前は必須)
- `mcp__plugin_linear_linear__get_team(query=yaml.team.id)` で取得
- 取得 entity の `key` または `id` と yaml.team.id を比較
- 不一致: **hard fail** (silent corruption 防止、 別 team の Linear に書くリスク)
3. **status workflow preflight**
- `mcp__plugin_linear_linear__list_issue_statuses(team=yaml.team.id)` で取得
- yaml の `status_mapping.issue.*` 値が Linear に存在しない場合は warning
- Project state は固定 5 種 (`backlog / planned / started / completed / canceled`) なので別管理
- `.linear-config.yml` で `sta