Create relationships between issues via comment references
Creates typed relationships between issues by adding comment references. Triggers when work-manager requests to link issues with types like blocks, relates_to, or duplicates.
/plugin marketplace add fractary/claude-plugins/plugin install fractary-work@fractaryThis skill inherits all available tools. When active, it can use any tool Claude has access to.
You use the Fractary CLI comment creation to establish relationships through issue references in comments. GitHub uses comment references (#123) as the native linking method.
You support multiple relationship types:
<CRITICAL_RULES>
fractary work comment create) for link creation{
"operation": "link",
"parameters": {
"issue_id": "123",
"related_issue_id": "456",
"relationship_type": "blocks"
}
}
relates_to - General relationship (bidirectional)blocks - Source blocks target (directional)blocked_by - Source blocked by target (directional)duplicates - Source duplicates target (directional)
</INPUTS>
<CLI_INVOCATION>
Uses comment creation to establish links:
fractary work comment create <issue_number> --body "Blocks #456" --json
| Type | Source Comment | Target Comment (if bidirectional) |
|---|---|---|
relates_to | "Related to #456" | "Related to #123" |
blocks | "Blocks #456" | "Blocked by #123" |
blocked_by | "Blocked by #456" | "Blocks #123" |
duplicates | "Duplicate of #456" | (none) |
# Create link comment on source issue
source_comment="Blocks #${RELATED_ISSUE_ID}"
result=$(fractary work comment create "$ISSUE_ID" --body "$source_comment" --json 2>&1)
cli_status=$(echo "$result" | jq -r '.status')
# For bidirectional relationships, also comment on target
if [ "$RELATIONSHIP_TYPE" = "relates_to" ] || [ "$RELATIONSHIP_TYPE" = "blocks" ] || [ "$RELATIONSHIP_TYPE" = "blocked_by" ]; then
target_comment=$(get_inverse_comment "$RELATIONSHIP_TYPE" "$ISSUE_ID")
fractary work comment create "$RELATED_ISSUE_ID" --body "$target_comment" --json
fi
</CLI_INVOCATION>
<OUTPUTS> You return to work-manager agent:Success:
{
"status": "success",
"operation": "link",
"result": {
"issue_id": "123",
"related_issue_id": "456",
"relationship": "blocks",
"message": "Issue #123 blocks #456",
"link_method": "comment",
"platform": "github"
}
}
Error (self-reference):
{
"status": "error",
"operation": "link",
"code": "VALIDATION_ERROR",
"message": "Cannot link issue to itself",
"details": "issue_id and related_issue_id must be different"
}
Error (invalid relationship):
{
"status": "error",
"operation": "link",
"code": "VALIDATION_ERROR",
"message": "Invalid relationship_type: invalid_type",
"details": "Must be one of: relates_to, blocks, blocked_by, duplicates"
}
</OUTPUTS>
<ERROR_HANDLING>
fractary command existsnpm install -g @fractary/cli
</ERROR_HANDLING>šÆ STARTING: Issue Linker
Operation: link
Source Issue: #123
Related Issue: #456
Relationship: blocks
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
COMPLETED: Issue Linker
Linked: #123 ā #456 (blocks)
Method: Comment references
Platform: github
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Next: Relationship is now visible in both issues
General relationship without implied ordering or blocking.
Source issue must be completed before target can start.
Source issue cannot start until target is completed.
Source issue is a duplicate of target.
@fractary/cli >= 0.3.0 - Fractary CLI with comment createjq - JSON parsingPrevious implementation: Used handler scripts (handler-work-tracker-github, etc.)
Current implementation: Uses Fractary CLI directly (fractary work comment create)
The CLI handles:
#123) as native linking not available