// SOC II triage workflow for creating Linear tickets, branches, OpenSpec proposals, commits, and PRs. Use when asked to triage an issue, create a triage ticket, or start SOC II workflow.
| name | triage-workflow |
| description | SOC II triage workflow for creating Linear tickets, branches, OpenSpec proposals, commits, and PRs. Use when asked to triage an issue, create a triage ticket, or start SOC II workflow. |
Orchestrates the complete triage process: Linear ticket → branch → OpenSpec proposal → implementation → commit → PR
This skill prevents 5 common errors and saves ~60% tokens by using subagents.
| Metric | Without Skill | With Skill |
|---|---|---|
| Setup Time | 30+ min | 5-10 min |
| Common Errors | 5+ | 0 |
| Token Usage | 50k+ | ~20k |
ICE-1965:)This skill guides you through a 7-step triage workflow:
linearis CLI/openspec:proposal/openspec:apply/git-commit with ticket prefix# Run the helper script to create ticket
uv run scripts/create_linear_ticket.py "Issue title" --team TeamName --description "Details"
Why this matters: The ticket identifier (e.g., ICE-1965) becomes the prefix for branch names and commits.
# Use the helper script (gets GitHub username automatically)
uv run scripts/create_branch.py ICE-1965 --push
# Creates: nodnarbnitram/ICE-1965
Why this matters: Branch format username/identifier enables traceability and ownership clarity.
Use the slash command:
/openspec:proposal Add two-factor authentication
Why this matters: OpenSpec ensures alignment on requirements before implementation.
/openspec:applyICE-1965: Fix bug)❌ Wrong:
git commit -m "Fix authentication bug"
✅ Correct:
git commit -m "ICE-1965: Fix authentication bug"
Why: SOC II compliance requires ticket traceability in all commits.
| Issue | Root Cause | Solution |
|---|---|---|
| Missing ticket prefix | Forgot to extract identifier | Use /git-commit with prefix instruction |
| Branch name mismatch | Manual typing error | Use script to create branch from ticket |
| Proposal not validated | Rushed workflow | Always pause for user confirmation |
| Context bloat | Long workflows | Delegate to subagents for each step |
Use subagent to create Linear ticket:
> Create a Linear ticket for: [issue description]
The subagent will:
linearis issues create with appropriate parametersICE-1965)Linearis command reference:
linearis issues create "Title" \
--team Backend \
--description "Issue description" \
--priority 2 \
--labels "Bug,SOC-II"
After getting ticket identifier:
# Use helper script to create branch with GitHub username
uv run scripts/create_branch.py ICE-1965 --push
# Creates: nodnarbnitram/ICE-1965
Invoke the slash command:
/openspec:proposal [description of change]
This will:
openspec/changes/[change-id]/proposal.md, tasks.md, and delta specsCRITICAL: Wait for user validation before proceeding!
Present the proposal to user and ask:
tasks.md make sense?proposal.md correct?Only proceed when user confirms.
After user validation:
/openspec:apply [change-name]
This implements the tasks defined in the proposal.
Use the git-commit command with ticket prefix:
/git-commit ICE-1965:
The commit helper will:
Ask user if they want to:
If yes:
# Push
git push
# Create PR
gh pr create \
--title "ICE-1965: [Description]" \
--body "Fixes ICE-1965
## Summary
- [Change description]
## Test Plan
- [ ] Tests pass
- [ ] Manual verification"
Located in scripts/:
create_linear_ticket.py - Creates Linear ticket and returns identifiercreate_branch.py - Creates branch from ticket identifiercreate_pr.py - Creates PR with ticket referenceLocated in references/:
linearis-reference.md - Linearis CLI commandsgh-cli-reference.md - GitHub CLI commandsopenspec-reference.md - OpenSpec workflowNote: For deep dives on specific tools, see the reference files above.
| Package | Version | Purpose |
|---|---|---|
| linearis | latest | Linear ticket management |
| gh | 2.x+ | GitHub CLI for PRs |
| openspec | 2.x+ | Spec-driven development |
| Package | Version | Purpose |
|---|---|---|
| jq | 1.6+ | JSON parsing for scripts |
Symptoms: linearis command returns error or empty response
Solution:
# Check authentication
echo $LINEAR_API_TOKEN
# Or check token file
cat ~/.linear_api_token
# Test with simple command
linearis issues list -l 1
Symptoms: /openspec:apply can't find the change
Solution:
# List active changes
openspec list
# Validate the change
openspec validate [change-id]
Symptoms: gh pr create returns authentication error
Solution:
# Check GitHub auth
gh auth status
# Re-authenticate if needed
gh auth login
Before using this skill, verify:
linearis CLI installed and authenticated (~/.linear_api_token exists)gh CLI installed and authenticated (gh auth status)openspec installed (npm install -g @fission-ai/openspec)