Skip to content

docs-tools: migrate jira-reader from REST API v2 to v3#115

Open
bburt-rh wants to merge 3 commits intoredhat-documentation:mainfrom
bburt-rh:jira-reader-changes
Open

docs-tools: migrate jira-reader from REST API v2 to v3#115
bburt-rh wants to merge 3 commits intoredhat-documentation:mainfrom
bburt-rh:jira-reader-changes

Conversation

@bburt-rh
Copy link
Copy Markdown
Collaborator

@bburt-rh bburt-rh commented Apr 24, 2026

Summary

  • Migrate jira-reader skill from Atlassian REST API v2 to v3 by passing options={"rest_api_version": "3"} to both JIRA() constructor paths (Atlassian Cloud and self-hosted)
  • Add adf_to_text() function to convert Atlassian Document Format (ADF) JSON to plain text for description and comment.body fields, which v3 returns as ADF instead of wiki markup
  • Fix SKILL.md to use scripts/jira_reader.py relative paths instead of ${CLAUDE_SKILL_DIR}

Motivation

Atlassian REST API v3 is the current version. The jira Python library defaults to v2, which may be deprecated. See #111.

What changed

File Change
jira_reader.py Added options={"rest_api_version": "3"} to both JIRA constructors; added adf_to_text() converter; applied converter to all 3 locations reading description/comment body
SKILL.md Updated intro to mention v3/ADF; replaced 7 ${CLAUDE_SKILL_DIR} refs with scripts/ relative paths
plugin.json Version bump 0.0.50 → 0.0.51

ADF converter handles

  • Leaf nodes: text, hardBreak, mention, emoji
  • Block nodes: paragraph, heading, blockquote, rule
  • Lists: bulletList, orderedList, listItem
  • Complex: codeBlock, table
  • Generic fallback for unknown containers (panel, expand, etc.)
  • Backward-compatible: plain strings pass through unchanged

Test plan

  • Verify --issue returns readable plain-text description (not raw ADF JSON)
  • Verify --include-comments returns readable comment bodies
  • Verify --graph description field is converted
  • Verify --jql summary mode still works (no description field in summaries)
  • Confirm ruff lint and format pass
    Closes jira-reader skill uses Atlassian REST API v2, needs migration to v3 #111

Made by Cursor

Summary by CodeRabbit

  • New Features

    • Jira reader now targets Atlassian REST API v3 for improved compatibility.
    • Rich-text fields (descriptions and comments) are converted from ADF to plain text with preserved formatting for consistent, readable output.
  • Documentation

    • Jira reader docs updated to reflect API v3 usage and ADF-to-text conversion behavior.
  • Chores

    • Plugin manifest version bumped.
    • Dependency metadata updated for MR workflow tooling.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Jira-reader is migrated to Atlassian REST API v3 by constructing the JIRA client with options={"rest_api_version":"3"} and adding adf_to_text() to convert ADF rich text to plain text for descriptions and comments. Plugin manifest version bumped 0.0.52 → 0.0.53 and deps attribution updated for the MR workflow.

Changes

Cohort / File(s) Summary
Plugin Manifest
plugins/docs-tools/.claude-plugin/plugin.json
Manifest version updated from 0.0.520.0.53.
Jira Reader — Code
plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
JIRA client now constructed with options={"rest_api_version":"3"}; added module-level adf_to_text(node) to convert Atlassian Document Format (ADF) JSON to plain text; issue description and each comment body are processed through adf_to_text.
Jira Reader — Docs
plugins/docs-tools/skills/jira-reader/SKILL.md
Documentation updated to state usage of Atlassian REST API v3 and automatic conversion of ADF rich text to plain text.
Dependency Inventory
scripts/deps.json
Attributed Git hosting interactions to plugins/docs-tools/skills/docs-workflow-create-mr/scripts/create_mr.py (PyGithub, python-gitlab); removed prior shell-script (create_mr.sh) entries from related tool found_in lists.

Sequence Diagram(s)

sequenceDiagram
    participant User as User
    participant Skill as Jira-Reader Script
    participant ClientLib as jira.Client
    participant Atlassian as Jira API

    User->>Skill: request issue/read
    Skill->>ClientLib: JIRA(..., options={"rest_api_version":"3"}) & fetch issue
    ClientLib->>Atlassian: HTTP /rest/api/3/... request
    Atlassian-->>ClientLib: ADF-rich JSON response
    ClientLib-->>Skill: issue data (ADF fields)
    Skill->>Skill: adf_to_text(ADF) -> plain text
    Skill-->>User: rendered issue data (plain text)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Skill And Script Conventions ❌ Error SKILL.md retains ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py in all 7 examples instead of using relative path pattern scripts/jira_reader.py as required by conventions. Replace all 7 occurrences of python3 ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py with python3 scripts/jira_reader.py in SKILL.md lines 50, 55, 60, 65, 70, 75, and 80.
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs-tools: migrate jira-reader from REST API v2 to v3' clearly and directly summarizes the main change in the pull request.
Linked Issues check ✅ Passed All primary coding objectives from issue #111 are met: REST API v3 migration via options parameter, ADF-to-text conversion for description and comments, and validation of existing functionality.
Out of Scope Changes check ✅ Passed All changes are directly related to the REST API v3 migration and ADF handling. The SKILL.md updates and plugin version bump are reasonable supporting changes for the migration.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
No Real People Names In Style References ✅ Passed No references to real people's names used as style references, example prompts, or documentation instructions in modified files.
Git Safety Rules ✅ Passed No git push operations, hardcoded remote names, or unsafe git operations found in modified files.
No Untrusted Mcp Servers ✅ Passed PR does not introduce MCP server installations. Changes involve jira-reader skill migration and Python dependencies only.
Plugin Registry Consistency ✅ Passed The marketplace.json file correctly maintains the docs-tools plugin entry without requiring version updates, as versions are intentionally excluded from marketplace.json and kept only in individual plugin.json files.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py`:
- Around line 143-154: The REST API version is being set to v3 unconditionally
which breaks self-hosted Jira; move the options = {"rest_api_version": "3"} into
the Atlassian Cloud branch (the block that checks "atlassian.net" in server) and
pass that options when constructing JIRA with basic_auth, while for the else
branch (self-hosted/Jira Server) either omit options or set options =
{"rest_api_version": "2"} before calling JIRA(..., token_auth=token, ...);
update the use of the JIRA constructor calls (the JIRA(...) invocation in both
branches) accordingly so cloud uses v3 and server uses v2/default.
- Around line 63-64: The text-node branch in adf_to_text (the if node_type ==
"text" case) currently returns only node.get("text", "") and drops any link
marks; update it to detect marks on the node (node.get("marks", [])), find marks
where mark.get("type") == "link", extract mark["attrs"]["href"], and preserve
the URL when returning the text (for example append or embed the href alongside
node["text"] so labeled links keep their destination). Ensure this change is
made inside the adf_to_text function's node_type == "text" handling so
descriptions and comments retain ADF link hrefs.

In `@plugins/docs-tools/skills/jira-reader/SKILL.md`:
- Around line 48-80: Update the example invocations in SKILL.md to use the
CLAUDE_SKILL_DIR substitution for in-skill script calls: replace occurrences of
"python3 scripts/jira_reader.py ..." with "python3
${CLAUDE_SKILL_DIR}/scripts/jira_reader.py ..." for all examples referencing the
jira_reader.py script (including --issue, --include-comments, --jql,
--fetch-details, --graph, and custom limits). Additionally, if you want
Cursor-friendly examples, add separate repo-root-relative variants (e.g.,
"python3 plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py ...")
rather than replacing the CLAUDE_SKILL_DIR form, and ensure both forms are
clearly labeled.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: bfae16da-1d82-4064-9b9a-534d397fe0c0

📥 Commits

Reviewing files that changed from the base of the PR and between a67154d and 88461b9.

📒 Files selected for processing (3)
  • plugins/docs-tools/.claude-plugin/plugin.json
  • plugins/docs-tools/skills/jira-reader/SKILL.md
  • plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py

Comment thread plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py Outdated
Comment thread plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py Outdated
Comment thread plugins/docs-tools/skills/jira-reader/SKILL.md Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py (2)

143-154: ⚠️ Potential issue | 🟠 Major

Apply REST API v3 to Cloud only; keep self-hosted on default/v2.

Line 143–154 sets rest_api_version=3 for both branches, which can break Jira Server/Data Center connections.

Using official Atlassian and jira-python docs: does Jira Server/Data Center support `/rest/api/3`, or should self-hosted clients use v2/default while Cloud uses v3?
Suggested fix
-        options = {"rest_api_version": "3"}
-
         if "atlassian.net" in server:
+            options = {"rest_api_version": "3"}
             email = os.environ.get("JIRA_EMAIL")
             if not email:
                 raise ValueError(
                     "JIRA_EMAIL environment variable not set. "
                     "Required for Atlassian Cloud. Add it to ~/.env"
                 )
             self.jira = JIRA(server=server, basic_auth=(email, token), options=options)
         else:
-            self.jira = JIRA(server=server, token_auth=token, options=options)
+            self.jira = JIRA(server=server, token_auth=token)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py` around lines
143 - 154, The code currently forces options = {"rest_api_version": "3"} for
both cloud and self-hosted; change it so REST API v3 is applied only for
Atlassian Cloud: when "atlassian.net" in server set options =
{"rest_api_version": "3"} and use it in the JIRA(...) call for the cloud branch
(where basic_auth is used), but for the else/self-hosted branch either omit
rest_api_version or keep options as None/empty (so the default/v2 is used)
before calling JIRA(server=server, token_auth=token, options=options); update
the code around the options variable and the two self.jira assignments (the
JIRA(...) calls) accordingly.

63-64: ⚠️ Potential issue | 🟠 Major

Preserve hyperlink URLs from ADF link marks in text nodes.

Line 63–64 returns only node["text"], so labeled links lose their destination URL in descriptions/comments.

According to Atlassian Document Format documentation, are hyperlinks represented as `link` marks on `text` nodes with URL in `marks[].attrs.href`?
Proposed fix
     if node_type == "text":
-        return node.get("text", "")
+        text = node.get("text", "")
+        for mark in node.get("marks", []):
+            if mark.get("type") == "link":
+                href = mark.get("attrs", {}).get("href", "")
+                if href and href != text:
+                    return f"{text} ({href})"
+        return text
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py` around lines 63
- 64, The text-node handler currently returns only node.get("text", "") which
discards any ADF link marks; update the branch that checks node_type == "text"
to inspect node.get("marks", []) for a mark with "type" == "link" and an href in
mark.get("attrs", {}).get("href"), and preserve the URL (for example by
returning a representation that includes both the label and href or by
formatting as a markdown/explicit link) so labeled links keep their destination;
adjust the logic in the function that processes text nodes (the node_type ==
"text" branch) to extract marks and include mark.attrs.href when present.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py`:
- Around line 13-16: Update the usage examples that currently reference the
environment variable ${CLAUDE_SKILL_DIR} (the lines showing "python3
${CLAUDE_SKILL_DIR}/scripts/jira_reader.py ...") to use a skill-relative path
instead, e.g., "python3 scripts/jira_reader.py ..." for all examples (including
the variants with --issue, --include-comments, --jql, and --graph) so same-skill
script references follow the guideline.

---

Duplicate comments:
In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py`:
- Around line 143-154: The code currently forces options = {"rest_api_version":
"3"} for both cloud and self-hosted; change it so REST API v3 is applied only
for Atlassian Cloud: when "atlassian.net" in server set options =
{"rest_api_version": "3"} and use it in the JIRA(...) call for the cloud branch
(where basic_auth is used), but for the else/self-hosted branch either omit
rest_api_version or keep options as None/empty (so the default/v2 is used)
before calling JIRA(server=server, token_auth=token, options=options); update
the code around the options variable and the two self.jira assignments (the
JIRA(...) calls) accordingly.
- Around line 63-64: The text-node handler currently returns only
node.get("text", "") which discards any ADF link marks; update the branch that
checks node_type == "text" to inspect node.get("marks", []) for a mark with
"type" == "link" and an href in mark.get("attrs", {}).get("href"), and preserve
the URL (for example by returning a representation that includes both the label
and href or by formatting as a markdown/explicit link) so labeled links keep
their destination; adjust the logic in the function that processes text nodes
(the node_type == "text" branch) to extract marks and include mark.attrs.href
when present.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: da6dc163-d864-4c5a-a06f-1e76d19cf82a

📥 Commits

Reviewing files that changed from the base of the PR and between 88461b9 and c93c65b.

📒 Files selected for processing (2)
  • plugins/docs-tools/skills/jira-reader/SKILL.md
  • plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
✅ Files skipped from review due to trivial changes (1)
  • plugins/docs-tools/skills/jira-reader/SKILL.md

Comment thread plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
@bburt-rh bburt-rh force-pushed the jira-reader-changes branch from c93c65b to f6ef2fe Compare April 24, 2026 20:00
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py`:
- Around line 119-121: The adf_to_text fallback currently only recurses into
content and therefore drops ADF leaf nodes like inlineCard; update adf_to_text
to detect when node.get("type") == "inlineCard" and return the smart-link URL
from node.get("attrs", {}).get("url", "") (or empty string if missing) before
falling back to iterating children, so inlineCard URLs are preserved in the
serialized output.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 478c551d-6a65-47fe-9013-ddfaa77f5c7e

📥 Commits

Reviewing files that changed from the base of the PR and between c93c65b and f6ef2fe.

📒 Files selected for processing (2)
  • plugins/docs-tools/skills/jira-reader/SKILL.md
  • plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
✅ Files skipped from review due to trivial changes (1)
  • plugins/docs-tools/skills/jira-reader/SKILL.md

Comment thread plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
The jira Python library defaults to Atlassian REST API v2. Atlassian's
current version is v3 and v2 may be deprecated. This migrates the
jira-reader skill by passing options={"rest_api_version": "3"} to both
JIRA() constructor paths and adding an adf_to_text() converter for the
description and comment body fields, which v3 returns as Atlassian
Document Format (ADF) JSON instead of wiki markup.

Also fixes SKILL.md to use relative script paths per repo conventions.

Closes redhat-documentation#111
@bburt-rh bburt-rh force-pushed the jira-reader-changes branch from f6ef2fe to 6a34e4e Compare April 27, 2026 15:49
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py (2)

119-121: ⚠️ Potential issue | 🟠 Major

Preserve inlineCard URLs before generic fallback traversal.

Line 119-121 fallback currently drops ADF leaf smart links (inlineCard) because they have no content; this can remove important URLs from descriptions/comments.

Suggested fix
+    if node_type == "inlineCard":
+        return node.get("attrs", {}).get("url", "")
+
     # doc, panel, expand, mediaSingle, etc.: recurse into children
     parts = [adf_to_text(child) for child in content]
     return "".join(parts)
According to Atlassian ADF docs for `inlineCard`, is the destination URL stored in `attrs.url`, and should text serializers preserve it for plain-text output?
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py` around lines
119 - 121, The fallback traversal in adf_to_text currently iterates children and
thus drops ADF leaf smart links like inlineCard because they have no content;
update adf_to_text to check for node type "inlineCard" (and similar card types
if present) before the generic child traversal and return node.get("attrs",
{}).get("url", "") so the destination URL is preserved in the plain-text output
instead of being lost.

13-16: ⚠️ Potential issue | 🟡 Minor

Use skill-relative paths in usage examples.

Line 13-16 still reference ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py instead of a same-skill relative path.

Suggested fix
-    python3 ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py --issue INFERENG-5233
-    python3 ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py --issue INFERENG-5233 --include-comments
-    python3 ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py --jql "project=INFERENG AND fixVersion='3.4'"
-    python3 ${CLAUDE_SKILL_DIR}/scripts/jira_reader.py --graph INFERENG-5233
+    python3 scripts/jira_reader.py --issue INFERENG-5233
+    python3 scripts/jira_reader.py --issue INFERENG-5233 --include-comments
+    python3 scripts/jira_reader.py --jql "project=INFERENG AND fixVersion='3.4'"
+    python3 scripts/jira_reader.py --graph INFERENG-5233

As per coding guidelines, "For same skill script references: use paths relative to the skill directory (e.g., python3 scripts/foo.py)".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py` around lines 13
- 16, The usage examples in jira_reader.py use the environment variable
${CLAUDE_SKILL_DIR} instead of skill-relative paths; update all example
invocations (the four lines showing the python3 commands) to use relative paths
under the same skill (e.g., "python3 scripts/jira_reader.py ...") so they follow
the guideline for same-skill script references; modify the examples in the
top-of-file usage block in
plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py to replace
"${CLAUDE_SKILL_DIR}/scripts/jira_reader.py" with the skill-relative
"scripts/jira_reader.py" variants for each shown flag (--issue,
--include-comments, --jql, --graph).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py`:
- Around line 119-121: The fallback traversal in adf_to_text currently iterates
children and thus drops ADF leaf smart links like inlineCard because they have
no content; update adf_to_text to check for node type "inlineCard" (and similar
card types if present) before the generic child traversal and return
node.get("attrs", {}).get("url", "") so the destination URL is preserved in the
plain-text output instead of being lost.
- Around line 13-16: The usage examples in jira_reader.py use the environment
variable ${CLAUDE_SKILL_DIR} instead of skill-relative paths; update all example
invocations (the four lines showing the python3 commands) to use relative paths
under the same skill (e.g., "python3 scripts/jira_reader.py ...") so they follow
the guideline for same-skill script references; modify the examples in the
top-of-file usage block in
plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py to replace
"${CLAUDE_SKILL_DIR}/scripts/jira_reader.py" with the skill-relative
"scripts/jira_reader.py" variants for each shown flag (--issue,
--include-comments, --jql, --graph).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 02247291-1b9f-4aaa-a6a3-6a05d78f1002

📥 Commits

Reviewing files that changed from the base of the PR and between f6ef2fe and 6a34e4e.

📒 Files selected for processing (4)
  • plugins/docs-tools/.claude-plugin/plugin.json
  • plugins/docs-tools/skills/jira-reader/SKILL.md
  • plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
  • scripts/deps.json
✅ Files skipped from review due to trivial changes (2)
  • plugins/docs-tools/.claude-plugin/plugin.json
  • plugins/docs-tools/skills/jira-reader/SKILL.md

Add inlineCard handler to adf_to_text so smart-link URLs are preserved
in plain-text output. Regenerate deps.json after rebase picked up
create_mr.sh -> create_mr.py migration.
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py`:
- Around line 119-120: The inlineCard branch only returns attrs.url but should
fall back to attrs.data when url is missing; update the inlineCard handling in
jira_reader.py to read attrs = node.get("attrs", {}) and return attrs.get("url")
or, if absent, inspect attrs.get("data") (handle both dict and JSON-string
forms) and extract the link field (e.g., data.get("url") or data.get("id") as
appropriate), so inlineCard nodes using JSON-LD in attrs.data are correctly
converted.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ed4069f6-6bb7-4b17-b8e6-99bcbe5c560b

📥 Commits

Reviewing files that changed from the base of the PR and between 6a34e4e and 0bac99e.

📒 Files selected for processing (1)
  • plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py

Comment thread plugins/docs-tools/skills/jira-reader/scripts/jira_reader.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

jira-reader skill uses Atlassian REST API v2, needs migration to v3

1 participant