linear-refresh

Linear チケットの棚卸し・構造整理・未登録ソース発見を Collect/Discover/Analyze/Approve/Execute の 5 ステップで一気通貫実行する。 既存の外部リンク探索に加え、Slack/GitHub のキーワード検索と逆引きで未紐付きの 外部ソースも発見する。定期的な Linear メンテナンス、または「棚卸し」「リフレッシュ」 「整理」の依頼時に使用する。

10 stars

Best use case

linear-refresh is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Linear チケットの棚卸し・構造整理・未登録ソース発見を Collect/Discover/Analyze/Approve/Execute の 5 ステップで一気通貫実行する。 既存の外部リンク探索に加え、Slack/GitHub のキーワード検索と逆引きで未紐付きの 外部ソースも発見する。定期的な Linear メンテナンス、または「棚卸し」「リフレッシュ」 「整理」の依頼時に使用する。

Teams using linear-refresh should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/linear-refresh/SKILL.md --create-dirs "https://raw.githubusercontent.com/neko-neko/dotfiles/main/claude/skills/linear-refresh/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/linear-refresh/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How linear-refresh Compares

Feature / Agentlinear-refreshStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Linear チケットの棚卸し・構造整理・未登録ソース発見を Collect/Discover/Analyze/Approve/Execute の 5 ステップで一気通貫実行する。 既存の外部リンク探索に加え、Slack/GitHub のキーワード検索と逆引きで未紐付きの 外部ソースも発見する。定期的な Linear メンテナンス、または「棚卸し」「リフレッシュ」 「整理」の依頼時に使用する。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Linear Refresh

Linear チケットの棚卸し・構造整理・未登録ソース発見を一気通貫で実行する。

## Options

| Option | 効果 |
|--------|------|
| `--force` | Step 4 (Approve) をスキップ — Plan は表示するが即座に実行 |
| `--skip-discovery` | Step 2 (Discover) をスキップ — リンク済みソースのみ対象 |
| `--cleanup-only` | Step 3 の add 分析をスキップ |
| `--add-only` | Step 3 の cleanup 分析をスキップ |

## Prerequisites

- `linear` CLI が利用可能であること: `which linear && linear --version`
- `/slackcli` スキルが利用可能であること(Slack 探索用)
- チーム選択: `linear team list` → 1チーム: 自動選択 / 複数: ユーザーに選択を求める / 0: エラー終了

## Workflow

```
Step 1: Collect    — チケット取得 + リンク済みURLの探索
Step 2: Discover   — キーワード検索 + チケット逆引き(--skip-discovery で省略)
Step 3: Analyze    — Cleanup + Add 分析を一括実行
Step 4: Approve    — 統合Planをユーザーに提示して承認を得る(--force で省略)
Step 5: Execute    — Linear API で変更を適用
```

**開始時アナウンス:** 「Linear Refresh を開始します。Step 1: Collect」

## Step 1: Collect

チケットを全件取得し、description/attachments からリンクされた外部ソースを探索する。

1. `/linear-cli` と `/slackcli` スキルを invoke する。
2. チケット一覧を取得: `linear issue list --team {id} --sort priority --all-states --all-assignees --limit 0 --no-pager`
3. アクティブチケットの詳細取得を**並列サブエージェント**でディスパッチ(10件バッチ)。
   → サブエージェント指示: [collect-agent.md](references/collect-agent.md) 「詳細取得エージェント」
4. 結果からURLを抽出。[external-source-exploration.md](references/external-source-exploration.md) に従って分類する。
5. 1ホップURL探索を**並列サブエージェント**でディスパッチ(チケットクラスタ単位)。
   → サブエージェント指示: [collect-agent.md](references/collect-agent.md) 「1ホップ探索エージェント」
6. 2ホップ条件を評価: In Progress + Urgent/High + 72時間以内のアクティビティ。
7. 該当URLがあれば、2ホップ探索を**並列サブエージェント**でディスパッチ。
   → サブエージェント指示: [collect-agent.md](references/collect-agent.md) 「2ホップ探索エージェント」
8. 全結果を [collected-context-schema.md](references/collected-context-schema.md) に従って `.linear-refresh/collected-context.json` にマージ。

## Step 2: Discover

チケットからリンクされていない外部ソースを、キーワード検索とチケット逆引きで発見する。

**`--skip-discovery` 指定時はスキップ。** 空の `discovery_sources: []` を書き込んで次へ進む。

1. collected-context.json から [discovery-strategy.md](references/discovery-strategy.md) に従ってクエリシードを生成する。
2. Slack検索とGitHub検索を**並列サブエージェント**でディスパッチ。
   → サブエージェント指示: [discover-agent.md](references/discover-agent.md)
3. 結果をフィルタリング: Step 1 のソースと重複排除し、無関係なものを除外。
4. `.linear-refresh/collected-context.json` に `discovery_sources[]` として追記。

## Step 3: Analyze

Cleanup と Add の分析を一括実行する。collected-context.json を1回読み込む。

1. [cleanup-guidelines.md](references/cleanup-guidelines.md) を参照。8カテゴリで変更候補を検出する。
   **`--add-only` 指定時はスキップ。**
2. [add-guidelines.md](references/add-guidelines.md) を参照。`create`/`link`/`skip` の disposition で検出項目を判定する。
   重複排除のため cleanup 結果を参照する。
   **`--cleanup-only` 指定時はスキップ。**
3. `discovery_sources` の項目: 同じ分析を適用するが、根拠に `[discovered]` タグを付与する。
4. **セルフチェック:**
   - すべての In Progress チケットが少なくとも1回分析されたか。
   - discovery_sources の deferred signals が Plan に反映されているか。
   - external_sources + discovery_sources の両方が 0 件だがチケットにURLがある場合、異常としてユーザーに報告。
5. `.linear-refresh/plan.json` を書き出す。

## Step 4: Approve

統合 Plan をユーザーに提示して承認を得る。

**`--force` 指定時はスキップ**(Plan は表示するが承認待ちしない)。

表示フォーマット:

```
## Linear Refresh Plan

**Team:** {team_id} ({total_tickets} tickets, {external_sources} linked, {discovery_sources} discovered)

### Cleanup ({N} items)
(カテゴリ別にグループ化: 親子関係、関連、ブロック、ステータス、プロジェクト、コンテキスト、タイトル、期限、重複。空カテゴリは省略。)

### Add ({N} items)
(disposition 別にグループ化: create, link, skip。)

---
Approve? (ok / modify / cancel)
```

- `ok` → Step 5 へ
- ID指定で修正指示 → plan.json を更新し、再提示
- `cancel` → 終了

## Step 5: Execute

承認済み Plan を Linear API で適用する。

1. **Cleanup**(厳密な順序):
   a. 親子関係の設定(順次実行)
   b. 並列: blockedBy、relatedTo、ステータス変更、プロジェクト紐付け、コンテキスト追加、タイトル変更、期限設定
   c. 重複統合 — Done + duplicateOf(順次実行、最後に実行)
2. **Add**(厳密な順序):
   a. 新規チケット作成
   b. 既存チケットへのリンク(コメント + relation/attachment)
3. エラーハンドリング: 個別失敗はスキップして続行、レート制限はリトライ(最大3回)、Cleanup 失敗は Add をブロックしない。
   → 結果フォーマット: [execution-report.md](references/execution-report.md)
4. `.linear-refresh/result.json` を書き出し、結果サマリーを表示する。

## Red Flags

**禁止事項:**
- 承認済み Plan なしでの変更実行(`--force` 時を除く)
- チケットの削除・アーカイブ(Cleanup は重複を Close するのみ)
- チケット description の書き換え(コンテキスト追加はコメント/attachment で行う)
- Step 1 での2ホップ超の探索(無限展開防止)
- Step 2 での30日超の検索

**必須事項:**
- Step 1 の前に `/linear-cli` と `/slackcli` を invoke
- 要約予算の遵守(優先度別 200/400/800文字)
- 外部ソースからの deferred signals の記録
- discovery 由来の項目には根拠に `[discovered]` タグを付与
- すべての実行失敗を result JSON に記録

## Artifacts

| ファイル | 書き込みステップ | 用途 |
|---------|----------------|------|
| `.linear-refresh/collected-context.json` | Step 1 + Step 2 | 全チケット、リンク済みソース、発見ソース |
| `.linear-refresh/plan.json` | Step 3 | 統合 Cleanup + Add Plan |
| `.linear-refresh/result.json` | Step 5 | 実行結果 |

Related Skills

weekly-sync

10
from neko-neko/dotfiles

Linear(SSOT)と顧客向け出力先(GitHub Project 等)の間で定例ミーティング向けの 週次同期を実行する。チケットのスキャン・差分分析・顧客向けDocument作成・出力先転写・ ステータス同期を一気通貫で行う。プロジェクト固有の設定は .weekly-sync/config.md で管理。

triage

10
from neko-neko/dotfiles

URL(Slack/GitHub/その他)から情報収集→周辺コンテキスト探索→分析→Linear Issue 登録を行う初動対応ワークフロー。 問い合わせやバグ報告のトリアージに使用する。

slackcli

10
from neko-neko/dotfiles

Slack CLI: Send messages, read conversations, search, and manage Slack workspaces from the terminal. Use when the user asks anything related to Slack — sending messages, checking unreads, searching conversations, or managing workspaces. Also trigger when a Slack URL is provided (e.g., https://*.slack.com/archives/*, app.slack.com/*) or when the conversation context mentions Slack threads, channels, or messages.

handover

10
from neko-neko/dotfiles

現在のセッションで行った作業・決定事項・アーキテクチャ変更を project-state.json に記録し、 handover.md を生成する。コンテキスト圧縮の直前、/handover の明示呼び出し、 ツール呼び出し累計 50 回超過時、または応答が遅延した時に使用する。

doc-check

10
from neko-neko/dotfiles

コード変更に影響を受ける md ドキュメントを検出し、ユーザー承認後に更新する。 md ファイルの YAML frontmatter に宣言された depends-on(ファイルパス・glob)と 本文中の Markdown リンクから依存グラフを構築し、git diff との突合で影響範囲を特定する。 /doc-check で起動、またはコード変更を含むタスク完了時に実行を検討する。

doc-audit

10
from neko-neko/dotfiles

md ドキュメントの陳腐化・欠落・矛盾を 4 Layer 構造で検出し、ユーザー承認後に修正する。 depends-on 検証、coverage チェック、business-rule/architecture の未文書化知識検出、 readme/CLAUDE.md のメタ整合検査を行う。/doc-audit で起動、または大規模なコード変更後に ドキュメント整合性を確認したい時に使用する。

continue

10
from neko-neko/dotfiles

前セッションの project-state.json から未完了タスク(in_progress/blocked)を特定し、 ユーザー承認後に作業を再開する。/continue の明示呼び出し、"continue from handover" のような継続指示、handover.md への言及を検出した時に使用する。worktree 切り替えと Pipeline Detection も含む。

linearization

16
from plurigrid/asi

Local approximation of nonlinear dynamics

linear-logic

16
from plurigrid/asi

Linear Logic Skill

lhott-cohesive-linear

16
from plurigrid/asi

Cohesive Linear HoTT patterns for interaction entropy with diagram generation. Implements Schreiber's cohesive modalities (♯,♭,ʃ) and Riley's linear modality (♮) for quantum-classical bridging.

linear

13
from Valian/linear-cli-skill

Work with Linear issues via CLI - use this skill whenever the user asks about Linear issues, creating, updating, commenting on, or deleting issues, or checking issue status and details

ir:refresh-aliases

13
from ingo-eichhorst/Irrlicht

Sync irrlicht's model-name alias map against codeburn's upstream BUILTIN_ALIASES. Fetches codeburn's src/models.ts, diffs entries against core/pkg/capacity/aliases.go, and proposes additions/changes as a PR. Use when user says '/ir:refresh-aliases', 'refresh aliases', 'sync codeburn aliases', 'check alias map', or when a session prices at $0 for a known model.