一键导入
linear
Read and draft-mutate Linear issues, comments, and state transitions. All mutations require --i-approve and are logged to .pi/.linear-log.jsonl.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Read and draft-mutate Linear issues, comments, and state transitions. All mutations require --i-approve and are logged to .pi/.linear-log.jsonl.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Initialize a foreign project to use the pi-seshat system. Symlinks .omp/, drops AGENTS.md and CLAUDE.md templates, scaffolds specs/ and .pi/, updates .gitignore. Dry-run by default; --i-approve gates all mutations.
Read-only cross-source consistency checker. Surfaces drift between Linear issue state, SpecSafe slice files, and commit Spec-Slice trailers. No mutations, no network writes.
Propose-review-apply flow for BMad artifacts (PRDs, UX specs, architecture, briefs). All applies require --i-approve and produce commits with Proposed-By/Approved-By trailers.
Read-only pre-flight verifier. Checks Linear, gh, omp, agent symlinks, and SpecSafe state-file integrity before a dogfood session. No mutations, no --i-approve gate.
This skill should be used when the user asks to add, update, or review evaluation coverage for agent behavior, LLM workflows, SpecSafe slices, harness prompts, or evalfly suites; when a PR changes agent instructions, slash commands, skills, schemas, or workflow-critical behavior; or when asked whether an eval is required.
Read and draft-mutate GitHub PRs, issues, and API endpoints via gh(1). All mutations require --i-approve. PR creation enforces a Linear-state invariant and is logged to .pi/.github-log.jsonl.
基于 SOC 职业分类
| name | linear |
| description | Read and draft-mutate Linear issues, comments, and state transitions. All mutations require --i-approve and are logged to .pi/.linear-log.jsonl. |
A thin Bun CLI wrapping @linear/sdk for reading and mutating Linear issues.
Reads execute immediately. Mutations are gated behind --i-approve.
Without --i-approve, every mutation prints a full DRY-RUN preview block showing:
Exits 0 on dry-run — it is a successful preview, not an error.
With --i-approve, the mutation executes and one JSON line is appended to .pi/.linear-log.jsonl (mode 0600).
Set LINEAR_API_KEY in your environment:
export LINEAR_API_KEY="<LINEAR_API_KEY>"
# Add to ~/.bashrc for persistence
If the key is absent, the CLI exits non-zero with the exact export command to add.
linear list [--team=CUR] [--state=triage|todo|in_progress|in_review|done] [--assignee=me]
List issues. All filters are optional and stackable. State tokens map to Linear workflow state types and names — in_progress and in_review disambiguate by display name pattern.
linear get <KEY>
Fetch a single issue by its human-readable key (e.g., CUR-92). Shows: key, title, state, assignee, team, priority, URL, description.
linear comment <KEY> <body> # dry-run: prints preview
linear comment <KEY> <body> --i-approve # executes: posts comment, logs
Post a comment on an issue. Without --i-approve, prints what would be posted. With --i-approve, calls Linear and logs to .pi/.linear-log.jsonl.
linear transition <KEY> <state> # dry-run: resolves state ID, shows diff
linear transition <KEY> <state> --i-approve # executes: changes state, logs before/after
State tokens: triage, todo, in_progress, in_review, done. State names are resolved to IDs via team.states() at call time and cached per invocation.
linear create --team=<id> --title=<t> [--body=<b>] # dry-run
linear create --team=<id> --title=<t> [--body=<b>] --i-approve # executes: creates issue, logs
Create a new issue. --team and --title are required.
Every approved mutation appends one JSON line to .pi/.linear-log.jsonl (gitignored, mode 0600):
{"ts":"2026-04-24T12:00:00.000Z","action":"comment","key":"CUR-92","before":{...},"after":{...},"approver":"luci"}
# Read operations (immediate)
bun run .omp/skills/linear/bin/linear.ts list
bun run .omp/skills/linear/bin/linear.ts list --team=CUR --state=in_progress
bun run .omp/skills/linear/bin/linear.ts get CUR-92
# Dry-run mutations (safe, exit 0)
bun run .omp/skills/linear/bin/linear.ts comment CUR-92 "Looks good to me"
bun run .omp/skills/linear/bin/linear.ts transition CUR-92 in_review
bun run .omp/skills/linear/bin/linear.ts create --team=team-uuid --title="Fix the widget"
# Approved mutations (execute + log)
bun run .omp/skills/linear/bin/linear.ts comment CUR-92 "Looks good to me" --i-approve
bun run .omp/skills/linear/bin/linear.ts transition CUR-92 done --i-approve
bun run .omp/skills/linear/bin/linear.ts create --team=team-uuid --title="Fix the widget" --body="Details here" --i-approve