feat: Linear Issue Find-or-Create Skill - #595
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new post-intake skill to link Fab changes to Linear via a find-or-create flow, and wires it into the /fab-fff orchestrator as an optional pre-ship step so /git-pr can incorporate issue IDs into PR titles for Linear automation.
Changes:
- Introduces
/fab-issueskill with a graceful gate chain + idempotency guard and a three-branch find-or-create behavior. - Adds an optional
/fab-fffStep 3.5 to run/fab-issueinline (both lanes) before ship. - Updates help catalog mapping/tests plus specs + memory docs to document the new skill and wiring.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/kit/skills/fab-issue.md | New /fab-issue skill definition (gates, find-or-create branches, carve-out, output contract). |
| src/kit/skills/fab-fff.md | Adds optional Step 3.5 Linear-link step and updates fff framing/output text accordingly. |
| src/kit/skills/_pipeline.md | Updates shared bracket prose to reference driver continuation Steps 3.5–5 for review-pr terminal. |
| src/go/fab/cmd/fab/fabhelp.go | Registers fab-issue under the Completion help group. |
| src/go/fab/cmd/fab/fabhelp_test.go | Extends group-mapping test coverage to include fab-issue. |
| docs/specs/user-flow.md | Documents /fab-issue as an optional pre-ship side step; updates flow diagram. |
| docs/specs/skills.md | Updates pipeline diagram + /fab-fff text, and adds a full /fab-issue skill section. |
| docs/specs/glossary.md | Adds glossary entry for /fab-issue and notes /fab-fff Step 3.5 behavior. |
| docs/memory/pipeline/planning-skills.md | Adds pull-vs-push linking cross-reference to the new /fab-issue path. |
| docs/memory/pipeline/execution-skills.md | Updates execution/ship documentation to include Step 3.5 and the /fab-issue linkage model. |
| docs/memory/pipeline/index.md | Adds issue-linking to the pipeline memory index. |
| docs/memory/pipeline/log.md | Records memory updates/creation for issue-linking topic. |
| docs/memory/pipeline/issue-linking.md | New memory topic documenting end-to-end Linear linking model and /fab-issue behavior. |
| docs/memory/_shared/log.md | Logs shared memory update referencing the new issue-linking content. |
| docs/memory/_shared/configuration.md | Documents project.linear_workspace as a gate for /fab-issue in addition to /git-pr hyperlinking. |
| fab/changes/260812-z5qt-linear-issue-find-or-create/plan.md | Change artifact capturing requirements/tasks/acceptance for this feature. |
| fab/changes/260812-z5qt-linear-issue-find-or-create/intake.md | Change intake describing motivation and functional requirements. |
| fab/changes/260812-z5qt-linear-issue-find-or-create/.status.yaml | Change status artifact for the pipeline run producing this PR. |
| fab/changes/260812-z5qt-linear-issue-find-or-create/.history.jsonl | Change history log for the pipeline run producing this PR. |
Suppressed comments (1)
src/kit/skills/fab-fff.md:48
- This section still describes the fab-fff-specific delta as “Steps 4–5”, but the file now introduces an additional fff-only Step 3.5. Updating these lines to mention Step 3.5 explicitly makes the lane/dispatched behavior clearer and keeps the overview consistent with the new step numbering.
The bracket defines pre-flight (intake prerequisite + intake gate), context loading, resumability, Steps 1–3 (apply → review → hydrate) with the inline plan co-gen and one-time light/full lane fork, the auto-rework loop with its per-cycle choreography, and the exhaustion stop. The three steps below (3.5–5) are fff-only.
Steps 1–3 use `_pipeline.md` § Stage Dispatch Procedure and the current canon at `_preamble.md` § CLI-Adapter Dispatch. The fff-only delta is that Steps 4–5 dispatch full `/git-pr` and `/git-pr-review` behaviors through the native model/effort seams; those skills manage their own stage transitions, so their prompts do not carry the block-contract transition prohibition.
**Light lane** (`_pipeline.md` § Light Lane owns the mechanics): Steps 4–5 run inline in the orchestrator's context, and the Step 5 synchronous-poll directive is moot there. In the full lane Steps 4–5 dispatch exactly as written below.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| │ └─ Fail: auto-rework loop ≤{max_cycles} (light: rework inline; full: resume apply worker when reachable; fresh review each cycle); exhaustion: fab status fail review → STOP | ||
| ├─ Step 3 Hydrate — LIGHT: inline / FULL: subagent /fab-continue Hydrate → fab status finish hydrate | ||
| └─ {terminal} = hydrate → complete / review-pr → driver Steps 4–5 (light lane: inline) | ||
| └─ {terminal} = hydrate → complete / review-pr → driver Steps 3.5–5 (link Linear issue — optional, inline both lanes / ship / review-pr; light lane: 4–5 inline) |
There was a problem hiding this comment.
Fixed — reworded the pipeline-bracket terminal line to number the steps explicitly: Step 3.5 (link Linear issue) is inline in BOTH lanes, and Steps 4–5 (ship / review-pr) are inline in the light lane, dispatched in the full lane. (6979a9f)
Meta
z5qtexcludes
fab/,docs/· generated by fab-kit v2.19.7Pipeline: intake ✓ → apply ✓ → review ✓ → hydrate ✓ → ship → review-pr
Summary
Natural-language fab changes currently produce no Linear linkage — only explicit issue IDs handed to /fab-new get linked, so Linear boards drift and PR-merge auto-transitions never fire. This adds /fab-issue, a standalone post-intake skill that searches the user's Linear workspace for a match against the active change's intake and links, creates-in-project, or (with confirmation) creates an unassigned issue — reusing the existing issues-array substrate with zero CLI schema changes.
Changes
src/kit/skills/fab-issue.md(/fab-issue) — gated find-or-create linking with idempotency guard and autonomous carve-out/fab-fff(/fab-proceedinherits via delegation;/fab-ffdeliberately unwired)fabhelp.go(+test),docs/specs/skills.md,user-flow.md,glossary.md, memory hydration (pipeline/issue-linkingnew)