From 67a517c67781f51761bb2fe56a2719c209a92959 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:16:30 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 12 ++++++++++ README.md | 3 +++ commands/customer-cases.md | 33 ++++++++++++++++++++++++++++ plugin.lock.json | 45 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/customer-cases.md create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..a647a82 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "customer-cases", + "description": "Summarize the RHCOS OCPBUGS with an open Customer Case", + "version": "0.0.0-2025.11.28", + "author": { + "name": "coreos", + "email": "zhongweili@tubi.tv" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b93cd89 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# customer-cases + +Summarize the RHCOS OCPBUGS with an open Customer Case diff --git a/commands/customer-cases.md b/commands/customer-cases.md new file mode 100644 index 0000000..b2ad85c --- /dev/null +++ b/commands/customer-cases.md @@ -0,0 +1,33 @@ +# CoreOS Customer Cases Bug Report Generator + +Generate a comprehensive weekly report of CoreOS bugs that have Customer Cases linked to them using the jira CLI tool. + +## JQL Query +Use this JQL query to retrieve all active CoreOS bugs with customer cases: +``` +filter = "CoreOS Bugs" AND "SFDC Cases Counter" > 0 AND issuetype = Bug and Project in (RHEL, COS, OCPBUGS) AND statusCategory != Done +``` + +## Implementation + +### Step 1: Execute JQL Query +```bash +jira issue list -q 'filter = "CoreOS Bugs" AND "SFDC Cases Counter" > 0 AND Project in (RHEL, COS, OCPBUGS) AND statusCategory NOT IN (Done)' --plain --columns key,summary,assignee,created,status,labels +``` + +### Step 2: Analysis Requirements +1. Weekly New Bugs: Identify bugs created within the current week (Monday-Sunday) +2. Unassigned Bugs: Find all bugs with empty assignee fields +3. Age Categorization: Group bugs by age: + - Recent: < 1 month old + - Medium-term: 1-3 months old + - Long-term: 3+ months old +4. Assignment Summary: Count bugs by assignee +5. Statistics: Calculate oldest bug age and total counts + +#### Special Attention Items: +- CVE-related bugs (flag as security concerns) +- Bugs over 100 days old without assignment +- Multiple new bugs in a single week +- Highlight the issue with rhcos-waitingonrhel label + diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..638b492 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:coreos/ai-helpers:plugins/customer-cases", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "76977688e5aeb998c8b8a7e4b056093a5438e1dd", + "treeHash": "b797fea34a92fc0b4251737f14146f8c0f35425007b5efc92ed899f5779df388", + "generatedAt": "2025-11-28T10:15:46.767939Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "customer-cases", + "description": "Summarize the RHCOS OCPBUGS with an open Customer Case", + "version": null + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "aa80ae763ee2312d32525dcb03686447975dc8a087ff6247b0697655f1d8203e" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "e8bcbf427598e1840bb6f4e40b4c014809506882165c7f9d626064a96cb89a2f" + }, + { + "path": "commands/customer-cases.md", + "sha256": "251c453a19fab48a490855f6a9d377b5e92f2791b69f2a2861aa083e7e9759ef" + } + ], + "dirSha256": "b797fea34a92fc0b4251737f14146f8c0f35425007b5efc92ed899f5779df388" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file