.claude/skills/pair-capability-write-issue/SKILL.md
Creates or updates issues in the adopted PM tool using template-driven formatting. Reads way-of-working for tool choice and type-specific templates for body structure. Invocable independently or composed by /pair-process-refine-story, /pair-process-plan-tasks, /pair-process-plan-initiatives, /pair-process-plan-epics, and /pair-process-plan-stories.
npx skillsauth add foomakers/pair pair-capability-write-issueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create or update issues in the adopted PM tool. Template-driven: reads the type-specific template, formats the issue body accordingly, and creates or updates via the PM tool API.
| Argument | Required | Description |
| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| $type | Yes | Issue type: story, task, epic, or initiative. Determines which template is used. |
| $content | Yes | Structured content to fill the template — fields map to template sections. |
| $id | No | Existing issue identifier. If provided → update; if absent → create. |
| $parent | No | Parent issue identifier for hierarchy linking (e.g., epic → story, story → task). |
| $status | No | Target status for the project board field (e.g., Refined, In Progress, Done). If provided, updates the project board status field per the implementation guide. |
Check: Is $type one of the supported types (story, task, epic, initiative)?
Skip: If valid, proceed to Step 2.
Act: If unsupported type → HALT:
Unsupported issue type:
$type. Supported:story,task,epic,initiative.
Verify: $type is valid.
Check: Read way-of-working.md and identify the adopted PM tool.
Skip: If PM tool is identified, proceed to Step 3.
Act: If no PM tool configured → HALT:
No PM tool configured in
way-of-working.md. Configure via/pair-capability-setup-pmor manually set the PM tool in way-of-working.md.
Verify: PM tool identified (e.g., github-projects, jira, linear, filesystem).
Check: Resolve template path based on $type:
story → user-story-template.mdtask → task-template.mdepic → epic-template.mdinitiative → initiative-template.mdSkip: If template file found, proceed to Step 4.
Act: If template not found → HALT:
Template not found:
[template path]. Ensure the knowledge base is installed.
Verify: Template loaded and parsed.
$content contain all required fields for the template?$content data:
$content fields to template sections.Check: Resolve the PM tool implementation guide based on the adopted tool:
github-projects → github-implementation.mdfilesystem → filesystem-implementation.mdSkip: If guide found, proceed to Step 6.
Act: If guide not found, warn and proceed with best-effort PM tool interaction:
PM tool implementation guide not found for
[tool]. Proceeding with default behavior.
Verify: Implementation guide loaded (or warning issued).
$id provided?
$id absent → Create mode: Create a new issue in the PM tool.$id present → Update mode: Verify the issue exists, then update it.$type (e.g., user story, task, epic, initiative).$parent is provided, link to parent issue (hierarchy: epic → story → task).Issue #$id not found.$status is provided, update the project board status field per the implementation guide (e.g., GraphQL mutation for GitHub Projects). This is the board field, not the body text.$status was provided, confirm the board field reflects the new status.Check: Did the PM tool return an error during Step 6?
Skip: If no error, proceed to output.
Act: HALT with descriptive error:
PM tool error:
[error description]. No fallback to alternative tools — resolve the issue with the adopted PM tool and re-invoke.
Verify: Error reported to developer.
ISSUE WRITTEN:
├── Mode: [Created | Updated]
├── Type: [story | task | epic | initiative]
├── ID: [issue identifier — e.g., #42]
├── PM Tool: [adopted tool name]
├── Template: [template file used]
├── Parent: [parent issue ID or "none"]
└── Status: [Success | HALT — reason]
Return value: The issue identifier (e.g., #42) — used by composing skills in chain operations.
When composed by /pair-process-refine-story:
/pair-process-refine-story invokes /pair-capability-write-issue with $type: story, $content containing the refined story data, $id when updating an existing story, and $status: Refined to transition the board field./pair-process-refine-story uses it for linking.When composed by /pair-process-plan-tasks:
/pair-process-plan-tasks invokes /pair-capability-write-issue with $type: story, $id: [story-id], and $content containing the Task Breakdown section to append. Tasks are documented inline in the story body — no separate task issues are created./pair-process-plan-tasks confirms the update.When composed by /pair-process-plan-initiatives:
/pair-process-plan-initiatives invokes /pair-capability-write-issue with $type: initiative and $content containing the initiative data. Passes $id when updating an existing initiative./pair-process-plan-initiatives uses it for linking and status tracking.When composed by /pair-process-plan-epics:
/pair-process-plan-epics invokes /pair-capability-write-issue with $type: epic, $content containing the epic data, and $parent linking to the parent initiative./pair-process-plan-epics uses it for linking stories.When composed by /pair-process-plan-stories:
/pair-process-plan-stories invokes /pair-capability-write-issue with $type: story, $content containing the story data, and $parent linking to the parent epic./pair-process-plan-stories uses it for status tracking.When invoked independently:
$type (Step 1) — lists currently supported types.$id provided but issue not found (Step 6) — issue does not exist.This skill supports story, task, epic, and initiative types. Adding a new type requires: (1) a new template file in collaboration/templates/, (2) a new entry in Step 1 validation, (3) a new entry in Step 3 template resolution, (4) a new entry in the Composition Interface section.
$id prevents duplicate creation).development
Creates or updates a Product Requirements Document through structured template analysis, hypothesis-driven information gathering, and iterative review. Idempotent — detects existing PRD and offers selective section update.
development
Reviews a pull request through a structured 6-phase process: validation, technical review, adoption compliance, completeness check, decision, and optional merge with parent cascade. Composes /verify-quality, /verify-done, /record-decision, /assess-debt (required) and /verify-adoption, /assess-stack (optional with graceful degradation). Output follows the code review template. Idempotent — re-invocation resumes from incomplete phases.
tools
Refines a user story from Todo to Refined state through structured phases: selection, requirements analysis (Given-When-Then), technical analysis, sprint readiness, and documentation. Section-level idempotency — detects partial refinement and resumes. Composes /write-issue for PM tool updates.
testing
Breaks a refined user story into implementation tasks. Task-level idempotency: detects existing tasks and creates only missing ones. Appends condensed Technical Analysis + Task Breakdown (checklist, Dependency Graph, AC Coverage table, detailed tasks) to the story body. Composes /write-issue to update the story issue body. Tasks are documented inline in the story — no separate task issues are created.